diff --git a/.github/ISSUE_TEMPLATE/01_battle_engine_bugs.yaml b/.github/ISSUE_TEMPLATE/01_battle_engine_bugs.yaml index 3dc0735813..710cb1706b 100644 --- a/.github/ISSUE_TEMPLATE/01_battle_engine_bugs.yaml +++ b/.github/ISSUE_TEMPLATE/01_battle_engine_bugs.yaml @@ -5,9 +5,8 @@ body: - type: markdown attributes: value: | - Please fill in all required fields with as many details as possible. + Please fill in all fields with as many details as possible. Once your bug is posted, make sure you and your collaborators are added to `CREDITS.md` by [tagging the bot on GitHub](https://github.com/rh-hideout/pokeemerald-expansion/wiki/CREDITS.md-Frequently-Asked-Questions). EVERY contribution matters, even reporting bugs! - - type: textarea id: description attributes: label: Description diff --git a/.github/ISSUE_TEMPLATE/02_battle_ai_issues.yaml b/.github/ISSUE_TEMPLATE/02_battle_ai_issues.yaml index 1053a2e805..b711d2f047 100644 --- a/.github/ISSUE_TEMPLATE/02_battle_ai_issues.yaml +++ b/.github/ISSUE_TEMPLATE/02_battle_ai_issues.yaml @@ -5,7 +5,7 @@ body: - type: markdown attributes: value: | - Please fill in all required fields with as many details as possible. + Please fill in all fields with as many details as possible. Once your bug is posted, make sure you and your collaborators are added to `CREDITS.md` by [tagging the bot on GitHub](https://github.com/rh-hideout/pokeemerald-expansion/wiki/CREDITS.md-Frequently-Asked-Questions). EVERY contribution matters, even reporting bugs! - type: textarea id: description diff --git a/.github/ISSUE_TEMPLATE/03_feature_requests.yaml b/.github/ISSUE_TEMPLATE/03_feature_requests.yaml index fea47f7354..347e782660 100644 --- a/.github/ISSUE_TEMPLATE/03_feature_requests.yaml +++ b/.github/ISSUE_TEMPLATE/03_feature_requests.yaml @@ -5,7 +5,7 @@ body: - type: markdown attributes: value: | - Please fill in all required fields with as many details as possible. + Please fill in all fields with as many details as possible. Once your feature request is posted, make sure you and your collaborators are added to `CREDITS.md` by [tagging the bot on GitHub](https://github.com/rh-hideout/pokeemerald-expansion/wiki/CREDITS.md-Frequently-Asked-Questions). EVERY contribution matters, even requesting issues! - type: textarea diff --git a/.github/ISSUE_TEMPLATE/04_other_errors.yaml b/.github/ISSUE_TEMPLATE/04_other_errors.yaml index 20c4984eb3..dbc1a5f8d3 100644 --- a/.github/ISSUE_TEMPLATE/04_other_errors.yaml +++ b/.github/ISSUE_TEMPLATE/04_other_errors.yaml @@ -5,7 +5,7 @@ body: - type: markdown attributes: value: | - Please fill in all required fields with as many details as possible. + Please fill in all fields with as many details as possible. Once your bug is posted, make sure you and your collaborators are added to `CREDITS.md` by [tagging the bot on GitHub](https://github.com/rh-hideout/pokeemerald-expansion/wiki/CREDITS.md-Frequently-Asked-Questions). EVERY contribution matters, even creating issues! - type: textarea id: description diff --git a/.gitignore b/.gitignore index 301fc8ca29..6d9453242a 100644 --- a/.gitignore +++ b/.gitignore @@ -45,3 +45,4 @@ tools/trainerproc/trainerproc *.smol *.fastSmol *.smolTM +__pycache__ diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000000..b89016fddd --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,142 @@ +# Contributing to pokeemerald-expansion + +First off, thanks for helping improve `pokeemerald-expansion`! ❤️ + +All contributions are encouraged and valued. Please make sure to read the relevant section before making your contribution! It will make it a lot easier for you and the maintainers. We're excited to see your contributions. 🎉 + +## Bug Reports + +We use [GitHub](https://github.com/rh-hideout/pokeemerald-expansion/issues?q=sort%3Aupdated-desc+is%3Aissue+is%3Aopen+label%3Abug) issues to track bugs. + +### What should I do before making a bug report? + +- Does your bug occur on the latest unmodified (clean) version of the [`upcoming`](https://github.com/rh-hideout/pokeemerald-expansion/tree/upcoming) or [`master`](https://github.com/rh-hideout/pokeemerald-expansion/tree/master) branch? If not, please do not submit a report - the issue is most likely one introduced by your game. +- Has somebody else already found this issue? This is best done by searching the [bug tracker](https://github.com/rh-hideout/pokeemerald-expansion/issues?q=label%3Abug) to see if anybody else reported it. If there is already an issue, replying to the exsting issue with more information can help solve the problem. + +### How do I submit a bug report? + +If you run into an issue with the project, open an [issue](https://github.com/rh-hideout/pokeemerald-expansion/issues/new). + +The best bug reports have enough information that we won't have to contact you for more information. We welcome all efforts to improve pokeemerald-expansion, but would be very grateful if you completed as much of the checklist as possible in your bug report. This will help other contributiors fix your issue. + +### What happens after I submit a bug report? + +- A maintainer will [label](https://github.com/rh-hideout/pokeemerald-expansion/labels) the bug report. +- A maintainer will try to reproduce the bug with your provided steps. + - If there are no reproduction steps or no obvious way to reproduce the issue, somebody will ask you for those steps. Until the bug can be reproduced, the bug will retain the `bug:unconfirmed` label. Unconfirmed bugs are less likely get fixed. +- If the team is able to reproduce the bug, it will be labeled `bug:confirmed`, and the bug will be left to be [fixed by someone](#Pull-Requests). + - If the issue is particularly game-breaking, a maintainer will add it to a future version's [milestone](), meaning that version will not be released until the problem is solved. + +## Feature Requests + +This section guides you through submitting a feature request for pokeemerald-expansion, **including completely new features and minor improvements to existing functionality**. Following these guidelines will help maintainers and the community to understand your suggestion and find related suggestions. + +- We use [GitHub](https://github.com/rh-hideout/pokeemerald-expansion/issues?q=sort%3Aupdated-desc+is%3Aissue+is%3Aopen+label%3Afeature-request) issues to track feature requests. + +### What should I do before making a feature request? + +- Make sure your request is in [pokeemerald-expansion's scope](docs/team_procedures/scope.md) - if it is not clear if something is in scope, you can start a discussion thread in the [#pr-discussions](https://discord.com/channels/419213663107416084/1102784418369785948) channel of the [the RHH Discord Server](https://discord.gg/6CzjAG6GZk). + +### What should I do before making a feature request? + +- Read the [documentation](https://rh-hideout.github.io/pokeemerald-expansion/) to find out if the functionality is already covered, maybe by an individual configuration. +- Perform a [search](https://github.com/rh-hideout/pokeemerald-expansion/issues) to see if the feature has already been requested. If it has, add a comment to the existing issue instead of opening a new one. + +### How do I submit a feature request? + +To request a feature to be added to the project, open a [feature request](https://github.com/rh-hideout/pokeemerald-expansion/issues/new). + +### What happens after I submit a feature request? + +- A maintainer will [label](https://github.com/rh-hideout/pokeemerald-expansion/labels) the issue. +- If the feature request is out of [scope](docs/team_procedures/scope.md), it will be closed. +- if the request is in scope, any other contributor can volunteer to [fufill it via a pull request](#Pull-Requests). When the request is filled, the request will be closed. + +## Pull Requests + +If you have read all of this and still need help, feel free to start a thread in #pr-discussions of the Discord server or ask questions in #expansion-dev. + +### What should I do before starting a pull request? + +- If you're new to git and GitHub, [Team Aqua's Asset Repo](https://github.com/Pawkkie/Team-Aquas-Asset-Repo/) has a [guide on forking and cloning the repository](https://github.com/Pawkkie/Team-Aquas-Asset-Repo/wiki/The-Basics-of-GitHub). Make sure you have a [local copy](INSTALL.md) of `pokeemerald-expansion`. +- Make sure your contribution is in [scope](docs/team_procedures/scope.md) - if it is not clear if something is in scope, you can start a discussion thread in the [#pr-discussions](https://discord.com/channels/419213663107416084/1102784418369785948) channel of the [the RHH Discord Server!](https://discord.gg/6CzjAG6GZk). +- Choose a branch to contribute your PR to: + - **`master`**: Fixes for bugs that are currently present in the `master` branch. + - **`upcoming`**: All other pull requests. +- Create a new branch from the most recent version of the branch you've chosen. +- If your contribution introduces, removes, or changes a lot of existing code, we reccomend getting a maintainer to agree to review it before you start on the work! We have a table that lists all [current maintainers and their areas of expertise](#maintainers). + +### How do I submit a pull request? + +#### 1. Get a working local copy +If you haven't already, follow [INSTALL.md](INSTALL.md) to get a working local copy of `pokeemerald-expansion`. + +#### 2. Set RHH as a remote +This will designate the main `pokeemerald-expansion` repository as a remote. +```bash +git remote add RHH https://github.com/rh-hideout/pokeemerald-expansion # You can replace RHH with anything you want. This tutorial assumes you used RHH. +``` + +#### 3. Create a new branch +This will create a new branch and switch to it. +```bash +git switch -c newFeature # the name newFeature can be anything you want. This tutorial assumes you used newFeature. +``` + +#### 4. Copy your target branch to your new branch +This will change your new branch to match the latest version of your chosen target branch. +```bash +git reset --hard upcoming # If your PR is going to target master, replace upcoming with master. +``` + +#### 5. Implement your code +All of your work should go on this new, clean branch. If you already started work on a different branch, you can [cherry-pick](https://git-scm.com/docs/git-cherry-pick) you old commits onto this new branch, or just copy and paste the changes from the original files. + +##### Popular Features / Feature Branches + +If you are implementing functionality from a known community feature branch, it is **strongly** recommended that you open a discussion thread _before_ starting. There are some situations where maintainers would ask you to use the existing feature branch as a base, and others where maintainers would want a feature to be written from scratch. + +This changes on a case by case basis. + +#### 6. Push your changes +When you push your first commit, you'll need to push the new branch to the remote repo. +```bash +git push --set-upstream origin newFeature +``` + +#### 7. Open Pull Request +Once your work is complete and pushed to the branch on Github, you can open a [pull request from your branch](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request-from-a-fork), targeting the branch you've chosen from `pokeemerald-expansion`. Please fill out the pull request description as completely as possible. + +### What happens after I submit a pull request? + +A maintainer will then assign themselves as a reviewer of your pull request, and may provide feedback in the form of a PR review. + +Contributors are responsible for responding to and updating their branch by addressing the feedback in the review. Contributors are also responsible for making sure the branch passes the checklist at all times. + +Once a maintainer has begun reviewing your PR, **please** do not force-push new changes - normal pushes are fine. Do not worry about git history - we squash most incoming changes. + +Maintainers will measure the submitted pull request against a [merge checklist](docs/team_procedures/merge_checklist.md). + +Once all items on the merge checklist are true, the branch will be merged in. + + +## Maintainers + +This list was last updated 2025 April 1. + +| Name | Discord | Currently Active | Areas of Expertise | +| --- | --- | --- | --- | +| [Alex](https://github.com/AlexOn1ine) | rainonline | ✅ | Battle Engine, Battle AI +| [Egg](https://github.com/DizzyEggg) | egg9255 | ✅ | Battle Engine, Battle AI +| [ghoulslash](https://github.com/ghoulslash) | ghoulslash | ✅ | Dexnav, Overworld, Battle Engine +| [Jasper](https://github.com/Bassoonian) | bassoonian | ✅ | Berries, Day / Night System, Followers, Feature Branches +| [MGriffin](https://github.com/mrgriffin) | mgriffin | ✅ | Tests, Trainer Control +| [psf](https://github.com/pkmnsnfrn) | pkmnsnfrn | ✅ | Rematches, Difficulty, Trainer Slides, Fake RTC, Fishing Minigames, Imperial / Metric, OW Item Balls, Sky Battles +| [Hedara](https://github.com/hedara90) | hedara | ✅ | Compression, Sprites +| [Pawkkie](https://github.com/Pawkkie) | pawkkie | ✅ | Battle AI +| [SBird](https://github.com/SBird1337) | karathan | ✅ | Dynamic Multichoice, Damage Calculation, Animations, Trainer Control, Tests +| [Agustin](https://github.com/AgustinGDLV) | agustingdlv | Inactive | Gimmicks, Battle Engine, Tests, Items +| [tertu](https://github.com/tertu-m) | tertu | Inactive | Randomizer + +## Attribution +This guide is based on the [contributing.md](https://contributing.md/generator)! diff --git a/Makefile b/Makefile index bd0e56080c..47503834c9 100644 --- a/Makefile +++ b/Makefile @@ -173,6 +173,21 @@ else ROMTESTHYDRA := $(TOOLS_DIR)/mgba-rom-test-hydra/mgba-rom-test-hydra$(EXE) endif +# Learnset helper is a Python script +LEARNSET_HELPERS_DIR := $(TOOLS_DIR)/learnset_helpers +LEARNSET_HELPERS_DATA_DIR := $(LEARNSET_HELPERS_DIR)/porymoves_files +LEARNSET_HELPERS_BUILD_DIR := $(LEARNSET_HELPERS_DIR)/build +ALL_LEARNABLES_JSON := $(LEARNSET_HELPERS_BUILD_DIR)/all_learnables.json + +# wild_encounters.h is generated by a Python script +WILD_ENCOUNTERS_TOOL_DIR := $(TOOLS_DIR)/wild_encounters +AUTO_GEN_TARGETS += $(DATA_SRC_SUBDIR)/wild_encounters.h + +$(DATA_SRC_SUBDIR)/wild_encounters.h: $(DATA_SRC_SUBDIR)/wild_encounters.json $(WILD_ENCOUNTERS_TOOL_DIR)/wild_encounters_to_header.py $(INCLUDE_DIRS)/config/overworld.h $(INCLUDE_DIRS)/config/dexnav.h + python3 $(WILD_ENCOUNTERS_TOOL_DIR)/wild_encounters_to_header.py > $@ + +$(C_BUILDDIR)/wild_encounter.o: c_dep += $(DATA_SRC_SUBDIR)/wild_encounters.h + PERL := perl SHA1 := $(shell { command -v sha1sum || command -v shasum; } 2>/dev/null) -c @@ -347,6 +362,8 @@ generated: $(AUTO_GEN_TARGETS) clean-generated: @rm -f $(AUTO_GEN_TARGETS) @echo "rm -f " + @rm -f $(ALL_LEARNABLES_JSON) + @echo "rm -f " COMPETITIVE_PARTY_SYNTAX := $(shell PATH="$(PATH)"; echo 'COMPETITIVE_PARTY_SYNTAX' | $(CPP) $(CPPFLAGS) -imacros include/gba/defines.h -imacros include/config/general.h | tail -n1) ifeq ($(COMPETITIVE_PARTY_SYNTAX),1) @@ -386,6 +403,7 @@ ifneq ($(NODEP),1) -include $(addprefix $(OBJ_DIR)/,$(C_SRCS:.c=.d)) endif +ifeq ($(TEST),1) $(TEST_BUILDDIR)/%.o: $(TEST_SUBDIR)/%.c @echo "$(CC1) -o $@ $<" @$(CPP) $(CPPFLAGS) $< | $(PREPROC) -i $< charmap.txt | $(CC1) $(CFLAGS) -o - - | cat - <(echo -e ".text\n\t.align\t2, 0") | $(AS) $(ASFLAGS) -o $@ - @@ -396,6 +414,7 @@ $(TEST_BUILDDIR)/%.d: $(TEST_SUBDIR)/%.c ifneq ($(NODEP),1) -include $(addprefix $(OBJ_DIR)/,$(TEST_SRCS:.c=.d)) endif +endif $(ASM_BUILDDIR)/%.o: $(ASM_SUBDIR)/%.s $(AS) $(ASFLAGS) -o $@ $< @@ -436,11 +455,16 @@ $(OBJ_DIR)/sym_common.ld: sym_common.txt $(C_OBJS) $(wildcard common_syms/*.txt) $(OBJ_DIR)/sym_ewram.ld: sym_ewram.txt $(RAMSCRGEN) ewram_data $< ENGLISH > $@ -MOVES_JSON_DIR := $(TOOLS_DIR)/learnset_helpers/porymoves_files -TEACHABLE_DEPS := $(shell find data/ -type f -name '*.inc') $(INCLUDE_DIRS)/constants/tms_hms.h $(C_SUBDIR)/pokemon.c $(wildcard $(MOVES_JSON_DIR)/*.json) +TEACHABLE_DEPS := $(ALL_LEARNABLES_JSON) $(shell find data/ -type f -name '*.inc') $(INCLUDE_DIRS)/constants/tms_hms.h $(INCLUDE_DIRS)/config/pokemon.h $(C_SUBDIR)/pokemon.c + +$(LEARNSET_HELPERS_BUILD_DIR): + @mkdir -p $@ + +$(ALL_LEARNABLES_JSON): $(wildcard $(LEARNSET_HELPERS_DATA_DIR)/*.json) | $(LEARNSET_HELPERS_BUILD_DIR) + python3 $(LEARNSET_HELPERS_DIR)/make_learnables.py $(LEARNSET_HELPERS_DATA_DIR) $@ $(DATA_SRC_SUBDIR)/pokemon/teachable_learnsets.h: $(TEACHABLE_DEPS) - python3 $(TOOLS_DIR)/learnset_helpers/teachable.py + python3 $(LEARNSET_HELPERS_DIR)/make_teachables.py $< # Linker script LD_SCRIPT := ld_script_modern.ld diff --git a/README.md b/README.md index da5af472fe..13fee3a53e 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ # [Credits](CREDITS.md) - [![](https://img.shields.io/github/all-contributors/rh-hideout/pokeemerald-expansion/master)](CREDITS.md) + [![](https://img.shields.io/github/all-contributors/rh-hideout/pokeemerald-expansion/upcoming)](CREDITS.md) If you use **`pokeemerald-expansion`**, please credit **RHH (Rom Hacking Hideout)**. Optionally, include the version number for clarity. diff --git a/asm/macros/battle_script.inc b/asm/macros/battle_script.inc index 6926173dbb..e671bc1649 100644 --- a/asm/macros/battle_script.inc +++ b/asm/macros/battle_script.inc @@ -764,6 +764,10 @@ .4byte \failInstr .endm + .macro removestockpilecounters + callnative BS_RemoveStockpileCounters + .endm + .macro setdrainedhp .byte 0x88 .endm @@ -799,7 +803,8 @@ 2: .endm - .macro unused_0x8d + .macro trynonvolatilestatus + .byte 0x8d .endm .macro initmultihitstring @@ -829,7 +834,7 @@ .4byte \failInstr .endm - .macro damagetohalftargethp + .macro unused_0x94 .byte 0x94 .endm @@ -877,11 +882,11 @@ .byte 0x9e .endm - .macro dmgtolevel + .macro unused_0x9f .byte 0x9f .endm - .macro psywavedamageeffect + .macro unused_0xA0 .byte 0xa0 .endm @@ -1007,7 +1012,7 @@ .4byte \jumpInstr .endm - .macro unused_bb + .macro tryrestorehpberry .byte 0xbb .endm @@ -1140,11 +1145,9 @@ .4byte \failInstr .endm - .macro trywish turnNumber:req, failInstr:req, blockedInstr:req + .macro trywish failInstr:req .byte 0xd4 - .byte \turnNumber .4byte \failInstr - .4byte \blockedInstr .endm .macro settoxicspikes failInstr:req @@ -1337,9 +1340,8 @@ .4byte \jumpInstr .endm - .macro unused ptr:req + .macro setnonvolatilestatus .byte 0xfd - .4byte \ptr .endm .macro tryworryseed failInstr:req @@ -1518,12 +1520,6 @@ .4byte \jumpInstr .endm - .macro jumpifemergencyexited battler:req, jumpInstr:req - callnative BS_JumpIfEmergencyExited - .byte \battler - .4byte \jumpInstr - .endm - .macro jumpifelectricabilityaffected battler:req, ability:req, jumpInstr:req callnative BS_JumpIfElectricAbilityAffected .byte \battler @@ -1655,10 +1651,6 @@ callnative BS_TryTriggerStatusForm .endm - .macro setdynamicmovecategory - callnative BS_SetDynamicMoveCategory - .endm - .macro tryupperhand failInstr:req callnative BS_TryUpperHand .4byte \failInstr @@ -1827,6 +1819,12 @@ .4byte \failInstr .endm + .macro jumpifcangigantamax battler:req, jumpInstr:req + callnative BS_JumpIfCanGigantamax + .byte \battler + .4byte \jumpInstr + .endm + @ various command changed to more readable macros .macro cancelmultiturnmoves battler:req various \battler, VARIOUS_CANCEL_MULTI_TURN_MOVES @@ -1952,14 +1950,6 @@ various \battler, VARIOUS_RESTORE_PP .endm - .macro tryactivatemoxie battler:req - various \battler, VARIOUS_TRY_ACTIVATE_MOXIE - .endm - - .macro tryactivatebeastboost battler:req - various \battler, VARIOUS_TRY_ACTIVATE_BEAST_BOOST - .endm - .macro tryactivatereceiver battler:req various \battler, VARIOUS_TRY_ACTIVATE_RECEIVER .endm @@ -1968,10 +1958,6 @@ various BS_ATTACKER, VARIOUS_TRY_ACTIVATE_SOULHEART .endm - .macro tryactivatefellstinger battler:req - various \battler, VARIOUS_TRY_ACTIVATE_FELL_STINGER - .endm - .macro playmoveanimation battler:req, move:req various \battler, VARIOUS_PLAY_MOVE_ANIMATION .2byte \move @@ -2045,10 +2031,6 @@ .4byte \jumpInstr .endm - .macro setargtobattledamage - various BS_ATTACKER, VARIOUS_SET_ARG_TO_BATTLE_DAMAGE - .endm - .macro tryautotomize battler:req, failInstr:req various \battler, VARIOUS_TRY_AUTOTOMIZE .4byte \failInstr @@ -2187,18 +2169,6 @@ .4byte \jumpInstr .endm - .macro trypoisontype attacker:req, target:req, failInstr:req - various \attacker, VARIOUS_POISON_TYPE_IMMUNITY - .byte \target - .4byte \failInstr - .endm - - .macro tryparalyzetype attacker:req, target:req, failInstr:req - various \attacker, VARIOUS_PARALYZE_TYPE_IMMUNITY - .byte \target - .4byte \failInstr - .endm - .macro trysetfairylock failInstr:req various BS_ATTACKER, VARIOUS_TRY_FAIRY_LOCK .4byte \failInstr @@ -2243,10 +2213,6 @@ .4byte \jumpInstr .endm - .macro tryactivategrimneigh, battler:req - various \battler, VARIOUS_TRY_ACTIVATE_GRIM_NEIGH - .endm - .macro consumeberry battler:req, fromBattler:req various \battler, VARIOUS_CONSUME_BERRY .byte \fromBattler @@ -2307,10 +2273,6 @@ .4byte \jumpInstr .endm - .macro tryactivatebattlebond battler:req - various \battler, VARIOUS_TRY_ACTIVATE_BATTLE_BOND - .endm - .macro jumpifcantreverttoprimal jumpInstr:req various BS_ATTACKER, VARIOUS_JUMP_IF_CANT_REVERT_TO_PRIMAL .4byte \jumpInstr @@ -2360,9 +2322,10 @@ .4byte \jumpInstr .endm - .macro jumpiflastuseditemholdeffect battler:req, holdEffect:req, jumpInstr:req - various \battler, VARIOUS_JUMP_IF_LAST_USED_ITEM_HOLD_EFFECT + .macro jumpiflastuseditemholdeffect holdEffect:req, secondaryId:req, jumpInstr:req + callnative BS_JumpIfLastUsedItemHoldEffect .byte \holdEffect + .2byte \secondaryId .4byte \jumpInstr .endm @@ -2595,3 +2558,8 @@ printstring STRINGID_EMPTYSTRING3 waitmessage 1 .endm + + .macro jumpifnowhiteout jumpInstr:req + callnative BS_JumpIfNoWhiteOut + .4byte \jumpInstr + .endm diff --git a/asm/macros/event.inc b/asm/macros/event.inc index 700cfba982..d3c1442f56 100644 --- a/asm/macros/event.inc +++ b/asm/macros/event.inc @@ -341,6 +341,12 @@ .byte SCR_OP_GETTIME .endm + @ Sets the values of variable VAR_0x8000 to the time of day according to those found in rtc.h. + @ 0 = MORNING, 1 = DAY, 2 = EVENING, 3 = NIGHT + .macro gettimeofday + callnative ScrCmd_gettimeofday, requests_effects=1 + .endm + @ Plays the specified sound. Only one sound may play at a time, with newer ones interrupting older ones. .macro playse song:req .byte SCR_OP_PLAYSE @@ -1793,11 +1799,14 @@ .4byte \text .endm - @ Equivalent to fadescreen but copies gPlttBufferUnfaded to an allocated buffer on the fade out - @ and the reverse on the fade in, in effect saving gPlttBufferUnfaded to restore it. - .macro fadescreenswapbuffers mode:req + @ Equivalent to fadescreen but uses a hardware fade and darken/lighten blend modes, + @ to avoid modifying palettes at all. + @ Useful for fade-out/fade-in without leaving the overworld or entering a new scene. + @ If nowait set, doesn't wait for the fade to complete + .macro fadescreenswapbuffers mode:req, nowait=0 .byte SCR_OP_FADESCREENSWAPBUFFERS .byte \mode + .byte \nowait .endm @ Buffers the specified trainer's class name to the given string var. @@ -2302,7 +2311,11 @@ callnative ScriptSetDoubleBattleFlag, requests_effects=1 .endm - @ When OW_USE_FAKE_RTC and OW_FLAG_PAUSE_TIME is assigned, this macro will stop the flow of time. + @ ============================ @ + @ FAKE RTC MACROS + @ Will only function if OW_USE_FAKE_RTC is true. If it has any additional requirements, it will be listed accordingly. + + @ When OW_USE_FAKE_RTC is true and OW_FLAG_PAUSE_TIME is assigned, this macro will stop the flow of time. .macro pausefakertc callnative Script_PauseFakeRtc, requests_effects=1 .endm @@ -2317,6 +2330,46 @@ callnative Script_ToggleFakeRtc, requests_effects=1 .endm + @ When OW_USE_FAKE_RTC is true, adds a specified amount of time. + .macro addtime days:req, hours:req, minutes:req + callnative ScrCmd_addtime, requests_effects=1 + .4byte \days + .4byte \hours + .4byte \minutes + .endm + + @ When OW_USE_FAKE_RTC is true, adds a specified number of days to the time. + .macro adddays days:req + callnative ScrCmd_adddays, requests_effects=1 + .4byte \days + .endm + + @ When OW_USE_FAKE_RTC is true, adds a specified number of days, hours, and minutes to the time. + .macro addhours hours:req + callnative ScrCmd_addhours, requests_effects=1 + .4byte \hours + .endm + + @ When OW_USE_FAKE_RTC is true, adds a specified number of days, hours, and minutes to the time. + .macro addminutes minutes:req + callnative ScrCmd_addminutes, requests_effects=1 + .4byte \minutes + .endm + + @ Forwards the time to a specified hour and minute. + @ This causes the time to go to the next day if the time has already been past. + .macro fwdtime hours:req, minutes:req + callnative ScrCmd_fwdtime, requests_effects=1 + .4byte \hours + .4byte \minutes + .endm + + @ Forwards the time to a specified day of the week. Uses a 0-index starting from Sunday. + .macro fwdweekday weekday:req + callnative ScrCmd_fwdweekday, requests_effects=1 + .4byte \weekday + .endm + @ ============================ @ @ ITEM DESCRIPTION HEADER MACROS @ Used with OW_SHOW_ITEM_DESCRIPTIONS config @@ -2447,7 +2500,7 @@ callnative Script_SetDifficulty, requests_effects=1 .byte \difficulty .endm - + .macro forcesave callnative Script_ForceSaveGame waitstate @@ -2513,3 +2566,76 @@ compare \a, \b cant_see_if 5 .endm + +@ Follower NPCs + + @ Sets an NPC up to follow the player. + @ Follower flags are defined in include/constants/follower_npc.h + @ If you want to specify a battle partner without specifying a custom script, you can set the script parameter to 0. + .macro setfollowernpc localId:req, flags:req, script=0, battlePartner=0 + .if FNPC_ENABLE_NPC_FOLLOWERS + checkfollowernpc + compare VAR_RESULT, FALSE + goto_if_ne 1f + hidefollower + waitmovement OBJ_EVENT_ID_FOLLOWER + callnative ScriptSetFollowerNPC + .if \script == 0 + .set setScript, FALSE + .else + .set setScript, TRUE + .endif + .byte \localId + .2byte \flags + .byte setScript + .2byte \battlePartner + .4byte \script + updatefollowingmon + 1: + .else + .error "setfollowernpc unavailable with FNPC_ENABLE_NPC_FOLLOWERS defined as FALSE" + .endif + .endm + + @ Remove the follower NPC (assumes there will only ever be one). + .macro destroyfollowernpc + .if FNPC_ENABLE_NPC_FOLLOWERS + callnative ScriptDestroyFollowerNPC + .else + .error "destroyfollowernpc unavailable with FNPC_ENABLE_NPC_FOLLOWERS defined as FALSE" + .endif + .endm + + @ Makes the player and follower NPC face one another. + .macro facefollowernpc + callnative ScriptFaceFollowerNPC + .endm + + @ Makes the follower NPC walk into the player and get hidden. + @ Optionally, you can set the walk speed for the movement: + @ 0 = Slow + @ 1 = Normal (default) + @ 2 = Fast + @ 3 = Faster + .macro hidefollowernpc speed=1 + callnative ScriptHideNPCFollower + .byte \speed + waitmovement OBJ_EVENT_ID_NPC_FOLLOWER + callnative HideNPCFollower + .endm + + @ Checks if you have a follower NPC. Returns the result to VAR_RESULT. + .macro checkfollowernpc + callnative ScriptCheckFollowerNPC + .endm + + @ Updates Pokemon follower. + .macro updatefollowingmon + callnative ScriptUpdateFollowingMon + .endm + + @ Changes the battle partner of the existing follower NPC. + .macro changefollowerbattler battlePartner:req + callnative ScriptChangeFollowerNPCBattlePartner + .2byte \battlePartner + .endm diff --git a/asm/macros/field_effect_script.inc b/asm/macros/field_effect_script.inc index 38f7e31750..68d8502a9d 100644 --- a/asm/macros/field_effect_script.inc +++ b/asm/macros/field_effect_script.inc @@ -1,3 +1,4 @@ +#include "constants/field_weather.h" @ The first .byte argument of each macro below is an index into gFieldEffectScriptFuncs .macro field_eff_loadtiles address:req @@ -5,9 +6,10 @@ .4byte \address .endm - .macro field_eff_loadfadedpal address:req + .macro field_eff_loadfadedpal address:req, color_map_type=COLOR_MAP_DARK_CONTRAST .byte 1 .4byte \address + .byte \color_map_type .endm .macro field_eff_loadpal address:req @@ -24,10 +26,11 @@ .byte 4 .endm - .macro field_eff_loadgfx_callnative tiles_address:req, palette_address:req, function_address:req + .macro field_eff_loadgfx_callnative tiles_address:req, palette_address:req, function_address:req, color_map_type=COLOR_MAP_DARK_CONTRAST .byte 5 .4byte \tiles_address .4byte \palette_address + .byte \color_map_type .4byte \function_address .endm @@ -37,8 +40,9 @@ .4byte \function_address .endm - .macro field_eff_loadfadedpal_callnative palette_address:req, function_address:req + .macro field_eff_loadfadedpal_callnative palette_address:req, function_address:req, color_map_type=COLOR_MAP_DARK_CONTRAST .byte 7 .4byte \palette_address + .byte \color_map_type .4byte \function_address .endm diff --git a/audio_rules.mk b/audio_rules.mk index 63a2e21add..3fce08ed3a 100644 --- a/audio_rules.mk +++ b/audio_rules.mk @@ -6,12 +6,15 @@ MID_ASM_DIR := $(MID_SUBDIR) CRY_BIN_DIR := $(CRY_SUBDIR) SOUND_BIN_DIR := sound +# Needs to recompile for B_NUM_LOW_HEALTH_BEEPS in battle.h +EXPANSION_BATTLE_CONFIG := include/config/battle.h + SPECIAL_OUTDIRS := $(MID_ASM_DIR) $(CRY_BIN_DIR) SPECIAL_OUTDIRS += $(SOUND_BIN_DIR) $(SOUND_BIN_DIR)/direct_sound_samples/phonemes $(SOUND_BIN_DIR)/direct_sound_samples/cries $(shell mkdir -p $(SPECIAL_OUTDIRS) ) # Assembly song compilation -$(SONG_BUILDDIR)/%.o: $(SONG_SUBDIR)/%.s +$(SONG_BUILDDIR)/%.o: $(SONG_SUBDIR)/%.s $(EXPANSION_BATTLE_CONFIG) $(AS) $(ASFLAGS) -I sound -o $@ $< $(MID_BUILDDIR)/%.o: $(MID_ASM_DIR)/%.s $(AS) $(ASFLAGS) -I sound -o $@ $< @@ -34,7 +37,7 @@ MID_CFG_PATH := $(MID_SUBDIR)/midi.cfg # $1: Source path no extension, $2 Options define MID_RULE -$(MID_ASM_DIR)/$1.s: $(MID_SUBDIR)/$1.mid $(MID_CFG_PATH) +$(MID_ASM_DIR)/$1.s: $(MID_SUBDIR)/$1.mid $(MID_CFG_PATH) $(EXPANSION_BATTLE_CONFIG) $(MID) $$< $$@ $2 endef # source path, remaining text (options) diff --git a/charmap.txt b/charmap.txt index a35709d652..34fb683d0c 100644 --- a/charmap.txt +++ b/charmap.txt @@ -1064,6 +1064,7 @@ ROUND_RIGHT_PAREN = F9 14 CIRCLE_DOT = F9 15 TRIANGLE = F9 16 BIG_MULT_X = F9 17 +CIRCLE_HOLLOW = F9 18 EMOJI_UNDERSCORE = F9 D0 EMOJI_PIPE = F9 D1 diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index 3bf21a1bb0..49563e91e2 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -90,7 +90,7 @@ gBattleAnimMove_WakeUpSlap:: createsprite gKarateChopSpriteTemplate, ANIM_ATTACKER, 2, -16, 0, 0, 0, 10, 1, 3, 0 waitforvisualfinish playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 2 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, ANIM_TARGET, 2 createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 4, 0, 6, 2 waitforvisualfinish createsprite gSmellingSaltExclamationSpriteTemplate, ANIM_TARGET, 2, 1, 8, 3 @@ -106,12 +106,12 @@ gBattleAnimMove_HammerArm:: monbg ANIM_TARGET setalpha 12, 8 playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_ATTACKER - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 20, 3, 0, 4 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 20, 3, 0, 4 delay 1 createsprite gSlamHitSpriteTemplate, ANIM_ATTACKER, 2, 0, 0 delay 3 setarg 7, 0 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 10, -8, 1, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 10, -8, ANIM_TARGET, 1 playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 3, 5, 1 createsprite gRockScatterSpriteTemplate, ANIM_TARGET, 2, -12, 32, 3, 4 @@ -132,12 +132,12 @@ gBattleAnimMove_GyroBall:: waitplaysewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER, 8 createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_ATTACKER, 18, 6, 2, 4 waitforvisualfinish - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 20, 0, 0, 4 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 20, 0, 0, 4 delay 3 waitforvisualfinish playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 4, -10, 0, 1, 0 - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 1, -32, 0, 0, 3 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 4, -10, 0, ANIM_TARGET, 0 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, -32, 0, 0, 3 waitforvisualfinish createvisualtask AnimTask_RotateMonSpriteToSide, 2, 8, -256, ANIM_ATTACKER, 0 createvisualtask AnimTask_RotateMonSpriteToSide, 2, 8, -256, ANIM_TARGET, 0 @@ -234,21 +234,21 @@ gBattleAnimMove_Pluck:: loadspritegfx ANIM_TAG_SEED_BROWN loadspritegfx ANIM_TAG_IMPACT playsewithpan SE_M_POISON_POWDER, SOUND_PAN_ATTACKER - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 40, -10, -5, 1, 2 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 40, -10, -5, ANIM_TARGET, 2 createsprite gPluckParticleSpriteTemplate, ANIM_ATTACKER, 40, 3, 0, 20, 2, 1 createsprite gPluckParticleSpriteTemplate, ANIM_ATTACKER, 40, 7, 1, 20, 1, 1 createsprite gPluckParticleSpriteTemplate, ANIM_ATTACKER, 40, -3, 5, 25, 2, -1 createsprite gPluckParticleSpriteTemplate, ANIM_ATTACKER, 40, 4, -4, 30, 3, -1 delay 30 playsewithpan SE_M_POISON_POWDER, SOUND_PAN_ATTACKER - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 40, 5, 10, 1, 2 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 40, 5, 10, ANIM_TARGET, 2 createsprite gPluckParticleSpriteTemplate, ANIM_ATTACKER, 40, 3, -4, 20, 1, 1 createsprite gPluckParticleSpriteTemplate, ANIM_ATTACKER, 40, 7, -6, 20, 0, 1 createsprite gPluckParticleSpriteTemplate, ANIM_ATTACKER, 40, -3, -9, 25, 1, -1 createsprite gPluckParticleSpriteTemplate, ANIM_ATTACKER, 40, 4, -4, 30, 2, -1 delay 30 playsewithpan SE_M_POISON_POWDER, SOUND_PAN_ATTACKER - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 40, 0, 0, 1, 2 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 40, 0, 0, ANIM_TARGET, 2 createsprite gPluckParticleSpriteTemplate, ANIM_ATTACKER, 40, -3, -4, 20, 1, 1 createsprite gPluckParticleSpriteTemplate, ANIM_ATTACKER, 40, 7, -6, 25, 0, 1 createsprite gPluckParticleSpriteTemplate, ANIM_ATTACKER, 40, -4, -10, 25, 1, 1 @@ -363,7 +363,7 @@ gBattleAnimMove_UTurn:: createsprite gUTurnBallSpriteTemplate, ANIM_TARGET, 2, 0, 0, 21 waitforvisualfinish playsewithpan SE_M_TAIL_WHIP, SOUND_PAN_ATTACKER - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 1, 2 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 2 createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 6, 1 createsprite gUTurnBallBackSpriteTemplate, ANIM_ATTACKER, 3, 4, 0, -16, 36 waitforvisualfinish @@ -416,22 +416,22 @@ gBattleAnimMove_Payback:: delay 0 setalpha 12, 8 createvisualtask AnimTask_ShakeMon2, 5, ANIM_TARGET, 4, 0, 30, 1 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 0 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, ANIM_TARGET, 0 playsewithpan SE_M_COMET_PUNCH, +63 delay 5 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 24, 8, 1, 0 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 24, 8, ANIM_TARGET, 0 playsewithpan SE_M_COMET_PUNCH, +63 delay 5 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, -24, -16, 1, 0 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, -24, -16, ANIM_TARGET, 0 playsewithpan SE_M_COMET_PUNCH, +63 delay 5 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 8, 4, 1, 0 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 8, 4, ANIM_TARGET, 0 playsewithpan SE_M_COMET_PUNCH, +63 delay 5 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, -16, 19, 1, 0 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, -16, 19, ANIM_TARGET, 0 playsewithpan SE_M_COMET_PUNCH, +63 delay 5 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 18, -18, 1, 0 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 18, -18, ANIM_TARGET, 0 playsewithpan SE_M_COMET_PUNCH, +63 waitforvisualfinish clearmonbg ANIM_TARGET @@ -450,7 +450,7 @@ gBattleAnimMove_Assurance:: setalpha 12, 8 createsprite gPalmSpriteTemplate, ANIM_TARGET, 3, 0, 0, 8, 1, 0 playsewithpan SE_M_VITAL_THROW2, -64 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, 1, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, ANIM_TARGET, 1 waitforvisualfinish clearmonbg ANIM_TARGET blendoff @@ -490,7 +490,7 @@ gBattleAnimMove_Fling:: createsprite gBlackBallSpriteTemplate, ANIM_TARGET, 2, 20, 0, 0, 0, 35, -25 playsewithpan SE_M_SWAGGER, -64 waitforvisualfinish - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 2 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 2 createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 6, 1 playsewithpan SE_M_VITAL_THROW, +63 clearmonbg ANIM_DEF_PARTNER @@ -721,7 +721,7 @@ gBattleAnimMove_Copycat:: call StockpileAbsorb call StockpileAbsorb waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 2, 0, 12, 0, RGB_WHITE + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_ATTACKER, 0, 12, 0, RGB_WHITE waitforvisualfinish createsprite gThinRingShrinkingSpriteTemplate, ANIM_ATTACKER, 40, 0, 0, 0, 0 playsewithpan SE_M_SUPERSONIC, -64 @@ -855,19 +855,19 @@ gBattleAnimMove_LastResort:: waitplaysewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER, 8 createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_ATTACKER, 18, 6, 2, 4 waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 0, 16, 16, RGB_WHITE - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 20, 0, 0, 4 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 0, 16, 16, RGB_WHITE + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 20, 0, 0, 4 delay 3 waitforvisualfinish playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 132, -10, 0, 1, 0 - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_TARGET, 2, 1, -32, 0, 0, 3 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 132, -10, 0, ANIM_TARGET, 0 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, -32, 0, 0, 3 waitforvisualfinish createvisualtask AnimTask_RotateMonSpriteToSide, 2, 8, -256, ANIM_ATTACKER, 1 createvisualtask AnimTask_RotateMonSpriteToSide, 2, 8, -256, ANIM_TARGET, 1 createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_ATTACKER, 4, 0, 12, 1 createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 4, 0, 12, 1 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 16, 0, RGB_WHITE + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 16, 0, RGB_WHITE waitforvisualfinish createvisualtask AnimTask_RotateMonSpriteToSide, 2, 8, -256, ANIM_ATTACKER, 1 createvisualtask AnimTask_RotateMonSpriteToSide, 2, 8, -256, ANIM_TARGET, 1 @@ -896,10 +896,10 @@ gBattleAnimMove_WorrySeed:: gBattleAnimMove_SuckerPunch:: loadspritegfx ANIM_TAG_POISON_JAB loadspritegfx ANIM_TAG_IMPACT - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 20, 0, 0, 4 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 20, 0, 0, 4 createsprite gSuckerPunchSpriteTemplate, ANIM_TARGET, 2, -18, 5, 40, 8, 160, 0 delay 4 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, -8, 8, 1, 2 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, -8, 8, ANIM_TARGET, 2 createvisualtask AnimTask_RotateMonSpriteToSide, 2, 6, 384, ANIM_TARGET, 2 playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET waitforvisualfinish @@ -1023,27 +1023,27 @@ gBattleAnimMove_MagnetRise:: createvisualtask AnimTask_BlendColorCycle, 2, (F_PAL_BG | F_PAL_BATTLERS), 0, 1, 5, 5, RGB(31, 31, 20) playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER createvisualtask AnimTask_WindUpLunge, 5, ANIM_ATTACKER, -12, 4, 10, 10, 12, 6 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 32, 24, 190, 12, ANIM_ATTACKER, 1, 0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 32, 0x18, 190, 12, ANIM_ATTACKER, 1, 0 delay 0 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 80, 24, 22, 12, ANIM_ATTACKER, 1, 0 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 156, 24, 121, 13, ANIM_ATTACKER, 1, 1 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 80, 0x18, 22, 12, ANIM_ATTACKER, 1, 0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 156, 0x18, 121, 13, ANIM_ATTACKER, 1, 1 delay 0 playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER delay 4 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 100, 24, 60, 10, ANIM_ATTACKER, 1, 0 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 170, 24, 42, 11, ANIM_ATTACKER, 1, 1 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 100, 0x18, 60, 10, ANIM_ATTACKER, 1, 0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 170, 0x18, 42, 11, ANIM_ATTACKER, 1, 1 delay 0 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 238, 24, 165, 10, ANIM_ATTACKER, 1, 1 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 238, 0x18, 165, 10, ANIM_ATTACKER, 1, 1 delay 0 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 32, 24, 190, 12, ANIM_ATTACKER, 1, 0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 32, 0x18, 190, 12, ANIM_ATTACKER, 1, 0 delay 0 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 80, 24, 22, 12, ANIM_ATTACKER, 1, 0 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 156, 24, 121, 13, ANIM_ATTACKER, 1, 1 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 80, 0x18, 22, 12, ANIM_ATTACKER, 1, 0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 156, 0x18, 121, 13, ANIM_ATTACKER, 1, 1 delay 0 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 100, 24, 60, 10, ANIM_ATTACKER, 1, 0 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 170, 24, 42, 11, ANIM_ATTACKER, 1, 1 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 100, 0x18, 60, 10, ANIM_ATTACKER, 1, 0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 170, 0x18, 42, 11, ANIM_ATTACKER, 1, 1 delay 0 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 238, 24, 165, 10, ANIM_ATTACKER, 1, 1 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 238, 0x18, 165, 10, ANIM_ATTACKER, 1, 1 delay 0 createvisualtask AnimTask_BlendColorCycle, 2, (F_PAL_BG | F_PAL_BATTLERS), 0, 1, 0, 0, RGB(31, 31, 20) delay 20 @@ -1084,36 +1084,36 @@ gBattleAnimMove_FlareBlitz:: waitforvisualfinish createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_ATTACKER, 12, 4, 1, 4 waitforvisualfinish - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 24, 0, 0, 6 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 24, 0, 0, 6 waitforvisualfinish call SetImpactBackground createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 4, 0, 22, 1 createvisualtask AnimTask_BlendMonInAndOut, 3, ANIM_TARGET, RGB_RED, 12, 1, 1 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 0 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, ANIM_TARGET, 0 createsprite gFireSpreadSpriteTemplate, ANIM_TARGET, 1, 0, 10, 192, 176, 40 playsewithpan SE_M_COMET_PUNCH, +63 delay 5 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 24, 8, 1, 0 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 24, 8, ANIM_TARGET, 0 createvisualtask AnimTask_BlendMonInAndOut, 3, ANIM_TARGET, RGB_RED, 12, 1, 1 createsprite gFireSpreadSpriteTemplate, ANIM_TARGET, 1, 0, 10, -192, 240, 40 playsewithpan SE_M_COMET_PUNCH, +63 delay 5 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, -24, -16, 1, 0 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, -24, -16, ANIM_TARGET, 0 createvisualtask AnimTask_BlendMonInAndOut, 3, ANIM_TARGET, RGB_RED, 12, 1, 1 createsprite gFireSpreadSpriteTemplate, ANIM_TARGET, 1, 0, 10, 192, -160, 40 playsewithpan SE_M_COMET_PUNCH, +63 delay 5 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 8, 4, 1, 0 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 8, 4, ANIM_TARGET, 0 createvisualtask AnimTask_BlendMonInAndOut, 3, ANIM_TARGET, RGB_RED, 12, 1, 1 createsprite gFireSpreadSpriteTemplate, ANIM_TARGET, 1, 0, 10, -192, -112, 40 playsewithpan SE_M_COMET_PUNCH, +63 delay 5 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, -16, 19, 1, 0 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, -16, 19, ANIM_TARGET, 0 createvisualtask AnimTask_BlendMonInAndOut, 3, ANIM_TARGET, RGB_RED, 12, 1, 1 createsprite gFireSpreadSpriteTemplate, ANIM_TARGET, 1, 0, 10, 160, 48, 40 playsewithpan SE_M_COMET_PUNCH, +63 delay 5 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 18, -18, 1, 0 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 18, -18, ANIM_TARGET, 0 createvisualtask AnimTask_BlendMonInAndOut, 3, ANIM_TARGET, RGB_RED, 12, 1, 1 createsprite gFireSpreadSpriteTemplate, ANIM_TARGET, 1, 0, 10, -224, -32, 40 createsprite gFireSpreadSpriteTemplate, ANIM_TARGET, 1, 0, 10, 112, -128, 40 @@ -1177,7 +1177,7 @@ gBattleAnimMove_RockPolish:: loadspritegfx ANIM_TAG_WHITE_STREAK loadspritegfx ANIM_TAG_SPARKLE_3 setalpha 12, 8 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 1, 3, 0, 12, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_BG, 3, 0, 12, RGB_BLACK waitforvisualfinish loopsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_ATTACKER, 10, 7 createsprite gRockPolishStreakSpriteTemplate, ANIM_ATTACKER, 2, -10, 3 @@ -1235,7 +1235,7 @@ gBattleAnimMove_RockPolish:: delay 1 createsprite gRockPolishSparkleSpriteTemplate, ANIM_ATTACKER, 2, 0, -17 waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 1, 3, 12, 0, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_BG, 3, 12, 0, RGB_BLACK waitforvisualfinish blendoff end @@ -1255,38 +1255,38 @@ gBattleAnimMove_PoisonJab:: delay 2 createsprite gPoisonJabProjectileSpriteTemplate, ANIM_TARGET, 2, 10, 30, 10 delay 2 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, -7, 4, 1, 3 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, -7, 4, ANIM_TARGET, 3 playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET createsprite gPoisonJabProjectileSpriteTemplate, ANIM_TARGET, 2, -17, -27, 10 delay 2 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, -4, -6, 1, 3 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, -4, -6, ANIM_TARGET, 3 playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET createsprite gPoisonJabProjectileSpriteTemplate, ANIM_TARGET, 2, 2, 31, 10 createvisualtask AnimTask_SwayMon, 5, 0, 3, 8192, 6, ANIM_TARGET createvisualtask AnimTask_BlendMonInAndOut, 5, ANIM_TARGET, RGB(16, 0, 16), 12, 0, 1 delay 2 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 6, 4, 1, 3 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 6, 4, ANIM_TARGET, 3 playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET createsprite gPoisonJabProjectileSpriteTemplate, ANIM_TARGET, 2, 15, -27, 10 delay 2 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, -6, 8, 1, 3 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, -6, 8, ANIM_TARGET, 3 playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET createsprite gPoisonJabProjectileSpriteTemplate, ANIM_TARGET, 2, -31, -2, 10 delay 2 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 12, 6, 1, 3 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 12, 6, ANIM_TARGET, 3 playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET createsprite gPoisonJabProjectileSpriteTemplate, ANIM_TARGET, 2, -26, -18, 10 delay 2 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, -6, -8, 1, 3 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, -6, -8, ANIM_TARGET, 3 playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET delay 2 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 8, 1, 3 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 8, ANIM_TARGET, 3 playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET delay 2 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, -8, 0, 1, 3 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, -8, 0, ANIM_TARGET, 3 playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET delay 2 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, -7, -5, 1, 3 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, -7, -5, ANIM_TARGET, 3 playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET waitforvisualfinish call PoisonBubblesEffect @@ -1325,7 +1325,7 @@ gBattleAnimMove_DarkPulse:: gBattleAnimMove_NightSlash:: 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 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_BG, 3, 0, 12, RGB_BLACK waitforvisualfinish createsprite gNightSlashLeftSpriteTemplate, ANIM_TARGET, 2, 1, -8, 0 playsewithpan SE_M_RAZOR_WIND, SOUND_PAN_TARGET @@ -1338,7 +1338,7 @@ gBattleAnimMove_NightSlash:: createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 4, 0, 18, 1 playsewithpan SE_M_RAZOR_WIND, SOUND_PAN_TARGET waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 1, 3, 12, 0, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_BG, 3, 12, 0, RGB_BLACK waitforvisualfinish end @@ -1507,7 +1507,7 @@ gBattleAnimMove_DragonPulse:: loadspritegfx ANIM_TAG_DRAGON_PULSE monbg ANIM_TARGET setalpha 12, 8 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 7, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 0, 7, RGB_BLACK waitforvisualfinish playsewithpan SE_M_PSYBEAM, SOUND_PAN_ATTACKER createsoundtask SoundTask_LoopSEAdjustPanning, SE_M_PSYBEAM2, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 3, 4, 0, 15 @@ -1526,7 +1526,7 @@ gBattleAnimMove_DragonPulse:: call DragonPulseParticle waitforvisualfinish delay 1 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 7, 0, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 7, 0, RGB_BLACK waitforvisualfinish blendoff clearmonbg ANIM_TARGET @@ -1547,7 +1547,7 @@ gBattleAnimMove_DragonRush:: createsprite gDragonRushSpriteTemplate, ANIM_ATTACKER, 3, -16, -16 delay 8 createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 5, 1, RGB_WHITE, 10, 0, 0 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, ANIM_TARGET, 1 createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 5, 1 waitforvisualfinish playsewithpan 131, SOUND_PAN_TARGET @@ -1567,7 +1567,7 @@ gBattleAnimMove_DragonRush:: gBattleAnimMove_PowerGem:: @ Copy of Hidden Power with background blackened loadspritegfx ANIM_TAG_POWER_GEM - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 5, 1, 1, 0, 7, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 5, F_PAL_BG, 1, 0, 7, RGB_BLACK waitforvisualfinish playsewithpan SE_M_TAKE_DOWN, SOUND_PAN_ATTACKER createvisualtask AnimTask_ScaleMonAndRestore, 5, -7, -7, 11, ANIM_ATTACKER, 0 @@ -1595,7 +1595,7 @@ gBattleAnimMove_PowerGem:: @ Copy of Hidden Power with background blackened createsprite gPowerGemOrbScatterSpriteTemplate, ANIM_TARGET, 2, 160 createsprite gPowerGemOrbScatterSpriteTemplate, ANIM_TARGET, 2, 192 createsprite gPowerGemOrbScatterSpriteTemplate, ANIM_TARGET, 2, 224 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 5, 1, 1, 7, 0, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 5, F_PAL_BG, 1, 7, 0, RGB_BLACK waitforvisualfinish end @@ -1608,7 +1608,7 @@ gBattleAnimMove_DrainPunch:: setalpha 12, 8 playsewithpan SE_M_VITAL_THROW2, -64 createsprite gFistFootSpriteTemplate, ANIM_TARGET, 3, 0, 0, 8, 1, 0 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, 1, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, ANIM_TARGET, 1 createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 3, 15, 1 delay 20 call MegaDrainAbsorbEffect @@ -1626,7 +1626,7 @@ gBattleAnimMove_VacuumWave:: loadspritegfx ANIM_TAG_THIN_RING monbg ANIM_TARGET setalpha 12, 8 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 8, -8, 1, 2 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 8, -8, ANIM_TARGET, 2 createsprite gFistFootSpriteTemplate, ANIM_ATTACKER, 3, 8, 0, 8, 1, 0 createsprite gUproarRingSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 0, 0x7FFF, 3 createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 6, 1 @@ -1664,7 +1664,7 @@ gBattleAnimMove_EnergyBall:: loadspritegfx ANIM_TAG_ENERGY_BALL monbg ANIM_TARGET setalpha 12, 8 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 8, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 0, 8, RGB_BLACK waitforvisualfinish delay 15 createsoundtask SoundTask_LoopSEAdjustPanning, SE_M_MIST, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 5, 5, 0, 5 @@ -1672,7 +1672,7 @@ gBattleAnimMove_EnergyBall:: waitforvisualfinish playsewithpan SE_M_SAND_ATTACK, SOUND_PAN_TARGET createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 4, 0, 8, 1 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 8, 0, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 8, 0, RGB_BLACK waitforvisualfinish clearmonbg ANIM_TARGET blendoff @@ -1784,12 +1784,12 @@ GigaImpactContinuity: createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 6, 1, ANIM_ATTACKER waitforvisualfinish delay 11 - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 26, 0, 0, 5 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 26, 0, 0, 5 delay 6 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 4, -10, 0, 1, 0 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 4, -10, 0, ANIM_TARGET, 0 playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET delay 1 - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 1, -16, 0, 0, 4 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, -16, 0, 0, 4 waitforvisualfinish createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 4, 0, 12, 1 waitforvisualfinish @@ -1826,43 +1826,43 @@ gBattleAnimMove_BulletPunch:: monbg ANIM_TARGET setalpha 12, 8 createsprite gFistFootSpriteTemplate, ANIM_ATTACKER, 3, -8, 0, 8, 1, 0 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -8, 0, 1, 2 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -8, 0, ANIM_TARGET, 2 playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET delay 2 createsprite gFistFootSpriteTemplate, ANIM_ATTACKER, 3, -16, 8, 8, 1, 0 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -16, 8, 1, 2 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -16, 8, ANIM_TARGET, 2 playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET delay 2 createsprite gFistFootSpriteTemplate, ANIM_ATTACKER, 3, 8, -16, 8, 1, 0 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -16, 8, 1, 2 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -16, 8, ANIM_TARGET, 2 playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET delay 2 createsprite gFistFootSpriteTemplate, ANIM_ATTACKER, 3, 16, 16, 8, 1, 0 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 16, 8, 1, 2 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 16, 8, ANIM_TARGET, 2 playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET delay 2 createsprite gFistFootSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 8, 1, 0 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 2 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 2 playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET delay 2 createsprite gFistFootSpriteTemplate, ANIM_ATTACKER, 3, 24, 0, 8, 1, 0 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 24, 0, 1, 2 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 24, 0, ANIM_TARGET, 2 playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET delay 2 createsprite gFistFootSpriteTemplate, ANIM_ATTACKER, 3, 24, 16, 8, 1, 0 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 24, 16, 1, 2 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 24, 16, ANIM_TARGET, 2 playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET delay 2 createsprite gFistFootSpriteTemplate, ANIM_ATTACKER, 3, -24, 16, 8, 1, 0 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -24, 16, 1, 2 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -24, 16, ANIM_TARGET, 2 playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET delay 2 createsprite gFistFootSpriteTemplate, ANIM_ATTACKER, 3, -24, -8, 8, 1, 0 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -24, -8, 1, 2 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -24, -8, ANIM_TARGET, 2 playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET delay 2 createsprite gFistFootSpriteTemplate, ANIM_ATTACKER, 3, -24, 8, 8, 1, 0 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -24, 8, 1, 2 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -24, 8, ANIM_TARGET, 2 playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET delay 2 waitforvisualfinish @@ -1948,12 +1948,12 @@ gBattleAnimMove_IceShard:: createsprite gIceBeamOuterCrystalSpriteTemplate, ANIM_ATTACKER, 2, 0, 20, 20, -2, 30 createsprite gIceBeamInnerCrystalSpriteTemplate, ANIM_ATTACKER, 2, 0, 8, 20, 10, 30 delay 1 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 4, -31, 0, 7, RGB(0, 20, 31) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_TARGET, -31, 0, 7, RGB(0, 20, 31) createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 25, 1 waitforvisualfinish delay 20 call IceCrystalEffectShort - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 4, 5, 7, 0, RGB(0, 20, 31) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_TARGET, 5, 7, 0, RGB(0, 20, 31) waitforvisualfinish restorebg waitbgfadein @@ -1993,7 +1993,7 @@ gBattleAnimMove_ThunderFang:: loadspritegfx ANIM_TAG_SHARP_TEETH monbg ANIM_TARGET setalpha 12, 8 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 0, 16, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 0, 16, RGB_BLACK waitforvisualfinish createvisualtask AnimTask_InvertScreenColor, 2, 0x1 | 0x2 | 0x4 delay 1 @@ -2011,9 +2011,9 @@ gBattleAnimMove_ThunderFang:: createvisualtask AnimTask_InvertScreenColor, 2, 0x1 | 0x2 | 0x4 delay 1 createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 3, 15, 1 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 2 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, ANIM_TARGET, 2 delay 1 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 16, 0, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 16, 0, RGB_BLACK delay 20 waitforvisualfinish clearmonbg ANIM_TARGET @@ -2027,7 +2027,7 @@ gBattleAnimMove_IceFang:: loadspritegfx ANIM_TAG_ICE_CRYSTALS loadspritegfx ANIM_TAG_SHARP_TEETH loadspritegfx ANIM_TAG_IMPACT - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 7, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 0, 7, RGB_BLACK createvisualtask AnimTask_BlendBattleAnimPal, 10, 4, 2, 0, 9, RGB(12, 26, 31) delay 20 playsewithpan SE_M_STRING_SHOT, SOUND_PAN_TARGET @@ -2044,14 +2044,14 @@ gBattleAnimMove_IceFang:: createsprite gSharpTeethSpriteTemplate, ANIM_ATTACKER, 2, 0, -32, 0, 0, 819, 10 createsprite gSharpTeethSpriteTemplate, ANIM_ATTACKER, 2, 0, 32, 4, 0, -819, 10 waitforvisualfinish - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 2 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 2 createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 4, 7, 1 delay 15 call IceCrystalEffectShort delay 5 createvisualtask AnimTask_BlendBattleAnimPal, 10, 4, 2, 9, 0, RGB(12, 26, 31) waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 0, 7, 0, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 0, 7, 0, RGB_BLACK waitforvisualfinish clearmonbg ANIM_TARGET blendoff @@ -2074,7 +2074,7 @@ gBattleAnimMove_FireFang:: playsewithpan SE_M_BITE, SOUND_PAN_TARGET delay 10 waitforvisualfinish - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 2 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 2 createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 4, 7, 1 call FireSpreadEffect delay 4 @@ -2209,7 +2209,7 @@ gBattleAnimMove_ZenHeadbutt:: loadspritegfx ANIM_TAG_WATER_IMPACT monbg ANIM_ATTACKER setalpha 12, 8 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 0, 4, 0 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 0, 4, RGB_BLACK waitforvisualfinish createsprite gZenHeadbuttSpriteTemplate, ANIM_ATTACKER, 2, 0 delay 18 @@ -2230,7 +2230,7 @@ gBattleAnimMove_ZenHeadbutt:: createsprite gAquaTailHitSpriteTemplate, ANIM_TARGET, 3, 0, 0, 1, 1 playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 4, 4, 0, 0 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 4, 4, 0, RGB_BLACK clearmonbg ANIM_ATTACKER blendoff delay 1 @@ -2320,18 +2320,18 @@ gBattleAnimMove_RockClimb:: createvisualtask AnimTask_Rollout, 2, 1 waitforvisualfinish createvisualtask AnimTask_ShakeTargetBasedOnMovePowerOrDmg, 2, 0, 1, 30, 1, 0 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, -15, 8, 1, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, -15, 8, ANIM_TARGET, 1 playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET delay 1 playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, -5, -12, 1, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, -5, -12, ANIM_TARGET, 1 delay 1 playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, -32, 1, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, -32, ANIM_TARGET, 1 delay 1 playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 5, -52, 1, 1 - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_TARGET, 2, 1, -25, 16, 1, 4 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 5, -52, ANIM_TARGET, 1 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, -25, 16, 1, 4 delay 4 createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 0, 3, 6, 1 delay 30 @@ -2468,17 +2468,17 @@ gBattleAnimMove_Discharge:: delay 0 createvisualtask AnimTask_BlendColorCycle, 2, (F_PAL_BG | F_PAL_ATTACKER), -31, 1, 5, 5, RGB(31, 31, 20) playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 32, 24, 190, 12, 0, 1, 0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 32, 0x18, 190, 12, ANIM_ATTACKER, 1, 0 delay 0 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 80, 24, 22, 12, 0, 1, 0 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 156, 24, 121, 13, 0, 1, 1 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 80, 0x18, 22, 12, ANIM_ATTACKER, 1, 0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 156, 0x18, 121, 13, ANIM_ATTACKER, 1, 1 delay 0 createvisualtask AnimTask_BlendColorCycle, 2, (F_PAL_BG | F_PAL_ATTACKER), -31, 1, 0, 0, RGB(31, 31, 20) delay 10 createvisualtask AnimTask_BlendColorCycle, 2, (F_PAL_BG | F_PAL_ATTACKER), -31, 1, 5, 5, RGB(31, 31, 20) playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 100, 24, 60, 10, 0, 1, 0 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 170, 24, 42, 11, 0, 1, 1 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 100, 0x18, 60, 10, ANIM_ATTACKER, 1, 0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 170, 0x18, 42, 11, ANIM_ATTACKER, 1, 1 loadspritegfx ANIM_TAG_WHITE_CIRCLE_OF_LIGHT loadspritegfx ANIM_TAG_IMPACT waitbgfadein @@ -2594,7 +2594,7 @@ gBattleAnimMove_LeafStorm:: monbg ANIM_DEF_PARTNER splitbgprio_foes ANIM_TARGET setalpha 12, 8 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 12, RGB(13, 31, 12) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 0, 12, RGB(13, 31, 12) waitforvisualfinish splitbgprio ANIM_TARGET setalpha 12, 8 @@ -2676,7 +2676,7 @@ gBattleAnimMove_LeafStorm:: createsprite gBattleAnimSpriteTemplate_LeafStorm, ANIM_ATTACKER, 2, 26, 8, 12, 20, 27, 0, 0 delay 3 waitforvisualfinish - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, 1, 0 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, ANIM_TARGET, 0 createsprite gBattleAnimSpriteTemplate_LeafStorm2, ANIM_TARGET, 2, 1, 1, 0, -36, 10 createsprite gBattleAnimSpriteTemplate_LeafStorm2, ANIM_TARGET, 2, 1, 1, 24, -12, 10 createsprite gBattleAnimSpriteTemplate_LeafStorm2, ANIM_TARGET, 2, 1, 1, 24, 12, 10 @@ -2694,7 +2694,7 @@ gBattleAnimMove_LeafStorm:: waitforvisualfinish blendoff delay 0 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 12, 0, RGB(13, 31, 12) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 12, 0, RGB(13, 31, 12) waitforvisualfinish clearmonbg ANIM_DEF_PARTNER end @@ -2730,7 +2730,7 @@ RockWrecker_1: playsewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER createsprite gRockBlastRockSpriteTemplate, ANIM_ATTACKER, 130, 16, 0, 0, 0, 25, (1 << 8) | 1 waitforvisualfinish - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 131, 0, 0, 1, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 131, 0, 0, ANIM_TARGET, 1 playsewithpan SE_M_ROCK_THROW SOUND_PAN_TARGET createsprite gRockFragmentSpriteTemplate, ANIM_TARGET, 130, 0, 0, 20, 24, 14, 2 createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 5, 1 @@ -2748,7 +2748,7 @@ RockWrecker_2: playsewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER createsprite gRockBlastRockSpriteTemplate, ANIM_ATTACKER, 2, 16, 0, 0, 0, 25, 257 waitforvisualfinish - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 0, 1, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 0, ANIM_TARGET, 1 playsewithpan SE_M_ROCK_THROW SOUND_PAN_TARGET createsprite gRockFragmentSpriteTemplate ANIM_TARGET, 2, 0, 0, 20, 24, 14, 2 createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 5, 1 @@ -2859,16 +2859,16 @@ gBattleAnimMove_MagnetBomb:: loadspritegfx ANIM_TAG_SPARK_2 delay 0 playsewithpan 119, 192 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 32, 24, 190, 12, 0, 1, 0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 32, 0x18, 190, 12, ANIM_ATTACKER, 1, 0 delay 0 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 80, 24, 22, 12, 0, 1, 0 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 156, 24, 121, 13, 0, 1, 1 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 80, 0x18, 22, 12, ANIM_ATTACKER, 1, 0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 156, 0x18, 121, 13, ANIM_ATTACKER, 1, 1 delay 0 playsewithpan 119, 192 - createsprite gSparkElectricitySpriteTemplate ANIM_ATTACKER, 0, 100, 24, 60, 10, 0, 1, 0 - createsprite gSparkElectricitySpriteTemplate ANIM_ATTACKER, 0, 170, 24, 42, 11, 0, 1, 1 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 100, 0x18, 60, 10, ANIM_ATTACKER, 1, 0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 170, 0x18, 42, 11, ANIM_ATTACKER, 1, 1 delay 0 - createsprite gSparkElectricitySpriteTemplate ANIM_ATTACKER, 0, 238, 24, 165, 10, 0, 1, 1 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 238, 0x18, 165, 10, ANIM_ATTACKER, 1, 1 delay 0 loadspritegfx ANIM_TAG_RED_ORB playsewithpan 152, SOUND_PAN_ATTACKER @@ -2960,7 +2960,7 @@ gBattleAnimMove_StoneEdge:: delay 2 createsprite gStoneEdgeSpriteTemplate, ANIM_TARGET, 2, 0, 33, 464, 30, 15, 49, 1 delay 2 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, -32, -16, 1, 3 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, -32, -16, ANIM_TARGET, 3 playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 3, 0, 12, 1 delay 4 @@ -2970,7 +2970,7 @@ gBattleAnimMove_StoneEdge:: createsprite gRandomPosHitSplatSpriteTemplate, ANIM_TARGET, 3, 1, 3 playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET delay 4 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 32, 20, 1, 3 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 32, 20, ANIM_TARGET, 3 playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET waitforvisualfinish clearmonbg ANIM_DEF_PARTNER @@ -3013,10 +3013,10 @@ gBattleAnimMove_StealthRock:: gBattleAnimMove_GrassKnot:: loadspritegfx ANIM_TAG_RAZOR_LEAF loadspritegfx ANIM_TAG_IMPACT - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 20, 0, 0, 4 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 20, 0, 0, 4 createsprite gGrassKnotSpriteTemplate, ANIM_TARGET, 2, -18, 19, 40, 8, 160, 0 delay 4 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, -8, 8, 1, 2 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, -8, 8, ANIM_TARGET, 2 createvisualtask AnimTask_RotateMonSpriteToSide, 2, 6, 384, ANIM_TARGET, 2 playsewithpan SE_M_VITAL_THROW2 SOUND_PAN_TARGET waitforvisualfinish @@ -3343,7 +3343,7 @@ gBattleAnimMove_AttackOrder:: createsprite gAttackOrderParticleSpriteTemplate, ANIM_TARGET, 2, 20, 255, 15, 32, 0 createsprite gAttackOrderParticleSpriteTemplate, ANIM_TARGET, 2, 110, 10, 8, 32, 20 waitforvisualfinish - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, -32, -16, 1, 3 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, -32, -16, ANIM_TARGET, 3 playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 3, 0, 12, 1 createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 3, 0, 12, 1 @@ -3354,7 +3354,7 @@ gBattleAnimMove_AttackOrder:: createsprite gRandomPosHitSplatSpriteTemplate, ANIM_TARGET, 3, 1, 3 playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET delay 4 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 32, 20, 1, 3 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 32, 20, ANIM_TARGET, 3 playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET waitforvisualfinish clearmonbg ANIM_DEF_PARTNER @@ -3463,7 +3463,7 @@ gBattleAnimMove_DoubleHit:: setalpha 12, 8 createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 4, 4 delay 6 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, 1, 2 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, ANIM_TARGET, 2 createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 6, 1 playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET delay 8 @@ -3474,7 +3474,7 @@ gBattleAnimMove_DoubleHit:: @ I don't know, but I'm not gonna argue with it createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 4, 4 delay 6 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, 1, 2 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, ANIM_TARGET, 2 createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 6, 1 playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET delay 8 @@ -3563,7 +3563,7 @@ gBattleAnimMove_LunarDance:: loadspritegfx ANIM_TAG_GREEN_SPARKLE loadspritegfx ANIM_TAG_HOLLOW_ORB setalpha 0, 16 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 16, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 0, 16, RGB_BLACK waitforvisualfinish createsprite gMoonSpriteTemplate, ANIM_ATTACKER, 2, 120, 56 createvisualtask AnimTask_AlphaFadeIn, 3, 0, 16, 16, 0, 1 @@ -3830,7 +3830,7 @@ ShadowForceWaitEnd: ShadowForcePrep: monbg ANIM_ATTACKER playsewithpan SE_M_FAINT_ATTACK, SOUND_PAN_ATTACKER - createsprite gSimplePaletteBlendSpriteTemplate ANIM_ATTACKER, 2, 1, 3, 0, 16, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 0, 16, RGB_BLACK createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, ANIM_TARGET, FALSE createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, ANIM_ATTACKER, FALSE createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, ANIM_ATK_PARTNER, FALSE @@ -3838,7 +3838,7 @@ ShadowForcePrep: createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_ATTACKER, 18, 6, 1, 3 createvisualtask AnimTask_AttackerFadeToInvisible, 2, 1 delay 80 - createsprite gSimplePaletteBlendSpriteTemplate ANIM_ATTACKER, 2, 1, 3, 16, 0, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 16, 0, RGB_BLACK createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, ANIM_TARGET, TRUE createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, ANIM_ATTACKER, TRUE createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, ANIM_ATK_PARTNER, TRUE @@ -4205,7 +4205,7 @@ gBattleAnimMove_StormThrow:: call StormThorwAnim call StormThorwAnim call StormThorwAnim - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 20, 0, 0, 4 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 20, 0, 0, 4 playsewithpan SE_M_SWAGGER, SOUND_PAN_TARGET delay 1 createvisualtask AnimTask_RotateMonSpriteToSide, 2, 10, 3072, ANIM_TARGET, 2 @@ -4217,7 +4217,7 @@ gBattleAnimMove_StormThrow:: waitforvisualfinish end StormThorwAnim: - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 20, 0, 0, 4 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 20, 0, 0, 4 playsewithpan SE_M_SWAGGER, SOUND_PAN_TARGET delay 6 createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 7 @@ -4298,12 +4298,12 @@ gBattleAnimMove_HeavySlam:: createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 6, 1, ANIM_ATTACKER waitforvisualfinish delay 11 - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 26, 0, 0, 5 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 26, 0, 0, 5 delay 6 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 4, -10, 0, 1, 0 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 4, -10, 0, ANIM_TARGET, 0 loopsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET, 10, 2 delay 1 - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 1, -28, 0, 0, 3 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, -28, 0, 0, 3 waitforvisualfinish createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 4, 0, 12, 1 waitforvisualfinish @@ -4433,10 +4433,10 @@ gBattleAnimMove_FlameCharge:: delay 0x9 call FlameChargeSwirl waitforvisualfinish - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x18, 0x0, 0x0, 0x5 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 24, 0, 0, 5 delay 0x3 playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x1, 0x0 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, ANIM_TARGET, 0 createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 6, 0, 8, 1 call FireSpreadEffect playsewithpan SE_M_FIRE_PUNCH, SOUND_PAN_ATTACKER @@ -4472,10 +4472,10 @@ gBattleAnimMove_Coil:: gBattleAnimMove_LowSweep:: loadspritegfx ANIM_TAG_HANDS_AND_FEET loadspritegfx ANIM_TAG_IMPACT - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 20, 0, 0, 4 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 20, 0, 0, 4 createsprite gSlidingKickSpriteTemplate, ANIM_TARGET, 2, -24, 14, 40, 8, 160, 0 delay 4 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, -8, 8, 1, 2 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, -8, 8, ANIM_TARGET, 2 playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET waitforvisualfinish createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 1, 4 @@ -4657,7 +4657,7 @@ gBattleAnimMove_ChipAway:: createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_ATTACKER, 24, 6, 1, 5 delay 0x4 createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 5, 0, 6, 1 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x1, 0x1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 4, 0, 0, ANIM_TARGET, 1 playsewithpan SE_M_VITAL_THROW2 SOUND_PAN_TARGET waitforvisualfinish clearmonbg ANIM_ATK_PARTNER @@ -4818,7 +4818,7 @@ gBattleAnimMove_ShellSmash:: createsprite gShellSmashRightShellSpriteTemplate, ANIM_ATTACKER, 2, 0xffd7, 0x0, 0x2, 0x333, 0x0, 10, 30 createsprite gShellSmashLeftShellSpriteTemplate, ANIM_ATTACKER, 2, 0x20, 0x0, 0x6, 0xfccd, 0x0, 10, 30 delay 10 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1, 0x1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 1 createsprite gFistFootSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x8, 0x1, 0x0 playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 5, 1 @@ -4914,7 +4914,7 @@ SkyDropUnleash: createsprite gBounceBallLandSpriteTemplate, ANIM_TARGET, 3 delay 0x7 playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x1, 0x0 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, ANIM_TARGET, 0 createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 5, 11, 1 waitforvisualfinish clearmonbg ANIM_DEF_PARTNER @@ -4940,13 +4940,13 @@ gBattleAnimMove_CircleThrow:: playsewithpan SE_M_VITAL_THROW, SOUND_PAN_ATTACKER createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_ATTACKER, 12, 4, 1, 2 waitforvisualfinish - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x14, 0x0, 0x0, 0x4 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 20, 0, 0, 4 delay 0x2 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x1, 0x1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, ANIM_TARGET, 1 createsprite gCircleThrowRingTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x100, 0x0 playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET delay 0x1 - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0xffe8, 0x0, 0x0, 0x4 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, -24, 0, 0, 4 createsprite gCircleThrowRingTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x100, 0x0 waitforvisualfinish delay 0x3 @@ -5632,7 +5632,7 @@ gBattleAnimMove_FrostBreath:: playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER createvisualtask AnimTask_ShakeMon, 5, ANIM_ATTACKER, 0, 2, 40, 1 waitforvisualfinish - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_TARGET, 2, 0x0, 0xf, 0x0, 0x0, 0x4 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_TARGET, 2, ANIM_ATTACKER, 15, 0, 0, 4 waitforvisualfinish createsprite gFrostBreathBlueBreathTemplate, ANIM_TARGET, 2, 0x1e, 0xf, 0x0, 0xa, 0xa waitforvisualfinish @@ -5670,13 +5670,13 @@ gBattleAnimMove_DragonTail:: waitforvisualfinish setalpha 12, 8 playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_ATTACKER - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x14, 0x3, 0x0, 0x4 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 20, 3, 0, 4 delay 0x1 createsprite gSlamHitSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0 delay 0x3 playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x1, 0x1 - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0xfff4, 0xa, 0x0, 0x3 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, ANIM_TARGET, 1 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, -12, 10, 0, 3 createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x0, 0x5 call TailWhackDown delay 0x3 @@ -5689,7 +5689,7 @@ gBattleAnimMove_DragonTail:: blendoff end TailWhackDown: - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0xfff6, 0xfff8, 1, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, -10, -8, ANIM_TARGET, 1 playsewithpan SE_M_STRENGTH, SOUND_PAN_TARGET createsprite gRockScatterSpriteTemplate, ANIM_TARGET, 2, -12, 0x1b, 2, 3 createsprite gRockScatterSpriteTemplate, ANIM_TARGET, 2, 8, 28, 3, 4 @@ -5738,7 +5738,7 @@ gBattleAnimMove_Electroweb:: monbg ANIM_DEF_PARTNER delay 0 createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_SPIDER_WEB, 0, 6, 6, RGB(31, 30, 1) - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 5, 1, 2, 0, 9, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 5, F_PAL_BG, 2, 0, 9, RGB_BLACK waitforvisualfinish splitbgprio ANIM_TARGET waitforvisualfinish @@ -5747,7 +5747,7 @@ gBattleAnimMove_Electroweb:: waitforvisualfinish clearmonbg ANIM_DEF_PARTNER delay 1 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 5, 1, 2, 9, 0, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 5, F_PAL_BG, 2, 9, 0, RGB_BLACK call ElectricityEffect_OnTargets gBattleAnimMove_ElectrowebWait:: waitforvisualfinish @@ -5772,9 +5772,9 @@ gBattleAnimMove_WildCharge:: createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 0x6, 0x1, 0x0 waitforvisualfinish delay 0xb - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x1a, 0x0, 0x0, 0x5 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 26, 0, 0, 5 delay 0x6 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 4, 0xfff6, 0x0, 0x1, 0x0 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 4, -10, 0, ANIM_TARGET, 0 createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 3, 16, 1 playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET call ElectricityEffect @@ -5944,11 +5944,11 @@ gBattleAnimMove_HeatCrash:: playsewithpan SE_SUCCESS, SOUND_PAN_TARGET createsprite gHeatCrashEruptionRockTemplate, ANIM_ATTACKER, 3, 0x0, 0xffe0, 0xf delay 0x13 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff8, 0x1, 0x1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, -8, ANIM_TARGET, 1 createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 4, 9, 1 playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET delay 0x5 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0xa, 0xfff8, 0x1, 0x1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 10, -8, ANIM_TARGET, 1 playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 3, 5, 1 createsprite gRockScatterSpriteTemplate, ANIM_TARGET, 2, 0xfff4, 0x20, 0x3, 0x4 @@ -5994,15 +5994,15 @@ gBattleAnimMove_Steamroller:: loadspritegfx ANIM_TAG_IMPACT monbg ANIM_TARGET setalpha 12, 8 - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 26, 0, 0, 5 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 26, 0, 0, 5 delay 6 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 4, -10, 0, 1, 0 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 4, -10, 0, ANIM_TARGET, 0 loopsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET, 6, 3 delay 1 - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 1, -28, 0, 0, 3 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 4, 0, 3, 1, 0 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, -28, 0, 0, 3 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 4, 0, 3, ANIM_TARGET, 0 delay 1 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 4, 10, 6, 1, 0 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 4, 10, 6, ANIM_TARGET, 0 delay 1 waitforvisualfinish createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 4, 0, 12, 1 @@ -6188,13 +6188,13 @@ gBattleAnimMove_GearGrind:: createsprite gGearGrindTemplate, ANIM_ATTACKER, 2, 0xffe0, 0xffe0, 0x0, 0x333, 0x333, 0xa createsprite gGearGrindTemplate, ANIM_ATTACKER, 2, 0x20, 0x20, 0x0, 0xfccd, 0xfccd, 0xa delay 0xa - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0xfff8, 0x0, 0x1, 0x1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -8, 0, ANIM_TARGET, 1 createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 7, 5, 2 waitforvisualfinish createsprite gGearGrindTemplate, ANIM_ATTACKER, 2, 0x20, 0xffe0, 0x0, 0xfccd, 0x333, 0xa createsprite gGearGrindTemplate, ANIM_ATTACKER, 2, 0xffe0, 0x20, 0x0, 0x333, 0xfccd, 0xa delay 0xa - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0x8, 0x0, 0x1, 0x1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 8, 0, ANIM_TARGET, 1 createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 8, 4, 2 waitforvisualfinish stopsound @@ -6460,17 +6460,17 @@ TechnoBlastElectric: end TechnoBlastCharging1: playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x20, 0x18, 0xbe, 0xc, 0x0, 0x1, 0x0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 32, 0x18, 190, 12, ANIM_ATTACKER, 1, 0 delay 0x0 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x50, 0x18, 0x16, 0xc, 0x0, 0x1, 0x0 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x9c, 0x18, 0x79, 0xd, 0x0, 0x1, 0x1 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 80, 0x18, 22, 12, ANIM_ATTACKER, 1, 0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 156, 0x18, 121, 13, ANIM_ATTACKER, 1, 1 return TechnoBlastCharging2: playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x64, 0x18, 0x3c, 0xa, 0x0, 0x1, 0x0 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0xaa, 0x18, 0x2a, 0xb, 0x0, 0x1, 0x1 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 100, 0x18, 60, 10, ANIM_ATTACKER, 1, 0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 170, 0x18, 42, 11, ANIM_ATTACKER, 1, 1 delay 0x0 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0xee, 0x18, 0xa5, 0xa, 0x0, 0x1, 0x1 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 238, 0x18, 165, 10, ANIM_ATTACKER, 1, 1 return TechnoBlastWater: @@ -6813,7 +6813,7 @@ gBattleAnimMove_RelicSong:: createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x1d, 0xfff4, 0x0 createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff4, 0xffe3, 0x1 waitforvisualfinish - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0xffe0, 0xfff0, 0x1, 0x3 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, -32, -16, ANIM_TARGET, 3 playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 3, 0, 12, 1 createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_DEF_PARTNER, 3, 0, 12, 1 @@ -6824,7 +6824,7 @@ gBattleAnimMove_RelicSong:: createsprite gRandomPosHitSplatSpriteTemplate, ANIM_TARGET, 3, 0x1, 0x3 playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET delay 0x5 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0x20, 0x14, 0x1, 0x3 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 32, 20, ANIM_TARGET, 3 playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET waitforvisualfinish clearmonbg ANIM_DEF_PARTNER @@ -6915,9 +6915,9 @@ gBattleAnimMove_BoltStrike:: waitbgfadeout waitforvisualfinish monbg ANIM_TARGET - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x1a, 0x0, 0x0, 0x5 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 26, 0, 0, 5 delay 0x6 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 4, 0xfff6, 0x0, 0x1, 0x0 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 4, -10, 0, ANIM_TARGET, 0 createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_TARGET, 0x2, 0x0, 0x9, 0x07FE createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 32, 1 playsewithpan SE_M_TRI_ATTACK2, SOUND_PAN_TARGET @@ -7157,7 +7157,7 @@ gBattleAnimMove_Snarl:: createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x18, 0xffe8, 0x1 createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe8, 0xffe8, 0x0 waitforvisualfinish - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0xffe0, 0xfff0, 0x1, 0x3 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, -32, -16, ANIM_TARGET, 3 playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 3, 0, 12, 1 createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_DEF_PARTNER, 3, 0, 12, 1 @@ -7168,7 +7168,7 @@ gBattleAnimMove_Snarl:: createsprite gRandomPosHitSplatSpriteTemplate, ANIM_TARGET, 3, 0x1, 0x3 playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET delay 0x4 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0x20, 0x14, 0x1, 0x3 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 32, 20, ANIM_TARGET, 3 playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET waitforvisualfinish call UnsetPsychicBg @@ -7530,7 +7530,7 @@ gBattleAnimMove_StickyWeb:: loadspritegfx ANIM_TAG_WEB_THREAD monbg ANIM_DEF_PARTNER delay 0 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 5, 1, 2, 0, 9, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 5, F_PAL_BG, 2, 0, 9, RGB_BLACK waitforvisualfinish splitbgprio ANIM_TARGET loopsewithpan SE_M_STRING_SHOT, SOUND_PAN_ATTACKER, 9, 6 @@ -7560,7 +7560,7 @@ gBattleAnimMove_StickyWeb:: waitforvisualfinish clearmonbg ANIM_DEF_PARTNER delay 1 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 5, 1, 2, 9, 0, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 5, F_PAL_BG, 2, 9, 0, RGB_BLACK end gBattleAnimMove_FellStinger:: @@ -7685,7 +7685,7 @@ gBattleAnimMove_NobleRoar:: monbg ANIM_ATTACKER splitbgprio ANIM_ATTACKER setalpha 8, 8 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 8, RGB(4, 0, 0) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 0, 8, RGB(4, 0, 0) waitforvisualfinish createvisualtask SoundTask_PlayCryHighPitch, 2, ANIM_ATTACKER, 2 createvisualtask AnimTask_ScaleMonAndRestore, 5, -5, -5, 10, ANIM_ATTACKER, 1 @@ -7693,7 +7693,7 @@ gBattleAnimMove_NobleRoar:: delay 10 createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 1, 0, 9, 1 delay 10 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 8, 0, RGB(4, 0, 0) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 8, 0, RGB(4, 0, 0) waitforvisualfinish clearmonbg ANIM_ATTACKER blendoff @@ -7723,7 +7723,7 @@ gBattleAnimMove_ParabolicCharge:: loadspritegfx ANIM_TAG_ORBS monbg ANIM_ATTACKER setalpha 12, 8 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 6, RGB(18, 16, 3) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 0, 6, RGB(18, 16, 3) waitforvisualfinish createvisualtask AnimTask_ElectricChargingParticles, 2, ANIM_ATTACKER, 3, 20, 20 playsewithpan SE_M_SWIFT, SOUND_PAN_ATTACKER @@ -7751,7 +7751,7 @@ ParabolicChargeHeal: clearmonbg ANIM_ATTACKER waitforvisualfinish call HealingEffect - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 6, 0, RGB(18, 16, 3) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 6, 0, RGB(18, 16, 3) waitforvisualfinish blendoff end @@ -7840,7 +7840,7 @@ gBattleAnimMove_PetalBlizzard:: createsprite gTwisterLeafSpriteTemplate, ANIM_TARGET, 2, 0x14, 0xff, 0xf, 0x20, 0x0 createsprite gTwisterLeafSpriteTemplate, ANIM_TARGET, 2, 0x6e, 0xA, 0x8, 0x20, 0x14 waitforvisualfinish - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0xffe0, 0xfff0, 0x1, 0x3 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, -32, -16, ANIM_TARGET, 3 playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 3, 0, 12, 1 createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_DEF_PARTNER, 3, 0, 12, 1 @@ -7852,7 +7852,7 @@ gBattleAnimMove_PetalBlizzard:: createsprite gRandomPosHitSplatSpriteTemplate, ANIM_TARGET, 3, 0x1, 0x3 playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET delay 0x4 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0x20, 0x14, 0x1, 0x3 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 32, 20, ANIM_TARGET, 3 playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET waitforvisualfinish clearmonbg ANIM_DEF_PARTNER @@ -7864,7 +7864,7 @@ gBattleAnimMove_FreezeDry:: setalpha 12, 8 loadspritegfx ANIM_TAG_ICE_CRYSTALS loadspritegfx ANIM_TAG_IMPACT - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 7, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 0, 7, RGB_BLACK createvisualtask AnimTask_BlendBattleAnimPal, 10, 4, 2, 0, 9, RGB(12, 26, 31) delay 20 playsewithpan SE_M_STRING_SHOT, SOUND_PAN_TARGET @@ -7889,7 +7889,7 @@ gBattleAnimMove_FreezeDry:: waitforvisualfinish createvisualtask AnimTask_BlendBattleAnimPal, 10, 4, 2, 9, 0, RGB(12, 26, 31) waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 0, 7, 0, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 0, 7, 0, RGB_BLACK waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff @@ -7932,16 +7932,16 @@ gBattleAnimMove_PartingShot:: gBattleAnimMove_TopsyTurvy:: loadspritegfx ANIM_TAG_SWEAT_DROP setalpha 12, 8 - createsprite gSimplePaletteBlendSpriteTemplate ANIM_TARGET, 2, 1, 2, 0, 4, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_TARGET, 2, F_PAL_BG, 2, 0, 4, RGB_BLACK waitforvisualfinish createvisualtask AnimTask_RotateVertically, 2, ANIM_TARGET, 768 - createsprite gSimplePaletteBlendSpriteTemplate ANIM_TARGET, 2, 4, 5, 0, 8, RGB(9, 0, 16) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_TARGET, 2, F_PAL_TARGET, 5, 0, 8, RGB(9, 0, 16) playsewithpan SE_ROTATING_GATE, SOUND_PAN_TARGET delay 116 - createsprite gSimplePaletteBlendSpriteTemplate ANIM_TARGET, 2, 4, 5, 8, 0, RGB(9, 0, 16) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_TARGET, 2, F_PAL_TARGET, 5, 8, 0, RGB(9, 0, 16) playsewithpan SE_FALL, SOUND_PAN_TARGET waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate ANIM_TARGET, 2, 1, 2, 4, 0, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_TARGET, 2, F_PAL_BG, 2, 4, 0, RGB_BLACK waitforvisualfinish blendoff end @@ -8145,16 +8145,16 @@ gBattleAnimMove_Electrify:: monbg ANIM_ATTACKER loopsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_TARGET 0xa 0x4 createsprite gElectrifyRingTemplate, ANIM_ATTACKER, 2 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x20, 0x18, 0xbe, 0xc, 0x0, 0x1, 0x0 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x50, 0x18, 0x16, 0xc, 0x0, 0x1, 0x0 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x9c, 0x18, 0x79, 0xd, 0x0, 0x1, 0x1 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 32, 0x18, 190, 12, ANIM_ATTACKER, 1, 0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 80, 0x18, 22, 12, ANIM_ATTACKER, 1, 0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 156, 0x18, 121, 13, ANIM_ATTACKER, 1, 1 delay 0x4 createsprite gElectrifyRingTemplate, ANIM_ATTACKER, 2 delay 0x4 createsprite gElectrifyRingTemplate, ANIM_ATTACKER, 2 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x64, 0x18, 0x3c, 0xa, 0x0, 0x1, 0x0 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0xaa, 0x18, 0x2a, 0xb, 0x0, 0x1, 0x1 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0xee, 0x18, 0xa5, 0xa, 0x0, 0x1, 0x1 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 100, 0x18, 60, 10, ANIM_ATTACKER, 1, 0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 170, 0x18, 42, 11, ANIM_ATTACKER, 1, 1 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 238, 0x18, 165, 10, ANIM_ATTACKER, 1, 1 waitforvisualfinish playsewithpan SE_M_THUNDER_WAVE, SOUND_PAN_ATTACKER createsprite gZapCannonSparkSpriteTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x10, 0x1e, 0x0, 0x28, 0x0 @@ -8288,7 +8288,7 @@ gBattleAnimMove_Moonblast:: loadspritegfx ANIM_TAG_GREEN_SPARKLE loadspritegfx ANIM_TAG_BLUE_STAR setalpha 0, 16 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 16, 0 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 0, 16, RGB_BLACK waitforvisualfinish createsprite gMoonSpriteTemplate, ANIM_ATTACKER, 2, 120, 56 createvisualtask AnimTask_AlphaFadeIn, 3, 0, 16, 16, 0, 1 @@ -8451,7 +8451,7 @@ gBattleAnimMove_DiamondStorm:: createsprite gDiamondStormDiamondsTemplate, ANIM_TARGET, 2, 0x6e, 0xa, 0x8, 0x20, 0x14 waitforvisualfinish @this is the buffet part - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0xffe0, 0xfff0, 0x1, 0x3 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, -32, -16, ANIM_TARGET, 3 playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 3, 0, 12, 1 createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_DEF_PARTNER, 3, 0, 12, 1 @@ -8462,7 +8462,7 @@ gBattleAnimMove_DiamondStorm:: createsprite gRandomPosHitSplatSpriteTemplate, ANIM_TARGET, 3, 0x1, 0x3 playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET delay 0x4 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0x20, 0x14, 0x1, 0x3 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 32, 20, ANIM_TARGET, 3 playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET waitforvisualfinish createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0xF, 0x0, 0x1888 @@ -8932,16 +8932,16 @@ gBattleAnimMove_MagneticFlux:: waitforvisualfinish end MagneticFluxSparks1: - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x20, 0x18, 0xbe, 0xc, 0x0, 0x1, 0x0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 32, 0x18, 190, 12, ANIM_ATTACKER, 1, 0 delay 0x0 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x50, 0x18, 0x16, 0xc, 0x0, 0x1, 0x0 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x9c, 0x18, 0x79, 0xd, 0x0, 0x1, 0x1 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 80, 0x18, 22, 12, ANIM_ATTACKER, 1, 0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 156, 0x18, 121, 13, ANIM_ATTACKER, 1, 1 return MagneticFluxSparks2: - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x64, 0x18, 0x3c, 0xa, 0x0, 0x1, 0x0 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0xaa, 0x18, 0x2a, 0xb, 0x0, 0x1, 0x1 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 100, 0x18, 60, 10, ANIM_ATTACKER, 1, 0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 170, 0x18, 42, 11, ANIM_ATTACKER, 1, 1 delay 0x0 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0xee, 0x18, 0xa5, 0xa, 0x0, 0x1, 0x1 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 238, 0x18, 165, 10, ANIM_ATTACKER, 1, 1 return gBattleAnimMove_HappyHour:: @@ -9019,7 +9019,7 @@ gBattleAnimMove_ElectricTerrain:: gBattleAnimMove_DazzlingGleam:: loadspritegfx ANIM_TAG_SPARKLE_2 loadspritegfx ANIM_TAG_BLUE_STAR - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 0x1, 0x2, 0x0, 0xd, 0x7fff + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 0, 13, RGB_WHITE playsewithpan SE_M_TWISTER, SOUND_PAN_ATTACKER @call 0x081D56B3 -> middle of GrantingStarsEffect createsprite gGrantingStarsSpriteTemplate, ANIM_ATTACKER, 2, 12, -5, 0, 0, 32, 60 @@ -9029,7 +9029,7 @@ gBattleAnimMove_DazzlingGleam:: delay 0x4 playsewithpan SE_M_GIGA_DRAIN, SOUND_PAN_ATTACKER waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 0x1, 0x0, 0xd, 0x0, 0x7fff + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 0, 13, 0, RGB_WHITE waitforvisualfinish clearmonbg 0x0 blendoff @@ -9124,7 +9124,7 @@ gBattleAnimMove_Nuzzle:: playsewithpan SE_M_CHARM, SOUND_PAN_ATTACKER waitforvisualfinish playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_TARGET - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1, 0x2 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 2 call ElectricityEffectNoSound waitforvisualfinish end @@ -9142,7 +9142,7 @@ gBattleAnimMove_HoldBack:: createsprite gHoldBackSwipeTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x1 waitforvisualfinish createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 3, 0, 10, 1 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1, 0x2 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 2 createsprite gHoldBackRingTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x100, 0x0 createsprite gHoldBackStarsTemplate, ANIM_TARGET, 3, 0xfff0, 0xfff8, 0xa0, 0xffe0 createsprite gHoldBackStarsTemplate, ANIM_TARGET, 3, 0xfff0, 0xfff8, 0xff00, 0xffd8 @@ -9199,7 +9199,7 @@ gBattleAnimMove_PowerUpPunch:: playsewithpan SE_M_METRONOME, SOUND_PAN_ATTACKER waitforvisualfinish playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, 1, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, ANIM_TARGET, 1 createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 6, 1 waitforvisualfinish clearmonbg ANIM_TARGET @@ -9671,8 +9671,8 @@ PrecipiceBladesContinue: createsprite gPrecipiceBladesLargeSpikeTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0, -25, 40, 0x0 createsprite gPrecipiceBladesLargeSpikeTemplate, ANIM_TARGET, 2, ANIM_DEF_PARTNER, 0, -25, 40, 0x0 delay 0x6 - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, -20, 0, 0x6, 0x1 - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_TARGET, 2, ANIM_DEF_PARTNER, -20, 0, 0x6, 0x1 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, -20, 0, 6, 1 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_TARGET, 2, ANIM_DEF_PARTNER, -20, 0, 6, 1 delay 0x22 createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0x0, 0x6 createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_TARGET, 2, ANIM_DEF_PARTNER, 0x0, 0x6 @@ -9718,8 +9718,8 @@ gBattleAnimMove_DragonAscent:: createsprite gDragonAscentDrakeTemplate, ANIM_ATTACKER, 2, 5 delay 1 playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 4, -10, 0, 1, 0 - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0x1, -32, 0, 0, 3 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 4, -10, 0, ANIM_TARGET, 0 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, -32, 0, 0, 3 createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 6, 0, 12, 1 createvisualtask AnimTask_BlendBattleAnimPal, 0xa, (F_PAL_ATTACKER | F_PAL_BG | F_PAL_ANIM_1 | F_PAL_ANIM_2), 2, 16, 0, RGB(26, 31, 0) waitforvisualfinish @@ -9859,7 +9859,7 @@ gBattleAnimMove_FirstImpression:: createsprite gFirstImpressionPoundTemplate, ANIM_ATTACKER, 4, 0xfff6, 0x0, 0x1, 0x0 loopsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET 0xA 0x2 delay 0x1 - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0xffe4, 0x0, 0x0, 0x3 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, -28, 0, 0, 3 waitforvisualfinish createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 4, 0, 12, 1 waitforvisualfinish @@ -10200,7 +10200,7 @@ gBattleAnimMove_HighHorsepower:: delay 0x32 playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET call SetImpactBackground - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1, 0x0 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 0 createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 4, 0, 22, 1 createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_TARGET, 0x2, 0x0, 0x0, 0x7fff createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 0x1f, 0x3, 0x1, 0x0, 0x8, 0x0, 0x0 @@ -10412,50 +10412,50 @@ gBattleAnimMove_GearUp:: createvisualtask AnimTask_BlendBattleAnimPal, 0xA, F_PAL_ATTACKER, 0x2, 0x0, 0x9, 0x039B createsprite gGearUpGearsTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe8, 0x8, 0x8c playsewithpan SE_ROULETTE_BALL2, SOUND_PAN_ATTACKER - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x20, 0x18, 0xbe, 0xc, 0x0, 0x1, 0x0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 32, 0x18, 190, 12, ANIM_ATTACKER, 1, 0 delay 0x0 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x50, 0x18, 0x16, 0xc, 0x0, 0x1, 0x0 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x9c, 0x18, 0x79, 0xd, 0x0, 0x1, 0x1 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 80, 0x18, 22, 12, ANIM_ATTACKER, 1, 0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 156, 0x18, 121, 13, ANIM_ATTACKER, 1, 1 delay 0xF playsewithpan SE_ROULETTE_BALL2, SOUND_PAN_ATTACKER createsprite gGearUpGearsTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe8, 0x8, 0x8c - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x64, 0x18, 0x3c, 0xa, 0x0, 0x1, 0x0 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0xaa, 0x18, 0x2a, 0xb, 0x0, 0x1, 0x1 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 100, 0x18, 60, 10, ANIM_ATTACKER, 1, 0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 170, 0x18, 42, 11, ANIM_ATTACKER, 1, 1 delay 0x0 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0xee, 0x18, 0xa5, 0xa, 0x0, 0x1, 0x1 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 238, 0x18, 165, 10, ANIM_ATTACKER, 1, 1 delay 0xF playsewithpan SE_ROULETTE_BALL2, SOUND_PAN_ATTACKER createsprite gGearUpGearsTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe8, 0x8, 0x8c - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x20, 0x18, 0xbe, 0xc, 0x0, 0x1, 0x0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 32, 0x18, 190, 12, ANIM_ATTACKER, 1, 0 delay 0x0 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x50, 0x18, 0x16, 0xc, 0x0, 0x1, 0x0 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x9c, 0x18, 0x79, 0xd, 0x0, 0x1, 0x1 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 80, 0x18, 22, 12, ANIM_ATTACKER, 1, 0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 156, 0x18, 121, 13, ANIM_ATTACKER, 1, 1 delay 0xF playsewithpan SE_ROULETTE_BALL2, SOUND_PAN_ATTACKER call GearUpSparks call GearUpSparks call GearUpSparks playsewithpan SE_ROULETTE_BALL2, SOUND_PAN_ATTACKER - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x20, 0x18, 0xbe, 0xc, 0x0, 0x1, 0x0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 32, 0x18, 190, 12, ANIM_ATTACKER, 1, 0 delay 0x0 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x50, 0x18, 0x16, 0xc, 0x0, 0x1, 0x0 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x9c, 0x18, 0x79, 0xd, 0x0, 0x1, 0x1 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 80, 0x18, 22, 12, ANIM_ATTACKER, 1, 0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 156, 0x18, 121, 13, ANIM_ATTACKER, 1, 1 waitforvisualfinish createvisualtask AnimTask_BlendBattleAnimPal, 0xA, F_PAL_ATTACKER, 0x2, 0x9, 0x0, 0x039B waitforvisualfinish end GearUpSparks: playsewithpan SE_ROULETTE_BALL2, SOUND_PAN_ATTACKER - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x20, 0x18, 0xbe, 0xc, 0x0, 0x1, 0x0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 32, 0x18, 190, 12, ANIM_ATTACKER, 1, 0 delay 0x0 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x50, 0x18, 0x16, 0xc, 0x0, 0x1, 0x0 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x9c, 0x18, 0x79, 0xd, 0x0, 0x1, 0x1 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 80, 0x18, 22, 12, ANIM_ATTACKER, 1, 0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 156, 0x18, 121, 13, ANIM_ATTACKER, 1, 1 delay 0xF playsewithpan SE_ROULETTE_BALL2, SOUND_PAN_ATTACKER - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x64, 0x18, 0x3c, 0xa, 0x0, 0x1, 0x0 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0xaa, 0x18, 0x2a, 0xb, 0x0, 0x1, 0x1 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 100, 0x18, 60, 10, ANIM_ATTACKER, 1, 0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 170, 0x18, 42, 11, ANIM_ATTACKER, 1, 1 delay 0x0 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0xee, 0x18, 0xa5, 0xa, 0x0, 0x1, 0x1 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 238, 0x18, 165, 10, ANIM_ATTACKER, 1, 1 delay 0xF return @@ -10747,7 +10747,7 @@ gBattleAnimMove_FireLash:: createsprite gFireSpiralOutwardSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x38, 0x18 playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER waitforvisualfinish - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x18, 0x0, 0x0, 0x6 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 24, 0, 0, 6 delay 0x4 createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 5, 0, 8, 1 createvisualtask AnimTask_BlendMonInAndOut, 3, ANIM_TARGET, RGB_RED, 12, 1, 1 @@ -11038,102 +11038,102 @@ gBattleAnimMove_CoreEnforcer:: loopsewithpan SE_M_MEGA_KICK, SOUND_PAN_ATTACKER 0xd 0xA createsprite gCoreEnforcerCircleChargeTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x0, 0x2 createsprite gCoreEnforcerBlueRingTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, 0x0, 0x0 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x20, 0x18, 0xbe, 0xc, 0x0, 0x1, 0x0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 32, 0x18, 190, 12, ANIM_ATTACKER, 1, 0 delay 0x0 createsprite gCoreEnforcerBlueSparkTemplate, ANIM_ATTACKER, 0, 0x50, 0x18, 0x16, 0xc, 0x0, 0x1, 0x0 createsprite gCoreEnforcerGreenChargeTemplate, ANIM_ATTACKER, 0, 0x9c, 0x18, 0x79, 0xd, 0x0, 0x1, 0x1 delay 0x5 createsprite gCoreEnforcerGreenChargeTemplate, ANIM_ATTACKER, 0, 0x64, 0x18, 0x3c, 0xa, 0x0, 0x1, 0x0 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0xaa, 0x18, 0x2a, 0xb, 0x0, 0x1, 0x1 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 170, 0x18, 42, 11, ANIM_ATTACKER, 1, 1 delay 0x0 createsprite gCoreEnforcerBlueSparkTemplate, ANIM_ATTACKER, 0, 0xee, 0x18, 0xa5, 0xa, 0x0, 0x1, 0x1 delay 0x5 createsprite gCoreEnforcerBlueSparkTemplate, ANIM_ATTACKER, 0, 0x20, 0x18, 0xbe, 0xc, 0x0, 0x1, 0x0 delay 0x0 createsprite gCoreEnforcerGreenChargeTemplate, ANIM_ATTACKER, 0, 0x50, 0x18, 0x16, 0xc, 0x0, 0x1, 0x0 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x9c, 0x18, 0x79, 0xd, 0x0, 0x1, 0x1 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 156, 0x18, 121, 13, ANIM_ATTACKER, 1, 1 waitforvisualfinish createsprite gCoreEnforcerCircleChargeTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x0, 0x2 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x64, 0x18, 0x3c, 0xa, 0x0, 0x1, 0x0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 100, 0x18, 60, 10, ANIM_ATTACKER, 1, 0 createsprite gCoreEnforcerBlueSparkTemplate, ANIM_ATTACKER, 0, 0xaa, 0x18, 0x2a, 0xb, 0x0, 0x1, 0x1 delay 0x0 createsprite gCoreEnforcerGreenChargeTemplate, ANIM_ATTACKER, 0, 0xee, 0x18, 0xa5, 0xa, 0x0, 0x1, 0x1 delay 0x5 createsprite gCoreEnforcerGreenChargeTemplate, ANIM_ATTACKER, 0, 0x20, 0x18, 0xbe, 0xc, 0x0, 0x1, 0x0 delay 0x0 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x50, 0x18, 0x16, 0xc, 0x0, 0x1, 0x0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 80, 0x18, 22, 12, ANIM_ATTACKER, 1, 0 createsprite gCoreEnforcerBlueSparkTemplate, ANIM_ATTACKER, 0, 0x9c, 0x18, 0x79, 0xd, 0x0, 0x1, 0x1 delay 0x5 createsprite gCoreEnforcerBlueSparkTemplate, ANIM_ATTACKER, 0, 0x64, 0x18, 0x3c, 0xa, 0x0, 0x1, 0x0 createsprite gCoreEnforcerGreenChargeTemplate, ANIM_ATTACKER, 0, 0xaa, 0x18, 0x2a, 0xb, 0x0, 0x1, 0x1 delay 0x0 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0xee, 0x18, 0xa5, 0xa, 0x0, 0x1, 0x1 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 238, 0x18, 165, 10, ANIM_ATTACKER, 1, 1 waitforvisualfinish createsprite gCoreEnforcerCircleChargeTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x0, 0x2 createsprite gCoreEnforcerYellowRingTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, 0x0, 0x0 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x20, 0x18, 0xbe, 0xc, 0x0, 0x1, 0x0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 32, 0x18, 190, 12, ANIM_ATTACKER, 1, 0 delay 0x0 createsprite gCoreEnforcerBlueSparkTemplate, ANIM_ATTACKER, 0, 0x50, 0x18, 0x16, 0xc, 0x0, 0x1, 0x0 createsprite gCoreEnforcerGreenChargeTemplate, ANIM_ATTACKER, 0, 0x9c, 0x18, 0x79, 0xd, 0x0, 0x1, 0x1 delay 0x5 createsprite gCoreEnforcerGreenChargeTemplate, ANIM_ATTACKER, 0, 0x64, 0x18, 0x3c, 0xa, 0x0, 0x1, 0x0 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0xaa, 0x18, 0x2a, 0xb, 0x0, 0x1, 0x1 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 170, 0x18, 42, 11, ANIM_ATTACKER, 1, 1 delay 0x0 createsprite gCoreEnforcerBlueSparkTemplate, ANIM_ATTACKER, 0, 0xee, 0x18, 0xa5, 0xa, 0x0, 0x1, 0x1 delay 0x5 createsprite gCoreEnforcerBlueSparkTemplate, ANIM_ATTACKER, 0, 0x20, 0x18, 0xbe, 0xc, 0x0, 0x1, 0x0 delay 0x0 createsprite gCoreEnforcerGreenChargeTemplate, ANIM_ATTACKER, 0, 0x50, 0x18, 0x16, 0xc, 0x0, 0x1, 0x0 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x9c, 0x18, 0x79, 0xd, 0x0, 0x1, 0x1 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 156, 0x18, 121, 13, ANIM_ATTACKER, 1, 1 waitforvisualfinish createsprite gCoreEnforcerCircleChargeTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x0, 0x2 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x64, 0x18, 0x3c, 0xa, 0x0, 0x1, 0x0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 100, 0x18, 60, 10, ANIM_ATTACKER, 1, 0 createsprite gCoreEnforcerBlueSparkTemplate, ANIM_ATTACKER, 0, 0xaa, 0x18, 0x2a, 0xb, 0x0, 0x1, 0x1 delay 0x0 createsprite gCoreEnforcerGreenChargeTemplate, ANIM_ATTACKER, 0, 0xee, 0x18, 0xa5, 0xa, 0x0, 0x1, 0x1 delay 0x5 createsprite gCoreEnforcerGreenChargeTemplate, ANIM_ATTACKER, 0, 0x20, 0x18, 0xbe, 0xc, 0x0, 0x1, 0x0 delay 0x0 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x50, 0x18, 0x16, 0xc, 0x0, 0x1, 0x0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 80, 0x18, 22, 12, ANIM_ATTACKER, 1, 0 createsprite gCoreEnforcerBlueSparkTemplate, ANIM_ATTACKER, 0, 0x9c, 0x18, 0x79, 0xd, 0x0, 0x1, 0x1 delay 0x5 createsprite gCoreEnforcerBlueSparkTemplate, ANIM_ATTACKER, 0, 0x64, 0x18, 0x3c, 0xa, 0x0, 0x1, 0x0 createsprite gCoreEnforcerGreenChargeTemplate, ANIM_ATTACKER, 0, 0xaa, 0x18, 0x2a, 0xb, 0x0, 0x1, 0x1 delay 0x0 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0xee, 0x18, 0xa5, 0xa, 0x0, 0x1, 0x1 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 238, 0x18, 165, 10, ANIM_ATTACKER, 1, 1 waitforvisualfinish createsprite gCoreEnforcerCircleChargeTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x0, 0x2 createsprite gCoreEnforcerGreenRingTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, 0x0, 0x0 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x20, 0x18, 0xbe, 0xc, 0x0, 0x1, 0x0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 32, 0x18, 190, 12, ANIM_ATTACKER, 1, 0 delay 0x0 createsprite gCoreEnforcerBlueSparkTemplate, ANIM_ATTACKER, 0, 0x50, 0x18, 0x16, 0xc, 0x0, 0x1, 0x0 createsprite gCoreEnforcerGreenChargeTemplate, ANIM_ATTACKER, 0, 0x9c, 0x18, 0x79, 0xd, 0x0, 0x1, 0x1 delay 0x5 createsprite gCoreEnforcerGreenChargeTemplate, ANIM_ATTACKER, 0, 0x64, 0x18, 0x3c, 0xa, 0x0, 0x1, 0x0 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0xaa, 0x18, 0x2a, 0xb, 0x0, 0x1, 0x1 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 170, 0x18, 42, 11, ANIM_ATTACKER, 1, 1 delay 0x0 createsprite gCoreEnforcerBlueSparkTemplate, ANIM_ATTACKER, 0, 0xee, 0x18, 0xa5, 0xa, 0x0, 0x1, 0x1 delay 0x5 createsprite gCoreEnforcerBlueSparkTemplate, ANIM_ATTACKER, 0, 0x20, 0x18, 0xbe, 0xc, 0x0, 0x1, 0x0 delay 0x0 createsprite gCoreEnforcerGreenChargeTemplate, ANIM_ATTACKER, 0, 0x50, 0x18, 0x16, 0xc, 0x0, 0x1, 0x0 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x9c, 0x18, 0x79, 0xd, 0x0, 0x1, 0x1 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 156, 0x18, 121, 13, ANIM_ATTACKER, 1, 1 waitforvisualfinish createsprite gCoreEnforcerCircleChargeTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x0, 0x2 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x64, 0x18, 0x3c, 0xa, 0x0, 0x1, 0x0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 100, 0x18, 60, 10, ANIM_ATTACKER, 1, 0 createsprite gCoreEnforcerBlueSparkTemplate, ANIM_ATTACKER, 0, 0xaa, 0x18, 0x2a, 0xb, 0x0, 0x1, 0x1 delay 0x0 createsprite gCoreEnforcerGreenChargeTemplate, ANIM_ATTACKER, 0, 0xee, 0x18, 0xa5, 0xa, 0x0, 0x1, 0x1 delay 0x5 createsprite gCoreEnforcerGreenChargeTemplate, ANIM_ATTACKER, 0, 0x20, 0x18, 0xbe, 0xc, 0x0, 0x1, 0x0 delay 0x0 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x50, 0x18, 0x16, 0xc, 0x0, 0x1, 0x0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 80, 0x18, 22, 12, ANIM_ATTACKER, 1, 0 createsprite gCoreEnforcerBlueSparkTemplate, ANIM_ATTACKER, 0, 0x9c, 0x18, 0x79, 0xd, 0x0, 0x1, 0x1 delay 0x5 createsprite gCoreEnforcerBlueSparkTemplate, ANIM_ATTACKER, 0, 0x64, 0x18, 0x3c, 0xa, 0x0, 0x1, 0x0 createsprite gCoreEnforcerGreenChargeTemplate, ANIM_ATTACKER, 0, 0xaa, 0x18, 0x2a, 0xb, 0x0, 0x1, 0x1 delay 0x0 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0xee, 0x18, 0xa5, 0xa, 0x0, 0x1, 0x1 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 238, 0x18, 165, 10, ANIM_ATTACKER, 1, 1 delay 0x5 createsprite gCoreEnforcerCircleChargeTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x0, 0x2 waitforvisualfinish @@ -11359,7 +11359,7 @@ gBattleAnimMove_DragonHammer:: createvisualtask AnimTask_StartSlidingBg, 0x5, 0x0, -500, 0x0, 0xffff waitbgfadein setalpha 15, 0 - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x1a, 0x0, 0x0, 0x5 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 26, 0, 0, 5 delay 0x6 playsewithpan SE_M_SWAGGER, SOUND_PAN_TARGET createsprite gBounceBallLandSpriteTemplate, ANIM_TARGET, 3 @@ -11400,7 +11400,7 @@ gBattleAnimMove_BrutalSwing:: createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 0x6, 0x1, 0x0 waitforvisualfinish delay 0xb - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x1a, 0x0, 0x0, 0x5 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 26, 0, 0, 5 delay 0x6 createsprite gBrutalSwingBasicImpactTemplate, ANIM_TARGET, 3, 0xffe0, 0xfff0, 0x1, 0x1 playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET @@ -11457,10 +11457,10 @@ gBattleAnimGeneral_ShellTrapSetUp:: delay 0x4 playsewithpan SE_M_FIRE_PUNCH, SOUND_PAN_TARGET delay 0x15 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1, 0x2 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xA, 0x1, 0x2 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0xA, 0x0, 0x1, 0x2 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0xA, 0xA, 0x1, 0x2 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 2 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 10, ANIM_TARGET, 2 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 10, 0, ANIM_TARGET, 2 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 10, 10, ANIM_TARGET, 2 waitforvisualfinish clearmonbg ANIM_TARGET blendoff @@ -11710,14 +11710,14 @@ PsychicFangsRegular: createsprite gSharpTeethSpriteTemplate, ANIM_ATTACKER, 2, 0xffe0, 0xffe0, 0x1, 0x333, 0x333, 0xa createsprite gSharpTeethSpriteTemplate, ANIM_ATTACKER, 2, 0x20, 0x20, 0x5, 0xfccd, 0xfccd, 0xa delay 0xa - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0xfff8, 0x0, 0x1, 0x1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -8, 0, ANIM_TARGET, 1 createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 7, 5, 2 delay 0x10 playsewithpan SE_M_BITE, SOUND_PAN_TARGET createsprite gSharpTeethSpriteTemplate, ANIM_ATTACKER, 2, 0x20, 0xffe0, 0x7, 0xfccd, 0x333, 0xa createsprite gSharpTeethSpriteTemplate, ANIM_ATTACKER, 2, 0xffe0, 0x20, 0x3, 0x333, 0xfccd, 0xa delay 0xa - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0x8, 0x0, 0x1, 0x1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 8, 0, ANIM_TARGET, 1 createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 8, 4, 2 PsychicFangsEnd: playsewithpan SE_M_SUPERSONIC, SOUND_PAN_TARGET @@ -11732,14 +11732,14 @@ PsychicFangsDestroyWall: createsprite gSharpTeethSpriteTemplate, ANIM_ATTACKER, 2, 0xffe0, 0xffe0, 0x1, 0x333, 0x333, 0xa createsprite gSharpTeethSpriteTemplate, ANIM_ATTACKER, 2, 0x20, 0x20, 0x5, 0xfccd, 0xfccd, 0xa delay 0xa - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0xfff8, 0x0, 0x1, 0x1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -8, 0, ANIM_TARGET, 1 createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 7, 5, 2 delay 0x10 playsewithpan SE_M_BITE, SOUND_PAN_TARGET createsprite gSharpTeethSpriteTemplate, ANIM_ATTACKER, 2, 0x20, 0xffe0, 0x7, 0xfccd, 0x333, 0xa createsprite gSharpTeethSpriteTemplate, ANIM_ATTACKER, 2, 0xffe0, 0x20, 0x3, 0x333, 0xfccd, 0xa delay 0xa - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0x8, 0x0, 0x1, 0x1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 8, 0, ANIM_TARGET, 1 createsprite gBrickBreakWallShardSpriteTemplate, ANIM_ATTACKER, 2, 0x1, 0x0, 0xfff8, 0xfff4 createsprite gBrickBreakWallShardSpriteTemplate, ANIM_ATTACKER, 2, 0x1, 0x1, 0x8, 0xfff4 createsprite gBrickBreakWallShardSpriteTemplate, ANIM_ATTACKER, 2, 0x1, 0x2, 0xfff8, 0xc @@ -11797,7 +11797,7 @@ gBattleAnimMove_ShadowBone:: playsewithpan SE_M_BONEMERANG, SOUND_PAN_TARGET createsprite gSpinningBoneSpriteTemplate, ANIM_ATTACKER, 2, 0xffd6, 0xffe7, 0x0, 0x0, 0xf delay 0xc - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1, 0x1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 1 createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 5, 5, 1 createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 0x7, 0x5, 0x1, 0x0, 0xa, 0x0, 0x0 playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET @@ -11822,7 +11822,7 @@ gBattleAnimMove_Accelerock:: playsewithpan SE_M_JUMP_KICK, SOUND_PAN_ATTACKER delay 0x4 createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 5, 0, 6, 1 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x1, 0x1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 4, 0, 0, ANIM_TARGET, 1 playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 0x1, 0x3, 0x0, 0x5, 0x1 createsprite gRockFragmentSpriteTemplate, ANIM_TARGET, 2, 0x5, 0x0, 0xffec, 0x18, 0xe, 0x1 @@ -11844,7 +11844,7 @@ gBattleAnimMove_Liquidation:: setalpha 12, 8 createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 0x4, 0x4 delay 0x6 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1, 0x1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 1 createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 6, 1 playsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_TARGET waitforvisualfinish @@ -12307,17 +12307,17 @@ gBattleAnimMove_ZingZap:: end ZingZapSparks1: playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x20, 0x18, 0xbe, 0xc, 0x0, 0x1, 0x0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 32, 0x18, 190, 12, ANIM_ATTACKER, 1, 0 delay 0x0 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x50, 0x18, 0x16, 0xc, 0x0, 0x1, 0x0 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x9c, 0x18, 0x79, 0xd, 0x0, 0x1, 0x1 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 80, 0x18, 22, 12, ANIM_ATTACKER, 1, 0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 156, 0x18, 121, 13, ANIM_ATTACKER, 1, 1 return ZingZapSparks2: playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x64, 0x18, 0x3c, 0xa, 0x0, 0x1, 0x0 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0xaa, 0x18, 0x2a, 0xb, 0x0, 0x1, 0x1 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 100, 0x18, 60, 10, ANIM_ATTACKER, 1, 0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 170, 0x18, 42, 11, ANIM_ATTACKER, 1, 1 delay 0x0 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0xee, 0x18, 0xa5, 0xa, 0x0, 0x1, 0x1 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 238, 0x18, 165, 10, ANIM_ATTACKER, 1, 1 return gBattleAnimMove_NaturesMadness:: @@ -12549,22 +12549,22 @@ gBattleAnimMove_PlasmaFists:: PlasmaFistSpark1: playsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATTACKER, 0, 2, 0, 11, RGB(31, 31, 22) - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x20, 0x18, 0xbe, 0xc, 0x0, 0x1, 0x0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 32, 0x18, 190, 12, ANIM_ATTACKER, 1, 0 delay 0x0 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x50, 0x18, 0x16, 0xc, 0x0, 0x1, 0x0 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x9c, 0x18, 0x79, 0xd, 0x0, 0x1, 0x1 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 80, 0x18, 22, 12, ANIM_ATTACKER, 1, 0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 156, 0x18, 121, 13, ANIM_ATTACKER, 1, 1 return PlasmaFistSpark2: playsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x64, 0x18, 0x3c, 0xa, 0x0, 0x1, 0x0 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0xaa, 0x18, 0x2a, 0xb, 0x0, 0x1, 0x1 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 100, 0x18, 60, 10, ANIM_ATTACKER, 1, 0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 170, 0x18, 42, 11, ANIM_ATTACKER, 1, 1 delay 0x0 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0xee, 0x18, 0xa5, 0xa, 0x0, 0x1, 0x1 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 238, 0x18, 165, 10, ANIM_ATTACKER, 1, 1 return PlasmaFistsImpact: playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET createsprite gFistFootSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x8, 0x1, 0x0 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0x0, 0x0, 0x1, 0x1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 0, ANIM_TARGET, 1 delay 0x1 createvisualtask AnimTask_InvertScreenColor, 0x2, 0x101, 0x101, 0x101 delay 0x1 @@ -12578,7 +12578,7 @@ PlasmaFistsImpact: createvisualtask AnimTask_InvertScreenColor, 0x2, 0x101, 0x101, 0x101 delay 0x2 createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 3, 15, 1 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x1, 0x2 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, ANIM_TARGET, 2 return gBattleAnimMove_PhotonGeyser:: @@ -13087,10 +13087,10 @@ gBattleAnimMove_DoubleIronBash:: createsprite gGustToTargetSpriteTemplate, ANIM_ATTACKER, 2, 0xffe7, 0x0, 0x0, 0x0, 0x0 @wing attack createsprite gGustToTargetSpriteTemplate, ANIM_ATTACKER, 2, 0x19, 0x0, 0x0, 0x0, 0x0 @wing attack delay 0x18 - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x18, 0x0, 0x0, 0x9 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 24, 0, 0, 9 delay 0x11 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x1, 0x1 - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0xffe0, 0x0, 0x0, 0x3 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 4, 0, 0, ANIM_TARGET, 1 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, -32, 0, 0, 3 waitforvisualfinish playsewithpan SE_M_RAZOR_WIND, SOUND_PAN_TARGET waitforvisualfinish @@ -13135,7 +13135,7 @@ gBattleAnimMove_JawLock:: createsprite gJawLockTeethTemplate, ANIM_ATTACKER, 2, 0xffe0, 0xffe0, 0x1, 0x333, 0x333, 0xa, 15 createsprite gJawLockTeethTemplate, ANIM_ATTACKER, 2, 0x20, 0x20, 0x5, 0xfccd, 0xfccd, 0xa, 15 delay 0xa - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0xfff8, 0x0, 0x1, 0x1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -8, 0, ANIM_TARGET, 1 createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 7, 10, 2 waitforvisualfinish createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x7, 0x0, 0x0 @;Black @@ -13313,17 +13313,17 @@ gBattleAnimMove_BoltBeak:: end BoltBeakSparks: playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER - createsprite gSparkElectricitySpriteTemplate, 0x0, 0x7, 0x20, 0x18, 0xbe, 0xc, 0x0, 0x1, 0x0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 7, 32, 0x18, 190, 12, ANIM_ATTACKER, 1, 0 delay 0x0 createsprite gBoltBeakBlueSparkTemplate, 0x0, 0x7, 0x50, 0x18, 0x16, 0xc, 0x0, 0x1, 0x0 - createsprite gSparkElectricitySpriteTemplate, 0x0, 0x7, 0x9c, 0x18, 0x79, 0xd, 0x0, 0x1, 0x1 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 7, 156, 0x18, 121, 13, ANIM_ATTACKER, 1, 1 delay 0x0 createvisualtask AnimTask_BlendColorCycle, 2, (F_PAL_BG | F_PAL_ATTACKER), -31, 1, 0, 0, RGB(31, 31, 22) delay 0xa createvisualtask AnimTask_BlendColorCycle, 2, (F_PAL_BG | F_PAL_ATTACKER), -31, 1, 5, 5, RGB(31, 31, 22) playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER createsprite gBoltBeakBlueSparkTemplate, 0x0, 0x7, 0x64, 0x18, 0x3c, 0xa, 0x0, 0x1, 0x0 - createsprite gSparkElectricitySpriteTemplate, 0x0, 0x7, 0xaa, 0x18, 0x2a, 0xb, 0x0, 0x1, 0x1 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 7, 170, 0x18, 42, 11, ANIM_ATTACKER, 1, 1 delay 0x0 createsprite gBoltBeakBlueSparkTemplate, 0x0, 0x7, 0xee, 0x18, 0xa5, 0xa, 0x0, 0x1, 0x1 delay 0x0 @@ -13496,23 +13496,23 @@ gBattleAnimMove_DrumBeating:: createsprite gFrenzyPlantRootSpriteTemplate, ANIM_ATTACKER, 2, 0x55, 0xfff0, 0xfffa, 0x0, 0x2, 0x4b playsewithpan SE_M_SCRATCH, SOUND_PAN_TARGET delay 0x5 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0xfff6, 0xfff6, 0x1, 0x3 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -10, -10, ANIM_TARGET, 3 playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET createvisualtask AnimTask_ShakeMon, 3, ANIM_TARGET, 8, 0, 20, 1 delay 0x3 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0xa, 0x8, 0x1, 0x3 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 10, 8, ANIM_TARGET, 3 playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET delay 0x3 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0xa, 0xfffd, 0x1, 0x2 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 10, -3, ANIM_TARGET, 2 playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET delay 0x3 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0xfffd, 0x1, 0x1, 0x2 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -3, 1, ANIM_TARGET, 2 playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET delay 0x2 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0xfff6, 0x1, 0x1, 0x1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -10, 1, ANIM_TARGET, 1 playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET delay 0x2 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xa, 0x1, 0x1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 10, ANIM_TARGET, 1 playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET waitforvisualfinish clearmonbg ANIM_TARGET @@ -13610,11 +13610,11 @@ gBattleAnimMove_AuraWheel:: createsprite gAuraWheelBlueElectricityTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x38, 0x18 playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER waitforvisualfinish - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x18, 0x0, 0x0, 0x6 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 24, 0, 0, 6 delay 0x4 playsewithpan SE_M_TRI_ATTACK2, SOUND_PAN_TARGET createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 5, 0, 23, 1 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 4, 0xfff6, 0x0, 0x1, 0x0 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 4, -10, 0, ANIM_TARGET, 0 createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_SPARK_2, 2, 12, 0, 0x76E1 @Revert blue Electricity createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x30, 0x2c, 0x0, 0x28, 0x0, 0x8003 createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x30, 0x2c, 0x40, 0x28, 0x1, 0x8003 @@ -13634,7 +13634,7 @@ gBattleAnimMove_BreakingSwipe:: createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_SPARK_2, 0, 12, 12, 0x001F @Red monbg ANIM_TARGET setalpha 12, 8 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0xffe0, 0xfff0, 0x1, 0x1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, -32, -16, ANIM_TARGET, 1 createsprite gBreakingSwipeCenteredElectricity, ANIM_TARGET, 2, 0x5, 0x0, 0x5, 0x0 playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 3, 21, 1 @@ -13648,7 +13648,7 @@ gBattleAnimMove_BreakingSwipe:: createsprite gBreakingSwipeCenteredElectricity, ANIM_TARGET, 2, 0xfff8, 0x8, 0x5, 0x2 playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET delay 0x4 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0x20, 0x14, 0x1, 0x1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 32, 20, ANIM_TARGET, 1 createsprite gBreakingSwipeCenteredElectricity, ANIM_TARGET, 2, 0xffec, 0xf, 0x5, 0x1 playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET waitsound @@ -13686,7 +13686,7 @@ gBattleAnimMove_Overdrive:: end OverdriveRings: playsewithpan SE_M_THUNDERBOLT, SOUND_PAN_TARGET - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 0x1f, 0x3, 0x8, 0x0, 0x3ff + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, (F_PAL_BG | F_PAL_ATK_SIDE | F_PAL_DEF_SIDE), 3, 8, 0, RGB_YELLOW createvisualtask AnimTask_ScaleMonAndRestore, 5, -5, -5, 5, ANIM_ATTACKER, 0 createsprite gHyperVoiceRingSpriteTemplate, ANIM_ATTACKER, 0, 0x2d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1 createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 1, 0, 6, 1 @@ -13742,7 +13742,7 @@ gBattleAnimMove_GravApple:: createsprite gGravAppleLargeApple, ANIM_TARGET, 2, 0x0, 0x3c, 4, ANIM_TARGET delay 0x7 playsewithpan SE_M_STRENGTH, SOUND_PAN_TARGET - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0, 0x15, 0x0, 0x4 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0, 21, 0, 4 delay 0x30 createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0x10 waitforvisualfinish @@ -14173,7 +14173,7 @@ gBattleAnimMove_ScaleShot:: createsprite gSpriteTemplate_ScaleShotScale, ANIM_TARGET, 2, 0x10, 0x0, 0x0, 0x0, 0x14, 0x101 waitforvisualfinish playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0x0, 0x0, 0x1, 0x1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 0, ANIM_TARGET, 1 createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 5, 1 delay 0x10 stopsound @@ -14253,12 +14253,12 @@ gBattleAnimMove_ShellSideArmPhysical:: @ Modified Body Slam, placeholder createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 6, 1, ANIM_ATTACKER waitforvisualfinish delay 11 - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 26, 0, 0, 5 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 26, 0, 0, 5 delay 6 createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 4, -10, 0, ANIM_TARGET, 0 loopsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET, 10, 2 delay 1 - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 1, -28, 0, 0, 3 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, -28, 0, 0, 3 waitforvisualfinish createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 4, 0, 12, 1 waitforvisualfinish @@ -14312,7 +14312,7 @@ gBattleAnimMove_GrassyGlide:: createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATTACKER, 0, 2, 0, 8, RGB(12, 29, 0) delay 0x2 playsewithpan SE_M_JUMP_KICK, SOUND_PAN_ATTACKER - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, -120, 0, 0, 10 @;Slide off off, screen + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, -120, 0, 0, 10 @;Slide off off, screen waitforvisualfinish call GrassPledgeMiddleFountain waitforvisualfinish @@ -14396,7 +14396,7 @@ gBattleAnimMove_TerrainPulse:: loadspritegfx ANIM_TAG_DRAGON_PULSE monbg ANIM_TARGET setalpha 12, 8 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 7, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 0, 7, RGB_BLACK createvisualtask AnimTask_TerrainPulse, 0x5 jumpargeq 0x0, TYPE_ELECTRIC, TerrainPulseElectric jumpargeq 0x0, TYPE_GRASS, TerrainPulseGrass @@ -14469,7 +14469,7 @@ TerrainPulseEnd: call DragonPulseParticle waitforvisualfinish delay 1 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 7, 0, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 7, 0, RGB_BLACK waitforvisualfinish blendoff clearmonbg ANIM_TARGET @@ -14600,7 +14600,7 @@ gBattleAnimMove_LashOut:: delay 0x8 createsprite gFoulPlayImpactTemplate, ANIM_TARGET, 3, 10, 0x0, ANIM_TARGET, 0x1 playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0xfff4, 0xa, 0x0, 0x3 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, -12, 10, 0, 3 delay 0x8 createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0x5 delay 0x8 @@ -14609,7 +14609,7 @@ gBattleAnimMove_LashOut:: delay 0x8 createsprite gFoulPlayImpactTemplate, ANIM_TARGET, 3, -10, 0x0, ANIM_TARGET, 0x1 playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0xC, 0xa, 0x0, 0x3 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 12, 10, 0, 3 delay 0x8 waitforvisualfinish createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0x5 @@ -14626,13 +14626,13 @@ gBattleAnimMove_Poltergeist:: loadspritegfx ANIM_TAG_POLTERGEIST fadetobg BG_NIGHTMARE waitbgfadein - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 2, 0, 0, 16, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_ATTACKER, 0, 0, 16, RGB_BLACK waitforvisualfinish createsprite gEyeSparkleSpriteTemplate, ANIM_ATTACKER, 0, -16, -8 createsprite gEyeSparkleSpriteTemplate, ANIM_ATTACKER, 0, 16, -8 playsewithpan SE_M_DETECT, SOUND_PAN_ATTACKER waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 2, 0, 16, 0, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_ATTACKER, 0, 16, 0, RGB_BLACK playsewithpan SE_M_FAINT_ATTACK, SOUND_PAN_ATTACKER delay 0x1 createvisualtask AnimTask_DestinyBondWhiteShadow, 0x5, 0x0, 0x24 @@ -14641,7 +14641,7 @@ gBattleAnimMove_Poltergeist:: createvisualtask AnimTask_PoltergeistItem, 2 waitforvisualfinish setalpha 12, 8 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1, 0x1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 1 createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 5, 5, 1 createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 0x7, 0x5, 0x1, 0x0, 0xa, 0x0, 0x0 playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET @@ -14730,14 +14730,14 @@ gBattleAnimMove_TripleAxel:: goto TripleAxelTurn2 TripleAxelTurn0: createsprite gFistFootSpriteTemplate, ANIM_TARGET, 4, 0xfff0, 0xfff8, 0x14, 0x1, 0x2 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0xfff0, 0xfff0, 0x1, 0x2 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, -16, -16, ANIM_TARGET, 2 createsprite gTripleAxelIceCrystalSpriteTemplate, ANIM_TARGET, 1, 0xfff0, 0xfff8, 0xff00, 0xffd8 createsprite gTripleAxelIceCrystalSpriteTemplate, ANIM_TARGET, 1, 0xfff0, 0xfff8, 0x1a0, 0xffda createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 4, 0, 4, 1 goto TripleAxelEnd TripleAxelTurn1: createsprite gFistFootSpriteTemplate, ANIM_TARGET, 4, 0x8, 0x8, 0x14, 0x1, 0x2 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0x8, 0x0, 0x1, 0x2 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 8, 0, ANIM_TARGET, 2 createsprite gTripleAxelIceCrystalSpriteTemplate, ANIM_TARGET, 1, 0x8, 0x8, 0xa0, 0xffe0 createsprite gTripleAxelIceCrystalSpriteTemplate, ANIM_TARGET, 1, 0x8, 0x8, 0xff00, 0xffd8 createsprite gTripleAxelIceCrystalSpriteTemplate, ANIM_TARGET, 1, 0x8, 0x8, 0x1a0, 0xffda @@ -14746,7 +14746,7 @@ TripleAxelTurn1: goto TripleAxelEnd TripleAxelTurn2: createsprite gFistFootSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x14, 0x1, 0x2 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0x0, 0xfff8, 0x1, 0x1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, -8, ANIM_TARGET, 1 createsprite gTripleAxelIceCrystalSpriteTemplate, ANIM_TARGET, 1, 0x0, 0x0, 0xa0, 0xffe0 createsprite gTripleAxelIceCrystalSpriteTemplate, ANIM_TARGET, 1, 0x0, 0x0, 0xff00, 0xffd8 createsprite gTripleAxelIceCrystalSpriteTemplate, ANIM_TARGET, 1, 0x0, 0x0, 0x80, 0xfff0 @@ -14771,38 +14771,38 @@ gBattleAnimMove_DualWingbeat:: playsewithpan SE_M_WING_ATTACK, SOUND_PAN_TARGET jumpifmoveturn 1, DualWingbeatRightSide DualWingbeatLeftSide: - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, -20, 10, ANIM_TARGET, 0x2 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, -20, 10, ANIM_TARGET, 2 delay 1 playsewithpan SE_M_WING_ATTACK, SOUND_PAN_TARGET - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, -20, 0, ANIM_TARGET, 0x2 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, -20, 0, ANIM_TARGET, 2 call DualWingbeatFeatherScatterLeft delay 1 playsewithpan SE_M_WING_ATTACK, SOUND_PAN_TARGET - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 4, -20, -10, ANIM_TARGET, 0x2 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 4, -20, -10, ANIM_TARGET, 2 delay 1 playsewithpan SE_M_WING_ATTACK, SOUND_PAN_TARGET - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 5, -20, -20, ANIM_TARGET, 0x2 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 5, -20, -20, ANIM_TARGET, 2 delay 1 playsewithpan SE_M_WING_ATTACK, SOUND_PAN_TARGET - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 6, -20, -30, ANIM_TARGET, 0x2 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 6, -20, -30, ANIM_TARGET, 2 waitforvisualfinish blendoff end DualWingbeatRightSide: - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 10, 10, ANIM_TARGET, 0x2 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 10, 10, ANIM_TARGET, 2 delay 1 playsewithpan SE_M_WING_ATTACK, SOUND_PAN_TARGET - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 10, 0, ANIM_TARGET, 0x2 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 10, 0, ANIM_TARGET, 2 call DualWingbeatFeatherScatterRight delay 1 playsewithpan SE_M_WING_ATTACK, SOUND_PAN_TARGET - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 4, 10, -10, ANIM_TARGET, 0x2 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 4, 10, -10, ANIM_TARGET, 2 delay 1 playsewithpan SE_M_WING_ATTACK, SOUND_PAN_TARGET - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 5, 10, -20, ANIM_TARGET, 0x2 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 5, 10, -20, ANIM_TARGET, 2 delay 1 playsewithpan SE_M_WING_ATTACK, SOUND_PAN_TARGET - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 6, 10, -30, ANIM_TARGET, 0x2 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 6, 10, -30, ANIM_TARGET, 2 waitforvisualfinish blendoff end @@ -14827,7 +14827,7 @@ gBattleAnimMove_ScorchingSands:: splitbgprio ANIM_ATTACKER setalpha 12, 8 playsewithpan SE_M_SAND_ATTACK, SOUND_PAN_ATTACKER - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff6, 0x0, 0x0, 0x3 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, -10, 0, 0, 3 waitforvisualfinish createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x2 call SandAttackDirt @@ -14936,12 +14936,12 @@ gBattleAnimMove_WickedBlow:: fadetobg BG_DARK waitbgfadeout playsewithpan SE_M_JUMP_KICK, SOUND_PAN_ATTACKER - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x1c, 0x0, 0x0, 0x5 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 28, 0, 0, 5 delay 0x5 createsprite gSpriteTemplate_WickedBlowFist, ANIM_TARGET, 4, ANIM_TARGET, 0, 0, 16, 32 delay 6 loopsewithpan SE_M_STRENGTH, SOUND_PAN_TARGET, 0x4, 0x6 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0x0, 0x0, 0x1, 0x1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 0, ANIM_TARGET, 1 createsprite gSpriteTemplate_WickedBlowBlackStars, ANIM_TARGET, 2, 0xfff0, 0xfff8, 0xfe80, 0xffe1 createsprite gSpriteTemplate_WickedBlowRedStars, ANIM_TARGET, 2, 0xfff0, 0xfff8, 0xff00, 0xffd8 createsprite gSpriteTemplate_WickedBlowBlackStars, ANIM_TARGET, 2, 0xfff0, 0xfff8, 0xff80, 0xffea @@ -15074,7 +15074,7 @@ gBattleAnimMove_DragonEnergy:: waitforvisualfinish playsewithpan SE_M_DETECT, SOUND_PAN_TARGET createvisualtask AnimTask_BlendBattleAnimPal, 0xa, (F_PAL_BG | F_PAL_BATTLERS_2), 0x1, 0x10, 0x0, 0x2C5E @;Regidrago Reddish Reddish, Purple - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, -120, 0, 0, 1 @;Slide off off, screen + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, -120, 0, 0, 1 @;Slide off off, screen waitforvisualfinish playsewithpan SE_M_SOLAR_BEAM, SOUND_PAN_TARGET call DragonEnergyShot @@ -15244,10 +15244,10 @@ gBattleAnimMove_ThunderousKick:: delay 0xA call ZingZapSparks2 delay 0x3 - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x30, 0x3, 0x0, 0x4 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 48, 3, 0, 4 delay 0x7 playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1, 0x0 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 0 createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 4, 0, 22, 1 createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x0, 0x10, 0x0, 0x7fff createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 0x1f, 0x3, 0x1, 0x0, 0x8, 0x0, 0x0 @@ -15404,7 +15404,7 @@ gBattleAnimMove_PsyshieldBash:: createsprite gSpriteTemplate_PsyshieldBashHit, ANIM_ATTACKER, 4, -10, 0x0, 0x1, 0x0 playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET delay 0x1 - createsprite gSlideMonToOffsetSpriteTemplate ANIM_TARGET, 2, ANIM_TARGET, 0xfff0, 0x0, 0x0, 0x4 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, -16, 0, 0, 4 waitforvisualfinish createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 4, 0, 12, 1 waitforvisualfinish @@ -15732,7 +15732,7 @@ gBattleAnimMove_HeadlongRush:: call PulverizingPancakeDiggingRun call PulverizingPancakeDiggingRun waitforvisualfinish - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x2a, 0x0, 0x0, 0x5 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 42, 0, 0, 5 createsprite gSpriteTemplate_HeadlongRushImpact, ANIM_TARGET, 4, 0xfff6, 0x0, 0x1, 0x0 delay 0x5 createvisualtask AnimTask_ShakeMon2, 5, ANIM_TARGET, 4, 0, 44, 1 @@ -16002,7 +16002,7 @@ InfernalFlames: gBattleAnimMove_CeaselessEdge:: loadspritegfx ANIM_TAG_SLASH playsewithpan SE_M_JUMP_KICK, SOUND_PAN_ATTACKER - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x2C, 0x0, 0x0, 0x5 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 44, 0, 0, 5 waitforvisualfinish createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x0, 0x10, 0x10, 0x1F @;Fully to to, Red createvisualtask AnimTask_BlendBattleAnimPal, 0xa, (F_PAL_ATTACKER | F_PAL_TARGET), 0x0, 0x10, 0x10, 0x0 @;Fully to to, Black @@ -16237,7 +16237,7 @@ gBattleAnimMove_BitterBlade:: loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER splitbgprio_foes ANIM_TARGET - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 1, 3, 0, 12, RGB(14, 6, 24) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_BG, 3, 0, 12, RGB(14, 6, 24) playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER waitforvisualfinish call EndureEffect @@ -16258,7 +16258,7 @@ gBattleAnimMove_BitterBlade:: delay 15 call HealingEffect waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 1, 3, 12, 0, RGB(14, 6, 24) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_BG, 3, 12, 0, RGB(14, 6, 24) waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff @@ -16652,12 +16652,12 @@ RagingBullNormal: waitforvisualfinish playsewithpan SE_M_SWIFT, SOUND_PAN_ATTACKER call SetImpactBackground - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 20, 0, 0, 4 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 20, 0, 0, 4 delay 3 waitforvisualfinish playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 4, -10, 0, ANIM_TARGET, 0 - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 1, -32, 0, 0, 3 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, -32, 0, 0, 3 waitforvisualfinish createvisualtask AnimTask_RotateMonSpriteToSide, 2, 8, -256, ANIM_ATTACKER, 0 createvisualtask AnimTask_RotateMonSpriteToSide, 2, 8, -256, ANIM_TARGET, 0 @@ -16688,13 +16688,13 @@ RagingBullShatteredWall: waitforvisualfinish playsewithpan SE_M_SWIFT, SOUND_PAN_ATTACKER call SetImpactBackground - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 20, 0, 0, 4 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 20, 0, 0, 4 delay 3 waitforvisualfinish createsprite gBrickBreakWallSpriteTemplate, ANIM_ATTACKER, 3, ANIM_TARGET, 0, 0, 90, 10 playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 4, -10, 0, ANIM_TARGET, 0 - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 1, -32, 0, 0, 3 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, -32, 0, 0, 3 delay 20 createvisualtask AnimTask_RotateMonSpriteToSide, 2, 8, -256, ANIM_ATTACKER, 0 createvisualtask AnimTask_RotateMonSpriteToSide, 2, 8, -256, ANIM_TARGET, 0 @@ -16867,10 +16867,10 @@ gBattleAnimMove_Trailblaze:: call TrailblazeVortex call TrailblazeVortex waitforvisualfinish - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x18, 0x0, 0x0, 0x5 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 24, 0, 0, 5 delay 0x3 playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x1, 0x0 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, ANIM_TARGET, 0 createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 6, 0, 8, 1 createsprite gTropKickLeavesTemplate, ANIM_TARGET, 1, 0, 10, 192, 176, 40 createsprite gTropKickLeavesTemplate, ANIM_TARGET, 1, 0, 10, -192, 240, 40 @@ -17469,7 +17469,7 @@ gBattleAnimMove_AxeKick:: loadspritegfx ANIM_TAG_HANDS_AND_FEET loadspritegfx ANIM_TAG_IMPACT playsewithpan SE_M_JUMP_KICK, SOUND_PAN_ATTACKER - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 20, 0, 0, 4 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 20, 0, 0, 4 delay 7 createsprite gAxeKickSpriteTemplate, ANIM_TARGET, 3 delay 2 @@ -17750,22 +17750,22 @@ gBattleAnimMove_Comeuppance:: delay 5 setalpha 12, 8 createvisualtask AnimTask_ShakeMon2, 5, ANIM_TARGET, 4, 0, 30, 1 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 0 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, ANIM_TARGET, 0 playsewithpan SE_M_COMET_PUNCH, +63 delay 5 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 24, 8, 1, 0 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 24, 8, ANIM_TARGET, 0 playsewithpan SE_M_COMET_PUNCH, +63 delay 5 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, -24, -16, 1, 0 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, -24, -16, ANIM_TARGET, 0 playsewithpan SE_M_COMET_PUNCH, +63 delay 5 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 8, 4, 1, 0 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 8, 4, ANIM_TARGET, 0 playsewithpan SE_M_COMET_PUNCH, +63 delay 5 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, -16, 19, 1, 0 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, -16, 19, ANIM_TARGET, 0 playsewithpan SE_M_COMET_PUNCH, +63 delay 5 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 18, -18, 1, 0 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 18, -18, ANIM_TARGET, 0 playsewithpan SE_M_COMET_PUNCH, +63 waitforvisualfinish clearmonbg ANIM_TARGET @@ -18465,12 +18465,12 @@ gBattleAnimMove_BodySlam:: createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 6, 1, ANIM_ATTACKER waitforvisualfinish delay 11 - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 26, 0, 0, 5 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 26, 0, 0, 5 delay 6 createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 4, -10, 0, ANIM_TARGET, 0 loopsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET, 10, 2 delay 1 - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 1, -28, 0, 0, 3 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, -28, 0, 0, 3 waitforvisualfinish createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 4, 0, 12, 1 waitforvisualfinish @@ -18545,7 +18545,7 @@ gBattleAnimMove_FlameWheel:: createsprite gFireSpiralOutwardSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 56, 24 playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER waitforvisualfinish - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 24, 0, 0, 6 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 24, 0, 0, 6 delay 4 createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 5, 0, 8, 1 createvisualtask AnimTask_BlendMonInAndOut, 3, ANIM_TARGET, RGB_RED, 12, 1, 1 @@ -18630,7 +18630,7 @@ gBattleAnimMove_TakeDown:: createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 4, -10, 0, ANIM_TARGET, 0 playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET delay 1 - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 1, -16, 0, 0, 4 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, -16, 0, 0, 4 waitforvisualfinish createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 4, 0, 12, 1 waitforvisualfinish @@ -18654,12 +18654,12 @@ gBattleAnimMove_DoubleEdge:: createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_ATTACKER, 18, 6, 2, 4 waitforvisualfinish createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 0, 16, 16, RGB_WHITE - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 20, 0, 0, 4 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 20, 0, 0, 4 delay 3 waitforvisualfinish playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 4, -10, 0, ANIM_TARGET, 0 - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 1, -32, 0, 0, 3 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, -32, 0, 0, 3 waitforvisualfinish createvisualtask AnimTask_RotateMonSpriteToSide, 2, 8, -256, ANIM_ATTACKER, 0 createvisualtask AnimTask_RotateMonSpriteToSide, 2, 8, -256, ANIM_TARGET, 0 @@ -19356,13 +19356,13 @@ gBattleAnimMove_Slam:: monbg ANIM_TARGET setalpha 12, 8 playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_ATTACKER - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 20, 3, 0, 4 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 20, 3, 0, 4 delay 1 createsprite gSlamHitSpriteTemplate, ANIM_ATTACKER, 2, 0, 0 delay 3 playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, ANIM_TARGET, 1 - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 1, -12, 10, 0, 3 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, -12, 10, 0, 3 createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 5 delay 3 createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 0, 3, 6, 1 @@ -19816,19 +19816,19 @@ gBattleAnimMove_Spark:: delay 0 createvisualtask AnimTask_BlendColorCycle, 2, (F_PAL_BG | F_PAL_ATTACKER), -31, 1, 5, 5, RGB(31, 31, 22) playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 32, 24, 190, 12, ANIM_ATTACKER, 1, 0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 32, 0x18, 190, 12, ANIM_ATTACKER, 1, 0 delay 0 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 80, 24, 22, 12, ANIM_ATTACKER, 1, 0 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 156, 24, 121, 13, ANIM_ATTACKER, 1, 1 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 80, 0x18, 22, 12, ANIM_ATTACKER, 1, 0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 156, 0x18, 121, 13, ANIM_ATTACKER, 1, 1 delay 0 createvisualtask AnimTask_BlendColorCycle, 2, (F_PAL_BG | F_PAL_ATTACKER), -31, 1, 0, 0, RGB(31, 31, 22) delay 10 createvisualtask AnimTask_BlendColorCycle, 2, (F_PAL_BG | F_PAL_ATTACKER), -31, 1, 5, 5, RGB(31, 31, 22) playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 100, 24, 60, 10, ANIM_ATTACKER, 1, 0 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 170, 24, 42, 11, ANIM_ATTACKER, 1, 1 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 100, 0x18, 60, 10, ANIM_ATTACKER, 1, 0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 170, 0x18, 42, 11, ANIM_ATTACKER, 1, 1 delay 0 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 238, 24, 165, 10, ANIM_ATTACKER, 1, 1 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 238, 0x18, 165, 10, ANIM_ATTACKER, 1, 1 delay 0 createvisualtask AnimTask_BlendColorCycle, 2, (F_PAL_BG | F_PAL_ATTACKER), -31, 1, 0, 0, RGB(31, 31, 22) delay 20 @@ -20260,7 +20260,7 @@ gBattleAnimMove_RollingKick:: delay 6 playsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_ATTACKER waitforvisualfinish - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 20, 0, 0, 4 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 20, 0, 0, 4 createsprite gSlidingKickSpriteTemplate, ANIM_ATTACKER, 2, -24, 0, 48, 10, 160, 0 delay 5 playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET @@ -20454,7 +20454,7 @@ gBattleAnimMove_Sing:: gBattleAnimMove_LowKick:: loadspritegfx ANIM_TAG_HANDS_AND_FEET loadspritegfx ANIM_TAG_IMPACT - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 20, 0, 0, 4 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 20, 0, 0, 4 createsprite gSlidingKickSpriteTemplate, ANIM_TARGET, 2, -24, 28, 40, 8, 160, 0 delay 4 createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, -8, 8, ANIM_TARGET, 2 @@ -20502,18 +20502,18 @@ gBattleAnimMove_Fissure:: end FissureDirtPlumeFar: - createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, 1, 0, 12, -48, -16, 24 - createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, 1, 0, 16, -16, -10, 24 - createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, 1, 1, 14, -52, -18, 24 - createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, 1, 1, 12, -32, -16, 24 + createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0, 12, -48, -16, 24 + createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0, 16, -16, -10, 24 + createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 1, 14, -52, -18, 24 + createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 1, 12, -32, -16, 24 playsewithpan SE_M_DIG, SOUND_PAN_TARGET return FissureDirtPlumeClose: - createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, 1, 0, 12, -24, -16, 24 - createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, 1, 0, 16, -38, -10, 24 - createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, 1, 1, 14, -20, -18, 24 - createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, 1, 1, 12, -36, -16, 24 + createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0, 12, -24, -16, 24 + createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0, 16, -38, -10, 24 + createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 1, 14, -20, -18, 24 + createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 1, 12, -36, -16, 24 playsewithpan SE_M_DIG, SOUND_PAN_TARGET return @@ -20557,10 +20557,10 @@ DigUnleash: clearmonbg ANIM_ATTACKER goto DigEnd DigThrowDirt: - createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 12, 4, -16, 18 - createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 16, 4, -10, 18 - createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, 0, 1, 14, 4, -18, 18 - createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, 0, 1, 12, 4, -16, 18 + createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0, 12, 4, -16, 18 + createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0, 16, 4, -10, 18 + createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 1, 14, 4, -18, 18 + createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 1, 12, 4, -16, 18 playsewithpan SE_M_DIG, SOUND_PAN_ATTACKER delay 32 return @@ -23057,7 +23057,7 @@ gBattleAnimMove_SandAttack:: splitbgprio ANIM_ATTACKER setalpha 12, 8 playsewithpan SE_M_SAND_ATTACK, SOUND_PAN_ATTACKER - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, -10, 0, 0, 3 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, -10, 0, 0, 3 waitforvisualfinish createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 2 call SandAttackDirt @@ -23082,7 +23082,7 @@ SandAttackDirt: gBattleAnimMove_MudSlap:: loadspritegfx ANIM_TAG_MUD_SAND playsewithpan SE_M_SAND_ATTACK, SOUND_PAN_ATTACKER - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, -10, 0, 0, 3 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, -10, 0, 0, 3 waitforvisualfinish createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 2 call MudSlapMud @@ -23108,7 +23108,7 @@ gBattleAnimMove_DragonRage:: playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER createvisualtask AnimTask_ShakeMon, 5, ANIM_ATTACKER, 0, 2, 40, 1 waitforvisualfinish - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_TARGET, 2, 0, 15, 0, 0, 4 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_TARGET, 2, ANIM_ATTACKER, 15, 0, 0, 4 waitforvisualfinish createsprite gDragonRageFireSpitSpriteTemplate, ANIM_TARGET, 2, 30, 15, 0, 10, 10 waitforvisualfinish @@ -23971,13 +23971,13 @@ MegahornContinue: createvisualtask AnimTask_ShakeMon, 5, ANIM_ATTACKER, 2, 0, 15, 1 waitforvisualfinish delay 10 - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 24, 0, 0, 6 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 24, 0, 0, 6 delay 3 createsprite gMegahornHornSpriteTemplate, ANIM_ATTACKER, 3, -42, 25, 0, 0, 6 delay 4 playsewithpan SE_M_VICEGRIP, SOUND_PAN_TARGET createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 0 - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 1, -16, 4, 1, 4 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, -16, 4, 1, 4 waitforvisualfinish createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, -4, 1, 12, 1 createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_ATTACKER | F_PAL_TARGET, 5, 1, RGB_WHITE, 10, RGB_BLACK, 0 @@ -24029,7 +24029,7 @@ gBattleAnimMove_WingAttack:: createsprite gGustToTargetSpriteTemplate, ANIM_ATTACKER, 2, -25, 0, 0, 0, 20 createsprite gGustToTargetSpriteTemplate, ANIM_ATTACKER, 2, 25, 0, 0, 0, 20 delay 24 - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 24, 0, 0, 9 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 24, 0, 0, 9 delay 17 createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 16, 0, ANIM_TARGET, 1 createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -16, 0, ANIM_TARGET, 1 @@ -24123,7 +24123,7 @@ gBattleAnimMove_Crabhammer:: playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET delay 1 createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 3, 1, RGB(13, 21, 31), 10, RGB_BLACK, 0 - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 1, -24, 0, 0, 4 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, -24, 0, 0, 4 waitforvisualfinish delay 8 waitforvisualfinish @@ -24356,7 +24356,7 @@ gBattleAnimMove_HighJumpKick:: loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER setalpha 12, 8 - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, -24, 0, 0, 8 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, -24, 0, 0, 8 waitforvisualfinish delay 10 createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 3 @@ -24366,7 +24366,7 @@ gBattleAnimMove_HighJumpKick:: waitforvisualfinish createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 1 playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 1, -28, 0, 0, 3 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, -28, 0, 0, 3 delay 3 createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 3, 0, 11, 1 waitforvisualfinish @@ -24465,7 +24465,7 @@ gBattleAnimMove_Counter:: createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_ATTACKER, 18, 6, 1, 4 playsewithpan SE_M_VITAL_THROW, SOUND_PAN_ATTACKER waitforvisualfinish - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 20, 0, 0, 4 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 20, 0, 0, 4 delay 4 createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -15, 18, ANIM_TARGET, 0 playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET @@ -24496,12 +24496,12 @@ gBattleAnimMove_VitalThrow:: playsewithpan SE_M_VITAL_THROW, SOUND_PAN_ATTACKER createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_ATTACKER, 12, 4, 1, 2 waitforvisualfinish - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 20, 0, 0, 4 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 20, 0, 0, 4 delay 2 createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, ANIM_TARGET, 1 playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET delay 1 - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 1, -24, 0, 0, 4 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, -24, 0, 0, 4 waitforvisualfinish delay 3 createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 7 @@ -24666,7 +24666,7 @@ gBattleAnimMove_PetalDance:: createsprite gPetalDanceSmallFlowerSpriteTemplate, ANIM_ATTACKER, 2, 20, -16, 14, 80 createsprite gPetalDanceSmallFlowerSpriteTemplate, ANIM_ATTACKER, 2, -20, -14, 16, 80 waitforvisualfinish - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 24, 0, 0, 5 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 24, 0, 0, 5 delay 3 playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, ANIM_TARGET, 0 @@ -24743,7 +24743,7 @@ gBattleAnimMove_AncientPower:: createsprite gAncientPowerRockSpriteTemplate, ANIM_ATTACKER, 2, 0, 32, -42, 25, 5 createsprite gAncientPowerRockSpriteTemplate, ANIM_ATTACKER, 2, -25, 32, -48, 30, 4 waitforvisualfinish - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 16, 0, 0, 4 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 16, 0, 0, 4 delay 3 playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, ANIM_TARGET, 1 @@ -25090,7 +25090,7 @@ gBattleAnimMove_SteelWing:: createsprite gGustToTargetSpriteTemplate, ANIM_ATTACKER, 2, -25, 0, 0, 0, 20 createsprite gGustToTargetSpriteTemplate, ANIM_ATTACKER, 2, 25, 0, 0, 0, 20 delay 24 - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 24, 0, 0, 9 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 24, 0, 0, 9 delay 17 createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 16, 0, ANIM_TARGET, 1 createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -16, 0, ANIM_TARGET, 1 @@ -25262,7 +25262,7 @@ BideUnleash: createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 2, 0, 11, RGB_RED createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATTACKER, 1, 0, 32, 1 waitforvisualfinish - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 24, 0, 0, 4 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 24, 0, 0, 4 waitforvisualfinish createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_ATTACKER, 2, 0, 12, 1 createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 3, 0, 16, 1 @@ -27429,7 +27429,7 @@ gBattleAnimMove_KnockOff:: createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 5, 1, RGB_WHITE, 10, RGB_BLACK, 0 createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 0, ANIM_TARGET, 2 playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 1, -12, 10, 0, 3 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, -12, 10, 0, 3 createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 5 delay 3 createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 0, 3, 6, 1 @@ -27469,7 +27469,7 @@ gBattleAnimMove_SkyUppercut:: waitbgfadein setalpha 12, 8 delay 38 - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 28, 0, 0, 5 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 28, 0, 0, 5 delay 4 createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 4, 0, 6, 1 playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET @@ -27487,7 +27487,7 @@ gBattleAnimMove_SkyUppercut:: delay 1 playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 5, -52, ANIM_TARGET, 1 - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 1, -26, 16, 1, 4 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, -26, 16, 1, 4 delay 4 createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 0, 3, 6, 1 delay 30 @@ -28672,6 +28672,8 @@ gBattleAnimGeneral_MegaEvolution:: loadspritegfx ANIM_TAG_MEGA_STONE loadspritegfx ANIM_TAG_MEGA_PARTICLES loadspritegfx ANIM_TAG_MEGA_SYMBOL + loadspritegfx ANIM_TAG_ELECTRICITY + createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_ELECTRICITY, 0, 12, 12, RGB(29, 0, 29) monbg ANIM_ATTACKER setalpha 12, 8 loopsewithpan SE_M_MEGA_KICK, SOUND_PAN_ATTACKER, 13, 3 @@ -28685,12 +28687,13 @@ gBattleAnimGeneral_MegaEvolution:: delay 20 createvisualtask AnimTask_BlendBattleAnimPalExclude, 5, 5, 2, 0, 16, RGB_WHITEALPHA waitforvisualfinish + createvisualtask SoundTask_PlayNormalCry, 0 createvisualtask AnimTask_HideSwapSprite, 2, 1, 0 createvisualtask AnimTask_BlendBattleAnimPalExclude, 5, 5, 2, 16, 0, RGB_WHITEALPHA createvisualtask AnimTask_HorizontalShake, 5, ANIM_TARGET, 5, 14 - waitforvisualfinish - createvisualtask SoundTask_PlayNormalCry, 0 - createsprite gMegaSymbolSpriteTemplate ANIM_ATTACKER, 2 + createsprite gMegaSymbolSpriteTemplate ANIM_ATTACKER, 3, 0, 0, ANIM_ATTACKER + delay 2 + call MegaEvolutionSpinEffect waitforvisualfinish clearmonbg ANIM_ATK_PARTNER blendoff @@ -28713,6 +28716,21 @@ MegaEvolutionParticles: delay 3 return +MegaEvolutionSpinEffect: + createsprite gMegaSmokeSpriteTemplate ANIM_ATTACKER, 7, 0, 12, 528, 30, 13, 50, 0 + delay 2 + createsprite gMegaSmokeSpriteTemplate ANIM_ATTACKER, 7, 0, 0, 480, 20, 16, -46, 0 + delay 2 + createsprite gMegaSmokeSpriteTemplate ANIM_ATTACKER, 7, 0, 1, 576, 20, 8, 42, 0 + delay 2 + createsprite gMegaSmokeSpriteTemplate ANIM_ATTACKER, 7, 0, 15, 400, 25, 11, -42, 0 + delay 2 + createsprite gMegaSmokeSpriteTemplate ANIM_ATTACKER, 7, 0, 12, 512, 25, 16, 46, 0 + delay 2 + createsprite gMegaSmokeSpriteTemplate ANIM_ATTACKER, 7, 0, 1, 464, 30, 15, -50, 0 + delay 2 + return + gBattleAnimGeneral_TeraCharge:: loadspritegfx ANIM_TAG_TERA_CRYSTAL loadspritegfx ANIM_TAG_TERA_SHATTER @@ -28859,18 +28877,14 @@ gBattleAnimGeneral_PrimalReversion:: createvisualtask AnimTask_PrimalReversion, 0x5 jumpargeq 0x0, ITEM_RED_ORB, General_PrimalReversion_Omega jumpargeq 0x0, ITEM_BLUE_ORB, General_PrimalReversion_Alpha + goto gBattleAnimGeneral_MegaEvolution General_PrimalReversion_Alpha: loadspritegfx ANIM_TAG_ALPHA_STONE loadspritegfx ANIM_TAG_MEGA_PARTICLES loadspritegfx ANIM_TAG_ALPHA_SYMBOL + loadspritegfx ANIM_TAG_HYDRO_PUMP monbg ANIM_ATTACKER setalpha 12, 8 - loopsewithpan SE_M_MEGA_KICK, SOUND_PAN_ATTACKER, 13, 3 - createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATTACKER, 0, 6, 0, 11, RGB(31, 31, 11) - call MegaEvolutionParticles - call MegaEvolutionParticles - call MegaEvolutionParticles - waitforvisualfinish playsewithpan SE_M_SOLAR_BEAM, SOUND_PAN_ATTACKER createsprite gAlphaStoneSpriteTemplate, ANIM_ATTACKER, 41, 0, 0, 0, 0 delay 20 @@ -28879,25 +28893,31 @@ General_PrimalReversion_Alpha: createvisualtask AnimTask_HideSwapSprite, 2, 1, 0 createvisualtask AnimTask_BlendBattleAnimPalExclude, 5, 5, 2, 16, 0, RGB_WHITEALPHA createvisualtask AnimTask_HorizontalShake, 5, ANIM_TARGET, 5, 14 - waitforvisualfinish createvisualtask SoundTask_PlayNormalCry, 0 - createsprite gAlphaSymbolSpriteTemplate ANIM_ATTACKER, 2 + createsprite gAlphaSymbolSpriteTemplate ANIM_ATTACKER, 3, 0, 0, ANIM_ATTACKER + call WaterGeyser + call WaterGeyser waitforvisualfinish clearmonbg ANIM_ATK_PARTNER blendoff end +WaterGeyser: + createsprite gAlphaGeyserSpriteTemplate ANIM_ATTACKER, 3, ANIM_ATTACKER, -4, 24 + delay 1 + createsprite gAlphaGeyserSpriteTemplate ANIM_ATTACKER, 3, ANIM_ATTACKER, 16, 24 + delay 1 + createsprite gAlphaGeyserSpriteTemplate ANIM_ATTACKER, 3, ANIM_ATTACKER, 4, 24 + delay 1 + createsprite gAlphaGeyserSpriteTemplate ANIM_ATTACKER, 3, ANIM_ATTACKER, -16, 24 + delay 1 + return General_PrimalReversion_Omega: loadspritegfx ANIM_TAG_OMEGA_STONE loadspritegfx ANIM_TAG_MEGA_PARTICLES loadspritegfx ANIM_TAG_OMEGA_SYMBOL + loadspritegfx ANIM_TAG_SMALL_EMBER monbg ANIM_ATTACKER setalpha 12, 8 - loopsewithpan SE_M_MEGA_KICK, SOUND_PAN_ATTACKER, 13, 3 - createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATTACKER, 0, 6, 0, 11, RGB(31, 31, 11) - call MegaEvolutionParticles - call MegaEvolutionParticles - call MegaEvolutionParticles - waitforvisualfinish playsewithpan SE_M_SOLAR_BEAM, SOUND_PAN_ATTACKER createsprite gOmegaStoneSpriteTemplate, ANIM_ATTACKER, 41, 0, 0, 0, 0 delay 20 @@ -28906,13 +28926,82 @@ General_PrimalReversion_Omega: createvisualtask AnimTask_HideSwapSprite, 2, 1, 0 createvisualtask AnimTask_BlendBattleAnimPalExclude, 5, 5, 2, 16, 0, RGB_WHITEALPHA createvisualtask AnimTask_HorizontalShake, 5, ANIM_TARGET, 5, 14 - waitforvisualfinish createvisualtask SoundTask_PlayNormalCry, 0 - createsprite gOmegaSymbolSpriteTemplate ANIM_ATTACKER, 2 + createsprite gOmegaSymbolSpriteTemplate ANIM_ATTACKER, 3, 0, 0, ANIM_ATTACKER + call FireGeyser + call FireGeyser waitforvisualfinish clearmonbg ANIM_ATK_PARTNER blendoff end +FireGeyser: + createsprite gOmegaGeyserSpriteTemplate ANIM_ATTACKER, 3, ANIM_ATTACKER, -4, 24 + delay 1 + createsprite gOmegaGeyserSpriteTemplate ANIM_ATTACKER, 3, ANIM_ATTACKER, 16, 24 + delay 1 + createsprite gOmegaGeyserSpriteTemplate ANIM_ATTACKER, 3, ANIM_ATTACKER, 4, 24 + delay 1 + createsprite gOmegaGeyserSpriteTemplate ANIM_ATTACKER, 3, ANIM_ATTACKER, -16, 24 + delay 1 + return + +gBattleAnimGeneral_PowerConstruct:: + loadspritegfx ANIM_TAG_SNORE_Z + loadspritegfx ANIM_TAG_ZYGARDE_HEXES @hexagon + loadspritegfx ANIM_TAG_VERTICAL_HEX @arrow + loadspritegfx ANIM_TAG_FLYING_DIRT + createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_SNORE_Z, 0, 10, 10, RGB(8, 20, 26) @Green + monbg ANIM_ATTACKER + setalpha 12, 8 + loopsewithpan SE_M_MEGA_KICK, SOUND_PAN_ATTACKER, 13, 3 + call PowerConstructParticles + call PowerConstructParticles + call PowerConstructParticles + waitforvisualfinish + playsewithpan SE_ORB, SOUND_PAN_ATTACKER + createsprite gPowerConstructEmergeSpriteTemplate, ANIM_ATTACKER, 0, 0, 0, 0, 0 + delay 20 + createvisualtask AnimTask_BlendBattleAnimPalExclude, 5, 5, 2, 0, 16, RGB_WHITEALPHA + waitforvisualfinish + createvisualtask AnimTask_HideSwapSprite, 2, 1, 0 + createvisualtask AnimTask_BlendBattleAnimPalExclude, 5, 5, 2, 16, 0, RGB_WHITEALPHA + createvisualtask AnimTask_HorizontalShake, 5, ANIM_TARGET, 5, 14 + createvisualtask SoundTask_PlayNormalCry, 0 + createsprite gZSymbolSpriteTemplate ANIM_ATTACKER, 3, 0, 0, ANIM_ATTACKER + call ZGeyser + call ZGeyser + call ZGeyser + call ZGeyser + waitforvisualfinish + clearmonbg ANIM_ATK_PARTNER + blendoff + end +PowerConstructParticles: + createsprite gPowerConstructSpriteTemplate, ANIM_ATTACKER, 2, 40, -10, 13 + delay 3 + createsprite gPowerConstructSpriteTemplate, ANIM_ATTACKER, 2, -35, -10, 13 + delay 3 + createsprite gPowerConstructSpriteTemplate, ANIM_ATTACKER, 2, 15, -40, 13 + delay 3 + createsprite gPowerConstructSpriteTemplate, ANIM_ATTACKER, 2, -10, -32, 13 + delay 3 + createsprite gPowerConstructSpriteTemplate, ANIM_ATTACKER, 2, 25, -20, 13 + delay 3 + createsprite gPowerConstructSpriteTemplate, ANIM_ATTACKER, 2, -40, -20, 13 + delay 3 + createsprite gPowerConstructSpriteTemplate, ANIM_ATTACKER, 2, 5, -40, 13 + delay 3 + return +ZGeyser: + createsprite gThousandArrowsGreenHexTemplate ANIM_ATTACKER, 3, ANIM_ATTACKER, -4, 24 + delay 1 + createsprite gThousandArrowsGreenHexTemplate ANIM_ATTACKER, 3, ANIM_ATTACKER, 16, 24 + delay 1 + createsprite gThousandArrowsGreenHexTemplate ANIM_ATTACKER, 3, ANIM_ATTACKER, 4, 24 + delay 1 + createsprite gThousandArrowsGreenHexTemplate ANIM_ATTACKER, 3, ANIM_ATTACKER, -16, 24 + delay 1 + return gBattleAnimGeneral_UltraBurst:: loadspritegfx ANIM_TAG_ULTRA_BURST_SYMBOL @@ -28920,8 +29009,10 @@ gBattleAnimGeneral_UltraBurst:: loadspritegfx ANIM_TAG_LEAF @green loadspritegfx ANIM_TAG_ELECTRIC_ORBS @charge particles loadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT @psycho boost + loadspritegfx ANIM_TAG_HYDRO_PUMP monbg ANIM_ATTACKER setalpha 12, 8 + createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_HYDRO_PUMP, 0, 12, 12, RGB2GBA(250, 240, 230) createvisualtask AnimTask_BlendBattleAnimPal, 0xa, (F_PAL_BG | F_PAL_ADJACENT), 0x2, 0x0, 0xF, 0x0000 waitforvisualfinish createvisualtask AnimTask_ElectricChargingParticles, 2, ANIM_ATTACKER, 60, 2, 12 @ charge particles to attacker @@ -28938,18 +29029,32 @@ gBattleAnimGeneral_UltraBurst:: call LightThatBurnsTheSkyGreenSparks call LightThatBurnsTheSkyGreenSparks delay 20 + playsewithpan SE_ORB, SOUND_PAN_ATTACKER createvisualtask AnimTask_BlendBattleAnimPalExclude, 5, 5, 2, 0, 16, RGB_WHITEALPHA - createvisualtask AnimTask_HideSwapSprite, 2, 1, 0 createsprite gUltraBurstSymbolSpriteTemplate, ANIM_ATTACKER, 0x0, 0x0, 0x0, 0x0, 0x0 waitforvisualfinish + createvisualtask AnimTask_HideSwapSprite, 2, 1, 0 createvisualtask AnimTask_BlendBattleAnimPalExclude, 5, 5, 2, 16, 0, RGB_WHITEALPHA createvisualtask AnimTask_HorizontalShake, 5, ANIM_TARGET, 5, 14 - waitforvisualfinish createvisualtask SoundTask_PlayNormalCry, 0 + call LightGeyser + call LightGeyser + call LightGeyser + call LightGeyser waitforvisualfinish clearmonbg ANIM_ATK_PARTNER blendoff end +LightGeyser: + createsprite gAlphaGeyserSpriteTemplate ANIM_ATTACKER, 3, ANIM_ATTACKER, -4, 24 + delay 1 + createsprite gAlphaGeyserSpriteTemplate ANIM_ATTACKER, 3, ANIM_ATTACKER, 16, 24 + delay 1 + createsprite gAlphaGeyserSpriteTemplate ANIM_ATTACKER, 3, ANIM_ATTACKER, 4, 24 + delay 1 + createsprite gAlphaGeyserSpriteTemplate ANIM_ATTACKER, 3, ANIM_ATTACKER, -16, 24 + delay 1 + return gBattleAnimGeneral_AffectionHangedOn:: loadspritegfx ANIM_TAG_RED_HEART @@ -29272,7 +29377,7 @@ gBattleAnimMove_BreakneckBlitz:: delay 0x1 playsewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER createsprite gBreakneckBlitzHitSpriteTemplate, ANIM_TARGET, 3, 0x19, 0xffe7, 0x1, 0x1 @ +25, -25 - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0xffe6, 0x10, 0x1, 0x4 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, -26, 16, 1, 4 waitforvisualfinish createvisualtask AnimTask_RotateMonSpriteToSide, 2, 8, -512, ANIM_TARGET, 0 createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_ATTACKER, 4, 0, 12, 1 @@ -29318,48 +29423,48 @@ gBattleAnimMove_AllOutPummeling:: createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 2, 63, 1 createsprite gAllOutPummelingOnslaughtSpriteTemplate, ANIM_ATTACKER, 2, 0xffd0, 0x18, 0x0, 0x0, 0xa, 0x1, ANIM_FOOT_1, 0x1 delay 0x2 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1, 0x1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 1 playsewithpan SE_M_JUMP_KICK, SOUND_PAN_TARGET delay 0x8 createsprite gAllOutPummelingOnslaughtSpriteTemplate, ANIM_ATTACKER, 2, 0xfffa, 0x12, 0x0, 0x0, 0xa, 0x1, ANIM_CHOP, 0x1 delay 0x2 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1, 0x1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 1 playsewithpan SE_M_JUMP_KICK, SOUND_PAN_TARGET delay 0x8 createsprite gAllOutPummelingOnslaughtSpriteTemplate, ANIM_ATTACKER, 2, 0xffc0, 0x10, 0x0, 0x0, 0xa, 0x1, ANIM_FIST_1, 0x1 delay 0x2 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1, 0x1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 1 playsewithpan SE_M_JUMP_KICK, SOUND_PAN_TARGET delay 0x8 createsprite gAllOutPummelingOnslaughtSpriteTemplate, ANIM_ATTACKER, 2, 0xffd0, 0x15, 0x0, 0x0, 0xa, 0x1, ANIM_FOOT_2, 0x1 delay 0x2 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1, 0x1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 1 playsewithpan SE_M_JUMP_KICK, SOUND_PAN_TARGET delay 0x8 createsprite gAllOutPummelingOnslaughtSpriteTemplate, ANIM_ATTACKER, 2, 0xffd0, 0x14, 0x0, 0x0, 0xa, 0x1, ANIM_FIST_1, 0x1 delay 0x2 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1, 0x1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 1 playsewithpan SE_M_JUMP_KICK, SOUND_PAN_TARGET delay 0x8 createsprite gAllOutPummelingOnslaughtSpriteTemplate, ANIM_ATTACKER, 2, 0xffe0, 0x17, 0x0, 0x0, 0xa, 0x1, ANIM_CHOP, 0x1 delay 0x2 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1, 0x1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 1 playsewithpan SE_M_JUMP_KICK, SOUND_PAN_TARGET delay 0x8 createsprite gAllOutPummelingOnslaughtSpriteTemplate, ANIM_ATTACKER, 2, 0xffc0, 0x11, 0x0, 0x0, 0xa, 0x1, ANIM_FOOT_1, 0x1 delay 0x2 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1, 0x1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 1 playsewithpan SE_M_JUMP_KICK, SOUND_PAN_TARGET delay 0x8 createsprite gAllOutPummelingOnslaughtSpriteTemplate, ANIM_ATTACKER, 2, 0xffb0, 0x10, 0x0, 0x0, 0xa, 0x1, ANIM_FOOT_2, 0x1 delay 0x2 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1, 0x1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 1 playsewithpan SE_M_JUMP_KICK, SOUND_PAN_TARGET delay 0x8 createsprite gAllOutPummelingOnslaughtSpriteTemplate, ANIM_ATTACKER, 2, 0xffa0, 0x15, 0x0, 0x0, 0xa, 0x1, ANIM_CHOP, 0x1 delay 0x2 playsewithpan SE_M_JUMP_KICK, SOUND_PAN_TARGET - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1, 0x1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 1 playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET delay 0x10 createvisualtask AnimTask_WindUpLunge, 5, ANIM_ATTACKER, -24, 8, 23, 10, 40, 10 @@ -29369,7 +29474,7 @@ gBattleAnimMove_AllOutPummeling:: playsewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER delay 0xc playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0xffd0, 0x0, 0x0, 0x4 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, -48, 0, 0, 4 waitforvisualfinish delay 0x30 createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0x7 @@ -29407,10 +29512,10 @@ gBattleAnimMove_SupersonicSkystrike:: playsewithpan SE_M_FLY, SOUND_PAN_ATTACKER createsprite gFlyBallUpSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0xd, 0x150 delay 0x2 - createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0xc, 0x4, 0xfff0, 0x12 - createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x10, 0x4, 0xfff6, 0x12 - createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x1, 0xe, 0x4, 0xffee, 0x12 - createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x1, 0xc, 0x4, 0xfff0, 0x12 + createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0, 12, 4, -16, 18 + createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0, 16, 4, -10, 18 + createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 1, 14, 4, -18, 18 + createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 1, 12, 4, -16, 18 delay 0x30 createvisualtask AnimTask_DoomDesireLightBeam, 0x5 delay 0x9 @@ -29437,17 +29542,17 @@ FinishSupersonicSkystrike: playsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_ATTACKER createsprite gSupersonicSkystrikeFlySpriteTemplate, ANIM_ATTACKER, 2, 0x14 delay 0x10 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1, 0x0 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 0 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0xff00, 0x15, 0x0, 0x4 - createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0x0, 0xc, 0xffe8, 0xfff0, 0x18 @ 12, -48, -16, 24 - createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0x0, 0x10, 0xffda, 0xfff6, 0x18 @ 16, -16, -10, 24 - createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0x1, 0xe, 0xffec, 0xffee, 0x18 @ 14, -52, -18, 24 - createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0x1, 0xc, 0xffdc, 0xfff0, 0x18 @ 12, -32, -16, 24 - createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0x0, 0xc, 0xffd0, 0xfff0, 0x18 @ 12, -24, -16, 24 - createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0x0, 0x10, 0xfff0, 0xfff6, 0x18 @ 16, -38, -10, 24 - createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0x1, 0xe, 0xffcc, 0xffee, 0x18 @ 14, -20, -18, 24 - createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0x1, 0xc, 0xffe0, 0xfff0, 0x18 @ 12, -36, -16, 24 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, -256, 21, 0, 4 + createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0, 12, -24, -16, 24 @ 12, -48, -16, 24 + createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0, 16, -38, -10, 24 @ 16, -16, -10, 24 + createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 1, 14, -20, -18, 24 @ 14, -52, -18, 24 + createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 1, 12, -36, -16, 24 @ 12, -32, -16, 24 + createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0, 12, -48, -16, 24 @ 12, -24, -16, 24 + createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0, 16, -16, -10, 24 @ 16, -38, -10, 24 + createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 1, 14, -52, -18, 24 @ 14, -20, -18, 24 + createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 1, 12, -32, -16, 24 @ 12, -36, -16, 24 delay 0x30 clearmonbg ANIM_DEF_PARTNER blendoff @@ -29501,7 +29606,7 @@ FinishAcidDownpour: call AcidDownpourFlare call AcidDownpourFlare delay 0x15 - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0xfd00, 0x15, 0x0, 0x2a + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, -768, 21, 0, 42 delay 0x2c createvisualtask AnimTask_BlendBattleAnimPal, 0xa, 0x4, 0x2, 0x7, 0x0, 0xd87c invisible ANIM_TARGET @@ -29565,9 +29670,9 @@ gBattleAnimMove_TectonicRage:: delay 0x20 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER monbg ANIM_TARGET - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 4, 0x0, 0x0, 0x1, 0x2 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 4, 0, 0, ANIM_TARGET, 2 delay 0x1 - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0xff00, 0x15, 0x0, 0x4 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, -256, 21, 0, 4 delay 0xa waitforvisualfinish clearmonbg ANIM_TARGET @@ -29683,22 +29788,22 @@ gBattleAnimMove_ContinentalCrush:: playsewithpan SE_M_FLY, SOUND_PAN_ATTACKER createsprite gFlyBallUpSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0xd, 0x150 delay 0x2 - createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0xc, 0x4, 0xfff0, 0x12 - createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x10, 0x4, 0xfff6, 0x12 - createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x1, 0xe, 0x4, 0xffee, 0x12 - createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x1, 0xc, 0x4, 0xfff0, 0x12 + createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0, 12, 4, -16, 18 + createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0, 16, 4, -10, 18 + createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 1, 14, 4, -18, 18 + createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 1, 12, 4, -16, 18 delay 0x30 createvisualtask AnimTask_GetTimeOfDay, 0x2 jumpargeq 0x0 0x0 ContinentalCrushDay jumpargeq 0x0 0x2 ContinentalCrushAfternoon ContinentalCrushNight: - fadetobg BG_BLUE_SKY_NIGHT + fadetobg BG_ROCK_FIELD_NIGHT goto FinishContinentalCrush ContinentalCrushDay: - fadetobg BG_BLUE_SKY_DAY + fadetobg BG_ROCK_FIELD_DAY goto FinishContinentalCrush ContinentalCrushAfternoon: - fadetobg BG_BLUE_SKY_AFTERNOON + fadetobg BG_ROCK_FIELD_AFTERNOON FinishContinentalCrush: delay 0x18 invisible ANIM_TARGET @@ -29747,15 +29852,15 @@ FinishContinentalCrush: createvisualtask AnimTask_BlendBattleAnimPal, 0xa, 0x4, 0x2, 0x0, 0x7, 0x0000 delay 0x5 playsewithpan SE_M_EXPLOSION, SOUND_PAN_TARGET - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0xff00, 0x15, 0x0, 0x4 - createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0xc, 0xffe8, 0xfff0, 0x18 @ 12, -48, -16, 24 - createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0x10, 0xffda, 0xfff6, 0x18 @ 16, -16, -10, 24 - createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x1, 0xe, 0xffec, 0xffee, 0x18 @ 14, -52, -18, 24 - createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x1, 0xc, 0xffdc, 0xfff0, 0x18 @ 12, -32, -16, 24 - createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0xc, 0xffd0, 0xfff0, 0x18 @ 12, -24, -16, 24 - createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0x10, 0xfff0, 0xfff6, 0x18 @ 16, -38, -10, 24 - createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x1, 0xe, 0xffcc, 0xffee, 0x18 @ 14, -20, -18, 24 - createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x1, 0xc, 0xffe0, 0xfff0, 0x18 @ 12, -36, -16, 24 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, -256, 21, 0, 4 + createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0, 12, -24, -16, 24 @ 12, -48, -16, 24 + createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0, 16, -38, -10, 24 @ 16, -16, -10, 24 + createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 1, 14, -20, -18, 24 @ 14, -52, -18, 24 + createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 1, 12, -36, -16, 24 @ 12, -32, -16, 24 + createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0, 12, -48, -16, 24 @ 12, -24, -16, 24 + createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0, 16, -16, -10, 24 @ 16, -38, -10, 24 + createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 1, 14, -52, -18, 24 @ 14, -20, -18, 24 + createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 1, 12, -32, -16, 24 @ 12, -36, -16, 24 delay 0x5 createvisualtask AnimTask_BlendBattleAnimPal, 0xa, 0x4, 0x2, 0x7, 0x0, 0x0000 @undo pal change on tgt delay 0x10 @@ -29941,20 +30046,20 @@ gSavageSpinOutStringBlastSpriteTemplateSHOT: delay 0x3 return SavageSpinOutCrash_1: - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 0xfff6, 0xfff8, 0x1, 0x1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, -10, -8, ANIM_TARGET, 1 playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET - createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0xc, 0xffe8, 0xfff0, 0x18 - createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0x10, 0xffda, 0xfff6, 0x18 - createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, 0x1, 0x1, 0xe, 0xffec, 0xffee, 0x18 - createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, 0x1, 0x1, 0xc, 0xffdc, 0xfff0, 0x18 + createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0, 12, -24, -16, 24 + createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0, 16, -38, -10, 24 + createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 1, 14, -20, -18, 24 + createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 1, 12, -36, -16, 24 return SavageSpinOutCrash_2: - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 0xa, 0xfff8, 0x1, 0x1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 10, -8, ANIM_TARGET, 1 playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET - createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0xc, 0xffd0, 0xfff0, 0x18 - createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0x10, 0xfff0, 0xfff6, 0x18 - createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, 0x1, 0x1, 0xe, 0xffcc, 0xffee, 0x18 - createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, 0x1, 0x1, 0xc, 0xffe0, 0xfff0, 0x18 + createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0, 12, -48, -16, 24 + createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0, 16, -16, -10, 24 + createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 1, 14, -52, -18, 24 + createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 1, 12, -32, -16, 24 return SlowSavageSpinOutBackgroundSpeed: createvisualtask AnimTask_StartSlidingBg, 0x5, 0x0, 0xfd56, 0x0, 0xffff @-0x2aa @@ -30203,8 +30308,8 @@ FinishCorkscrewCrash: delay 0x10 stopsound playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0x0, 0x0, 0x1, 0x0 - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0xff00, 0xf, 0x0, 0x4 @ shove target down a bit + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 0, ANIM_TARGET, 0 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, -256, 15, 0, 4 @ shove target down a bit waitforvisualfinish createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0x10 playsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_TARGET @@ -30266,10 +30371,10 @@ CorkscrewCrashMetalFlare: return CorkscrewCrashSprayRocks: playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET - createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0xc, 0xffe8, 0xfff0, 0x18 - createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0x10, 0xffda, 0xfff6, 0x18 - createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, 0x1, 0x1, 0xe, 0xffec, 0xffee, 0x18 - createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, 0x1, 0x1, 0xc, 0xffdc, 0xfff0, 0x18 + createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0, 12, -24, -16, 24 + createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0, 16, -38, -10, 24 + createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 1, 14, -20, -18, 24 + createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 1, 12, -36, -16, 24 return @@ -30407,7 +30512,7 @@ gBattleAnimMove_HydroVortex:: call DiveSetUpWaterDroplets call DiveSetUpWaterDroplets call DiveSetUpWaterDroplets - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0xfd00, 0x15, 0x0, 0x1a + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, -768, 21, 0, 26 delay 0x1a invisible ANIM_TARGET waitforvisualfinish @@ -30704,31 +30809,31 @@ gBattleAnimMove_GigavoltHavoc:: createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x6, 0x0, 0x10, 0x0000 playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER createsprite gGigavoltHavocChargingSpearSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x20, 0x18, 0xbe, 0xc, 0x0, 0x1, 0x0 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x50, 0x18, 0x16, 0xc, 0x0, 0x1, 0x0 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x9c, 0x18, 0x79, 0xd, 0x0, 0x1, 0x1 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 32, 0x18, 190, 12, ANIM_ATTACKER, 1, 0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 80, 0x18, 22, 12, ANIM_ATTACKER, 1, 0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 156, 0x18, 121, 13, ANIM_ATTACKER, 1, 1 delay 0xa playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x64, 0x18, 0x3c, 0xa, 0x0, 0x1, 0x0 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0xaa, 0x18, 0x2a, 0xb, 0x0, 0x1, 0x1 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 100, 0x18, 60, 10, ANIM_ATTACKER, 1, 0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 170, 0x18, 42, 11, ANIM_ATTACKER, 1, 1 delay 0x0 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0xee, 0x18, 0xa5, 0xa, 0x0, 0x1, 0x1 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 238, 0x18, 165, 10, ANIM_ATTACKER, 1, 1 delay 0x0 delay 0x5 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x64, 0x18, 0x3c, 0xa, 0x0, 0x1, 0x0 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0xaa, 0x18, 0x2a, 0xb, 0x0, 0x1, 0x1 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 100, 0x18, 60, 10, ANIM_ATTACKER, 1, 0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 170, 0x18, 42, 11, ANIM_ATTACKER, 1, 1 delay 0x0 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0xee, 0x18, 0xa5, 0xa, 0x0, 0x1, 0x1 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 238, 0x18, 165, 10, ANIM_ATTACKER, 1, 1 delay 0x5 createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 4, 0x0, 0x0, 0x10, 0xc, 0x20, 0x14, 0x0, 0x0 createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 4, 0x0, 0x0, 0x10, 0xc, 0x60, 0x14, 0x1, 0x0 createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 4, 0x0, 0x0, 0x10, 0xc, 0xa0, 0x14, 0x0, 0x0 createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 4, 0x0, 0x0, 0x10, 0xc, 0xe0, 0x14, 0x2, 0x0 delay 0x5 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0x64, 0x18, 0x3c, 0xa, 0x0, 0x1, 0x0 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0xaa, 0x18, 0x2a, 0xb, 0x0, 0x1, 0x1 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 100, 0x18, 60, 10, ANIM_ATTACKER, 1, 0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 170, 0x18, 42, 11, ANIM_ATTACKER, 1, 1 delay 0x0 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 0xee, 0x18, 0xa5, 0xa, 0x0, 0x1, 0x1 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 238, 0x18, 165, 10, ANIM_ATTACKER, 1, 1 playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER monbg ANIM_ATTACKER playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER @@ -30937,56 +31042,56 @@ ShatteredPsycheFinish: waitforvisualfinish end ShatteredPsycheFlingOpponent: - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0xffe6, 0x10, 0x1, 0x4 @ -26, +16 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, -26, 16, 1, 4 @ -26, +16 waitforvisualfinish createsprite gShatteredPsycheReflectHitSpriteTemplate, ANIM_TARGET, 3, 0x1a, 0xfff0, 0x1, 0x1 @ 26, -16 playsewithpan SE_M_BRICK_BREAK, SOUND_PAN_TARGET delay 0x2 createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0x4 waitforvisualfinish - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x1a, 0xfff0, 0x1, 0x4 @ -26,-16 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 26, -16, 1, 4 @ -26,-16 waitforvisualfinish createsprite gShatteredPsycheReflectHitSpriteTemplate, ANIM_TARGET, 3, 0xffe6, 0x10, 0x1, 0x1 @ 26, 16 playsewithpan SE_M_BRICK_BREAK, SOUND_PAN_TARGET delay 0x2 createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0x4 waitforvisualfinish - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0x20, 0x1, 0x4 @ 0,32 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0, 32, 1, 4 @ 0,32 waitforvisualfinish createsprite gShatteredPsycheReflectHitSpriteTemplate, ANIM_TARGET, 3, 0x0, 0xffe0, 0x1, 0x1 @ 0, -32 playsewithpan SE_M_BRICK_BREAK, SOUND_PAN_TARGET delay 0x2 createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0x4 waitforvisualfinish - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0xffe0, 0x1, 0x4 @ 0,-32 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0, -32, 1, 4 @ 0,-32 waitforvisualfinish createsprite gShatteredPsycheReflectHitSpriteTemplate, ANIM_TARGET, 3, 0x0, 0x20, 0x1, 0x1 @ 0, 32 playsewithpan SE_M_BRICK_BREAK, SOUND_PAN_TARGET delay 0x2 createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0x4 waitforvisualfinish - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x1a, 0x10, 0x1, 0x4 @ 26,16 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 26, 16, 1, 4 @ 26,16 waitforvisualfinish createsprite gShatteredPsycheReflectHitSpriteTemplate, ANIM_TARGET, 3, 0xffe6, 0xfff0, 0x1, 0x1 @ -26, -16 playsewithpan SE_M_BRICK_BREAK, SOUND_PAN_TARGET delay 0x2 createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0x4 waitforvisualfinish - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0xffe6, 0xffe0, 0x1, 0x4 @ 26,-16 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, -26, -32, 1, 4 @ 26,-16 waitforvisualfinish createsprite gShatteredPsycheReflectHitSpriteTemplate, ANIM_TARGET, 3, 0x1a, 0x10, 0x1, 0x1 @ 0, 32 playsewithpan SE_M_BRICK_BREAK, SOUND_PAN_TARGET delay 0x2 createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0x5 waitforvisualfinish - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0xffe6, 0x10, 0x1, 0x4 @ -26, +16 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, -26, 16, 1, 4 @ -26, +16 waitforvisualfinish createsprite gShatteredPsycheReflectHitSpriteTemplate, ANIM_TARGET, 3, 0x1a, 0xfff0, 0x1, 0x1 @ 26, -16 playsewithpan SE_M_BRICK_BREAK, SOUND_PAN_TARGET delay 0x2 createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0x4 waitforvisualfinish - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x1a, 0xfff0, 0x1, 0x4 @ -26,-16 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 26, -16, 1, 4 @ -26,-16 waitforvisualfinish createsprite gShatteredPsycheReflectHitSpriteTemplate, ANIM_TARGET, 3, 0xffe6, 0x10, 0x1, 0x1 @ 26, 16 playsewithpan SE_M_BRICK_BREAK, SOUND_PAN_TARGET @@ -30995,28 +31100,28 @@ ShatteredPsycheFlingOpponent: waitforvisualfinish return ShatteredPsycheFlingPlayer: - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0xffe6, 0x10, 0x1, 0x4 @ -26,-16 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, -26, 16, 1, 4 @ -26,-16 waitforvisualfinish createsprite gShatteredPsycheReflectHitSpriteTemplate, ANIM_TARGET, 3, 0x1a, 0xfff0, 0x1, 0x1 @ 26, 16 playsewithpan SE_M_BRICK_BREAK, SOUND_PAN_TARGET delay 0x2 createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0x4 waitforvisualfinish - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x20, 0x0, 0x1, 0x4 @ 32,0 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 32, 0, 1, 4 @ 32,0 waitforvisualfinish createsprite gShatteredPsycheReflectHitSpriteTemplate, ANIM_TARGET, 3, 0xffe0, 0x0, 0x1, 0x1 @ playsewithpan SE_M_BRICK_BREAK, SOUND_PAN_TARGET delay 0x2 createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0x4 waitforvisualfinish - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0xffe0, 0x0, 0x1, 0x4 @ -32,0 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, -32, 0, 1, 4 @ -32,0 waitforvisualfinish createsprite gShatteredPsycheReflectHitSpriteTemplate, ANIM_TARGET, 3, 0x20, 0x0, 0x1, 0x1 @ 32, 0 playsewithpan SE_M_BRICK_BREAK, SOUND_PAN_TARGET delay 0x2 createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0x4 waitforvisualfinish - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0xa, 0x20, 0x1, 0x4 @ 10, -32 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 10, 32, 1, 4 @ 10, -32 waitforvisualfinish createsprite gShatteredPsycheReflectHitSpriteTemplate, ANIM_TARGET, 3, 0xfff6, 0x5, 0x1, 0x1 @ 10, -32 playsewithpan SE_M_BRICK_BREAK, SOUND_PAN_TARGET @@ -31458,7 +31563,7 @@ gBattleAnimMove_BlackHoleEclipse:: unloadspritegfx ANIM_TAG_WISP_ORB createsprite gBlackHoleEclipseHoleSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, ANIM_TARGET, 0x0 @ eclipse at target origin delay 0x10 - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x35, 0xffed, 0x1, 0x2 @ target down and left (instantaneously (last arg)) + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 53, -19, 1, 2 @ target down and left (instantaneously (last arg)) delay 0x2 visible ANIM_TARGET loopsewithpan SE_M_SUPERSONIC, SOUND_PAN_TARGET, 0xa, 0x5 @@ -31723,13 +31828,13 @@ gBattleAnimMove_Catastropika:: jumpargeq 0x0 0x0 CatastropikaDaytime jumpargeq 0x0 0x2 CatastropikaAfternoon CatastropikaNight: - fadetobg BG_BLUE_SKY_NIGHT + fadetobg BG_MAX_LIGHTNING goto CatastropikaFinish CatastropikaDaytime: - fadetobg BG_BLUE_SKY_DAY + fadetobg BG_MAX_LIGHTNING goto CatastropikaFinish CatastropikaAfternoon: - fadetobg BG_BLUE_SKY_AFTERNOON + fadetobg BG_MAX_LIGHTNING CatastropikaFinish: waitbgfadeout visible ANIM_ATTACKER @@ -31834,12 +31939,12 @@ CatastropikaFinish: createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0xffc0, 0xffd8, 0x25, 0x2c, 0xa0, 0x8, 0x0, 0x3 createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0xffc0, 0xffd8, 0x25, 0x2c, 0xe0, 0x8, 0x2, 0x3 delay 0xd - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0xff00, 0x15, 0x0, 0x4 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, -256, 21, 0, 4 loadspritegfx ANIM_TAG_MUD_SAND - createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0x0, 0xc, 0xffe8, 0xfff0, 0x18 @ 12, -48, -16, 24 - createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0x0, 0x10, 0xffda, 0xfff6, 0x18 @ 16, -16, -10, 24 - createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0x1, 0xe, 0xffec, 0xffee, 0x18 @ 14, -52, -18, 24 - createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0x1, 0xc, 0xffdc, 0xfff0, 0x18 @ 12, -32, -16, 24 + createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0, 12, -24, -16, 24 @ 12, -48, -16, 24 + createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0, 16, -38, -10, 24 @ 16, -16, -10, 24 + createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 1, 14, -20, -18, 24 @ 14, -52, -18, 24 + createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 1, 12, -36, -16, 24 @ 12, -32, -16, 24 loadspritegfx ANIM_TAG_LIGHTNING @thunder call CatastropikaThundering invisible ANIM_TARGET @@ -32165,12 +32270,12 @@ gBattleAnimMove_StokedSparksurfer:: jumpargeq 0x0 0x0 StokedSparksurferDay jumpargeq 0x0 0x2 StokedSparksurferAfternoon StokedSparksurferNight: - fadetobg BG_BLUE_SKY_NIGHT + fadetobg BG_MAX_LIGHTNING goto StokedSparksurferFinish StokedSparksurferAfternoon: - fadetobg BG_BLUE_SKY_AFTERNOON + fadetobg BG_MAX_LIGHTNING StokedSparksurferDay: - fadetobg BG_BLUE_SKY_DAY + fadetobg BG_MAX_LIGHTNING StokedSparksurferFinish: waitbgfadeout visible ANIM_ATTACKER @@ -32445,10 +32550,10 @@ PulverizingPancakeFinish: playsewithpan SE_M_JUMP_KICK, SOUND_PAN_TARGET createsprite gFlyBallUpSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0xd, 0x150 delay 0x2 - createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0xc, 0x4, 0xfff0, 0x22 - createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x10, 0x4, 0xfff6, 0x22 - createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x1, 0xe, 0x4, 0xffee, 0x22 - createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x1, 0xc, 0x4, 0xfff0, 0x22 + createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0, 12, 4, -16, 34 + createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0, 16, 4, -10, 34 + createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 1, 14, 4, -18, 34 + createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 1, 12, 4, -16, 34 unloadspritegfx ANIM_TAG_SPARKLE_4 unloadspritegfx ANIM_TAG_VERTICAL_HEX fadetobg BG_IN_AIR @@ -32479,7 +32584,7 @@ PulverizingPancakeFinish: createsprite gBounceBallLandSpriteTemplate, ANIM_TARGET, 3 delay 0x7 playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x1, 0x0 @big hit marker + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, ANIM_TARGET, 0 @big hit marker delay 0x0 createvisualtask AnimTask_HorizontalShake, 5, ANIM_TARGET, 4, 44 createsprite gPulverizingPancakeYellowRingSpriteTemplate, ANIM_TARGET, 3, 0x0, 0x0, 0x100, 0x0 @@ -32492,10 +32597,10 @@ PulverizingPancakeFinish: call ResetFromWhiteScreen end PulverizingPancakeDiggingRun: - createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0xc, 0x4, 0xfff0, 0x12 - createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x10, 0x4, 0xfff6, 0x12 - createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x1, 0xe, 0x4, 0xffee, 0x12 - createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x1, 0xc, 0x4, 0xfff0, 0x12 + createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0, 12, 4, -16, 18 + createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0, 16, 4, -10, 18 + createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 1, 14, 4, -18, 18 + createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 1, 12, 4, -16, 18 playsewithpan SE_M_DIG, SOUND_PAN_ATTACKER delay 0x5 return @@ -33058,7 +33163,7 @@ gBattleAnimMove_MaliciousMoonsault:: createsprite gMaliciousMoonsaultRedBounceSpriteTemplate, ANIM_TARGET, 3 delay 0x7 createsprite gMaliciousMoonsaultRedImpactSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x1, 0x0 - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0xff00, 0x15, 0x0, 0x4 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, -256, 21, 0, 4 call MaliciousMoonsaultExplosion delay 0x6 call MaliciousMoonsaultExplosion @@ -33326,20 +33431,24 @@ OceanicOperettaExplosion: gBattleAnimMove_SplinteredStormshards:: + createvisualtask AnimTask_GetLycanrocForm, 0x2 + jumpargeq 0x0 0x0 SplinteredStormshardsDayForme + jumpargeq 0x0 0x2 SplinteredStormshardsDuskForme +SplinteredStormshardsNightForme: + fadetobg BG_ROCK_FIELD_NIGHT + goto SplinteredStormshardsFinishFade +SplinteredStormshardsDayForme: + fadetobg BG_ROCK_FIELD_DAY + goto SplinteredStormshardsFinishFade +SplinteredStormshardsDuskForme: + fadetobg BG_ROCK_FIELD_AFTERNOON +SplinteredStormshardsFinishFade: + waitbgfadeout + waitforvisualfinish loadspritegfx ANIM_TAG_ROCKS @rock loadspritegfx ANIM_TAG_ICICLE_SPEAR @spear createvisualtask AnimTask_AllBattlersInvisibleExceptAttackerAndTarget, 0xA waitforvisualfinish - createvisualtask AnimTask_GetLycanrocForm, 0x2 - jumpargeq 0x0 0x1 SplinteredStormshardsNightForme -SplinteredStormshardsDayForme: - createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x0, 0xc, 0x5bff - goto SplinteredStormshardsFinishFade -SplinteredStormshardsNightForme: - createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x0, 0xc, 0x0000 -SplinteredStormshardsFinishFade: - waitforvisualfinish - setalpha 12, 8 playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER createvisualtask AnimTask_IsTargetPlayerSide, 0x2 jumpargeq 0x7 ANIM_TARGET SplinteredStormshardsByOpponent @@ -33348,7 +33457,6 @@ SplinteredStormshardsByPlayer: call SplinteredStormshardsPlayer_Rising1 delay 0x2 loadspritegfx ANIM_TAG_ROUND_SHADOW @fly - invisible ANIM_TARGET playsewithpan SE_M_FLY, SOUND_PAN_ATTACKER createsprite gSplinteredShardsFlySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0xd, 0x150 call SplinteredStormshardsPlayer_Rising1 @@ -33363,8 +33471,6 @@ SplinteredStormshardsByPlayer: call SplinteredStormshardsPlayer_Rising1 delay 16 waitforvisualfinish - visible ANIM_TARGET - call SplinteredStormshardsFixBackgroundFade waitforvisualfinish loadspritegfx ANIM_TAG_METEOR @superpower loadspritegfx ANIM_TAG_EXPLOSION @explosion @@ -33392,6 +33498,8 @@ SplinteredStormshardsEnd: waitforvisualfinish createvisualtask AnimTask_AllBattlersVisible, 0xA waitforvisualfinish + restorebg + waitbgfadein waitforvisualfinish end SplinteredStormshardsExplosionOpponent: @@ -33431,7 +33539,6 @@ SplinteredStormshardsByOpponent: call SplinteredStormshardsOpponent_Rising1 delay 0x2 loadspritegfx ANIM_TAG_ROUND_SHADOW @fly - invisible ANIM_TARGET createsprite gSplinteredShardsFlySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0xd, 0x150 call SplinteredStormshardsOpponent_Rising1 call SplinteredStormshardsOpponent_Rising2 @@ -33445,10 +33552,6 @@ SplinteredStormshardsByOpponent: call SplinteredStormshardsOpponent_Rising1 delay 16 waitforvisualfinish - visible ANIM_TARGET - call SplinteredStormshardsFixBackgroundFade - waitforvisualfinish - visible ANIM_TARGET loadspritegfx ANIM_TAG_METEOR @superpower loadspritegfx ANIM_TAG_EXPLOSION @explosion playsewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER @@ -33572,16 +33675,6 @@ SplinteredStormshardsOpponent_Rising2: createsprite gSplinteredShardsRisingSpearSpriteTemplate, ANIM_ATTACKER, 50, 0xdc, 0x40, 0xdc, 0x0, 0x30 delay 0x2 return -SplinteredStormshardsFixBackgroundFade: - createvisualtask AnimTask_GetLycanrocForm, 0x2 - jumpargeq 0x0 0x1 SplinteredStormshardsNightFormeReturn -SplinteredStormshardsDayFormeReturn: - createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0xc, 0x0, 0x5bff - goto SplinteredStormshardsFinishFadeReturn -SplinteredStormshardsNightFormeReturn: - createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0xc, 0x0, 0x0000 -SplinteredStormshardsFinishFadeReturn: - return gBattleAnimMove_LetsSnuggleForever:: @@ -33687,11 +33780,11 @@ LetsSnuggleForeverTears: createsprite gTearDropSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0x3 return LetsSnuggleForeverImpacts: - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0x0, 0xfff4, 0x1, 0x0 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, -12, ANIM_TARGET, 0 delay 0x8 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0xfff4, 0x8, 0x1, 0x0 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, -12, 8, ANIM_TARGET, 0 delay 0x8 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0xc, 0x0, 0x1, 0x0 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 12, 0, ANIM_TARGET, 0 delay 0x8 return LetsSnuggleForeverStars_1: @@ -33745,7 +33838,7 @@ gBattleAnimMove_ClangorousSoulblaze:: createsprite gClangoorousSoulblazeWhiteFlySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0xd, 0x150 delay 0x2 createvisualtask AnimTask_StartSlidingBg, 0x5, 0x0, 0xFFE0, 0x1, 0xffff - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0xfd00, 0xa, 0x0, 0x2a + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, -768, 10, 0, 42 createsprite gSlideMonToOffsetPartnerSpriteTemplate, ANIM_ATTACKER, 2, ANIM_DEF_PARTNER, 0xfd00, 0xa, 0x0, 0x2a delay 0x20 createvisualtask AnimTask_StartSlidingBg, 0x5, 0x0, 0x20, 0x1, 0xffff @@ -34010,7 +34103,7 @@ gBattleAnimMove_GuardianOfAlola:: waitforvisualfinish unloadspritegfx ANIM_TAG_THIN_RING playsewithpan SE_M_TAKE_DOWN, SOUND_PAN_ATTACKER - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0xff00, 0xf, 0x0, 0x4 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, -256, 15, 0, 4 call GuardianOfAlolaRocksPlayer delay 0xa createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x0, 0x10 @@ -34018,7 +34111,7 @@ gBattleAnimMove_GuardianOfAlola:: waitforvisualfinish delay 0xa playsewithpan SE_M_TAKE_DOWN, SOUND_PAN_ATTACKER - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0xff00, 0xf, 0x0, 0x4 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, -256, 15, 0, 4 call GuardianOfAlolaRocksPlayer delay 0xa createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x0, 0x10 @@ -34074,16 +34167,16 @@ gBattleAnimMove_GuardianOfAlola:: end GuardianOfAlolaRocksPlayer: playsewithpan SE_M_DIG, SOUND_PAN_ATTACKER - createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0xc, 0x4, 0xfff0, 0x12 - createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x10, 0x4, 0xfff6, 0x12 - createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x1, 0xe, 0x4, 0xffee, 0x12 - createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x1, 0xc, 0x4, 0xfff0, 0x12 + createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0, 12, 4, -16, 18 + createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0, 16, 4, -10, 18 + createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 1, 14, 4, -18, 18 + createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 1, 12, 4, -16, 18 return GuardianOfAlolaRocksTarget: - createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0xc, 0x4, 0xfff0, 0x12 - createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0x10, 0x4, 0xfff6, 0x12 - createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x1, 0xe, 0x4, 0xffee, 0x12 - createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x1, 0xc, 0x4, 0xfff0, 0x12 + createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0, 12, 4, -16, 18 + createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0, 16, 4, -10, 18 + createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 1, 14, 4, -18, 18 + createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 1, 12, 4, -16, 18 return GuardianOfAlolaRockGeyser: createsprite gGuardianOfAlolaDirtGeyserSpriteTemplate, ANIM_TARGET, 2, 0, 0xfffc, 0x10 @ -4, -0x10 @@ -34123,7 +34216,7 @@ gBattleAnimMove_SearingSunrazeSmash:: playsewithpan SE_M_NIGHTMARE, SOUND_PAN_ATTACKER createsprite gSearingSunrazeSmashGrowWormholeSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, ANIM_TARGET, 0x0 delay 0x10 - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x35, 0xffed, 0x1, 0x2 + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 53, -19, 1, 2 delay 0x2 loadspritegfx ANIM_TAG_METEOR @superpower visible ANIM_TARGET @@ -34352,7 +34445,7 @@ gBattleAnimMove_MenacingMoonrazeMaelstrom:: playsewithpan SE_M_NIGHTMARE, SOUND_PAN_ATTACKER createsprite gMoonrazeMaelstromWormholeSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, ANIM_TARGET, 0x0 delay 0x10 - createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x35, 0xffed, 0x1, 0x2 @ target down and left (instantaneously (last arg)) + createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 53, -19, 1, 2 @ target down and left (instantaneously (last arg)) delay 0x2 loadspritegfx ANIM_TAG_METEOR @superpower visible ANIM_TARGET diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 974a4a561c..9625033c81 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -272,7 +272,11 @@ 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 + #if B_PREFERRED_ICE_WEATHER == B_ICE_WEATHER_HAIL + setfieldweather BATTLE_WEATHER_HAIL + #else setfieldweather BATTLE_WEATHER_SNOW + #endif call BattleScript_MoveWeatherChangeRet goto BattleScript_MoveSwitch BattleScript_EffectChillyReceptionPlayAnimation: @@ -304,13 +308,17 @@ BattleScript_CheckPrimalWeather: jumpifhalfword CMP_COMMON_BITS, gBattleWeather, B_WEATHER_STRONG_WINDS, BattleScript_MysteriousAirCurrentBlowsOn return -BattleScript_MoveSwitchPursuit: +BattleScript_MoveSwitchPursuitEnd: + call BattleScript_MoveSwitchPursuitRet + end + +BattleScript_MoveSwitchPursuitRet: jumpifbattletype BATTLE_TYPE_ARENA, BattleScript_MoveSwitchEnd jumpifcantswitch SWITCH_IGNORE_ESCAPE_PREVENTION | BS_ATTACKER, BattleScript_MoveSwitchEnd printstring STRINGID_PKMNWENTBACK waitmessage B_WAIT_TIME_SHORT jumpifnopursuitswitchdmg BattleScript_MoveSwitchOpenPartyScreen - end + return BattleScript_MoveSwitch: jumpifbattletype BATTLE_TYPE_ARENA, BattleScript_MoveSwitchEnd @@ -410,12 +418,12 @@ BattleScript_MoveEffectSaltCure:: return BattleScript_SaltCureExtraDamage:: - playanimation BS_TARGET, B_ANIM_SALT_CURE_DAMAGE, NULL + playanimation BS_ATTACKER, B_ANIM_SALT_CURE_DAMAGE, NULL waitanimation call BattleScript_HurtTarget_NoString printstring STRINGID_TARGETISHURTBYSALTCURE waitmessage B_WAIT_TIME_LONG - tryfaintmon BS_TARGET + tryfaintmon BS_ATTACKER end2 BattleScript_HurtTarget_NoString: @@ -766,13 +774,13 @@ BattleScript_EffectFling:: waitmessage B_WAIT_TIME_MED jumpiflastuseditemberry BattleScript_EffectFlingConsumeBerry jumpifability BS_TARGET, ABILITY_SHIELD_DUST, BattleScript_FlingBlockedByShieldDust - jumpiflastuseditemholdeffect BS_ATTACKER, HOLD_EFFECT_FLAME_ORB, BattleScript_FlingFlameOrb - jumpiflastuseditemholdeffect BS_ATTACKER, HOLD_EFFECT_FLINCH, BattleScript_FlingFlinch - jumpiflastuseditemholdeffect BS_ATTACKER, HOLD_EFFECT_LIGHT_BALL, BattleScript_FlingLightBall - jumpiflastuseditemholdeffect BS_ATTACKER, HOLD_EFFECT_MENTAL_HERB, BattleScript_FlingMentalHerb - jumpiflastuseditemholdeffect BS_ATTACKER, HOLD_EFFECT_POISON_POWER, BattleScript_FlingPoisonBarb - jumpiflastuseditemholdeffect BS_ATTACKER, HOLD_EFFECT_TOXIC_ORB, BattleScript_FlingToxicOrb - jumpiflastuseditemholdeffect BS_ATTACKER, HOLD_EFFECT_RESTORE_STATS, BattleScript_FlingWhiteHerb + jumpiflastuseditemholdeffect HOLD_EFFECT_FLAME_ORB, 0, BattleScript_FlingFlameOrb + jumpiflastuseditemholdeffect HOLD_EFFECT_FLINCH, 0, BattleScript_FlingFlinch + jumpiflastuseditemholdeffect HOLD_EFFECT_LIGHT_BALL, 0, BattleScript_FlingLightBall + jumpiflastuseditemholdeffect HOLD_EFFECT_MENTAL_HERB, 0, BattleScript_FlingMentalHerb + jumpiflastuseditemholdeffect HOLD_EFFECT_TYPE_POWER, TYPE_POISON, BattleScript_FlingPoisonBarb + jumpiflastuseditemholdeffect HOLD_EFFECT_TOXIC_ORB, 0, BattleScript_FlingToxicOrb + jumpiflastuseditemholdeffect HOLD_EFFECT_WHITE_HERB, 0, BattleScript_FlingWhiteHerb goto BattleScript_FlingEnd BattleScript_EffectFlingConsumeBerry: savebattleritem BS_TARGET @@ -836,10 +844,6 @@ BattleScript_FlingMissed: ppreduce goto BattleScript_MoveMissedPause -BattleScript_EffectDynamicCategory:: - setdynamicmovecategory - goto BattleScript_EffectHit - BattleScript_EffectAuraWheel:: @ Aura Wheel can only be used by Morpeko jumpifspecies BS_ATTACKER, SPECIES_MORPEKO_FULL_BELLY, BattleScript_EffectHit jumpifspecies BS_ATTACKER, SPECIES_MORPEKO_HANGRY, BattleScript_EffectHit @@ -1344,7 +1348,7 @@ BattleScript_EffectPartingShotTrySpAtk: waitmessage B_WAIT_TIME_LONG BattleScript_EffectPartingShotSwitch: moveendall - goto BattleScript_MoveSwitchPursuit + goto BattleScript_MoveSwitchPursuitEnd BattleScript_EffectPowder:: attackcanceler @@ -2768,21 +2772,12 @@ BattleScript_EffectHealBlock:: goto BattleScript_MoveEnd BattleScript_EffectHitEscape:: - call BattleScript_EffectHit_Ret - jumpifmovehadnoeffect BattleScript_MoveEnd - tryfaintmon BS_TARGET - moveendto MOVEEND_ATTACKER_VISIBLE - moveendfrom MOVEEND_TARGET_VISIBLE - jumpifbattleend BattleScript_HitEscapeEnd - jumpifbyte CMP_NOT_EQUAL, gBattleOutcome, 0, BattleScript_HitEscapeEnd - jumpifemergencyexited BS_TARGET, BattleScript_HitEscapeEnd jumpiffainted BS_TARGET, FALSE, BattleScript_HitEscapeSwitch setbyte sGIVEEXP_STATE, 0 getexp BS_TARGET BattleScript_HitEscapeSwitch: - goto BattleScript_MoveSwitchPursuit -BattleScript_HitEscapeEnd: - end + call BattleScript_MoveSwitchPursuitRet + return BattleScript_EffectPlaceholder:: attackcanceler @@ -2868,34 +2863,9 @@ BattleScript_MoveMissed:: BattleScript_EffectDarkVoid:: .if B_DARK_VOID_FAIL >= GEN_7 - jumpifspecies BS_ATTACKER, SPECIES_DARKRAI, BattleScript_EffectSleep + jumpifspecies BS_ATTACKER, SPECIES_DARKRAI, BattleScript_EffectNonVolatileStatus goto BattleScript_PokemonCantUseTheMove .endif -BattleScript_EffectSleep:: - attackcanceler - attackstring - ppreduce - jumpifsubstituteblocks BattleScript_ButItFailed - jumpifstatus BS_TARGET, STATUS1_SLEEP, BattleScript_AlreadyAsleep - jumpifuproarwakes BattleScript_CantMakeAsleep - jumpifability BS_TARGET, ABILITY_INSOMNIA, BattleScript_InsomniaProtects - jumpifability BS_TARGET, ABILITY_VITAL_SPIRIT, BattleScript_InsomniaProtects - jumpifability BS_TARGET, ABILITY_COMATOSE, BattleScript_AbilityProtectsDoesntAffect - jumpifability BS_TARGET, ABILITY_PURIFYING_SALT, BattleScript_AbilityProtectsDoesntAffect - jumpifflowerveil BattleScript_FlowerVeilProtects - jumpifability BS_TARGET_SIDE, ABILITY_SWEET_VEIL, BattleScript_SweetVeilProtects - jumpifleafguardprotected BS_TARGET, BattleScript_AbilityProtectsDoesntAffect - jumpifshieldsdown BS_TARGET, BattleScript_AbilityProtectsDoesntAffect - jumpifstatus BS_TARGET, STATUS1_ANY, BattleScript_ButItFailed - jumpifsleepclause BattleScript_SleepClauseBlocked - jumpifterrainaffected BS_TARGET, STATUS_FIELD_ELECTRIC_TERRAIN, BattleScript_ElectricTerrainPrevents - jumpifterrainaffected BS_TARGET, STATUS_FIELD_MISTY_TERRAIN, BattleScript_MistyTerrainPrevents - accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE - jumpifsafeguard BattleScript_SafeguardProtected - attackanimation - waitanimation - seteffectprimary MOVE_EFFECT_SLEEP - goto BattleScript_MoveEnd BattleScript_TerrainPreventsEnd2:: pause B_WAIT_TIME_SHORT @@ -2924,7 +2894,7 @@ BattleScript_FlowerVeilProtectsRet:: waitmessage B_WAIT_TIME_LONG return -BattleScript_FlowerVeilProtects: +BattleScript_FlowerVeilProtects:: call BattleScript_FlowerVeilProtectsRet setmoveresultflags MOVE_RESULT_FAILED goto BattleScript_MoveEnd @@ -2953,15 +2923,11 @@ BattleScript_AromaVeilProtects: setmoveresultflags MOVE_RESULT_FAILED goto BattleScript_MoveEnd -BattleScript_PastelVeilProtectsRet:: +BattleScript_PastelVeilProtects: pause B_WAIT_TIME_SHORT call BattleScript_AbilityPopUp printstring STRINGID_PASTELVEILPROTECTED waitmessage B_WAIT_TIME_LONG - return - -BattleScript_PastelVeilProtects: - call BattleScript_PastelVeilProtectsRet setmoveresultflags MOVE_RESULT_FAILED goto BattleScript_MoveEnd @@ -2972,7 +2938,7 @@ BattleScript_AbilityProtectsDoesntAffectRet:: waitmessage B_WAIT_TIME_LONG return -BattleScript_AbilityProtectsDoesntAffect: +BattleScript_AbilityProtectsDoesntAffect:: call BattleScript_AbilityProtectsDoesntAffectRet setmoveresultflags MOVE_RESULT_FAILED goto BattleScript_MoveEnd @@ -3320,31 +3286,6 @@ BattleScript_RestoreHp: waitmessage B_WAIT_TIME_LONG goto BattleScript_MoveEnd -BattleScript_EffectToxic:: - attackcanceler - attackstring - ppreduce - jumpifability BS_TARGET, ABILITY_IMMUNITY, BattleScript_ImmunityProtected - jumpifability BS_TARGET, ABILITY_COMATOSE, BattleScript_AbilityProtectsDoesntAffect - jumpifability BS_TARGET, ABILITY_PURIFYING_SALT, BattleScript_AbilityProtectsDoesntAffect - jumpifability BS_TARGET_SIDE, ABILITY_PASTEL_VEIL, BattleScript_PastelVeilProtects - jumpifflowerveil BattleScript_FlowerVeilProtects - jumpifleafguardprotected BS_TARGET, BattleScript_AbilityProtectsDoesntAffect - jumpifshieldsdown BS_TARGET, BattleScript_AbilityProtectsDoesntAffect - jumpifsubstituteblocks BattleScript_ButItFailed - jumpifstatus BS_TARGET, STATUS1_POISON | STATUS1_TOXIC_POISON, BattleScript_AlreadyPoisoned - jumpifstatus BS_TARGET, STATUS1_ANY, BattleScript_ButItFailed - jumpifterrainaffected BS_TARGET, STATUS_FIELD_MISTY_TERRAIN, BattleScript_MistyTerrainPrevents - trypoisontype BS_ATTACKER, BS_TARGET, BattleScript_NotAffected - accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE - jumpifsafeguard BattleScript_SafeguardProtected - attackanimation - waitanimation - seteffectprimary MOVE_EFFECT_TOXIC - resultmessage - waitmessage B_WAIT_TIME_LONG - goto BattleScript_MoveEnd - BattleScript_AlreadyPoisoned:: setalreadystatusedmoveattempt BS_ATTACKER pause B_WAIT_TIME_LONG @@ -3353,10 +3294,10 @@ BattleScript_AlreadyPoisoned:: goto BattleScript_MoveEnd BattleScript_ImmunityProtected:: - copybyte gEffectBattler, gBattlerTarget call BattleScript_AbilityPopUp - setbyte cMULTISTRING_CHOOSER, B_MSG_ABILITY_PREVENTS_MOVE_STATUS - call BattleScript_PSNPrevention + pause B_WAIT_TIME_SHORT + printfromtable gStatusPreventionStringIds + waitmessage B_WAIT_TIME_LONG goto BattleScript_MoveEnd BattleScript_EffectAuroraVeil:: @@ -3429,16 +3370,6 @@ BattleScript_KOFail:: waitmessage B_WAIT_TIME_LONG goto BattleScript_MoveEnd -BattleScript_EffectSuperFang:: - attackcanceler - accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE - attackstring - ppreduce - typecalc - clearmoveresultflags MOVE_RESULT_SUPER_EFFECTIVE | MOVE_RESULT_NOT_VERY_EFFECTIVE - damagetohalftargethp - goto BattleScript_HitFromAtkAnimation - BattleScript_RecoilIfMiss:: printstring STRINGID_PKMNCRASHED waitmessage B_WAIT_TIME_LONG @@ -3586,78 +3517,18 @@ BattleScript_EffectAuroraVeilSuccess:: waitmessage B_WAIT_TIME_LONG goto BattleScript_MoveEnd -BattleScript_EffectPoison:: - attackcanceler - attackstring - ppreduce - jumpifability BS_TARGET, ABILITY_IMMUNITY, BattleScript_ImmunityProtected - jumpifability BS_TARGET, ABILITY_COMATOSE, BattleScript_AbilityProtectsDoesntAffect - jumpifability BS_TARGET, ABILITY_PURIFYING_SALT, BattleScript_AbilityProtectsDoesntAffect - jumpifability BS_TARGET_SIDE, ABILITY_PASTEL_VEIL, BattleScript_PastelVeilProtects - jumpifflowerveil BattleScript_FlowerVeilProtects - jumpifleafguardprotected BS_TARGET, BattleScript_AbilityProtectsDoesntAffect - jumpifshieldsdown BS_TARGET, BattleScript_AbilityProtectsDoesntAffect - jumpifsubstituteblocks BattleScript_ButItFailed - jumpifstatus BS_TARGET, STATUS1_POISON, BattleScript_AlreadyPoisoned - jumpifstatus BS_TARGET, STATUS1_TOXIC_POISON, BattleScript_AlreadyPoisoned - trypoisontype BS_ATTACKER, BS_TARGET, BattleScript_NotAffected - jumpifstatus BS_TARGET, STATUS1_ANY, BattleScript_ButItFailed - jumpifterrainaffected BS_TARGET, STATUS_FIELD_MISTY_TERRAIN, BattleScript_MistyTerrainPrevents - accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE - jumpifsafeguard BattleScript_SafeguardProtected - attackanimation - waitanimation - seteffectprimary MOVE_EFFECT_POISON - resultmessage - waitmessage B_WAIT_TIME_LONG - goto BattleScript_MoveEnd - -BattleScript_EffectParalyze:: - attackcanceler - attackstring - ppreduce - jumpifability BS_TARGET, ABILITY_LIMBER, BattleScript_LimberProtected - jumpifability BS_TARGET, ABILITY_COMATOSE, BattleScript_AbilityProtectsDoesntAffect - jumpifability BS_TARGET, ABILITY_PURIFYING_SALT, BattleScript_AbilityProtectsDoesntAffect - jumpifflowerveil BattleScript_FlowerVeilProtects - jumpifleafguardprotected BS_TARGET, BattleScript_AbilityProtectsDoesntAffect - jumpifshieldsdown BS_TARGET, BattleScript_AbilityProtectsDoesntAffect - jumpifsubstituteblocks BattleScript_ButItFailed - typecalc - jumpifmovehadnoeffect BattleScript_ButItFailed - jumpifstatus BS_TARGET, STATUS1_PARALYSIS, BattleScript_AlreadyParalyzed - jumpifelectricabilityaffected BS_TARGET, ABILITY_VOLT_ABSORB, BattleScript_VoltAbsorbHeal - clearmoveresultflags MOVE_RESULT_SUPER_EFFECTIVE | MOVE_RESULT_NOT_VERY_EFFECTIVE - tryparalyzetype BS_ATTACKER, BS_TARGET, BattleScript_NotAffected - jumpifstatus BS_TARGET, STATUS1_ANY, BattleScript_ButItFailed - jumpifterrainaffected BS_TARGET, STATUS_FIELD_MISTY_TERRAIN, BattleScript_MistyTerrainPrevents - accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE - jumpifsafeguard BattleScript_SafeguardProtected - attackanimation - waitanimation - seteffectprimary MOVE_EFFECT_PARALYSIS - resultmessage - waitmessage B_WAIT_TIME_LONG - goto BattleScript_MoveEnd - BattleScript_VoltAbsorbHeal: copybyte gBattlerAbility, gBattlerTarget tryhealquarterhealth BS_TARGET BattleScript_MonMadeMoveUseless @ Check if max hp goto BattleScript_MoveHPDrain -BattleScript_AlreadyParalyzed: +BattleScript_AlreadyParalyzed:: setalreadystatusedmoveattempt BS_ATTACKER pause B_WAIT_TIME_SHORT printstring STRINGID_PKMNISALREADYPARALYZED waitmessage B_WAIT_TIME_LONG goto BattleScript_MoveEnd -BattleScript_LimberProtected:: - copybyte gEffectBattler, gBattlerTarget - setbyte cMULTISTRING_CHOOSER, B_MSG_ABILITY_PREVENTS_MOVE_STATUS - call BattleScript_PRLZPrevention - goto BattleScript_MoveEnd - BattleScript_PowerHerbActivation: playanimation BS_ATTACKER, B_ANIM_HELD_ITEM_EFFECT printstring STRINGID_POWERHERB @@ -3846,7 +3717,7 @@ BattleScript_EffectHoldHands:: attackcanceler attackstring ppreduce - jumpifsideaffecting BS_TARGET, SIDE_STATUS_CRAFTY_SHIELD, BattleScript_ButItFailed + accuracycheck BattleScript_ButItFailed, NO_ACC_CALC_CHECK_LOCK_ON jumpifbyteequal gBattlerTarget, gBattlerAttacker, BattleScript_ButItFailed attackanimation waitanimation @@ -3884,28 +3755,6 @@ BattleScript_EffectDisable:: waitmessage B_WAIT_TIME_LONG goto BattleScript_MoveEnd -BattleScript_EffectLevelDamage:: - attackcanceler - accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE - attackstring - ppreduce - typecalc - clearmoveresultflags MOVE_RESULT_SUPER_EFFECTIVE | MOVE_RESULT_NOT_VERY_EFFECTIVE - dmgtolevel - adjustdamage - goto BattleScript_HitFromAtkAnimation - -BattleScript_EffectPsywave:: - attackcanceler - accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE - attackstring - ppreduce - typecalc - clearmoveresultflags MOVE_RESULT_SUPER_EFFECTIVE | MOVE_RESULT_NOT_VERY_EFFECTIVE - psywavedamageeffect - adjustdamage - goto BattleScript_HitFromAtkAnimation - BattleScript_EffectCounter:: attackcanceler counterdamagecalculator BattleScript_FailedFromAtkString @@ -4393,17 +4242,6 @@ BattleScript_EffectBatonPass:: switchineffects BS_ATTACKER goto BattleScript_MoveEnd -BattleScript_EffectFixedDamageArg:: - attackcanceler - accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE - attackstring - ppreduce - typecalc - clearmoveresultflags MOVE_RESULT_SUPER_EFFECTIVE | MOVE_RESULT_NOT_VERY_EFFECTIVE - setargtobattledamage - adjustdamage - goto BattleScript_HitFromAtkAnimation - BattleScript_EffectMorningSun:: BattleScript_EffectSynthesis:: BattleScript_EffectMoonlight:: @@ -4760,7 +4598,10 @@ BattleScript_EffectSpitUp:: damagecalc adjustdamage stockpiletobasedamage BattleScript_SpitUpFail - goto BattleScript_HitFromAtkAnimation + call BattleScript_Hit_RetFromAtkAnimation + tryfaintmon BS_TARGET + removestockpilecounters + goto BattleScript_SpitUpEnd BattleScript_SpitUpFail:: checkparentalbondcounter 2, BattleScript_SpitUpEnd pause B_WAIT_TIME_SHORT @@ -4783,7 +4624,16 @@ BattleScript_EffectSwallow:: attackstring ppreduce stockpiletohpheal BattleScript_SwallowFail - goto BattleScript_PresentHealTarget + attackanimation + waitanimation + orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE + healthbarupdate BS_TARGET + datahpupdate BS_TARGET + printstring STRINGID_PKMNREGAINEDHEALTH + waitmessage B_WAIT_TIME_LONG + removestockpilecounters + goto BattleScript_MoveEnd + BattleScript_SwallowFail:: pause B_WAIT_TIME_SHORT @@ -4834,35 +4684,17 @@ BattleScript_FlatterTryConfuse:: seteffectprimary MOVE_EFFECT_CONFUSION goto BattleScript_MoveEnd -BattleScript_EffectWillOWisp:: +BattleScript_EffectNonVolatileStatus:: attackcanceler attackstring ppreduce - jumpifsubstituteblocks BattleScript_ButItFailed - jumpifstatus BS_TARGET, STATUS1_BURN, BattleScript_AlreadyBurned - jumpiftype BS_TARGET, TYPE_FIRE, BattleScript_NotAffected - jumpifability BS_TARGET, ABILITY_WATER_VEIL, BattleScript_WaterVeilPrevents - jumpifability BS_TARGET, ABILITY_WATER_BUBBLE, BattleScript_WaterVeilPrevents - jumpifability BS_TARGET, ABILITY_COMATOSE, BattleScript_AbilityProtectsDoesntAffect - jumpifability BS_TARGET, ABILITY_PURIFYING_SALT, BattleScript_AbilityProtectsDoesntAffect - jumpifability BS_TARGET, ABILITY_THERMAL_EXCHANGE, BattleScript_AbilityProtectsDoesntAffect - jumpifflowerveil BattleScript_FlowerVeilProtects - jumpifleafguardprotected BS_TARGET, BattleScript_AbilityProtectsDoesntAffect - jumpifshieldsdown BS_TARGET, BattleScript_AbilityProtectsDoesntAffect - jumpifstatus BS_TARGET, STATUS1_ANY, BattleScript_ButItFailed - jumpifterrainaffected BS_TARGET, STATUS_FIELD_MISTY_TERRAIN, BattleScript_MistyTerrainPrevents + trynonvolatilestatus accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE - jumpifsafeguard BattleScript_SafeguardProtected attackanimation waitanimation - seteffectprimary MOVE_EFFECT_BURN - goto BattleScript_MoveEnd - -BattleScript_WaterVeilPrevents:: - call BattleScript_AbilityPopUp - copybyte gEffectBattler, gBattlerTarget - setbyte cMULTISTRING_CHOOSER, B_MSG_ABILITY_PREVENTS_MOVE_STATUS - call BattleScript_BRNPrevention + setnonvolatilestatus + resultmessage + waitmessage B_WAIT_TIME_LONG goto BattleScript_MoveEnd BattleScript_AlreadyBurned:: @@ -5033,7 +4865,7 @@ BattleScript_EffectWish:: attackcanceler attackstring ppreduce - trywish 0, BattleScript_ButItFailed, BattleScript_ButItFailed + trywish BattleScript_ButItFailed attackanimation waitanimation goto BattleScript_MoveEnd @@ -5116,18 +4948,8 @@ BattleScript_EffectYawn:: attackcanceler attackstring ppreduce - jumpifability BS_TARGET, ABILITY_VITAL_SPIRIT, BattleScript_PrintBattlerAbilityMadeIneffective - jumpifability BS_TARGET, ABILITY_INSOMNIA, BattleScript_PrintBattlerAbilityMadeIneffective - jumpifability BS_TARGET, ABILITY_COMATOSE, BattleScript_PrintBattlerAbilityMadeIneffective - jumpifability BS_TARGET, ABILITY_PURIFYING_SALT, BattleScript_AbilityProtectsDoesntAffect - jumpifflowerveil BattleScript_FlowerVeilProtects - jumpifleafguardprotected BS_TARGET, BattleScript_AbilityProtectsDoesntAffect - jumpifshieldsdown BS_TARGET, BattleScript_AbilityProtectsDoesntAffect - jumpifsleepclause BattleScript_SleepClauseBlocked - jumpifsubstituteblocks BattleScript_ButItFailed - jumpifsafeguard BattleScript_SafeguardProtected + trynonvolatilestatus accuracycheck BattleScript_ButItFailed, NO_ACC_CALC_CHECK_LOCK_ON - jumpifuproarwakes BattleScript_ButItFailed setyawn BattleScript_ButItFailed attackanimation waitanimation @@ -5135,8 +4957,7 @@ BattleScript_EffectYawnSuccess:: printstring STRINGID_PKMNWASMADEDROWSY waitmessage B_WAIT_TIME_LONG goto BattleScript_MoveEnd -BattleScript_PrintBattlerAbilityMadeIneffective:: - copybyte sBATTLER, gBattlerAbility + BattleScript_PrintAbilityMadeIneffective:: pause B_WAIT_TIME_SHORT call BattleScript_AbilityPopUp @@ -5424,13 +5245,8 @@ BattleScript_FaintTarget:: dofaintanimation BS_TARGET printstring STRINGID_TARGETFAINTED cleareffectsonfaint BS_TARGET - tryactivatefellstinger BS_ATTACKER tryactivatesoulheart tryactivatereceiver BS_TARGET - tryactivatemoxie BS_ATTACKER @ and chilling neigh, as one ice rider - tryactivatebeastboost BS_ATTACKER - tryactivategrimneigh BS_ATTACKER @ and as one shadow rider - tryactivatebattlebond BS_ATTACKER trytrainerslidefirstdownmsg BS_TARGET return @@ -5578,19 +5394,19 @@ BattleScript_LocalBattleLost:: jumpifbattletype BATTLE_TYPE_TRAINER_HILL, BattleScript_LocalBattleLostPrintTrainersWinText jumpifbattletype BATTLE_TYPE_EREADER_TRAINER, BattleScript_LocalBattleLostEnd jumpifhalfword CMP_EQUAL, gTrainerBattleParameter + 2, TRAINER_SECRET_BASE, BattleScript_LocalBattleLostEnd + jumpifnowhiteout BattleScript_LocalBattleLostEnd_ BattleScript_LocalBattleLostPrintWhiteOut:: + getmoneyreward .if B_WHITEOUT_MONEY >= GEN_4 jumpifbattletype BATTLE_TYPE_TRAINER, BattleScript_LocalBattleLostEnd printstring STRINGID_PLAYERWHITEOUT waitmessage B_WAIT_TIME_LONG - getmoneyreward printstring STRINGID_PLAYERWHITEOUT2 waitmessage B_WAIT_TIME_LONG end2 BattleScript_LocalBattleLostEnd:: printstring STRINGID_PLAYERLOSTTOENEMYTRAINER waitmessage B_WAIT_TIME_LONG - getmoneyreward printstring STRINGID_PLAYERPAIDPRIZEMONEY waitmessage B_WAIT_TIME_LONG end2 @@ -5820,7 +5636,7 @@ BattleScript_DamagingWeather:: printfromtable gSandStormHailDmgStringIds waitmessage B_WAIT_TIME_LONG effectivenesssound - hitanimation BS_SCRIPTING + hitanimation BS_ATTACKER goto BattleScript_DoTurnDmg BattleScript_FogEnded_Ret:: @@ -5830,13 +5646,13 @@ BattleScript_FogEnded_Ret:: return BattleScript_IceBodyHeal:: - call BattleScript_AbilityPopUpScripting - playanimation BS_SCRIPTING, B_ANIM_SIMPLE_HEAL - healthbarupdate BS_SCRIPTING - datahpupdate BS_SCRIPTING + call BattleScript_AbilityPopUp + playanimation BS_ATTACKER, B_ANIM_SIMPLE_HEAL + healthbarupdate BS_ATTACKER + datahpupdate BS_ATTACKER printstring STRINGID_ICEBODYHPGAIN waitmessage B_WAIT_TIME_LONG - end2 + end3 BattleScript_OverworldStatusStarts:: printfromtable gStartingStatusStringIds @@ -5897,12 +5713,14 @@ BattleScript_WonderRoomEnds:: BattleScript_MagicRoomEnds:: printstring STRINGID_MAGICROOMENDS waitmessage B_WAIT_TIME_LONG + setbyte gBattlerTarget, 0 +BattleScript_MagicRoomHealingItemsLoop: + copyarraywithindex gBattlerAttacker, gBattlerByTurnOrder, gBattlerTarget, 1 + tryrestorehpberry + addbyte gBattlerTarget, 1 + jumpifbytenotequal gBattlerTarget, gBattlersCount, BattleScript_MagicRoomHealingItemsLoop end2 -BattleScript_GrassyTerrainEnds:: - call BattleScript_GrassyTerrainHeals_Ret - goto BattleScript_TerrainEnds - BattleScript_TerrainEnds_Ret:: printfromtable gTerrainStringIds waitmessage B_WAIT_TIME_LONG @@ -6675,7 +6493,6 @@ BattleScript_SelectingNotAllowedCurrentMoveInPalace:: goto BattleScript_SelectingUnusableMoveInPalace BattleScript_WishComesTrue:: - trywish 1, BattleScript_WishButFullHp, BattleScript_WishButHealBlocked playanimation BS_TARGET, B_ANIM_WISH_HEAL printstring STRINGID_PKMNWISHCAMETRUE waitmessage B_WAIT_TIME_LONG @@ -6918,6 +6735,21 @@ BattleScript_PrimalReversion:: switchinabilities BS_SCRIPTING end3 +BattleScript_PowerConstruct:: + flushtextbox + printstring STRINGID_POWERCONSTRUCTPRESENCEOFMANY + waitmessage B_WAIT_TIME_SHORT + copybyte gBattlerAbility, gBattlerAttacker + call BattleScript_AbilityPopUp + handleformchange BS_ATTACKER, 0 + handleformchange BS_ATTACKER, 1 + playanimation BS_ATTACKER, B_ANIM_POWER_CONSTRUCT + waitanimation + handleformchange BS_ATTACKER, 2 + printstring STRINGID_POWERCONSTRUCTTRANSFORM + waitmessage B_WAIT_TIME_SHORT + end3 + BattleScript_UltraBurst:: flushtextbox trytrainerslidezmovemsg @@ -7002,7 +6834,7 @@ BattleScript_CudChewActivates:: pause B_WAIT_TIME_SHORTEST call BattleScript_AbilityPopUp setbyte sBERRY_OVERRIDE, 1 @ override the requirements for eating berries - consumeberry BS_SCRIPTING, FALSE + consumeberry BS_ATTACKER, FALSE setbyte sBERRY_OVERRIDE, 0 end3 @@ -7056,6 +6888,14 @@ BattleScript_BattlerFormChangeWithStringEnd3:: waitmessage B_WAIT_TIME_LONG end3 +BattleScript_IllusionOffAndTerastallization:: + call BattleScript_IllusionOff + goto BattleScript_Terastallization + +BattleScript_IllusionOffEnd3:: + call BattleScript_IllusionOff + end3 + BattleScript_IllusionOff:: spriteignore0hp TRUE playanimation BS_SCRIPTING, B_ANIM_ILLUSION_OFF @@ -7153,6 +6993,7 @@ BattleScript_DoTurnDmg: datahpupdate BS_ATTACKER tryfaintmon BS_ATTACKER checkteamslost BattleScript_DoTurnDmgEnd + tryrestorehpberry BattleScript_DoTurnDmgEnd: end2 @@ -7400,6 +7241,7 @@ BattleScript_YawnEnd: BattleScript_EmbargoEndTurn:: printstring STRINGID_EMBARGOENDS waitmessage B_WAIT_TIME_LONG + tryrestorehpberry end2 BattleScript_TelekinesisEndTurn:: @@ -7521,9 +7363,9 @@ BattleScript_AbilityRaisesDefenderStat:: waitmessage B_WAIT_TIME_LONG return -BattleScript_AbilityPopUpTarget: +BattleScript_AbilityPopUpTarget:: copybyte gBattlerAbility, gBattlerTarget -BattleScript_AbilityPopUp: +BattleScript_AbilityPopUp:: .if B_ABILITY_POP_UP == TRUE showabilitypopup BS_ABILITY_BATTLER pause 40 @@ -7618,6 +7460,37 @@ BattleScript_EmergencyExitWild:: finishaction return +BattleScript_EmergencyExitEnd2:: + pause 5 + call BattleScript_AbilityPopUp + pause B_WAIT_TIME_LONG + playanimation BS_ATTACKER, B_ANIM_SLIDE_OFFSCREEN + waitanimation + openpartyscreen BS_ATTACKER, BattleScript_EmergencyExitRetEnd2 + switchoutabilities BS_ATTACKER + waitstate + switchhandleorder BS_ATTACKER, 2 + returntoball BS_TARGET, FALSE + getswitchedmondata BS_ATTACKER + switchindataupdate BS_ATTACKER + hpthresholds BS_ATTACKER + printstring STRINGID_SWITCHINMON + switchinanim BS_ATTACKER, FALSE, TRUE + waitstate + switchineffects BS_ATTACKER +BattleScript_EmergencyExitRetEnd2: + end2 + +BattleScript_EmergencyExitWildEnd2:: + pause 5 + call BattleScript_AbilityPopUp + pause B_WAIT_TIME_LONG + playanimation BS_ATTACKER, B_ANIM_SLIDE_OFFSCREEN + waitanimation + setoutcomeonteleport BS_ATTACKER + finishaction + end2 + BattleScript_TraceActivates:: pause B_WAIT_TIME_SHORT call BattleScript_AbilityPopUpScripting @@ -7660,6 +7533,7 @@ BattleScript_PickupActivates:: call BattleScript_AbilityPopUp printstring STRINGID_XFOUNDONEY waitmessage B_WAIT_TIME_LONG + tryrestorehpberry BattleScript_PickupActivatesEnd: end3 @@ -7669,6 +7543,7 @@ BattleScript_HarvestActivates:: call BattleScript_AbilityPopUp printstring STRINGID_HARVESTBERRY waitmessage B_WAIT_TIME_LONG + tryrestorehpberry BattleScript_HarvestActivatesEnd: end3 @@ -8231,24 +8106,6 @@ BattleScript_ItemNoStatLoss:: waitmessage B_WAIT_TIME_LONG return -BattleScript_BRNPrevention:: - pause B_WAIT_TIME_SHORT - printfromtable gBRNPreventionStringIds - waitmessage B_WAIT_TIME_LONG - return - -BattleScript_PRLZPrevention:: - pause B_WAIT_TIME_SHORT - printfromtable gPRLZPreventionStringIds - waitmessage B_WAIT_TIME_LONG - return - -BattleScript_PSNPrevention:: - pause B_WAIT_TIME_SHORT - printfromtable gPSNPreventionStringIds - waitmessage B_WAIT_TIME_LONG - return - BattleScript_ObliviousPreventsAttraction:: pause B_WAIT_TIME_SHORT call BattleScript_AbilityPopUp @@ -8299,25 +8156,13 @@ BattleScript_MoveUsedPsychicTerrainPrevents:: goto BattleScript_MoveEnd BattleScript_GrassyTerrainHeals:: - call BattleScript_GrassyTerrainHeals_Ret - end2 - -BattleScript_GrassyTerrainHeals_Ret:: - setbyte gBattleCommunication, 0 -BattleScript_GrassyTerrainLoop: - copyarraywithindex gBattlerAttacker, gBattlerByTurnOrder, gBattleCommunication, 1 - checkgrassyterrainheal BS_ATTACKER, BattleScript_GrassyTerrainLoopIncrement printstring STRINGID_GRASSYTERRAINHEALS waitmessage B_WAIT_TIME_LONG orword gHitMarker, HITMARKER_IGNORE_BIDE | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_PASSIVE_DAMAGE healthbarupdate BS_ATTACKER datahpupdate BS_ATTACKER -BattleScript_GrassyTerrainLoopIncrement:: - addbyte gBattleCommunication, 1 - jumpifbytenotequal gBattleCommunication, gBattlersCount, BattleScript_GrassyTerrainLoop bicword gHitMarker, HITMARKER_IGNORE_BIDE | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_PASSIVE_DAMAGE -BattleScript_GrassyTerrainHealEnd: - return + end2 BattleScript_AbilityNoSpecificStatLoss:: pause B_WAIT_TIME_SHORT @@ -8469,10 +8314,9 @@ BattleScript_RaiseStatOnFaintingTarget:: statbuffchange MOVE_EFFECT_AFFECTS_USER | STAT_CHANGE_ALLOW_PTR, BattleScript_RaiseStatOnFaintingTarget_End copybyte gBattlerAbility, gBattlerAttacker call BattleScript_AbilityPopUp - setgraphicalstatchangevalues playanimation BS_ATTACKER, B_ANIM_STATS_CHANGE, sB_ANIM_ARG1 waitanimation - printstring STRINGID_LASTABILITYRAISEDSTAT + printfromtable gStatUpStringIds waitmessage B_WAIT_TIME_LONG BattleScript_RaiseStatOnFaintingTarget_End: return @@ -8641,6 +8485,29 @@ BattleScript_BattleBondActivatesOnMoveEndAttacker:: printstring STRINGID_ATTACKERBECAMEASHSPECIES return +BattleScript_EffectBattleBondStatIncrease:: + call BattleScript_AbilityPopUp + playanimation BS_ATTACKER, B_ANIM_STATS_CHANGE, sB_ANIM_ARG1 + setstatchanger STAT_ATK, 1, FALSE + statbuffchange MOVE_EFFECT_AFFECTS_USER | STAT_CHANGE_ALLOW_PTR, BattleScript_EffectBattleBondStatIncreaseTrySpAtk + jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, B_MSG_STAT_WONT_INCREASE, BattleScript_EffectBattleBondStatIncreaseTrySpAtk + printfromtable gStatUpStringIds + waitmessage B_WAIT_TIME_LONG +BattleScript_EffectBattleBondStatIncreaseTrySpAtk: + setstatchanger STAT_SPATK, 1, FALSE + statbuffchange MOVE_EFFECT_AFFECTS_USER | STAT_CHANGE_ALLOW_PTR, BattleScript_EffectBattleBondStatIncreaseTrySpeed + jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, B_MSG_STAT_WONT_INCREASE, BattleScript_EffectBattleBondStatIncreaseTrySpeed + printfromtable gStatUpStringIds + waitmessage B_WAIT_TIME_LONG +BattleScript_EffectBattleBondStatIncreaseTrySpeed: + setstatchanger STAT_SPEED, 1, FALSE + statbuffchange MOVE_EFFECT_AFFECTS_USER | STAT_CHANGE_ALLOW_PTR, BattleScript_EffectBattleBondStatIncreaseRet + jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, B_MSG_STAT_WONT_INCREASE, BattleScript_EffectBattleBondStatIncreaseRet + printfromtable gStatUpStringIds + waitmessage B_WAIT_TIME_LONG +BattleScript_EffectBattleBondStatIncreaseRet: + return + BattleScript_DancerActivates:: call BattleScript_AbilityPopUp waitmessage B_WAIT_TIME_SHORT @@ -9770,7 +9637,7 @@ BattleScript_DamageNonTypesContinues:: printfromtable gDamageNonTypesDmgStringIds waitmessage B_WAIT_TIME_LONG effectivenesssound - hitanimation BS_SCRIPTING + hitanimation BS_ATTACKER goto BattleScript_DoTurnDmg BattleScript_EffectTryReducePP:: @@ -9996,6 +9863,14 @@ BattleScript_EffectSteelsurge:: BattleScript_DynamaxBegins:: flushtextbox trytrainerslidedynamaxmsg + jumpifcangigantamax BS_ATTACKER, BattleScript_DynamaxBegins_GigantamaxString_01 + printstring STRINGID_TIMETODYNAMAX + waitmessage B_WAIT_TIME_MED + goto BattleScript_DynamaxBegins_SwitchIn +BattleScript_DynamaxBegins_GigantamaxString_01: + printstring STRINGID_TIMETOGIGANTAMAX + waitmessage B_WAIT_TIME_MED +BattleScript_DynamaxBegins_SwitchIn: returnatktoball pause B_WAIT_TIME_SHORT returntoball BS_SCRIPTING, TRUE @@ -10003,6 +9878,15 @@ BattleScript_DynamaxBegins:: updatedynamax playanimation BS_SCRIPTING, B_ANIM_DYNAMAX_GROWTH waitanimation + jumpifbyteequal B_SHOW_DYNAMAX_MESSAGE, FALSE, BattleScript_DynamaxBegins_End3 + jumpifcangigantamax BS_ATTACKER, BattleScript_DynamaxBegins_GigantamaxString_02 + printstring STRINGID_PKMNDYNAMAXED + waitmessage B_WAIT_TIME_LONG + goto BattleScript_DynamaxBegins_End3 +BattleScript_DynamaxBegins_GigantamaxString_02: + printstring STRINGID_PKMNGIGANTAMAXED + waitmessage B_WAIT_TIME_LONG +BattleScript_DynamaxBegins_End3: end3 BattleScript_DynamaxEnds:: @@ -10114,3 +9998,19 @@ BattleScript_SleepClausePreventsEnd:: printstring STRINGID_BLOCKEDBYSLEEPCLAUSE waitmessage B_WAIT_TIME_LONG end2 + +BattleScript_QuestionForfeitBattle:: + printselectionstring STRINGID_QUESTIONFORFEITBATTLE + forfeityesnobox BS_ATTACKER + endselectionscript + +BattleScript_ForfeitBattleGaveMoney:: + getmoneyreward +.if B_WHITEOUT_MONEY >= GEN_4 + printstring STRINGID_FORFEITBATTLEGAVEMONEY +.else + printstring STRINGID_PLAYERWHITEOUT2 +.endif + waitmessage B_WAIT_TIME_LONG + end2 + diff --git a/data/event_scripts.s b/data/event_scripts.s index a75fc48b01..db5d329b67 100644 --- a/data/event_scripts.s +++ b/data/event_scripts.s @@ -30,6 +30,7 @@ #include "constants/field_tasks.h" #include "constants/field_weather.h" #include "constants/flags.h" +#include "constants/follower_npc.h" #include "constants/frontier_util.h" #include "constants/game_stat.h" #include "constants/item.h" @@ -45,9 +46,11 @@ #include "constants/party_menu.h" #include "constants/pokedex.h" #include "constants/pokemon.h" +#include "constants/rtc.h" #include "constants/roulette.h" #include "constants/script_menu.h" #include "constants/secret_bases.h" +#include "constants/siirtc.h" #include "constants/songs.h" #include "constants/sound.h" #include "constants/species.h" @@ -760,12 +763,12 @@ Common_EventScript_PlayGymBadgeFanfare:: return Common_EventScript_OutOfCenterPartyHeal:: - fadescreen FADE_TO_BLACK + fadescreenswapbuffers FADE_TO_BLACK playfanfare MUS_HEAL waitfanfare special HealPlayerParty callnative UpdateFollowingPokemon - fadescreen FADE_FROM_BLACK + fadescreenswapbuffers FADE_FROM_BLACK return EventScript_RegionMap:: diff --git a/data/field_effect_scripts.s b/data/field_effect_scripts.s index 0425252232..98ed66a13d 100644 --- a/data/field_effect_scripts.s +++ b/data/field_effect_scripts.s @@ -80,7 +80,8 @@ gFieldEffectScriptPointers:: .4byte gFieldEffectScript_TracksBug @ FLDEFF_TRACKS_BUG .4byte gFieldEffectScript_TracksSpot @ FLDEFF_TRACKS_SPOT .4byte gFieldEffectScript_CaveDust @ FLDEFF_CAVE_DUST - + .4byte gFieldEffectScript_Defog @ FLDEFF_DEFOG + gFieldEffectScript_ExclamationMarkIcon1:: field_eff_callnative FldEff_ExclamationMarkIcon field_eff_end @@ -379,3 +380,7 @@ gFieldEffectScript_TracksSlither:: gFieldEffectScript_CaveDust:: field_eff_loadfadedpal_callnative gSpritePalette_CaveDust FldEff_CaveDust field_eff_end + +gFieldEffectScript_Defog:: + field_eff_callnative FldEff_Defog + field_eff_end diff --git a/data/maps/BattleFrontier_BattleDomeBattleRoom/scripts.inc b/data/maps/BattleFrontier_BattleDomeBattleRoom/scripts.inc index 964b64bad8..9f5a5f4d77 100644 --- a/data/maps/BattleFrontier_BattleDomeBattleRoom/scripts.inc +++ b/data/maps/BattleFrontier_BattleDomeBattleRoom/scripts.inc @@ -474,6 +474,7 @@ BattleFrontier_BattleDomeBattleRoom_EventScript_SetUpObjects:: call BattleFrontier_EventScript_SetBrainObjectGfx setobjectxyperm LOCALID_DOME_OPPONENT, 13, 9 removeobject LOCALID_DOME_OPPONENT + delay 1 addobject LOCALID_DOME_OPPONENT applymovement LOCALID_DOME_OPPONENT, BattleFrontier_BattleDomeBattleRoom_Movement_SetInvisibleFacingUp BattleFrontier_BattleDomeBattleRoom_EventScript_EndSetUpObjects:: diff --git a/data/maps/MtChimney/scripts.inc b/data/maps/MtChimney/scripts.inc index cffcc7aa7e..37fd2ccde7 100644 --- a/data/maps/MtChimney/scripts.inc +++ b/data/maps/MtChimney/scripts.inc @@ -47,13 +47,13 @@ MtChimney_EventScript_Maxie:: msgbox MtChimney_Text_MaxieYouHaventSeenLastOfMagma, MSGBOX_DEFAULT closemessage delay 30 - fadescreen FADE_TO_BLACK + fadescreenswapbuffers FADE_TO_BLACK removeobject LOCALID_MT_CHIMNEY_MAXIE removeobject LOCALID_MT_CHIMNEY_MAGMA_GRUNT_1 removeobject LOCALID_MT_CHIMNEY_TABITHA removeobject LOCALID_MT_CHIMNEY_MAGMA_GRUNT_2 setflag FLAG_HIDE_MT_CHIMNEY_TEAM_MAGMA - fadescreen FADE_FROM_BLACK + fadescreenswapbuffers FADE_FROM_BLACK setobjectxyperm LOCALID_MT_CHIMNEY_ARCHIE, 10, 12 addobject LOCALID_MT_CHIMNEY_ARCHIE call_if_eq VAR_FACING, DIR_EAST, MtChimney_EventScript_ArchieApproachPlayerEast diff --git a/data/maps/MtPyre_Summit/scripts.inc b/data/maps/MtPyre_Summit/scripts.inc index 7b0ca2d3a1..3366848341 100644 --- a/data/maps/MtPyre_Summit/scripts.inc +++ b/data/maps/MtPyre_Summit/scripts.inc @@ -41,7 +41,7 @@ MtPyre_Summit_EventScript_TeamAquaExits:: call_if_eq VAR_0x8008, 2, MtPyre_Summit_EventScript_ArchieFacePlayer2 msgbox MtPyre_Summit_Text_ArchieWeGotTheOrbLetsGo, MSGBOX_DEFAULT closemessage - fadescreen FADE_TO_BLACK + fadescreenswapbuffers FADE_TO_BLACK removeobject LOCALID_MT_PYRE_SUMMIT_ARCHIE removeobject LOCALID_MT_PYRE_SUMMIT_GRUNT_1 removeobject LOCALID_MT_PYRE_SUMMIT_GRUNT_2 @@ -50,7 +50,7 @@ MtPyre_Summit_EventScript_TeamAquaExits:: setflag FLAG_HIDE_MT_PYRE_SUMMIT_ARCHIE setflag FLAG_HIDE_MT_PYRE_SUMMIT_TEAM_AQUA fadedefaultbgm - fadescreen FADE_FROM_BLACK + fadescreenswapbuffers FADE_FROM_BLACK delay 20 setvar VAR_MT_PYRE_STATE, 1 call_if_eq VAR_0x8008, 0, MtPyre_Summit_EventScript_OldLadyApproachPlayer0 diff --git a/data/maps/SlateportCity_BattleTentBattleRoom/scripts.inc b/data/maps/SlateportCity_BattleTentBattleRoom/scripts.inc index ba73c89d06..78d5527311 100644 --- a/data/maps/SlateportCity_BattleTentBattleRoom/scripts.inc +++ b/data/maps/SlateportCity_BattleTentBattleRoom/scripts.inc @@ -47,6 +47,7 @@ SlateportCity_BattleTentBattleRoom_EventScript_EnterRoom:: factory_setopponentgfx setobjectxyperm LOCALID_SLATEPORT_TENT_BATTLE_OPPONENT, 5, 1 removeobject LOCALID_SLATEPORT_TENT_BATTLE_OPPONENT + delay 1 addobject LOCALID_SLATEPORT_TENT_BATTLE_OPPONENT applymovement LOCALID_SLATEPORT_TENT_BATTLE_OPPONENT, SlateportCity_BattleTentBattleRoom_Movement_OpponentEnter waitmovement 0 diff --git a/data/scripts/debug.inc b/data/scripts/debug.inc index 29640b2d2e..d82ce2f358 100644 --- a/data/scripts/debug.inc +++ b/data/scripts/debug.inc @@ -584,3 +584,34 @@ Debug_EventScript_FontTest:: @Debug_EventScript_InflictStatus1_Close: @ releaseall @ end + +Debug_EventScript_TellTheTime:: + callnative DebugMenu_CalculateTime + msgbox Debug_EventScript_TellTheTime_Text_0, MSGBOX_DEFAULT + waitmessage + closemessage + end + +Debug_EventScript_PrintTimeOfDay:: + callnative DebugMenu_CalculateTimeOfDay + msgbox DebugEventScript_PrintWeekday_Text_0, MSGBOX_DEFAULT + waitmessage + closemessage + end + +Debug_EventScript_FakeRTCNotEnabled:: + msgbox Debug_EventScript_FakeRTCNotEnabled_Text_0, MSGBOX_DEFAULT + waitmessage + closemessage + return + +Debug_EventScript_FakeRTCNotEnabled_Text_0: + .string "You currently do not have Fake RTC\nenabled. Please enable it in include/\lconfig/overworld.h$" + + +Debug_EventScript_TellTheTime_Text_0: + .string "Time and date:\n" + .string "{STR_VAR_1}, {STR_VAR_2}:{STR_VAR_3}$" + +DebugEventScript_PrintWeekday_Text_0: + .string "Time of day: {STR_VAR_1}$" diff --git a/data/scripts/field_move_scripts.inc b/data/scripts/field_move_scripts.inc index 30393b771d..1845e10297 100644 --- a/data/scripts/field_move_scripts.inc +++ b/data/scripts/field_move_scripts.inc @@ -293,7 +293,9 @@ EventScript_UseWaterfall:: msgbox Text_WantToWaterfall, MSGBOX_YESNO goto_if_eq VAR_RESULT, NO, EventScript_EndWaterfall msgbox Text_MonUsedWaterfall, MSGBOX_DEFAULT + hidefollowernpc dofieldeffect FLDEFF_USE_WATERFALL + callnative FollowerNPC_WarpSetEnd goto EventScript_EndWaterfall EventScript_CannotUseWaterfall:: @@ -321,12 +323,16 @@ EventScript_UseDive:: lockall checkpartymove MOVE_DIVE goto_if_eq VAR_RESULT, PARTY_SIZE, EventScript_CantDive + copyvar 0x8004 VAR_RESULT bufferpartymonnick STR_VAR_1, VAR_RESULT setfieldeffectargument 0, VAR_RESULT setfieldeffectargument 1, 1 msgbox Text_WantToDive, MSGBOX_YESNO goto_if_eq VAR_RESULT, NO, EventScript_EndDive msgbox Text_MonUsedDive, MSGBOX_DEFAULT + hidefollowernpc + setfieldeffectargument 0, VAR_0x8004 + setfieldeffectargument 1, 1 dofieldeffect FLDEFF_USE_DIVE goto EventScript_EndDive end @@ -348,8 +354,9 @@ EventScript_UseDiveUnderwater:: setfieldeffectargument 0, VAR_RESULT setfieldeffectargument 1, 1 msgbox Text_WantToSurface, MSGBOX_YESNO - goto_if_eq VAR_RESULT, NO, EventScript_EndSurface + goto_if_eq VAR_RESULT, NO, EventScript_NoSurface msgbox Text_MonUsedDive, MSGBOX_DEFAULT + hidefollowernpc dofieldeffect FLDEFF_USE_DIVE goto EventScript_EndSurface end @@ -361,6 +368,8 @@ EventScript_CantSurface:: end EventScript_EndSurface:: + callnative SetFollowerNPCSurfSpriteAfterDive +EventScript_NoSurface:: releaseall end @@ -418,3 +427,20 @@ EventScript_FailSweetScent:: Text_FailSweetScent: .string "Looks like there's nothing here…$" + +EventScript_UseDefog:: + lockall + bufferpartymonnick STR_VAR_1, VAR_RESULT + buffermovename STR_VAR_2, MOVE_DEFOG + msgbox Text_MonUsedFieldMove, MSGBOX_DEFAULT + closemessage + isfollowerfieldmoveuser VAR_0x8004 + setfieldeffectargument 3, VAR_0x8004 @ skip pose if so + setflag FLAG_SAFE_FOLLOWER_MOVEMENT + call_if_eq VAR_0x8004, TRUE, EventScript_FollowerFieldMove + waitmovement 0 + setfieldeffectargument 0, VAR_RESULT + dofieldeffect FLDEFF_DEFOG + waitstate + releaseall + end diff --git a/data/scripts/movement.inc b/data/scripts/movement.inc index a5ebc0ae7f..cf6ce3e9b2 100644 --- a/data/scripts/movement.inc +++ b/data/scripts/movement.inc @@ -43,19 +43,19 @@ Common_Movement_WalkInPlaceFasterDown: walk_in_place_faster_down step_end -Common_Movement_FaceRight: +Common_Movement_FaceRight:: face_right step_end -Common_Movement_FaceLeft: +Common_Movement_FaceLeft:: face_left step_end -Common_Movement_FaceDown: +Common_Movement_FaceDown:: face_down step_end -Common_Movement_FaceUp: +Common_Movement_FaceUp:: face_up step_end @@ -96,7 +96,7 @@ Common_Movement_Delay32: delay_16 step_end -Common_Movement_WalkUp: +Common_Movement_WalkUp:: walk_up step_end @@ -105,3 +105,64 @@ Common_Movement_WalkUp2:: walk_up walk_up step_end + +@ Follower NPC +Common_Movement_WalkUpSlow:: + walk_slow_up + step_end + +Common_Movement_WalkDownSlow:: + walk_slow_down + step_end + +Common_Movement_WalkRightSlow:: + walk_slow_right + step_end + +Common_Movement_WalkLeftSlow:: + walk_slow_left + step_end + +Common_Movement_WalkDown:: + walk_down + step_end + +Common_Movement_WalkRight:: + walk_right + step_end + +Common_Movement_WalkLeft:: + walk_left + step_end + +Common_Movement_WalkUpFast:: + walk_fast_up + step_end + +Common_Movement_WalkDownFast:: + walk_fast_down + step_end + +Common_Movement_WalkRightFast:: + walk_fast_right + step_end + +Common_Movement_WalkLeftFast:: + walk_fast_left + step_end + +Common_Movement_WalkUpFaster:: + walk_faster_up + step_end + +Common_Movement_WalkDownFaster:: + walk_faster_down + step_end + +Common_Movement_WalkRightFaster:: + walk_faster_right + step_end + +Common_Movement_WalkLeftFaster:: + walk_faster_left + step_end diff --git a/docs/CONTRIBUTING.md b/docs/CONTRIBUTING.md new file mode 100644 index 0000000000..81ddb505e9 --- /dev/null +++ b/docs/CONTRIBUTING.md @@ -0,0 +1 @@ +{{#include ../CONTRIBUTING.md}} diff --git a/docs/CREDITS.md b/docs/CREDITS.md new file mode 100644 index 0000000000..23aced71d9 --- /dev/null +++ b/docs/CREDITS.md @@ -0,0 +1 @@ +{{#include ../CREDITS.md}} diff --git a/docs/STYLEGUIDE.md b/docs/STYLEGUIDE.md new file mode 100644 index 0000000000..f53e1a2dcc --- /dev/null +++ b/docs/STYLEGUIDE.md @@ -0,0 +1,403 @@ +# Styleguide and Principles + +## Naming Conventions + +Function names and struct names should be formatted in `PascalCase`. + +```c +void ThisIsCorrect(void); + +struct MyStruct +{ + u8 firstField; + u16 secondField; + ... +}; +``` + +Variables and struct fields should be formatted in `camelCase`. + +```c +int thisIsCorrect = 0; +``` + +Global variables should be prefixed with `g`, and static variables should be +prefixed with `s`. + +```c +extern s32 gMyGlobalVariable; + +static u8 sMyStaticVariable = 0; +``` + +Macros and constants should use `CAPS_WITH_UNDERSCORES`. + +```c +#define MAX_LEVEL 100 + +enum +{ + COLOR_RED, + COLOR_BLUE, + COLOR_GREEN, +}; + +#define ADD_FIVE(x) ((x) + 5) +``` + +## Coding Style + +### Comments + +Ideally, contributions have descriptive variable, function and constant names so as to explain functionality without comments. When a comment is used, the content of the comment should explain _WHY_ a specific system or component works the way it does. + +When describing a system/component in-depth, use block comment syntax. + +```c +/* + * This is an in-depth description of the save block format. Its format is as follows: + * + * Sectors 0 - 13: Save Slot 1 + * Sectors 14 - 27: Save Slot 2 + * ... + */ +``` + +When briefly describing a function or block of code, use a single-line comments +placed on its own line. +There should be a single space directly to the right of `//`. + +```c +// This is supplemental information for the function. If there is a bunch of info, it should +// carry on to the next line. +void ProcessSingleTask(void) +{ + // Short comment describing some noteworthy aspect of the code immediately following. + ... + // Comments should be capitalized and end in a period. +} +``` + +When tagging a data structure that corresponds to an `enum` or some noteworthy +value, place the comment on the same line as the code. +```c +const u8 gPlantlikeMons[] = +{ + FALSE, // SPECIES_BULBASAUR + FALSE, // SPECIES_IVYSAUR + TRUE, // SPECIES_VENUSAUR + FALSE, // SPECIES_CHARMANDER + ... +}; +``` + +### Whitespace + +All `.c` and `.h` files should use 4 spaces--not tabs. +Assembler files (`.s)` use tabs. +Script files (`.inc)` use tabs. + +### Operators + +Assignments and comparison operators should have one space on both sides of `=`. + +```c +int i = 0; // correct +int i=0; // incorrect + +a > b // correct +a>b // incorrect +``` + +The incrementor and decrementor operators should NOT have a space. + +```c +i++; // correct +i ++; // incorrect +``` + +A control statement should have a space between them and their expressions, and the opening bracket should be on the next line. + +```c +for (...) +{ + // correct +} + +for(...) { + // incorrect +} +``` + +A `switch` statement's cases should left-align with the `switch`'s block. + +```c +switch (foo) +{ +case 0: // correct + ... + break; +} + +switch (foo) +{ + case 0: // incorrect + ... + break; +} +``` + +A single empty line should follow a block. + +```c +int MyFunction(int bar) +{ + int foo = 0; + if (bar) + foo++; + + return foo; // correct +} + +int MyFunction(int bar) +{ + int foo = 0; + if (bar) + foo++; + return foo; // incorrect +} +``` + +A chain of `if-else` statements in which any block is more than one line of +code should use braces. If all blocks are single-line, then no braces are necessary. + +```c +if (foo) // correct +{ + return 1; +} +else +{ + MyFunction(); + return 0; +} + +if (foo) // incorrect + return 1; +else +{ + MyFunction(); + return 0; +} +``` + +### Control Structures + +When comparing whether or not a value equals `0`, don't be explicit unless the +situation calls for it. + +```c +if (runTasks) // correct + RunTasks(); + +if (runTasks != 0) // incorrect + RunTasks(); + +if (!PlayerIsOutside()) // correct + RemoveSunglasses(); + +if (PlayerIsOutside() == 0) // incorrect + RemoveSunglasses(); +``` + +When writing a `for` or `while` loop with no body, use a semicolon `;` on the +same line, rather than empty braces. + +```c +for (i = 0; gParty[i].species != SPECIES_NONE; i++); // correct + +for (i = 0; gParty[i].species != SPECIES_NONE; i++) // incorrect +{ } +``` +### Inline Configs + +When adding functionality that is controlled by a config, defines should be checked within the normal control flow of the function unless a data structure requires a change at runtime. +```c +void SetCurrentDifficultyLevel(enum DifficultyLevel desiredDifficulty) +{ +#ifdef B_VAR_DIFFICULTY + return; // Incorrect +#endif + + if (desiredDifficulty > DIFFICULTY_MAX) + desiredDifficulty = DIFFICULTY_MAX; + + VarSet(B_VAR_DIFFICULTY, desiredDifficulty); +} +``` +```c +void SetCurrentDifficultyLevel(enum DifficultyLevel desiredDifficulty) +{ + if (!B_VAR_DIFFICULTY) // Correct + return; + + if (desiredDifficulty > DIFFICULTY_MAX) + desiredDifficulty = DIFFICULTY_MAX; + + VarSet(B_VAR_DIFFICULTY, desiredDifficulty); +} +``` +```c + [MOVE_VINE_WHIP] = + { + .name = COMPOUND_STRING("Vine Whip"), + .description = COMPOUND_STRING( + "Strikes the foe with\n" + "slender, whiplike vines."), + #if B_UPDATED_MOVE_DATA >= GEN_6 // Correct + .pp = 25, + #elif B_UPDATED_MOVE_DATA >= GEN_4 + .pp = 15, + #else + .pp = 10, + #endif + .effect = EFFECT_HIT, + .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 45 : 35, + }, +``` +## Data Type Sizes +When a variable number is used, the data type should generally `u32` (unsigned) or `s32` (signed). There are a few exceptions to this rule, such as: +* Values stored in the saveblock should use the smallest data type possible. +* `EWRAM` variables should use the smallest data type possible. +* Global variables / global struct members use the smallest data type possible. + +## Constants, Enums and Type Checking +Avoid using magic numbers when possible - constants help to make clear why a specific value is used. + +```c +// Incorrect + if (gimmick == 5 && mon->teraType != 0) + return TRUE; + if (gimmick == 4 && mon->shouldUseDynamax) + return TRUE; +``` + +```c +// Correct +#define TYPE_NONE 0 +#define GIMMICK_DYNAMAX 4 +#define GIMMICK_TERA 5 + + if (gimmick == GIMMICK_TERA && mon->teraType != TYPE_NONE) + return TRUE; + if (gimmick == GIMMICK_DYNAMAX && mon->shouldUseDynamax) + return TRUE; +``` + +When several numbers in sequence are used AND those values are not utilized in the saveblock, an enum is used instead. + +```c +//Correct +enum Gimmick +{ + GIMMICK_NONE, + GIMMICK_MEGA, + GIMMICK_ULTRA_BURST, + GIMMICK_Z_MOVE, + GIMMICK_DYNAMAX, + GIMMICK_TERA, + GIMMICKS_COUNT, +}; + + if (gimmick == GIMMICK_TERA && mon->teraType != TYPE_NONE) + return TRUE; + if (gimmick == GIMMICK_DYNAMAX && mon->shouldUseDynamax) + return TRUE; +``` + +When an enum is used, the enum type is used instead of a regular number type to prevent incorrectly set values. + +```c +// Incorrect +bool32 CanActivateGimmick(u32 battler, u32 gimmick) +{ + return gGimmicksInfo[gimmick].CanActivate != NULL && gGimmicksInfo[gimmick].CanActivate(battler); +} + +u32 GetCurrentDifficultyLevel(void) +{ + if (!B_VAR_DIFFICULTY) + return DIFFICULTY_NORMAL; + + return VarGet(B_VAR_DIFFICULTY); +} +``` + +```c +//Correct + +bool32 CanActivateGimmick(u32 battler, enum Gimmick gimmick) +{ + return gGimmicksInfo[gimmick].CanActivate != NULL && gGimmicksInfo[gimmick].CanActivate(battler); +} + +enum DifficultyLevel GetCurrentDifficultyLevel(void) +{ + if (!B_VAR_DIFFICULTY) + return DIFFICULTY_NORMAL; + + return VarGet(B_VAR_DIFFICULTY); +} +``` + +### Data file format + +External data files should use JSON. + +## Principles + +### Minimally Invasive + +New functionality must be as minimally invasive to existing files as possible. When a large amount of new code is introduced, it is best to isolate it in its own file. + +The [`B_VAR_DIFFICULTY`](https://patch-diff.githubusercontent.com/raw/rh-hideout/pokeemerald-expansion/pull/5337.diff) pull request is a good example of lots of new code being introduced in minimally invasive ways. + +### `UNUSED` + +If a function or data is introduced but is never called, it is designated as `UNUSED`. `UNUSED` functions should not be introduced unless neccesary. + +```c +static void UNUSED PadString(const u8 *src, u8 *dst) +{ + u32 i; + + for (i = 0; i < 17 && src[i] != EOS; i++) + dst[i] = src[i]; + + for (; i < 17; i++) + dst[i] = CHAR_SPACE; + + dst[i] = EOS; +} +``` + +### Config Philosophy + +If a branch can modifies saves, the functionality that does so must be gated behind a config, and off by default. + +If a branch has a config that performs either of the following, it should be on by default: +* improves the backend / developer quality of life +* emulates present day, modern day Pokémon + +If a branch's behavior is one that Game Freak does not have a consistent stance on, the default behavior of the config should be disussed by the maintainers. + +All other configs should be off. + +### Save Philosophy + +Until [save migration](https://discord.com/channels/419213663107416084/1108733346864963746) is implemented, branches will only merged in if they do not forcefully break existing game saves. + +When `pokemeerald-expansion` gets to a point where new functionality will require that we break saves, we will merge as many [save-breaking features](https://discord.com/channels/419213663107416084/1202774957776441427) together as possible, and increment the major version number of the project. + +# Attribution +* The majority of the styleguide was written by [garakmon](https://github.com/garakmon) as part of their [PR to pokefirered](). diff --git a/docs/SUMMARY.md b/docs/SUMMARY.md index 5c23e99ad2..11d7f76d55 100644 --- a/docs/SUMMARY.md +++ b/docs/SUMMARY.md @@ -5,6 +5,8 @@ - [Setting up WSL1 (Legacy Portion)](./legacy_WSL1_INSTALL.md) - [Run documentation site locally](local_mdbook/index.md) - [Ubuntu WSL1/WSL2](local_mdbook/ubuntu_WSL.md) +- [Contributing](./CONTRIBUTING.md) +- [Credits](./CREDITS.md) - [Tutorials]() - [What are AI Flags?](tutorials/ai_flags.md) - [How to add new AI Flags](tutorials/ai_logic.md) @@ -15,6 +17,7 @@ - [v1.6.x and earlier](tutorials/how_to_new_pokemon_1_6_0.md) - [How to use the Testing System](tutorials/how_to_testing_system.md) - [How to add new Trainer Slides](tutorials/how_to_new_trainer_slide.md) + - [Day/Night System FAQ](tutorials/dns.md) - [Changelog](./CHANGELOG.md) - [1.11.x]() - [Version 1.11.4](changelogs/1.11.x/1.11.4.md) diff --git a/docs/team_procedures/expansion_versions.md b/docs/team_procedures/expansion_versions.md index b53631bfa5..5c5cfabf00 100644 --- a/docs/team_procedures/expansion_versions.md +++ b/docs/team_procedures/expansion_versions.md @@ -139,7 +139,7 @@ If the changelog you're making is for a minor version (Eg. 1.3.0), make sure to #define EXPANSION_VERSION_MAJOR 1 #define EXPANSION_VERSION_MINOR 2 #define EXPANSION_VERSION_PATCH 3 - + // FALSE if this this version of Expansion is not a tagged commit, i.e. // it contains unreleased changes. -#define EXPANSION_TAGGED_RELEASE FALSE @@ -164,7 +164,7 @@ If the changelog you're making is for a minor version (Eg. 1.3.0), make sure to #define EXPANSION_VERSION_MINOR 2 - #define EXPANSION_VERSION_PATCH 3 + #define EXPANSION_VERSION_PATCH 4 - + // FALSE if this this version of Expansion is not a tagged commit, i.e. // it contains unreleased changes. -#define EXPANSION_TAGGED_RELEASE TRUE diff --git a/docs/team_procedures/merge_checklist.md b/docs/team_procedures/merge_checklist.md new file mode 100644 index 0000000000..ae3ff60b19 --- /dev/null +++ b/docs/team_procedures/merge_checklist.md @@ -0,0 +1,70 @@ +# Document Purpose + +This document is a guide for maintainers to account for all the reccomended steps before merging in a pull request. + + + +# Checklist + +## Is the branch's theoretical functionality in scope? +If you're not sure if a branch's functionality is [in scope](docs/team_procedures/scope.md), start a conversation on Discord to resolve. + +## Does the branch successfully compile? +From `make clean`, the branch should locally compile. + +## Do all CI tests pass? +Contributors are asked to make sure tests pass locally, but maintainers should at least wait for the CI to pass before merging. + +## Have you verified that the functionality works in game without any problems? +If functionality cannot be verified with an automated test, proof of an in game test is required. Do not be afraid to reach out to the contributor or the community to make sure something works in game as it should. + +## If the branch ports behavior from another Pokémon game, have you verified that the behavior functions as faithfully as possible? +We have always tried to make sure we can mimic the original functionality as closely as possible so as to avoid confusion with users and players. Do not be afraid to ask the contributor / community for proof if you cannot personally verify. + +## If the branch is a popular feature within the community with an established feature branch, is this using that established branch as a base? +There are situations where this should and should not happen, and should be discussed with maintainers on a case by case basis. + +## If this branch changes a function that is expected to be modified by users, is there a migration script? +Not everything needs a migration script - if you're unsure, start a discussion. + +## Should new functionality introduced by this branch be gated behind a config? +We don't have a strict definition of when configs should be used, but you can start with + +> Why SHOULDN'T this be a config? + +## Are tests written for everything that can be tested? +If you're not sure if something CAN be tested, start a discussion. Some contributors may not be capable of writing tests - we should guide them in #expansion-tests to do so. + +If any new tests are `KNOWN_FAILING`, issues should be opened describing each of the `KNOWN_FAILING` tests and our understanding of why they fail. + +## Does the branch meet our [config philosophy](/docs/STYLEGUIDE.md#config-philosophy)? + +## Does the branch meet our [saves philosophy](/docs/STYLEGUIDE.md#saves-philosophy)? + +## Does the submitted code follow the [styleguide](/docs/STYLEGUIDE.md)? +This applies to code that comes from other branches or games. + +## Is the pull request appropriately labeled? +Without labels, the CHANGELOG will not be properly formatted. For specifically the `bugfix` label, an additional label, detailing what area the bug exists in is required. + +## Is `pokeemerald-expansion` free from a merge freeze? +Our [release schedule](/docs/team_procedures/schedule.md) prevents us from merging Big Features and non-bugfixes within certain dates close to a release. Please use `/release` in the RHH Discord to clarify when these are occuring. + +# Merging + +When a feature has passed all of the items on the checklist, it is ready to be merged. From GitHub's interface, there are three different options for merging: + +## Squash and merge +This should be used for all PRs _except_ when merging from either: +* a publicly available feature branch from by the community OR +* `upcoming`, `master` or `pret/pokeemerald`. + +## Create a merge commit +Use the "Create a merge commit" to preserve history if: +- The branch is a publicly available feature branch from the community +- It's a upstream `pret` merge +- It's a `master` to `upcoming` merge +- It's a Release merge + +## Rebase and merge +We do not use this ever. diff --git a/docs/team_procedures/schedule.md b/docs/team_procedures/schedule.md index c23d8a5105..c689e5b454 100644 --- a/docs/team_procedures/schedule.md +++ b/docs/team_procedures/schedule.md @@ -12,8 +12,13 @@ Releases that focus primarily on bugfixes or improvements to the test system. Pa PRs with the Github label [`type: big feature`](https://github.com/rh-hideout/pokeemerald-expansion/issues?q=sort%3Aupdated-desc+is%3Aopen+label%3A%22type%3A+big+feature%22) will NOT be merged until after the next Minor Release. ### Merge Freeze (14 days to the next Minor Release) -PRs that DO NOT have the Github labels [`bugfix`](https://github.com/rh-hideout/pokeemerald-expansion/issues?q=sort%3Aupdated-desc+label%3Abugfix) or [`type: cleanup`](https://github.com/rh-hideout/pokeemerald-expansion/issues?q=sort%3Aupdated-desc+label%3A%22type%3A+cleanup%22+) will NOT be merged until after the next Minor Release. - +Pull Requests that **DO NOT** have one of the following Github labels: +- [`bugfix`](https://github.com/rh-hideout/pokeemerald-expansion/issues?q=sort%3Aupdated-desc+label%3Abugfix) +- [`type: cleanup`](https://github.com/rh-hideout/pokeemerald-expansion/issues?q=sort%3Aupdated-desc+label%3A%22type%3A+cleanup%22+) +- [`type: credits`](https://github.com/rh-hideout/pokeemerald-expansion/issues?q=sort%3Aupdated-desc+label%3A%22type%3A+credits%22+) +- [`type: documentation`](https://github.com/rh-hideout/pokeemerald-expansion/issues?q=sort%3Aupdated-desc+label%3A%22type%3A+documentation%22+) +- [`category: battle-tests`](https://github.com/rh-hideout/pokeemerald-expansion/issues?q=sort%3Aupdated-desc+is%3Aopen+label%3A%22category%3A+battle-tests%22) +will NOT be merged until after the next Minor Release. ### Sample Schedule | Major | Minor | Patch | Type | Goal Date | diff --git a/docs/team_procedures/scope.md b/docs/team_procedures/scope.md index 3293cea6dc..70739686fc 100644 --- a/docs/team_procedures/scope.md +++ b/docs/team_procedures/scope.md @@ -5,9 +5,9 @@ This document is a guide for contributors and Senate to decide if a feature is w # Definitions * **Showdown Supported (SS)**: A core series game who's metagame can be played on Showdown. - * Includes every [core series game](https://bulbapedia.bulbagarden.net/wiki/Core_series#List_of_core_series_games) except Pokémon Legends: Arceus. + * Includes every [core series game](https://bulbapedia.bulbagarden.net/wiki/Core_series#List_of_core_series_games) except Pokémon Legends: Arceus. * Does not include [spin-off games](https://bulbapedia.bulbagarden.net/wiki/Spin-off_Pokémon_games) such as Pokémon Colosseum, Pokémon XD, Pokémon Trozei!, etc. -* **Base Expansion Version**: "A .gba file built from an unmodified `master` or `upcoming` branch of `pokeemerald-expansion`. +* **Base Expansion Version**: "A .gba file built from an unmodified `master` or `upcoming` branch of `pokeemerald-expansion`. * **Vanilla Emerald Version**: A .gba file built from an unmodified `master` branch of pret's `pokeemerald`. # Guidelines @@ -19,14 +19,14 @@ A pull request meets the scope criteria if: ## In Scope Categories 1. **SS Species**: Adds Species that have appeared in a Showdown-supported title. Includes follower sprites for all defined species including battle-only ones (ie. Megas) -2. **SS Moves**: Adds Moves and Move Animations that have appeared in a Showdown-supported title -3. **SS Abilities**: Adds Abilities that have appeared in a Showdown-supported title -4. **SS Items**: Adds Items that have appeared in a Showdown-supported title +2. **SS Moves**: Adds Moves and Move Animations that have appeared in a Showdown-supported title +3. **SS Abilities**: Adds Abilities that have appeared in a Showdown-supported title +4. **SS Items**: Adds Items that have appeared in a Showdown-supported title 5. **SS Gimmicks**: Adds Gimmicks that have appeared in a Showdown-supported title (Dynamax, Mega Evolution, etc.) 6. **SS Battle Types**: Adds Special Battle Types that have appeared in a Showdown-supported title (Triple battles, etc.) 7. **SS Battle Mechanics**: Adds mechanical battle changes that have appeared in a Showdown-supported title, and allow developers to choose which generation suits them where applicable 8. **Battle AI Behaviour**: Improvements towards the capability of a human competitive player, and unique or interesting behaviours otherwise -9. **Base Link Compatibility**: The ability for two Base Expansion Version's to connect, trade, and battle one another +9. **Base Link Compatibility**: The ability for two Base Expansion Version's to connect, trade, and battle one another 10. **SS Overworld Features**: Add overworld changes / additions from Showdown-supported Pokémon titles (followers, raids, sideways stairs, etc.) 11. **SS Menu Features**: Add menu changes / additions from Showdown-supported Pokémon titles (type effectivness indicator, PC functions, etc.) 12. **Speed Up**: Optimize code to run more efficiently, take up less space, and work better overall to improves the developer and / or player experience @@ -41,7 +41,7 @@ A pull request meets the scope criteria if: 3. **Non-SS Abilities**: Adds Abilities that have NOT appeared in a Showdown-supported title 4. **Non-SS Items**: Adds Items that have NOT appeared in a Showdown-supported title 5. **Non-SS Gimmicks**: Adds Gimmicks that have NOT appeared in a Showdown-supported title (Showdown's Other Metagames, etc.) -6. **Non-SS Battle Types**: Adds Special Battle Types that have NOT appeared in a Showdown-supported title +6. **Non-SS Battle Types**: Adds Special Battle Types that have NOT appeared in a Showdown-supported title 7. **Overworld Maps**: Adds overworld maps from either Showdown-supported titles or non-Showdown-supported titles 8. **Duplicate UIs**: Adds additional user interface that covers the same functionality of an existing feature (HGSS Pokédex, BW Summary Screen, etc.) 9. **Vanilla Link Compatibility**: The ability for Base Expansion Version and Vanilla Emerald Version to connect, trade, and battle one another @@ -50,8 +50,8 @@ A pull request meets the scope criteria if: Pull Requests that fall into this category are not in scope by default and should be brought up to maintainers, who will discuss and vote as to whether or not the feature is considered in scope. Considerations for acceptance may include invasiveness of implementation, popularity, ease of maintenance, etc. -1. **Developer Ease of Use**: Lowers barrier of entry for developers to use existing behavior -2. **Fangame Features**: Adds a popular feature from other fangames +1. **Developer Ease of Use**: Lowers barrier of entry for developers to use existing behavior +2. **Fangame Features**: Adds a popular feature from other fangames 3. **Popular Non-SS Features**: Exceptions can be made for uniquely popular or requested features (Drowsy, PLA Legend Plate, etc.) 4. **External Program**: External programs like poryscript, porymoves, etc. 5. **Intergenerational Feature Compatibility**: Addresses limitations and issues resulting from including all generational behaviours in a GBA native title, and extrapolation of features no longer supported by GameFreak diff --git a/docs/tutorials/ai_flags.md b/docs/tutorials/ai_flags.md index d0ff706143..b0ecc8d77a 100644 --- a/docs/tutorials/ai_flags.md +++ b/docs/tutorials/ai_flags.md @@ -179,3 +179,9 @@ AI will determine whether it would switch out in the player's situation or not, ## `AI_FLAG_PREDICT_INCOMING_MON` This flag requires `AI_FLAG_PREDICT_SWITCH` to function. If the AI predicts that the player will switch, this flag allows the AI to run its move scoring calculation against the Pokémon it expects the player to switch into, instead of the Pokémon that it expects to switch out. + +## `AI_FLAG_PREDICT_MOVE` +AI will predict what move the player is going to use based on what move it would use in the same situation. Generally works best if also using `AI_FLAG_OMNISCIENT`. + +## `AI_FLAG_PP_STALL_PREVENTION` +This flag aims to prevent the player from PP stalling the AI by switching between immunities. The AI mon's move scores will slowly decay for absorbed moves over time, eventually making its moves unpredictable. More detailed control for this behaviour can be customized in the `ai.h` config file. diff --git a/docs/tutorials/dns.md b/docs/tutorials/dns.md new file mode 100644 index 0000000000..6fb5e92c7e --- /dev/null +++ b/docs/tutorials/dns.md @@ -0,0 +1,62 @@ +## Day/Night system FAQ + +### Q: How do I disable DNS? +A: Set `OW_ENABLE_DNS` to `FALSE` in `include/config/overworld.h`. + +### Q: What map changes should be made for DNS? +A: By default, the only Hoenn map changes that need to be made are to edit the Lavaridge Town map to change the metatiles the two old ladies are on in the hot springs to be the normal hot spring water tile. This is to avoid a visual bug from when `OW_OBJECT_VANILLA_SHADOWS` is FALSE. + +However, by default no maps have lighting effects of any kind. The rest of this tutorial is to aid in adding lighting effects. + +If you intend to use vanilla maps and have not already edited them, revert commit [a5b079d833f18f66ebd53ac77f00227ae4a1f389](https://github.com/rh-hideout/pokeemerald-expansion/pull/6562/commits/a5b079d833f18f66ebd53ac77f00227ae4a1f389). This commit includes a lot of tileset, metatile, and palette changes to accommodate light-blending, and applies `OBJ_EVENT_GFX_LIGHT_SPRITE` where they make sense. + +If you _have_ edited vanilla maps, the merge conflicts from reverting that commit will cause problems. If you are using vanilla maps, manually copy some of the tileset changes, `.pal`, and `.pla` files in your branch, and begin rebuilding your metatiles to have windows use the palettes that have a `.pla` for light blending the correct color slots. [Triple-layer metatiles](https://github.com/pret/pokeemerald/wiki/Triple-layer-metatiles) are highly recommended. + +You will also want to add the lighting object events from that commit. + +If you are not using Hoenn maps, the primary concern is that you do not use the exact same palette indices for colors you want to be darkened during night time and colors you want to light up. Err towards not light blending a color if you aren't sure how to avoid conflicts. + +When writing map scripts, `fadescreenswapbuffers` should be preferred over `fadescreen`. This is to avoid odd behavior from the GBA's limitations in alpha blending. + +### Q: How do I make lightbulbs glow? + +![Rustboro before adding lamp object events](/docs/tutorials/img/dns/without_lamp.png) +![Rustboro after adding lamp object events](/docs/tutorials/img/dns/with_lamp.png) + +A: Making lamps glow is not part of the tileset itself. Instead, place certain object events on top of where you desire a glowing effect. + +These object events should use `OBJ_EVENT_GFX_LIGHT_SPRITE` and then as their `trainer_sight_or_berry_tree_id` (called Sight Radius/Berry Tree ID in porymap), use `LIGHT_TYPE_BALL` for round lights (such as candles or gas lamps), `LIGHT_TYPE_PKMN_CENTER_SIGN` over a Pokémon Center sign, or `LIGHT_TYPE_POKE_MART_SIGN` over a Pokémart sign. + +### Q: How do I mark certain colors in a palette as light-blended? +A: Create a `.pla` file in the same folder as the `.pal` with the same name. This can be done on any kind of palette; the commit to revert listed up above only applies it to tilesets, but you could easily do it for object events as well. Of note, there is a [commit reverted for being out of scope](https://github.com/rh-hideout/pokeemerald-expansion/pull/6562/commits/348f5967ac8d383c827b415e1040234a3f28626f) to make a follower Ampharos's tail glow. + +In this file you can enter color indices [0,15] +on separate lines to mark those colors as being light-blended, i.e: + +`06.pla:` +``` +# A comment +0 # if color 0 is listed, uses it to blend with instead of the default! +1 +9 +10 +``` + +During the day time, these color indices appear as normal, but will be blended with either yellow or the 0 index at night. These indices should only be used for things you expect to light up. If you are using [porytiles](https://github.com/grunt-lucas/porytiles/wiki), palette overrides and using slight alterations to a color will aid you in avoiding color conflicts where the wrong index is assigned. + +![Rustboro gym after light-blending the windows](/docs/tutorials/img/dns/window_lights.png) + +The windows appear as normal during the day time (blue) and light up in the night. These use the default color. + +### Q: How do I return to using regular shadows? +A: Set `OW_OBJECT_VANILLA_SHADOWS` to `TRUE` in `include/config/overworld.h`. + +### Q: What graphical errors are likely to occur while using DNS? +A: If you have `OW_POPUP_GENERATION` set to `GEN_5` and `OW_POPUP_BW_ALPHA_BLEND` set to `TRUE`, you may have color errors during map popups. This is due to the GBA being severely limited in use of color blending and having both the overworld blended and the popup blended is difficult. + +If you have `OW_OBJECT_VANILLA_SHADOWS` set to `TRUE`, this will also cause visual errors. + +Any other graphical error should be reported. + +### Q: How do I disable shadows for certain locations? +A: Shadows can be disabled for certain locations by modifying the `CurrentMapHasShadows` function in `src/overworld.c`. diff --git a/docs/tutorials/how_to_code_entry.md b/docs/tutorials/how_to_code_entry.md index 19219835d9..51fe0d6f7d 100644 --- a/docs/tutorials/how_to_code_entry.md +++ b/docs/tutorials/how_to_code_entry.md @@ -46,9 +46,9 @@ void GetCodeFeedback(void) gSpecialVar_Result = 1; + else if (!StringCompare(gStringVar2, sText_CaughtEmAll)) + { -+ // TODO ++ // TODO + gSpecialVar_Result = 2; -+ } ++ } else gSpecialVar_Result = 0; } @@ -71,7 +71,7 @@ void GetCodeFeedback(void) + GetSetPokedexFlag(i + 1, FLAG_SET_CAUGHT); + } gSpecialVar_Result = 2; - } + } else gSpecialVar_Result = 0; } diff --git a/docs/tutorials/how_to_follower_npc.md b/docs/tutorials/how_to_follower_npc.md new file mode 100644 index 0000000000..e55e6d8149 --- /dev/null +++ b/docs/tutorials/how_to_follower_npc.md @@ -0,0 +1,58 @@ +# How to Use Follower NPCs +*Written by Bivurnum* +*gif by ghoulslash* + +![follower-npc](/docs/tutorials/img/follower_npc/follower-npc.gif) + +## Configs +The configs for follower NPCs can be found in [include/config/follower_npc.h](https://github.com/rh-hideout/pokeemerald-expansion/blob/upcoming/include/config/follower_npc.h). + +* `FNPC_ENABLE_NPC_FOLLOWERS`: This must be set to `TRUE` in order to enable follower NPCs. It is `FALSE` by default as it adds some size to the save block. +* `FNPC_FLAG_HEAL_AFTER_FOLLOWER_BATTLE`: The player's party can be automatically healed after every partner battle. Set it to a flag to toggle it on/off with scripts, or set it to `FNPC_ALWAYS` to have it happen every time. +* `FNPC_FLAG_PARTNER_WILD_BATTLES`: The battle partner can join the player for wild battles. Set it to a flag to toggle it on/off with scripts, or set it to `FNPC_ALWAYS` to have it happen every time. +* `FNPC_NPC_FOLLOWER_WILD_BATTLE_VS_2`: Wild battles with a battle partner default to two wild Pokémon appearing. You can set this to `FALSE` to make only one wild Pokémon appear. +* `FNPC_NPC_FOLLOWER_PARTY_PREVIEW`: By default, a preview of the player's and partner's teams will be shown at the start of every trainer battle. Set this to `FALSE` to disable this feature. +* `FNPC_FACE_NPC_FOLLOWER_ON_DOOR_EXIT`: If `TRUE` the player will turn to face the follower when they exit a doorway. +* `FNPC_NPC_FOLLOWER_SHOW_AFTER_LEAVE_ROUTE`: If `TRUE` the follower will walk out of the player automatically after using Fly, Teleport, or Escape Rope. + +## Set the Follower +The `setfollowernpc` macro will turn the specified object into an NPC follower. It requires the object id, the [follower flags](#follower-flags), and optionally a custom script and a [battle partner](#battle-partner). If you do not include a custom script name (or you set it to `0`), the NPC follower will default to their normal interaction script. If there is a follower Pokémon present, it will be returned to its Pokeball until the NPC follower is destroyed. + +Here's an example: +`setfollowernpc 3, FNPC_ALL, MyScript_Eventscript_CustomFollowerScript, PARTNER_STEVEN` +This would turn object number 3 on the current map into an NPC follower, give them access to all following behaviors, run that custom script when the player interacts with them, and adds the Steven battle partner to the follower ([more on this later](#battle-partner)). + +The object ***MUST*** have an event flag or the NPC follower will not be created! + +## Follower Flags +These are required to tell the game what behavior you want the NPC follower to have. They are defined in [include/constants/follower_npc.h](https://github.com/rh-hideout/pokeemerald-expansion/blob/upcoming/include/constants/follower_npc.h). The second list of flags is the same as the first, but with shortened names to make them easier to type when scripting. The first 7 flags in the list are individual behaviors, whereas the remaining three are bundles of flags. For example, if you use `FNPC_SURF` in `setfollowernpc`, the NPC follower will be able to Surf behind the player. If you use `FNPC_ALL_WATER` instead, the NPC follower will be able to Dive and go up Waterfalls in addition to being able to Surf. Feel free to add your own custom bundles of flags to the file to meet your needs. + +If the NPC doesn't have unique running frames, you should not use the `FOLLOWER_NPC_FLAG_HAS_RUNNING_FRAMES`(`FNPC_RUNNING`) flag for them, as this will cause visual glitching. If the flag is not used, the follower will simply use their regular walking animation frames, just sped up. The only objects currently in the game that have unique running frames are the player and rival characters, so the running frames flag should be used for those. + +To make sure the NPC follower uses the correct animation frames, you should add an entry to `gFollowerAlternateSprites` in [include/follower_npc_alternate_sprites.h](https://github.com/rh-hideout/pokeemerald-expansion/blob/upcoming/include/follower_npc_alternate_sprites.h). Only do this if your object has distinct animation frames for different behaviors (running, biking, surfing, etc). Follow the templates for Rival May and Rival Brendan that already exist there. + +## Follower Movements +You can use the `applymovement` macro on an NPC follower by using `OBJ_EVENT_ID_NPC_FOLLOWER` for the object id. This is convenient for making the NPC follower walk off-screen before destroying them. If an NPC follower is not immediately next to the player while the controls aren't locked, it will try to take steps to get back into position as the player moves, sometimes walking through impassable areas (like through the middle of buildings). + +You can also use `facefollowernpc` to make both the player and the NPC follower face each other. + +> [!NOTE] +> The existing vanilla movement scripts do not take NPC followers into account. Other NPCs may walk into the follower or the follower may get left behind. If you want follower NPCs to work with these existing scripts, you will need to add your own handling for them. The `hidefollowernpc` macro can be particularly useful for this. + +## Check for Follower +You can use the `checkfollowernpc` macro to check whether or not an NPC follower currently exists. It will set `VAR_RESULT` to `TRUE` if an NPC follower exists, otherwise it will be set to `FALSE`. + +## Hide the Follower +The `hidefollowernpc` macro makes the NPC follower walk into the player and be hidden. The game will wait until the movement is finished before continuing with the script. There is an optional parameter that can be used to set the desired walk speed for the movement. It can be from `0` (slowest) to `3` (fastest). If a walk speed is not specified, it will default to the normal walk speed. The NPC follower will reappear the next time the player takes a step (outside of scripts). + +## Destroy the Follower +The `destroyfollowernpc` macro acts similarly to `removeobject`. It removes the NPC follower object instantly and sets their flag. If you have Pokémon followers enabled, the Pokémon will reappear the next time the player takes a step. + +## Battle Partner +If you assign a battle partner to the NPC follower, that partner will fight alongside the player in all trainer battles while the follower is present. This turns all battles into multi battles, whether against one opponent or two. + +You can use any battle partner that has been defined in [include/constants/battle_partner.h](https://github.com/rh-hideout/pokeemerald-expansion/blob/upcoming/include/constants/battle_partner.h). The partners' information and Pokémon teams can be set in [src/data/battle_partners.party](https://github.com/rh-hideout/pokeemerald-expansion/blob/upcoming/src/data/battle_partners.party). + +To change the battle partner of an existing NPC follower, you can use the `changefollowerbattler` macro with the desired partner ID. If you change the ID to `0`, the NPC follower will not participate in any battles until you change it back to a valid partner ID. + +Keep in mind that only the first 3 Pokémon in the player's party will participate in multi battles. The other three party members are temporarily replaced with the partner's Pokémon. This means the last three Pokémon in the player's party will not receive any experience points (even from the EXP Share). diff --git a/docs/tutorials/how_to_new_trainer_slide.md b/docs/tutorials/how_to_new_trainer_slide.md index 67c29a437d..49c3e80f3e 100644 --- a/docs/tutorials/how_to_new_trainer_slide.md +++ b/docs/tutorials/how_to_new_trainer_slide.md @@ -118,7 +118,7 @@ The function that determines if a Slide should play has different function for m + if (IsSlideInitalizedOrPlayed(slideId)) + return; + -+ if (GetBattlerSide(target) == B_SIDE_OPPONENT) ++ if (!IsOnPlayerSide(target)) + return; + + InitalizeTrainerSlide(slideId); diff --git a/docs/tutorials/how_to_time_of_day_encounters.md b/docs/tutorials/how_to_time_of_day_encounters.md new file mode 100644 index 0000000000..85cd2ac09a --- /dev/null +++ b/docs/tutorials/how_to_time_of_day_encounters.md @@ -0,0 +1,813 @@ +# Time-Based Encounters Tutorial + +## Table of Contents: +- [What is the Time-Based Encounters feature?](#what-is-the-time-based-encounters-feature) + - [Sounds rad, how do I add it to my romhack?](#sounds-rad-how-do-i-add-it-to-my-romhack) + - [I've never added one by hand, but I want to!](#ive-never-added-one-by-hand-but-i-want-to) + - [What are "supported suffixes?"](#what-are-supported-suffixes) + - [That's a lot of manual editing.](#thats-a-lot-of-manual-editing) + - [That's *still* a lot of editing.](#thats-still-a-lot-of-editing) +- [So what are the `#define` options in `overworld.h`?](#so-what-are-the-define-options-in-overworldh) +- [Examples](#examples) + +## What is the Time-Based Encounters feature? +Time-Based Encounters lets you pick which Pokémon appear based on the in-game clock, per route! +Gen 2 had this feature, and Gen 4 brought it back- for instance, in Sinnoh's Route 201 you have a higher chance of catching a Bidoof than a Starly at night. + + +### Sounds rad, how do I add it to my romhack? +There are a couple of ways! The system is built to handle your unchanged [`wild_encounters.json`](../../src/data/wild_encounters.json) file by default, so the most basic solution is to add an encounter group by editing that (by hand or [with Porymap](https://huderlem.github.io/porymap/manual/editing-wild-encounters.html)), and then add a [supported suffix](#what-are-supported-suffixes) to the end of whatever name you give it. + + +> **NOTE**: if you haven't specified or added any encounters, or have the option turned off, Expansion puts them into the `TIME_MORNING` (or whatever your first time enum is set to in the `TimeOfDay` `enum` in [`rtc.h`](../../include/rtc.h)) slot to keep vanilla behavior. This means any map `"base_label"` without a [supported suffix](#what-are-supported-suffixes) is automatically set to the first time slot when `OW_TIME_OF_DAY_ENCOUNTERS` is `TRUE`. When `OW_TIME_OF_DAY_ENCOUNTERS` is `FALSE`, everything regardless of any extant suffixes gets the first time slot suffix (ie `_Morning` for `TIME_MORNING`) so it matches with the 0th index of the [`encounterTypes` array](../../include/wild_encounter.h) in `struct WildMonHeader`. + + +### I've never added one by hand, but I want to! +Great attitude bestie! It's very simple- all you need is to find your [`wild_encounters.json`](../../src/data/wild_encounters.json) file and open it up in your text/code editor of choice; I recommend VSCodium, but any will work. + +To get started, we'll use Route 101 as an example: +```json +{ + "map": "MAP_ROUTE101", + "base_label": "gRoute101", + "land_mons": { + "encounter_rate": 20, + "mons": [ + { + "min_level": 2, + "max_level": 2, + "species": "SPECIES_WURMPLE" + }, + { + "min_level": 2, + "max_level": 2, + "species": "SPECIES_POOCHYENA" + }, + { + "min_level": 2, + "max_level": 2, + "species": "SPECIES_WURMPLE" + }, + { + "min_level": 3, + "max_level": 3, + "species": "SPECIES_WURMPLE" + }, + { + "min_level": 3, + "max_level": 3, + "species": "SPECIES_POOCHYENA" + }, + { + "min_level": 3, + "max_level": 3, + "species": "SPECIES_POOCHYENA" + }, + { + "min_level": 3, + "max_level": 3, + "species": "SPECIES_WURMPLE" + }, + { + "min_level": 3, + "max_level": 3, + "species": "SPECIES_POOCHYENA" + }, + { + "min_level": 2, + "max_level": 2, + "species": "SPECIES_ZIGZAGOON" + }, + { + "min_level": 2, + "max_level": 2, + "species": "SPECIES_ZIGZAGOON" + }, + { + "min_level": 3, + "max_level": 3, + "species": "SPECIES_ZIGZAGOON" + }, + { + "min_level": 3, + "max_level": 3, + "species": "SPECIES_ZIGZAGOON" + } + ] + } +}, +``` +That's it! That's the entire encounter group for Route 101. In other Routes or maps, you'll likely see other encounters listed; here we have only have `land_mons`, but vanilla emerald supports three more types of encounters, for a total of four: +- `land_mons`, your standard grass or cave or sand encounter. +- `water_mons`, used for surfing +- `rock_smash_mons`, for when you get jumpscared by a Geodude in Route 111 after using Rock Smash. +- `fishing_mons`, for fishing + + +> **NOTE**: You can also have more of these encounter types- in fact, expansion has a fifth type of encounter for the Dexnav feature called `hidden_mons`, and some people have entries for `honey_mons` and `headbutt_mons` in their personal hacks as well! This system supports those too, you just need to make sure to update your [`WildEncounters` struct](../../include/wild_encounter.h) definition. You need to keep the order consistent, so as a standard, any custom encounter types should go before `hidden_mons` but after `fishing_mons`. To use the earlier examples: + +```c +struct WildEncounterTypes +{ + const struct WildPokemonInfo *landMonsInfo; + const struct WildPokemonInfo *waterMonsInfo; + const struct WildPokemonInfo *rockSmashMonsInfo; + const struct WildPokemonInfo *fishingMonsInfo; + const struct WildPokemonInfo *honeyMonsInfo; + const struct WildPokemonInfo *headbuttMonsInfo; + const struct WildPokemonInfo *hiddenMonsInfo; +}; +``` +> You can see that the two new entries, `honeyMonsInfo` and `headbuttMonsInfo` (corresponding with `honey_mons` and `headbutt_mons`) are slotted in between `fishingMonsInfo` and `hiddenMonsInfo`. Structs in the C programming language rely on consistent placement with their members, so this is the order that every other instance of these encounter types should maintain. In my ~~expert~~ opinion, the easiest way to add these is again [with Porymap](https://huderlem.github.io/porymap/manual/editing-wild-encounters.html). Okay, take a breath, stretch, and we'll get back to the tutorial! + + +For the sake of simplicity, I'll show you how to add another encounter group here and pop a supported prefix on it. I want my new encounter group to: +- have a fishing table (I'm adding a fishin hole to Route 101) +- let you catch Spiky Eared Pichu, my favorite mon (not really) +- have some rock smash encounters to up the spook factor +- only occur at night + +With all of these things in mind, let's craft an encounter! We'll start off by copying the one we have, called `gRoute101`. +```json +{ + "map": "MAP_ROUTE101", + "base_label": "gRoute101", + "land_mons": { + "encounter_rate": 20, + "mons": [ + { + "min_level": 2, + "max_level": 2, + "species": "SPECIES_WURMPLE" + }, + { + "min_level": 2, + "max_level": 2, + "species": "SPECIES_POOCHYENA" + }, + { + "min_level": 2, + "max_level": 2, + "species": "SPECIES_WURMPLE" + }, + { + "min_level": 3, + "max_level": 3, + "species": "SPECIES_WURMPLE" + }, + { + "min_level": 3, + "max_level": 3, + "species": "SPECIES_POOCHYENA" + }, + { + "min_level": 3, + "max_level": 3, + "species": "SPECIES_POOCHYENA" + }, + { + "min_level": 3, + "max_level": 3, + "species": "SPECIES_WURMPLE" + }, + { + "min_level": 3, + "max_level": 3, + "species": "SPECIES_POOCHYENA" + }, + { + "min_level": 2, + "max_level": 2, + "species": "SPECIES_ZIGZAGOON" + }, + { + "min_level": 2, + "max_level": 2, + "species": "SPECIES_ZIGZAGOON" + }, + { + "min_level": 3, + "max_level": 3, + "species": "SPECIES_ZIGZAGOON" + }, + { + "min_level": 3, + "max_level": 3, + "species": "SPECIES_ZIGZAGOON" + } + ] + } +}, +{ + "map": "MAP_ROUTE101", + "base_label": "gRoute101_Night", + "land_mons": { + "encounter_rate": 20, + "mons": [ + { + "min_level": 2, + "max_level": 2, + "species": "SPECIES_WURMPLE" + }, + { + "min_level": 2, + "max_level": 2, + "species": "SPECIES_POOCHYENA" + }, + { + "min_level": 2, + "max_level": 2, + "species": "SPECIES_WURMPLE" + }, + { + "min_level": 3, + "max_level": 3, + "species": "SPECIES_WURMPLE" + }, + { + "min_level": 3, + "max_level": 3, + "species": "SPECIES_POOCHYENA" + }, + { + "min_level": 3, + "max_level": 3, + "species": "SPECIES_POOCHYENA" + }, + { + "min_level": 3, + "max_level": 3, + "species": "SPECIES_WURMPLE" + }, + { + "min_level": 3, + "max_level": 3, + "species": "SPECIES_POOCHYENA" + }, + { + "min_level": 2, + "max_level": 2, + "species": "SPECIES_ZIGZAGOON" + }, + { + "min_level": 2, + "max_level": 2, + "species": "SPECIES_ZIGZAGOON" + }, + { + "min_level": 3, + "max_level": 3, + "species": "SPECIES_ZIGZAGOON" + }, + { + "min_level": 3, + "max_level": 3, + "species": "SPECIES_ZIGZAGOON" + } + ] + } +}, +``` +Okay, we have it duplicated. We leave the value for "map": the same as the original so the game knows that both of these encounters are for Route 101. You can see I changed the name of the copy to `gRoute101_Night`; that's one bullet point down! If we enable `OW_TIME_BASED_ENCOUNTERS` in [`overworld.h`](../../include/config/overworld.h), the game will recognize this encounter group goes in the `Night` slot and will switch which group is used to generate the encounters when the in-game clock changes to `TIME_NIGHT`. Next, let's add Spiky Eared Pichu and our two new encounter tables (`fishing_mons` and `rock_smash_mons`). + +```json +{ + "map": "MAP_ROUTE101", + "base_label": "gRoute101_Night", + "land_mons": { + "encounter_rate": 20, + "mons": [ + { + "min_level": 2, + "max_level": 2, + "species": "SPECIES_PICHU_SPIKY_EARED" + }, + { + "min_level": 2, + "max_level": 2, + "species": "SPECIES_POOCHYENA" + }, + { + "min_level": 2, + "max_level": 2, + "species": "SPECIES_WURMPLE" + }, + { + "min_level": 3, + "max_level": 3, + "species": "SPECIES_WURMPLE" + }, + { + "min_level": 3, + "max_level": 3, + "species": "SPECIES_POOCHYENA" + }, + { + "min_level": 3, + "max_level": 3, + "species": "SPECIES_POOCHYENA" + }, + { + "min_level": 3, + "max_level": 3, + "species": "SPECIES_WURMPLE" + }, + { + "min_level": 3, + "max_level": 3, + "species": "SPECIES_POOCHYENA" + }, + { + "min_level": 2, + "max_level": 2, + "species": "SPECIES_ZIGZAGOON" + }, + { + "min_level": 2, + "max_level": 2, + "species": "SPECIES_ZIGZAGOON" + }, + { + "min_level": 3, + "max_level": 3, + "species": "SPECIES_ZIGZAGOON" + }, + { + "min_level": 3, + "max_level": 3, + "species": "SPECIES_ZIGZAGOON" + } + ] + }, + "fishing_mons": { + "encounter_rate": 30, + "mons": [ + { + "min_level": 2, + "max_level": 2, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 2, + "max_level": 2, + "species": "SPECIES_MARILL" + } + ] + }, + "rock_smash_mons": { + "encounter_rate": 20, + "mons": [ + { + "min_level": 2, + "max_level": 2, + "species": "SPECIES_GEODUDE" + } + ] + } +}, +``` +And there we go! It has the `_Night` suffix, has Spiky Eared Pichu right up at the top of the list, has a couple of fishing encounters, and will jumpscare us with about a 20% chance every time we break a rock with rock smash. That's what the `encounter_rate` line means, by the way- the overall percentage you have of encountering *any* of the Pokémon listed. +Congrats! You've just created a brand new encounter group, set its time, and adjusted the encounters! I'd highly recommend doing this [with Porymap](https://huderlem.github.io/porymap/manual/editing-wild-encounters.html)- the interface is very useful for editing maps, including wild encounters! + +### What are "supported suffixes?" +Vanilla Pokémon games usually work with 4 different times of day: +- `TIME_MORNING` +- `TIME_DAY` +- `TIME_EVENING` +- `TIME_NIGHT` + +So, the "supported suffixes" are just: +- `_Morning` +- `_Day` +- `_Evening` +- `_Night` + + +> **NOTE**: You can add more than just these by changing the `TimeOfDay` `enum` in [`rtc.h`](../../include/rtc.h). If you'd like to do this, I'd recommend making a backup of your [`wild_encounters.json`](../../src/data/wild_encounters.json) somewhere outside your project folder, just so you can have a baseline to return to if something goes wrong. The [migration script](../../migration_scripts/add_time_based_encounters.py) makes a backup of the file ***each time it runs***, so it's essentially a one step undo button- if you plan on or think you might make lots of edits to [`wild_encounters.json`](../../src/data/wild_encounters.json), ***it is a very good idea to make a baseline backup***. + + +### That's a lot of manual editing. +You're so right bestie! Luckily for you, there's a python script that can help you out! +The script is at [`migration_scripts/add_time_based_encounters.py`](../../migration_scripts/add_time_based_encounters.py). It, in order: +1. Checks to make sure you're running it from the [root folder](../../) of your expansion project (specifically, wherever the project's [`Makefile`](../../Makefile) is) +2. Makes a backup of your [`wild_encounters.json`](../../src/data/wild_encounters.json) file called `wild_encounters.json.bak` +3. Runs through `wild_encounters.json` and adds dummy encounter groups for each time denomination to each group + - ie, `gRoute101` becomes `gRoute101_Morning`, `gRoute101_Day`, `gRoute101_Evening`, and `gRoute101_Night` + +This script works kind of like a "template" feature- when you open it up to edit either in Porymap or a text editor, you will see the encounter groups, but they won't be filled out with encounters. This lets you add Pokémon with your own encounter rates however you want. + +### That's *still* a lot of editing. +You're *still* so right bestie! Luckily for you, there's an optional argument you can add when you run the script: `--copy`. +This duplicates the encounter group's encounters as well as their labels/map group values. When you open [`wild_encounters.json`](../../src/data/wild_encounters.json) for editing either in Porymap or a text editor, you'll notice that each group (`gRoute101_Morning`, `gRoute101_Day`, `gRoute101_Evening`, and `gRoute101_Night`) now all have the same encounters as `gRoute101` did. If you only want to add a couple of Pokémon here and there for each time of day, this is probably the easier option. + + +> **NOTE**: the `--copy` option will use up at least an additional 9kb of ROM space. Obviously that's not much even for a GBA ROM, but it's something to keep in mind. + + +## So what are the `#define` options in [`overworld.h`](../../include/config/overworld.h)? +Great questie bestie! + +Here's a rundown, with more information than what's in the comments at [`overworld.h`](../../include/config/overworld.h) and their default values: +``` +OW_TIME_OF_DAY_ENCOUNTERS FALSE +``` + - **Acceptable values**: `TRUE` or `FALSE` + - this option enables or disables the feature. You'll notice your used ROM space changing when this is enabled or disabled, as the [json->C header conversion file](../../tools/wild_encounters/wild_encounters_to_header.py) will generate the `encounterTypes` array in [`wild_encounter.h`](../../include/wild_encounter.h) with different sizes based on whether this value is `TRUE` or `FALSE`. +``` +OW_TIME_OF_DAY_DISABLE_FALLBACK FALSE +``` + - **Acceptable values**: `TRUE` or `FALSE` + - this option controls the behavior of the game when an encounter table isn't populated. If this is set to `TRUE`, whenever the game detects that you're in a time of day (Morning/Day/Evening/Night) on a map without any encounters for that time, you won't encounter any mons. If this is set to `FALSE`, the game will look for encounters at the time specified in the `OW_TIME_OF_DAY_FALLBACK` option below. +``` +OW_TIME_OF_DAY_FALLBACK TIME_MORNING +``` + - **Acceptable values**: any value from the [`TimesOfDay`](../../include/rtc.h) enum, so by default `TIME_MORNING`, `TIME_DAY`, `TIME_EVENING`, and `TIME_NIGHT`. + - this option controls which time is used when `OW_TIME_OF_DAY_DISABLE_FALLBACK` is `FALSE`. Keep in mind that if you enable `OW_TIME_OF_DAY_ENCOUNTERS` and set this to something other than `TIME_MORNING`, you should make sure that time has encounters, or you won't encounter anything. + + +## Examples + +### Running the [migration script](../../migration_scripts/add_time_based_encounters.py) without the `--copy` option +**Make sure you run this from the [root folder](../../) of your project!** + +``` +python3 migration_scripts/add_time_based_encounters.py +``` + +#### Result: +```json +"encounters": [ + { + "map": "MAP_ROUTE101", + "base_label": "gRoute101_Morning", + "land_mons": { + "encounter_rate": 20, + "mons": [ + { + "min_level": 2, + "max_level": 2, + "species": "SPECIES_WURMPLE" + }, + { + "min_level": 2, + "max_level": 2, + "species": "SPECIES_POOCHYENA" + }, + { + "min_level": 2, + "max_level": 2, + "species": "SPECIES_WURMPLE" + }, + { + "min_level": 3, + "max_level": 3, + "species": "SPECIES_WURMPLE" + }, + { + "min_level": 3, + "max_level": 3, + "species": "SPECIES_POOCHYENA" + }, + { + "min_level": 3, + "max_level": 3, + "species": "SPECIES_POOCHYENA" + }, + { + "min_level": 3, + "max_level": 3, + "species": "SPECIES_WURMPLE" + }, + { + "min_level": 3, + "max_level": 3, + "species": "SPECIES_POOCHYENA" + }, + { + "min_level": 2, + "max_level": 2, + "species": "SPECIES_ZIGZAGOON" + }, + { + "min_level": 2, + "max_level": 2, + "species": "SPECIES_ZIGZAGOON" + }, + { + "min_level": 3, + "max_level": 3, + "species": "SPECIES_ZIGZAGOON" + }, + { + "min_level": 3, + "max_level": 3, + "species": "SPECIES_ZIGZAGOON" + } + ] + } + }, + { + "map": "MAP_ROUTE101", + "base_label": "gRoute101_Day" + }, + { + "map": "MAP_ROUTE101", + "base_label": "gRoute101_Evening" + }, + { + "map": "MAP_ROUTE101", + "base_label": "gRoute101_Night" + }, +] +``` +As you can see, the names change, but the encounters aren't touched, so you're free to add your own, piecemeal style. If you don't have any encounters for a map and time, the game will use `OW_TIME_OF_DAY_FALLBACK` *if* `OW_TIME_OF_DAY_DISABLE_FALLBACK` is `FALSE`; otherwise, you won't encounter anything. + +### Running the [migration script](../../migration_scripts/add_time_based_encounters.py) with the `--copy` option +**Make sure you run this from the [root folder](../../) of your project!** + +``` +python3 migration_scripts/add_time_based_encounters.py --copy +``` + +#### Result: +```json +"encounters": [ + { + "map": "MAP_ROUTE101", + "base_label": "gRoute101_Morning", + "land_mons": { + "encounter_rate": 20, + "mons": [ + { + "min_level": 2, + "max_level": 2, + "species": "SPECIES_WURMPLE" + }, + { + "min_level": 2, + "max_level": 2, + "species": "SPECIES_POOCHYENA" + }, + { + "min_level": 2, + "max_level": 2, + "species": "SPECIES_WURMPLE" + }, + { + "min_level": 3, + "max_level": 3, + "species": "SPECIES_WURMPLE" + }, + { + "min_level": 3, + "max_level": 3, + "species": "SPECIES_POOCHYENA" + }, + { + "min_level": 3, + "max_level": 3, + "species": "SPECIES_POOCHYENA" + }, + { + "min_level": 3, + "max_level": 3, + "species": "SPECIES_WURMPLE" + }, + { + "min_level": 3, + "max_level": 3, + "species": "SPECIES_POOCHYENA" + }, + { + "min_level": 2, + "max_level": 2, + "species": "SPECIES_ZIGZAGOON" + }, + { + "min_level": 2, + "max_level": 2, + "species": "SPECIES_ZIGZAGOON" + }, + { + "min_level": 3, + "max_level": 3, + "species": "SPECIES_ZIGZAGOON" + }, + { + "min_level": 3, + "max_level": 3, + "species": "SPECIES_ZIGZAGOON" + } + ] + } + }, + { + "map": "MAP_ROUTE101", + "base_label": "gRoute101_Day", + "land_mons": { + "encounter_rate": 20, + "mons": [ + { + "min_level": 2, + "max_level": 2, + "species": "SPECIES_WURMPLE" + }, + { + "min_level": 2, + "max_level": 2, + "species": "SPECIES_POOCHYENA" + }, + { + "min_level": 2, + "max_level": 2, + "species": "SPECIES_WURMPLE" + }, + { + "min_level": 3, + "max_level": 3, + "species": "SPECIES_WURMPLE" + }, + { + "min_level": 3, + "max_level": 3, + "species": "SPECIES_POOCHYENA" + }, + { + "min_level": 3, + "max_level": 3, + "species": "SPECIES_POOCHYENA" + }, + { + "min_level": 3, + "max_level": 3, + "species": "SPECIES_WURMPLE" + }, + { + "min_level": 3, + "max_level": 3, + "species": "SPECIES_POOCHYENA" + }, + { + "min_level": 2, + "max_level": 2, + "species": "SPECIES_ZIGZAGOON" + }, + { + "min_level": 2, + "max_level": 2, + "species": "SPECIES_ZIGZAGOON" + }, + { + "min_level": 3, + "max_level": 3, + "species": "SPECIES_ZIGZAGOON" + }, + { + "min_level": 3, + "max_level": 3, + "species": "SPECIES_ZIGZAGOON" + } + ] + } + }, + { + "map": "MAP_ROUTE101", + "base_label": "gRoute101_Evening", + "land_mons": { + "encounter_rate": 20, + "mons": [ + { + "min_level": 2, + "max_level": 2, + "species": "SPECIES_WURMPLE" + }, + { + "min_level": 2, + "max_level": 2, + "species": "SPECIES_POOCHYENA" + }, + { + "min_level": 2, + "max_level": 2, + "species": "SPECIES_WURMPLE" + }, + { + "min_level": 3, + "max_level": 3, + "species": "SPECIES_WURMPLE" + }, + { + "min_level": 3, + "max_level": 3, + "species": "SPECIES_POOCHYENA" + }, + { + "min_level": 3, + "max_level": 3, + "species": "SPECIES_POOCHYENA" + }, + { + "min_level": 3, + "max_level": 3, + "species": "SPECIES_WURMPLE" + }, + { + "min_level": 3, + "max_level": 3, + "species": "SPECIES_POOCHYENA" + }, + { + "min_level": 2, + "max_level": 2, + "species": "SPECIES_ZIGZAGOON" + }, + { + "min_level": 2, + "max_level": 2, + "species": "SPECIES_ZIGZAGOON" + }, + { + "min_level": 3, + "max_level": 3, + "species": "SPECIES_ZIGZAGOON" + }, + { + "min_level": 3, + "max_level": 3, + "species": "SPECIES_ZIGZAGOON" + } + ] + } + }, + { + "map": "MAP_ROUTE101", + "base_label": "gRoute101_Night", + "land_mons": { + "encounter_rate": 20, + "mons": [ + { + "min_level": 2, + "max_level": 2, + "species": "SPECIES_WURMPLE" + }, + { + "min_level": 2, + "max_level": 2, + "species": "SPECIES_POOCHYENA" + }, + { + "min_level": 2, + "max_level": 2, + "species": "SPECIES_WURMPLE" + }, + { + "min_level": 3, + "max_level": 3, + "species": "SPECIES_WURMPLE" + }, + { + "min_level": 3, + "max_level": 3, + "species": "SPECIES_POOCHYENA" + }, + { + "min_level": 3, + "max_level": 3, + "species": "SPECIES_POOCHYENA" + }, + { + "min_level": 3, + "max_level": 3, + "species": "SPECIES_WURMPLE" + }, + { + "min_level": 3, + "max_level": 3, + "species": "SPECIES_POOCHYENA" + }, + { + "min_level": 2, + "max_level": 2, + "species": "SPECIES_ZIGZAGOON" + }, + { + "min_level": 2, + "max_level": 2, + "species": "SPECIES_ZIGZAGOON" + }, + { + "min_level": 3, + "max_level": 3, + "species": "SPECIES_ZIGZAGOON" + }, + { + "min_level": 3, + "max_level": 3, + "species": "SPECIES_ZIGZAGOON" + } + ] + } + }, +] +``` +As you can see, the group `gRoute101` and all its encounters were copied into groups that correspond with the four vanilla times of day (Morning/Day/Evening/Night). \ No newline at end of file diff --git a/docs/tutorials/img/dns/window_lights.png b/docs/tutorials/img/dns/window_lights.png new file mode 100644 index 0000000000..0bb3979c26 Binary files /dev/null and b/docs/tutorials/img/dns/window_lights.png differ diff --git a/docs/tutorials/img/dns/with_lamp.png b/docs/tutorials/img/dns/with_lamp.png new file mode 100644 index 0000000000..4c97f76b59 Binary files /dev/null and b/docs/tutorials/img/dns/with_lamp.png differ diff --git a/docs/tutorials/img/dns/without_lamp.png b/docs/tutorials/img/dns/without_lamp.png new file mode 100644 index 0000000000..b1adfaaad6 Binary files /dev/null and b/docs/tutorials/img/dns/without_lamp.png differ diff --git a/docs/tutorials/img/follower_npc/follower-npc.gif b/docs/tutorials/img/follower_npc/follower-npc.gif new file mode 100644 index 0000000000..ca2261bf50 Binary files /dev/null and b/docs/tutorials/img/follower_npc/follower-npc.gif differ diff --git a/graphics/battle_anims/backgrounds/rock_afternoon.pal b/graphics/battle_anims/backgrounds/rock_afternoon.pal new file mode 100644 index 0000000000..eb8aaa1905 --- /dev/null +++ b/graphics/battle_anims/backgrounds/rock_afternoon.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 255 +246 189 49 +246 172 41 +238 156 32 +222 131 24 +205 115 8 +246 172 41 +246 172 41 +246 172 41 +246 172 41 +167 81 31 +139 74 49 +123 65 32 +98 49 32 +82 32 16 +74 24 8 diff --git a/graphics/battle_anims/backgrounds/rock_day.pal b/graphics/battle_anims/backgrounds/rock_day.pal new file mode 100644 index 0000000000..a67974fd07 --- /dev/null +++ b/graphics/battle_anims/backgrounds/rock_day.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 255 +129 196 237 +152 208 243 +174 221 250 +240 186 88 +232 144 39 +152 208 243 +152 208 243 +255 255 255 +255 241 188 +212 111 53 +227 148 56 +197 101 18 +163 70 36 +128 57 35 +113 41 18 diff --git a/graphics/battle_anims/backgrounds/rock_field.bin b/graphics/battle_anims/backgrounds/rock_field.bin new file mode 100644 index 0000000000..3395d4c51a Binary files /dev/null and b/graphics/battle_anims/backgrounds/rock_field.bin differ diff --git a/graphics/battle_anims/backgrounds/rock_field.png b/graphics/battle_anims/backgrounds/rock_field.png new file mode 100644 index 0000000000..c3545338ef Binary files /dev/null and b/graphics/battle_anims/backgrounds/rock_field.png differ diff --git a/graphics/battle_anims/backgrounds/rock_night.pal b/graphics/battle_anims/backgrounds/rock_night.pal new file mode 100644 index 0000000000..4f3c3154df --- /dev/null +++ b/graphics/battle_anims/backgrounds/rock_night.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 255 +38 17 60 +22 29 82 +20 43 90 +91 97 155 +47 50 120 +255 255 255 +243 237 195 +22 29 82 +22 29 82 +43 29 98 +49 25 82 +40 5 57 +53 41 103 +58 65 118 +27 16 70 diff --git a/graphics/battle_anims/backgrounds/sky_afternoon.pal b/graphics/battle_anims/backgrounds/sky_afternoon.pal deleted file mode 100644 index c7c5805fa7..0000000000 --- a/graphics/battle_anims/backgrounds/sky_afternoon.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -246 230 180 -255 222 139 -255 230 123 -255 222 106 -255 213 98 -255 197 57 -255 180 32 -255 172 8 -255 156 8 -230 131 8 -222 123 8 -205 106 8 -205 90 8 -197 74 8 -189 57 8 diff --git a/graphics/battle_anims/backgrounds/sky_day.bin b/graphics/battle_anims/backgrounds/sky_day.bin deleted file mode 100644 index a09c865f08..0000000000 Binary files a/graphics/battle_anims/backgrounds/sky_day.bin and /dev/null differ diff --git a/graphics/battle_anims/backgrounds/sky_day.pal b/graphics/battle_anims/backgrounds/sky_day.pal deleted file mode 100644 index c0ea00a0ae..0000000000 --- a/graphics/battle_anims/backgrounds/sky_day.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -211 216 222 -198 208 221 -184 199 218 -170 191 215 -156 181 212 -142 172 207 -128 162 203 -117 154 198 -104 147 199 -101 141 189 -89 137 194 -82 127 179 -77 128 190 -63 117 184 -52 106 169 diff --git a/graphics/battle_anims/backgrounds/sky_day.png b/graphics/battle_anims/backgrounds/sky_day.png deleted file mode 100644 index c03ce283bb..0000000000 Binary files a/graphics/battle_anims/backgrounds/sky_day.png and /dev/null differ diff --git a/graphics/battle_anims/backgrounds/sky_night.pal b/graphics/battle_anims/backgrounds/sky_night.pal deleted file mode 100644 index 4c0622ac52..0000000000 --- a/graphics/battle_anims/backgrounds/sky_night.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -139 90 222 -131 65 230 -106 41 230 -98 32 230 -98 16 255 -65 8 255 -49 8 205 -41 8 180 -24 0 172 -24 0 156 -32 0 148 -32 0 131 -32 0 115 -24 0 106 -24 0 98 diff --git a/graphics/fonts/latin_narrow.png b/graphics/fonts/latin_narrow.png index 434638ed17..bb9d0670d3 100644 Binary files a/graphics/fonts/latin_narrow.png and b/graphics/fonts/latin_narrow.png differ diff --git a/graphics/fonts/latin_narrower.png b/graphics/fonts/latin_narrower.png index 19a6a98fb6..ab4ce4322e 100644 Binary files a/graphics/fonts/latin_narrower.png and b/graphics/fonts/latin_narrower.png differ diff --git a/graphics/fonts/latin_normal.png b/graphics/fonts/latin_normal.png index d1de69d136..b3fa87b0e0 100644 Binary files a/graphics/fonts/latin_normal.png and b/graphics/fonts/latin_normal.png differ diff --git a/graphics/fonts/latin_short.png b/graphics/fonts/latin_short.png index 98ad3c5cc3..12aa01835d 100644 Binary files a/graphics/fonts/latin_short.png and b/graphics/fonts/latin_short.png differ diff --git a/graphics/fonts/latin_short_narrow.png b/graphics/fonts/latin_short_narrow.png index 6bf1bae0cf..b551f3215c 100644 Binary files a/graphics/fonts/latin_short_narrow.png and b/graphics/fonts/latin_short_narrow.png differ diff --git a/graphics/fonts/latin_short_narrower.png b/graphics/fonts/latin_short_narrower.png index 5c4f4c1d4d..920a88aa01 100644 Binary files a/graphics/fonts/latin_short_narrower.png and b/graphics/fonts/latin_short_narrower.png differ diff --git a/graphics/fonts/latin_small.png b/graphics/fonts/latin_small.png index 41bb38cff8..31c4444dc4 100644 Binary files a/graphics/fonts/latin_small.png and b/graphics/fonts/latin_small.png differ diff --git a/graphics/fonts/latin_small_narrow.png b/graphics/fonts/latin_small_narrow.png index ff07b857d7..4fbb13aad4 100644 Binary files a/graphics/fonts/latin_small_narrow.png and b/graphics/fonts/latin_small_narrow.png differ diff --git a/graphics/fonts/latin_small_narrower.png b/graphics/fonts/latin_small_narrower.png index c20fa4ae48..69bca4645a 100644 Binary files a/graphics/fonts/latin_small_narrower.png and b/graphics/fonts/latin_small_narrower.png differ diff --git a/graphics/object_events/palettes/light.pal b/graphics/object_events/palettes/light.pal new file mode 100644 index 0000000000..92a4477f76 --- /dev/null +++ b/graphics/object_events/palettes/light.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +110 198 165 +64 61 42 +77 73 50 +85 81 58 +100 94 66 +111 105 75 +119 112 77 +140 131 92 +154 145 103 +171 159 111 +186 174 123 +197 183 128 +209 195 139 +224 209 146 +234 219 155 +249 232 161 diff --git a/graphics/object_events/palettes/light2.pal b/graphics/object_events/palettes/light2.pal new file mode 100644 index 0000000000..3d61a3020d --- /dev/null +++ b/graphics/object_events/palettes/light2.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +106 202 166 +58 54 31 +67 62 33 +96 89 53 +110 102 57 +121 111 67 +128 119 66 +156 143 82 +166 155 96 +185 169 100 +199 183 112 +211 192 113 +223 203 123 +237 218 129 +247 227 137 +255 237 147 diff --git a/graphics/object_events/palettes/neon_light.pal b/graphics/object_events/palettes/neon_light.pal new file mode 100644 index 0000000000..dd287fc645 --- /dev/null +++ b/graphics/object_events/palettes/neon_light.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +104 203 168 +19 48 64 +35 87 115 +58 132 140 +69 156 166 +77 193 254 +106 239 254 +27 68 89 +64 22 19 +115 39 34 +166 57 49 +191 66 57 +222 77 67 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/pics/misc/light.png b/graphics/object_events/pics/misc/light.png index d1a0402d10..22687a7c00 100644 Binary files a/graphics/object_events/pics/misc/light.png and b/graphics/object_events/pics/misc/light.png differ diff --git a/graphics/object_events/pics/misc/mart_light.png b/graphics/object_events/pics/misc/mart_light.png new file mode 100644 index 0000000000..7ec1a434ea Binary files /dev/null and b/graphics/object_events/pics/misc/mart_light.png differ diff --git a/graphics/object_events/pics/misc/poke_center_light.png b/graphics/object_events/pics/misc/poke_center_light.png new file mode 100644 index 0000000000..42d19f51c6 Binary files /dev/null and b/graphics/object_events/pics/misc/poke_center_light.png differ diff --git a/include/battle.h b/include/battle.h index c877a41311..6b9609758b 100644 --- a/include/battle.h +++ b/include/battle.h @@ -85,12 +85,12 @@ struct DisableStruct s8 stockpileBeforeSpDef; u8 substituteHP; u8 encoredMovePos; - u8 disableTimer:4; - u8 encoreTimer:4; - u8 perishSongTimer:4; - u8 rolloutTimer:4; - u8 rolloutTimerStartValue:4; - u8 tauntTimer:4; + u16 disableTimer; + u16 encoreTimer; + u16 perishSongTimer; + u16 rolloutTimer; + u16 rolloutTimerStartValue; + u16 tauntTimer; u8 furyCutterCounter; u8 battlerPreventingEscape; u8 battlerWithSureHit; @@ -99,16 +99,16 @@ struct DisableStruct u8 chargeTimer:4; u8 rechargeTimer; u8 autotomizeCount; - u8 slowStartTimer; - u8 embargoTimer; - u8 magnetRiseTimer; - u8 telekinesisTimer; - u8 healBlockTimer; - u8 laserFocusTimer; - u8 throatChopTimer; + u16 slowStartTimer; + u16 embargoTimer; + u16 magnetRiseTimer; + u16 telekinesisTimer; + u16 healBlockTimer; + u16 laserFocusTimer; + u16 throatChopTimer; u8 wrapTurns; - u8 syrupBombTimer; - u8 tormentTimer:4; // used for G-Max Meltdown + u16 syrupBombTimer; + u16 tormentTimer; // used for G-Max Meltdown u8 usedMoves:4; u8 truantCounter:1; u8 truantSwitchInHack:1; @@ -139,11 +139,7 @@ struct DisableStruct // Fully Cleared each turn after end turn effects are done. A few things are cleared before end turn effects struct ProtectStruct { - u32 protected:1; - u32 spikyShielded:1; - u32 kingsShielded:1; - u32 banefulBunkered:1; - u32 obstructed:1; + u32 protected:7; // 126 protect options u32 endured:1; u32 noValidMoves:1; u32 helpingHand:1; @@ -151,7 +147,6 @@ struct ProtectStruct u32 stealMove:1; u32 nonVolatileStatusImmobility:1; u32 confusionSelfDmg:1; - u32 targetAffected:1; u32 chargingTurn:1; u32 fleeType:2; // 0: Normal, 1: FLEE_ITEM, 2: FLEE_ABILITY u32 unableToUseMove:1; // Not to be confused with HITMARKER_UNABLE_TO_USE_MOVE (It is questionable though if there is a difference. Needs further research) @@ -161,7 +156,7 @@ struct ProtectStruct u32 statRaised:1; u32 usedCustapBerry:1; // also quick claw u32 touchedProtectLike:1; - u32 unused:9; + u32 unused:8; // End of 32-bit bitfield u16 disableEjectPack:1; u16 statFell:1; @@ -170,17 +165,14 @@ struct ProtectStruct u16 beakBlastCharge:1; u16 quash:1; u16 shellTrap:1; - u16 maxGuarded:1; - u16 silkTrapped:1; - u16 burningBulwarked:1; u16 eatMirrorHerb:1; u16 activateOpportunist:2; // 2 - to copy stats. 1 - stats copied (do not repeat). 0 - no stats to copy u16 usedAllySwitch:1; u16 lashOutAffected:1; - u16 padding:1; + u16 padding:4; // End of 16-bit bitfield - u32 physicalDmg; - u32 specialDmg; + u16 physicalDmg; + u16 specialDmg; u8 physicalBattlerId; u8 specialBattlerId; }; @@ -190,24 +182,22 @@ struct SpecialStatus { s32 physicalDmg; s32 specialDmg; - u8 physicalBattlerId; - u8 specialBattlerId; u8 changedStatsBattlerId; // Battler that was responsible for the latest stat change. Can be self. u8 statLowered:1; u8 lightningRodRedirected:1; u8 restoredBattlerSprite: 1; u8 faintedHasReplacement:1; - u8 focusBanded:1; - u8 focusSashed:1; - u8 emergencyExited:1; + u8 preventLifeOrbDamage:1; // So that Life Orb doesn't activate various effects. u8 afterYou:1; - // End of byte - u8 sturdied:1; + u8 enduredDamage:1; u8 stormDrainRedirected:1; + // End of byte u8 switchInAbilityDone:1; u8 switchInItemDone:1; u8 instructedChosenTarget:3; u8 berryReduced:1; + u8 announceNeutralizingGas:1; // See Cmd_switchineffects + u8 neutralizingGasRemoved:1; // See VARIOUS_TRY_END_NEUTRALIZING_GAS // End of byte u8 gemParam; // End of byte @@ -215,29 +205,22 @@ struct SpecialStatus u8 rototillerAffected:1; // to be affected by rototiller u8 parentalBondState:2; u8 multiHitOn:1; - u8 announceNeutralizingGas:1; // See Cmd_switchineffects - u8 neutralizingGasRemoved:1; // See VARIOUS_TRY_END_NEUTRALIZING_GAS - u8 affectionEndured:1; - // End of byte - u8 dancerUsedMove:1; - u8 dancerOriginalTarget:3; u8 distortedTypeMatchups:1; u8 teraShellAbilityDone:1; u8 criticalHit:1; - u8 enduredDamage:1; + // End of byte + u8 dancerUsedMove:1; + u8 dancerOriginalTarget:3; + u8 unused:4; // End of byte }; struct SideTimer { u16 reflectTimer; - u8 reflectBattlerId; u16 lightscreenTimer; - u8 lightscreenBattlerId; u16 mistTimer; - u8 mistBattlerId; u16 safeguardTimer; - u8 safeguardBattlerId; u16 spikesAmount; // debug menu complains. might be better to solve there instead if possible u16 toxicSpikesAmount; u16 stealthRockAmount; @@ -245,11 +228,8 @@ struct SideTimer u8 stickyWebBattlerId; u8 stickyWebBattlerSide; // Used for Court Change u16 auroraVeilTimer; - u8 auroraVeilBattlerId; u16 tailwindTimer; - u8 tailwindBattlerId; u16 luckyChantTimer; - u8 luckyChantBattlerId; u16 steelsurgeAmount; // Timers below this point are not swapped by Court Change u16 followmeTimer; @@ -277,7 +257,7 @@ struct FieldTimer struct WishFutureKnock { - u8 futureSightCounter[MAX_BATTLERS_COUNT]; + u16 futureSightCounter[MAX_BATTLERS_COUNT]; u8 futureSightBattlerIndex[MAX_BATTLERS_COUNT]; u8 futureSightPartyIndex[MAX_BATTLERS_COUNT]; u16 futureSightMove[MAX_BATTLERS_COUNT]; @@ -303,16 +283,17 @@ struct AiPartyMon u16 item; u16 heldEffect; u16 ability; - u16 gender; u16 level; u16 moves[MAX_MON_MOVES]; u32 status; - bool8 isFainted; - bool8 wasSentInBattle; u8 switchInCount; // Counts how many times this Pokemon has been sent out or switched into in a battle. + u8 gender:2; + u8 isFainted:1; + u8 wasSentInBattle:1; + u8 padding:4; }; -struct AIPartyData // Opposing battlers - party mons. +struct AiPartyData // Opposing battlers - party mons. { struct AiPartyMon mons[NUM_BATTLE_SIDES][PARTY_SIZE]; // 2 parties(player, opponent). Used to save information on opposing party. u8 count[NUM_BATTLE_SIDES]; @@ -326,8 +307,9 @@ struct SwitchinCandidate struct SimulatedDamage { - s32 expected; - s32 minimum; + u16 minimum; + u16 median; + u16 maximum; }; // Ai Data used when deciding which move to use, computed only once before each turn's start. @@ -351,22 +333,24 @@ struct AiLogicData u8 weatherHasEffect:1; // The same as HasWeatherEffect(). Stored here, so it's called only once. u8 ejectButtonSwitch:1; // Tracks whether current switch out was from Eject Button u8 ejectPackSwitch:1; // Tracks whether current switch out was from Eject Pack - u8 predictingSwitch:1; // Determines whether AI will use predictions this turn or not - u8 aiSwitchPredictionInProgress:1; // Tracks whether the AI is in the middle of running prediction calculations - u8 padding:3; + u8 predictingSwitch:1; // Determines whether AI will use switch predictions this turn or not + u8 predictingMove:1; // Determines whether AI will use move predictions this turn or not + u8 aiPredictionInProgress:1; // Tracks whether the AI is in the middle of running prediction calculations + u8 padding:2; u8 shouldSwitch; // Stores result of ShouldSwitch, which decides whether a mon should be switched out u8 aiCalcInProgress:1; u8 battlerDoingPrediction; // Stores which battler is currently running its prediction calcs + u16 predictedMove[MAX_BATTLERS_COUNT]; }; -struct AI_ThinkingStruct +struct AiThinkingStruct { u8 aiState; u8 movesetIndex; u16 moveConsidered; s32 score[MAX_MON_MOVES]; u32 funcResult; - u32 aiFlags[MAX_BATTLERS_COUNT]; + u64 aiFlags[MAX_BATTLERS_COUNT]; u8 aiAction; u8 aiLogicId; struct AI_SavedBattleMon saved[MAX_BATTLERS_COUNT]; @@ -401,6 +385,8 @@ struct BattleCallbacksStack struct StatsArray { u16 stats[NUM_STATS]; + u16 level:15; + u16 learnMultipleMoves:1; }; struct BattleResources @@ -409,20 +395,11 @@ struct BattleResources struct BattleScriptsStack *battleScriptsStack; struct BattleCallbacksStack *battleCallbackStack; struct StatsArray *beforeLvlUp; - struct AI_ThinkingStruct *ai; - struct AiLogicData *aiData; - struct AIPartyData *aiParty; - struct BattleHistory *battleHistory; u8 bufferA[MAX_BATTLERS_COUNT][0x200]; u8 bufferB[MAX_BATTLERS_COUNT][0x200]; u8 transferBuffer[0x100]; }; -#define AI_THINKING_STRUCT ((struct AI_ThinkingStruct *)(gBattleResources->ai)) -#define AI_DATA ((struct AiLogicData *)(gBattleResources->aiData)) -#define AI_PARTY ((struct AIPartyData *)(gBattleResources->aiParty)) -#define BATTLE_HISTORY ((struct BattleHistory *)(gBattleResources->battleHistory)) - struct BattleResults { u8 playerFaintCounter; // 0x0 @@ -542,12 +519,15 @@ struct LinkBattlerHeader struct BattleEnigmaBerry battleEnigmaBerry; }; +enum IllusionState { + ILLUSION_NOT_SET, + ILLUSION_OFF, + ILLUSION_ON +}; + struct Illusion { - u8 on; - u8 set; - u8 broken; - u8 partyId; + enum IllusionState state; struct Pokemon *mon; }; @@ -562,7 +542,7 @@ struct ZMoveData struct DynamaxData { - u8 dynamaxTurns[MAX_BATTLERS_COUNT]; + u16 dynamaxTurns[MAX_BATTLERS_COUNT]; u16 baseMoves[MAX_BATTLERS_COUNT]; // base move of Max Move u16 lastUsedBaseMove; }; @@ -589,36 +569,12 @@ struct BattleVideo { rng_value_t rngSeed; }; -enum BattleIntroStates -{ - BATTLE_INTRO_STATE_GET_MON_DATA, - BATTLE_INTRO_STATE_LOOP_BATTLER_DATA, - BATTLE_INTRO_STATE_PREPARE_BG_SLIDE, - BATTLE_INTRO_STATE_WAIT_FOR_BG_SLIDE, - BATTLE_INTRO_STATE_DRAW_SPRITES, - BATTLE_INTRO_STATE_DRAW_PARTY_SUMMARY, - BATTLE_INTRO_STATE_WAIT_FOR_PARTY_SUMMARY, - BATTLE_INTRO_STATE_INTRO_TEXT, - BATTLE_INTRO_STATE_WAIT_FOR_INTRO_TEXT, - BATTLE_INTRO_STATE_TRAINER_SEND_OUT_TEXT, - BATTLE_INTRO_STATE_WAIT_FOR_TRAINER_SEND_OUT_TEXT, - BATTLE_INTRO_STATE_TRAINER_1_SEND_OUT_ANIM, - BATTLE_INTRO_STATE_TRAINER_2_SEND_OUT_ANIM, - BATTLE_INTRO_STATE_WAIT_FOR_TRAINER_2_SEND_OUT_ANIM, - BATTLE_INTRO_STATE_WAIT_FOR_WILD_BATTLE_TEXT, - BATTLE_INTRO_STATE_PRINT_PLAYER_SEND_OUT_TEXT, - BATTLE_INTRO_STATE_WAIT_FOR_PLAYER_SEND_OUT_TEXT, - BATTLE_INTRO_STATE_PRINT_PLAYER_1_SEND_OUT_TEXT, - BATTLE_INTRO_STATE_PRINT_PLAYER_2_SEND_OUT_TEXT, - BATTLE_INTRO_STATE_SET_DEX_AND_BATTLE_VARS -}; - struct BattlerState { u8 targetsDone[MAX_BATTLERS_COUNT]; u32 commandingDondozo:1; - u32 absentBattlerFlags:1; + u32 absent:1; u32 focusPunchBattlers:1; u32 multipleSwitchInBattlers:1; u32 alreadyStatusedMoveAttempt:1; // For example when using Thunder Wave on an already paralyzed Pokémon. @@ -631,17 +587,30 @@ struct BattlerState u32 usedMicleBerry:1; u32 pursuitTarget:1; u32 stompingTantrumTimer:2; + u32 canPickupItem:1; u32 padding:16; // End of Word }; +struct PartyState +{ + u32 intrepidSwordBoost:1; + u32 dauntlessShieldBoost:1; + u32 ateBerry:1; + u32 battleBondBoost:1; + u32 transformZeroToHero:1; + u32 supersweetSyrup:1; + u32 padding:26; +}; + // Cleared at the beginning of the battle. Fields need to be cleared when needed manually otherwise. struct BattleStruct { struct BattlerState battlerState[MAX_BATTLERS_COUNT]; - u8 turnEffectsTracker; + struct PartyState partyState[NUM_BATTLE_SIDES][PARTY_SIZE]; + u8 eventBlockCounter; u8 turnEffectsBattlerId; - u8 turnCountersTracker; + u8 endTurnEventsCounter; u16 wrappedMove[MAX_BATTLERS_COUNT]; u16 moveTarget[MAX_BATTLERS_COUNT]; u32 expShareExpValue; @@ -681,7 +650,6 @@ struct BattleStruct u8 stateIdAfterSelScript[MAX_BATTLERS_COUNT]; u8 prevSelectedPartySlot; u8 stringMoveType; - u8 absentBattlerFlags; u8 palaceFlags; // First 4 bits are "is <= 50% HP and not asleep" for each battler, last 4 bits are selected moves to pass to AI u8 field_93; // related to choosing pokemon? u8 wallyBattleState; @@ -704,7 +672,6 @@ struct BattleStruct u16 chosenItem[MAX_BATTLERS_COUNT]; u16 choicedMove[MAX_BATTLERS_COUNT]; u16 changedItems[MAX_BATTLERS_COUNT]; - u8 canPickupItem; u8 switchInBattlerCounter; u8 arenaTurnCounter; u8 turnSideTracker; @@ -713,18 +680,16 @@ struct BattleStruct struct LinkBattlerHeader linkBattlerHeader; struct BattleVideo battleVideo; } multiBuffer; - u8 wishPerishSongState; - u8 wishPerishSongBattlerId; u8 startingStatus:6; // status to apply at battle start. defined in constants/battle.h u8 startingStatusDone:1; u8 terrainDone:1; u8 overworldWeatherDone:1; - u8 obedienceResult:3; + u8 unused:3; 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. u8 friskedAbility:1; // If identifies two mons, show the ability pop-up only once. u8 fickleBeamBoosted:1; u8 poisonPuppeteerConfusion:1; - u8 startingStatusTimer; + u16 startingStatusTimer; u8 atkCancellerTracker; struct BattleTvMovePoints tvMovePoints; struct BattleTv tv; @@ -749,19 +714,14 @@ struct BattleStruct struct BattleGimmickData gimmick; const u8 *trainerSlideMsg; enum BattleIntroStates introState:8; - u8 ateBerry[NUM_BATTLE_SIDES]; // array id determined by side, each party pokemon as bit u8 stolenStats[NUM_BATTLE_STATS]; // hp byte is used for which stats to raise, other inform about by how many stages u8 lastMoveTarget[MAX_BATTLERS_COUNT]; // The last target on which each mon used a move, for the sake of Instruct u16 tracedAbility[MAX_BATTLERS_COUNT]; u16 hpBefore[MAX_BATTLERS_COUNT]; // Hp of battlers before using a move. For Berserk and Anger Shell. struct Illusion illusion[MAX_BATTLERS_COUNT]; - s32 aiFinalScore[MAX_BATTLERS_COUNT][MAX_BATTLERS_COUNT][MAX_MON_MOVES]; // AI, target, moves to make debugging easier - u8 aiMoveOrAction[MAX_BATTLERS_COUNT]; - u8 aiChosenTarget[MAX_BATTLERS_COUNT]; u8 soulheartBattlerId; u8 friskedBattler; // Frisk needs to identify 2 battlers in double battles. u8 sameMoveTurns[MAX_BATTLERS_COUNT]; // For Metronome, number of times the same moves has been SUCCESFULLY used. - u16 moveEffect2; // For Knock Off u16 changedSpecies[NUM_BATTLE_SIDES][PARTY_SIZE]; // For forms when multiple mons can change into the same pokemon. u8 quickClawBattlerId; struct LostItem itemLost[NUM_BATTLE_SIDES][PARTY_SIZE]; // Pokemon that had items consumed or stolen (two bytes per party member per side) @@ -783,7 +743,6 @@ struct BattleStruct u8 pledgeMove:1; u8 effectsBeforeUsingMoveDone:1; // Mega Evo and Focus Punch/Shell Trap effects. u8 spriteIgnore0Hp:1; - u8 battleBondTransformed[NUM_BATTLE_SIDES]; // Bitfield for each party. u8 bonusCritStages[MAX_BATTLERS_COUNT]; // G-Max Chi Strike boosts crit stages of allies. u8 itemPartyIndex[MAX_BATTLERS_COUNT]; u8 itemMoveIndex[MAX_BATTLERS_COUNT]; @@ -792,11 +751,7 @@ struct BattleStruct s32 aiDelayFrames; // Number of frames it took to choose an action. s32 aiDelayCycles; // Number of cycles it took to choose an action. u8 timesGotHit[NUM_BATTLE_SIDES][PARTY_SIZE]; - u8 transformZeroToHero[NUM_BATTLE_SIDES]; u8 stickySyrupdBy[MAX_BATTLERS_COUNT]; - u8 intrepidSwordBoost[NUM_BATTLE_SIDES]; - u8 dauntlessShieldBoost[NUM_BATTLE_SIDES]; - u8 supersweetSyrup[NUM_BATTLE_SIDES]; u8 supremeOverlordCounter[MAX_BATTLERS_COUNT]; u8 shellSideArmCategory[MAX_BATTLERS_COUNT][MAX_BATTLERS_COUNT]; u8 speedTieBreaks; // MAX_BATTLERS_COUNT! values. @@ -823,7 +778,6 @@ struct BattleStruct u8 numSpreadTargets:2; u8 bypassMoldBreakerChecks:1; // for ABILITYEFFECT_IMMUNITY u8 noTargetPresent:1; - u8 usedMicleBerry; struct MessageStatus slideMessageStatus; u8 trainerSlideSpriteIds[MAX_BATTLERS_COUNT]; u16 opponentMonCanTera:6; @@ -831,6 +785,17 @@ struct BattleStruct u16 padding:4; }; +struct AiBattleData +{ + s32 finalScore[MAX_BATTLERS_COUNT][MAX_BATTLERS_COUNT][MAX_MON_MOVES]; // AI, target, moves to make debugging easier + u8 playerStallMons[PARTY_SIZE]; + u8 chosenMoveIndex[MAX_BATTLERS_COUNT]; + u8 chosenTarget[MAX_BATTLERS_COUNT]; + u8 actionFlee:1; + u8 choiceWatch:1; + u8 padding:6; +}; + // The palaceFlags member of struct BattleStruct contains 1 flag per move to indicate which moves the AI should consider, // and 1 flag per battler to indicate whether the battler is awake and at <= 50% HP (which affects move choice). // The assert below is to ensure palaceFlags is large enough to store these flags without overlap. @@ -855,11 +820,6 @@ static inline bool32 IsBattleMoveStatus(u32 move) return GetMoveCategory(move) == DAMAGE_CATEGORY_STATUS; } -static inline bool32 IsBattleMoveRecoil(u32 move) -{ - return GetMoveRecoil(move) > 0 || GetMoveEffect(move) == EFFECT_RECOIL_IF_MISS; -} - /* Checks if 'battler' is any of the types. * Passing multiple types is more efficient than calling this multiple * times with one type because it shares the 'GetBattlerTypes' result. */ @@ -898,14 +858,6 @@ static inline bool32 IsBattleMoveRecoil(u32 move) gBattleMons[battler].types[2] = TYPE_MYSTERY; \ } -#define IS_BATTLER_PROTECTED(battler)(gProtectStructs[battler].protected \ - || gProtectStructs[battler].spikyShielded \ - || gProtectStructs[battler].kingsShielded \ - || gProtectStructs[battler].banefulBunkered \ - || gProtectStructs[battler].burningBulwarked \ - || gProtectStructs[battler].obstructed \ - || gProtectStructs[battler].silkTrapped) - #define GET_STAT_BUFF_ID(n) ((n & 7)) // first three bits 0x1, 0x2, 0x4 #define GET_STAT_BUFF_VALUE_WITH_SIGN(n) ((n & 0xF8)) #define GET_STAT_BUFF_VALUE(n) (((n >> 3) & 0xF)) // 0x8, 0x10, 0x20, 0x40 @@ -922,11 +874,11 @@ static inline bool32 IsBattleMoveRecoil(u32 move) // in include/constants/battle_script_commands.h struct BattleScripting { - s32 painSplitHp; + s32 unused1; s32 bideDmg; u8 multihitString[6]; bool8 expOnCatch; - u8 unused; + u8 unused2; u8 animArg1; u8 animArg2; u16 savedStringId; @@ -1142,6 +1094,11 @@ extern u8 gSentPokesToOpponent[2]; extern struct BattleEnigmaBerry gEnigmaBerries[MAX_BATTLERS_COUNT]; extern struct BattleScripting gBattleScripting; extern struct BattleStruct *gBattleStruct; +extern struct AiBattleData *gAiBattleData; +extern struct AiThinkingStruct *gAiThinkingStruct; +extern struct AiLogicData *gAiLogicData; +extern struct AiPartyData *gAiPartyData; +extern struct BattleHistory *gBattleHistory; extern u8 *gLinkBattleSendBuffer; extern u8 *gLinkBattleRecvBuffer; extern struct BattleResources *gBattleResources; @@ -1233,9 +1190,14 @@ static inline u32 GetBattlerSide(u32 battler) return GetBattlerPosition(battler) & BIT_SIDE; } +static inline u32 IsOnPlayerSide(u32 battler) +{ + return GetBattlerSide(battler) == B_SIDE_PLAYER; +} + static inline bool32 IsBattlerAlly(u32 battlerAtk, u32 battlerDef) { - return (GetBattlerSide(battlerAtk) == GetBattlerSide(battlerDef)); + return GetBattlerSide(battlerAtk) == GetBattlerSide(battlerDef); } static inline u32 GetOpposingSideBattler(u32 battler) @@ -1243,15 +1205,15 @@ static inline u32 GetOpposingSideBattler(u32 battler) return GetBattlerAtPosition(BATTLE_OPPOSITE(GetBattlerSide(battler))); } -static inline struct Pokemon* GetPartyBattlerData(u32 battler) +static inline struct Pokemon* GetBattlerMon(u32 battler) { u32 index = gBattlerPartyIndexes[battler]; - return (GetBattlerSide(battler) == B_SIDE_OPPONENT) ? &gEnemyParty[index] : &gPlayerParty[index]; + return !IsOnPlayerSide(battler) ? &gEnemyParty[index] : &gPlayerParty[index]; } static inline struct Pokemon *GetSideParty(u32 side) { - return (side == B_SIDE_PLAYER) ? gPlayerParty : gEnemyParty; + return side == B_SIDE_PLAYER ? gPlayerParty : gEnemyParty; } static inline struct Pokemon *GetBattlerParty(u32 battler) @@ -1283,12 +1245,4 @@ static inline bool32 IsBattlerInvalidForSpreadMove(u32 battlerAtk, u32 battlerDe || (battlerDef == BATTLE_PARTNER(battlerAtk) && (moveTarget == MOVE_TARGET_BOTH)); } -static inline bool32 IsBattlerSideProtected(u32 battler) -{ - return gSideStatuses[GetBattlerSide(battler)] & (SIDE_STATUS_WIDE_GUARD - | SIDE_STATUS_QUICK_GUARD - | SIDE_STATUS_CRAFTY_SHIELD - | SIDE_STATUS_MAT_BLOCK); -} - #endif // GUARD_BATTLE_H diff --git a/include/battle_ai_main.h b/include/battle_ai_main.h index b21b20751d..31d6437b97 100644 --- a/include/battle_ai_main.h +++ b/include/battle_ai_main.h @@ -6,41 +6,40 @@ typedef s32 (*AiScoreFunc)(u32, u32, u32, s32); #define UNKNOWN_NO_OF_HITS UINT32_MAX -// return vals for BattleAI_ChooseMoveOrAction -// 0 - 3 are move idx -#define AI_CHOICE_FLEE 4 -#define AI_CHOICE_WATCH 5 - // for AI_WhoStrikesFirst #define AI_IS_FASTER 1 #define AI_IS_SLOWER -1 // for stat increasing / decreasing scores -#define STAT_CHANGE_ATK 0 -#define STAT_CHANGE_DEF 1 -#define STAT_CHANGE_SPEED 2 -#define STAT_CHANGE_SPATK 3 -#define STAT_CHANGE_SPDEF 4 - -#define STAT_CHANGE_ATK_2 5 -#define STAT_CHANGE_DEF_2 6 -#define STAT_CHANGE_SPEED_2 7 -#define STAT_CHANGE_SPATK_2 8 -#define STAT_CHANGE_SPDEF_2 9 - -#define STAT_CHANGE_ACC 10 -#define STAT_CHANGE_EVASION 11 +enum StatChange +{ + STAT_CHANGE_ATK, + STAT_CHANGE_DEF, + STAT_CHANGE_SPEED, + STAT_CHANGE_SPATK, + STAT_CHANGE_SPDEF, + STAT_CHANGE_ATK_2, + STAT_CHANGE_DEF_2, + STAT_CHANGE_SPEED_2, + STAT_CHANGE_SPATK_2, + STAT_CHANGE_SPDEF_2, + STAT_CHANGE_ACC, + STAT_CHANGE_EVASION +}; #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 // Scores given in AI_CalcMoveEffectScore and AI_CalcHoldEffectMoveScore -#define NO_INCREASE 0 -#define WEAK_EFFECT 1 -#define DECENT_EFFECT 2 -#define GOOD_EFFECT 3 -#define BEST_EFFECT 4 +enum AIScore +{ + NO_INCREASE = 0, + WEAK_EFFECT = 1, + DECENT_EFFECT = 2, + GOOD_EFFECT = 3, + BEST_EFFECT = 4 +}; // AI_TryToFaint #define FAST_KILL 6 // AI is faster and faints target @@ -61,7 +60,7 @@ typedef s32 (*AiScoreFunc)(u32, u32, u32, s32); { \ TestRunner_Battle_AISetScore(__FILE__, __LINE__, battler, movesetIndex, val); \ } \ - AI_THINKING_STRUCT->score[movesetIndex] = val; \ + gAiThinkingStruct->score[movesetIndex] = val; \ } while (0) \ #define ADJUST_SCORE(val) \ @@ -69,7 +68,7 @@ typedef s32 (*AiScoreFunc)(u32, u32, u32, s32); { \ if (TESTING) \ { \ - TestRunner_Battle_AIAdjustScore(__FILE__, __LINE__, battlerAtk, AI_THINKING_STRUCT->movesetIndex, val); \ + TestRunner_Battle_AIAdjustScore(__FILE__, __LINE__, battlerAtk, gAiThinkingStruct->movesetIndex, val); \ } \ score += val; \ } while (0) \ @@ -79,7 +78,7 @@ typedef s32 (*AiScoreFunc)(u32, u32, u32, s32); { \ if (TESTING) \ { \ - TestRunner_Battle_AIAdjustScore(__FILE__, __LINE__, battlerAtk, AI_THINKING_STRUCT->movesetIndex, val); \ + TestRunner_Battle_AIAdjustScore(__FILE__, __LINE__, battlerAtk, gAiThinkingStruct->movesetIndex, val); \ } \ score += val; \ return score; \ @@ -90,7 +89,7 @@ typedef s32 (*AiScoreFunc)(u32, u32, u32, s32); { \ if (TESTING) \ { \ - TestRunner_Battle_AIAdjustScore(__FILE__, __LINE__, battlerAtk, AI_THINKING_STRUCT->movesetIndex, val); \ + TestRunner_Battle_AIAdjustScore(__FILE__, __LINE__, battlerAtk, gAiThinkingStruct->movesetIndex, val); \ } \ (*score) += val; \ } while (0) \ @@ -110,7 +109,8 @@ typedef s32 (*AiScoreFunc)(u32, u32, u32, s32); void BattleAI_SetupItems(void); void BattleAI_SetupFlags(void); void BattleAI_SetupAIData(u8 defaultScoreMoves, u32 battler); -u32 BattleAI_ChooseMoveOrAction(u32 battler); +void ComputeBattlerDecisions(u32 battler); +u32 BattleAI_ChooseMoveIndex(u32 battler); void Ai_InitPartyStruct(void); void Ai_UpdateSwitchInData(u32 battler); void Ai_UpdateFaintData(u32 battler); diff --git a/include/battle_ai_switch_items.h b/include/battle_ai_switch_items.h index f6cabcc684..b91d452097 100644 --- a/include/battle_ai_switch_items.h +++ b/include/battle_ai_switch_items.h @@ -32,6 +32,7 @@ enum ShouldSwitchScenario SHOULD_SWITCH_CHOICE_LOCKED, SHOULD_SWITCH_ATTACKING_STAT_MINUS_TWO, SHOULD_SWITCH_ATTACKING_STAT_MINUS_THREE_PLUS, + SHOULD_SWITCH_ALL_SCORES_BAD, }; enum SwitchType @@ -45,5 +46,6 @@ void AI_TrySwitchOrUseItem(u32 battler); u32 GetMostSuitableMonToSwitchInto(u32 battler, enum SwitchType switchType); bool32 ShouldSwitch(u32 battler); bool32 IsMonGrounded(u16 heldItemEffect, u32 ability, u8 type1, u8 type2); +void ModifySwitchAfterMoveScoring(u32 battler); #endif // GUARD_BATTLE_AI_SWITCH_ITEMS_H diff --git a/include/battle_ai_util.h b/include/battle_ai_util.h index d8dca70130..66fe8d550d 100644 --- a/include/battle_ai_util.h +++ b/include/battle_ai_util.h @@ -1,6 +1,8 @@ #ifndef GUARD_BATTLE_AI_UTIL_H #define GUARD_BATTLE_AI_UTIL_H +#include "battle_ai_main.h" + #define FOE(battler) ((BATTLE_OPPOSITE(battler)) & BIT_SIDE) // Roll boundaries used by AI when scoring. Doesn't affect actual damage dealt. @@ -15,6 +17,12 @@ enum DamageRollType DMG_ROLL_HIGHEST, }; +enum DamageCalcContext +{ + AI_DEFENDING, + AI_ATTACKING, +}; + enum AIPivot { DONT_PIVOT, @@ -30,10 +38,19 @@ enum WeatherState WEATHER_INACTIVE_AND_BLOCKED, }; +static inline bool32 IsMoveUnusable(u32 moveIndex, u32 move, u32 moveLimitations) +{ + return move == MOVE_NONE + || move == MOVE_UNAVAILABLE + || moveLimitations & 1u << moveIndex; +} + +typedef bool32 (*MoveFlag)(u32 move); + bool32 AI_IsFaster(u32 battlerAi, u32 battlerDef, u32 move); bool32 AI_IsSlower(u32 battlerAi, u32 battlerDef, u32 move); bool32 AI_RandLessThan(u32 val); -u32 GetDmgRollType(u32 battlerAtk); +u32 AI_GetDamage(u32 battlerAtk, u32 battlerDef, u32 moveIndex, enum DamageCalcContext calcContext, struct AiLogicData *aiData); bool32 IsAiVsAiBattle(void); bool32 BattlerHasAi(u32 battlerId); bool32 IsAiBattlerAware(u32 battlerId); @@ -54,21 +71,23 @@ u32 GetTotalBaseStat(u32 species); bool32 IsTruantMonVulnerable(u32 battlerAI, u32 opposingBattler); bool32 AI_BattlerAtMaxHp(u32 battler); u32 GetHealthPercentage(u32 battler); -bool32 IsBattlerTrapped(u32 battler, bool32 switching); +bool32 AI_CanBattlerEscape(u32 battler); +bool32 IsBattlerTrapped(u32 battlerAtk, u32 battlerDef); 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); +u32 GetBestDmgMoveFromBattler(u32 battlerAtk, u32 battlerDef, enum DamageCalcContext calcContext); +u32 GetBestDmgFromBattler(u32 battler, u32 battlerTarget, enum DamageCalcContext calcContext); 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); -u32 AI_DecideHoldEffectForTurn(u32 battlerId); +enum ItemHoldEffect AI_DecideHoldEffectForTurn(u32 battlerId); bool32 DoesBattlerIgnoreAbilityChecks(u32 battlerAtk, u32 atkAbility, u32 move); u32 AI_GetWeather(void); enum WeatherState IsWeatherActive(u32 flags); bool32 CanAIFaintTarget(u32 battlerAtk, u32 battlerDef, u32 numHits); -bool32 CanIndexMoveFaintTarget(u32 battlerAtk, u32 battlerDef, u32 index, u32 numHits); +bool32 CanIndexMoveFaintTarget(u32 battlerAtk, u32 battlerDef, u32 index, enum DamageCalcContext calcContext); +bool32 CanIndexMoveGuaranteeFaintTarget(u32 battlerAtk, u32 battlerDef, u32 index); bool32 HasDamagingMove(u32 battlerId); bool32 HasDamagingMoveOfType(u32 battlerId, u32 type); u32 GetBattlerSecondaryDamage(u32 battlerId); @@ -78,8 +97,8 @@ bool32 ShouldTryOHKO(u32 battlerAtk, u32 battlerDef, u32 atkAbility, u32 defAbil bool32 ShouldUseRecoilMove(u32 battlerAtk, u32 battlerDef, u32 recoilDmg, u32 moveIndex); u32 GetBattlerSideSpeedAverage(u32 battler); bool32 ShouldAbsorb(u32 battlerAtk, u32 battlerDef, u32 move, s32 damage); -bool32 ShouldRecover(u32 battlerAtk, u32 battlerDef, u32 move, u32 healPercent); -bool32 ShouldSetScreen(u32 battlerAtk, u32 battlerDef, u32 moveEffect); +bool32 ShouldRecover(u32 battlerAtk, u32 battlerDef, u32 move, u32 healPercent, enum DamageCalcContext calcContext); +bool32 ShouldSetScreen(u32 battlerAtk, u32 battlerDef, enum BattleMoveEffects moveEffect); enum AIPivot ShouldPivot(u32 battlerAtk, u32 battlerDef, u32 defAbility, u32 move, u32 moveIndex); bool32 IsRecycleEncouragedItem(u32 item); bool32 ShouldRestoreHpBerry(u32 battlerAtk, u32 item); @@ -87,13 +106,13 @@ bool32 IsStatBoostingBerry(u32 item); bool32 CanKnockOffItem(u32 battler, u32 item); bool32 IsAbilityOfRating(u32 ability, s8 rating); bool32 AI_IsAbilityOnSide(u32 battlerId, u32 ability); -bool32 AI_MoveMakesContact(u32 ability, u32 holdEffect, u32 move); +bool32 AI_MoveMakesContact(u32 ability, enum ItemHoldEffect holdEffect, u32 move); bool32 ShouldUseZMove(u32 battlerAtk, u32 battlerDef, u32 chosenMove); u32 AI_GetBattlerAbility(u32 battler); // stat stage checks bool32 AnyStatIsRaised(u32 battlerId); -bool32 ShouldLowerStat(u32 battlerAtk, u32 battlerDef, u32 battlerAbility, u32 stat); +bool32 ShouldLowerStat(u32 battlerAtk, u32 battlerDef, u32 abilityDef, u32 stat); bool32 BattlerStatCanRise(u32 battler, u32 battlerAbility, u32 stat); bool32 AreBattlersStatsMaxed(u32 battler); u32 CountPositiveStatStages(u32 battlerId); @@ -107,43 +126,44 @@ bool32 ShouldLowerAccuracy(u32 battlerAtk, u32 battlerDef, u32 defAbility); bool32 ShouldLowerEvasion(u32 battlerAtk, u32 battlerDef, u32 defAbility); // move checks -bool32 IsAffectedByPowder(u32 battler, u32 ability, u32 holdEffect); +bool32 IsAffectedByPowder(u32 battler, u32 ability, enum ItemHoldEffect holdEffect); bool32 MovesWithCategoryUnusable(u32 attacker, u32 target, u32 category); s32 AI_WhichMoveBetter(u32 move1, u32 move2, u32 battlerAtk, u32 battlerDef, s32 noOfHitsToKo); -struct SimulatedDamage AI_CalcDamageSaveBattlers(u32 move, u32 battlerAtk, u32 battlerDef, uq4_12_t *typeEffectiveness, bool32 considerZPower, enum DamageRollType rollType); -struct SimulatedDamage AI_CalcDamage(u32 move, u32 battlerAtk, u32 battlerDef, uq4_12_t *typeEffectiveness, bool32 considerZPower, u32 weather, enum DamageRollType rollType); +struct SimulatedDamage AI_CalcDamageSaveBattlers(u32 move, u32 battlerAtk, u32 battlerDef, uq4_12_t *typeEffectiveness, bool32 considerZPower); +struct SimulatedDamage AI_CalcDamage(u32 move, u32 battlerAtk, u32 battlerDef, uq4_12_t *typeEffectiveness, bool32 considerZPower, u32 weather); bool32 AI_IsDamagedByRecoil(u32 battler); u32 GetNoOfHitsToKO(u32 dmg, s32 hp); u32 GetNoOfHitsToKOBattlerDmg(u32 dmg, u32 battlerDef); -u32 GetNoOfHitsToKOBattler(u32 battlerAtk, u32 battlerDef, u32 moveIndex); -u32 GetCurrDamageHpPercent(u32 battlerAtk, u32 battlerDef); +u32 GetNoOfHitsToKOBattler(u32 battlerAtk, u32 battlerDef, u32 moveIndex, enum DamageCalcContext calcContext); +u32 GetCurrDamageHpPercent(u32 battlerAtk, u32 battlerDef, enum DamageCalcContext calcContext); uq4_12_t AI_GetMoveEffectiveness(u32 move, u32 battlerAtk, u32 battlerDef); u16 *GetMovesArray(u32 battler); -bool32 IsConfusionMoveEffect(u32 moveEffect); +bool32 IsConfusionMoveEffect(enum BattleMoveEffects moveEffect); bool32 HasMove(u32 battlerId, u32 move); bool32 HasOnlyMovesWithCategory(u32 battlerId, u32 category, bool32 onlyOffensive); bool32 HasMoveWithCategory(u32 battler, u32 category); bool32 HasMoveWithType(u32 battler, u32 type); -bool32 HasMoveEffect(u32 battlerId, u32 moveEffect); -bool32 IsPowerBasedOnStatus(u32 battlerId, u32 effect, u32 argument); +bool32 HasMoveWithEffect(u32 battlerId, enum BattleMoveEffects moveEffect); +bool32 HasNonVolatileMoveEffect(u32 battlerId, u32 effect); +bool32 IsPowerBasedOnStatus(u32 battlerId, enum BattleMoveEffects effect, u32 argument); bool32 HasMoveWithAdditionalEffect(u32 battlerId, u32 moveEffect); bool32 HasMoveWithCriticalHitChance(u32 battlerId); -bool32 HasMoveWithMoveEffectExcept(u32 battlerId, u32 moveEffect, u32 exception); +bool32 HasMoveWithMoveEffectExcept(u32 battlerId, u32 moveEffect, enum BattleMoveEffects exception); bool32 HasMoveThatLowersOwnStats(u32 battlerId); bool32 HasMoveWithLowAccuracy(u32 battlerAtk, u32 battlerDef, u32 accCheck, bool32 ignoreStatus, u32 atkAbility, u32 defAbility, u32 atkHoldEffect, u32 defHoldEffect); bool32 HasAnyKnownMove(u32 battlerId); -bool32 IsAromaVeilProtectedEffect(u32 moveEffect); -bool32 IsNonVolatileStatusMoveEffect(u32 moveEffect); +bool32 IsAromaVeilProtectedEffect(enum BattleMoveEffects moveEffect); +bool32 IsNonVolatileStatusMove(u32 moveEffect); bool32 IsMoveRedirectionPrevented(u32 battlerAtk, u32 move, u32 atkAbility); bool32 IsMoveEncouragedToHit(u32 battlerAtk, u32 battlerDef, u32 move); bool32 IsHazardMove(u32 move); bool32 IsTwoTurnNotSemiInvulnerableMove(u32 battlerAtk, u32 move); void ProtectChecks(u32 battlerAtk, u32 battlerDef, u32 move, u32 predictedMove, s32 *score); -bool32 ShouldSetSandstorm(u32 battler, u32 ability, u32 holdEffect); -bool32 ShouldSetHail(u32 battler, u32 ability, u32 holdEffect); -bool32 ShouldSetSnow(u32 battler, u32 ability, u32 holdEffect); -bool32 ShouldSetRain(u32 battlerAtk, u32 ability, u32 holdEffect); -bool32 ShouldSetSun(u32 battlerAtk, u32 atkAbility, u32 holdEffect); +bool32 ShouldSetSandstorm(u32 battler, u32 ability, enum ItemHoldEffect holdEffect); +bool32 ShouldSetHail(u32 battler, u32 ability, enum ItemHoldEffect holdEffect); +bool32 ShouldSetSnow(u32 battler, u32 ability, enum ItemHoldEffect holdEffect); +bool32 ShouldSetRain(u32 battlerAtk, u32 ability, enum ItemHoldEffect holdEffect); +bool32 ShouldSetSun(u32 battlerAtk, u32 atkAbility, enum ItemHoldEffect holdEffect); bool32 HasSleepMoveWithLowAccuracy(u32 battlerAtk, u32 battlerDef); bool32 IsHealingMove(u32 move); bool32 HasHealingEffect(u32 battler); @@ -151,31 +171,29 @@ bool32 IsTrappingMove(u32 move); bool32 HasTrappingMoveEffect(u32 battler); bool32 ShouldFakeOut(u32 battlerAtk, u32 battlerDef, u32 move); bool32 HasThawingMove(u32 battler); -bool32 IsStatRaisingEffect(u32 effect); -bool32 IsStatLoweringEffect(u32 effect); -bool32 IsSelfStatLoweringEffect(u32 effect); -bool32 IsSwitchOutEffect(u32 effect); -bool32 IsChaseEffect(u32 effect); -bool32 IsAttackBoostMoveEffect(u32 effect); -bool32 IsUngroundingEffect(u32 effect); +bool32 IsStatRaisingEffect(enum BattleMoveEffects effect); +bool32 IsStatLoweringEffect(enum BattleMoveEffects effect); +bool32 IsSelfStatLoweringEffect(enum BattleMoveEffects effect); +bool32 IsSwitchOutEffect(enum BattleMoveEffects effect); +bool32 IsChaseEffect(enum BattleMoveEffects effect); +bool32 IsAttackBoostMoveEffect(enum BattleMoveEffects effect); +bool32 IsUngroundingEffect(enum BattleMoveEffects effect); bool32 IsSemiInvulnerable(u32 battlerDef, u32 move); -bool32 HasSubstituteIgnoringMove(u32 battler); -bool32 HasHighCritRatioMove(u32 battler); -bool32 HasMagicCoatAffectedMove(u32 battler); -bool32 HasSnatchAffectedMove(u32 battler); +bool32 HasMoveWithFlag(u32 battler, MoveFlag getFlag); bool32 IsHazardClearingMove(u32 move); -bool32 IsSubstituteEffect(u32 effect); +bool32 IsSubstituteEffect(enum BattleMoveEffects effect); // status checks -bool32 AI_CanGetFrostbite(u32 battler, u32 ability); bool32 AI_CanBeConfused(u32 battlerAtk, u32 battlerDef, u32 move, u32 ability); bool32 IsBattlerIncapacitated(u32 battler, u32 ability); bool32 AI_CanPutToSleep(u32 battlerAtk, u32 battlerDef, u32 defAbility, u32 move, u32 partnerMove); -bool32 ShouldPoisonSelf(u32 battler, u32 ability); +bool32 ShouldPoison(u32 battlerAtk, u32 battlerDef); bool32 AI_CanPoison(u32 battlerAtk, u32 battlerDef, u32 defAbility, u32 move, u32 partnerMove); bool32 AI_CanParalyze(u32 battlerAtk, u32 battlerDef, u32 defAbility, u32 move, u32 partnerMove); bool32 AI_CanConfuse(u32 battlerAtk, u32 battlerDef, u32 defAbility, u32 battlerAtkPartner, u32 move, u32 partnerMove); -bool32 ShouldBurnSelf(u32 battler, u32 ability); +bool32 ShouldBurn(u32 battlerAtk, u32 battlerDef, u32 abilityDef); +bool32 ShouldFreezeOrFrostbite(u32 battlerAtk, u32 battlerDef, u32 abilityDef); +bool32 ShouldParalyze(u32 battlerAtk, u32 battlerDef, u32 abilityDef); bool32 AI_CanBurn(u32 battlerAtk, u32 battlerDef, u32 defAbility, u32 battlerAtkPartner, u32 move, u32 partnerMove); bool32 AI_CanGiveFrostbite(u32 battlerAtk, u32 battlerDef, u32 defAbility, u32 battlerAtkPartner, u32 move, u32 partnerMove); bool32 AI_CanBeInfatuated(u32 battlerAtk, u32 battlerDef, u32 defAbility); @@ -185,6 +203,10 @@ bool32 ShouldTrap(u32 battlerAtk, u32 battlerDef, u32 move); bool32 IsWakeupTurn(u32 battler); bool32 AI_IsBattlerAsleepOrComatose(u32 battlerId); +// ability logic +bool32 IsMoxieTypeAbility(u32 ability); +bool32 ShouldTriggerAbility(u32 battler, u32 ability); + // partner logic #define IS_TARGETING_PARTNER(battlerAtk, battlerDef)((battlerAtk) == (battlerDef ^ BIT_FLANK)) u32 GetAllyChosenMove(u32 battlerId); @@ -194,12 +216,14 @@ bool32 PartnerHasSameMoveEffectWithoutTarget(u32 battlerAtkPartner, u32 move, u3 bool32 PartnerMoveEffectIsStatusSameTarget(u32 battlerAtkPartner, u32 battlerDef, u32 partnerMove); bool32 IsMoveEffectWeather(u32 move); bool32 PartnerMoveEffectIsTerrain(u32 battlerAtkPartner, u32 partnerMove); -bool32 PartnerMoveEffectIs(u32 battlerAtkPartner, u32 partnerMove, u32 effectCheck); +bool32 PartnerMoveEffectIs(u32 battlerAtkPartner, u32 partnerMove, enum BattleMoveEffects effectCheck); bool32 PartnerMoveIs(u32 battlerAtkPartner, u32 partnerMove, u32 moveCheck); bool32 PartnerMoveIsSameAsAttacker(u32 battlerAtkPartner, u32 battlerDef, u32 move, u32 partnerMove); bool32 PartnerMoveIsSameNoTarget(u32 battlerAtkPartner, u32 move, u32 partnerMove); bool32 PartnerMoveActivatesSleepClause(u32 move); bool32 ShouldUseWishAromatherapy(u32 battlerAtk, u32 battlerDef, u32 move); +u32 GetFriendlyFireKOThreshold(u32 battler); +bool32 IsAllyProtectingFromMove(u32 battlerAtk, u32 attackerMove, u32 allyMove); // party logic struct BattlePokemon *AllocSaveBattleMons(void); @@ -210,8 +234,8 @@ bool32 PartyHasMoveCategory(u32 battlerId, u32 category); bool32 SideHasMoveCategory(u32 battlerId, u32 category); // score increases -u32 IncreaseStatUpScore(u32 battlerAtk, u32 battlerDef, u32 statId); -u32 IncreaseStatUpScoreContrary(u32 battlerAtk, u32 battlerDef, u32 statId); +u32 IncreaseStatUpScore(u32 battlerAtk, u32 battlerDef, enum StatChange statId); +u32 IncreaseStatUpScoreContrary(u32 battlerAtk, u32 battlerDef, enum StatChange 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); @@ -219,7 +243,7 @@ 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, bool32 isPartyMonAttacker, enum DamageRollType rollType); +s32 AI_CalcPartyMonDamage(u32 move, u32 battlerAtk, u32 battlerDef, struct BattlePokemon switchinCandidate, enum DamageCalcContext calcContext); u32 AI_WhoStrikesFirstPartyMon(u32 battlerAtk, u32 battlerDef, struct BattlePokemon switchinCandidate, u32 moveConsidered); s32 AI_TryToClearStats(u32 battlerAtk, u32 battlerDef, bool32 isDoubleBattle); bool32 AI_ShouldCopyStatChanges(u32 battlerAtk, u32 battlerDef); @@ -229,6 +253,9 @@ bool32 AI_ShouldSpicyExtract(u32 battlerAtk, u32 battlerAtkPartner, u32 move, st u32 IncreaseSubstituteMoveScore(u32 battlerAtk, u32 battlerDef, u32 move); bool32 IsBattlerItemEnabled(u32 battler); bool32 IsBattlerPredictedToSwitch(u32 battler); +u32 GetIncomingMove(u32 battler, u32 opposingBattler, struct AiLogicData *aiData); bool32 HasLowAccuracyMove(u32 battlerAtk, u32 battlerDef); +bool32 HasBattlerSideAbility(u32 battlerDef, u32 ability, struct AiLogicData *aiData); +u32 GetThinkingBattler(u32 battler); #endif //GUARD_BATTLE_AI_UTIL_H diff --git a/include/battle_anim.h b/include/battle_anim.h index 5b5cc2b109..e62c170cc0 100644 --- a/include/battle_anim.h +++ b/include/battle_anim.h @@ -38,7 +38,7 @@ struct BattleAnimBgData struct BattleAnimBackground { const u32 *image; - const u32 *palette; + const u16 *palette; const u32 *tilemap; }; @@ -239,7 +239,7 @@ u8 LaunchBallFadeMonTask(bool8 unfadeLater, u8 spritePalNum, u32 selectedPalette bool32 IsCriticalCapture(void); // battle_anim_utility_funcs.c void InitStatsChangeAnimation(u8 taskId); -void StartMonScrollingBgMask(u8 taskId, int UNUSED unused, u16 scrollSpeed, u8 battler, bool8 includePartner, u8 numFadeSteps, u8 fadeStepDelay, u8 duration, const u32 *gfx, const u32 *tilemap, const u32 *palette); +void StartMonScrollingBgMask(u8 taskId, int UNUSED unused, u16 scrollSpeed, u8 battler, bool8 includePartner, u8 numFadeSteps, u8 fadeStepDelay, u8 duration, const u32 *gfx, const u32 *tilemap, const u16 *palette); // battle_anim_effects_1.c void AnimFalseSwipeSlice_Step3(struct Sprite *); @@ -433,7 +433,7 @@ extern const struct OamData gOamData_AffineOff_ObjBlend_16x32; extern const struct OamData gOamData_AffineDouble_ObjBlend_32x8; extern const struct CompressedSpriteSheet gBattleAnimPicTable[]; -extern const struct CompressedSpritePalette gBattleAnimPaletteTable[]; +extern const struct SpritePalette gBattleAnimPaletteTable[]; extern const struct SpriteTemplate gWaterHitSplatSpriteTemplate; @@ -554,6 +554,8 @@ void AnimDracoMeteorRock(struct Sprite *sprite); void CoreEnforcerLoadBeamTarget(struct Sprite *sprite); void SpriteCB_RandomCentredHits(struct Sprite *sprite); void InitSpritePosToAnimTargetsCentre(struct Sprite *sprite, bool32 respectMonPicOffsets); +extern const union AffineAnimCmd *const gSpriteAffineAnimTable_PrimalSymbol[]; +extern const union AffineAnimCmd *const gSpriteAffineAnimTable_MegaSymbol[]; // battle_anim_bug.c void AnimTranslateStinger(struct Sprite *sprite); diff --git a/include/battle_anim_scripts.h b/include/battle_anim_scripts.h index 6c49788975..0bffbda8ea 100644 --- a/include/battle_anim_scripts.h +++ b/include/battle_anim_scripts.h @@ -1003,6 +1003,7 @@ extern const u8 gBattleAnimGeneral_Fog[]; extern const u8 gBattleAnimGeneral_TeraCharge[]; extern const u8 gBattleAnimGeneral_TeraActivate[]; extern const u8 gBattleAnimGeneral_SimpleHeal[]; +extern const u8 gBattleAnimGeneral_PowerConstruct[]; // special animations extern const u8 gBattleAnimSpecial_LevelUp[]; diff --git a/include/battle_arena.h b/include/battle_arena.h index 469c096129..b282009c60 100644 --- a/include/battle_arena.h +++ b/include/battle_arena.h @@ -8,7 +8,7 @@ u8 BattleArena_ShowJudgmentWindow(u8 *state); void BattleArena_InitPoints(void); void BattleArena_AddMindPoints(u8 battler); void BattleArena_AddSkillPoints(u8 battler); -void BattleArena_DeductSkillPoints(u8 battler, u16 stringId); +void BattleArena_DeductSkillPoints(u8 battler, enum StringID stringId); void DrawArenaRefereeTextBox(void); void EraseArenaRefereeTextBox(void); diff --git a/include/battle_controllers.h b/include/battle_controllers.h index 3eddc95578..8f2d78ed41 100644 --- a/include/battle_controllers.h +++ b/include/battle_controllers.h @@ -268,8 +268,8 @@ void BtlController_EmitTrainerSlideBack(u32 battler, u32 bufferId); void BtlController_EmitFaintAnimation(u32 battler, u32 bufferId); void BtlController_EmitBallThrowAnim(u32 battler, u32 bufferId, u8 caseId); void BtlController_EmitMoveAnimation(u32 battler, u32 bufferId, u16 move, u8 turnOfMove, u16 movePower, s32 dmg, u8 friendship, struct DisableStruct *disableStructPtr, u8 multihit); -void BtlController_EmitPrintString(u32 battler, u32 bufferId, u16 stringId); -void BtlController_EmitPrintSelectionString(u32 battler, u32 bufferId, u16 stringId); +void BtlController_EmitPrintString(u32 battler, u32 bufferId, enum StringID stringId); +void BtlController_EmitPrintSelectionString(u32 battler, u32 bufferId, enum StringID stringId); void BtlController_EmitChooseAction(u32 battler, u32 bufferId, u8 action, u16 itemId); void BtlController_EmitYesNoBox(u32 battler, u32 bufferId); void BtlController_EmitChooseMove(u32 battler, u32 bufferId, bool8 isDoubleBattle, bool8 NoPpNumber, struct ChooseMoveStruct *movePpData); @@ -329,10 +329,6 @@ void BtlController_HandleHealthBarUpdate(u32 battler, bool32 updateHpText); void DoStatusIconUpdate(u32 battler); void BtlController_HandleStatusIconUpdate(u32 battler); void BtlController_HandleStatusAnimation(u32 battler); -void BtlController_HandleClearUnkVar(u32 battler); -void BtlController_HandleSetUnkVar(u32 battler); -void BtlController_HandleClearUnkFlag(u32 battler); -void BtlController_HandleToggleUnkFlag(u32 battler); void BtlController_HandleHitAnimation(u32 battler); void BtlController_HandlePlaySE(u32 battler); void BtlController_HandlePlayFanfareOrBGM(u32 battler); @@ -341,7 +337,7 @@ void BtlController_HandleIntroSlide(u32 battler); void BtlController_HandleSpriteInvisibility(u32 battler); bool32 TwoPlayerIntroMons(u32 battlerId); // Double battle with both player pokemon active. bool32 TwoOpponentIntroMons(u32 battlerId); // Double battle with both opponent pokemon active. -void BtlController_HandleIntroTrainerBallThrow(u32 battler, u16 tagTrainerPal, const u32 *trainerPal, s16 framesToWait, void (*controllerCallback)(u32 battler)); +void BtlController_HandleIntroTrainerBallThrow(u32 battler, u16 tagTrainerPal, const u16 *trainerPal, s16 framesToWait, void (*controllerCallback)(u32 battler)); void BtlController_HandleDrawPartyStatusSummary(u32 battler, u32 side, bool32 considerDelay); void BtlController_HandleHidePartyStatusSummary(u32 battler); void BtlController_HandleBattleAnimation(u32 battler, bool32 ignoreSE, bool32 updateTvData); @@ -394,4 +390,13 @@ void SetControllerToLinkOpponent(u32 battler); // link partner void SetControllerToLinkPartner(u32 battler); +void TrySetBattlerShadowSpriteCallback(u32 battler); + +bool32 TryShinyAnimAfterMonAnimUtil(u32 battler); +bool32 SwitchIn_ShowSubstituteUtil(u32 battler); +bool32 SwitchIn_WaitAndEndUtil(u32 battler); +bool32 SwitchIn_HandleSoundAndEndUtil(u32 battler); +bool32 SwitchIn_ShowHealthboxUtil(u32 battler); +bool32 SwitchIn_TryShinyAnimUtil(u32 battler); + #endif // GUARD_BATTLE_CONTROLLERS_H diff --git a/include/battle_dynamax.h b/include/battle_dynamax.h index 0762601c89..ed295bb1e6 100644 --- a/include/battle_dynamax.h +++ b/include/battle_dynamax.h @@ -20,8 +20,6 @@ void ChooseDamageNonTypesString(u8 type); void BS_UpdateDynamax(void); void BS_SetSteelsurge(void); -void BS_TrySetStatus1(void); -void BS_TrySetStatus2(void); void BS_HealOneSixth(void); void BS_TryRecycleBerry(void); void BS_JumpIfDynamaxed(void); diff --git a/include/battle_end_turn.h b/include/battle_end_turn.h new file mode 100644 index 0000000000..468544cf2b --- /dev/null +++ b/include/battle_end_turn.h @@ -0,0 +1,7 @@ +#ifndef GUARD_BATTLE_END_TURN +#define GUARD_BATTLE_END_TURN + +u32 DoEndTurnEffects(void); + +#endif // GUARD_BATTLE_END_TURN + diff --git a/include/battle_factory.h b/include/battle_factory.h index d414bdb3b1..c266cc32c5 100644 --- a/include/battle_factory.h +++ b/include/battle_factory.h @@ -6,7 +6,7 @@ bool8 InBattleFactory(void); u8 GetFactoryMonFixedIV(u8 challengeNum, bool8 isLastBattle); void FillFactoryBrainParty(void); u8 GetNumPastRentalsRank(u8 battleMode, u8 lvlMode); -u32 GetAiScriptsInBattleFactory(void); +u64 GetAiScriptsInBattleFactory(void); void SetMonMoveAvoidReturn(struct Pokemon *mon, u16 moveArg, u8 moveSlot); #endif // GUARD_BATTLE_FACTORY_H diff --git a/include/battle_gimmick.h b/include/battle_gimmick.h index d0e975462a..42b8c7255a 100644 --- a/include/battle_gimmick.h +++ b/include/battle_gimmick.h @@ -39,7 +39,6 @@ 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); diff --git a/include/battle_interface.h b/include/battle_interface.h index ca2e415f12..5bc1e10aa7 100644 --- a/include/battle_interface.h +++ b/include/battle_interface.h @@ -3,6 +3,14 @@ #include "battle_controllers.h" +// used for sBattlerCoords and sBattlerHealthboxCoords +enum BattleCoordTypes +{ + BATTLE_COORDS_SINGLES, + BATTLE_COORDS_DOUBLES, + BATTLE_COORDS_COUNT, +}; + enum { HP_CURRENT, @@ -100,7 +108,7 @@ enum HEALTHBOX_SAFARI_BALLS_TEXT }; -u32 WhichBattleCoords(u32 battlerId); +enum BattleCoordTypes GetBattlerCoordsIndex(u32 battler); u8 CreateBattlerHealthboxSprites(u8 battler); u8 CreateSafariPlayerHealthboxSprites(void); void SetBattleBarStruct(u8 battler, u8 healthboxSpriteId, s32 maxVal, s32 oldVal, s32 receivedValue); diff --git a/include/battle_main.h b/include/battle_main.h index d2c2ef7ece..42c2dc2b32 100644 --- a/include/battle_main.h +++ b/include/battle_main.h @@ -3,6 +3,7 @@ #include "pokemon.h" #include "data.h" +#include "constants/hold_effects.h" // For displaying a multi battle partner's Pokémon in the party menu struct MultiPartnerMenuPokemon @@ -23,7 +24,32 @@ struct MultiPartnerMenuPokemon #define BOUNCE_MON 0x0 #define BOUNCE_HEALTHBOX 0x1 -enum { +enum BattleIntroStates +{ + BATTLE_INTRO_STATE_GET_MON_DATA, + BATTLE_INTRO_STATE_LOOP_BATTLER_DATA, + BATTLE_INTRO_STATE_PREPARE_BG_SLIDE, + BATTLE_INTRO_STATE_WAIT_FOR_BG_SLIDE, + BATTLE_INTRO_STATE_DRAW_SPRITES, + BATTLE_INTRO_STATE_DRAW_PARTY_SUMMARY, + BATTLE_INTRO_STATE_WAIT_FOR_PARTY_SUMMARY, + BATTLE_INTRO_STATE_INTRO_TEXT, + BATTLE_INTRO_STATE_WAIT_FOR_INTRO_TEXT, + BATTLE_INTRO_STATE_TRAINER_SEND_OUT_TEXT, + BATTLE_INTRO_STATE_WAIT_FOR_TRAINER_SEND_OUT_TEXT, + BATTLE_INTRO_STATE_TRAINER_1_SEND_OUT_ANIM, + BATTLE_INTRO_STATE_TRAINER_2_SEND_OUT_ANIM, + BATTLE_INTRO_STATE_WAIT_FOR_TRAINER_2_SEND_OUT_ANIM, + BATTLE_INTRO_STATE_WAIT_FOR_WILD_BATTLE_TEXT, + BATTLE_INTRO_STATE_PRINT_PLAYER_SEND_OUT_TEXT, + BATTLE_INTRO_STATE_WAIT_FOR_PLAYER_SEND_OUT_TEXT, + BATTLE_INTRO_STATE_PRINT_PLAYER_1_SEND_OUT_TEXT, + BATTLE_INTRO_STATE_PRINT_PLAYER_2_SEND_OUT_TEXT, + BATTLE_INTRO_STATE_SET_DEX_AND_BATTLE_VARS +}; + +enum FirstTurnEventsStates +{ FIRST_TURN_EVENTS_START, FIRST_TURN_EVENTS_OVERWORLD_WEATHER, FIRST_TURN_EVENTS_TERRAIN, @@ -69,12 +95,12 @@ u8 IsRunningFromBattleImpossible(u32 battler); void SwitchTwoBattlersInParty(u32 battler, u32 battler2); void SwitchPartyOrder(u32 battler); void SwapTurnOrder(u8 id1, u8 id2); -u32 GetBattlerTotalSpeedStatArgs(u32 battler, u32 ability, u32 holdEffect); +u32 GetBattlerTotalSpeedStatArgs(u32 battler, u32 ability, enum ItemHoldEffect holdEffect); u32 GetBattlerTotalSpeedStat(u32 battler); -s8 GetChosenMovePriority(u32 battlerId); -s8 GetBattleMovePriority(u32 battlerId, u16 move); +s32 GetChosenMovePriority(u32 battler, u32 ability); +s32 GetBattleMovePriority(u32 battler, u32 ability, u32 move); s32 GetWhichBattlerFasterArgs(u32 battler1, u32 battler2, bool32 ignoreChosenMoves, u32 ability1, u32 ability2, - u32 holdEffectBattler1, u32 holdEffectBattler2, u32 speedBattler1, u32 speedBattler2, s32 priority1, s32 priority2); + enum ItemHoldEffect holdEffectBattler1, enum ItemHoldEffect holdEffectBattler2, u32 speedBattler1, u32 speedBattler2, s32 priority1, s32 priority2); s32 GetWhichBattlerFasterOrTies(u32 battler1, u32 battler2, bool32 ignoreChosenMoves); s32 GetWhichBattlerFaster(u32 battler1, u32 battler2, bool32 ignoreChosenMoves); void RunBattleScriptCommands_PopCallbacksStack(void); @@ -87,6 +113,8 @@ u8 CreateNPCTrainerPartyFromTrainer(struct Pokemon *party, const struct Trainer void ModifyPersonalityForNature(u32 *personality, u32 newNature); u32 GeneratePersonalityForGender(u32 gender, u32 species); void CustomTrainerPartyAssignMoves(struct Pokemon *mon, const struct TrainerMon *partyEntry); +bool32 CanPlayerForfeitNormalTrainerBattle(void); +bool32 DidPlayerForfeitNormalTrainerBattle(void); extern struct MultiPartnerMenuPokemon gMultiPartnerParty[MULTI_PARTY_SIZE]; diff --git a/include/battle_message.h b/include/battle_message.h index 18f80bb3fd..e9b133b656 100644 --- a/include/battle_message.h +++ b/include/battle_message.h @@ -2,6 +2,7 @@ #define GUARD_BATTLE_MESSAGE_H #include "constants/battle.h" +#include "constants/battle_string_ids.h" // This buffer can hold many different things. Some of the things it can hold // that have explicit sizes are listed below to ensure it can contain them. @@ -247,7 +248,7 @@ struct BattleMsgData u8 textBuffs[3][TEXT_BUFF_ARRAY_COUNT]; }; -void BufferStringBattle(u16 stringID, u32 battler); +void BufferStringBattle(enum StringID stringID, u32 battler); u32 BattleStringExpandPlaceholdersToDisplayedString(const u8 *src); u32 BattleStringExpandPlaceholders(const u8 *src, u8 *dst, u32 dstSize); void BattlePutTextOnWindow(const u8 *text, u8 windowId); diff --git a/include/battle_script_commands.h b/include/battle_script_commands.h index b19630d82e..c0d47436fd 100644 --- a/include/battle_script_commands.h +++ b/include/battle_script_commands.h @@ -22,10 +22,12 @@ struct PickupItem u8 percentage[10]; }; -s32 CalcCritChanceStage(u32 battlerAtk, u32 battlerDef, u32 move, bool32 recordAbility, u32 abilityAtk, u32 abilityDef, u32 holdEffectAtk); +s32 CalcCritChanceStage(u32 battlerAtk, u32 battlerDef, u32 move, bool32 recordAbility, u32 abilityAtk, u32 abilityDef, enum ItemHoldEffect holdEffectAtk); +s32 CalcCritChanceStageGen1(u32 battlerAtk, u32 battlerDef, u32 move, bool32 recordAbility, u32 abilityAtk, u32 abilityDef, enum ItemHoldEffect holdEffectAtk); s32 GetCritHitOdds(s32 critChanceIndex); u32 GetTotalAccuracy(u32 battlerAtk, u32 battlerDef, u32 move, u32 atkAbility, u32 defAbility, u32 atkHoldEffect, u32 defHoldEffect); u8 GetBattlerTurnOrderNum(u8 battler); +bool32 NoAliveMonsForBattlerSide(u32 battler); bool32 NoAliveMonsForPlayer(void); bool32 NoAliveMonsForEitherParty(void); void SetMoveEffect(bool32 primary, bool32 certain); @@ -37,8 +39,6 @@ void HandleBattleWindow(u8 xStart, u8 yStart, u8 xEnd, u8 yEnd, u8 flags); bool8 UproarWakeUpCheck(u8 battler); bool32 DoesSubstituteBlockMove(u32 battlerAtk, u32 battlerDef, u32 move); bool32 DoesDisguiseBlockMove(u32 battler, u32 move); -bool32 CanPoisonType(u8 battlerAttacker, u8 battlerTarget); -bool32 CanParalyzeType(u8 battlerAttacker, u8 battlerTarget); bool32 CanUseLastResort(u8 battlerId); u32 IsFlowerVeilProtected(u32 battler); u32 IsLeafGuardProtected(u32 battler, u32 ability); @@ -57,6 +57,8 @@ u8 GetFirstFaintedPartyIndex(u8 battlerId); bool32 IsMoveAffectedByParentalBond(u32 move, u32 battler); void SaveBattlerTarget(u32 battler); void SaveBattlerAttacker(u32 battler); +bool32 CanBurnHitThaw(u16 move); +void SetNonVolatileStatusCondition(u32 target, enum MoveEffects effect); extern void (*const gBattleScriptingCommandsTable[])(void); extern const struct StatFractions gAccuracyStageRatios[]; diff --git a/include/battle_scripts.h b/include/battle_scripts.h index ab25df0684..75d7495498 100644 --- a/include/battle_scripts.h +++ b/include/battle_scripts.h @@ -101,6 +101,8 @@ extern const u8 BattleScript_SelectingTormentedMoveInPalace[]; extern const u8 BattleScript_SelectingNotAllowedMoveTaunt[]; extern const u8 BattleScript_MoveUsedIsTaunted[]; extern const u8 BattleScript_SelectingNotAllowedMoveTauntInPalace[]; +extern const u8 BattleScript_WishButHealBlocked[]; +extern const u8 BattleScript_WishButFullHp[]; extern const u8 BattleScript_WishComesTrue[]; extern const u8 BattleScript_IngrainTurnHeal[]; extern const u8 BattleScript_AtkDefDown[]; @@ -185,9 +187,6 @@ 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[]; extern const u8 BattleScript_ObliviousPreventsAttraction[]; extern const u8 BattleScript_FlinchPrevention[]; extern const u8 BattleScript_OwnTempoPrevents[]; @@ -271,7 +270,6 @@ extern const u8 BattleScript_WonderRoomEnds[]; extern const u8 BattleScript_MagicRoomEnds[]; extern const u8 BattleScript_TerrainEnds[]; extern const u8 BattleScript_TerrainEnds_Ret[]; -extern const u8 BattleScript_GrassyTerrainEnds[]; extern const u8 BattleScript_MudSportEnds[]; extern const u8 BattleScript_WaterSportEnds[]; extern const u8 BattleScript_SturdiedMsg[]; @@ -370,6 +368,8 @@ extern const u8 BattleScript_FlameOrb[]; extern const u8 BattleScript_MoveEffectIncinerate[]; extern const u8 BattleScript_MoveEffectBugBite[]; extern const u8 BattleScript_IllusionOff[]; +extern const u8 BattleScript_IllusionOffEnd3[]; +extern const u8 BattleScript_IllusionOffAndTerastallization[]; extern const u8 BattleScript_DancerActivates[]; extern const u8 BattleScript_AftermathDmg[]; extern const u8 BattleScript_AttackerFormChange[]; @@ -388,6 +388,8 @@ extern const u8 BattleScript_FriskMsgWithPopup[]; extern const u8 BattleScript_MoodyActivates[]; extern const u8 BattleScript_EmergencyExit[]; extern const u8 BattleScript_EmergencyExitWild[]; +extern const u8 BattleScript_EmergencyExitEnd2[]; +extern const u8 BattleScript_EmergencyExitWildEnd2[]; extern const u8 BattleScript_CheekPouchActivates[]; extern const u8 BattleScript_TotemVar[]; extern const u8 BattleScript_TotemFlaredToLife[]; @@ -428,6 +430,7 @@ extern const u8 BattleScript_GulpMissileGorging[]; extern const u8 BattleScript_GulpMissileGulping[]; extern const u8 BattleScript_GulpMissileFormChange[]; extern const u8 BattleScript_BattleBondActivatesOnMoveEndAttacker[]; +extern const u8 BattleScript_EffectBattleBondStatIncrease[]; extern const u8 BattleScript_DesolateLandActivates[]; extern const u8 BattleScript_PrimordialSeaActivates[]; extern const u8 BattleScript_PrimalWeatherBlocksMove[]; @@ -516,6 +519,19 @@ extern const u8 BattleScript_BoosterEnergyRet[]; extern const u8 BattleScript_TeraShellDistortingTypeMatchups[]; extern const u8 BattleScript_TeraFormChange[]; extern const u8 BattleScript_SleepClausePreventsEnd[]; +extern const u8 BattleScript_PowerConstruct[]; + +extern const u8 BattleScript_AbilityProtectsDoesntAffect[]; +extern const u8 BattleScript_ImmunityProtected[]; +extern const u8 BattleScript_SafeguardProtected[]; +extern const u8 BattleScript_FlowerVeilProtects[]; +extern const u8 BattleScript_SleepClauseBlocked[]; +extern const u8 BattleScript_AlreadyAsleep[]; +extern const u8 BattleScript_CantMakeAsleep[]; +extern const u8 BattleScript_AlreadyPoisoned[]; +extern const u8 BattleScript_AlreadyParalyzed[]; +extern const u8 BattleScript_AlreadyBurned[]; +extern const u8 BattleScript_PrintAbilityMadeIneffective[]; // zmoves extern const u8 BattleScript_ZMoveActivateDamaging[]; @@ -563,7 +579,6 @@ extern const u8 BattleScript_DynamaxEnds_Ret[]; extern const u8 BattleScript_MoveBlockedByDynamax[]; // Battle move scripts -extern const u8 BattleScript_EffectSleep[]; extern const u8 BattleScript_EffectAbsorb[]; extern const u8 BattleScript_EffectAbsorbLiquidOoze[]; extern const u8 BattleScript_EffectExplosion[]; @@ -590,12 +605,9 @@ extern const u8 BattleScript_EffectRoar[]; extern const u8 BattleScript_EffectHit[]; extern const u8 BattleScript_EffectConversion[]; extern const u8 BattleScript_EffectRestoreHp[]; -extern const u8 BattleScript_EffectToxic[]; extern const u8 BattleScript_EffectLightScreen[]; extern const u8 BattleScript_EffectRest[]; extern const u8 BattleScript_EffectOHKO[]; -extern const u8 BattleScript_EffectSuperFang[]; -extern const u8 BattleScript_EffectFixedDamageArg[]; extern const u8 BattleScript_EffectHealBlock[]; extern const u8 BattleScript_RecoilIfMiss[]; extern const u8 BattleScript_EffectMist[]; @@ -617,8 +629,6 @@ extern const u8 BattleScript_EffectSpecialDefenseDown2[]; extern const u8 BattleScript_EffectAccuracyDown2[]; extern const u8 BattleScript_EffectEvasionDown2[]; extern const u8 BattleScript_EffectReflect[]; -extern const u8 BattleScript_EffectPoison[]; -extern const u8 BattleScript_EffectParalyze[]; extern const u8 BattleScript_EffectTwoTurnsAttack[]; extern const u8 BattleScript_EffectSubstitute[]; extern const u8 BattleScript_EffectRage[]; @@ -630,8 +640,6 @@ extern const u8 BattleScript_EffectHoldHands[]; extern const u8 BattleScript_EffectCelebrate[]; extern const u8 BattleScript_EffectHappyHour[]; extern const u8 BattleScript_EffectDisable[]; -extern const u8 BattleScript_EffectLevelDamage[]; -extern const u8 BattleScript_EffectPsywave[]; extern const u8 BattleScript_EffectCounter[]; extern const u8 BattleScript_EffectEncore[]; extern const u8 BattleScript_EffectPainSplit[]; @@ -690,7 +698,7 @@ extern const u8 BattleScript_EffectWorrySeed[]; extern const u8 BattleScript_EffectHail[]; extern const u8 BattleScript_EffectTorment[]; extern const u8 BattleScript_EffectFlatter[]; -extern const u8 BattleScript_EffectWillOWisp[]; +extern const u8 BattleScript_EffectNonVolatileStatus[]; extern const u8 BattleScript_EffectMemento[]; extern const u8 BattleScript_EffectFocusPunch[]; extern const u8 BattleScript_EffectFollowMe[]; @@ -825,7 +833,6 @@ extern const u8 BattleScript_MoveEffectHaze[]; extern const u8 BattleScript_MoveEffectIonDeluge[]; extern const u8 BattleScript_EffectHyperspaceFury[]; extern const u8 BattleScript_EffectAuraWheel[]; -extern const u8 BattleScript_EffectDynamicCategory[]; extern const u8 BattleScript_EffectNoRetreat[]; extern const u8 BattleScript_EffectTarShot[]; extern const u8 BattleScript_EffectPoltergeist[]; @@ -859,5 +866,8 @@ extern const u8 BattleScript_EffectSpicyExtract[]; extern const u8 BattleScript_DamageToQuarterTargetHP[]; extern const u8 BattleScript_EffectFickleBeam[]; extern const u8 BattleScript_FickleBeamDoubled[]; +extern const u8 BattleScript_QuestionForfeitBattle[]; +extern const u8 BattleScript_ForfeitBattleGaveMoney[]; +extern const u8 BattleScript_AbilityPopUp[]; #endif // GUARD_BATTLE_SCRIPTS_H diff --git a/include/battle_tower.h b/include/battle_tower.h index 45c9d683ff..dc118d0f21 100644 --- a/include/battle_tower.h +++ b/include/battle_tower.h @@ -77,5 +77,6 @@ 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); +void FillPartnerParty(u16 trainerId); #endif //GUARD_BATTLE_TOWER_H diff --git a/include/battle_tv.h b/include/battle_tv.h index 5766907637..8f6c5a182f 100644 --- a/include/battle_tv.h +++ b/include/battle_tv.h @@ -1,7 +1,7 @@ #ifndef GUARD_BATTLE_TV_H #define GUARD_BATTLE_TV_H -void BattleTv_SetDataBasedOnString(u16 stringId); +void BattleTv_SetDataBasedOnString(enum StringID stringId); void BattleTv_SetDataBasedOnMove(u16 move, u16 weatherFlags, struct DisableStruct *disableStructPtr); void BattleTv_SetDataBasedOnAnimation(u8 animationId); void TryPutLinkBattleTvShowOnAir(void); diff --git a/include/battle_util.h b/include/battle_util.h index 8ef60742ad..2ce91c3f25 100644 --- a/include/battle_util.h +++ b/include/battle_util.h @@ -2,6 +2,7 @@ #define GUARD_BATTLE_UTIL_H #include "move.h" +#include "constants/battle_string_ids.h" #define MOVE_LIMITATION_ZEROMOVE (1 << 0) #define MOVE_LIMITATION_PP (1 << 1) @@ -22,9 +23,16 @@ #define MOVE_LIMITATION_PLACEHOLDER (1 << 15) #define MOVE_LIMITATIONS_ALL 0xFFFF +enum NonVolatileStatus +{ + STATUS_CHECK_TRIGGER, + STATUS_RUN_SCRIPT, +}; + enum AbilityEffectOptions { ABILITY_CHECK_TRIGGER, + ABILITY_CHECK_TRIGGER_AI, ABILITY_RUN_SCRIPT, }; @@ -39,10 +47,6 @@ enum MoveAbsorbed 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, @@ -70,6 +74,7 @@ enum ItemCaseId ITEMEFFECT_ON_SWITCH_IN, ITEMEFFECT_ON_SWITCH_IN_FIRST_TURN, ITEMEFFECT_NORMAL, + ITEMEFFECT_TRY_HEALING, ITEMEFFECT_MOVE_END, ITEMEFFECT_KINGSROCK, ITEMEFFECT_TARGET, @@ -96,6 +101,10 @@ enum ItemEffect #define DMG_ROLL_PERCENT_LO 85 #define DMG_ROLL_PERCENT_HI 100 +// Crit chance exceptions +#define CRITICAL_HIT_BLOCKED -1 +#define CRITICAL_HIT_ALWAYS -2 + // for Natural Gift and Fling struct TypePower { @@ -169,7 +178,22 @@ enum SleepClauseBlock BLOCKED_BY_SLEEP_CLAUSE, }; +enum SkyDropState +{ + SKY_DROP_IGNORE, + SKY_DROP_ATTACKCANCELLER_CHECK, + SKY_DROP_GRAVITY_ON_AIRBORNE, + SKY_DROP_CANCEL_MULTI_TURN_MOVES, + SKY_DROP_STATUS_YAWN, + SKY_DROP_STATUS_FREEZE_SLEEP, +}; + +#define SKY_DROP_NO_TARGET 0xFF +#define SKY_DROP_RELEASED_TARGET 0xFE + void HandleAction_ThrowBall(void); +u32 GetCurrentBattleWeather(void); +bool32 EndOrContinueWeather(void); bool32 IsAffectedByFollowMe(u32 battlerAtk, u32 defSide, u32 move); bool32 HandleMoveTargetRedirection(void); void HandleAction_UseMove(void); @@ -190,9 +214,9 @@ u8 GetBattlerForBattleScript(u8 caseId); bool32 IsBattlerMarkedForControllerExec(u32 battler); void MarkBattlerForControllerExec(u32 battler); void MarkBattlerReceivedLinkData(u32 battler); -const u8* CancelMultiTurnMoves(u32 battler); +const u8 *CancelMultiTurnMoves(u32 battler, enum SkyDropState skyDropState); bool32 WasUnableToUseMove(u32 battler); -void PrepareStringBattle(u16 stringId, u32 battler); +void PrepareStringBattle(enum StringID stringId, u32 battler); void ResetSentPokesToOpponentValue(void); void OpponentSwitchInResetSentPokesToOpponentValue(u32 battler); void UpdateSentPokesToOpponentValue(u32 battler); @@ -203,18 +227,16 @@ u32 TrySetCantSelectMoveBattleScript(u32 battler); u8 CheckMoveLimitations(u32 battler, u8 unusableMoves, u16 check); bool32 AreAllMovesUnusable(u32 battler); u8 GetImprisonedMovesCount(u32 battler, u16 move); -u8 DoFieldEndTurnEffects(void); s32 GetDrainedBigRootHp(u32 battler, s32 hp); bool32 IsMagicGuardProtected(u32 battler, u32 ability); -u8 DoBattlerEndTurnEffects(void); -bool32 HandleWishPerishSongOnTurnEnd(void); +u32 DoEndTurnEffects(void); bool32 HandleFaintedMonActions(void); void TryClearRageAndFuryCutter(void); u32 AtkCanceller_MoveSuccessOrder(void); void SetAtkCancellerForCalledMove(void); bool32 HasNoMonsToSwitch(u32 battler, u8 partyIdBattlerOn1, u8 partyIdBattlerOn2); bool32 TryChangeBattleWeather(u32 battler, u32 battleWeatherId, bool32 viaAbility); -bool32 CanAbilityBlockMove(u32 battlerAtk, u32 battlerDef, u32 move, u32 abilityDef, enum AbilityEffectOptions option); +bool32 CanAbilityBlockMove(u32 battlerAtk, u32 battlerDef, u32 abilityAtk, u32 abilityDef, u32 move, enum AbilityEffectOptions option); bool32 CanAbilityAbsorbMove(u32 battlerAtk, u32 battlerDef, u32 abilityDef, u32 move, u32 moveType, enum AbilityEffectOptions option); u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 moveArg); bool32 TryPrimalReversion(u32 battler); @@ -227,6 +249,7 @@ u32 IsAbilityOnField(u32 ability); u32 IsAbilityOnFieldExcept(u32 battler, u32 ability); u32 IsAbilityPreventingEscape(u32 battler); bool32 IsBattlerProtected(u32 battlerAtk, u32 battlerDef, u32 move); +u32 GetProtectType(enum ProtectMethod method); bool32 CanBattlerEscape(u32 battler); // no ability check void BattleScriptExecute(const u8 *BS_ptr); void BattleScriptPushCursorAndCallback(const u8 *BS_ptr); @@ -236,9 +259,9 @@ void HandleAction_RunBattleScript(void); u32 SetRandomTarget(u32 battler); u32 GetBattleMoveTarget(u16 move, u8 setTarget); u8 GetAttackerObedienceForAction(); -u32 GetBattlerHoldEffect(u32 battler, bool32 checkNegating); -u32 GetBattlerHoldEffectIgnoreAbility(u32 battler, bool32 checkNegating); -u32 GetBattlerHoldEffectInternal(u32 battler, bool32 checkNegating, bool32 checkAbility); +enum ItemHoldEffect GetBattlerHoldEffect(u32 battler, bool32 checkNegating); +enum ItemHoldEffect GetBattlerHoldEffectIgnoreAbility(u32 battler, bool32 checkNegating); +enum ItemHoldEffect GetBattlerHoldEffectInternal(u32 battler, bool32 checkNegating, bool32 checkAbility); u32 GetBattlerHoldEffectParam(u32 battler); bool32 IsMoveMakingContact(u32 move, u32 battlerAtk); bool32 IsBattlerGrounded(u32 battler); @@ -248,7 +271,8 @@ u32 CalcRolloutBasePower(u32 battlerAtk, u32 basePower, u32 rolloutTimer); u32 CalcFuryCutterBasePower(u32 basePower, u32 furyCutterCounter); s32 CalculateMoveDamage(struct DamageCalculationData *damageCalcData, u32 fixedBasePower); s32 CalculateMoveDamageVars(struct DamageCalculationData *damageCalcData, u32 fixedBasePower, uq4_12_t typeEffectivenessModifier, - u32 weather, u32 holdEffectAtk, u32 holdEffectDef, u32 abilityAtk, u32 abilityDef); + u32 weather, enum ItemHoldEffect holdEffectAtk, enum ItemHoldEffect holdEffectDef, u32 abilityAtk, u32 abilityDef); +s32 ApplyModifiersAfterDmgRoll(s32 dmg, struct DamageCalculationData *damageCalcData, uq4_12_t typeEffectivenessModifier, u32 abilityAtk, u32 abilityDef, enum ItemHoldEffect holdEffectAtk, enum ItemHoldEffect holdEffectDef); 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); @@ -263,16 +287,20 @@ void ActivateUltraBurst(u32 battler); bool32 IsBattlerMegaEvolved(u32 battler); bool32 IsBattlerPrimalReverted(u32 battler); bool32 IsBattlerUltraBursted(u32 battler); -u16 GetBattleFormChangeTargetSpecies(u32 battler, u16 method); -bool32 TryBattleFormChange(u32 battler, u32 method); +u16 GetBattleFormChangeTargetSpecies(u32 battler, enum FormChanges method); +bool32 TryBattleFormChange(u32 battler, enum FormChanges method); bool32 DoBattlersShareType(u32 battler1, u32 battler2); bool32 CanBattlerGetOrLoseItem(u32 battler, u16 itemId); +u32 GetBattlerVisualSpecies(u32 battler); +bool32 TryClearIllusion(u32 battler, u32 caseID); u32 GetIllusionMonSpecies(u32 battler); struct Pokemon *GetIllusionMonPtr(u32 battler); void ClearIllusionMon(u32 battler); +u32 GetIllusionMonPartyId(struct Pokemon *party, struct Pokemon *mon, struct Pokemon *partnerMon); bool32 SetIllusionMon(struct Pokemon *mon, u32 battler); bool32 ShouldGetStatBadgeBoost(u16 flagId, u32 battler); -u8 GetBattleMoveCategory(u32 moveId); +u32 GetBattleMoveCategory(u32 move); +void SetDynamicMoveCategory(u32 battlerAtk, u32 battlerDef, u32 move); bool32 CanFling(u32 battler); bool32 IsTelekinesisBannedSpecies(u16 species); bool32 IsHealBlockPreventingMove(u32 battler, u32 move); @@ -292,7 +320,7 @@ bool32 IsBattlerAffectedByHazards(u32 battler, bool32 toxicSpikes); void SortBattlersBySpeed(u8 *battlers, bool32 slowToFast); bool32 CompareStat(u32 battler, u8 statId, u8 cmpTo, u8 cmpKind); bool32 TryRoomService(u32 battler); -void BufferStatChange(u32 battler, u8 statId, u8 stringId); +void BufferStatChange(u32 battler, u8 statId, enum StringID stringId); bool32 BlocksPrankster(u16 move, u32 battlerPrankster, u32 battlerDef, bool32 checkTarget); u16 GetUsedHeldItem(u32 battler); bool32 PickupHasValidTarget(u32 battler); @@ -314,16 +342,18 @@ bool32 TargetFullyImmuneToCurrMove(u32 battlerAtk, u32 battlerDef); bool32 MoodyCantRaiseStat(u32 stat); bool32 MoodyCantLowerStat(u32 stat); -bool32 CanBeSlept(u32 battler, u32 ability, enum SleepClauseBlock isBlockedBySleepClause); -bool32 CanBePoisoned(u32 battlerAtk, u32 battlerDef, u32 defAbility); -bool32 CanBeBurned(u32 battler, u32 ability); -bool32 CanBeParalyzed(u32 battler, u32 ability); -bool32 CanBeFrozen(u32 battler); -bool32 CanGetFrostbite(u32 battler); +bool32 CanBeSlept(u32 battlerAtk, u32 battlerDef, u32 abilityDef, enum SleepClauseBlock isBlockedBySleepClause); +bool32 CanBePoisoned(u32 battlerAtk, u32 battlerDef, u32 abilityAtk, u32 abilityDef); +bool32 CanBeBurned(u32 battlerAtk, u32 battlerDef, u32 ability); +bool32 CanBeParalyzed(u32 battlerAtk, u32 battlerDef, u32 abilityDef); +bool32 CanBeFrozen(u32 battlerAtk, u32 battlerDef, u32 abilityDef); +bool32 CanGetFrostbite(u32 battlerAtk, u32 battlerDef, u32 abilityDef); +bool32 CanSetNonVolatileStatus(u32 battlerAtk, u32 battlerDef, u32 abilityAtk, u32 abilityDef, enum MoveEffects secondaryMoveEffect, enum NonVolatileStatus option); bool32 CanBeConfused(u32 battler); bool32 IsBattlerTerrainAffected(u32 battler, u32 terrainFlag); u32 GetBattlerAffectionHearts(u32 battler); void TryToRevertMimicryAndFlags(void); +bool32 BattleArenaTurnEnd(void); u32 CountBattlerStatIncreases(u32 battler, bool32 countEvasionAcc); bool32 ChangeTypeBasedOnTerrain(u32 battler); void RemoveConfusionStatus(u32 battler); @@ -345,14 +375,14 @@ bool32 IsSleepClauseEnabled(); void ClearDamageCalcResults(void); u32 DoesDestinyBondFail(u32 battler); bool32 IsMoveEffectBlockedByTarget(u32 ability); -u32 NumAffectedSpreadMoveTargets(void); bool32 IsPursuitTargetSet(void); void ClearPursuitValuesIfSet(u32 battler); void ClearPursuitValues(void); bool32 HasWeatherEffect(void); -bool32 IsMovePowderBlocked(u32 battlerAtk, u32 battlerDef, u32 move); -bool32 EmergencyExitCanBeTriggered(u32 battler); u32 RestoreWhiteHerbStats(u32 battler); -bool32 IsFutureSightAttackerInParty(u32 battlerAtk, u32 battlerDef); +bool32 IsFutureSightAttackerInParty(u32 battlerAtk, u32 battlerDef, u32 move); +bool32 HadMoreThanHalfHpNowDoesnt(u32 battler); +void UpdateStallMons(void); +bool32 TryRestoreHPBerries(u32 battler, enum ItemCaseId caseId); #endif // GUARD_BATTLE_UTIL_H diff --git a/include/clock.h b/include/clock.h index 0cfd3db9ed..95d0929950 100644 --- a/include/clock.h +++ b/include/clock.h @@ -5,5 +5,6 @@ void InitTimeBasedEvents(void); void DoTimeBasedEvents(void); +void FormChangeTimeUpdate(); #endif // GUARD_CLOCK_H diff --git a/include/config/ai.h b/include/config/ai.h index 1fe0c822d2..db98f72ee9 100644 --- a/include/config/ai.h +++ b/include/config/ai.h @@ -22,6 +22,7 @@ #define SHOULD_SWITCH_CHOICE_LOCKED_PERCENTAGE 100 // Only if locked into status move #define SHOULD_SWITCH_ATTACKING_STAT_MINUS_TWO_PERCENTAGE 50 #define SHOULD_SWITCH_ATTACKING_STAT_MINUS_THREE_PLUS_PERCENTAGE 100 +#define SHOULD_SWITCH_ALL_SCORES_BAD_PERCENTAGE 100 // AI smart switching chances for bad statuses #define SHOULD_SWITCH_PERISH_SONG_PERCENTAGE 100 @@ -44,10 +45,33 @@ #define SHOULD_SWITCH_REGENERATOR_PERCENTAGE 50 #define SHOULD_SWITCH_REGENERATOR_STATS_RAISED_PERCENTAGE 20 +// AI switchin considerations +#define ALL_MOVES_BAD_STATUS_MOVES_BAD FALSE // If the AI has no moves that affect the target, ShouldSwitchIfAllMovesBad can prompt a switch. Enabling this config will ignore status moves that can affect the target when making this decision. +#define AI_BAD_SCORE_THRESHOLD 90 // Move scores beneath this threshold are considered "bad" when deciding switching +#define AI_GOOD_SCORE_THRESHOLD 100 // Move scores above this threshold are considered "good" when deciding switching + // AI held item-based move scoring #define LOW_ACCURACY_THRESHOLD 75 // Moves with accuracy equal OR below this value are considered low accuracy +// AI move scoring +#define STATUS_MOVE_FOCUS_PUNCH_CHANCE 50 // Chance the AI will use a status move if the player's best move is Focus Punch + +// AI damage calc considerations +#define RISKY_AI_CRIT_STAGE_THRESHOLD 2 // Stat stages at which Risky will assume it gets a crit +#define RISKY_AI_CRIT_THRESHOLD_GEN_1 128 // "Stat stage" at which Risky will assume it gets a crit with gen 1 mechanics (this translates to an X / 255 % crit threshold) + // AI prediction chances #define PREDICT_SWITCH_CHANCE 50 +#define PREDICT_MOVE_CHANCE 100 + +// AI PP Stall detection chance per roll +#define PP_STALL_DISREGARD_MOVE_PERCENTAGE 50 +// Score reduction if any roll for PP stall detection passes +#define PP_STALL_SCORE_REDUCTION 20 + +// AI's acceptable number of hits to KO the partner via friendly fire in a double battle. +#define FRIENDLY_FIRE_RISKY_THRESHOLD 2 +#define FRIENDLY_FIRE_NORMAL_THRESHOLD 3 +#define FRIENDLY_FIRE_CONSERVATIVE_THRESHOLD 4 #endif // GUARD_CONFIG_AI_H diff --git a/include/config/battle.h b/include/config/battle.h index 478210101e..f4a14f4df4 100644 --- a/include/config/battle.h +++ b/include/config/battle.h @@ -9,7 +9,6 @@ #define B_MULTI_HIT_CHANCE GEN_LATEST // In Gen5+, multi-hit moves have different %. See SetRandomMultiHitCounter for values. #define B_WHITEOUT_MONEY GEN_LATEST // In Gen4+, the amount of money lost by losing a battle is determined by the amount of badges earned. Previously, it would cut the current money by half. (While this change was also in FRLG, for the sake of simplicity, setting this to GEN_3 will result in RSE behavior.) #define B_LIGHT_BALL_ATTACK_BOOST GEN_LATEST // In Gen4+, Light Ball doubles the power of physical moves in addition to special moves. -#define B_SANDSTORM_SPDEF_BOOST GEN_LATEST // In Gen4+, Sandstorm weather multiplies the Sp. Defense of Rock-type Pokémon by x1.5. // Experience settings #define B_EXP_CATCH GEN_LATEST // In Gen6+, Pokémon get experience from catching. @@ -17,6 +16,7 @@ #define B_SPLIT_EXP GEN_LATEST // In Gen6+, all participating mon get full experience. #define B_SCALED_EXP GEN_LATEST // In Gen5 and Gen7+, experience is weighted by level difference. #define B_UNEVOLVED_EXP_MULTIPLIER GEN_LATEST // In Gen6+, if the Pokémon is at or past the level where it would be able to evolve, but it has not, it gets a ~1.2 multiplier to EXP gain. Only applies to Pokémon with EVO_LEVEL method. +#define B_LEVEL_UP_NOTIFICATION GEN_LATEST // In Gen9+, if the Pokémon gets enough experience to level up multiple times, the message is only displayed once. // Stat settings #define B_BADGE_BOOST GEN_LATEST // In Gen4+, Gym Badges no longer boost a Pokémon's stats. @@ -128,9 +128,9 @@ #define B_QUASH_TURN_ORDER GEN_LATEST // In Gen8+, Quash-affected battlers move according to speed order. Before Gen8, Quash-affected battlers move in the order they were affected by Quash. #define B_DESTINY_BOND_FAIL GEN_LATEST // In Gen7+, Destiny Bond fails if used repeatedly. #define B_PURSUIT_TARGET GEN_LATEST // In Gen4+, Pursuit attacks a switching opponent even if they weren't targeting them. Before Gen4, Pursuit only attacks a switching opponent that it originally targeted. +#define B_SKIP_RECHARGE GEN_LATEST // In Gen1, recharging moves such as Hyper Beam skip the recharge if the target gets KO'd // Ability settings -#define B_ABILITY_WEATHER GEN_LATEST // In Gen6+, ability-induced weather lasts 5 turns. Before, it lasted until the battle ended or until it was changed by a move or a different weather-affecting ability. #define B_GALE_WINGS GEN_LATEST // In Gen7+ requires full HP to trigger. #define B_STANCE_CHANGE_FAIL GEN_LATEST // In Gen7+, Stance Change fails if the Pokémon is unable to use a move because of confusion, paralysis, etc. In Gen6, it doesn't. #define B_SHADOW_TAG_ESCAPE GEN_LATEST // In Gen4+, if both sides have a Pokémon with Shadow Tag, all battlers can escape. Before, neither side could escape this situation. @@ -147,7 +147,6 @@ #define B_REDIRECT_ABILITY_IMMUNITY GEN_LATEST // In Gen5+, Pokémon with Lightning Rod/Storm Drain become immune to Electric/Water-type moves and increase their Sp. Attack by 1 stage on top of the redirecting effect. #define B_REDIRECT_ABILITY_ALLIES GEN_LATEST // In Gen4+, Lightning Rod/Storm Drain redirect ally's moves as well. #define B_LEAF_GUARD_PREVENTS_REST GEN_LATEST // In Gen5+, Leaf Guard prevents the use of Rest in harsh sunlight. -#define B_SNOW_WARNING GEN_LATEST // In Gen9+, Snow Warning will summon snow instead of hail. #define B_TRANSISTOR_BOOST GEN_LATEST // In Gen9+, Transistor will only boost Electric-type moves by 1.3x as opposed to 1.5x. #define B_ILLUMINATE_EFFECT GEN_LATEST // In Gen9+, Illuminate prevents accuracy reductions and ignores the target's evasion. #define B_WEAK_ARMOR_SPEED GEN_LATEST // In Gen7+, Weak Armor raises Speed by 2 stages instead of 1 when hit by a physical move. @@ -160,6 +159,8 @@ // In Gen4, it's 30%. In Gen5+ it has 11% to sleep, 9% chance to poison and 10% chance to paralyze. #define B_PICKUP_WILD GEN_LATEST // In Gen9+, Pickup allows its user to pickup its own used item at the end of the turn in wild battles. #define B_MAGIC_GUARD GEN_LATEST // In Gen4 only, Magic Guard ignores immobilization caused by paralysis +#define B_BATTLE_BOND GEN_LATEST // In Gen9+, Battle Bond increases Atk, SpAtk and Speed by one stage, once per battle +#define B_ATE_MULTIPLIER GEN_LATEST // In Gen7+, -ate abilities (Aerilate, Galvanize, Normalize, Pixilate, Refrigerate) multiply damage by 1.2. Otherwise, it's 1.3, except Normalize which has no multiplier. // 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. @@ -189,11 +190,19 @@ #define B_IRON_BALL GEN_LATEST // In Gen5+, Flying-type Pokemon holding Iron Ball take x1 damage from Ground-type moves regardless of their other types, except during Inverse Battles or if the Pokemon is grounded by any other effect. // Flag settings -// 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. +// To use the following features, change the 0 for a flag present in include/constants/flags.h, preferably an unused one. +// Eg: You may rename FLAG_UNUSED_0x264 to a descriptive name and use it below. + +// Badge boost flags +#define B_FLAG_BADGE_BOOST_ATTACK FLAG_BADGE01_GET // If this flag is set and B_BADGE_BOOST == GEN_3, it will multiply the player's Pokémon's Attack by x1.1 +#define B_FLAG_BADGE_BOOST_DEFENSE FLAG_BADGE05_GET // If this flag is set and B_BADGE_BOOST == GEN_3, it will multiply the player's Pokémon's Defense by x1.1 +#define B_FLAG_BADGE_BOOST_SPEED FLAG_BADGE03_GET // If this flag is set and B_BADGE_BOOST == GEN_3, it will multiply the player's Pokémon's Speed by x1.1 +#define B_FLAG_BADGE_BOOST_SPATK FLAG_BADGE07_GET // If this flag is set and B_BADGE_BOOST == GEN_3, it will multiply the player's Pokémon's Sp. Atk by x1.1 +#define B_FLAG_BADGE_BOOST_SPDEF FLAG_BADGE07_GET // If this flag is set and B_BADGE_BOOST == GEN_3, it will multiply the player's Pokémon's Sp. Def by x1.1 +// Other battle flags #define B_FLAG_INVERSE_BATTLE 0 // If this flag is set, the battle's type effectiveness are inversed. For example, fire is super effective against water. #define B_FLAG_FORCE_DOUBLE_WILD 0 // If this flag is set, all land and surfing wild battles will be double battles. -#define B_SMART_WILD_AI_FLAG 0 // If not 0, you can set this flag in a script to enable smart wild pokemon +#define B_SMART_WILD_AI_FLAG 0 // If this flag is set, wild Pokémon will become smart, with all AI flags enabled. #define B_FLAG_NO_BAG_USE 0 // If this flag is set, the ability to use the bag in battle is disabled. #define B_FLAG_NO_CATCHING 0 // If this flag is set, the ability to catch wild Pokémon is disabled. #define B_FLAG_NO_RUNNING 0 // If this flag is set, the ability to escape from wild battles is disabled. Also makes Roar/Whirlwind and Teleport (under Gen8) fail. @@ -202,13 +211,18 @@ #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. #define B_FLAG_SLEEP_CLAUSE 0 // If this flag is set, sleep clause is enabled; if the player / AI has already put a Pokémon on the opponent's side to sleep and it is still sleeping, another one can't be put to sleep. AI requires AI_FLAG_CHECK_BAD_MOVE to understand. +#define B_FLAG_NO_WHITEOUT 0 // If this flag is set, the player can not white out against Trainers. Please note that the party is not healed automatically! // Var Settings -// To use the following features in scripting, replace the 0s with the var ID you're assigning it to. -// Eg: Replace with VAR_UNUSED_0x40F7 so you can use B_VAR_STARTING_STATUS for that feature. +// To use the following features, change the 0 for a var present in include/constants/vars.h, preferably an unused one. +// Eg: You may rename VAR_UNUSED_0x404E to a descriptive name and use it below. #define B_VAR_STARTING_STATUS 0 // If this var has a value, assigning a STATUS_FIELD_xx_TERRAIN to it before battle causes the battle to start with that terrain active. + // This var should never remain non-zero long enough for the player to save. #define B_VAR_STARTING_STATUS_TIMER 0 // If this var has a value greater or equal than 1 field terrains will last that number of turns, otherwise they will last until they're overwritten. -#define B_VAR_WILD_AI_FLAGS 0 // If not 0, you can use this var to add to default wild AI flags. NOT usable with flags above (1 << 15) +#define B_VAR_WILD_AI_FLAGS 0 // If not 0, you can use this var to add to default wild AI flags. IMPORTANT: NOT usable with flags above (1 << 15) + // This var should never remain non-zero long enough for the player to save. + // For better wild AI handling, edit GetWildAiFlags() in src/battle_ai_main.c + #define B_VAR_DIFFICULTY 0 // If not 0, you can use this var to control which difficulty version of a Trainer is loaded. This should be manually set by the developer using Script_SetDifficulty AFTER NewGameInitData has run. // Sky Battles @@ -225,6 +239,19 @@ // Move description menu #define B_SHOW_MOVE_DESCRIPTION TRUE // Shows move information in battler +// Weather settings +// Search for 'rain', 'sunny day', and 'hail' for move-specific or species-specific weather interactions. +#define B_ICE_WEATHER_BOTH 0 +#define B_ICE_WEATHER_HAIL 1 +#define B_ICE_WEATHER_SNOW 2 + +#define B_ABILITY_WEATHER GEN_LATEST // In Gen6+, ability-induced weather lasts 5 turns. Before, it lasted until the battle ended or until it was changed by a move or a different weather-affecting ability. +#define B_SANDSTORM_SPDEF_BOOST GEN_LATEST // In Gen4+, Sandstorm weather multiplies the Sp. Defense of Rock-type Pokémon by x1.5. +#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_OVERWORLD_SNOW GEN_LATEST // In Gen9+, overworld Snow will summon snow instead of hail in battle. +#define B_SNOW_WARNING GEN_LATEST // In Gen9+, Snow Warning will summon snow instead of hail. +#define B_PREFERRED_ICE_WEATHER B_ICE_WEATHER_BOTH // Toggles Hail move effects to Snow and vice versa. + // 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. @@ -246,12 +273,18 @@ #define B_HIDE_HEALTHBOX_IN_ANIMS TRUE // If set to TRUE, hides healthboxes during move animations. #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_RUN_TRAINER_BATTLE TRUE // If set to TRUE, players can run from Trainer battles. This is treated as a whiteout. #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 +#define B_SHOW_USELESS_Z_MOVE_INFO FALSE // If set to TRUE, Z-moves without additional effects like newer gen status moves will say "no additional effect" +#define B_ANIMATE_MON_AFTER_KO TRUE // If set to TRUE, if a Pokémon on the opposite site faints, the non-fainted Pokemon will display a victory animation. +#define B_SHOW_DYNAMAX_MESSAGE FALSE // If set to TRUE, an additional battle message is shown after completing Dynamaxing/Gigantamaxing. // 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) -#define B_CATCHING_CHARM_BOOST 20 // % boost in Critical Capture odds if player has the Catching Charm. -#define B_CRITICAL_CAPTURE TRUE // If set to TRUE, Critical Capture will be enabled. +#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) +#define B_CATCHING_CHARM_BOOST 20 // % boost in Critical Capture odds if player has the Catching Charm. +#define B_CRITICAL_CAPTURE TRUE // If set to TRUE, Critical Capture will be enabled. +#define B_CRITICAL_CAPTURE_LOCAL_DEX TRUE // If set to FALSE, Critical Capture % is based off of the National Pokedex estimated by enabled generations. + #define B_LAST_USED_BALL TRUE // If TRUE, the "last used ball" feature from Gen 7 will be implemented #define B_LAST_USED_BALL_BUTTON R_BUTTON // If last used ball is implemented, this button (or button combo) will trigger throwing the last used ball. #define B_LAST_USED_BALL_CYCLE TRUE // If TRUE, then holding B_LAST_USED_BALL_BUTTON while pressing the D-Pad cycles through the balls @@ -269,12 +302,15 @@ #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 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. #define B_SLEEP_CLAUSE FALSE // Enables Sleep Clause all the time in every case, overriding B_FLAG_SLEEP_CLAUSE. Use that for modularity. +#define NUM_BEEPS_GEN_LATEST 4 // Loops 4 times +#define NUM_BEEPS_GEN_3 -1 // Loops infinitely +#define NUM_BEEPS_OFF 0 // Doesn't play at all +#define B_NUM_LOW_HEALTH_BEEPS NUM_BEEPS_GEN_LATEST // This controls the number of times the "low health" beep will loop. Setting this value to NUM_BEEPS_OFF will disable the beep, while NUM_BEEPS_GEN_3 will loop infinitely. You can set this to any number you want, the defines listed are just for ease of use. + // Animation Settings #define B_NEW_SWORD_PARTICLE FALSE // If set to TRUE, it updates Swords Dance's particle. #define B_NEW_LEECH_SEED_PARTICLE FALSE // If set to TRUE, it updates Leech Seed's animation particle. @@ -298,10 +334,17 @@ #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. -#define SHOW_TYPES_NEVER 0 -#define SHOW_TYPES_ALWAYS 1 -#define SHOW_TYPES_CAUGHT 2 -#define B_SHOW_TYPES SHOW_TYPES_NEVER // When defined as SHOW_TYPES_ALWAYS, after selecting "Fight" in battle, the types of all Pokemon are revealed. Whe defined as SHOW_TYPES_OWN, types are only revealed if the player owns the mon in question. +#define SHOW_TYPES_NEVER 0 // Never shows types in battle +#define SHOW_TYPES_ALWAYS 1 // Always show types in battle +#define SHOW_TYPES_CAUGHT 2 // Only show types if you've caught a species of the mon. +#define SHOW_TYPES_SEEN 3 // Only show types if you've seen a species of the mon. +#define B_SHOW_TYPES SHOW_TYPES_NEVER // When to show type indicators next to Pokémon health bars in battle, while choosing a move after selecting a target Pokémon. + +#define SHOW_EFFECTIVENESS_NEVER 0 // Never show effectiveness when selecting moves. +#define SHOW_EFFECTIVENESS_ALWAYS 1 // Always show effectiveness when selecting moves. +#define SHOW_EFFECTIVENESS_CAUGHT 2 // Only show effectiveness if you've caught a species of the mon. +#define SHOW_EFFECTIVENESS_SEEN 3 // Only show effectiveness if you've seen a species of the mon. +#define B_SHOW_EFFECTIVENESS SHOW_EFFECTIVENESS_SEEN // If not SHOW_EFFECTIVENESS_NEVER, the PP string is replaced by a type effectiveness indicator based off the moves and the opposing side. // Pokémon battle sprite settings #define B_ENEMY_MON_SHADOW_STYLE GEN_LATEST // In Gen4+, all enemy Pokemon will have a shadow drawn beneath them. diff --git a/include/config/follower_npc.h b/include/config/follower_npc.h new file mode 100644 index 0000000000..222248ae80 --- /dev/null +++ b/include/config/follower_npc.h @@ -0,0 +1,13 @@ +#ifndef GUARD_FOLLOWER_NPC_OVERWORLD_H +#define GUARD_FOLLOWER_NPC_OVERWORLD_H + +// NPC Followers +#define FNPC_ENABLE_NPC_FOLLOWERS FALSE // Enables the use of script macros to designate NPCs to follow behind the player, DPP style. Slightly increases the size of the saveblock (SaveBlock3). +#define FNPC_FLAG_HEAL_AFTER_FOLLOWER_BATTLE 0 // Replace the 0 with a flag in order to use that flag to toggle whether the Player's party will be automatically healed after every follower partner battle. If you want this to always be active without using a flag, replace 0 with FNPC_ALWAYS. +#define FNPC_FLAG_PARTNER_WILD_BATTLES 0 // Replace the 0 with a flag in order to use that flag to toggle whether the follower partner will join you for wild battles. If you want this to always be active without using a flag, replace 0 with FNPC_ALWAYS. +#define FNPC_NPC_FOLLOWER_WILD_BATTLE_VS_2 TRUE // If set to TRUE, two wild Pokemon will show up to the partner battle instead of just one. +#define FNPC_NPC_FOLLOWER_PARTY_PREVIEW TRUE // If set to TRUE, a preview of the player's and partner's teams will be shown before every trainer battle. +#define FNPC_FACE_NPC_FOLLOWER_ON_DOOR_EXIT TRUE // If set to TRUE, the player will turn to face the follower when they exit a doorway. +#define FNPC_NPC_FOLLOWER_SHOW_AFTER_LEAVE_ROUTE TRUE // If set to TRUE, the follower will reappear and walk out of the player after using Fly, Escape Rope, or Teleport. + +#endif // GUARD_FOLLOWER_NPC_OVERWORLD_H diff --git a/include/config/general.h b/include/config/general.h index cff1432bb7..1bb70ce00d 100644 --- a/include/config/general.h +++ b/include/config/general.h @@ -68,14 +68,12 @@ // General settings #define EXPANSION_INTRO TRUE // If TRUE, a custom RHH intro will play after the vanilla copyright screen. -#define POKEDEX_PLUS_HGSS FALSE // If TRUE, enables the custom HGSS style Pokedex. #define SUMMARY_SCREEN_NATURE_COLORS TRUE // If TRUE, nature-based stat boosts and reductions will be red and blue in the summary screen. #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". #define AUTO_SCROLL_TEXT FALSE // If TRUE, text will automatically scroll to the next line after NUM_FRAMES_AUTO_SCROLL_DELAY. Players can still press A_BUTTON or B_BUTTON to scroll on their own. #define NUM_FRAMES_AUTO_SCROLL_DELAY 49 - // Measurement system constants to be used for UNITS #define UNITS_IMPERIAL 0 // Inches, feet, pounds #define UNITS_METRIC 1 // meters, kilograms diff --git a/include/config/overworld.h b/include/config/overworld.h index 35a90407b9..50cad2f5fe 100644 --- a/include/config/overworld.h +++ b/include/config/overworld.h @@ -10,6 +10,7 @@ #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. #define OW_FRLG_WHITEOUT FALSE // If enabled, shows an additional whiteout message and post whiteout event script with healing NPC. +#define OW_DEFOG_FIELD_MOVE FALSE // If enabled, Defog can be used as a Field Move as seen in DPPt. // Item Obtain Description Box #define OW_ITEM_DESCRIPTIONS_OFF 0 // never show descriptions @@ -61,31 +62,13 @@ #define OW_FOLLOWERS_COPY_WILD_PKMN FALSE // If TRUE, follower Pokémon that know Transform or have Illusion/Imposter will copy wild Pokémon at random. #define OW_BATTLE_ONLY_FORMS TRUE // If TRUE, loads overworld sprites for battle-only forms like Mega Evos. Requires OW_POKEMON_OBJECT_EVENTS. #define B_FLAG_FOLLOWERS_DISABLED 0 // Enables / Disables followers by using a flag. Helpful to disable followers for a period of time. - - -#define OW_FOLLOWERS_SCRIPT_MOVEMENT TRUE // TRUE: Script collisions hide follower, FLAG_SAFE_FOLLOWER_MOVEMENT on by default - // FALSE: Script collisions unhandled, FLAG_SAFE_FOLLOWER_MOVEMENT off by default - -// If set, the only pokemon allowed to follow you -// will be those matching species, met location, -// and/or met level; -// These accept vars, too: VAR_TEMP_1, etc -#define OW_MON_ALLOWED_SPECIES (0) -#define OW_MON_ALLOWED_MET_LVL (0) -#define OW_MON_ALLOWED_MET_LOC (0) -// Examples: -// Yellow Pikachu: -// #define OW_MON_ALLOWED_SPECIES (SPECIES_PIKACHU) -// #define OW_MON_ALLOWED_MET_LVL (0) -// #define OW_MON_ALLOWED_MET_LOC (MAPSEC_PALLET_TOWN) -// Hoenn Starter: -// #define OW_MON_ALLOWED_SPECIES (0) -// #define OW_MON_ALLOWED_MET_LVL (5) -// #define OW_MON_ALLOWED_MET_LOC (MAPSEC_ROUTE_101) -// Species set in VAR_XXXX: -// #define OW_MON_ALLOWED_SPECIES (VAR_XXXX) -// #define OW_MON_ALLOWED_MET_LVL (0) -// #define OW_MON_ALLOWED_MET_LOC (0) +#define OW_FOLLOWERS_SCRIPT_MOVEMENT TRUE // If TRUE, follower Pokémon only go back to their Poké Ball if a non-player collides with them by setting the FLAG_SAFE_FOLLOWER_MOVEMENT flag by default. +// Follower Pokémon Restrictions +// If set, the only pokemon allowed to follow you will be those matching species, met location, and/or met level; These accept vars, too: VAR_TEMP_1, etc +// For examples, see "docs/tutorials/how_to_new_pokemon.md" +#define OW_FOLLOWERS_ALLOWED_SPECIES (0) +#define OW_FOLLOWERS_ALLOWED_MET_LVL (0) +#define OW_FOLLOWERS_ALLOWED_MET_LOC (0) // Out-of-battle Ability effects #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. @@ -98,13 +81,25 @@ #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 +// These defines only make a distinction for OW_ALTERED_TIME_RATIO #define GEN_8_PLA GEN_LATEST + 2 +#define TIME_DEBUG GEN_LATEST + 3 //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. +#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. TIME_DEBUG is 1:1, and meant for debugging purposes. This has no effect if OW_USE_FAKE_RTC is FALSE. +#define OW_TIME_OF_DAY_ENCOUNTERS FALSE // If TRUE, will allow the user to define and use different encounter tables based on the time of day. +#define OW_TIME_OF_DAY_DISABLE_FALLBACK FALSE // If TRUE, if the encounter table for a specific map and time is empty, the area will have no encounters instead of falling back to the vanilla map and time. +#define OW_TIME_OF_DAY_FALLBACK TIME_MORNING // The time of day that encounter tables fall back to. + +// Lighting +#define OW_SHADOW_INTENSITY 4 // Ranges from 0 to 16, where 0 is fully transparent and 16 is black. +#define OW_OBJECT_SUBPRIORITY 148 // The higher the value, the farther back compared to other sprites. Shadows should be behind object events. +#define OW_ENABLE_DNS TRUE // If set to TRUE, the overworld will be tinted depending on time of day. + +// Object Event Shadows +#define OW_OBJECT_VANILLA_SHADOWS FALSE // In vanilla shadows in the overworld are only shown when jumping. // Overworld flags // To use the following features in scripting, replace the 0s with the flag ID you're assigning it to. @@ -119,7 +114,9 @@ // Map pop-up config #define OW_POPUP_GENERATION GEN_3 // Different generations display location names in overworld pop-ups differently. - // Only choices are currently GEN_3 and GEN_5, all others will default to Gen3 pop-ups. + // Only choices are GEN_3 and GEN_5, all others will default to Gen3 pop-ups. + // Due to changes in project scope, as detailed in docs/team_procedures/scope.md, + // no other overworld popups will be implemented in expansion. // Gen5 map pop-up config // Constants @@ -134,6 +131,7 @@ #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. + // Setting this to TRUE will cause graphical errors with the Day Night System enabled. // 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. diff --git a/include/config/pokedex_plus_hgss.h b/include/config/pokedex_plus_hgss.h new file mode 100644 index 0000000000..667a4bad50 --- /dev/null +++ b/include/config/pokedex_plus_hgss.h @@ -0,0 +1,11 @@ +#ifndef GUARD_CONFIG_POKEDEX_PLUS_HGSS_H +#define GUARD_CONFIG_POKEDEX_PLUS_HGSS_H + +#define POKEDEX_PLUS_HGSS FALSE // If TRUE, enables the custom HGSS style Pokedex. +#define HGSS_DECAPPED FALSE // If TRUE, uses decapped gfx and strings. +#define HGSS_DARK_MODE FALSE // If TRUE, enables dark mode. +#define HGSS_HIDE_UNSEEN_EVOLUTION_NAMES FALSE // If TRUE, hides evolution mon names. +#define HGSS_SORT_TMS_BY_NUM FALSE // If TRUE, sorts the TMS in HGSS Dex by TM number, rather than alphabetically. +#define HGSS_SHOW_EGG_MOVES_FOR_EVOS FALSE // If TRUE, shows Egg Moves for evolved Pokémon too. + +#endif // GUARD_CONFIG_POKEDEX_PLUS_HGSS_H diff --git a/include/config/pokemon.h b/include/config/pokemon.h index 3288065f7c..2345cc3f36 100644 --- a/include/config/pokemon.h +++ b/include/config/pokemon.h @@ -62,7 +62,8 @@ #define P_SHOW_DYNAMIC_TYPES FALSE // If TRUE, all moves with dynamic type changes will be reflected as their current type in battle/summary screens instead of just select ones like in vanilla. // 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. +#define P_LEARNSET_HELPER_TEACHABLE TRUE // If TRUE, teachable_learnsets.h will be populated by tools/learnset_helpers/make_teachables.py using the included JSON files based on available TMs and tutors. +#define P_TUTOR_MOVES_ARRAY FALSE // If TRUE, generates a gTutorMoves array automatically using make_teachables.py. (generally not needed, but the HGSS Pokedex has an optional use for it) // Flag settings // To use the following features in scripting, replace the 0s with the flag ID you're assigning it to. diff --git a/include/config/test.h b/include/config/test.h index 4363a5f82a..6122d14aa1 100644 --- a/include/config/test.h +++ b/include/config/test.h @@ -1139,4 +1139,7 @@ #undef B_FLAG_INVERSE_BATTLE #define B_FLAG_INVERSE_BATTLE TESTING_FLAG_INVERSE_BATTLE +// Move animation testing +#define T_SHOULD_RUN_MOVE_ANIM FALSE // If TRUE, enables the move animation tests, these are very computationally heavy and takes a long time to run. + #endif // GUARD_CONFIG_TEST_H diff --git a/include/constants/battle.h b/include/constants/battle.h index cfb5d05e7e..39f2dbd236 100644 --- a/include/constants/battle.h +++ b/include/constants/battle.h @@ -183,10 +183,10 @@ enum BattlerId #define STATUS3_GASTRO_ACID (1 << 16) #define STATUS3_EMBARGO (1 << 17) #define STATUS3_UNDERWATER (1 << 18) -#define STATUS3_INTIMIDATE_POKES (1 << 19) -#define STATUS3_TRACE (1 << 20) +#define STATUS3_UNUSED_19 (1 << 19) +#define STATUS3_UNUSED_20 (1 << 20) #define STATUS3_SMACKED_DOWN (1 << 21) -#define STATUS3_ME_FIRST (1 << 22) +#define STATUS3_UNUSED_22 (1 << 22) #define STATUS3_TELEKINESIS (1 << 23) #define STATUS3_PHANTOM_FORCE (1 << 24) #define STATUS3_MIRACLE_EYED (1 << 25) @@ -217,7 +217,7 @@ enum BattlerId #define HITMARKER_NO_PPDEDUCT (1 << 11) #define HITMARKER_UNUSED_2 (1 << 12) #define HITMARKER_STATUS_ABILITY_EFFECT (1 << 13) -#define HITMARKER_SYNCHRONISE_EFFECT (1 << 14) +#define HITMARKER_SYNCHRONIZE_EFFECT (1 << 14) #define HITMARKER_RUN (1 << 15) #define HITMARKER_IGNORE_DISGUISE (1 << 16) #define HITMARKER_DISABLE_ANIMATION (1 << 17) // disable animations during battle scripts, e.g. for Bug Bite @@ -229,7 +229,7 @@ enum BattlerId #define HITMARKER_ALLOW_NO_PP (1 << 23) #define HITMARKER_GRUDGE (1 << 24) #define HITMARKER_OBEYS (1 << 25) -#define HITMARKER_NEVER_SET (1 << 26) // Cleared as part of a large group. Never set or checked +#define HITMARKER_UNUSED_5 (1 << 26) #define HITMARKER_CHARGING (1 << 27) #define HITMARKER_FAINTED(battler) (1u << (battler + 28)) #define HITMARKER_FAINTED2(battler) HITMARKER_FAINTED(battler) @@ -250,15 +250,11 @@ enum BattlerId #define SIDE_STATUS_TOXIC_SPIKES (1 << 13) #define SIDE_STATUS_STEALTH_ROCK (1 << 14) // Missing flags previously were SIDE_STATUS_TOXIC_SPIKES_DAMAGED, SIDE_STATUS_STEALTH_ROCK_DAMAGED, SIDE_STATUS_STICKY_WEB_DAMAGED -#define SIDE_STATUS_QUICK_GUARD (1 << 18) -#define SIDE_STATUS_WIDE_GUARD (1 << 19) -#define SIDE_STATUS_CRAFTY_SHIELD (1 << 20) -#define SIDE_STATUS_MAT_BLOCK (1 << 21) -#define SIDE_STATUS_STEELSURGE (1 << 22) -#define SIDE_STATUS_DAMAGE_NON_TYPES (1 << 23) -#define SIDE_STATUS_RAINBOW (1 << 24) -#define SIDE_STATUS_SEA_OF_FIRE (1 << 25) -#define SIDE_STATUS_SWAMP (1 << 26) +#define SIDE_STATUS_STEELSURGE (1 << 18) +#define SIDE_STATUS_DAMAGE_NON_TYPES (1 << 19) +#define SIDE_STATUS_RAINBOW (1 << 20) +#define SIDE_STATUS_SEA_OF_FIRE (1 << 21) +#define SIDE_STATUS_SWAMP (1 << 22) #define SIDE_STATUS_HAZARDS_ANY (SIDE_STATUS_SPIKES | SIDE_STATUS_STICKY_WEB | SIDE_STATUS_TOXIC_SPIKES | SIDE_STATUS_STEALTH_ROCK | SIDE_STATUS_STEELSURGE) #define SIDE_STATUS_SCREEN_ANY (SIDE_STATUS_REFLECT | SIDE_STATUS_LIGHTSCREEN | SIDE_STATUS_AURORA_VEIL) @@ -389,10 +385,8 @@ enum MoveEffects MOVE_EFFECT_EVS_MINUS_2, MOVE_EFFECT_SCALE_SHOT, MOVE_EFFECT_THRASH, - MOVE_EFFECT_KNOCK_OFF, MOVE_EFFECT_DEF_SPDEF_DOWN, MOVE_EFFECT_CLEAR_SMOG, - MOVE_EFFECT_SMACK_DOWN, MOVE_EFFECT_FLAME_BURST, MOVE_EFFECT_FEINT, MOVE_EFFECT_V_CREATE, @@ -404,7 +398,6 @@ enum MoveEffects MOVE_EFFECT_RECOIL_HP_25, MOVE_EFFECT_TRAP_BOTH, MOVE_EFFECT_ROUND, - MOVE_EFFECT_STOCKPILE_WORE_OFF, MOVE_EFFECT_DIRE_CLAW, MOVE_EFFECT_STEALTH_ROCK, MOVE_EFFECT_SPIKES, diff --git a/include/constants/battle_ai.h b/include/constants/battle_ai.h index dfc023676a..d7b70af874 100644 --- a/include/constants/battle_ai.h +++ b/include/constants/battle_ai.h @@ -30,19 +30,25 @@ #define AI_FLAG_PREFER_HIGHEST_DAMAGE_MOVE (1 << 22) // AI adds score to highest damage move regardless of accuracy or secondary effect #define AI_FLAG_PREDICT_SWITCH (1 << 23) // AI will predict the player's switches and switchins based on how it would handle the situation. Recommend using AI_FLAG_OMNISCIENT #define AI_FLAG_PREDICT_INCOMING_MON (1 << 24) // AI will score against the predicting incoming mon if it predicts the player to switch. Requires AI_FLAG_PREDICT_SWITCH +#define AI_FLAG_PP_STALL_PREVENTION (1 << 25) // AI keeps track of the player's switches where the incoming mon is immune to the chosen move +#define AI_FLAG_PREDICT_MOVE (1 << 26) // AI will predict the player's move based on what move it would use in the same situation. Recommend using AI_FLAG_OMNISCIENT -#define AI_FLAG_COUNT 25 +// Flags at and after 32 need different formatting, as in +// #define AI_FLAG_PLACEHOLDER ((u64)1 << 32) + + +#define AI_FLAG_COUNT 27 // The following options are enough to have a basic/smart trainer. Any other addtion could make the trainer worse/better depending on the flag #define AI_FLAG_BASIC_TRAINER (AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY) #define AI_FLAG_SMART_TRAINER (AI_FLAG_BASIC_TRAINER | AI_FLAG_OMNISCIENT | AI_FLAG_SMART_SWITCHING | AI_FLAG_SMART_MON_CHOICES | AI_FLAG_WEIGH_ABILITY_PREDICTION) -#define AI_FLAG_PREDICTION (AI_FLAG_PREDICT_SWITCH | AI_FLAG_PREDICT_INCOMING_MON) +#define AI_FLAG_PREDICTION (AI_FLAG_PREDICT_SWITCH | AI_FLAG_PREDICT_INCOMING_MON | AI_FLAG_PREDICT_MOVE) // '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) +#define AI_FLAG_DYNAMIC_FUNC ((u64)1 << 60) // Create custom AI functions for specific battles via "setdynamicaifunc" cmd +#define AI_FLAG_ROAMING ((u64)1 << 61) +#define AI_FLAG_SAFARI ((u64)1 << 62) +#define AI_FLAG_FIRST_BATTLE ((u64)1 << 63) #define AI_SCORE_DEFAULT 100 // Default score for all AI moves. diff --git a/include/constants/battle_anim.h b/include/constants/battle_anim.h index b5ccb7bf25..c85dcc9fe7 100644 --- a/include/constants/battle_anim.h +++ b/include/constants/battle_anim.h @@ -506,9 +506,9 @@ #define BG_BOLT_STRIKE 55 #define BG_ZMOVE_ACTIVATE 56 #define BG_TECTONIC_RAGE 57 -#define BG_BLUE_SKY_DAY 58 -#define BG_BLUE_SKY_AFTERNOON 59 -#define BG_BLUE_SKY_NIGHT 60 +#define BG_ROCK_FIELD_DAY 58 +#define BG_ROCK_FIELD_AFTERNOON 59 +#define BG_ROCK_FIELD_NIGHT 60 #define BG_ZMOVE_MOUNTAIN 61 #define BG_NEVERENDING_NIGHTMARE 62 #define BG_WATER_PULSE 63 @@ -586,8 +586,9 @@ #define B_ANIM_TERA_CHARGE 50 #define B_ANIM_TERA_ACTIVATE 51 #define B_ANIM_SIMPLE_HEAL 52 +#define B_ANIM_POWER_CONSTRUCT 53 -#define NUM_B_ANIMS_GENERAL 53 +#define NUM_B_ANIMS_GENERAL 54 // special animations table (sBattleAnims_Special) #define B_ANIM_LVL_UP 0 diff --git a/include/constants/battle_move_effects.h b/include/constants/battle_move_effects.h index 073d4d2058..eb0756bd40 100644 --- a/include/constants/battle_move_effects.h +++ b/include/constants/battle_move_effects.h @@ -1,10 +1,11 @@ #ifndef GUARD_CONSTANTS_BATTLE_MOVE_EFFECTS_H #define GUARD_CONSTANTS_BATTLE_MOVE_EFFECTS_H -enum { +enum BattleMoveEffects +{ EFFECT_PLACEHOLDER, EFFECT_HIT, - EFFECT_SLEEP, + EFFECT_NON_VOLATILE_STATUS, EFFECT_ABSORB, EFFECT_EXPLOSION, EFFECT_DREAM_EATER, @@ -30,7 +31,6 @@ enum { EFFECT_MULTI_HIT, EFFECT_CONVERSION, EFFECT_RESTORE_HP, - EFFECT_TOXIC, EFFECT_LIGHT_SCREEN, EFFECT_REST, EFFECT_OHKO, @@ -58,8 +58,6 @@ enum { EFFECT_ACCURACY_DOWN_2, EFFECT_EVASION_DOWN_2, EFFECT_REFLECT, - EFFECT_POISON, - EFFECT_PARALYZE, EFFECT_TWO_TURNS_ATTACK, EFFECT_SUBSTITUTE, EFFECT_RAGE, @@ -123,7 +121,6 @@ enum { EFFECT_EARTHQUAKE, EFFECT_FUTURE_SIGHT, EFFECT_SOLAR_BEAM, - EFFECT_THUNDER, EFFECT_TELEPORT, EFFECT_BEAT_UP, EFFECT_SEMI_INVULNERABLE, @@ -138,7 +135,6 @@ enum { EFFECT_HAIL, EFFECT_TORMENT, EFFECT_FLATTER, - EFFECT_WILL_O_WISP, EFFECT_MEMENTO, EFFECT_FACADE, EFFECT_FOCUS_PUNCH, @@ -336,8 +332,6 @@ enum { EFFECT_FILLET_AWAY, EFFECT_IVY_CUDGEL, EFFECT_FICKLE_BEAM, - EFFECT_BLIZZARD, - EFFECT_RAIN_ALWAYS_HIT, // Unlike EFFECT_THUNDER, it doesn't get its accuracy reduced under sun. EFFECT_SHED_TAIL, EFFECT_UPPER_HAND, EFFECT_DRAGON_CHEER, @@ -352,6 +346,8 @@ enum { EFFECT_ORDER_UP, EFFECT_RAPID_SPIN, EFFECT_SPECTRAL_THIEF, + EFFECT_RECOIL, + EFFECT_SMACK_DOWN, NUM_BATTLE_MOVE_EFFECTS, }; diff --git a/include/constants/battle_script_commands.h b/include/constants/battle_script_commands.h index ecd85700d8..2b0287be40 100644 --- a/include/constants/battle_script_commands.h +++ b/include/constants/battle_script_commands.h @@ -121,8 +121,6 @@ enum CmdVarious VARIOUS_INSTANT_HP_DROP, VARIOUS_CLEAR_STATUS, VARIOUS_RESTORE_PP, - VARIOUS_TRY_ACTIVATE_MOXIE, - VARIOUS_TRY_ACTIVATE_FELL_STINGER, VARIOUS_PLAY_MOVE_ANIMATION, VARIOUS_SET_LUCKY_CHANT, VARIOUS_SUCKER_PUNCH_CHECK, @@ -135,7 +133,6 @@ enum CmdVarious VARIOUS_TRY_ELECTRIFY, VARIOUS_TRY_SOAK, VARIOUS_TRY_LAST_RESORT, - VARIOUS_SET_ARG_TO_BATTLE_DAMAGE, VARIOUS_TRY_AUTOTOMIZE, VARIOUS_ABILITY_POPUP, VARIOUS_JUMP_IF_TARGET_ALLY, @@ -168,20 +165,16 @@ enum CmdVarious VARIOUS_LOSE_TYPE, VARIOUS_TRY_ACTIVATE_SOULHEART, VARIOUS_TRY_ACTIVATE_RECEIVER, - VARIOUS_TRY_ACTIVATE_BEAST_BOOST, VARIOUS_TRY_FRISK, VARIOUS_JUMP_IF_SHIELDS_DOWN_PROTECTED, VARIOUS_TRY_FAIRY_LOCK, VARIOUS_JUMP_IF_NO_ALLY, - VARIOUS_POISON_TYPE_IMMUNITY, VARIOUS_JUMP_IF_HOLD_EFFECT, VARIOUS_INFATUATE_WITH_BATTLER, VARIOUS_SET_LAST_USED_ITEM, - VARIOUS_PARALYZE_TYPE_IMMUNITY, VARIOUS_JUMP_IF_ABSENT, VARIOUS_DESTROY_ABILITY_POPUP, VARIOUS_TOTEM_BOOST, - VARIOUS_TRY_ACTIVATE_GRIM_NEIGH, VARIOUS_MOVEEND_ITEM_EFFECTS, VARIOUS_TERRAIN_SEED, VARIOUS_MAKE_INVISIBLE, @@ -192,7 +185,6 @@ enum CmdVarious VARIOUS_TRY_TO_CLEAR_PRIMAL_WEATHER, VARIOUS_GET_ROTOTILLER_TARGETS, VARIOUS_JUMP_IF_NOT_ROTOTILLER_AFFECTED, - VARIOUS_TRY_ACTIVATE_BATTLE_BOND, VARIOUS_CONSUME_BERRY, VARIOUS_JUMP_IF_CANT_REVERT_TO_PRIMAL, VARIOUS_JUMP_IF_SPECIES, @@ -211,7 +203,6 @@ enum CmdVarious VARIOUS_CURE_CERTAIN_STATUSES, VARIOUS_TRY_RESET_NEGATIVE_STAT_STAGES, VARIOUS_JUMP_IF_LAST_USED_ITEM_BERRY, - VARIOUS_JUMP_IF_LAST_USED_ITEM_HOLD_EFFECT, VARIOUS_SAVE_BATTLER_ITEM, VARIOUS_RESTORE_BATTLER_ITEM, VARIOUS_BATTLER_ITEM_TO_LAST_USED_ITEM, @@ -269,34 +260,32 @@ enum MoveEndEffects MOVEEND_ATTACKER_VISIBLE, MOVEEND_TARGET_VISIBLE, MOVEEND_ITEM_EFFECTS_TARGET, - MOVEEND_MOVE_EFFECTS2, + MOVEEND_FIRST_MOVE_BLOCK, MOVEEND_ITEM_EFFECTS_ALL, MOVEEND_SYMBIOSIS, - MOVEEND_HIT_SWITCH_TARGET, MOVEEND_KINGSROCK, // These item effects will occur each strike of a multi-hit move MOVEEND_SUBSTITUTE, MOVEEND_SKY_DROP_CONFUSE, MOVEEND_UPDATE_LAST_MOVES, MOVEEND_MIRROR_MOVE, MOVEEND_DEFROST, - MOVEEND_NEXT_TARGET, // Everything up until here is handled for each strike of a multi-hit move + MOVEEND_NEXT_TARGET, // Everything up until here is handled for each strike of a spread move MOVEEND_MULTIHIT_MOVE, - MOVEEND_RECOIL, - MOVEEND_RAPID_SPIN, + MOVEEND_SECOND_MOVE_BLOCK, MOVEEND_ITEM_EFFECTS_ATTACKER, - MOVEEND_MAGICIAN, // Occurs after final multi-hit strike, and after other items/abilities would activate - MOVEEND_SHEER_FORCE, // If move is Sheer Force affected, skip until Eject Pack + MOVEEND_ABILITY_BLOCK, + MOVEEND_SHEER_FORCE, // If move is Sheer Force affected, skip until Opportunist MOVEEND_RED_CARD, // Red Card triggers before Eject Pack MOVEEND_EJECT_BUTTON, MOVEEND_LIFEORB_SHELLBELL, // Includes shell bell, throat spray, etc MOVEEND_EMERGENCY_EXIT, MOVEEND_EJECT_PACK, + MOVEEND_HIT_ESCAPE, MOVEEND_OPPORTUNIST, // Occurs after other stat change items/abilities to try and copy the boosts MOVEEND_PICKPOCKET, MOVEEND_WHITE_HERB, MOVEEND_CHANGED_ITEMS, MOVEEND_SAME_MOVE_TURNS, - MOVEEND_SET_EVOLUTION_TRACKER, MOVEEND_CLEAR_BITS, MOVEEND_DANCER, MOVEEND_PURSUIT_NEXT_ACTION, diff --git a/include/constants/battle_string_ids.h b/include/constants/battle_string_ids.h index 7c7e023fa3..8e8503458d 100644 --- a/include/constants/battle_string_ids.h +++ b/include/constants/battle_string_ids.h @@ -1,742 +1,745 @@ #ifndef GUARD_CONSTANTS_BATTLE_STRING_IDS_H #define GUARD_CONSTANTS_BATTLE_STRING_IDS_H -#define STRINGID_INTROMSG 0 -#define STRINGID_INTROSENDOUT 1 -#define STRINGID_RETURNMON 2 -#define STRINGID_SWITCHINMON 3 -#define STRINGID_USEDMOVE 4 -#define STRINGID_BATTLEEND 5 -#define STRINGID_TRAINERSLIDE 6 - -// todo: make some of those names less vague: attacker/target vs pkmn, etc. -#define STRINGID_TRAINER1LOSETEXT 12 -#define STRINGID_PKMNGAINEDEXP 13 -#define STRINGID_PKMNGREWTOLV 14 -#define STRINGID_PKMNLEARNEDMOVE 15 -#define STRINGID_TRYTOLEARNMOVE1 16 -#define STRINGID_TRYTOLEARNMOVE2 17 -#define STRINGID_TRYTOLEARNMOVE3 18 -#define STRINGID_PKMNFORGOTMOVE 19 -#define STRINGID_STOPLEARNINGMOVE 20 -#define STRINGID_DIDNOTLEARNMOVE 21 -#define STRINGID_PKMNLEARNEDMOVE2 22 -#define STRINGID_ATTACKMISSED 23 -#define STRINGID_PKMNPROTECTEDITSELF 24 -#define STRINGID_STATSWONTINCREASE2 25 -#define STRINGID_AVOIDEDDAMAGE 26 -#define STRINGID_ITDOESNTAFFECT 27 -#define STRINGID_ATTACKERFAINTED 28 -#define STRINGID_TARGETFAINTED 29 -#define STRINGID_PLAYERGOTMONEY 30 -#define STRINGID_PLAYERWHITEOUT 31 -#define STRINGID_PLAYERWHITEOUT2 32 -#define STRINGID_PREVENTSESCAPE 33 -#define STRINGID_HITXTIMES 34 -#define STRINGID_PKMNFELLASLEEP 35 -#define STRINGID_PKMNMADESLEEP 36 -#define STRINGID_PKMNALREADYASLEEP 37 -#define STRINGID_PKMNALREADYASLEEP2 38 -#define STRINGID_PKMNWASNTAFFECTED 39 -#define STRINGID_PKMNWASPOISONED 40 -#define STRINGID_PKMNPOISONEDBY 41 -#define STRINGID_PKMNHURTBYPOISON 42 -#define STRINGID_PKMNALREADYPOISONED 43 -#define STRINGID_PKMNBADLYPOISONED 44 -#define STRINGID_PKMNENERGYDRAINED 45 -#define STRINGID_PKMNWASBURNED 46 -#define STRINGID_PKMNBURNEDBY 47 -#define STRINGID_PKMNHURTBYBURN 48 -#define STRINGID_PKMNWASFROZEN 49 -#define STRINGID_PKMNFROZENBY 50 -#define STRINGID_PKMNISFROZEN 51 -#define STRINGID_PKMNWASDEFROSTED 52 -#define STRINGID_PKMNWASDEFROSTED2 53 -#define STRINGID_PKMNWASDEFROSTEDBY 54 -#define STRINGID_PKMNWASPARALYZED 55 -#define STRINGID_PKMNWASPARALYZEDBY 56 -#define STRINGID_PKMNISPARALYZED 57 -#define STRINGID_PKMNISALREADYPARALYZED 58 -#define STRINGID_PKMNHEALEDPARALYSIS 59 -#define STRINGID_PKMNDREAMEATEN 60 -#define STRINGID_STATSWONTINCREASE 61 -#define STRINGID_STATSWONTDECREASE 62 -#define STRINGID_TEAMSTOPPEDWORKING 63 -#define STRINGID_FOESTOPPEDWORKING 64 -#define STRINGID_PKMNISCONFUSED 65 -#define STRINGID_PKMNHEALEDCONFUSION 66 -#define STRINGID_PKMNWASCONFUSED 67 -#define STRINGID_PKMNALREADYCONFUSED 68 -#define STRINGID_PKMNFELLINLOVE 69 -#define STRINGID_PKMNINLOVE 70 -#define STRINGID_PKMNIMMOBILIZEDBYLOVE 71 -#define STRINGID_PKMNBLOWNAWAY 72 -#define STRINGID_PKMNCHANGEDTYPE 73 -#define STRINGID_PKMNFLINCHED 74 -#define STRINGID_PKMNREGAINEDHEALTH 75 -#define STRINGID_PKMNHPFULL 76 -#define STRINGID_PKMNRAISEDSPDEF 77 -#define STRINGID_PKMNRAISEDDEF 78 -#define STRINGID_PKMNCOVEREDBYVEIL 79 -#define STRINGID_PKMNUSEDSAFEGUARD 80 -#define STRINGID_PKMNSAFEGUARDEXPIRED 81 -#define STRINGID_PKMNWENTTOSLEEP 82 -#define STRINGID_PKMNSLEPTHEALTHY 83 -#define STRINGID_PKMNWHIPPEDWHIRLWIND 84 -#define STRINGID_PKMNTOOKSUNLIGHT 85 -#define STRINGID_PKMNLOWEREDHEAD 86 -#define STRINGID_PKMNISGLOWING 87 -#define STRINGID_PKMNFLEWHIGH 88 -#define STRINGID_PKMNDUGHOLE 89 -#define STRINGID_PKMNSQUEEZEDBYBIND 90 -#define STRINGID_PKMNTRAPPEDINVORTEX 91 -#define STRINGID_PKMNWRAPPEDBY 92 -#define STRINGID_PKMNCLAMPED 93 -#define STRINGID_PKMNHURTBY 94 -#define STRINGID_PKMNFREEDFROM 95 -#define STRINGID_PKMNCRASHED 96 -#define STRINGID_PKMNSHROUDEDINMIST 97 -#define STRINGID_PKMNPROTECTEDBYMIST 98 -#define STRINGID_PKMNGETTINGPUMPED 99 -#define STRINGID_PKMNHITWITHRECOIL 100 -#define STRINGID_PKMNPROTECTEDITSELF2 101 -#define STRINGID_PKMNBUFFETEDBYSANDSTORM 102 -#define STRINGID_PKMNPELTEDBYHAIL 103 -#define STRINGID_PKMNSEEDED 104 -#define STRINGID_PKMNEVADEDATTACK 105 -#define STRINGID_PKMNSAPPEDBYLEECHSEED 106 -#define STRINGID_PKMNFASTASLEEP 107 -#define STRINGID_PKMNWOKEUP 108 -#define STRINGID_PKMNUPROARKEPTAWAKE 109 -#define STRINGID_PKMNWOKEUPINUPROAR 110 -#define STRINGID_PKMNCAUSEDUPROAR 111 -#define STRINGID_PKMNMAKINGUPROAR 112 -#define STRINGID_PKMNCALMEDDOWN 113 -#define STRINGID_PKMNCANTSLEEPINUPROAR 114 -#define STRINGID_PKMNSTOCKPILED 115 -#define STRINGID_PKMNCANTSTOCKPILE 116 -#define STRINGID_PKMNCANTSLEEPINUPROAR2 117 -#define STRINGID_UPROARKEPTPKMNAWAKE 118 -#define STRINGID_PKMNSTAYEDAWAKEUSING 119 -#define STRINGID_PKMNSTORINGENERGY 120 -#define STRINGID_PKMNUNLEASHEDENERGY 121 -#define STRINGID_PKMNFATIGUECONFUSION 122 -#define STRINGID_PLAYERPICKEDUPMONEY 123 -#define STRINGID_PKMNUNAFFECTED 124 -#define STRINGID_PKMNTRANSFORMEDINTO 125 -#define STRINGID_PKMNMADESUBSTITUTE 126 -#define STRINGID_PKMNHASSUBSTITUTE 127 -#define STRINGID_SUBSTITUTEDAMAGED 128 -#define STRINGID_PKMNSUBSTITUTEFADED 129 -#define STRINGID_PKMNMUSTRECHARGE 130 -#define STRINGID_PKMNRAGEBUILDING 131 -#define STRINGID_PKMNMOVEWASDISABLED 132 -#define STRINGID_PKMNMOVEISDISABLED 133 -#define STRINGID_PKMNMOVEDISABLEDNOMORE 134 -#define STRINGID_PKMNGOTENCORE 135 -#define STRINGID_PKMNENCOREENDED 136 -#define STRINGID_PKMNTOOKAIM 137 -#define STRINGID_PKMNSKETCHEDMOVE 138 -#define STRINGID_PKMNTRYINGTOTAKEFOE 139 -#define STRINGID_PKMNTOOKFOE 140 -#define STRINGID_PKMNREDUCEDPP 141 -#define STRINGID_PKMNSTOLEITEM 142 -#define STRINGID_TARGETCANTESCAPENOW 143 -#define STRINGID_PKMNFELLINTONIGHTMARE 144 -#define STRINGID_PKMNLOCKEDINNIGHTMARE 145 -#define STRINGID_PKMNLAIDCURSE 146 -#define STRINGID_PKMNAFFLICTEDBYCURSE 147 -#define STRINGID_SPIKESSCATTERED 148 -#define STRINGID_PKMNHURTBYSPIKES 149 -#define STRINGID_PKMNIDENTIFIED 150 -#define STRINGID_PKMNPERISHCOUNTFELL 151 -#define STRINGID_PKMNBRACEDITSELF 152 -#define STRINGID_PKMNENDUREDHIT 153 -#define STRINGID_MAGNITUDESTRENGTH 154 -#define STRINGID_PKMNCUTHPMAXEDATTACK 155 -#define STRINGID_PKMNCOPIEDSTATCHANGES 156 -#define STRINGID_PKMNGOTFREE 157 -#define STRINGID_PKMNSHEDLEECHSEED 158 -#define STRINGID_PKMNBLEWAWAYSPIKES 159 -#define STRINGID_PKMNFLEDFROMBATTLE 160 -#define STRINGID_PKMNFORESAWATTACK 161 -#define STRINGID_PKMNTOOKATTACK 162 -#define STRINGID_PKMNATTACK 163 -#define STRINGID_PKMNCENTERATTENTION 164 -#define STRINGID_PKMNCHARGINGPOWER 165 -#define STRINGID_NATUREPOWERTURNEDINTO 166 -#define STRINGID_PKMNSTATUSNORMAL 167 -#define STRINGID_PKMNHASNOMOVESLEFT 168 -#define STRINGID_PKMNSUBJECTEDTOTORMENT 169 -#define STRINGID_PKMNCANTUSEMOVETORMENT 170 -#define STRINGID_PKMNTIGHTENINGFOCUS 171 -#define STRINGID_PKMNFELLFORTAUNT 172 -#define STRINGID_PKMNCANTUSEMOVETAUNT 173 -#define STRINGID_PKMNREADYTOHELP 174 -#define STRINGID_PKMNSWITCHEDITEMS 175 -#define STRINGID_PKMNCOPIEDFOE 176 -#define STRINGID_PKMNMADEWISH 177 -#define STRINGID_PKMNWISHCAMETRUE 178 -#define STRINGID_PKMNPLANTEDROOTS 179 -#define STRINGID_PKMNABSORBEDNUTRIENTS 180 -#define STRINGID_PKMNANCHOREDITSELF 181 -#define STRINGID_PKMNWASMADEDROWSY 182 -#define STRINGID_PKMNKNOCKEDOFF 183 -#define STRINGID_PKMNSWAPPEDABILITIES 184 -#define STRINGID_PKMNSEALEDOPPONENTMOVE 185 -#define STRINGID_PKMNCANTUSEMOVESEALED 186 -#define STRINGID_PKMNWANTSGRUDGE 187 -#define STRINGID_PKMNLOSTPPGRUDGE 188 -#define STRINGID_PKMNSHROUDEDITSELF 189 -#define STRINGID_PKMNMOVEBOUNCED 190 -#define STRINGID_PKMNWAITSFORTARGET 191 -#define STRINGID_PKMNSNATCHEDMOVE 192 -#define STRINGID_PKMNMADEITRAIN 193 -#define STRINGID_PKMNRAISEDSPEED 194 -#define STRINGID_PKMNPROTECTEDBY 195 -#define STRINGID_PKMNPREVENTSUSAGE 196 -#define STRINGID_PKMNRESTOREDHPUSING 197 -#define STRINGID_PKMNCHANGEDTYPEWITH 198 -#define STRINGID_PKMNPREVENTSPARALYSISWITH 199 -#define STRINGID_PKMNPREVENTSROMANCEWITH 200 -#define STRINGID_PKMNPREVENTSPOISONINGWITH 201 -#define STRINGID_PKMNPREVENTSCONFUSIONWITH 202 -#define STRINGID_PKMNRAISEDFIREPOWERWITH 203 -#define STRINGID_PKMNANCHORSITSELFWITH 204 -#define STRINGID_PKMNCUTSATTACKWITH 205 -#define STRINGID_PKMNPREVENTSSTATLOSSWITH 206 -#define STRINGID_PKMNHURTSWITH 207 -#define STRINGID_PKMNTRACED 208 -#define STRINGID_STATSHARPLY 209 -#define STRINGID_STATROSE 210 -#define STRINGID_STATHARSHLY 211 -#define STRINGID_STATFELL 212 -#define STRINGID_ATTACKERSSTATROSE 213 -#define STRINGID_DEFENDERSSTATROSE 214 -#define STRINGID_ATTACKERSSTATFELL 215 -#define STRINGID_DEFENDERSSTATFELL 216 -#define STRINGID_CRITICALHIT 217 -#define STRINGID_ONEHITKO 218 -#define STRINGID_123POOF 219 -#define STRINGID_ANDELLIPSIS 220 -#define STRINGID_NOTVERYEFFECTIVE 221 -#define STRINGID_SUPEREFFECTIVE 222 -#define STRINGID_GOTAWAYSAFELY 223 -#define STRINGID_WILDPKMNFLED 224 -#define STRINGID_NORUNNINGFROMTRAINERS 225 -#define STRINGID_CANTESCAPE 226 -#define STRINGID_DONTLEAVEBIRCH 227 -#define STRINGID_BUTNOTHINGHAPPENED 228 -#define STRINGID_BUTITFAILED 229 -#define STRINGID_ITHURTCONFUSION 230 -#define STRINGID_MIRRORMOVEFAILED 231 -#define STRINGID_STARTEDTORAIN 232 -#define STRINGID_DOWNPOURSTARTED 233 -#define STRINGID_RAINCONTINUES 234 -#define STRINGID_DOWNPOURCONTINUES 235 -#define STRINGID_RAINSTOPPED 236 -#define STRINGID_SANDSTORMBREWED 237 -#define STRINGID_SANDSTORMRAGES 238 -#define STRINGID_SANDSTORMSUBSIDED 239 -#define STRINGID_SUNLIGHTGOTBRIGHT 240 -#define STRINGID_SUNLIGHTSTRONG 241 -#define STRINGID_SUNLIGHTFADED 242 -#define STRINGID_STARTEDHAIL 243 -#define STRINGID_HAILCONTINUES 244 -#define STRINGID_HAILSTOPPED 245 -#define STRINGID_FAILEDTOSPITUP 246 -#define STRINGID_FAILEDTOSWALLOW 247 -#define STRINGID_WINDBECAMEHEATWAVE 248 -#define STRINGID_STATCHANGESGONE 249 -#define STRINGID_COINSSCATTERED 250 -#define STRINGID_TOOWEAKFORSUBSTITUTE 251 -#define STRINGID_SHAREDPAIN 252 -#define STRINGID_BELLCHIMED 253 -#define STRINGID_FAINTINTHREE 254 -#define STRINGID_NOPPLEFT 255 -#define STRINGID_BUTNOPPLEFT 256 -#define STRINGID_PLAYERUSEDITEM 257 -#define STRINGID_WALLYUSEDITEM 258 -#define STRINGID_TRAINERBLOCKEDBALL 259 -#define STRINGID_DONTBEATHIEF 260 -#define STRINGID_ITDODGEDBALL 261 -#define STRINGID_YOUMISSEDPKMN 262 -#define STRINGID_PKMNBROKEFREE 263 -#define STRINGID_ITAPPEAREDCAUGHT 264 -#define STRINGID_AARGHALMOSTHADIT 265 -#define STRINGID_SHOOTSOCLOSE 266 -#define STRINGID_GOTCHAPKMNCAUGHTPLAYER 267 -#define STRINGID_GOTCHAPKMNCAUGHTWALLY 268 -#define STRINGID_GIVENICKNAMECAPTURED 269 -#define STRINGID_PKMNSENTTOPC 270 -#define STRINGID_PKMNDATAADDEDTODEX 271 -#define STRINGID_ITISRAINING 272 -#define STRINGID_SANDSTORMISRAGING 273 -#define STRINGID_CANTESCAPE2 274 -#define STRINGID_PKMNIGNORESASLEEP 275 -#define STRINGID_PKMNIGNOREDORDERS 276 -#define STRINGID_PKMNBEGANTONAP 277 -#define STRINGID_PKMNLOAFING 278 -#define STRINGID_PKMNWONTOBEY 279 -#define STRINGID_PKMNTURNEDAWAY 280 -#define STRINGID_PKMNPRETENDNOTNOTICE 281 -#define STRINGID_ENEMYABOUTTOSWITCHPKMN 282 -#define STRINGID_CREPTCLOSER 283 -#define STRINGID_CANTGETCLOSER 284 -#define STRINGID_PKMNWATCHINGCAREFULLY 285 -#define STRINGID_PKMNCURIOUSABOUTX 286 -#define STRINGID_PKMNENTHRALLEDBYX 287 -#define STRINGID_PKMNIGNOREDX 288 -#define STRINGID_THREWPOKEBLOCKATPKMN 289 -#define STRINGID_OUTOFSAFARIBALLS 290 -#define STRINGID_PKMNSITEMCUREDPARALYSIS 291 -#define STRINGID_PKMNSITEMCUREDPOISON 292 -#define STRINGID_PKMNSITEMHEALEDBURN 293 -#define STRINGID_PKMNSITEMDEFROSTEDIT 294 -#define STRINGID_PKMNSITEMWOKEIT 295 -#define STRINGID_PKMNSITEMSNAPPEDOUT 296 -#define STRINGID_PKMNSITEMCUREDPROBLEM 297 -#define STRINGID_PKMNSITEMRESTOREDHEALTH 298 -#define STRINGID_PKMNSITEMRESTOREDPP 299 -#define STRINGID_PKMNSITEMRESTOREDSTATUS 300 -#define STRINGID_PKMNSITEMRESTOREDHPALITTLE 301 -#define STRINGID_ITEMALLOWSONLYYMOVE 302 -#define STRINGID_PKMNHUNGONWITHX 303 -#define STRINGID_EMPTYSTRING3 304 -#define STRINGID_PKMNSXPREVENTSBURNS 305 -#define STRINGID_PKMNSXBLOCKSY 306 -#define STRINGID_PKMNSXRESTOREDHPALITTLE2 307 -#define STRINGID_PKMNSXWHIPPEDUPSANDSTORM 308 -#define STRINGID_PKMNSXPREVENTSYLOSS 309 -#define STRINGID_PKMNSXINFATUATEDY 310 -#define STRINGID_PKMNSXMADEYINEFFECTIVE 311 -#define STRINGID_PKMNSXCUREDYPROBLEM 312 -#define STRINGID_ITSUCKEDLIQUIDOOZE 313 -#define STRINGID_PKMNTRANSFORMED 314 -#define STRINGID_ELECTRICITYWEAKENED 315 -#define STRINGID_FIREWEAKENED 316 -#define STRINGID_PKMNHIDUNDERWATER 317 -#define STRINGID_PKMNSPRANGUP 318 -#define STRINGID_HMMOVESCANTBEFORGOTTEN 319 -#define STRINGID_XFOUNDONEY 320 -#define STRINGID_PLAYERDEFEATEDTRAINER1 321 -#define STRINGID_SOOTHINGAROMA 322 -#define STRINGID_ITEMSCANTBEUSEDNOW 323 -#define STRINGID_FORXCOMMAYZ 324 -#define STRINGID_USINGITEMSTATOFPKMNROSE 325 -#define STRINGID_PKMNUSEDXTOGETPUMPED 326 -#define STRINGID_PKMNSXMADEYUSELESS 327 -#define STRINGID_PKMNTRAPPEDBYSANDTOMB 328 -#define STRINGID_EMPTYSTRING4 329 -#define STRINGID_ABOOSTED 330 -#define STRINGID_PKMNSXINTENSIFIEDSUN 331 -#define STRINGID_PKMNMAKESGROUNDMISS 332 -#define STRINGID_YOUTHROWABALLNOWRIGHT 333 -#define STRINGID_PKMNSXTOOKATTACK 334 -#define STRINGID_PKMNCHOSEXASDESTINY 335 -#define STRINGID_PKMNLOSTFOCUS 336 -#define STRINGID_USENEXTPKMN 337 -#define STRINGID_PKMNFLEDUSINGITS 338 -#define STRINGID_PKMNFLEDUSING 339 -#define STRINGID_PKMNWASDRAGGEDOUT 340 -#define STRINGID_PREVENTEDFROMWORKING 341 -#define STRINGID_PKMNSITEMNORMALIZEDSTATUS 342 -#define STRINGID_TRAINER1USEDITEM 343 -#define STRINGID_BOXISFULL 344 -#define STRINGID_PKMNAVOIDEDATTACK 345 -#define STRINGID_PKMNSXMADEITINEFFECTIVE 346 -#define STRINGID_PKMNSXPREVENTSFLINCHING 347 -#define STRINGID_PKMNALREADYHASBURN 348 -#define STRINGID_STATSWONTDECREASE2 349 -#define STRINGID_PKMNSXBLOCKSY2 350 -#define STRINGID_PKMNSXWOREOFF 351 -#define STRINGID_PKMNRAISEDDEFALITTLE 352 -#define STRINGID_PKMNRAISEDSPDEFALITTLE 353 -#define STRINGID_THEWALLSHATTERED 354 -#define STRINGID_PKMNSXPREVENTSYSZ 355 -#define STRINGID_PKMNSXCUREDITSYPROBLEM 356 -#define STRINGID_ATTACKERCANTESCAPE 357 -#define STRINGID_PKMNOBTAINEDX 358 -#define STRINGID_PKMNOBTAINEDX2 359 -#define STRINGID_PKMNOBTAINEDXYOBTAINEDZ 360 -#define STRINGID_BUTNOEFFECT 361 -#define STRINGID_PKMNSXHADNOEFFECTONY 362 -#define STRINGID_TWOENEMIESDEFEATED 363 -#define STRINGID_TRAINER2LOSETEXT 364 -#define STRINGID_PKMNINCAPABLEOFPOWER 365 -#define STRINGID_GLINTAPPEARSINEYE 366 -#define STRINGID_PKMNGETTINGINTOPOSITION 367 -#define STRINGID_PKMNBEGANGROWLINGDEEPLY 368 -#define STRINGID_PKMNEAGERFORMORE 369 -#define STRINGID_DEFEATEDOPPONENTBYREFEREE 370 -#define STRINGID_LOSTTOOPPONENTBYREFEREE 371 -#define STRINGID_TIEDOPPONENTBYREFEREE 372 -#define STRINGID_QUESTIONFORFEITMATCH 373 -#define STRINGID_FORFEITEDMATCH 374 -#define STRINGID_PKMNTRANSFERREDSOMEONESPC 375 -#define STRINGID_PKMNTRANSFERREDLANETTESPC 376 -#define STRINGID_PKMNBOXSOMEONESPCFULL 377 -#define STRINGID_PKMNBOXLANETTESPCFULL 378 -#define STRINGID_TRAINER1WINTEXT 379 -#define STRINGID_TRAINER2WINTEXT 380 - -#define STRINGID_ENDUREDSTURDY 381 -#define STRINGID_POWERHERB 382 -#define STRINGID_HURTBYITEM 383 -#define STRINGID_PSNBYITEM 384 -#define STRINGID_BRNBYITEM 385 -#define STRINGID_DEFABILITYIN 386 -#define STRINGID_GRAVITYINTENSIFIED 387 -#define STRINGID_TARGETIDENTIFIED 388 -#define STRINGID_TARGETWOKEUP 389 -#define STRINGID_PKMNSTOLEANDATEITEM 390 -#define STRINGID_TAILWINDBLEW 391 -#define STRINGID_PKMNWENTBACK 392 -#define STRINGID_PKMNCANTUSEITEMSANYMORE 393 -#define STRINGID_PKMNFLUNG 394 -#define STRINGID_PKMNPREVENTEDFROMHEALING 395 -#define STRINGID_PKMNSWITCHEDATKANDDEF 396 -#define STRINGID_PKMNSABILITYSUPPRESSED 397 -#define STRINGID_SHIELDEDFROMCRITICALHITS 398 -#define STRINGID_SWITCHEDATKANDSPATK 399 -#define STRINGID_SWITCHEDDEFANDSPDEF 400 -#define STRINGID_PKMNACQUIREDABILITY 401 -#define STRINGID_POISONSPIKESSCATTERED 402 -#define STRINGID_PKMNSWITCHEDSTATCHANGES 403 -#define STRINGID_PKMNSURROUNDEDWITHVEILOFWATER 404 -#define STRINGID_PKMNLEVITATEDONELECTROMAGNETISM 405 -#define STRINGID_PKMNTWISTEDDIMENSIONS 406 -#define STRINGID_POINTEDSTONESFLOAT 407 -#define STRINGID_CLOAKEDINMYSTICALMOONLIGHT 408 -#define STRINGID_TRAPPEDBYSWIRLINGMAGMA 409 -#define STRINGID_VANISHEDINSTANTLY 410 -#define STRINGID_PROTECTEDTEAM 411 -#define STRINGID_SHAREDITSGUARD 412 -#define STRINGID_SHAREDITSPOWER 413 -#define STRINGID_SWAPSDEFANDSPDEFOFALLPOKEMON 414 -#define STRINGID_BECAMENIMBLE 415 -#define STRINGID_HURLEDINTOTHEAIR 416 -#define STRINGID_HELDITEMSLOSEEFFECTS 417 -#define STRINGID_FELLSTRAIGHTDOWN 418 -#define STRINGID_TARGETCHANGEDTYPE 419 -#define STRINGID_PKMNACQUIREDSIMPLE 420 -#define STRINGID_EMPTYSTRING5 421 -#define STRINGID_KINDOFFER 422 -#define STRINGID_RESETSTARGETSSTATLEVELS 423 -#define STRINGID_EMPTYSTRING6 424 -#define STRINGID_ALLYSWITCHPOSITION 425 -#define STRINGID_RESTORETARGETSHEALTH 426 -#define STRINGID_TOOKPJMNINTOTHESKY 427 -#define STRINGID_FREEDFROMSKYDROP 428 -#define STRINGID_POSTPONETARGETMOVE 429 -#define STRINGID_REFLECTTARGETSTYPE 430 -#define STRINGID_TRANSFERHELDITEM 431 -#define STRINGID_EMBARGOENDS 432 -#define STRINGID_ELECTROMAGNETISM 433 -#define STRINGID_BUFFERENDS 434 -#define STRINGID_TELEKINESISENDS 435 -#define STRINGID_TAILWINDENDS 436 -#define STRINGID_LUCKYCHANTENDS 437 -#define STRINGID_TRICKROOMENDS 438 -#define STRINGID_WONDERROOMENDS 439 -#define STRINGID_MAGICROOMENDS 440 -#define STRINGID_MUDSPORTENDS 441 -#define STRINGID_WATERSPORTENDS 442 -#define STRINGID_GRAVITYENDS 443 -#define STRINGID_AQUARINGHEAL 444 -#define STRINGID_ELECTRICTERRAINENDS 445 -#define STRINGID_MISTYTERRAINENDS 446 -#define STRINGID_PSYCHICTERRAINENDS 447 -#define STRINGID_GRASSYTERRAINENDS 448 -#define STRINGID_TARGETABILITYSTATRAISE 449 -#define STRINGID_TARGETSSTATWASMAXEDOUT 450 -#define STRINGID_ATTACKERABILITYSTATRAISE 451 -#define STRINGID_POISONHEALHPUP 452 -#define STRINGID_BADDREAMSDMG 453 -#define STRINGID_MOLDBREAKERENTERS 454 -#define STRINGID_TERAVOLTENTERS 455 -#define STRINGID_TURBOBLAZEENTERS 456 -#define STRINGID_SLOWSTARTENTERS 457 -#define STRINGID_SLOWSTARTEND 458 -#define STRINGID_SOLARPOWERHPDROP 459 -#define STRINGID_AFTERMATHDMG 460 -#define STRINGID_ANTICIPATIONACTIVATES 461 -#define STRINGID_FOREWARNACTIVATES 462 -#define STRINGID_ICEBODYHPGAIN 463 -#define STRINGID_SNOWWARNINGHAIL 464 -#define STRINGID_FRISKACTIVATES 465 -#define STRINGID_UNNERVEENTERS 466 -#define STRINGID_HARVESTBERRY 467 -#define STRINGID_LASTABILITYRAISEDSTAT 468 -#define STRINGID_MAGICBOUNCEACTIVATES 469 -#define STRINGID_PROTEANTYPECHANGE 470 -#define STRINGID_SYMBIOSISITEMPASS 471 -#define STRINGID_STEALTHROCKDMG 472 -#define STRINGID_TOXICSPIKESABSORBED 473 -#define STRINGID_TOXICSPIKESPOISONED 474 -#define STRINGID_STICKYWEBSWITCHIN 475 -#define STRINGID_HEALINGWISHCAMETRUE 476 -#define STRINGID_HEALINGWISHHEALED 477 -#define STRINGID_LUNARDANCECAMETRUE 478 -#define STRINGID_CUSEDBODYDISABLED 479 -#define STRINGID_ATTACKERACQUIREDABILITY 480 -#define STRINGID_TARGETABILITYSTATLOWER 481 -#define STRINGID_TARGETSTATWONTGOHIGHER 482 -#define STRINGID_PKMNMOVEBOUNCEDABILITY 483 -#define STRINGID_IMPOSTERTRANSFORM 484 -#define STRINGID_ASSAULTVESTDOESNTALLOW 485 -#define STRINGID_GRAVITYPREVENTSUSAGE 486 -#define STRINGID_HEALBLOCKPREVENTSUSAGE 487 -#define STRINGID_NOTDONEYET 488 -#define STRINGID_STICKYWEBUSED 489 -#define STRINGID_QUASHSUCCESS 490 -#define STRINGID_PKMNBLEWAWAYTOXICSPIKES 491 -#define STRINGID_PKMNBLEWAWAYSTICKYWEB 492 -#define STRINGID_PKMNBLEWAWAYSTEALTHROCK 493 -#define STRINGID_IONDELUGEON 494 -#define STRINGID_TOPSYTURVYSWITCHEDSTATS 495 -#define STRINGID_TERRAINBECOMESMISTY 496 -#define STRINGID_TERRAINBECOMESGRASSY 497 -#define STRINGID_TERRAINBECOMESELECTRIC 498 -#define STRINGID_TERRAINBECOMESPSYCHIC 499 -#define STRINGID_TARGETELECTRIFIED 500 -#define STRINGID_MEGAEVOREACTING 501 -#define STRINGID_MEGAEVOEVOLVED 502 -#define STRINGID_DRASTICALLY 503 -#define STRINGID_SEVERELY 504 -#define STRINGID_INFESTATION 505 -#define STRINGID_NOEFFECTONTARGET 506 -#define STRINGID_BURSTINGFLAMESHIT 507 -#define STRINGID_BESTOWITEMGIVING 508 -#define STRINGID_THIRDTYPEADDED 509 -#define STRINGID_FELLFORFEINT 510 -#define STRINGID_POKEMONCANNOTUSEMOVE 511 -#define STRINGID_COVEREDINPOWDER 512 -#define STRINGID_POWDEREXPLODES 513 -#define STRINGID_BELCHCANTSELECT 514 -#define STRINGID_SPECTRALTHIEFSTEAL 515 -#define STRINGID_GRAVITYGROUNDING 516 -#define STRINGID_MISTYTERRAINPREVENTS 517 -#define STRINGID_GRASSYTERRAINHEALS 518 -#define STRINGID_ELECTRICTERRAINPREVENTS 519 -#define STRINGID_PSYCHICTERRAINPREVENTS 520 -#define STRINGID_SAFETYGOGGLESPROTECTED 521 -#define STRINGID_FLOWERVEILPROTECTED 522 -#define STRINGID_SWEETVEILPROTECTED 523 -#define STRINGID_AROMAVEILPROTECTED 524 -#define STRINGID_CELEBRATEMESSAGE 525 -#define STRINGID_USEDINSTRUCTEDMOVE 526 -#define STRINGID_THROATCHOPENDS 527 -#define STRINGID_PKMNCANTUSEMOVETHROATCHOP 528 -#define STRINGID_LASERFOCUS 529 -#define STRINGID_GEMACTIVATES 530 -#define STRINGID_BERRYDMGREDUCES 531 -#define STRINGID_AIRBALLOONFLOAT 532 -#define STRINGID_AIRBALLOONPOP 533 -#define STRINGID_INCINERATEBURN 534 -#define STRINGID_BUGBITE 535 -#define STRINGID_ILLUSIONWOREOFF 536 -#define STRINGID_ATTACKERCUREDTARGETSTATUS 537 -#define STRINGID_ATTACKERLOSTFIRETYPE 538 -#define STRINGID_HEALERCURE 539 -#define STRINGID_SCRIPTINGABILITYSTATRAISE 540 -#define STRINGID_RECEIVERABILITYTAKEOVER 541 -#define STRINGID_PKNMABSORBINGPOWER 542 -#define STRINGID_NOONEWILLBEABLETORUNAWAY 543 -#define STRINGID_DESTINYKNOTACTIVATES 544 -#define STRINGID_CLOAKEDINAFREEZINGLIGHT 545 -#define STRINGID_CLEARAMULETWONTLOWERSTATS 546 -#define STRINGID_FERVENTWISHREACHED 547 -#define STRINGID_AIRLOCKACTIVATES 548 -#define STRINGID_PRESSUREENTERS 549 -#define STRINGID_DARKAURAENTERS 550 -#define STRINGID_FAIRYAURAENTERS 551 -#define STRINGID_AURABREAKENTERS 552 -#define STRINGID_COMATOSEENTERS 553 -#define STRINGID_SCREENCLEANERENTERS 554 -#define STRINGID_FETCHEDPOKEBALL 555 -#define STRINGID_BATTLERABILITYRAISEDSTAT 556 -#define STRINGID_ASANDSTORMKICKEDUP 557 -#define STRINGID_PKMNSWILLPERISHIN3TURNS 558 -#define STRINGID_ABILITYRAISEDSTATDRASTICALLY 559 -#define STRINGID_AURAFLAREDTOLIFE 560 -#define STRINGID_ASONEENTERS 561 -#define STRINGID_CURIOUSMEDICINEENTERS 562 -#define STRINGID_CANACTFASTERTHANKSTO 563 -#define STRINGID_MICLEBERRYACTIVATES 564 -#define STRINGID_PKMNSHOOKOFFTHETAUNT 565 -#define STRINGID_PKMNGOTOVERITSINFATUATION 566 -#define STRINGID_ITEMCANNOTBEREMOVED 567 -#define STRINGID_STICKYBARBTRANSFER 568 -#define STRINGID_PKMNBURNHEALED 569 -#define STRINGID_REDCARDACTIVATE 570 -#define STRINGID_EJECTBUTTONACTIVATE 571 -#define STRINGID_ATKGOTOVERINFATUATION 572 -#define STRINGID_TORMENTEDNOMORE 573 -#define STRINGID_HEALBLOCKEDNOMORE 574 -#define STRINGID_ATTACKERBECAMEFULLYCHARGED 575 -#define STRINGID_ATTACKERBECAMEASHSPECIES 576 -#define STRINGID_EXTREMELYHARSHSUNLIGHT 577 -#define STRINGID_EXTREMESUNLIGHTFADED 578 -#define STRINGID_MOVEEVAPORATEDINTHEHARSHSUNLIGHT 579 -#define STRINGID_EXTREMELYHARSHSUNLIGHTWASNOTLESSENED 580 -#define STRINGID_HEAVYRAIN 581 -#define STRINGID_HEAVYRAINLIFTED 582 -#define STRINGID_MOVEFIZZLEDOUTINTHEHEAVYRAIN 583 -#define STRINGID_NORELIEFROMHEAVYRAIN 584 -#define STRINGID_MYSTERIOUSAIRCURRENT 585 -#define STRINGID_STRONGWINDSDISSIPATED 586 -#define STRINGID_MYSTERIOUSAIRCURRENTBLOWSON 587 -#define STRINGID_ATTACKWEAKENEDBSTRONGWINDS 588 -#define STRINGID_STUFFCHEEKSCANTSELECT 589 -#define STRINGID_PKMNREVERTEDTOPRIMAL 590 -#define STRINGID_BUTPOKEMONCANTUSETHEMOVE 591 -#define STRINGID_BUTHOOPACANTUSEIT 592 -#define STRINGID_BROKETHROUGHPROTECTION 593 -#define STRINGID_ABILITYALLOWSONLYMOVE 594 -#define STRINGID_SWAPPEDABILITIES 595 -#define STRINGID_PASTELVEILPROTECTED 596 -#define STRINGID_PASTELVEILENTERS 597 -#define STRINGID_BATTLERTYPECHANGEDTO 598 -#define STRINGID_BOTHCANNOLONGERESCAPE 599 -#define STRINGID_CANTESCAPEDUETOUSEDMOVE 600 -#define STRINGID_PKMNBECAMEWEAKERTOFIRE 601 -#define STRINGID_ABOUTTOUSEPOLTERGEIST 602 -#define STRINGID_CANTESCAPEBECAUSEOFCURRENTMOVE 603 -#define STRINGID_NEUTRALIZINGGASENTERS 604 -#define STRINGID_NEUTRALIZINGGASOVER 605 -#define STRINGID_TARGETTOOHEAVY 606 -#define STRINGID_PKMNTOOKTARGETHIGH 607 -#define STRINGID_PKMNINSNAPTRAP 608 -#define STRINGID_METEORBEAMCHARGING 609 -#define STRINGID_HEATUPBEAK 610 -#define STRINGID_COURTCHANGE 611 -#define STRINGID_PLAYERLOSTTOENEMYTRAINER 612 -#define STRINGID_PLAYERPAIDPRIZEMONEY 613 -#define STRINGID_ZPOWERSURROUNDS 614 -#define STRINGID_ZMOVEUNLEASHED 615 -#define STRINGID_ZMOVERESETSSTATS 616 -#define STRINGID_ZMOVEALLSTATSUP 617 -#define STRINGID_ZMOVEZBOOSTCRIT 618 -#define STRINGID_ZMOVERESTOREHP 619 -#define STRINGID_ZMOVESTATUP 620 -#define STRINGID_ZMOVEHPTRAP 621 -#define STRINGID_ATTACKEREXPELLEDTHEPOISON 622 -#define STRINGID_ATTACKERSHOOKITSELFAWAKE 623 -#define STRINGID_ATTACKERBROKETHROUGHPARALYSIS 624 -#define STRINGID_ATTACKERHEALEDITSBURN 625 -#define STRINGID_ATTACKERMELTEDTHEICE 626 -#define STRINGID_TARGETTOUGHEDITOUT 627 -#define STRINGID_ATTACKERLOSTELECTRICTYPE 628 -#define STRINGID_ATTACKERSWITCHEDSTATWITHTARGET 629 -#define STRINGID_BEINGHITCHARGEDPKMNWITHPOWER 630 -#define STRINGID_SUNLIGHTACTIVATEDABILITY 631 -#define STRINGID_STATWASHEIGHTENED 632 -#define STRINGID_ELECTRICTERRAINACTIVATEDABILITY 633 -#define STRINGID_ABILITYWEAKENEDSURROUNDINGMONSSTAT 634 -#define STRINGID_ATTACKERGAINEDSTRENGTHFROMTHEFALLEN 635 -#define STRINGID_PKMNSABILITYPREVENTSABILITY 636 -#define STRINGID_PREPARESHELLTRAP 637 -#define STRINGID_SHELLTRAPDIDNTWORK 638 -#define STRINGID_SPIKESDISAPPEAREDFROMTEAM 639 -#define STRINGID_TOXICSPIKESDISAPPEAREDFROMTEAM 640 -#define STRINGID_STICKYWEBDISAPPEAREDFROMTEAM 641 -#define STRINGID_STEALTHROCKDISAPPEAREDFROMTEAM 642 -#define STRINGID_COULDNTFULLYPROTECT 643 -#define STRINGID_STOCKPILEDEFFECTWOREOFF 644 -#define STRINGID_PKMNREVIVEDREADYTOFIGHT 645 -#define STRINGID_ITEMRESTOREDSPECIESHEALTH 646 -#define STRINGID_ITEMCUREDSPECIESSTATUS 647 -#define STRINGID_ITEMRESTOREDSPECIESPP 648 -#define STRINGID_THUNDERCAGETRAPPED 649 -#define STRINGID_PKMNHURTBYFROSTBITE 650 -#define STRINGID_PKMNGOTFROSTBITE 651 -#define STRINGID_PKMNSITEMHEALEDFROSTBITE 652 -#define STRINGID_ATTACKERHEALEDITSFROSTBITE 653 -#define STRINGID_PKMNFROSTBITEHEALED 654 -#define STRINGID_PKMNFROSTBITEHEALED2 655 -#define STRINGID_PKMNFROSTBITEHEALEDBY 656 -#define STRINGID_MIRRORHERBCOPIED 657 -#define STRINGID_STARTEDSNOW 658 -#define STRINGID_SNOWCONTINUES 659 -#define STRINGID_SNOWSTOPPED 660 -#define STRINGID_SNOWWARNINGSNOW 661 -#define STRINGID_PKMNITEMMELTED 662 -#define STRINGID_ULTRABURSTREACTING 663 -#define STRINGID_ULTRABURSTCOMPLETED 664 -#define STRINGID_TEAMGAINEDEXP 665 -#define STRINGID_CURRENTMOVECANTSELECT 666 -#define STRINGID_TARGETISBEINGSALTCURED 667 -#define STRINGID_TARGETISHURTBYSALTCURE 668 -#define STRINGID_TARGETCOVEREDINSTICKYCANDYSYRUP 669 -#define STRINGID_SHARPSTEELFLOATS 670 -#define STRINGID_SHARPSTEELDMG 671 -#define STRINGID_PKMNBLEWAWAYSHARPSTEEL 672 -#define STRINGID_SHARPSTEELDISAPPEAREDFROMTEAM 673 -#define STRINGID_TEAMTRAPPEDWITHVINES 674 -#define STRINGID_PKMNHURTBYVINES 675 -#define STRINGID_TEAMCAUGHTINVORTEX 676 -#define STRINGID_PKMNHURTBYVORTEX 677 -#define STRINGID_TEAMSURROUNDEDBYFIRE 678 -#define STRINGID_PKMNBURNINGUP 679 -#define STRINGID_TEAMSURROUNDEDBYROCKS 680 -#define STRINGID_PKMNHURTBYROCKSTHROWN 681 -#define STRINGID_MOVEBLOCKEDBYDYNAMAX 682 -#define STRINGID_ZEROTOHEROTRANSFORMATION 683 -#define STRINGID_THETWOMOVESBECOMEONE 684 -#define STRINGID_ARAINBOWAPPEAREDONSIDE 685 -#define STRINGID_THERAINBOWDISAPPEARED 686 -#define STRINGID_WAITINGFORPARTNERSMOVE 687 -#define STRINGID_SEAOFFIREENVELOPEDSIDE 688 -#define STRINGID_HURTBYTHESEAOFFIRE 689 -#define STRINGID_THESEAOFFIREDISAPPEARED 690 -#define STRINGID_SWAMPENVELOPEDSIDE 691 -#define STRINGID_THESWAMPDISAPPEARED 692 -#define STRINGID_PKMNTELLCHILLINGRECEPTIONJOKE 693 -#define STRINGID_HOSPITALITYRESTORATION 694 -#define STRINGID_ELECTROSHOTCHARGING 695 -#define STRINGID_ITEMWASUSEDUP 696 -#define STRINGID_ATTACKERLOSTITSTYPE 697 -#define STRINGID_SHEDITSTAIL 698 -#define STRINGID_CLOAKEDINAHARSHLIGHT 699 -#define STRINGID_SUPERSWEETAROMAWAFTS 700 -#define STRINGID_DIMENSIONSWERETWISTED 701 -#define STRINGID_BIZARREARENACREATED 702 -#define STRINGID_BIZARREAREACREATED 703 -#define STRINGID_TIDYINGUPCOMPLETE 704 -#define STRINGID_PKMNTERASTALLIZEDINTO 705 -#define STRINGID_BOOSTERENERGYACTIVATES 706 -#define STRINGID_FOGCREPTUP 707 -#define STRINGID_FOGISDEEP 708 -#define STRINGID_FOGLIFTED 709 -#define STRINGID_PKMNMADESHELLGLEAM 710 -#define STRINGID_FICKLEBEAMDOUBLED 711 -#define STRINGID_COMMANDERACTIVATES 712 -#define STRINGID_POKEFLUTECATCHY 713 -#define STRINGID_POKEFLUTE 714 -#define STRINGID_MONHEARINGFLUTEAWOKE 715 -#define STRINGID_SUNLIGHTISHARSH 716 -#define STRINGID_ITISHAILING 717 -#define STRINGID_ITISSNOWING 718 -#define STRINGID_ISCOVEREDWITHGRASS 719 -#define STRINGID_MISTSWIRLSAROUND 720 -#define STRINGID_ELECTRICCURRENTISRUNNING 721 -#define STRINGID_SEEMSWEIRD 722 -#define STRINGID_WAGGLINGAFINGER 723 -#define STRINGID_BLOCKEDBYSLEEPCLAUSE 724 -#define STRINGID_SUPEREFFECTIVETWOFOES 725 -#define STRINGID_NOTVERYEFFECTIVETWOFOES 726 -#define STRINGID_ITDOESNTAFFECTTWOFOES 727 -#define STRINGID_SENDCAUGHTMONPARTYORBOX 728 -#define STRINGID_PKMNSENTTOPCAFTERCATCH 729 -#define STRINGID_TOXICSPIKESBADLYPOISONED 730 - -#define BATTLESTRINGS_COUNT 731 - -// This is the string id that gBattleStringsTable starts with. -// String ids before this (e.g. STRINGID_INTROMSG) are not in the table, -// and are instead handled explicitly by BufferStringBattle. -#define BATTLESTRINGS_TABLE_START STRINGID_TRAINER1LOSETEXT +enum StringID +{ + STRINGID_INTROMSG, + STRINGID_INTROSENDOUT, + STRINGID_RETURNMON, + STRINGID_SWITCHINMON, + STRINGID_USEDMOVE, + STRINGID_BATTLEEND, + STRINGID_TRAINERSLIDE, + STRINGID_TABLE_START, // Make sure to add new messages below this marker + // todo: make some of those names less vague: attacker/target vs pkmn, etc. + STRINGID_TRAINER1LOSETEXT, + STRINGID_PKMNGAINEDEXP, + STRINGID_PKMNGREWTOLV, + STRINGID_PKMNLEARNEDMOVE, + STRINGID_TRYTOLEARNMOVE1, + STRINGID_TRYTOLEARNMOVE2, + STRINGID_TRYTOLEARNMOVE3, + STRINGID_PKMNFORGOTMOVE, + STRINGID_STOPLEARNINGMOVE, + STRINGID_DIDNOTLEARNMOVE, + STRINGID_PKMNLEARNEDMOVE2, + STRINGID_ATTACKMISSED, + STRINGID_PKMNPROTECTEDITSELF, + STRINGID_STATSWONTINCREASE2, + STRINGID_AVOIDEDDAMAGE, + STRINGID_ITDOESNTAFFECT, + STRINGID_ATTACKERFAINTED, + STRINGID_TARGETFAINTED, + STRINGID_PLAYERGOTMONEY, + STRINGID_PLAYERWHITEOUT, + STRINGID_PLAYERWHITEOUT2, + STRINGID_PREVENTSESCAPE, + STRINGID_HITXTIMES, + STRINGID_PKMNFELLASLEEP, + STRINGID_PKMNMADESLEEP, + STRINGID_PKMNALREADYASLEEP, + STRINGID_PKMNALREADYASLEEP2, + STRINGID_PKMNWASNTAFFECTED, + STRINGID_PKMNWASPOISONED, + STRINGID_PKMNPOISONEDBY, + STRINGID_PKMNHURTBYPOISON, + STRINGID_PKMNALREADYPOISONED, + STRINGID_PKMNBADLYPOISONED, + STRINGID_PKMNENERGYDRAINED, + STRINGID_PKMNWASBURNED, + STRINGID_PKMNBURNEDBY, + STRINGID_PKMNHURTBYBURN, + STRINGID_PKMNWASFROZEN, + STRINGID_PKMNFROZENBY, + STRINGID_PKMNISFROZEN, + STRINGID_PKMNWASDEFROSTED, + STRINGID_PKMNWASDEFROSTED2, + STRINGID_PKMNWASDEFROSTEDBY, + STRINGID_PKMNWASPARALYZED, + STRINGID_PKMNWASPARALYZEDBY, + STRINGID_PKMNISPARALYZED, + STRINGID_PKMNISALREADYPARALYZED, + STRINGID_PKMNHEALEDPARALYSIS, + STRINGID_PKMNDREAMEATEN, + STRINGID_STATSWONTINCREASE, + STRINGID_STATSWONTDECREASE, + STRINGID_TEAMSTOPPEDWORKING, + STRINGID_FOESTOPPEDWORKING, + STRINGID_PKMNISCONFUSED, + STRINGID_PKMNHEALEDCONFUSION, + STRINGID_PKMNWASCONFUSED, + STRINGID_PKMNALREADYCONFUSED, + STRINGID_PKMNFELLINLOVE, + STRINGID_PKMNINLOVE, + STRINGID_PKMNIMMOBILIZEDBYLOVE, + STRINGID_PKMNBLOWNAWAY, + STRINGID_PKMNCHANGEDTYPE, + STRINGID_PKMNFLINCHED, + STRINGID_PKMNREGAINEDHEALTH, + STRINGID_PKMNHPFULL, + STRINGID_PKMNRAISEDSPDEF, + STRINGID_PKMNRAISEDDEF, + STRINGID_PKMNCOVEREDBYVEIL, + STRINGID_PKMNUSEDSAFEGUARD, + STRINGID_PKMNSAFEGUARDEXPIRED, + STRINGID_PKMNWENTTOSLEEP, + STRINGID_PKMNSLEPTHEALTHY, + STRINGID_PKMNWHIPPEDWHIRLWIND, + STRINGID_PKMNTOOKSUNLIGHT, + STRINGID_PKMNLOWEREDHEAD, + STRINGID_PKMNISGLOWING, + STRINGID_PKMNFLEWHIGH, + STRINGID_PKMNDUGHOLE, + STRINGID_PKMNSQUEEZEDBYBIND, + STRINGID_PKMNTRAPPEDINVORTEX, + STRINGID_PKMNWRAPPEDBY, + STRINGID_PKMNCLAMPED, + STRINGID_PKMNHURTBY, + STRINGID_PKMNFREEDFROM, + STRINGID_PKMNCRASHED, + STRINGID_PKMNSHROUDEDINMIST, + STRINGID_PKMNPROTECTEDBYMIST, + STRINGID_PKMNGETTINGPUMPED, + STRINGID_PKMNHITWITHRECOIL, + STRINGID_PKMNPROTECTEDITSELF2, + STRINGID_PKMNBUFFETEDBYSANDSTORM, + STRINGID_PKMNPELTEDBYHAIL, + STRINGID_PKMNSEEDED, + STRINGID_PKMNEVADEDATTACK, + STRINGID_PKMNSAPPEDBYLEECHSEED, + STRINGID_PKMNFASTASLEEP, + STRINGID_PKMNWOKEUP, + STRINGID_PKMNUPROARKEPTAWAKE, + STRINGID_PKMNWOKEUPINUPROAR, + STRINGID_PKMNCAUSEDUPROAR, + STRINGID_PKMNMAKINGUPROAR, + STRINGID_PKMNCALMEDDOWN, + STRINGID_PKMNCANTSLEEPINUPROAR, + STRINGID_PKMNSTOCKPILED, + STRINGID_PKMNCANTSTOCKPILE, + STRINGID_PKMNCANTSLEEPINUPROAR2, + STRINGID_UPROARKEPTPKMNAWAKE, + STRINGID_PKMNSTAYEDAWAKEUSING, + STRINGID_PKMNSTORINGENERGY, + STRINGID_PKMNUNLEASHEDENERGY, + STRINGID_PKMNFATIGUECONFUSION, + STRINGID_PLAYERPICKEDUPMONEY, + STRINGID_PKMNUNAFFECTED, + STRINGID_PKMNTRANSFORMEDINTO, + STRINGID_PKMNMADESUBSTITUTE, + STRINGID_PKMNHASSUBSTITUTE, + STRINGID_SUBSTITUTEDAMAGED, + STRINGID_PKMNSUBSTITUTEFADED, + STRINGID_PKMNMUSTRECHARGE, + STRINGID_PKMNRAGEBUILDING, + STRINGID_PKMNMOVEWASDISABLED, + STRINGID_PKMNMOVEISDISABLED, + STRINGID_PKMNMOVEDISABLEDNOMORE, + STRINGID_PKMNGOTENCORE, + STRINGID_PKMNENCOREENDED, + STRINGID_PKMNTOOKAIM, + STRINGID_PKMNSKETCHEDMOVE, + STRINGID_PKMNTRYINGTOTAKEFOE, + STRINGID_PKMNTOOKFOE, + STRINGID_PKMNREDUCEDPP, + STRINGID_PKMNSTOLEITEM, + STRINGID_TARGETCANTESCAPENOW, + STRINGID_PKMNFELLINTONIGHTMARE, + STRINGID_PKMNLOCKEDINNIGHTMARE, + STRINGID_PKMNLAIDCURSE, + STRINGID_PKMNAFFLICTEDBYCURSE, + STRINGID_SPIKESSCATTERED, + STRINGID_PKMNHURTBYSPIKES, + STRINGID_PKMNIDENTIFIED, + STRINGID_PKMNPERISHCOUNTFELL, + STRINGID_PKMNBRACEDITSELF, + STRINGID_PKMNENDUREDHIT, + STRINGID_MAGNITUDESTRENGTH, + STRINGID_PKMNCUTHPMAXEDATTACK, + STRINGID_PKMNCOPIEDSTATCHANGES, + STRINGID_PKMNGOTFREE, + STRINGID_PKMNSHEDLEECHSEED, + STRINGID_PKMNBLEWAWAYSPIKES, + STRINGID_PKMNFLEDFROMBATTLE, + STRINGID_PKMNFORESAWATTACK, + STRINGID_PKMNTOOKATTACK, + STRINGID_PKMNATTACK, + STRINGID_PKMNCENTERATTENTION, + STRINGID_PKMNCHARGINGPOWER, + STRINGID_NATUREPOWERTURNEDINTO, + STRINGID_PKMNSTATUSNORMAL, + STRINGID_PKMNHASNOMOVESLEFT, + STRINGID_PKMNSUBJECTEDTOTORMENT, + STRINGID_PKMNCANTUSEMOVETORMENT, + STRINGID_PKMNTIGHTENINGFOCUS, + STRINGID_PKMNFELLFORTAUNT, + STRINGID_PKMNCANTUSEMOVETAUNT, + STRINGID_PKMNREADYTOHELP, + STRINGID_PKMNSWITCHEDITEMS, + STRINGID_PKMNCOPIEDFOE, + STRINGID_PKMNMADEWISH, + STRINGID_PKMNWISHCAMETRUE, + STRINGID_PKMNPLANTEDROOTS, + STRINGID_PKMNABSORBEDNUTRIENTS, + STRINGID_PKMNANCHOREDITSELF, + STRINGID_PKMNWASMADEDROWSY, + STRINGID_PKMNKNOCKEDOFF, + STRINGID_PKMNSWAPPEDABILITIES, + STRINGID_PKMNSEALEDOPPONENTMOVE, + STRINGID_PKMNCANTUSEMOVESEALED, + STRINGID_PKMNWANTSGRUDGE, + STRINGID_PKMNLOSTPPGRUDGE, + STRINGID_PKMNSHROUDEDITSELF, + STRINGID_PKMNMOVEBOUNCED, + STRINGID_PKMNWAITSFORTARGET, + STRINGID_PKMNSNATCHEDMOVE, + STRINGID_PKMNMADEITRAIN, + STRINGID_PKMNRAISEDSPEED, + STRINGID_PKMNPROTECTEDBY, + STRINGID_PKMNPREVENTSUSAGE, + STRINGID_PKMNRESTOREDHPUSING, + STRINGID_PKMNCHANGEDTYPEWITH, + STRINGID_PKMNPREVENTSPARALYSISWITH, + STRINGID_PKMNPREVENTSROMANCEWITH, + STRINGID_PKMNPREVENTSPOISONINGWITH, + STRINGID_PKMNPREVENTSCONFUSIONWITH, + STRINGID_PKMNRAISEDFIREPOWERWITH, + STRINGID_PKMNANCHORSITSELFWITH, + STRINGID_PKMNCUTSATTACKWITH, + STRINGID_PKMNPREVENTSSTATLOSSWITH, + STRINGID_PKMNHURTSWITH, + STRINGID_PKMNTRACED, + STRINGID_STATSHARPLY, + STRINGID_STATROSE, + STRINGID_STATHARSHLY, + STRINGID_STATFELL, + STRINGID_ATTACKERSSTATROSE, + STRINGID_DEFENDERSSTATROSE, + STRINGID_ATTACKERSSTATFELL, + STRINGID_DEFENDERSSTATFELL, + STRINGID_CRITICALHIT, + STRINGID_ONEHITKO, + STRINGID_123POOF, + STRINGID_ANDELLIPSIS, + STRINGID_NOTVERYEFFECTIVE, + STRINGID_SUPEREFFECTIVE, + STRINGID_GOTAWAYSAFELY, + STRINGID_WILDPKMNFLED, + STRINGID_NORUNNINGFROMTRAINERS, + STRINGID_CANTESCAPE, + STRINGID_DONTLEAVEBIRCH, + STRINGID_BUTNOTHINGHAPPENED, + STRINGID_BUTITFAILED, + STRINGID_ITHURTCONFUSION, + STRINGID_MIRRORMOVEFAILED, + STRINGID_STARTEDTORAIN, + STRINGID_DOWNPOURSTARTED, + STRINGID_RAINCONTINUES, + STRINGID_DOWNPOURCONTINUES, + STRINGID_RAINSTOPPED, + STRINGID_SANDSTORMBREWED, + STRINGID_SANDSTORMRAGES, + STRINGID_SANDSTORMSUBSIDED, + STRINGID_SUNLIGHTGOTBRIGHT, + STRINGID_SUNLIGHTSTRONG, + STRINGID_SUNLIGHTFADED, + STRINGID_STARTEDHAIL, + STRINGID_HAILCONTINUES, + STRINGID_HAILSTOPPED, + STRINGID_FAILEDTOSPITUP, + STRINGID_FAILEDTOSWALLOW, + STRINGID_WINDBECAMEHEATWAVE, + STRINGID_STATCHANGESGONE, + STRINGID_COINSSCATTERED, + STRINGID_TOOWEAKFORSUBSTITUTE, + STRINGID_SHAREDPAIN, + STRINGID_BELLCHIMED, + STRINGID_FAINTINTHREE, + STRINGID_NOPPLEFT, + STRINGID_BUTNOPPLEFT, + STRINGID_PLAYERUSEDITEM, + STRINGID_WALLYUSEDITEM, + STRINGID_TRAINERBLOCKEDBALL, + STRINGID_DONTBEATHIEF, + STRINGID_ITDODGEDBALL, + STRINGID_YOUMISSEDPKMN, + STRINGID_PKMNBROKEFREE, + STRINGID_ITAPPEAREDCAUGHT, + STRINGID_AARGHALMOSTHADIT, + STRINGID_SHOOTSOCLOSE, + STRINGID_GOTCHAPKMNCAUGHTPLAYER, + STRINGID_GOTCHAPKMNCAUGHTWALLY, + STRINGID_GIVENICKNAMECAPTURED, + STRINGID_PKMNSENTTOPC, + STRINGID_PKMNDATAADDEDTODEX, + STRINGID_ITISRAINING, + STRINGID_SANDSTORMISRAGING, + STRINGID_CANTESCAPE2, + STRINGID_PKMNIGNORESASLEEP, + STRINGID_PKMNIGNOREDORDERS, + STRINGID_PKMNBEGANTONAP, + STRINGID_PKMNLOAFING, + STRINGID_PKMNWONTOBEY, + STRINGID_PKMNTURNEDAWAY, + STRINGID_PKMNPRETENDNOTNOTICE, + STRINGID_ENEMYABOUTTOSWITCHPKMN, + STRINGID_CREPTCLOSER, + STRINGID_CANTGETCLOSER, + STRINGID_PKMNWATCHINGCAREFULLY, + STRINGID_PKMNCURIOUSABOUTX, + STRINGID_PKMNENTHRALLEDBYX, + STRINGID_PKMNIGNOREDX, + STRINGID_THREWPOKEBLOCKATPKMN, + STRINGID_OUTOFSAFARIBALLS, + STRINGID_PKMNSITEMCUREDPARALYSIS, + STRINGID_PKMNSITEMCUREDPOISON, + STRINGID_PKMNSITEMHEALEDBURN, + STRINGID_PKMNSITEMDEFROSTEDIT, + STRINGID_PKMNSITEMWOKEIT, + STRINGID_PKMNSITEMSNAPPEDOUT, + STRINGID_PKMNSITEMCUREDPROBLEM, + STRINGID_PKMNSITEMRESTOREDHEALTH, + STRINGID_PKMNSITEMRESTOREDPP, + STRINGID_PKMNSITEMRESTOREDSTATUS, + STRINGID_PKMNSITEMRESTOREDHPALITTLE, + STRINGID_ITEMALLOWSONLYYMOVE, + STRINGID_PKMNHUNGONWITHX, + STRINGID_EMPTYSTRING3, + STRINGID_PKMNSXPREVENTSBURNS, + STRINGID_PKMNSXBLOCKSY, + STRINGID_PKMNSXRESTOREDHPALITTLE2, + STRINGID_PKMNSXWHIPPEDUPSANDSTORM, + STRINGID_PKMNSXPREVENTSYLOSS, + STRINGID_PKMNSXINFATUATEDY, + STRINGID_PKMNSXMADEYINEFFECTIVE, + STRINGID_PKMNSXCUREDYPROBLEM, + STRINGID_ITSUCKEDLIQUIDOOZE, + STRINGID_PKMNTRANSFORMED, + STRINGID_ELECTRICITYWEAKENED, + STRINGID_FIREWEAKENED, + STRINGID_PKMNHIDUNDERWATER, + STRINGID_PKMNSPRANGUP, + STRINGID_HMMOVESCANTBEFORGOTTEN, + STRINGID_XFOUNDONEY, + STRINGID_PLAYERDEFEATEDTRAINER1, + STRINGID_SOOTHINGAROMA, + STRINGID_ITEMSCANTBEUSEDNOW, + STRINGID_FORXCOMMAYZ, + STRINGID_USINGITEMSTATOFPKMNROSE, + STRINGID_PKMNUSEDXTOGETPUMPED, + STRINGID_PKMNSXMADEYUSELESS, + STRINGID_PKMNTRAPPEDBYSANDTOMB, + STRINGID_EMPTYSTRING4, + STRINGID_ABOOSTED, + STRINGID_PKMNSXINTENSIFIEDSUN, + STRINGID_PKMNMAKESGROUNDMISS, + STRINGID_YOUTHROWABALLNOWRIGHT, + STRINGID_PKMNSXTOOKATTACK, + STRINGID_PKMNCHOSEXASDESTINY, + STRINGID_PKMNLOSTFOCUS, + STRINGID_USENEXTPKMN, + STRINGID_PKMNFLEDUSINGITS, + STRINGID_PKMNFLEDUSING, + STRINGID_PKMNWASDRAGGEDOUT, + STRINGID_PREVENTEDFROMWORKING, + STRINGID_PKMNSITEMNORMALIZEDSTATUS, + STRINGID_TRAINER1USEDITEM, + STRINGID_BOXISFULL, + STRINGID_PKMNAVOIDEDATTACK, + STRINGID_PKMNSXMADEITINEFFECTIVE, + STRINGID_PKMNSXPREVENTSFLINCHING, + STRINGID_PKMNALREADYHASBURN, + STRINGID_STATSWONTDECREASE2, + STRINGID_PKMNSXBLOCKSY2, + STRINGID_PKMNSXWOREOFF, + STRINGID_PKMNRAISEDDEFALITTLE, + STRINGID_PKMNRAISEDSPDEFALITTLE, + STRINGID_THEWALLSHATTERED, + STRINGID_PKMNSXPREVENTSYSZ, + STRINGID_PKMNSXCUREDITSYPROBLEM, + STRINGID_ATTACKERCANTESCAPE, + STRINGID_PKMNOBTAINEDX, + STRINGID_PKMNOBTAINEDX2, + STRINGID_PKMNOBTAINEDXYOBTAINEDZ, + STRINGID_BUTNOEFFECT, + STRINGID_PKMNSXHADNOEFFECTONY, + STRINGID_TWOENEMIESDEFEATED, + STRINGID_TRAINER2LOSETEXT, + STRINGID_PKMNINCAPABLEOFPOWER, + STRINGID_GLINTAPPEARSINEYE, + STRINGID_PKMNGETTINGINTOPOSITION, + STRINGID_PKMNBEGANGROWLINGDEEPLY, + STRINGID_PKMNEAGERFORMORE, + STRINGID_DEFEATEDOPPONENTBYREFEREE, + STRINGID_LOSTTOOPPONENTBYREFEREE, + STRINGID_TIEDOPPONENTBYREFEREE, + STRINGID_QUESTIONFORFEITMATCH, + STRINGID_FORFEITEDMATCH, + STRINGID_PKMNTRANSFERREDSOMEONESPC, + STRINGID_PKMNTRANSFERREDLANETTESPC, + STRINGID_PKMNBOXSOMEONESPCFULL, + STRINGID_PKMNBOXLANETTESPCFULL, + STRINGID_TRAINER1WINTEXT, + STRINGID_TRAINER2WINTEXT, + STRINGID_ENDUREDSTURDY, + STRINGID_POWERHERB, + STRINGID_HURTBYITEM, + STRINGID_PSNBYITEM, + STRINGID_BRNBYITEM, + STRINGID_DEFABILITYIN, + STRINGID_GRAVITYINTENSIFIED, + STRINGID_TARGETIDENTIFIED, + STRINGID_TARGETWOKEUP, + STRINGID_PKMNSTOLEANDATEITEM, + STRINGID_TAILWINDBLEW, + STRINGID_PKMNWENTBACK, + STRINGID_PKMNCANTUSEITEMSANYMORE, + STRINGID_PKMNFLUNG, + STRINGID_PKMNPREVENTEDFROMHEALING, + STRINGID_PKMNSWITCHEDATKANDDEF, + STRINGID_PKMNSABILITYSUPPRESSED, + STRINGID_SHIELDEDFROMCRITICALHITS, + STRINGID_SWITCHEDATKANDSPATK, + STRINGID_SWITCHEDDEFANDSPDEF, + STRINGID_PKMNACQUIREDABILITY, + STRINGID_POISONSPIKESSCATTERED, + STRINGID_PKMNSWITCHEDSTATCHANGES, + STRINGID_PKMNSURROUNDEDWITHVEILOFWATER, + STRINGID_PKMNLEVITATEDONELECTROMAGNETISM, + STRINGID_PKMNTWISTEDDIMENSIONS, + STRINGID_POINTEDSTONESFLOAT, + STRINGID_CLOAKEDINMYSTICALMOONLIGHT, + STRINGID_TRAPPEDBYSWIRLINGMAGMA, + STRINGID_VANISHEDINSTANTLY, + STRINGID_PROTECTEDTEAM, + STRINGID_SHAREDITSGUARD, + STRINGID_SHAREDITSPOWER, + STRINGID_SWAPSDEFANDSPDEFOFALLPOKEMON, + STRINGID_BECAMENIMBLE, + STRINGID_HURLEDINTOTHEAIR, + STRINGID_HELDITEMSLOSEEFFECTS, + STRINGID_FELLSTRAIGHTDOWN, + STRINGID_TARGETCHANGEDTYPE, + STRINGID_PKMNACQUIREDSIMPLE, + STRINGID_EMPTYSTRING5, + STRINGID_KINDOFFER, + STRINGID_RESETSTARGETSSTATLEVELS, + STRINGID_EMPTYSTRING6, + STRINGID_ALLYSWITCHPOSITION, + STRINGID_RESTORETARGETSHEALTH, + STRINGID_TOOKPJMNINTOTHESKY, + STRINGID_FREEDFROMSKYDROP, + STRINGID_POSTPONETARGETMOVE, + STRINGID_REFLECTTARGETSTYPE, + STRINGID_TRANSFERHELDITEM, + STRINGID_EMBARGOENDS, + STRINGID_ELECTROMAGNETISM, + STRINGID_BUFFERENDS, + STRINGID_TELEKINESISENDS, + STRINGID_TAILWINDENDS, + STRINGID_LUCKYCHANTENDS, + STRINGID_TRICKROOMENDS, + STRINGID_WONDERROOMENDS, + STRINGID_MAGICROOMENDS, + STRINGID_MUDSPORTENDS, + STRINGID_WATERSPORTENDS, + STRINGID_GRAVITYENDS, + STRINGID_AQUARINGHEAL, + STRINGID_ELECTRICTERRAINENDS, + STRINGID_MISTYTERRAINENDS, + STRINGID_PSYCHICTERRAINENDS, + STRINGID_GRASSYTERRAINENDS, + STRINGID_TARGETABILITYSTATRAISE, + STRINGID_TARGETSSTATWASMAXEDOUT, + STRINGID_ATTACKERABILITYSTATRAISE, + STRINGID_POISONHEALHPUP, + STRINGID_BADDREAMSDMG, + STRINGID_MOLDBREAKERENTERS, + STRINGID_TERAVOLTENTERS, + STRINGID_TURBOBLAZEENTERS, + STRINGID_SLOWSTARTENTERS, + STRINGID_SLOWSTARTEND, + STRINGID_SOLARPOWERHPDROP, + STRINGID_AFTERMATHDMG, + STRINGID_ANTICIPATIONACTIVATES, + STRINGID_FOREWARNACTIVATES, + STRINGID_ICEBODYHPGAIN, + STRINGID_SNOWWARNINGHAIL, + STRINGID_FRISKACTIVATES, + STRINGID_UNNERVEENTERS, + STRINGID_HARVESTBERRY, + STRINGID_MAGICBOUNCEACTIVATES, + STRINGID_PROTEANTYPECHANGE, + STRINGID_SYMBIOSISITEMPASS, + STRINGID_STEALTHROCKDMG, + STRINGID_TOXICSPIKESABSORBED, + STRINGID_TOXICSPIKESPOISONED, + STRINGID_STICKYWEBSWITCHIN, + STRINGID_HEALINGWISHCAMETRUE, + STRINGID_HEALINGWISHHEALED, + STRINGID_LUNARDANCECAMETRUE, + STRINGID_CUSEDBODYDISABLED, + STRINGID_ATTACKERACQUIREDABILITY, + STRINGID_TARGETABILITYSTATLOWER, + STRINGID_TARGETSTATWONTGOHIGHER, + STRINGID_PKMNMOVEBOUNCEDABILITY, + STRINGID_IMPOSTERTRANSFORM, + STRINGID_ASSAULTVESTDOESNTALLOW, + STRINGID_GRAVITYPREVENTSUSAGE, + STRINGID_HEALBLOCKPREVENTSUSAGE, + STRINGID_NOTDONEYET, + STRINGID_STICKYWEBUSED, + STRINGID_QUASHSUCCESS, + STRINGID_PKMNBLEWAWAYTOXICSPIKES, + STRINGID_PKMNBLEWAWAYSTICKYWEB, + STRINGID_PKMNBLEWAWAYSTEALTHROCK, + STRINGID_IONDELUGEON, + STRINGID_TOPSYTURVYSWITCHEDSTATS, + STRINGID_TERRAINBECOMESMISTY, + STRINGID_TERRAINBECOMESGRASSY, + STRINGID_TERRAINBECOMESELECTRIC, + STRINGID_TERRAINBECOMESPSYCHIC, + STRINGID_TARGETELECTRIFIED, + STRINGID_MEGAEVOREACTING, + STRINGID_MEGAEVOEVOLVED, + STRINGID_DRASTICALLY, + STRINGID_SEVERELY, + STRINGID_INFESTATION, + STRINGID_NOEFFECTONTARGET, + STRINGID_BURSTINGFLAMESHIT, + STRINGID_BESTOWITEMGIVING, + STRINGID_THIRDTYPEADDED, + STRINGID_FELLFORFEINT, + STRINGID_POKEMONCANNOTUSEMOVE, + STRINGID_COVEREDINPOWDER, + STRINGID_POWDEREXPLODES, + STRINGID_BELCHCANTSELECT, + STRINGID_SPECTRALTHIEFSTEAL, + STRINGID_GRAVITYGROUNDING, + STRINGID_MISTYTERRAINPREVENTS, + STRINGID_GRASSYTERRAINHEALS, + STRINGID_ELECTRICTERRAINPREVENTS, + STRINGID_PSYCHICTERRAINPREVENTS, + STRINGID_SAFETYGOGGLESPROTECTED, + STRINGID_FLOWERVEILPROTECTED, + STRINGID_SWEETVEILPROTECTED, + STRINGID_AROMAVEILPROTECTED, + STRINGID_CELEBRATEMESSAGE, + STRINGID_USEDINSTRUCTEDMOVE, + STRINGID_THROATCHOPENDS, + STRINGID_PKMNCANTUSEMOVETHROATCHOP, + STRINGID_LASERFOCUS, + STRINGID_GEMACTIVATES, + STRINGID_BERRYDMGREDUCES, + STRINGID_AIRBALLOONFLOAT, + STRINGID_AIRBALLOONPOP, + STRINGID_INCINERATEBURN, + STRINGID_BUGBITE, + STRINGID_ILLUSIONWOREOFF, + STRINGID_ATTACKERCUREDTARGETSTATUS, + STRINGID_ATTACKERLOSTFIRETYPE, + STRINGID_HEALERCURE, + STRINGID_SCRIPTINGABILITYSTATRAISE, + STRINGID_RECEIVERABILITYTAKEOVER, + STRINGID_PKNMABSORBINGPOWER, + STRINGID_NOONEWILLBEABLETORUNAWAY, + STRINGID_DESTINYKNOTACTIVATES, + STRINGID_CLOAKEDINAFREEZINGLIGHT, + STRINGID_CLEARAMULETWONTLOWERSTATS, + STRINGID_FERVENTWISHREACHED, + STRINGID_AIRLOCKACTIVATES, + STRINGID_PRESSUREENTERS, + STRINGID_DARKAURAENTERS, + STRINGID_FAIRYAURAENTERS, + STRINGID_AURABREAKENTERS, + STRINGID_COMATOSEENTERS, + STRINGID_SCREENCLEANERENTERS, + STRINGID_FETCHEDPOKEBALL, + STRINGID_BATTLERABILITYRAISEDSTAT, + STRINGID_ASANDSTORMKICKEDUP, + STRINGID_PKMNSWILLPERISHIN3TURNS, + STRINGID_ABILITYRAISEDSTATDRASTICALLY, + STRINGID_AURAFLAREDTOLIFE, + STRINGID_ASONEENTERS, + STRINGID_CURIOUSMEDICINEENTERS, + STRINGID_CANACTFASTERTHANKSTO, + STRINGID_MICLEBERRYACTIVATES, + STRINGID_PKMNSHOOKOFFTHETAUNT, + STRINGID_PKMNGOTOVERITSINFATUATION, + STRINGID_ITEMCANNOTBEREMOVED, + STRINGID_STICKYBARBTRANSFER, + STRINGID_PKMNBURNHEALED, + STRINGID_REDCARDACTIVATE, + STRINGID_EJECTBUTTONACTIVATE, + STRINGID_ATKGOTOVERINFATUATION, + STRINGID_TORMENTEDNOMORE, + STRINGID_HEALBLOCKEDNOMORE, + STRINGID_ATTACKERBECAMEFULLYCHARGED, + STRINGID_ATTACKERBECAMEASHSPECIES, + STRINGID_EXTREMELYHARSHSUNLIGHT, + STRINGID_EXTREMESUNLIGHTFADED, + STRINGID_MOVEEVAPORATEDINTHEHARSHSUNLIGHT, + STRINGID_EXTREMELYHARSHSUNLIGHTWASNOTLESSENED, + STRINGID_HEAVYRAIN, + STRINGID_HEAVYRAINLIFTED, + STRINGID_MOVEFIZZLEDOUTINTHEHEAVYRAIN, + STRINGID_NORELIEFROMHEAVYRAIN, + STRINGID_MYSTERIOUSAIRCURRENT, + STRINGID_STRONGWINDSDISSIPATED, + STRINGID_MYSTERIOUSAIRCURRENTBLOWSON, + STRINGID_ATTACKWEAKENEDBSTRONGWINDS, + STRINGID_STUFFCHEEKSCANTSELECT, + STRINGID_PKMNREVERTEDTOPRIMAL, + STRINGID_BUTPOKEMONCANTUSETHEMOVE, + STRINGID_BUTHOOPACANTUSEIT, + STRINGID_BROKETHROUGHPROTECTION, + STRINGID_ABILITYALLOWSONLYMOVE, + STRINGID_SWAPPEDABILITIES, + STRINGID_PASTELVEILPROTECTED, + STRINGID_PASTELVEILENTERS, + STRINGID_BATTLERTYPECHANGEDTO, + STRINGID_BOTHCANNOLONGERESCAPE, + STRINGID_CANTESCAPEDUETOUSEDMOVE, + STRINGID_PKMNBECAMEWEAKERTOFIRE, + STRINGID_ABOUTTOUSEPOLTERGEIST, + STRINGID_CANTESCAPEBECAUSEOFCURRENTMOVE, + STRINGID_NEUTRALIZINGGASENTERS, + STRINGID_NEUTRALIZINGGASOVER, + STRINGID_TARGETTOOHEAVY, + STRINGID_PKMNTOOKTARGETHIGH, + STRINGID_PKMNINSNAPTRAP, + STRINGID_METEORBEAMCHARGING, + STRINGID_HEATUPBEAK, + STRINGID_COURTCHANGE, + STRINGID_PLAYERLOSTTOENEMYTRAINER, + STRINGID_PLAYERPAIDPRIZEMONEY, + STRINGID_ZPOWERSURROUNDS, + STRINGID_ZMOVEUNLEASHED, + STRINGID_ZMOVERESETSSTATS, + STRINGID_ZMOVEALLSTATSUP, + STRINGID_ZMOVEZBOOSTCRIT, + STRINGID_ZMOVERESTOREHP, + STRINGID_ZMOVESTATUP, + STRINGID_ZMOVEHPTRAP, + STRINGID_ATTACKEREXPELLEDTHEPOISON, + STRINGID_ATTACKERSHOOKITSELFAWAKE, + STRINGID_ATTACKERBROKETHROUGHPARALYSIS, + STRINGID_ATTACKERHEALEDITSBURN, + STRINGID_ATTACKERMELTEDTHEICE, + STRINGID_TARGETTOUGHEDITOUT, + STRINGID_ATTACKERLOSTELECTRICTYPE, + STRINGID_ATTACKERSWITCHEDSTATWITHTARGET, + STRINGID_BEINGHITCHARGEDPKMNWITHPOWER, + STRINGID_SUNLIGHTACTIVATEDABILITY, + STRINGID_STATWASHEIGHTENED, + STRINGID_ELECTRICTERRAINACTIVATEDABILITY, + STRINGID_ABILITYWEAKENEDSURROUNDINGMONSSTAT, + STRINGID_ATTACKERGAINEDSTRENGTHFROMTHEFALLEN, + STRINGID_PKMNSABILITYPREVENTSABILITY, + STRINGID_PREPARESHELLTRAP, + STRINGID_SHELLTRAPDIDNTWORK, + STRINGID_SPIKESDISAPPEAREDFROMTEAM, + STRINGID_TOXICSPIKESDISAPPEAREDFROMTEAM, + STRINGID_STICKYWEBDISAPPEAREDFROMTEAM, + STRINGID_STEALTHROCKDISAPPEAREDFROMTEAM, + STRINGID_COULDNTFULLYPROTECT, + STRINGID_STOCKPILEDEFFECTWOREOFF, + STRINGID_PKMNREVIVEDREADYTOFIGHT, + STRINGID_ITEMRESTOREDSPECIESHEALTH, + STRINGID_ITEMCUREDSPECIESSTATUS, + STRINGID_ITEMRESTOREDSPECIESPP, + STRINGID_THUNDERCAGETRAPPED, + STRINGID_PKMNHURTBYFROSTBITE, + STRINGID_PKMNGOTFROSTBITE, + STRINGID_PKMNSITEMHEALEDFROSTBITE, + STRINGID_ATTACKERHEALEDITSFROSTBITE, + STRINGID_PKMNFROSTBITEHEALED, + STRINGID_PKMNFROSTBITEHEALED2, + STRINGID_PKMNFROSTBITEHEALEDBY, + STRINGID_MIRRORHERBCOPIED, + STRINGID_STARTEDSNOW, + STRINGID_SNOWCONTINUES, + STRINGID_SNOWSTOPPED, + STRINGID_SNOWWARNINGSNOW, + STRINGID_PKMNITEMMELTED, + STRINGID_ULTRABURSTREACTING, + STRINGID_ULTRABURSTCOMPLETED, + STRINGID_TEAMGAINEDEXP, + STRINGID_CURRENTMOVECANTSELECT, + STRINGID_TARGETISBEINGSALTCURED, + STRINGID_TARGETISHURTBYSALTCURE, + STRINGID_TARGETCOVEREDINSTICKYCANDYSYRUP, + STRINGID_SHARPSTEELFLOATS, + STRINGID_SHARPSTEELDMG, + STRINGID_PKMNBLEWAWAYSHARPSTEEL, + STRINGID_SHARPSTEELDISAPPEAREDFROMTEAM, + STRINGID_TEAMTRAPPEDWITHVINES, + STRINGID_PKMNHURTBYVINES, + STRINGID_TEAMCAUGHTINVORTEX, + STRINGID_PKMNHURTBYVORTEX, + STRINGID_TEAMSURROUNDEDBYFIRE, + STRINGID_PKMNBURNINGUP, + STRINGID_TEAMSURROUNDEDBYROCKS, + STRINGID_PKMNHURTBYROCKSTHROWN, + STRINGID_MOVEBLOCKEDBYDYNAMAX, + STRINGID_ZEROTOHEROTRANSFORMATION, + STRINGID_THETWOMOVESBECOMEONE, + STRINGID_ARAINBOWAPPEAREDONSIDE, + STRINGID_THERAINBOWDISAPPEARED, + STRINGID_WAITINGFORPARTNERSMOVE, + STRINGID_SEAOFFIREENVELOPEDSIDE, + STRINGID_HURTBYTHESEAOFFIRE, + STRINGID_THESEAOFFIREDISAPPEARED, + STRINGID_SWAMPENVELOPEDSIDE, + STRINGID_THESWAMPDISAPPEARED, + STRINGID_PKMNTELLCHILLINGRECEPTIONJOKE, + STRINGID_HOSPITALITYRESTORATION, + STRINGID_ELECTROSHOTCHARGING, + STRINGID_ITEMWASUSEDUP, + STRINGID_ATTACKERLOSTITSTYPE, + STRINGID_SHEDITSTAIL, + STRINGID_CLOAKEDINAHARSHLIGHT, + STRINGID_SUPERSWEETAROMAWAFTS, + STRINGID_DIMENSIONSWERETWISTED, + STRINGID_BIZARREARENACREATED, + STRINGID_BIZARREAREACREATED, + STRINGID_TIDYINGUPCOMPLETE, + STRINGID_PKMNTERASTALLIZEDINTO, + STRINGID_BOOSTERENERGYACTIVATES, + STRINGID_FOGCREPTUP, + STRINGID_FOGISDEEP, + STRINGID_FOGLIFTED, + STRINGID_PKMNMADESHELLGLEAM, + STRINGID_FICKLEBEAMDOUBLED, + STRINGID_COMMANDERACTIVATES, + STRINGID_POKEFLUTECATCHY, + STRINGID_POKEFLUTE, + STRINGID_MONHEARINGFLUTEAWOKE, + STRINGID_SUNLIGHTISHARSH, + STRINGID_ITISHAILING, + STRINGID_ITISSNOWING, + STRINGID_ISCOVEREDWITHGRASS, + STRINGID_MISTSWIRLSAROUND, + STRINGID_ELECTRICCURRENTISRUNNING, + STRINGID_SEEMSWEIRD, + STRINGID_WAGGLINGAFINGER, + STRINGID_BLOCKEDBYSLEEPCLAUSE, + STRINGID_SUPEREFFECTIVETWOFOES, + STRINGID_NOTVERYEFFECTIVETWOFOES, + STRINGID_ITDOESNTAFFECTTWOFOES, + STRINGID_SENDCAUGHTMONPARTYORBOX, + STRINGID_PKMNSENTTOPCAFTERCATCH, + STRINGID_PKMNDYNAMAXED, + STRINGID_PKMNGIGANTAMAXED, + STRINGID_TIMETODYNAMAX, + STRINGID_TIMETOGIGANTAMAX, + STRINGID_QUESTIONFORFEITBATTLE, + STRINGID_FORFEITBATTLEGAVEMONEY, + STRINGID_TOXICSPIKESBADLYPOISONED, + STRINGID_POWERCONSTRUCTPRESENCEOFMANY, + STRINGID_POWERCONSTRUCTTRANSFORM, + STRINGID_COUNT +}; // The below IDs are all indexes into battle message tables, // used to determine which of a set of messages to print. @@ -744,335 +747,480 @@ // and read when e.g. the command printfromtable is used. // gStatUpStringIds -#define B_MSG_ATTACKER_STAT_ROSE 0 -#define B_MSG_DEFENDER_STAT_ROSE 1 -#define B_MSG_STAT_WONT_INCREASE 2 -#define B_MSG_STAT_ROSE_EMPTY 3 -#define B_MSG_STAT_ROSE_ITEM 4 -#define B_MSG_USED_DIRE_HIT 5 +enum StatUpStringID +{ + B_MSG_ATTACKER_STAT_ROSE, + B_MSG_DEFENDER_STAT_ROSE, + B_MSG_STAT_WONT_INCREASE, + B_MSG_STAT_ROSE_EMPTY, + B_MSG_STAT_ROSE_ITEM, + B_MSG_USED_DIRE_HIT, +}; // gStatDownStringIds -#define B_MSG_ATTACKER_STAT_FELL 0 -#define B_MSG_DEFENDER_STAT_FELL 1 -#define B_MSG_STAT_WONT_DECREASE 2 -#define B_MSG_STAT_FELL_EMPTY 3 +enum StatDownStringID +{ + B_MSG_ATTACKER_STAT_FELL = 0, + B_MSG_DEFENDER_STAT_FELL = 1, + B_MSG_STAT_WONT_DECREASE, + B_MSG_STAT_FELL_EMPTY, +}; // gMissStringIds -#define B_MSG_MISSED 0 -#define B_MSG_PROTECTED 1 -#define B_MSG_AVOIDED_ATK 2 -#define B_MSG_AVOIDED_DMG 3 -#define B_MSG_GROUND_MISS 4 +enum MissStringID +{ + B_MSG_MISSED, + B_MSG_PROTECTED, + B_MSG_AVOIDED_ATK, + // Ability-related messages need to below this comment + B_MSG_AVOIDED_DMG, + B_MSG_GROUND_MISS, +}; // gAbsorbDrainStringIds -#define B_MSG_ABSORB 0 -#define B_MSG_ABSORB_OOZE 1 +enum AbsorbDrainStringID +{ + B_MSG_ABSORB, + B_MSG_ABSORB_OOZE, +}; // gLeechSeedStringIds -#define B_MSG_LEECH_SEED_SET 0 -#define B_MSG_LEECH_SEED_MISS 1 -#define B_MSG_LEECH_SEED_FAIL 2 -#define B_MSG_LEECH_SEED_DRAIN 3 -#define B_MSG_LEECH_SEED_OOZE 4 +enum LeechSeedStringID +{ + B_MSG_LEECH_SEED_SET, + B_MSG_LEECH_SEED_MISS, + B_MSG_LEECH_SEED_FAIL, + B_MSG_LEECH_SEED_DRAIN, + B_MSG_LEECH_SEED_OOZE, +}; // gMoveWeatherChangeStringIds -#define B_MSG_STARTED_RAIN 0 -#define B_MSG_STARTED_DOWNPOUR 1 -#define B_MSG_WEATHER_FAILED 2 -#define B_MSG_STARTED_SANDSTORM 3 -#define B_MSG_STARTED_SUNLIGHT 4 -#define B_MSG_STARTED_HAIL 5 -#define B_MSG_STARTED_SNOW 6 -#define B_MSG_STARTED_FOG 7 +enum MoveWeatherChangeStringID +{ + B_MSG_STARTED_RAIN, + B_MSG_STARTED_DOWNPOUR, + B_MSG_WEATHER_FAILED, + B_MSG_STARTED_SANDSTORM, + B_MSG_STARTED_SUNLIGHT, + B_MSG_STARTED_HAIL, + B_MSG_STARTED_SNOW, + B_MSG_STARTED_FOG, +}; // gWeatherEndsStringIds -#define B_MSG_WEATHER_END_RAIN 0 -#define B_MSG_WEATHER_END_SUN 1 -#define B_MSG_WEATHER_END_SANDSTORM 2 -#define B_MSG_WEATHER_END_HAIL 3 -#define B_MSG_WEATHER_END_SNOW 4 -#define B_MSG_WEATHER_END_FOG 5 -#define B_MSG_WEATHER_END_STRONG_WINDS 6 -#define B_MSG_WEATHER_END_COUNT 7 +enum WeatherEndStringID +{ + B_MSG_WEATHER_END_RAIN, + B_MSG_WEATHER_END_SUN, + B_MSG_WEATHER_END_SANDSTORM, + B_MSG_WEATHER_END_HAIL, + B_MSG_WEATHER_END_SNOW, + B_MSG_WEATHER_END_FOG, + B_MSG_WEATHER_END_STRONG_WINDS, + B_MSG_WEATHER_END_COUNT +}; // gWeatherTurnStringIds -#define B_MSG_WEATHER_TURN_RAIN 0 -#define B_MSG_WEATHER_TURN_DOWNPOUR 1 -#define B_MSG_WEATHER_TURN_SUN 2 -#define B_MSG_WEATHER_TURN_SANDSTORM 3 -#define B_MSG_WEATHER_TURN_HAIL 4 -#define B_MSG_WEATHER_TURN_SNOW 5 -#define B_MSG_WEATHER_TURN_FOG 6 -#define B_MSG_WEATHER_TURN_STRONG_WINDS 7 -#define B_MSG_WEATHER_TURN_COUNT 8 - -// gRainContinuesStringIds -#define B_MSG_RAIN_CONTINUES 0 -#define B_MSG_DOWNPOUR_CONTINUES 1 -#define B_MSG_RAIN_STOPPED 2 +enum WeatherTurnStringID +{ + B_MSG_WEATHER_TURN_RAIN, + B_MSG_WEATHER_TURN_DOWNPOUR, + B_MSG_WEATHER_TURN_SUN, + B_MSG_WEATHER_TURN_SANDSTORM, + B_MSG_WEATHER_TURN_HAIL, + B_MSG_WEATHER_TURN_SNOW, + B_MSG_WEATHER_TURN_FOG, + B_MSG_WEATHER_TURN_STRONG_WINDS, +}; // gSandStormHailSnowContinuesStringIds / gSandStormHailDmgStringIds/ gSandStormHailSnowEndStringIds -#define B_MSG_SANDSTORM 0 -#define B_MSG_HAIL 1 -#define B_MSG_SNOW 2 +enum SandstormHailSnowStringID +{ + B_MSG_SANDSTORM, + B_MSG_HAIL, +}; // gReflectLightScreenSafeguardStringIds -#define B_MSG_SIDE_STATUS_FAILED 0 -#define B_MSG_SET_REFLECT_SINGLE 1 -#define B_MSG_SET_REFLECT_DOUBLE 2 -#define B_MSG_SET_LIGHTSCREEN_SINGLE 3 -#define B_MSG_SET_LIGHTSCREEN_DOUBLE 4 -#define B_MSG_SET_SAFEGUARD 5 +enum ReflectLightScreenSafeguardStringID +{ + B_MSG_SIDE_STATUS_FAILED, + B_MSG_SET_REFLECT_SINGLE, + B_MSG_SET_REFLECT_DOUBLE, + B_MSG_SET_LIGHTSCREEN_SINGLE, + B_MSG_SET_LIGHTSCREEN_DOUBLE, + B_MSG_SET_SAFEGUARD, +}; // gProtectLikeUsedStringIds -#define B_MSG_PROTECTED_ITSELF 0 -#define B_MSG_BRACED_ITSELF 1 -#define B_MSG_PROTECT_FAILED 2 -#define B_MSG_PROTECTED_TEAM 3 +enum ProtectLikeUsedStringID +{ + B_MSG_PROTECTED_ITSELF, + B_MSG_BRACED_ITSELF, + B_MSG_PROTECT_FAILED, + B_MSG_PROTECTED_TEAM, +}; // gRestUsedStringIds -#define B_MSG_REST 0 -#define B_MSG_REST_STATUSED 1 +enum RestUsedStringID +{ + B_MSG_REST, + B_MSG_REST_STATUSED, +}; // gWokeUpStringIds -#define B_MSG_WOKE_UP 0 -#define B_MSG_WOKE_UP_UPROAR 1 +enum WokeUpStringID +{ + B_MSG_WOKE_UP, + B_MSG_WOKE_UP_UPROAR, +}; // gUproarAwakeStringIds -#define B_MSG_CANT_SLEEP_UPROAR 0 -#define B_MSG_UPROAR_KEPT_AWAKE 1 +enum UproarAwakeStringID +{ + B_MSG_CANT_SLEEP_UPROAR, + B_MSG_UPROAR_KEPT_AWAKE, +}; // gUproarOverTurnStringIds -#define B_MSG_UPROAR_CONTINUES 0 -#define B_MSG_UPROAR_ENDS 1 +enum UproarOverTurnStringID +{ + B_MSG_UPROAR_CONTINUES, + B_MSG_UPROAR_ENDS, +}; // gStockpileUsedStringIds -#define B_MSG_STOCKPILED 0 -#define B_MSG_CANT_STOCKPILE 1 +enum StockpileUsedStringID +{ + B_MSG_STOCKPILED, + B_MSG_CANT_STOCKPILE, +}; // gSwallowFailStringIds -#define B_MSG_SWALLOW_FAILED 0 -#define B_MSG_SWALLOW_FULL_HP 1 +enum SwallowFailStringID +{ + B_MSG_SWALLOW_FAILED, + B_MSG_SWALLOW_FULL_HP, +}; // gKOFailedStringIds -#define B_MSG_KO_MISS 0 -#define B_MSG_KO_UNAFFECTED 1 +enum KOFailedStringID +{ + B_MSG_KO_MISS, + B_MSG_KO_UNAFFECTED, +}; // gMistUsedStringIds -#define B_MSG_SET_MIST 0 -#define B_MSG_MIST_FAILED 1 +enum MistUsedStringID +{ + B_MSG_SET_MIST, + B_MSG_MIST_FAILED, +}; // gFocusEnergyUsedStringIds -#define B_MSG_GETTING_PUMPED 0 -#define B_MSG_FOCUS_ENERGY_FAILED 1 +enum FocusEnergyUsedStringID +{ + B_MSG_GETTING_PUMPED, + B_MSG_FOCUS_ENERGY_FAILED, +}; // gTransformUsedStringIds -#define B_MSG_TRANSFORMED 0 -#define B_MSG_TRANSFORM_FAILED 1 +enum TransformUsedStringID +{ + B_MSG_TRANSFORMED, + B_MSG_TRANSFORM_FAILED, +}; // gSubstituteUsedStringIds -#define B_MSG_SET_SUBSTITUTE 0 -#define B_MSG_SUBSTITUTE_FAILED 1 +enum SubstituteUsedStringID +{ + B_MSG_SET_SUBSTITUTE, + B_MSG_SUBSTITUTE_FAILED, +}; // gPartyStatusHealStringIds -#define B_MSG_BELL 0 -#define B_MSG_BELL_SOUNDPROOF_ATTACKER 1 -#define B_MSG_BELL_SOUNDPROOF_PARTNER 2 -#define B_MSG_BELL_BOTH_SOUNDPROOF 3 -#define B_MSG_SOOTHING_AROMA 4 +enum PartyStatusHealStringID +{ + B_MSG_BELL, + B_MSG_BELL_SOUNDPROOF_ATTACKER, + B_MSG_BELL_SOUNDPROOF_PARTNER, + B_MSG_BELL_BOTH_SOUNDPROOF, + B_MSG_SOOTHING_AROMA, +}; // gFutureMoveUsedStringIds -#define B_MSG_FUTURE_SIGHT 0 -#define B_MSG_DOOM_DESIRE 1 +enum FutureMoveUsedStringID +{ + B_MSG_FUTURE_SIGHT, + B_MSG_DOOM_DESIRE, +}; // gItemSwapStringIds -#define B_MSG_ITEM_SWAP_TAKEN 0 -#define B_MSG_ITEM_SWAP_GIVEN 1 -#define B_MSG_ITEM_SWAP_BOTH 2 +enum ItemSwapStringID +{ + B_MSG_ITEM_SWAP_TAKEN, + B_MSG_ITEM_SWAP_GIVEN, + B_MSG_ITEM_SWAP_BOTH, +}; // gSportsUsedStringIds -#define B_MSG_WEAKEN_ELECTRIC 0 -#define B_MSG_WEAKEN_FIRE 1 +enum SportsUsedStringID +{ + B_MSG_WEAKEN_ELECTRIC, + B_MSG_WEAKEN_FIRE, +}; // gCaughtMonStringIds -#define B_MSG_NO_MESSSAGE_SKIP 0 -#define B_MSG_SENT_SOMEONES_PC 1 -#define B_MSG_SENT_LANETTES_PC 2 -#define B_MSG_SOMEONES_BOX_FULL 3 -#define B_MSG_LANETTES_BOX_FULL 4 -#define B_MSG_SWAPPED_INTO_PARTY 5 +enum CaughtMonStringID +{ + B_MSG_NO_MESSSAGE_SKIP, + // "Lanette's" should always follow "someone's" + B_MSG_SENT_SOMEONES_PC, + B_MSG_SENT_LANETTES_PC, + B_MSG_SOMEONES_BOX_FULL, + B_MSG_LANETTES_BOX_FULL, + B_MSG_SWAPPED_INTO_PARTY, +}; // gPrimalWeatherBlocksStringIds -#define B_MSG_PRIMAL_WEATHER_FIZZLED_BY_RAIN 0 -#define B_MSG_PRIMAL_WEATHER_EVAPORATED_IN_SUN 1 +enum PrimalWeatherBlockStringID +{ + B_MSG_PRIMAL_WEATHER_FIZZLED_BY_RAIN, + B_MSG_PRIMAL_WEATHER_EVAPORATED_IN_SUN, +}; // gInobedientStringIds -#define B_MSG_LOAFING 0 -#define B_MSG_WONT_OBEY 1 -#define B_MSG_TURNED_AWAY 2 -#define B_MSG_PRETEND_NOT_NOTICE 3 -#define B_MSG_INCAPABLE_OF_POWER 4 +enum InobedientStringID +{ + B_MSG_LOAFING, + B_MSG_WONT_OBEY, + B_MSG_TURNED_AWAY, + B_MSG_PRETEND_NOT_NOTICE, + B_MSG_INCAPABLE_OF_POWER, +}; + // For randomly selecting a disobey string // Skips the one used for Battle Palace -#define NUM_LOAF_STRINGS 4 +#define NUM_LOAF_STRINGS (B_MSG_PRETEND_NOT_NOTICE + 1) // gSafariGetNearStringIds -#define B_MSG_CREPT_CLOSER 0 -#define B_MSG_CANT_GET_CLOSER 1 +enum SafariGetNearStringID +{ + B_MSG_CREPT_CLOSER, + B_MSG_CANT_GET_CLOSER, +}; // gSafariPokeblockResultStringIds -#define B_MSG_MON_CURIOUS 0 -#define B_MSG_MON_ENTHRALLED 1 -#define B_MSG_MON_IGNORED 2 +enum SafariPokeblockResultStringID +{ + B_MSG_MON_CURIOUS, + B_MSG_MON_ENTHRALLED, + B_MSG_MON_IGNORED, +}; // gFlashFireStringIds -#define B_MSG_FLASH_FIRE_BOOST 0 -#define B_MSG_FLASH_FIRE_NO_BOOST 1 +enum FlashFireStringID +{ + B_MSG_FLASH_FIRE_BOOST, + B_MSG_FLASH_FIRE_NO_BOOST, +}; // gBerryEffectStringIds -#define B_MSG_CURED_PROBLEM 0 -#define B_MSG_NORMALIZED_STATUS 1 +enum BerryEffectStringID +{ + B_MSG_CURED_PROBLEM, + B_MSG_NORMALIZED_STATUS, +}; // gNoEscapeStringIds -#define B_MSG_CANT_ESCAPE 0 -#define B_MSG_DONT_LEAVE_BIRCH 1 -#define B_MSG_PREVENTS_ESCAPE 2 -#define B_MSG_CANT_ESCAPE_2 3 -#define B_MSG_ATTACKER_CANT_ESCAPE 4 +enum NoEscapeStringID +{ + B_MSG_CANT_ESCAPE, + B_MSG_DONT_LEAVE_BIRCH, + B_MSG_PREVENTS_ESCAPE, + B_MSG_CANT_ESCAPE_2, + B_MSG_ATTACKER_CANT_ESCAPE, +}; // gGotPoisonedStringIds / gGotParalyzedStringIds / gFellAsleepStringIds // gGotBurnedStringIds / gGotFrozenStringIds / gAttractUsedStringIds -#define B_MSG_STATUSED 0 -#define B_MSG_STATUSED_BY_ABILITY 1 +enum GotStatusedStringID +{ + B_MSG_STATUSED, + B_MSG_STATUSED_BY_ABILITY, +}; -// gBRNPreventionStringIds / gPRLZPreventionStringIds / gPSNPreventionStringIds -#define B_MSG_ABILITY_PREVENTS_MOVE_STATUS 0 -#define B_MSG_ABILITY_PREVENTS_ABILITY_STATUS 1 -#define B_MSG_STATUS_HAD_NO_EFFECT 2 +// gStatusPreventionStringIds +enum StatusPreventionStringID +{ + B_MSG_ABILITY_PREVENTS_MOVE_BURN, + B_MSG_ABILITY_PREVENTS_MOVE_PARALYSIS, + B_MSG_ABILITY_PREVENTS_MOVE_POISON, + B_MSG_ABILITY_PREVENTS_ABILITY_STATUS, + B_MSG_STATUS_HAD_NO_EFFECT, + B_MSG_ABILITY_PASTEL_VEIL, +}; // gGotDefrostedStringIds -#define B_MSG_DEFROSTED 0 -#define B_MSG_DEFROSTED_BY_MOVE 1 +enum GotDefrostedStringID +{ + B_MSG_DEFROSTED, + B_MSG_DEFROSTED_BY_MOVE, +}; // gFrostbiteHealedStringIds -#define B_MSG_FROSTBITE_HEALED 0 -#define B_MSG_FROSTBITE_HEALED_BY_MOVE 1 +enum FrostbiteHealedStringID +{ + B_MSG_FROSTBITE_HEALED, + B_MSG_FROSTBITE_HEALED_BY_MOVE, +}; // gBattlePalaceFlavorTextTable -#define B_MSG_GLINT_IN_EYE 0 -#define B_MSG_GETTING_IN_POS 1 -#define B_MSG_GROWL_DEEPLY 2 -#define B_MSG_EAGER_FOR_MORE 3 +enum BattlePalaceFlavorTextID +{ + B_MSG_GLINT_IN_EYE, + B_MSG_GETTING_IN_POS, + B_MSG_GROWL_DEEPLY, + B_MSG_EAGER_FOR_MORE, +}; // gRefereeStringsTable -#define B_MSG_REF_NOTHING_IS_DECIDED 0 -#define B_MSG_REF_THATS_IT 1 -#define B_MSG_REF_JUDGE_MIND 2 -#define B_MSG_REF_JUDGE_SKILL 3 -#define B_MSG_REF_JUDGE_BODY 4 -#define B_MSG_REF_PLAYER_WON 5 -#define B_MSG_REF_OPPONENT_WON 6 -#define B_MSG_REF_DRAW 7 -#define B_MSG_REF_COMMENCE_BATTLE 8 +enum RefereeStringID +{ + B_MSG_REF_NOTHING_IS_DECIDED = 0, // Default, likely actually a magic number somewhere that should be assigned this instead if used at all + B_MSG_REF_THATS_IT, + B_MSG_REF_JUDGE_MIND, + B_MSG_REF_JUDGE_SKILL, + B_MSG_REF_JUDGE_BODY, + B_MSG_REF_PLAYER_WON, + B_MSG_REF_OPPONENT_WON, + B_MSG_REF_DRAW, + B_MSG_REF_COMMENCE_BATTLE, +}; // gSwitchInAbilityStringIds -#define B_MSG_SWITCHIN_MOLDBREAKER 0 -#define B_MSG_SWITCHIN_TERAVOLT 1 -#define B_MSG_SWITCHIN_TURBOBLAZE 2 -#define B_MSG_SWITCHIN_SLOWSTART 3 -#define B_MSG_SWITCHIN_UNNERVE 4 -#define B_MSG_SWITCHIN_ANTICIPATION 5 -#define B_MSG_SWITCHIN_FOREWARN 6 -#define B_MSG_SWITCHIN_PRESSURE 7 -#define B_MSG_SWITCHIN_DARKAURA 8 -#define B_MSG_SWITCHIN_FAIRYAURA 9 -#define B_MSG_SWITCHIN_AURABREAK 10 -#define B_MSG_SWITCHIN_COMATOSE 11 -#define B_MSG_SWITCHIN_SCREENCLEANER 12 -#define B_MSG_SWITCHIN_ASONE 13 -#define B_MSG_SWITCHIN_CURIOUS_MEDICINE 14 -#define B_MSG_SWITCHIN_PASTEL_VEIL 15 -#define B_MSG_SWITCHIN_NEUTRALIZING_GAS 16 +enum SwitchInAbilityStringID +{ + B_MSG_SWITCHIN_MOLDBREAKER, + B_MSG_SWITCHIN_TERAVOLT, + B_MSG_SWITCHIN_TURBOBLAZE, + B_MSG_SWITCHIN_SLOWSTART, + B_MSG_SWITCHIN_UNNERVE, + B_MSG_SWITCHIN_ANTICIPATION, + B_MSG_SWITCHIN_FOREWARN, + B_MSG_SWITCHIN_PRESSURE, + B_MSG_SWITCHIN_DARKAURA, + B_MSG_SWITCHIN_FAIRYAURA, + B_MSG_SWITCHIN_AURABREAK, + B_MSG_SWITCHIN_COMATOSE, + B_MSG_SWITCHIN_SCREENCLEANER, + B_MSG_SWITCHIN_ASONE, + B_MSG_SWITCHIN_CURIOUS_MEDICINE, + B_MSG_SWITCHIN_PASTEL_VEIL, + B_MSG_SWITCHIN_NEUTRALIZING_GAS, +}; // gMentalHerbCureStringIds -#define B_MSG_MENTALHERBCURE_INFATUATION 0 -#define B_MSG_MENTALHERBCURE_TAUNT 1 -#define B_MSG_MENTALHERBCURE_ENCORE 2 -#define B_MSG_MENTALHERBCURE_TORMENT 3 -#define B_MSG_MENTALHERBCURE_HEALBLOCK 4 -#define B_MSG_MENTALHERBCURE_DISABLE 5 +enum MentalHerbCureStringID +{ + B_MSG_MENTALHERBCURE_INFATUATION, + B_MSG_MENTALHERBCURE_TAUNT, + B_MSG_MENTALHERBCURE_ENCORE, + B_MSG_MENTALHERBCURE_TORMENT, + B_MSG_MENTALHERBCURE_HEALBLOCK, + B_MSG_MENTALHERBCURE_DISABLE, +}; // gTerrainPreventsStringIds -#define B_MSG_TERRAINPREVENTS_MISTY 0 -#define B_MSG_TERRAINPREVENTS_ELECTRIC 1 -#define B_MSG_TERRAINPREVENTS_PSYCHIC 2 +enum TerrainPreventsStringID +{ + B_MSG_TERRAINPREVENTS_MISTY, + B_MSG_TERRAINPREVENTS_ELECTRIC, + B_MSG_TERRAINPREVENTS_PSYCHIC, +}; // gTerrainStringIds -#define B_MSG_TERRAIN_SET_MISTY 0 -#define B_MSG_TERRAIN_SET_ELECTRIC 1 -#define B_MSG_TERRAIN_SET_PSYCHIC 2 -#define B_MSG_TERRAIN_SET_GRASSY 3 -#define B_MSG_TERRAIN_END_MISTY 4 -#define B_MSG_TERRAIN_END_ELECTRIC 5 -#define B_MSG_TERRAIN_END_PSYCHIC 6 -#define B_MSG_TERRAIN_END_GRASSY 7 -#define B_MSG_TERRAIN_COUNT 8 +enum TerrainStringID +{ + B_MSG_TERRAIN_SET_MISTY, + B_MSG_TERRAIN_SET_ELECTRIC, + B_MSG_TERRAIN_SET_PSYCHIC, + B_MSG_TERRAIN_SET_GRASSY, + B_MSG_TERRAIN_END_MISTY, + B_MSG_TERRAIN_END_ELECTRIC, + B_MSG_TERRAIN_END_PSYCHIC, + B_MSG_TERRAIN_END_GRASSY, + B_MSG_TERRAIN_COUNT +}; // gStartingStatusStringIds -#define B_MSG_TERRAIN_SET_MISTY 0 -#define B_MSG_TERRAIN_SET_ELECTRIC 1 -#define B_MSG_TERRAIN_SET_PSYCHIC 2 -#define B_MSG_TERRAIN_SET_GRASSY 3 -#define B_MSG_SET_TRICK_ROOM 4 -#define B_MSG_SET_MAGIC_ROOM 5 -#define B_MSG_SET_WONDER_ROOM 6 -#define B_MSG_SET_TAILWIND 7 -#define B_MSG_SET_RAINBOW 8 -#define B_MSG_SET_SEA_OF_FIRE 9 -#define B_MSG_SET_SWAMP 10 -#define B_MSG_STARTING_STATUS_COUNT 11 - +enum StartingStatusStringID +{ + B_MSG_SET_TRICK_ROOM = (B_MSG_TERRAIN_SET_GRASSY + 1), + B_MSG_SET_MAGIC_ROOM, + B_MSG_SET_WONDER_ROOM, + B_MSG_SET_TAILWIND, + B_MSG_SET_RAINBOW, + B_MSG_SET_SEA_OF_FIRE, + B_MSG_SET_SWAMP, + B_MSG_STARTING_STATUS_COUNT, +}; // gWrappedStringIds -#define B_MSG_WRAPPED_BIND 0 -#define B_MSG_WRAPPED_WRAP 1 -#define B_MSG_WRAPPED_FIRE_SPIN 2 -#define B_MSG_WRAPPED_CLAMP 3 -#define B_MSG_WRAPPED_WHIRLPOOL 4 -#define B_MSG_WRAPPED_SAND_TOMB 5 -#define B_MSG_WRAPPED_MAGMA_STORM 6 -#define B_MSG_WRAPPED_INFESTATION 7 -#define B_MSG_WRAPPED_SNAP_TRAP 8 -#define B_MSG_WRAPPED_THUNDER_CAGE 9 -#define NUM_TRAPPING_MOVES 10 +// These correspond in order to sTrappingMoves! +enum WrappedStringID +{ + B_MSG_WRAPPED_BIND, + B_MSG_WRAPPED_WRAP, + B_MSG_WRAPPED_FIRE_SPIN, + B_MSG_WRAPPED_CLAMP, + B_MSG_WRAPPED_WHIRLPOOL, + B_MSG_WRAPPED_SAND_TOMB, + B_MSG_WRAPPED_MAGMA_STORM, + B_MSG_WRAPPED_INFESTATION, + B_MSG_WRAPPED_SNAP_TRAP, + B_MSG_WRAPPED_THUNDER_CAGE, + NUM_TRAPPING_MOVES, +}; // z effects -#define B_MSG_Z_RESET_STATS 0 -#define B_MSG_Z_ALL_STATS_UP 1 -#define B_MSG_Z_BOOST_CRITS 2 -#define B_MSG_Z_FOLLOW_ME 3 -#define B_MSG_Z_RECOVER_HP 4 -#define B_MSG_Z_STAT_UP 5 -#define B_MSG_Z_HP_TRAP 6 +enum ZEffectStringID +{ + B_MSG_Z_RESET_STATS, + B_MSG_Z_ALL_STATS_UP, + B_MSG_Z_BOOST_CRITS, + B_MSG_Z_FOLLOW_ME, + B_MSG_Z_RECOVER_HP, + B_MSG_Z_STAT_UP, + B_MSG_Z_HP_TRAP, +}; // gDmgHazardsStringIds -#define B_MSG_PKMNHURTBYSPIKES 0 -#define B_MSG_STEALTHROCKDMG 1 -#define B_MSG_SHARPSTEELDMG 2 -#define B_MSG_POINTEDSTONESFLOAT 3 -#define B_MSG_SPIKESSCATTERED 4 -#define B_MSG_SHARPSTEELFLOATS 5 +enum DmgHazardStringID +{ + B_MSG_PKMNHURTBYSPIKES, + B_MSG_STEALTHROCKDMG, + B_MSG_SHARPSTEELDMG, + B_MSG_POINTEDSTONESFLOAT, + B_MSG_SPIKESSCATTERED, + B_MSG_SHARPSTEELFLOATS, +}; // gDamageNonTypesStartStringIds -#define B_MSG_TRAPPED_WITH_VINES 0 -#define B_MSG_CAUGHT_IN_VORTEX 1 -#define B_MSG_SURROUNDED_BY_FIRE 2 -#define B_MSG_SURROUNDED_BY_ROCKS 3 +enum DamageNonTypesStartStringID +{ + B_MSG_TRAPPED_WITH_VINES, + B_MSG_CAUGHT_IN_VORTEX, + B_MSG_SURROUNDED_BY_FIRE, + B_MSG_SURROUNDED_BY_ROCKS, +}; // gDamageNonTypesDmgStringIds -#define B_MSG_HURT_BY_VINES 0 -#define B_MSG_HURT_BY_VORTEX 1 -#define B_MSG_BURNING_UP 2 -#define B_MSG_HURT_BY_ROCKS_THROWN 3 +enum DamageNonTypesDmgStringID +{ + B_MSG_HURT_BY_VINES, + B_MSG_HURT_BY_VORTEX, + B_MSG_BURNING_UP, + B_MSG_HURT_BY_ROCKS_THROWN, +}; #endif // GUARD_CONSTANTS_BATTLE_STRING_IDS_H diff --git a/include/constants/event_object_movement.h b/include/constants/event_object_movement.h index bc2081a54b..4e1b3a34ea 100755 --- a/include/constants/event_object_movement.h +++ b/include/constants/event_object_movement.h @@ -255,6 +255,10 @@ #define MOVEMENT_ACTION_WALK_SLOW_STAIRS_UP 0xA7 #define MOVEMENT_ACTION_WALK_SLOW_STAIRS_LEFT 0xA8 #define MOVEMENT_ACTION_WALK_SLOW_STAIRS_RIGHT 0xA9 +#define MOVEMENT_ACTION_SURF_STILL_DOWN 0xAA +#define MOVEMENT_ACTION_SURF_STILL_UP 0xAB +#define MOVEMENT_ACTION_SURF_STILL_LEFT 0xAC +#define MOVEMENT_ACTION_SURF_STILL_RIGHT 0xAD #define MOVEMENT_ACTION_STEP_END 0xFE #define MOVEMENT_ACTION_NONE 0xFF diff --git a/include/constants/event_objects.h b/include/constants/event_objects.h index c1c44d8e2e..a0ca0063dc 100644 --- a/include/constants/event_objects.h +++ b/include/constants/event_objects.h @@ -245,11 +245,12 @@ #define OBJ_EVENT_GFX_HOOH 238 #define OBJ_EVENT_GFX_POKE_BALL 239 #define OBJ_EVENT_GFX_OW_MON 240 +#define OBJ_EVENT_GFX_LIGHT_SPRITE 241 // 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 +#define NUM_OBJ_EVENT_GFX 242 // These are dynamic object gfx ids. @@ -273,6 +274,7 @@ #define OBJ_EVENT_GFX_VAR_E (OBJ_EVENT_GFX_VARS + 0xE) #define OBJ_EVENT_GFX_VAR_F (OBJ_EVENT_GFX_VARS + 0xF) +// Don't use (1u << 15) to avoid conflict with BLEND_IMMUNE_FLAG. #define OBJ_EVENT_MON (1u << 14) #define OBJ_EVENT_MON_SHINY (1u << 13) #define OBJ_EVENT_MON_FEMALE (1u << 12) @@ -308,11 +310,19 @@ #define TRACKS_SPOT 4 #define TRACKS_BUG 5 +#define LIGHT_TYPE_BALL 0 +#define LIGHT_TYPE_PKMN_CENTER_SIGN 1 +#define LIGHT_TYPE_POKE_MART_SIGN 2 + #define FIRST_DECORATION_SPRITE_GFX OBJ_EVENT_GFX_PICHU_DOLL #define OBJ_KIND_NORMAL 0 #define OBJ_KIND_CLONE 255 // Exclusive to FRLG +// Special object event local ids +// Used for link player OWs in CreateLinkPlayerSprite +#define OBJ_EVENT_ID_DYNAMIC_BASE 0xF0 + // Each object event template gets an ID that can be used to refer to it in scripts and elsewhere. // This is referred to as the "local id" (and it's really just 1 + its index in the templates array). // There are a few special IDs reserved for objects that don't have templates in the map data -- one for the player @@ -323,6 +333,7 @@ #define LOCALID_BERRY_BLENDER_PLAYER_END 240 // This will use 5 (MAX_RFU_PLAYERS) IDs ending at 240, i.e. 236-240 #define LOCALID_PLAYER 255 #define OBJ_EVENT_ID_FOLLOWER 0xFE +#define OBJ_EVENT_ID_NPC_FOLLOWER 0xFD // Aliases for old names. "object event id" normally refers to an index into gObjectEvents, which these are not. #define OBJ_EVENT_ID_CAMERA LOCALID_CAMERA @@ -404,7 +415,10 @@ #endif //OW_FOLLOWERS_POKEBALLS // Used as a placeholder follower graphic #define OBJ_EVENT_PAL_TAG_SUBSTITUTE 0x7611 -#define OBJ_EVENT_PAL_TAG_EMOTES 0x8002 +#define OBJ_EVENT_PAL_TAG_LIGHT 0x8001 +#define OBJ_EVENT_PAL_TAG_LIGHT_2 0x8002 +#define OBJ_EVENT_PAL_TAG_EMOTES 0x8003 +#define OBJ_EVENT_PAL_TAG_NEON_LIGHT 0x8004 // 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 diff --git a/include/constants/expansion.h b/include/constants/expansion.h index 59618ad155..10572ec00e 100644 --- a/include/constants/expansion.h +++ b/include/constants/expansion.h @@ -3,8 +3,8 @@ // Last version: 1.11.4 #define EXPANSION_VERSION_MAJOR 1 -#define EXPANSION_VERSION_MINOR 11 -#define EXPANSION_VERSION_PATCH 4 +#define EXPANSION_VERSION_MINOR 12 +#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 48406195f0..e47cc292c3 100644 --- a/include/constants/field_effects.h +++ b/include/constants/field_effects.h @@ -76,6 +76,7 @@ #define FLDEFF_TRACKS_SPOT 71 #define FLDEFF_TRACKS_BUG 72 #define FLDEFF_CAVE_DUST 73 +#define FLDEFF_DEFOG 74 #define FLDEFFOBJ_SHADOW_S 0 #define FLDEFFOBJ_SHADOW_M 1 @@ -132,5 +133,12 @@ #define FLDEFF_PAL_TAG_HOF_MONITOR 0x1010 #define FLDEFF_PAL_TAG_UNKNOWN 0x1011 #define FLDEFF_PAL_TAG_CAVE_DUST 0x1012 +#define FLDEFF_PAL_TAG_FIELD_MOVE_MON 0x8400 + +// tile tags, for field effects that may have many copies on screen at once +#define FLDEFF_TILE_TAG_SHADOW_SMALL 0x1400 +#define FLDEFF_TILE_TAG_SHADOW_MEDIUM 0x1401 +#define FLDEFF_TILE_TAG_SHADOW_LARGE 0x1402 +#define FLDEFF_TILE_TAG_SHADOW_EXTRA_LARGE 0x1403 #endif // GUARD_FIELD_EFFECT_CONSTANTS_H diff --git a/include/constants/field_weather.h b/include/constants/field_weather.h index fe7eb6a1ae..133e6d935a 100644 --- a/include/constants/field_weather.h +++ b/include/constants/field_weather.h @@ -1,6 +1,16 @@ #ifndef GUARD_CONSTANTS_FIELD_WEATHER_H #define GUARD_CONSTANTS_FIELD_WEATHER_H +#include "config/overworld.h" + +// sPaletteColorMapTypes & field_effect_scripts +enum ColorMapType +{ + COLOR_MAP_NONE, + COLOR_MAP_DARK_CONTRAST, + COLOR_MAP_CONTRAST, +}; + #define MAX_RAIN_SPRITES 24 #define NUM_CLOUD_SPRITES 3 #define NUM_FOG_HORIZONTAL_SPRITES 20 @@ -22,4 +32,8 @@ #define FADE_FROM_WHITE 2 #define FADE_TO_WHITE 3 +// Shadows values +#define BASE_SHADOW_INTENSITY (16 - OW_SHADOW_INTENSITY) +#define SHADOW_COLOR_INDEX 9 // Within the weather palette, shadow sprites' color index + #endif // GUARD_CONSTANTS_FIELD_WEATHER_H diff --git a/include/constants/follower_npc.h b/include/constants/follower_npc.h new file mode 100644 index 0000000000..e1c84b05a4 --- /dev/null +++ b/include/constants/follower_npc.h @@ -0,0 +1,34 @@ +#ifndef GUARD_CONSTANTS_FOLLOWER_NPC_H +#define GUARD_CONSTANTS_FOLLOWER_NPC_H + +// NPC Follower Flags +#define FOLLOWER_NPC_FLAG_HAS_RUNNING_FRAMES 0x1 // Only use this if the NPC has running anim frames. Part of FOLLOWER_NPC_FLAG_ALL_LAND. +#define FOLLOWER_NPC_FLAG_CAN_BIKE 0x2 // Player is allowed to use the Bike. Part of FOLLOWER_NPC_FLAG_ALL_LAND. +#define FOLLOWER_NPC_FLAG_CAN_LEAVE_ROUTE 0x4 // Player is allowed to use Fly/Teleport/EscapeRope/etc. Part of FOLLOWER_NPC_FLAG_ALL_LAND. +#define FOLLOWER_NPC_FLAG_CAN_SURF 0x8 // Player is allowed to Surf. Part of FOLLOWER_NPC_FLAG_ALL_WATER. +#define FOLLOWER_NPC_FLAG_CAN_WATERFALL 0x10 // Player is allowed to use Waterfall. Part of FOLLOWER_NPC_FLAG_ALL_WATER. +#define FOLLOWER_NPC_FLAG_CAN_DIVE 0x20 // Player is allowed to use Dive. Part of FOLLOWER_NPC_FLAG_ALL_WATER. +#define FOLLOWER_NPC_FLAG_CLEAR_ON_WHITE_OUT 0x80 // The NPC follower will be destroyed if the player whites out. + +#define FOLLOWER_NPC_FLAG_ALL_LAND FOLLOWER_NPC_FLAG_HAS_RUNNING_FRAMES | FOLLOWER_NPC_FLAG_CAN_BIKE | FOLLOWER_NPC_FLAG_CAN_LEAVE_ROUTE +#define FOLLOWER_NPC_FLAG_ALL_WATER FOLLOWER_NPC_FLAG_CAN_SURF | FOLLOWER_NPC_FLAG_CAN_WATERFALL | FOLLOWER_NPC_FLAG_CAN_DIVE +#define FOLLOWER_NPC_FLAG_ALL FOLLOWER_NPC_FLAG_ALL_LAND | FOLLOWER_NPC_FLAG_ALL_WATER | FOLLOWER_NPC_FLAG_CLEAR_ON_WHITE_OUT + +// Shorter flag names for ease of use in setfollowernpc script macro +#define FNPC_RUNNING FOLLOWER_NPC_FLAG_HAS_RUNNING_FRAMES +#define FNPC_BIKE FOLLOWER_NPC_FLAG_CAN_BIKE +#define FNPC_LEAVE_ROUTE FOLLOWER_NPC_FLAG_CAN_LEAVE_ROUTE +#define FNPC_SURF FOLLOWER_NPC_FLAG_CAN_SURF +#define FNPC_WATERFALL FOLLOWER_NPC_FLAG_CAN_WATERFALL +#define FNPC_DIVE FOLLOWER_NPC_FLAG_CAN_DIVE +#define FNPC_WHITE_OUT FOLLOWER_NPC_FLAG_CLEAR_ON_WHITE_OUT + +#define FNPC_ALL_LAND FOLLOWER_NPC_FLAG_ALL_LAND +#define FNPC_ALL_WATER FOLLOWER_NPC_FLAG_ALL_WATER +#define FNPC_ALL FOLLOWER_NPC_FLAG_ALL + + +#define FNPC_NONE 0 +#define FNPC_ALWAYS 2 + +#endif // GUARD_CONSTANTS_FOLLOWER_NPC_H diff --git a/include/constants/form_change_types.h b/include/constants/form_change_types.h index 8cf2e37e1b..2565d36a54 100644 --- a/include/constants/form_change_types.h +++ b/include/constants/form_change_types.h @@ -2,153 +2,139 @@ #define GUARD_CONSTANTS_FORM_CHANGE_TYPES_H // FORM_CHANGE_BATTLE_HP_PERCENT param2 arguments -#define HP_HIGHER_THAN 1 -#define HP_LOWER_EQ_THAN 2 +enum FormChangeBattleHPPercentArguments +{ + HP_HIGHER_THAN = 1, + HP_LOWER_EQ_THAN, +}; // FORM_CHANGE_MOVE param2 Arguments -#define WHEN_LEARNED 0 -#define WHEN_FORGOTTEN 1 +enum FormChangeMoveArguments +{ + WHEN_LEARNED, + WHEN_FORGOTTEN, +}; // FORM_CHANGE_ITEM_USE param2 Arguments -#define DAY 1 -#define NIGHT 2 +enum FormChangeItemUseArguments +{ + DAY = 1, + NIGHT, +}; #define FUSION_TERMINATOR 0xFF -#define FORM_CHANGE_TERMINATOR 0 -// Form change that activates when the specified item is given to or taken from the selected Pokémon. -// param1: item to hold. -// param2: ability to check for, optional. -#define FORM_CHANGE_ITEM_HOLD 1 - -// Form change that activates when the item is used on the selected Pokémon. -// param1: item to use -// param2: time of day to check, optional. -// - DAY if Form change that activates in the daytime. -// - NIGHT if Form change that activates at nighttime. -// - 0 if irrelevant, but param3 is necessary. -// param3: illegal statuses to have, optional. -#define FORM_CHANGE_ITEM_USE 2 - -// TODO: Form change that activates when the Pokémon learns or forgets the move. -// param1: move to check for -// param2: -// - WHEN_LEARNED if Form change that activates when move is forgotten -// - WHEN_FORGOTTEN if Form change that activates when move is learned -#define FORM_CHANGE_MOVE 3 - -// Form change that activates when the Pokémon is withdrawn from the PC or Daycare. -// Daycare withdraw done, PC withdraw TODO. -// - No parameters. -#define FORM_CHANGE_WITHDRAW 4 - -// Form change that activates when the Pokémon faints, either in battle or in the overworld by poison. -// If species is not specified and it's on the player's side, it will try to use the value -// saved in gBattleStruct->changedSpecies from a previous form change. -// - No parameters. -#define FORM_CHANGE_FAINT 5 - -// Form change that activates when the Pokémon is sent out at the beginning of a battle -// param1: item to hold, optional -// param2: a move that will be replaced, optional -// param3: a new move to replace it with, optional -#define FORM_CHANGE_BEGIN_BATTLE 6 - -// Form change that activates at the end of a battle. If species is not specified and it's on the player's side, it will try to use the value saved in gBattleStruct->changedSpecies from a previous form change. -// param1: item to hold, optional -// param2: a move that will be replaced, optional -// param3: a new move to replace it with, optional -#define FORM_CHANGE_END_BATTLE 7 - -// Form change that activates at the end of a battle based on the terrain if it participated in the battle and hasn't fainted. Takes priority over FORM_CHANGE_END_BATTLE. -// param1: battle terrain to check. -#define FORM_CHANGE_END_BATTLE_TERRAIN 8 - -// Form change that activates when the Pokémon is switched out in battle. -// 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. -// param1: Ability to check. -// param2: HP comparer -// - HP_HIGHER_THAN if the form triggers when the current HP is higher than the specified threshold. -// - HP_LOWER_EQ_THAN if the form triggers when the current HP is lower or equal than the specified threshold. -// param3: HP percentage threshold. -#define FORM_CHANGE_BATTLE_HP_PERCENT 10 - -// Form change that activates when the mon has the defined item. -// If it's on the player's side, it also requires ITEM_MEGA_RING in the user's bag and for the player to trigger it by pressing START before selecting a move. -// param1: item to hold. -#define FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM 11 - -// Form change that activates when the mon has the defined move. -// If it's on the player's side, it also requires ITEM_MEGA_RING in the user's bag and for the player to trigger it by pressing START before selecting a move. -// param1: move to have. -#define FORM_CHANGE_BATTLE_MEGA_EVOLUTION_MOVE 12 - -// Form change that activates automatically when entering battle with the specified item. -// If the item is a Red Orb, it uses the Omega Symbol for the animation and icon. Otherwise, it defaults to the Alpha symbol. -// The battle indicator icon is based on the species, with Primal Groudon's as Omega and otherwise being Alpha. -// param1: item to hold. -#define FORM_CHANGE_BATTLE_PRIMAL_REVERSION 13 - -// Form change that activates when a specific weather is set during battle. -// param1: weather to check -// param2: (optional) revert if specified ability is lost -#define FORM_CHANGE_BATTLE_WEATHER 14 - -// Form change that activates automatically when the turn ends. -// param1: ability to check. -#define FORM_CHANGE_BATTLE_TURN_END 15 - -// Form change that activates when the mon has the defined item. -// If it's on the player's side, it also requires for the player to trigger it by pressing START before selecting a move. -// param1: item to hold. -#define FORM_CHANGE_BATTLE_ULTRA_BURST 16 - -// Form change that activates when the mon Dynamaxes (TODO: with Gigantamax factor). -// - No parameters -#define FORM_CHANGE_BATTLE_GIGANTAMAX 17 - -// Form change that activates at a certain time of day in the overworld automatically. -// param1: time of day to check. -// - DAY if Form change that activates in the daytime. -// - NIGHT if Form change that activates at nighttime. -#define FORM_CHANGE_TIME_OF_DAY 18 - -// Form change that depends on a multichoice (e.g. Rotom Catalog). -// param1: multichoice list (starting at 0). -#define FORM_CHANGE_ITEM_USE_MULTICHOICE 19 - -// Form change that activates when inflicted with a specific status -// param1: status -#define FORM_CHANGE_STATUS 20 - -// Form change that activates after move is used. Currently only used for activating Gulp Missile. -#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 - -// Form change that activates before using a move. -// param1: move to check -// param2: ability to check, optional -#define FORM_CHANGE_BATTLE_BEFORE_MOVE 24 - -// Form change that activates before using a specific move category. -// param1: move category to check -// param2: ability to check, optional -#define FORM_CHANGE_BATTLE_BEFORE_MOVE_CATEGORY 25 - -// Form change that activates when overworld weather changes. -// param1: weather to check. -#define FORM_CHANGE_OVERWORLD_WEATHER 26 - -// Form change that activates when the Pokémon is deposited into the PC or Daycare. -#define FORM_CHANGE_DEPOSIT 27 +enum FormChanges +{ + FORM_CHANGE_TERMINATOR, + // Form change that activates when the specified item is given to or taken from the selected Pokémon. + // param1: item to hold. + // param2: ability to check for, optional. + FORM_CHANGE_ITEM_HOLD, + // Form change that activates when the item is used on the selected Pokémon. + // param1: item to use + // param2: time of day to check, optional. + // - DAY if Form change that activates in the daytime. + // - NIGHT if Form change that activates at nighttime. + // - 0 if irrelevant, but param3 is necessary. + // param3: illegal statuses to have, optional. + FORM_CHANGE_ITEM_USE, + // TODO: Form change that activates when the Pokémon learns or forgets the move. + // param1: move to check for + // param2: + // - WHEN_LEARNED if Form change that activates when move is forgotten + // - WHEN_FORGOTTEN if Form change that activates when move is learned + FORM_CHANGE_MOVE, + // Form change that activates when the Pokémon is withdrawn from the PC or Daycare. + // Daycare withdraw done, PC withdraw TODO. + // - No parameters. + FORM_CHANGE_WITHDRAW, + // Form change that activates when the Pokémon faints, either in battle or in the overworld by poison. + // If species is not specified and it's on the player's side, it will try to use the value + // saved in gBattleStruct->changedSpecies from a previous form change. + // - No parameters. + FORM_CHANGE_FAINT, + // Form change that activates when the Pokémon is sent out at the beginning of a battle + // param1: item to hold, optional + // param2: a move that will be replaced, optional + // param3: a new move to replace it with, optional + FORM_CHANGE_BEGIN_BATTLE, + // Form change that activates at the end of a battle. If species is not specified and it's on the player's side, it will try to use the value saved in gBattleStruct->changedSpecies from a previous form change. + // param1: item to hold, optional + // param2: a move that will be replaced, optional + // param3: a new move to replace it with, optional + FORM_CHANGE_END_BATTLE, + // Form change that activates at the end of a battle based on the terrain if it participated in the battle and hasn't fainted. Takes priority over FORM_CHANGE_END_BATTLE. + // param1: battle terrain to check. + FORM_CHANGE_END_BATTLE_TERRAIN, + // Form change that activates when the Pokémon is switched out in battle. + // param1: ability to check, optional + FORM_CHANGE_BATTLE_SWITCH, + // Form change that activates when the Pokémon's HP % passes a certain threshold. + // param1: Ability to check. + // param2: HP comparer + // - HP_HIGHER_THAN if the form triggers when the current HP is higher than the specified threshold. + // - HP_LOWER_EQ_THAN if the form triggers when the current HP is lower or equal than the specified threshold. + // param3: HP percentage threshold. + FORM_CHANGE_BATTLE_HP_PERCENT, + // Form change that activates when the mon has the defined item. + // If it's on the player's side, it also requires ITEM_MEGA_RING in the user's bag and for the player to trigger it by pressing START before selecting a move. + // param1: item to hold. + FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, + // Form change that activates when the mon has the defined move. + // If it's on the player's side, it also requires ITEM_MEGA_RING in the user's bag and for the player to trigger it by pressing START before selecting a move. + // param1: move to have. + FORM_CHANGE_BATTLE_MEGA_EVOLUTION_MOVE, + // Form change that activates automatically when entering battle with the specified item. + // If the item is a Red Orb, it uses the Omega Symbol for the animation and icon. Otherwise, it defaults to the Alpha symbol. + // The battle indicator icon is based on the species, with Primal Groudon's as Omega and otherwise being Alpha. + // param1: item to hold. + FORM_CHANGE_BATTLE_PRIMAL_REVERSION, + // Form change that activates when a specific weather is set during battle. + // param1: weather to check + // param2: (optional) revert if specified ability is lost + FORM_CHANGE_BATTLE_WEATHER, + // Form change that activates automatically when the turn ends. + // param1: ability to check. + FORM_CHANGE_BATTLE_TURN_END, + // Form change that activates when the mon has the defined item. + // If it's on the player's side, it also requires for the player to trigger it by pressing START before selecting a move. + // param1: item to hold. + FORM_CHANGE_BATTLE_ULTRA_BURST, + // Form change that activates when the mon Dynamaxes. + // - No parameters + FORM_CHANGE_BATTLE_GIGANTAMAX, + // Form change that activates at a certain time of day in the overworld automatically. + // param1: time of day to check. + // - DAY if Form change that activates in the daytime. + // - NIGHT if Form change that activates at nighttime. + FORM_CHANGE_TIME_OF_DAY, + // Form change that depends on a multichoice (e.g. Rotom Catalog). + // param1: multichoice list (starting at 0). + FORM_CHANGE_ITEM_USE_MULTICHOICE, + // Form change that activates when inflicted with a specific status + // param1: status + FORM_CHANGE_STATUS, + // Form change that activates after move is used. Currently only used for activating Gulp Missile. + FORM_CHANGE_HIT_BY_MOVE, + // Form change that activates when terastallized as as a specific type + // param1: tera type + FORM_CHANGE_BATTLE_TERASTALLIZATION, + // 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 + FORM_CHANGE_DAYS_PASSED, + // Form change that activates before using a move. + // param1: move to check + // param2: ability to check, optional + FORM_CHANGE_BATTLE_BEFORE_MOVE, + // Form change that activates before using a specific move category. + // param1: move category to check + // param2: ability to check, optional + FORM_CHANGE_BATTLE_BEFORE_MOVE_CATEGORY, + // Form change that activates when overworld weather changes. + // param1: weather to check. + FORM_CHANGE_OVERWORLD_WEATHER, + // Form change that activates when the Pokémon is deposited into the PC or Daycare. + FORM_CHANGE_DEPOSIT, +}; #endif // GUARD_CONSTANTS_FORM_CHANGE_TYPES_H diff --git a/include/constants/generational_changes.h b/include/constants/generational_changes.h index e2f40ea328..060d4167ef 100644 --- a/include/constants/generational_changes.h +++ b/include/constants/generational_changes.h @@ -14,6 +14,9 @@ enum GenConfigTag GEN_CONFIG_TELEPORT_BEHAVIOR, GEN_CONFIG_ABILITY_WEATHER, GEN_CONFIG_MOODY_STATS, + GEN_CONFIG_BATTLE_BOND, + GEN_CONFIG_ATE_MULTIPLIER, + GEN_CONFIG_FELL_STINGER_STAT_RAISE, GEN_CONFIG_COUNT }; diff --git a/include/constants/global.h b/include/constants/global.h index 8ca3861709..4698dbc3b4 100644 --- a/include/constants/global.h +++ b/include/constants/global.h @@ -11,6 +11,7 @@ #include "config/dexnav.h" #include "config/summary_screen.h" #include "config/ai.h" +#include "config/follower_npc.h" // Invalid Versions show as "----------" in Gen 4 and Gen 5's summary screen. // In Gens 6 and 7, invalid versions instead show "a distant land" in the summary screen. diff --git a/include/constants/hold_effects.h b/include/constants/hold_effects.h index c85ec82302..c7ed811601 100644 --- a/include/constants/hold_effects.h +++ b/include/constants/hold_effects.h @@ -26,7 +26,7 @@ enum ItemHoldEffect HOLD_EFFECT_CRITICAL_UP, HOLD_EFFECT_RANDOM_STAT_UP, HOLD_EFFECT_EVASION_UP, - HOLD_EFFECT_RESTORE_STATS, + HOLD_EFFECT_WHITE_HERB, HOLD_EFFECT_MACHO_BRACE, HOLD_EFFECT_EXP_SHARE, HOLD_EFFECT_QUICK_CLAW, @@ -34,7 +34,6 @@ enum ItemHoldEffect HOLD_EFFECT_MENTAL_HERB, HOLD_EFFECT_CHOICE_BAND, HOLD_EFFECT_FLINCH, - HOLD_EFFECT_BUG_POWER, HOLD_EFFECT_DOUBLE_PRIZE, HOLD_EFFECT_REPEL, HOLD_EFFECT_SOUL_DEW, @@ -45,25 +44,10 @@ enum ItemHoldEffect HOLD_EFFECT_FOCUS_BAND, HOLD_EFFECT_LUCKY_EGG, HOLD_EFFECT_SCOPE_LENS, - HOLD_EFFECT_STEEL_POWER, HOLD_EFFECT_LEFTOVERS, HOLD_EFFECT_DRAGON_SCALE, HOLD_EFFECT_LIGHT_BALL, - HOLD_EFFECT_GROUND_POWER, - HOLD_EFFECT_ROCK_POWER, - HOLD_EFFECT_GRASS_POWER, - HOLD_EFFECT_DARK_POWER, - HOLD_EFFECT_FIGHTING_POWER, - HOLD_EFFECT_ELECTRIC_POWER, - HOLD_EFFECT_WATER_POWER, - HOLD_EFFECT_FLYING_POWER, - HOLD_EFFECT_POISON_POWER, - HOLD_EFFECT_ICE_POWER, - HOLD_EFFECT_GHOST_POWER, - HOLD_EFFECT_PSYCHIC_POWER, - HOLD_EFFECT_FIRE_POWER, - HOLD_EFFECT_DRAGON_POWER, - HOLD_EFFECT_NORMAL_POWER, + HOLD_EFFECT_TYPE_POWER, HOLD_EFFECT_UPGRADE, HOLD_EFFECT_SHELL_BELL, HOLD_EFFECT_LUCKY_PUNCH, @@ -127,7 +111,6 @@ enum ItemHoldEffect HOLD_EFFECT_ABSORB_BULB, HOLD_EFFECT_CELL_BATTERY, // Gen6 hold effects - HOLD_EFFECT_FAIRY_POWER, HOLD_EFFECT_MEGA_STONE, HOLD_EFFECT_SAFETY_GOGGLES, HOLD_EFFECT_LUMINOUS_MOSS, diff --git a/include/constants/party_menu.h b/include/constants/party_menu.h index 76360d8ee8..3a7ad372ff 100644 --- a/include/constants/party_menu.h +++ b/include/constants/party_menu.h @@ -83,6 +83,7 @@ #define PARTY_MSG_CHOOSE_SECOND_FUSION 28 #define PARTY_MSG_NO_POKEMON 29 #define PARTY_MSG_CHOOSE_MON_FOR_BOX 30 +#define PARTY_MSG_MOVE_ITEM_WHERE 31 #define PARTY_MSG_NONE 127 diff --git a/include/constants/pokemon.h b/include/constants/pokemon.h index 7c70129609..659193861c 100644 --- a/include/constants/pokemon.h +++ b/include/constants/pokemon.h @@ -246,65 +246,68 @@ #define EVOLUTIONS_END 0xFFFF // Not an actual evolution, used to mark the end of an evolution array. +enum EvolutionConditions { + // Gen 2 + IF_GENDER, // The Pokémon is of specific gender. + IF_TIME, // It is currently the specific time of day. + IF_NOT_TIME, // It is NOT currently the specific time of day. + IF_MIN_FRIENDSHIP, // The Pokémon has the defined amount of Friendship. + IF_ATK_GT_DEF, // The Pokémon's Attack is greater than its Defense stat. + IF_ATK_EQ_DEF, // The Pokémon's Attack is equal to its Defense stat. + IF_ATK_LT_DEF, // The Pokémon's Attack is lower than its Defense stat. + IF_HOLD_ITEM, // The Pokémon is holding a specific item. + // Gen 3 + IF_PID_UPPER_MODULO_10_GT, // The Pokémon's upper personality value's modulo by 10 is greater than the defined value. + IF_PID_UPPER_MODULO_10_EQ, // The Pokémon's upper personality value's modulo by 10 is equal to the defined value. + IF_PID_UPPER_MODULO_10_LT, // The Pokémon's upper personality value's modulo by 10 is lower or equal than the defined value. + IF_MIN_BEAUTY, // The Pokémon has the defined amount of Beauty. + IF_MIN_COOLNESS, // The Pokémon has the defined amount of Coolness. + IF_MIN_SMARTNESS, // The Pokémon has the defined amount of Smartness. (aka Cleverness in Gen6+) + IF_MIN_TOUGHNESS, // The Pokémon has the defined amount of Toughness. + IF_MIN_CUTENESS, // The Pokémon has the defined amount of Cuteness. + // Gen 4 + IF_SPECIES_IN_PARTY, // The party contains a Pokémon of the specified species. + IF_IN_MAP, // The player is currently in the specific map. + IF_IN_MAPSEC, // The player is currently in the specific map sector. + IF_KNOWS_MOVE, // The Pokémon knows specific move. + // Gen 5 + IF_TRADE_PARTNER_SPECIES, // The Pokémon is traded for a specific species. + // Gen 6 + IF_TYPE_IN_PARTY, // The party contains a Pokémon of the specified type. + IF_WEATHER, // It is currently the specific weather in the current map. + IF_KNOWS_MOVE_TYPE, // The Pokémon knows a move with a specific type. + // Gen 8 + IF_NATURE, // The Pokémon has a specific nature. + IF_AMPED_NATURE, // The Pokémon has one of the following natures: Hardy, Brave, Adamant, Naughty, Docile, Impish, Lax, Hasty, Jolly, Naive, Rash, Sassy, or Quirky. + IF_LOW_KEY_NATURE, // The Pokémon has one of the following natures: Lonely, Bold, Relaxed, Timid, Serious, Modest, Mild, Quiet, Bashful, Calm, Gentle, or Careful. + IF_RECOIL_DAMAGE_GE, // The Pokémon suffered at least certain amount of non-fainting recoil damage. + IF_CURRENT_DAMAGE_GE, // The Pokémon has the specified difference of HP from its Max HP. + IF_CRITICAL_HITS_GE, // The Pokémon performed the specified number of critical hits in one battle at least. + IF_USED_MOVE_X_TIMES, // The Pokémon has used a move for at least X amount of times. + // Gen 9 + IF_DEFEAT_X_WITH_ITEMS, // The Pokémon defeated X amount of Pokémon of the specified species that are holding the specified item. + IF_PID_MODULO_100_GT, // The Pokémon's personality value's modulo by 100 is greater than the defined value. + IF_PID_MODULO_100_EQ, // The Pokémon's personality value's modulo by 100 is equal than the defined value. + IF_PID_MODULO_100_LT, // The Pokémon's personality value's modulo by 100 is lower than the defined value. + IF_MIN_OVERWORLD_STEPS, // The Player has taken a specific amount of steps in the overworld with the Pokémon following them or in the first slot of the party. + IF_BAG_ITEM_COUNT, // The Player has the specific amount of an item in the bag. It then removes those items. + CONDITIONS_END +}; + enum EvolutionMethods { - EVO_NONE, // Not an actual evolution, used to generate offspring that can't evolve into the specified species, like regional forms. - EVO_FRIENDSHIP, // Pokémon levels up with friendship ≥ 220 - EVO_FRIENDSHIP_DAY, // Pokémon levels up during the day with friendship ≥ 220 - EVO_FRIENDSHIP_NIGHT, // Pokémon levels up at night with friendship ≥ 220 - EVO_LEVEL, // Pokémon reaches the specified level - EVO_TRADE, // Pokémon is traded - EVO_TRADE_ITEM, // Pokémon is traded while it's holding the specified item - EVO_ITEM, // specified item is used on Pokémon - EVO_LEVEL_ATK_GT_DEF, // Pokémon reaches the specified level with attack > defense - EVO_LEVEL_ATK_EQ_DEF, // Pokémon reaches the specified level with attack = defense - EVO_LEVEL_ATK_LT_DEF, // Pokémon reaches the specified level with attack < defense - EVO_LEVEL_SILCOON, // Pokémon reaches the specified level with a Silcoon personality value - EVO_LEVEL_CASCOON, // Pokémon reaches the specified level with a Cascoon personality value - EVO_LEVEL_NINJASK, // Pokémon reaches the specified level (special value for Ninjask) - EVO_LEVEL_SHEDINJA, // Pokémon reaches the specified level (special value for Shedinja) - EVO_BEAUTY, // Pokémon levels up with beauty ≥ specified value - EVO_LEVEL_FEMALE, // Pokémon reaches the specified level, is female - EVO_LEVEL_MALE, // Pokémon reaches the specified level, is male - EVO_LEVEL_NIGHT, // Pokémon reaches the specified level, is night - EVO_LEVEL_DAY, // Pokémon reaches the specified level, is day - EVO_LEVEL_DUSK, // Pokémon reaches the specified level, is dusk (5-6 P.M) - EVO_ITEM_HOLD_DAY, // Pokémon levels up, holds specified item at day - EVO_ITEM_HOLD_NIGHT, // Pokémon levels up, holds specified item at night - EVO_MOVE, // Pokémon levels up, knows specified move - EVO_FRIENDSHIP_MOVE_TYPE, // Pokémon levels up with friendship ≥ 220, knows move with specified type - EVO_MAPSEC, // Pokémon levels up on specified mapsec - EVO_ITEM_MALE, // specified item is used on a male Pokémon - EVO_ITEM_FEMALE, // specified item is used on a female Pokémon - EVO_LEVEL_RAIN, // Pokémon reaches the specified level during rain in the overworld - EVO_SPECIFIC_MON_IN_PARTY, // Pokémon levels up with a specified Pokémon in party - EVO_LEVEL_DARK_TYPE_MON_IN_PARTY, // Pokémon reaches the specified level with a Dark Type Pokémon in party - EVO_TRADE_SPECIFIC_MON, // Pokémon is traded for a specified Pokémon - EVO_SPECIFIC_MAP, // Pokémon levels up on specified map - EVO_LEVEL_NATURE_AMPED, // Pokémon reaches the specified level, it has a Hardy, Brave, Adamant, Naughty, Docile, Impish, Lax, Hasty, Jolly, Naive, Rash, Sassy, or Quirky nature. - EVO_LEVEL_NATURE_LOW_KEY, // Pokémon reaches the specified level, it has a Lonely, Bold, Relaxed, Timid, Serious, Modest, Mild, Quiet, Bashful, Calm, Gentle, or Careful nature. - EVO_CRITICAL_HITS, // Pokémon performs specified number of critical hits in one battle - EVO_SCRIPT_TRIGGER_DMG, // Pokémon has specified HP below max, then player interacts with script calling "tryspecialevo EVO_SCRIPT_TRIGGER_DMG" - EVO_DARK_SCROLL, // interacts with Scroll of Darkness - EVO_WATER_SCROLL, // interacts with Scroll of Waters - EVO_ITEM_NIGHT, // specified item is used on Pokémon, is night - EVO_ITEM_DAY, // specified item is used on Pokémon, is day - EVO_ITEM_HOLD, // Pokémon levels up, holds specified item - EVO_LEVEL_FOG, // Pokémon reaches the specified level during fog in the overworld - EVO_MOVE_TWO_SEGMENT, // Pokémon levels up, knows specified move, has a personality value with a modulus of 0 - EVO_MOVE_THREE_SEGMENT, // Pokémon levels up, knows specified move, has a personality value with a modulus of 1-99 - EVO_LEVEL_FAMILY_OF_THREE, // Pokémon reaches the specified level in battle with a personality value with a modulus of 0 - EVO_LEVEL_FAMILY_OF_FOUR, // Pokémon reaches the specified level in battle with a personality value with a modulus of 1-99 - EVO_USE_MOVE_TWENTY_TIMES, // Pokémon levels up after having used a move for at least 20 times - EVO_RECOIL_DAMAGE_MALE, // Pokémon levels up after having suffered specified amount of non-fainting recoil damage as a male - EVO_RECOIL_DAMAGE_FEMALE, // Pokémon levels up after having suffered specified amount of non-fainting recoil damage as a female - EVO_ITEM_COUNT_999, // Pokémon levels up after trainer has collected 999 of a specific item - EVO_DEFEAT_THREE_WITH_ITEM, // Pokémon levels up after having defeat 3 Pokémon of the same species holding the specified item - EVO_OVERWORLD_STEPS, // Pokémon levels up after having taken a specific amount of steps in the overworld + EVO_NONE, // Not an actual evolution, used to generate offspring that can't evolve into the specified species, like regional forms. + EVO_LEVEL, // Pokémon reaches the specified level + EVO_TRADE, // Pokémon is traded + EVO_ITEM, // specified item is used on Pokémon + EVO_SPLIT_FROM_EVO, // A clone is generated and evolved when another evolution happens + EVO_SCRIPT_TRIGGER, // Player interacts with an overworld trigger + EVO_LEVEL_BATTLE_ONLY, // Pokémon reaches the specified level, in battle only + EVO_BATTLE_END, // Battle ends, doesn't need to level up + EVO_SPIN // The player spins in the overworld }; enum EvolutionMode { EVO_MODE_NORMAL, - EVO_MODE_CANT_STOP, EVO_MODE_TRADE, EVO_MODE_ITEM_USE, EVO_MODE_ITEM_CHECK, // If an Everstone is being held, still want to show that the stone *could* be used on that Pokémon to evolve @@ -313,6 +316,27 @@ enum EvolutionMode { EVO_MODE_BATTLE_ONLY, // This mode is only used in battles to support Tandemaus' unique requirement }; +// used to determine whether an evolution is happening or not, so we know if items should be removed +enum EvoState { + CHECK_EVO, + DO_EVO, +}; + +enum PokemonJumpType { + PKMN_JUMP_TYPE_NONE, // Not allowed in Pokémon Jump + PKMN_JUMP_TYPE_NORMAL, + PKMN_JUMP_TYPE_FAST, + PKMN_JUMP_TYPE_SLOW, +}; + +enum EvoSpinDirections { + SPIN_CW_SHORT, // Player spins clockwise + SPIN_CW_LONG, // Player spins clockwise + SPIN_CCW_SHORT, // Player spins counter-clockwise + SPIN_CCW_LONG, // Player spins counter-clockwise + SPIN_EITHER, // Player spins either clockwise or counter-clockwise +}; + #define MON_PIC_WIDTH 64 #define MON_PIC_HEIGHT 64 #define MON_PIC_SIZE (MON_PIC_WIDTH * MON_PIC_HEIGHT / 2) diff --git a/include/constants/rgb.h b/include/constants/rgb.h index f73ab53b4b..9d50e8cd8b 100644 --- a/include/constants/rgb.h +++ b/include/constants/rgb.h @@ -15,6 +15,7 @@ #define RGB_BLACK RGB(0, 0, 0) #define RGB_WHITE RGB(31, 31, 31) +#define RGB_GRAY RGB(15, 15, 15) #define RGB_RED RGB(31, 0, 0) #define RGB_GREEN RGB(0, 31, 0) #define RGB_BLUE RGB(0, 0, 31) diff --git a/include/constants/rtc.h b/include/constants/rtc.h new file mode 100644 index 0000000000..65ee9c35ed --- /dev/null +++ b/include/constants/rtc.h @@ -0,0 +1,96 @@ +#ifndef GUARD_CONSTANTS_RTC_H +#define GUARD_CONSTANTS_RTC_H + +#define RTC_INIT_ERROR 0x0001 +#define RTC_INIT_WARNING 0x0002 + +#define RTC_ERR_12HOUR_CLOCK 0x0010 +#define RTC_ERR_POWER_FAILURE 0x0020 +#define RTC_ERR_INVALID_YEAR 0x0040 +#define RTC_ERR_INVALID_MONTH 0x0080 +#define RTC_ERR_INVALID_DAY 0x0100 +#define RTC_ERR_INVALID_HOUR 0x0200 +#define RTC_ERR_INVALID_MINUTE 0x0400 +#define RTC_ERR_INVALID_SECOND 0x0800 + +#define RTC_ERR_FLAG_MASK 0x0FF0 + +//Morning and evening don't exist in Gen 3 +#if OW_TIMES_OF_DAY == GEN_3 + #define MORNING_HOUR_BEGIN 0 + #define MORNING_HOUR_END 0 + + #define DAY_HOUR_BEGIN 12 + #define DAY_HOUR_END HOURS_PER_DAY + + #define EVENING_HOUR_BEGIN 0 + #define EVENING_HOUR_END 0 + + #define NIGHT_HOUR_BEGIN 0 + #define NIGHT_HOUR_END 12 +//Evening doesn't exist in Gen 4 +#elif OW_TIMES_OF_DAY == GEN_4 + #define MORNING_HOUR_BEGIN 4 + #define MORNING_HOUR_END 10 + + #define DAY_HOUR_BEGIN 10 + #define DAY_HOUR_END 20 + + #define EVENING_HOUR_BEGIN 0 + #define EVENING_HOUR_END 0 + + #define NIGHT_HOUR_BEGIN 20 + #define NIGHT_HOUR_END 4 +//Gen 5 currently not included as the seasons change the times of day +#elif OW_TIMES_OF_DAY <= GEN_6 + #define MORNING_HOUR_BEGIN 4 + #define MORNING_HOUR_END 11 + + #define DAY_HOUR_BEGIN 11 + #define DAY_HOUR_END 18 + + #define EVENING_HOUR_BEGIN 18 + #define EVENING_HOUR_END 21 + + #define NIGHT_HOUR_BEGIN 21 + #define NIGHT_HOUR_END 4 +//These are the Sun/Ultra Sun times +#elif OW_TIMES_OF_DAY == GEN_7 + #define MORNING_HOUR_BEGIN 6 + #define MORNING_HOUR_END 10 + + #define DAY_HOUR_BEGIN 10 + #define DAY_HOUR_END 17 + + #define EVENING_HOUR_BEGIN 17 + #define EVENING_HOUR_END 18 + + #define NIGHT_HOUR_BEGIN 18 + #define NIGHT_HOUR_END 6 +#elif OW_TIMES_OF_DAY >= GEN_8 + #define MORNING_HOUR_BEGIN 6 + #define MORNING_HOUR_END 10 + + #define DAY_HOUR_BEGIN 10 + #define DAY_HOUR_END 19 + + #define EVENING_HOUR_BEGIN 19 + #define EVENING_HOUR_END 20 + + #define NIGHT_HOUR_BEGIN 20 + #define NIGHT_HOUR_END 6 +#endif + +// TIMES_OF_DAY_COUNT must be last +enum TimeOfDay +{ + TIME_MORNING, + TIME_DAY, + TIME_EVENING, + TIME_NIGHT, + TIMES_OF_DAY_COUNT, +}; + +#define TIME_OF_DAY_DEFAULT 0 + +#endif // GUARD_CONSTANTS_RTC_H diff --git a/include/constants/siirtc.h b/include/constants/siirtc.h new file mode 100644 index 0000000000..b806526de9 --- /dev/null +++ b/include/constants/siirtc.h @@ -0,0 +1,43 @@ +#ifndef GUARD_CONSTANTS_SIIRTC_H +#define GUARD_CONSTANTS_SIIRTC_H + +#define SIIRTCINFO_INTFE 0x01 // frequency interrupt enable +#define SIIRTCINFO_INTME 0x02 // per-minute interrupt enable +#define SIIRTCINFO_INTAE 0x04 // alarm interrupt enable +#define SIIRTCINFO_24HOUR 0x40 // 0: 12-hour mode, 1: 24-hour mode +#define SIIRTCINFO_POWER 0x80 // power on or power failure occurred + +#define HOURS_PER_DAY 24 +#define MINUTES_PER_HOUR 60 +#define SECONDS_PER_MINUTE 60 + +enum Weekday +{ + WEEKDAY_SUN, + WEEKDAY_MON, + WEEKDAY_TUE, + WEEKDAY_WED, + WEEKDAY_THU, + WEEKDAY_FRI, + WEEKDAY_SAT, + WEEKDAY_COUNT, +}; + +enum Month +{ + MONTH_JAN = 1, + MONTH_FEB, + MONTH_MAR, + MONTH_APR, + MONTH_MAY, + MONTH_JUN, + MONTH_JUL, + MONTH_AUG, + MONTH_SEP, + MONTH_OCT, + MONTH_NOV, + MONTH_DEC, + MONTH_COUNT = MONTH_DEC, +}; + +#endif // GUARD_CONSTANTS_SIIRTC_H diff --git a/include/constants/weather.h b/include/constants/weather.h index 32dc97a1a2..f2e41b3ab7 100644 --- a/include/constants/weather.h +++ b/include/constants/weather.h @@ -19,7 +19,8 @@ #define WEATHER_ABNORMAL 15 // The alternating weather during Groudon/Kyogre conflict #define WEATHER_ROUTE119_CYCLE 20 #define WEATHER_ROUTE123_CYCLE 21 -#define WEATHER_COUNT 22 +#define WEATHER_FOG 22 // Aggregate of WEATHER_FOG_HORIZONTAL and WEATHER_FOG_DIAGONAL +#define WEATHER_COUNT 23 // These are used in maps' coord_weather_event entries. // They are not a one-to-one mapping with the engine's diff --git a/include/data.h b/include/data.h index 8b1e9c22d1..3a697d573c 100644 --- a/include/data.h +++ b/include/data.h @@ -33,7 +33,7 @@ struct TrainerSprite { u8 y_offset; struct CompressedSpriteSheet frontPic; - struct CompressedSpritePalette palette; + struct SpritePalette palette; const union AnimCmd *const *const animation; const struct Coords16 mugshotCoords; s16 mugshotRotation; @@ -43,7 +43,7 @@ struct TrainerBacksprite { struct MonCoords coordinates; struct CompressedSpriteSheet backPic; - struct CompressedSpritePalette palette; + struct SpritePalette palette; const union AnimCmd *const *const animation; }; @@ -81,17 +81,22 @@ struct TrainerMon #define TRAINER_PARTY(partyArray) partyArray, .partySize = ARRAY_COUNT(partyArray) +enum TrainerBattleType +{ + TRAINER_BATTLE_TYPE_SINGLES, + TRAINER_BATTLE_TYPE_DOUBLES, +}; + struct Trainer { - /*0x00*/ u32 aiFlags; + /*0x00*/ u64 aiFlags; /*0x04*/ const struct TrainerMon *party; /*0x08*/ u16 items[MAX_TRAINER_ITEMS]; /*0x10*/ u8 trainerClass; /*0x11*/ u8 encounterMusic_gender; // last bit is gender /*0x12*/ u8 trainerPic; /*0x13*/ u8 trainerName[TRAINER_NAME_LENGTH + 1]; - /*0x1E*/ bool8 doubleBattle:1; - bool8 padding:1; + /*0x1E*/ u8 battleType:2; u8 startingStatus:6; // this trainer starts a battle with a given status. see include/constants/battle.h for values /*0x1F*/ u8 mugshotColor; /*0x20*/ u8 partySize; @@ -121,7 +126,7 @@ struct TypeInfo u16 isSpecialCaseType:1; u16 isHiddenPowerType:1; // Changing this for any type will change the distribution of all Hidden Power types from vanilla. u16 padding:11; - const u32 *const paletteTMHM; + const u16 *const paletteTMHM; //u16 enhanceItem; //u16 berry; //u16 gem; @@ -171,6 +176,7 @@ extern const union AnimCmd *const gAnims_MonPic[]; extern const union AnimCmd *const gAnims_Trainer[]; extern const struct TrainerSprite gTrainerSprites[]; extern const struct TrainerBacksprite gTrainerBacksprites[]; +extern const u16 gTrainerPicToTrainerBackPic[]; extern const struct Trainer gTrainers[DIFFICULTY_COUNT][TRAINERS_COUNT]; extern const struct Trainer gBattlePartners[DIFFICULTY_COUNT][PARTNER_COUNT]; @@ -239,6 +245,10 @@ static inline const u8 GetTrainerPicFromId(u16 trainerId) { u32 sanitizedTrainerId = SanitizeTrainerId(trainerId); enum DifficultyLevel difficulty = GetTrainerDifficultyLevel(sanitizedTrainerId); + enum DifficultyLevel partnerDifficulty = GetBattlePartnerDifficultyLevel(trainerId); + + if (trainerId > TRAINER_PARTNER(PARTNER_NONE)) + return gBattlePartners[partnerDifficulty][trainerId - TRAINER_PARTNER(PARTNER_NONE)].trainerPic; return gTrainers[difficulty][sanitizedTrainerId].trainerPic; } @@ -248,12 +258,12 @@ static inline const u8 GetTrainerStartingStatusFromId(u16 trainerId) return gTrainers[GetCurrentDifficultyLevel()][SanitizeTrainerId(trainerId)].startingStatus; } -static inline const bool32 IsTrainerDoubleBattle(u16 trainerId) +static inline const enum TrainerBattleType GetTrainerBattleType(u16 trainerId) { u32 sanitizedTrainerId = SanitizeTrainerId(trainerId); enum DifficultyLevel difficulty = GetTrainerDifficultyLevel(sanitizedTrainerId); - return gTrainers[difficulty][sanitizedTrainerId].doubleBattle; + return gTrainers[difficulty][sanitizedTrainerId].battleType; } static inline const u8 GetTrainerPartySizeFromId(u16 trainerId) @@ -290,7 +300,7 @@ static inline const struct TrainerMon *GetTrainerPartyFromId(u16 trainerId) return gTrainers[difficulty][sanitizedTrainerId].party; } -static inline const bool32 GetTrainerAIFlagsFromId(u16 trainerId) +static inline const u64 GetTrainerAIFlagsFromId(u16 trainerId) { u32 sanitizedTrainerId = SanitizeTrainerId(trainerId); enum DifficultyLevel difficulty = GetTrainerDifficultyLevel(sanitizedTrainerId); diff --git a/include/datetime.h b/include/datetime.h new file mode 100644 index 0000000000..979fc47f6f --- /dev/null +++ b/include/datetime.h @@ -0,0 +1,28 @@ +#ifndef GUARD_DATETIME_H +#define GUARD_DATETIME_H + +#include "global.h" +#include "siirtc.h" + +struct DateTime +{ + u16 year; + enum Month month; + u8 day; + enum Weekday dayOfWeek; + u8 hour; + u8 minute; + u8 second; +}; + +extern const struct DateTime gGen3Epoch; + +void ConvertTimeToDateTime(struct DateTime *result, struct Time *timeSinceEpoch); +void DateTime_AddDays(struct DateTime *dateTime, u32 days); +void DateTime_AddHours(struct DateTime *dateTime, u32 hours); +void DateTime_AddMinutes(struct DateTime *dateTime, u32 minutes); +void DateTime_AddSeconds(struct DateTime *dateTime, u32 seconds); +void ConvertDateTimeToRtc(struct SiiRtcInfo *result, struct DateTime *dateTime); +void ConvertRtcToDateTime(struct DateTime *result, struct SiiRtcInfo *rtc); + +#endif // GUARD_DATETIME_H diff --git a/include/debug.h b/include/debug.h index e25392091b..1a48e9f6cd 100644 --- a/include/debug.h +++ b/include/debug.h @@ -3,8 +3,9 @@ void Debug_ShowMainMenu(void); extern const u8 Debug_FlagsAndVarNotSetBattleConfigMessage[]; +const u8 *GetWeatherName(u32 weatherId); extern EWRAM_DATA bool8 gIsDebugBattle; -extern EWRAM_DATA u32 gDebugAIFlags; +extern EWRAM_DATA u64 gDebugAIFlags; #endif // GUARD_DEBUG_H diff --git a/include/decompress.h b/include/decompress.h index 1c6ab7ee24..cc654a49ce 100644 --- a/include/decompress.h +++ b/include/decompress.h @@ -15,11 +15,6 @@ u32 LoadCompressedSpriteSheetByTemplate(const struct SpriteTemplate *template, s u32 LoadCompressedSpriteSheetOverrideBuffer(const struct CompressedSpriteSheet *src, void *buffer); bool8 LoadCompressedSpriteSheetUsingHeap(const struct CompressedSpriteSheet *src); -u32 LoadCompressedSpritePalette(const struct CompressedSpritePalette *src); -u32 LoadCompressedSpritePaletteWithTag(const u32 *pal, u16 tag); -void LoadCompressedSpritePaletteOverrideBuffer(const struct CompressedSpritePalette *src, void *buffer); -bool8 LoadCompressedSpritePaletteUsingHeap(const struct CompressedSpritePalette *src); - void DecompressPicFromTable(const struct CompressedSpriteSheet *src, void *buffer); void HandleLoadSpecialPokePic(bool32 isFrontPic, void *dest, s32 species, u32 personality); diff --git a/include/dexnav.h b/include/dexnav.h index 7720104c54..b1956349b3 100644 --- a/include/dexnav.h +++ b/include/dexnav.h @@ -4,11 +4,14 @@ #include "config/dexnav.h" // GUI Info -#define ROW_WATER 0 -#define ROW_LAND_TOP 1 -#define ROW_LAND_BOT 2 -#define ROW_HIDDEN 3 -#define ROWS_COUNT 4 +enum RowGUIInfo +{ + ROW_WATER, + ROW_LAND_TOP, + ROW_LAND_BOT, + ROW_HIDDEN, + ROWS_COUNT +}; #define ROW_WATER_ICON_X 30 #define ROW_WATER_ICON_Y 35 @@ -20,9 +23,12 @@ #define ROW_HIDDEN_ICON_X 52 #define ROW_HIDDEN_ICON_Y 138 -#define ENCOUNTER_TYPE_LAND 0 -#define ENCOUNTER_TYPE_WATER 1 -#define ENCOUNTER_TYPE_HIDDEN 2 // Get from species +enum EncounterType +{ + ENCOUNTER_TYPE_LAND, + ENCOUNTER_TYPE_WATER, + ENCOUNTER_TYPE_HIDDEN // Get from species +}; #define COL_WATER_COUNT 5 #define COL_LAND_COUNT 6 diff --git a/include/event_object_movement.h b/include/event_object_movement.h index 6dfcab82f5..51cc2c991c 100644 --- a/include/event_object_movement.h +++ b/include/event_object_movement.h @@ -128,6 +128,7 @@ u8 GetObjectEventIdByXY(s16 x, s16 y); void SetObjectEventDirection(struct ObjectEvent *objectEvent, u8 direction); u8 GetFirstInactiveObjectEventId(void); u8 GetObjectEventIdByLocalId(u8); +void RemoveObjectEvent(struct ObjectEvent *objectEvent); void RemoveObjectEventByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup); void LoadSpecialObjectReflectionPalette(u16 tag, u8 slot); void TryMoveObjectEventToMapCoords(u8 localId, u8 mapNum, u8 mapGroup, s16 x, s16 y); @@ -145,13 +146,17 @@ u16 GetOverworldWeatherSpecies(u16 species); void UpdateFollowingPokemon(void); void RemoveFollowingPokemon(void); struct ObjectEvent *GetFollowerObject(void); +u8 GetDirectionToFace(s16, s16, s16, s16); +void UpdateLightSprite(struct Sprite *); void TrySpawnObjectEvents(s16 cameraX, s16 cameraY); +u8 CreateObjectGraphicsSpriteWithTag(u16 graphicsId, void (*callback)(struct Sprite *), s16 x, s16 y, u8 subpriority, u16 paletteTag); u8 CreateObjectGraphicsSprite(u16 graphicsId, void (*callback)(struct Sprite *), s16 x, s16 y, u8 subpriority); u8 TrySpawnObjectEvent(u8 localId, u8 mapNum, u8 mapGroup); u8 SpawnSpecialObjectEventParameterized(u16 graphicsId, u8 movementBehavior, u8 localId, s16 x, s16 y, u8 elevation); u8 SpawnSpecialObjectEvent(struct ObjectEventTemplate *objectEventTemplate); void SetSpritePosToMapCoords(s16 mapX, s16 mapY, s16 *destX, s16 *destY); void CameraObjectReset(void); +u8 LoadObjectEventPalette(u16); u8 UpdateSpritePaletteByTemplate(const struct SpriteTemplate *spriteTemplate, struct Sprite *sprite); void ObjectEventSetGraphicsId(struct ObjectEvent *objectEvent, u16 graphicsId); void ObjectEventTurn(struct ObjectEvent *objectEvent, u8 direction); @@ -249,6 +254,11 @@ void CameraObjectFreeze(void); u8 GetObjectEventBerryTreeId(u8 objectEventId); void SetBerryTreeJustPicked(u8 mapId, u8 mapNumber, u8 mapGroup); bool8 IsBerryTreeSparkling(u8 localId, u8 mapNum, u8 mapGroup); +const struct ObjectEventTemplate *GetObjectEventTemplateByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup); +u8 TrySpawnObjectEventTemplate(const struct ObjectEventTemplate *objectEventTemplate, u8 mapNum, u8 mapGroup, s16 cameraX, s16 cameraY); +bool8 GetFollowerInfo(u32 *species, bool32 *shiny, bool32 *female); +const struct ObjectEventGraphicsInfo *SpeciesToGraphicsInfo(u32 species, bool32 shiny, bool32 female); +u16 GetObjectEventFlagIdByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup); void MovementType_None(struct Sprite *sprite); void MovementType_LookAround(struct Sprite *sprite); @@ -307,7 +317,6 @@ void MovementType_Invisible(struct Sprite *sprite); void MovementType_WalkSlowlyInPlace(struct Sprite *sprite); void MovementType_FollowPlayer(struct Sprite *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); @@ -501,5 +510,6 @@ u8 GetSidewaysStairsCollision(struct ObjectEvent *objectEvent, u8 dir, u8 curren bool8 MovementAction_EmoteX_Step0(struct ObjectEvent *, struct Sprite *); bool8 MovementAction_EmoteDoubleExclamationMark_Step0(struct ObjectEvent *, struct Sprite *); +bool8 PlayerIsUnderWaterfall(struct ObjectEvent *objectEvent); #endif //GUARD_EVENT_OBJECT_MOVEMENT_H diff --git a/include/event_scripts.h b/include/event_scripts.h index 772a7a955d..fa2df54740 100644 --- a/include/event_scripts.h +++ b/include/event_scripts.h @@ -407,6 +407,7 @@ extern const u8 EventScript_UseCut[]; extern const u8 EventScript_UseRockSmash[]; extern const u8 EventScript_UseDig[]; extern const u8 EventScript_UseCutGrass[]; +extern const u8 EventScript_UseDefog[]; //player pc extern const u8 LittlerootTown_BrendansHouse_2F_EventScript_TurnOffPlayerPC[]; @@ -652,6 +653,27 @@ extern const u8 EventScript_VsSeekerChargingDone[]; extern const u8 Common_Movement_FollowerSafeStart[]; extern const u8 Common_Movement_FollowerSafeEnd[]; +extern const u8 Common_Movement_WalkUpSlow[]; +extern const u8 Common_Movement_WalkDownSlow[]; +extern const u8 Common_Movement_WalkRightSlow[]; +extern const u8 Common_Movement_WalkLeftSlow[]; +extern const u8 Common_Movement_WalkUp[]; +extern const u8 Common_Movement_WalkDown[]; +extern const u8 Common_Movement_WalkRight[]; +extern const u8 Common_Movement_WalkLeft[]; +extern const u8 Common_Movement_WalkUpFast[]; +extern const u8 Common_Movement_WalkDownFast[]; +extern const u8 Common_Movement_WalkRightFast[]; +extern const u8 Common_Movement_WalkLeftFast[]; +extern const u8 Common_Movement_WalkUpFaster[]; +extern const u8 Common_Movement_WalkDownFaster[]; +extern const u8 Common_Movement_WalkRightFaster[]; +extern const u8 Common_Movement_WalkLeftFaster[]; +extern const u8 Common_Movement_FaceUp[]; +extern const u8 Common_Movement_FaceDown[]; +extern const u8 Common_Movement_FaceRight[]; +extern const u8 Common_Movement_FaceLeft[]; + extern const u8 EventScript_CancelMessageBox[]; extern const u8 Common_EventScript_ShowPokemonCenterSign[]; extern const u8 Common_EventScript_ShowPokemartSign[]; diff --git a/include/fake_rtc.h b/include/fake_rtc.h index d74849614e..34c29d7adf 100644 --- a/include/fake_rtc.h +++ b/include/fake_rtc.h @@ -3,11 +3,16 @@ #include "siirtc.h" -struct Time* FakeRtc_GetCurrentTime(void); +void FakeRtc_Reset(void); +struct SiiRtcInfo* 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_AdvanceTimeBy(u32 days, u32 hours, u32 minutes, u32 seconds); +void FakeRtc_ManuallySetTime(u32 day, u32 hour, u32 minute, u32 second); +void FakeRtc_ForwardTimeTo(u32 hour, u32 minute, u32 second); void FakeRtc_TickTimeForward(void); u32 FakeRtc_GetSecondsRatio(void); +void Script_PauseFakeRtc(void); +void Script_ResumeFakeRtc(void); +void Script_ToggleFakeRtc(void); #endif // GUARD_FAKE_RTC_UTIL_H diff --git a/include/field_control_avatar.h b/include/field_control_avatar.h index 15236936fd..635102fbf6 100644 --- a/include/field_control_avatar.h +++ b/include/field_control_avatar.h @@ -22,9 +22,9 @@ struct FieldInput u8 dpadDirection; }; -void FieldClearPlayerInput(struct FieldInput *input); -void FieldGetPlayerInput(struct FieldInput *input, u16 newKeys, u16 heldKeys); -int ProcessPlayerFieldInput(struct FieldInput *input); +void FieldClearPlayerInput(struct FieldInput *pStruct); +void FieldGetPlayerInput(struct FieldInput *pStruct, u16 keys, u16 heldKeys); +int ProcessPlayerFieldInput(struct FieldInput *pStruct); void RestartWildEncounterImmunitySteps(void); const u8 *GetObjectEventScriptPointerPlayerFacing(void); bool8 TryDoDiveWarp(struct MapPosition *position, u16 metatileBehavior); diff --git a/include/field_effect.h b/include/field_effect.h index 0e607b254f..2e13879353 100644 --- a/include/field_effect.h +++ b/include/field_effect.h @@ -49,6 +49,5 @@ void FreeResourcesAndDestroySprite(struct Sprite *sprite, u8 spriteId); u8 CreateMonSprite_PicBox(u16 species, s16 x, s16 y, u8 subpriority); void StartEscapeRopeFieldEffect(void); void FieldEffectFreeGraphicsResources(struct Sprite *sprite); -void FieldEff_CaveDust(void); #endif // GUARD_FIELD_EFFECTS_H diff --git a/include/field_effect_helpers.h b/include/field_effect_helpers.h index c5cf390feb..0c97da4337 100644 --- a/include/field_effect_helpers.h +++ b/include/field_effect_helpers.h @@ -21,7 +21,7 @@ bool8 UpdateRevealDisguise(struct ObjectEvent *objectEvent); void StartRevealDisguise(struct ObjectEvent *objectEvent); void StartAshFieldEffect(s16 x, s16 y, u16 metatileId, s16 delay); void SetUpReflection(struct ObjectEvent *objectEvent, struct Sprite *sprite, bool8 stillReflection); -void SetUpShadow(struct ObjectEvent *objectEvent, struct Sprite *sprite); +void SetUpShadow(struct ObjectEvent *objectEvent); u32 StartFieldEffectForObjectEvent(u8, struct ObjectEvent *objectEvent); u8 FindTallGrassFieldEffectSpriteId(u8 localId, u8 mapNum, u8 mapGroup, s16 x, s16 y); void UpdateRayquazaSpotlightEffect(struct Sprite *sprite); diff --git a/include/field_player_avatar.h b/include/field_player_avatar.h index 0048ed1355..cb7128f203 100644 --- a/include/field_player_avatar.h +++ b/include/field_player_avatar.h @@ -2,6 +2,7 @@ #define GUARD_FIELD_PLAYER_AVATAR_H void PlayerStep(u8 direction, u16 newKeys, u16 heldKeys); +bool8 TryDoMetatileBehaviorForcedMovement(); void ClearPlayerAvatarInfo(void); void SetPlayerAvatarExtraStateTransition(u16 graphicsId, u8 transitionFlag); u8 GetPlayerAvatarGenderByGraphicsId(u16 gfxId); @@ -68,5 +69,8 @@ bool8 ObjectMovingOnRockStairs(struct ObjectEvent *objectEvent, u8 direction); //sideways stairs u8 GetRightSideStairsDirection(u8 direction); u8 GetLeftSideStairsDirection(u8 direction); +void UpdateSpinData(void); +void ResetSpinTimer(void); +bool32 CanTriggerSpinEvolution(); #endif // GUARD_FIELD_PLAYER_AVATAR_H diff --git a/include/field_screen_effect.h b/include/field_screen_effect.h index 3f120ffdeb..1c77b2b375 100644 --- a/include/field_screen_effect.h +++ b/include/field_screen_effect.h @@ -44,5 +44,8 @@ void WriteFlashScanlineEffectBuffer(u8 flashLevel); bool8 IsPlayerStandingStill(void); void DoStairWarp(u16 metatileBehavior, u16 delay); bool32 IsDirectionalStairWarpMetatileBehavior(u16 metatileBehavior, u8 playerDirection); +void SetPlayerVisibility(bool8 visible); +void Task_WarpAndLoadMap(u8 taskId); +void Task_DoDoorWarp(u8 taskId); #endif // GUARD_FIELD_SCREEN_EFFECT_H diff --git a/include/field_weather.h b/include/field_weather.h index cff2eb5bc3..e8e34f4940 100644 --- a/include/field_weather.h +++ b/include/field_weather.h @@ -44,7 +44,8 @@ struct Weather s8 targetColorMapIndex; u8 colorMapStepDelay; u8 colorMapStepCounter; - u16 fadeDestColor; + u16 fadeDestColor:15; + u16 noShadows:1; // Certain weathers require blend coeffs that do not work nice with shadows u8 palProcessingState; u8 fadeScreenCounter; bool8 readyForInit; @@ -147,9 +148,10 @@ void SetCurrentAndNextWeatherNoDelay(u8 weather); void ApplyWeatherColorMapIfIdle(s8 colorMapIndex); void ApplyWeatherColorMapIfIdle_Gradual(u8 colorMapIndex, u8 targetColorMapIndex, u8 colorMapStepDelay); void FadeScreen(u8 mode, s8 delay); +void FadeScreenHardware(u32 mode, s32 delay); bool8 IsWeatherNotFadingIn(void); -void UpdateSpritePaletteWithWeather(u8 spritePaletteIndex); -void ApplyWeatherColorMapToPal(u8 paletteIndex); +void UpdateSpritePaletteWithWeather(u8 spritePaletteIndex, bool8 allowFog); +void ApplyWeatherColorMapToPals(u8 startPalIndex, u8 numPalettes); void LoadCustomWeatherSpritePalette(const u16 *palette); void ResetDroughtWeatherPaletteLoading(void); bool8 LoadDroughtWeatherPalettes(void); @@ -164,7 +166,9 @@ void PlayRainStoppingSoundEffect(void); u8 IsWeatherChangeComplete(void); void SetWeatherScreenFadeOut(void); void SetWeatherPalStateIdle(void); +const u8 *SetPaletteColorMapType(u8 paletteIndex, enum ColorMapType colorMapType); void PreservePaletteInWeather(u8 preservedPalIndex); +void ResetPaletteColorMapType(u8 paletteIndex); void ResetPreservedPalettesInWeather(void); bool32 IsWeatherAlphaBlend(void); @@ -190,6 +194,7 @@ void Thunderstorm_Main(void); void Thunderstorm_InitAll(void); bool8 Thunderstorm_Finish(void); void FogHorizontal_InitVars(void); +u8 UpdateShadowColor(u16 color); void FogHorizontal_Main(void); void FogHorizontal_InitAll(void); bool8 FogHorizontal_Finish(void); diff --git a/include/fieldmap.h b/include/fieldmap.h index 2788a3f1a9..54f676421b 100644 --- a/include/fieldmap.h +++ b/include/fieldmap.h @@ -45,7 +45,7 @@ void InitTrainerHillMap(void); void InitBattlePyramidMap(bool8 setPlayerPosition); void CopyMapTilesetsToVram(struct MapLayout const *mapLayout); void LoadMapTilesetPalettes(struct MapLayout const *mapLayout); -void LoadSecondaryTilesetPalette(struct MapLayout const *mapLayout); +void LoadSecondaryTilesetPalette(struct MapLayout const *mapLayout, bool8 skipFaded); void CopySecondaryTilesetToVramUsingHeap(struct MapLayout const *mapLayout); void CopyPrimaryTilesetToVram(struct MapLayout const *mapLayout); void CopySecondaryTilesetToVram(struct MapLayout const *mapLayout); diff --git a/include/fldeff.h b/include/fldeff.h index 46de616999..9bad320c74 100644 --- a/include/fldeff.h +++ b/include/fldeff.h @@ -51,4 +51,8 @@ u8 CreateFieldMoveTask(void); bool8 SetUpFieldMove_RockSmash(void); bool8 FldEff_UseRockSmash(void); +// defog +bool8 SetUpFieldMove_Defog(void); +bool8 FldEff_Defog(void); + #endif // GUARD_FLDEFF_H diff --git a/include/follower_helper.h b/include/follower_helper.h index 27bf1f700e..54a2b4c12a 100644 --- a/include/follower_helper.h +++ b/include/follower_helper.h @@ -1,7 +1,8 @@ #ifndef GUARD_FOLLOWER_HELPER_H #define GUARD_FOLLOWER_HELPER_H -enum { +enum FollowerEmotion +{ FOLLOWER_EMOTION_HAPPY = 0, FOLLOWER_EMOTION_NEUTRAL, // Also called "No emotion" FOLLOWER_EMOTION_SAD, @@ -50,17 +51,20 @@ struct FollowerMsgInfoExtended }; // 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 +enum MessageCondition +{ + MSG_COND_NONE, + MSG_COND_SPECIES, + MSG_COND_TYPE, + MSG_COND_STATUS, + MSG_COND_MAPSEC, + MSG_COND_MAP, + MSG_COND_ON_MB, + MSG_COND_WEATHER, + MSG_COND_MUSIC, + MSG_COND_TIME_OF_DAY, + MSG_COND_NEAR_MB +}; #define MATCH_U24(type, value) {type, {.raw = value}} #define MATCH_U16(type, value1, value2) {type, {.split = {.hw = value1, .b = value2}}} @@ -82,7 +86,8 @@ struct FollowerMsgInfoExtended // 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 { +enum ConditionalMessage +{ COND_MSG_CELEBI, COND_MSG_FIRE, COND_MSG_EVER_GRANDE, @@ -111,6 +116,8 @@ enum { COND_MSG_LEAVES, COND_MSG_ICE, COND_MSG_BURN, + COND_MSG_DAY, + COND_MSG_NIGHT, COND_MSG_COUNT, }; diff --git a/include/follower_npc.h b/include/follower_npc.h new file mode 100644 index 0000000000..52355a78b7 --- /dev/null +++ b/include/follower_npc.h @@ -0,0 +1,130 @@ +#ifndef GUARD_FOLLOWER_NPC_H +#define GUARD_FOLLOWER_NPC_H + +#include "constants/follower_npc.h" + +#define MOVEMENT_INVALID 0xFE + +struct FollowerNPCSpriteGraphics +{ + u16 normalId; + u16 machBikeId; + u16 acroBikeId; + u16 surfId; + u16 underwaterId; +}; + +enum FollowerNPCDataTypes +{ + FNPC_DATA_IN_PROGRESS, + FNPC_DATA_WARP_END, + FNPC_DATA_SURF_BLOB, + FNPC_DATA_COME_OUT_DOOR, + FNPC_DATA_OBJ_ID, + FNPC_DATA_CURRENT_SPRITE, + FNPC_DATA_DELAYED_STATE, + FNPC_DATA_MAP_ID, + FNPC_DATA_MAP_NUM, + FNPC_DATA_MAP_GROUP, + FNPC_DATA_EVENT_FLAG, + FNPC_DATA_GFX_ID, + FNPC_DATA_FOLLOWER_FLAGS, + FNPC_DATA_BATTLE_PARTNER +}; + +enum FollowerNPCSpriteTypes +{ + FOLLOWER_NPC_SPRITE_INDEX_NORMAL, + FOLLOWER_NPC_SPRITE_INDEX_MACH_BIKE, + FOLLOWER_NPC_SPRITE_INDEX_ACRO_BIKE, + FOLLOWER_NPC_SPRITE_INDEX_SURF, + FOLLOWER_NPC_SPRITE_INDEX_UNDERWATER, +}; + +enum FollowerNPCDoorStairsStates +{ + FNPC_DOOR_NONE, + FNPC_DOOR_NEEDS_TO_EXIT, + FNPC_DOOR_NO_POS_SET +}; + +enum FollowerNPCWarpEndStates +{ + FNPC_WARP_NONE, + FNPC_WARP_REAPPEAR +}; + +enum FollowerNPCSurfBlobStates +{ + FNPC_SURF_BLOB_NONE, + FNPC_SURF_BLOB_NEW, + FNPC_SURF_BLOB_RECREATE, + FNPC_SURF_BLOB_DESTROY +}; + +enum FollowerNPCOutOfDoorTaskStates{ + OPEN_DOOR, + NPC_WALK_OUT, + CLOSE_DOOR, + UNFREEZE_OBJECTS, + REALLOW_MOVEMENT +}; + +enum FollowerNPCHandleEscalatorFinishTaskStates{ + MOVE_TO_PLAYER_POS, + WAIT_FOR_PLAYER_MOVE, + SHOW_FOLLOWER_DOWN, + MOVE_FOLLOWER_DOWN, + SHOW_FOLLOWER_UP, + MOVE_FOLLOWER_UP, + MOVEMENT_FINISH +}; + +void SetFollowerNPCData(enum FollowerNPCDataTypes type, u32 value); +const u8 *GetFollowerNPCScriptPointer(void); +u32 GetFollowerNPCData(enum FollowerNPCDataTypes type); +void ClearFollowerNPCData(void); + +u32 DetermineFollowerNPCState(struct ObjectEvent *follower, u32 state, u32 direction); +void SetFollowerNPCSprite(u32 spriteIndex); + +bool32 PlayerHasFollowerNPC(void); +void NPCFollow(struct ObjectEvent *npc, u32 state, bool32 ignoreScriptActive); +void CreateFollowerNPCAvatar(void); +void FollowerNPC_HandleSprite(void); +u32 DetermineFollowerNPCDirection(struct ObjectEvent *player, struct ObjectEvent *follower); +u32 GetFollowerNPCObjectId(void); +bool32 CheckFollowerNPCFlag(u32 flag); +bool32 FollowerNPC_IsCollisionExempt(struct ObjectEvent *obstacle, struct ObjectEvent *collider); +void HideNPCFollower(void); +void FollowerNPC_WarpSetEnd(void); + +bool32 FollowerNPCCanBike(void); +void FollowerNPC_HandleBike(void); + +void FollowerNPC_FollowerToWater(void); +void FollowerNPC_SetIndicatorToRecreateSurfBlob(void); +void FollowerNPC_BindToSurfBlobOnReloadScreen(void); +void PrepareFollowerNPCDismountSurf(void); + +bool32 FollowerNPCComingThroughDoor(void); +void FollowerNPC_SetIndicatorToComeOutDoor(void); + +void EscalatorMoveFollowerNPC(u32 movementType); +void EscalatorMoveFollowerNPCFinish(void); + +void FollowerNPCWalkIntoPlayerForLeaveMap(void); +void FollowerNPCHideForLeaveMap(struct ObjectEvent *follower); +void FollowerNPCReappearAfterLeaveMap(struct ObjectEvent *follower, struct ObjectEvent *player); +void FollowerNPCFaceAfterLeaveMap(void); + +bool32 FollowerNPCIsBattlePartner(void); +bool32 IsNPCFollowerWildBattle(void); +void PrepareForFollowerNPCBattle(void); +void RestorePartyAfterFollowerNPCBattle(void); +void FollowerNPC_TryRemoveFollowerOnWhiteOut(void); + +void Task_MoveNPCFollowerAfterForcedMovement(u8 taskId); +void Task_HideNPCFollowerAfterMovementFinish(u8 taskId); + +#endif // GUARD_FOLLOWER_NPC_H diff --git a/include/follower_npc_alternate_sprites.h b/include/follower_npc_alternate_sprites.h new file mode 100644 index 0000000000..a42795ddf9 --- /dev/null +++ b/include/follower_npc_alternate_sprites.h @@ -0,0 +1,33 @@ +#ifndef GUARD_FOLLOWER_NPC_ALTERNATE_SPRITES_H +#define GUARD_FOLLOWER_NPC_ALTERNATE_SPRITES_H + +#include "constants/event_objects.h" + +// This is where alternate sprites for NPC followers should be listed. +// If the appropriate alternate sprites are not added here, the NPC follower will not use the correct sprites for biking, +// surfing, etc. +// The normalId tells the game what GFX to tie the associated alternate sprites to. This is usually the sprite you would +// give to the object in Porymap. +// For example, Rival May's normalId is OBJ_EVENT_GFX_RIVAL_MAY_NORMAL. All the rest of the sprites in that same block +// will be used with an NPC follower that has that normalId. + +static const struct FollowerNPCSpriteGraphics gFollowerNPCAlternateSprites[] = +{ + { + .normalId = OBJ_EVENT_GFX_RIVAL_MAY_NORMAL, + .machBikeId = OBJ_EVENT_GFX_RIVAL_MAY_MACH_BIKE, + .acroBikeId = OBJ_EVENT_GFX_RIVAL_MAY_ACRO_BIKE, + .surfId = OBJ_EVENT_GFX_RIVAL_MAY_SURFING, + .underwaterId = OBJ_EVENT_GFX_MAY_UNDERWATER, + }, + { + .normalId = OBJ_EVENT_GFX_RIVAL_BRENDAN_NORMAL, + .machBikeId = OBJ_EVENT_GFX_RIVAL_BRENDAN_MACH_BIKE, + .acroBikeId = OBJ_EVENT_GFX_RIVAL_BRENDAN_ACRO_BIKE, + .surfId = OBJ_EVENT_GFX_RIVAL_BRENDAN_SURFING, + .underwaterId = OBJ_EVENT_GFX_BRENDAN_UNDERWATER, + }, + +}; + +#endif // GUARD_FOLLOWER_NPC_ALTERNATE_SPRITES_H diff --git a/include/gba/defines.h b/include/gba/defines.h index 2a68042421..6d2b9f910a 100644 --- a/include/gba/defines.h +++ b/include/gba/defines.h @@ -3,8 +3,8 @@ #include -#define TRUE 1 -#define FALSE 0 +#define TRUE 1 +#define FALSE 0 #define IWRAM_DATA __attribute__((section(".bss"))) #define EWRAM_DATA __attribute__((section(".sbss"))) diff --git a/include/gba/io_reg.h b/include/gba/io_reg.h index db219aeb35..fd4b525b06 100644 --- a/include/gba/io_reg.h +++ b/include/gba/io_reg.h @@ -599,6 +599,7 @@ #define BLDCNT_EFFECT_BLEND (1 << 6) // 1st+2nd targets mixed (controlled by BLDALPHA) #define BLDCNT_EFFECT_LIGHTEN (2 << 6) // 1st target becomes whiter (controlled by BLDY) #define BLDCNT_EFFECT_DARKEN (3 << 6) // 1st target becomes blacker (controlled by BLDY) +#define BLDCNT_EFFECT_EFF_MASK (3 << 6) // mask to check effect // Bits 8-13 select layers for the 2nd target #define BLDCNT_TGT2_BG0 (1 << 8) #define BLDCNT_TGT2_BG1 (1 << 9) @@ -611,6 +612,8 @@ // BLDALPHA #define BLDALPHA_BLEND(target1, target2) (((target2) << 8) | (target1)) +#define BLDALPHA_TGT1(bld) ((bld) & 0x1F) +#define BLDALPHA_TGT2(bld) (((bld) >> 8) & 0x1F) // SOUNDCNT_H #define SOUND_CGB_MIX_QUARTER 0x0000 diff --git a/include/generational_changes.h b/include/generational_changes.h index bbd12445e4..2a97728d0d 100644 --- a/include/generational_changes.h +++ b/include/generational_changes.h @@ -17,6 +17,9 @@ static const u8 sGenerationalChanges[GEN_CONFIG_COUNT] = [GEN_CONFIG_TELEPORT_BEHAVIOR] = B_TELEPORT_BEHAVIOR, [GEN_CONFIG_ABILITY_WEATHER] = B_ABILITY_WEATHER, [GEN_CONFIG_MOODY_STATS] = B_MOODY_ACC_EVASION, + [GEN_CONFIG_BATTLE_BOND] = B_BATTLE_BOND, + [GEN_CONFIG_FELL_STINGER_STAT_RAISE] = B_FELL_STINGER_STAT_RAISE, + [GEN_CONFIG_ATE_MULTIPLIER] = B_ATE_MULTIPLIER, }; #if TESTING diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h index 5a4ffca26b..5f2a84017f 100644 --- a/include/global.fieldmap.h +++ b/include/global.fieldmap.h @@ -37,8 +37,11 @@ typedef void (*TilesetCB)(void); struct Tileset { - /*0x00*/ bool8 isCompressed; + /*0x00*/ u8 isCompressed:1; + /*0x00*/ u8 swapPalettes:7; // Bitmask determining whether palette has an alternate, night-time palette /*0x01*/ bool8 isSecondary; + /*0x02*/ u8 lightPalettes; // Bitmask determining whether a palette should be time-blended as a light + /*0x03*/ u8 customLightColor; // Bitmask determining which light palettes have custom light colors (color 15) /*0x04*/ const u32 *tiles; /*0x08*/ const u16 (*palettes)[16]; /*0x0C*/ const u16 *metatiles; @@ -188,14 +191,15 @@ struct ObjectEvent u32 inShallowFlowingWater:1; u32 inSandPile:1; u32 inHotSprings:1; - u32 hasShadow:1; + u32 noShadow:1; u32 spriteAnimPausedBackup:1; /*0x03*/ u32 spriteAffineAnimPausedBackup:1; u32 disableJumpLandingGroundEffect:1; u32 fixedPriority:1; u32 hideReflection:1; u32 shiny:1; // OW mon shininess - u32 padding:3; + u32 jumpDone:1; + u32 padding:2; /*0x04*/ u16 graphicsId; // 12 bits for species; high 4 bits for form /*0x06*/ u8 movementType; /*0x07*/ u8 trainerType; diff --git a/include/global.h b/include/global.h index 7cedc7c895..057a53b498 100644 --- a/include/global.h +++ b/include/global.h @@ -5,6 +5,7 @@ #include #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 "siirtc.h" #include "fpmath.h" #include "metaprogram.h" #include "constants/global.h" @@ -203,13 +204,41 @@ struct Time /*0x04*/ s8 seconds; }; +struct NPCFollowerMapData +{ + u8 id; + u8 number; + u8 group; +}; + +struct NPCFollower +{ + u8 inProgress:1; + u8 warpEnd:1; + u8 createSurfBlob:3; + u8 comeOutDoorStairs:3; + u8 objId; + u8 currentSprite; + u8 delayedState; + struct NPCFollowerMapData map; + struct Coords16 log; + const u8 *script; + u16 flag; + u16 graphicsId; + u16 flags; + u8 battlePartner; // If you have more than 255 total battle partners defined, change this to a u16 +}; + #include "constants/items.h" #define ITEM_FLAGS_COUNT ((ITEMS_COUNT / 8) + ((ITEMS_COUNT % 8) ? 1 : 0)) struct SaveBlock3 { #if OW_USE_FAKE_RTC - struct Time fakeRTC; + struct SiiRtcInfo fakeRTC; +#endif +#if FNPC_ENABLE_NPC_FOLLOWERS + struct NPCFollower NPCfollower; #endif #if OW_SHOW_ITEM_DESCRIPTIONS == OW_ITEM_DESCRIPTIONS_FIRST_TIME u8 itemFlags[ITEM_FLAGS_COUNT]; @@ -573,6 +602,8 @@ struct SaveBlock2 extern struct SaveBlock2 *gSaveBlock2Ptr; +extern u8 UpdateSpritePaletteWithTime(u8); + struct SecretBaseParty { u32 personality[PARTY_SIZE]; @@ -1135,4 +1166,8 @@ struct MapPosition s8 elevation; }; +#if T_SHOULD_RUN_MOVE_ANIM +extern bool32 gLoadFail; +#endif // T_SHOULD_RUN_MOVE_ANIM + #endif // GUARD_GLOBAL_H diff --git a/include/graphics.h b/include/graphics.h index 12e020c90f..58212d67c2 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -8,61 +8,61 @@ extern const u16 gMessageBox_Pal[]; // pokeballs extern const u32 gBallGfx_Strange[]; -extern const u32 gBallPal_Strange[]; +extern const u16 gBallPal_Strange[]; extern const u32 gBallGfx_Poke[]; -extern const u32 gBallPal_Poke[]; +extern const u16 gBallPal_Poke[]; extern const u32 gBallGfx_Great[]; -extern const u32 gBallPal_Great[]; +extern const u16 gBallPal_Great[]; extern const u32 gBallGfx_Ultra[]; -extern const u32 gBallPal_Ultra[]; +extern const u16 gBallPal_Ultra[]; extern const u32 gBallGfx_Master[]; -extern const u32 gBallPal_Master[]; +extern const u16 gBallPal_Master[]; extern const u32 gBallGfx_Premier[]; -extern const u32 gBallPal_Premier[]; +extern const u16 gBallPal_Premier[]; extern const u32 gBallGfx_Heal[]; -extern const u32 gBallPal_Heal[]; +extern const u16 gBallPal_Heal[]; extern const u32 gBallGfx_Net[]; -extern const u32 gBallPal_Net[]; +extern const u16 gBallPal_Net[]; extern const u32 gBallGfx_Nest[]; -extern const u32 gBallPal_Nest[]; +extern const u16 gBallPal_Nest[]; extern const u32 gBallGfx_Dive[]; -extern const u32 gBallPal_Dive[]; +extern const u16 gBallPal_Dive[]; extern const u32 gBallGfx_Dusk[]; -extern const u32 gBallPal_Dusk[]; +extern const u16 gBallPal_Dusk[]; extern const u32 gBallGfx_Timer[]; -extern const u32 gBallPal_Timer[]; +extern const u16 gBallPal_Timer[]; extern const u32 gBallGfx_Quick[]; -extern const u32 gBallPal_Quick[]; +extern const u16 gBallPal_Quick[]; extern const u32 gBallGfx_Repeat[]; -extern const u32 gBallPal_Repeat[]; +extern const u16 gBallPal_Repeat[]; extern const u32 gBallGfx_Luxury[]; -extern const u32 gBallPal_Luxury[]; +extern const u16 gBallPal_Luxury[]; extern const u32 gBallGfx_Level[]; -extern const u32 gBallPal_Level[]; +extern const u16 gBallPal_Level[]; extern const u32 gBallGfx_Lure[]; -extern const u32 gBallPal_Lure[]; +extern const u16 gBallPal_Lure[]; extern const u32 gBallGfx_Moon[]; -extern const u32 gBallPal_Moon[]; +extern const u16 gBallPal_Moon[]; extern const u32 gBallGfx_Friend[]; -extern const u32 gBallPal_Friend[]; +extern const u16 gBallPal_Friend[]; extern const u32 gBallGfx_Love[]; -extern const u32 gBallPal_Love[]; +extern const u16 gBallPal_Love[]; extern const u32 gBallGfx_Fast[]; -extern const u32 gBallPal_Fast[]; +extern const u16 gBallPal_Fast[]; extern const u32 gBallGfx_Heavy[]; -extern const u32 gBallPal_Heavy[]; +extern const u16 gBallPal_Heavy[]; extern const u32 gBallGfx_Dream[]; -extern const u32 gBallPal_Dream[]; +extern const u16 gBallPal_Dream[]; extern const u32 gBallGfx_Safari[]; -extern const u32 gBallPal_Safari[]; +extern const u16 gBallPal_Safari[]; extern const u32 gBallGfx_Sport[]; -extern const u32 gBallPal_Sport[]; +extern const u16 gBallPal_Sport[]; extern const u32 gBallGfx_Park[]; -extern const u32 gBallPal_Park[]; +extern const u16 gBallPal_Park[]; extern const u32 gBallGfx_Beast[]; -extern const u32 gBallPal_Beast[]; +extern const u16 gBallPal_Beast[]; extern const u32 gBallGfx_Cherish[]; -extern const u32 gBallPal_Cherish[]; +extern const u16 gBallPal_Cherish[]; extern const u32 gOpenPokeballGfx[]; // Pokémon gfx @@ -70,114 +70,114 @@ extern const u16 gMonIconPalettes[][16]; // pokeblock extern const u32 gMenuPokeblock_Gfx[]; -extern const u32 gMenuPokeblock_Pal[]; +extern const u16 gMenuPokeblock_Pal[]; extern const u32 gMenuPokeblock_Tilemap[]; extern const u32 gMenuPokeblockDevice_Gfx[]; -extern const u32 gMenuPokeblockDevice_Pal[]; -extern const u32 gPokeblockRed_Pal[]; -extern const u32 gPokeblockBlue_Pal[]; -extern const u32 gPokeblockPink_Pal[]; -extern const u32 gPokeblockGreen_Pal[]; -extern const u32 gPokeblockYellow_Pal[]; -extern const u32 gPokeblockPurple_Pal[]; -extern const u32 gPokeblockIndigo_Pal[]; -extern const u32 gPokeblockBrown_Pal[]; -extern const u32 gPokeblockLiteBlue_Pal[]; -extern const u32 gPokeblockOlive_Pal[]; -extern const u32 gPokeblockGray_Pal[]; -extern const u32 gPokeblockBlack_Pal[]; -extern const u32 gPokeblockWhite_Pal[]; -extern const u32 gPokeblockGold_Pal[]; +extern const u16 gMenuPokeblockDevice_Pal[]; +extern const u16 gPokeblockRed_Pal[]; +extern const u16 gPokeblockBlue_Pal[]; +extern const u16 gPokeblockPink_Pal[]; +extern const u16 gPokeblockGreen_Pal[]; +extern const u16 gPokeblockYellow_Pal[]; +extern const u16 gPokeblockPurple_Pal[]; +extern const u16 gPokeblockIndigo_Pal[]; +extern const u16 gPokeblockBrown_Pal[]; +extern const u16 gPokeblockLiteBlue_Pal[]; +extern const u16 gPokeblockOlive_Pal[]; +extern const u16 gPokeblockGray_Pal[]; +extern const u16 gPokeblockBlack_Pal[]; +extern const u16 gPokeblockWhite_Pal[]; +extern const u16 gPokeblockGold_Pal[]; extern const u32 gPokeblock_Gfx[]; extern const u32 gItemIcon_QuestionMark[]; -extern const u32 gItemIconPalette_QuestionMark[]; +extern const u16 gItemIconPalette_QuestionMark[]; // Decorations extern const u32 gDecorIcon_HeavyDesk[]; -extern const u32 gDecorIconPalette_HeavyDesk[]; +extern const u16 gDecorIconPalette_HeavyDesk[]; extern const u32 gDecorIcon_RaggedDesk[]; -extern const u32 gDecorIconPalette_RaggedDesk[]; +extern const u16 gDecorIconPalette_RaggedDesk[]; extern const u32 gDecorIcon_ComfortDesk[]; -extern const u32 gDecorIconPalette_ComfortDesk[]; +extern const u16 gDecorIconPalette_ComfortDesk[]; extern const u32 gDecorIcon_PrettyDesk[]; -extern const u32 gDecorIconPalette_PrettyDesk[]; +extern const u16 gDecorIconPalette_PrettyDesk[]; extern const u32 gDecorIcon_BrickDesk[]; -extern const u32 gDecorIconPalette_BrickDesk[]; +extern const u16 gDecorIconPalette_BrickDesk[]; extern const u32 gDecorIcon_CampDesk[]; -extern const u32 gDecorIconPalette_CampDesk[]; +extern const u16 gDecorIconPalette_CampDesk[]; extern const u32 gDecorIcon_HardDesk[]; -extern const u32 gDecorIconPalette_HardDesk[]; +extern const u16 gDecorIconPalette_HardDesk[]; extern const u32 gDecorIcon_RedPlant[]; -extern const u32 gDecorIconPalette_RedPlant[]; +extern const u16 gDecorIconPalette_RedPlant[]; extern const u32 gDecorIcon_TropicalPlant[]; -extern const u32 gDecorIconPalette_TropicalPlant[]; +extern const u16 gDecorIconPalette_TropicalPlant[]; extern const u32 gDecorIcon_PrettyFlowers[]; -extern const u32 gDecorIconPalette_PrettyFlowers[]; +extern const u16 gDecorIconPalette_PrettyFlowers[]; extern const u32 gDecorIcon_ColorfulPlant[]; -extern const u32 gDecorIconPalette_ColorfulPlant[]; +extern const u16 gDecorIconPalette_ColorfulPlant[]; extern const u32 gDecorIcon_BigPlant[]; -extern const u32 gDecorIconPalette_BigPlant[]; +extern const u16 gDecorIconPalette_BigPlant[]; extern const u32 gDecorIcon_GorgeousPlant[]; -extern const u32 gDecorIconPalette_GorgeousPlant[]; +extern const u16 gDecorIconPalette_GorgeousPlant[]; extern const u32 gDecorIcon_RedBrick[]; -extern const u32 gDecorIconPalette_RedBrick[]; +extern const u16 gDecorIconPalette_RedBrick[]; extern const u32 gDecorIcon_YellowBrick[]; -extern const u32 gDecorIconPalette_YellowBrick[]; +extern const u16 gDecorIconPalette_YellowBrick[]; extern const u32 gDecorIcon_BlueBrick[]; -extern const u32 gDecorIconPalette_BlueBrick[]; +extern const u16 gDecorIconPalette_BlueBrick[]; extern const u32 gDecorIcon_RedTent[]; -extern const u32 gDecorIconPalette_RedTent[]; +extern const u16 gDecorIconPalette_RedTent[]; extern const u32 gDecorIcon_BlueTent[]; -extern const u32 gDecorIconPalette_BlueTent[]; +extern const u16 gDecorIconPalette_BlueTent[]; extern const u32 gDecorIcon_SolidBoard[]; -extern const u32 gDecorIconPalette_SolidBoard[]; +extern const u16 gDecorIconPalette_SolidBoard[]; extern const u32 gDecorIcon_Slide[]; -extern const u32 gDecorIconPalette_Slide[]; +extern const u16 gDecorIconPalette_Slide[]; extern const u32 gDecorIcon_Tire[]; -extern const u32 gDecorIconPalette_Tire[]; +extern const u16 gDecorIconPalette_Tire[]; extern const u32 gDecorIcon_Stand[]; -extern const u32 gDecorIconPalette_Stand[]; +extern const u16 gDecorIconPalette_Stand[]; extern const u32 gDecorIcon_BreakableDoor[]; -extern const u32 gDecorIconPalette_BreakableDoor[]; +extern const u16 gDecorIconPalette_BreakableDoor[]; extern const u32 gDecorIcon_SandOrnament[]; -extern const u32 gDecorIconPalette_SandOrnament[]; +extern const u16 gDecorIconPalette_SandOrnament[]; extern const u32 gDecorIcon_GlassOrnament[]; -extern const u32 gDecorIconPalette_GlassOrnament[]; +extern const u16 gDecorIconPalette_GlassOrnament[]; extern const u32 gDecorIcon_SurfMat[]; -extern const u32 gDecorIconPalette_SurfMat[]; +extern const u16 gDecorIconPalette_SurfMat[]; extern const u32 gDecorIcon_ThunderMat[]; -extern const u32 gDecorIconPalette_ThunderMat[]; +extern const u16 gDecorIconPalette_ThunderMat[]; extern const u32 gDecorIcon_FireBlastMat[]; -extern const u32 gDecorIconPalette_FireBlastMat[]; +extern const u16 gDecorIconPalette_FireBlastMat[]; extern const u32 gDecorIcon_PowderSnowMat[]; -extern const u32 gDecorIconPalette_PowderSnowMat[]; +extern const u16 gDecorIconPalette_PowderSnowMat[]; extern const u32 gDecorIcon_AttractMat[]; -extern const u32 gDecorIconPalette_AttractMat[]; +extern const u16 gDecorIconPalette_AttractMat[]; extern const u32 gDecorIcon_FissureMat[]; -extern const u32 gDecorIconPalette_FissureMat[]; +extern const u16 gDecorIconPalette_FissureMat[]; extern const u32 gDecorIcon_SpikesMat[]; -extern const u32 gDecorIconPalette_SpikesMat[]; +extern const u16 gDecorIconPalette_SpikesMat[]; extern const u32 gDecorIcon_SnorlaxDoll[]; -extern const u32 gDecorIconPalette_SnorlaxDoll[]; +extern const u16 gDecorIconPalette_SnorlaxDoll[]; extern const u32 gDecorIcon_RhydonDoll[]; -extern const u32 gDecorIconPalette_RhydonDoll[]; +extern const u16 gDecorIconPalette_RhydonDoll[]; extern const u32 gDecorIcon_LaprasDoll[]; -extern const u32 gDecorIconPalette_LaprasDoll[]; +extern const u16 gDecorIconPalette_LaprasDoll[]; extern const u32 gDecorIcon_VenusaurDoll[]; -extern const u32 gDecorIconPalette_VenusaurDoll[]; +extern const u16 gDecorIconPalette_VenusaurDoll[]; extern const u32 gDecorIcon_CharizardDoll[]; -extern const u32 gDecorIconPalette_CharizardDoll[]; +extern const u16 gDecorIconPalette_CharizardDoll[]; extern const u32 gDecorIcon_BlastoiseDoll[]; -extern const u32 gDecorIconPalette_BlastoiseDoll[]; +extern const u16 gDecorIconPalette_BlastoiseDoll[]; extern const u32 gDecorIcon_WailmerDoll[]; -extern const u32 gDecorIconPalette_WailmerDoll[]; +extern const u16 gDecorIconPalette_WailmerDoll[]; extern const u32 gDecorIcon_RegirockDoll[]; -extern const u32 gDecorIconPalette_RegirockDoll[]; +extern const u16 gDecorIconPalette_RegirockDoll[]; extern const u32 gDecorIcon_RegiceDoll[]; -extern const u32 gDecorIconPalette_RegiceDoll[]; +extern const u16 gDecorIconPalette_RegiceDoll[]; extern const u32 gDecorIcon_RegisteelDoll[]; -extern const u32 gDecorIconPalette_RegisteelDoll[]; +extern const u16 gDecorIconPalette_RegisteelDoll[]; extern const u32 gWallClock_Gfx[]; extern const u16 gWallClockMale_Pal[]; @@ -206,10 +206,10 @@ extern const u16 gBerryFixWindow_Pal[]; extern const u32 gBattleTextboxTiles[]; extern const u32 gBattleTextboxTilemap[]; -extern const u32 gBattleTextboxPalette[]; +extern const u16 gBattleTextboxPalette[]; extern const u32 gVsLettersGfx[]; extern const u32 gBattleVSFrame_Gfx[]; -extern const u32 gBattleVSFrame_Pal[]; +extern const u16 gBattleVSFrame_Pal[]; extern const u32 gBattleVSFrame_Tilemap[]; extern const u32 gMultiBattleIntroBg_Opponent_Tilemap[]; extern const u32 gMultiBattleIntroBg_Player_Tilemap[]; @@ -219,67 +219,67 @@ extern const u32 gBattleEnvironmentTiles_TallGrass[]; extern const u32 gBattleEnvironmentTilemap_TallGrass[]; extern const u32 gBattleEnvironmentAnimTiles_TallGrass[]; extern const u32 gBattleEnvironmentAnimTilemap_TallGrass[]; -extern const u32 gBattleEnvironmentPalette_TallGrass[]; +extern const u16 gBattleEnvironmentPalette_TallGrass[]; extern const u32 gBattleEnvironmentTiles_LongGrass[]; extern const u32 gBattleEnvironmentTilemap_LongGrass[]; extern const u32 gBattleEnvironmentAnimTiles_LongGrass[]; extern const u32 gBattleEnvironmentAnimTilemap_LongGrass[]; -extern const u32 gBattleEnvironmentPalette_LongGrass[]; +extern const u16 gBattleEnvironmentPalette_LongGrass[]; extern const u32 gBattleEnvironmentTiles_Sand[]; extern const u32 gBattleEnvironmentTilemap_Sand[]; extern const u32 gBattleEnvironmentAnimTiles_Sand[]; extern const u32 gBattleEnvironmentAnimTilemap_Sand[]; -extern const u32 gBattleEnvironmentPalette_Sand[]; +extern const u16 gBattleEnvironmentPalette_Sand[]; extern const u32 gBattleEnvironmentTiles_Underwater[]; extern const u32 gBattleEnvironmentTilemap_Underwater[]; extern const u32 gBattleEnvironmentAnimTiles_Underwater[]; extern const u32 gBattleEnvironmentAnimTilemap_Underwater[]; -extern const u32 gBattleEnvironmentPalette_Underwater[]; +extern const u16 gBattleEnvironmentPalette_Underwater[]; extern const u32 gBattleEnvironmentTiles_Water[]; extern const u32 gBattleEnvironmentTilemap_Water[]; extern const u32 gBattleEnvironmentAnimTiles_Water[]; extern const u32 gBattleEnvironmentAnimTilemap_Water[]; -extern const u32 gBattleEnvironmentPalette_Water[]; +extern const u16 gBattleEnvironmentPalette_Water[]; extern const u32 gBattleEnvironmentTiles_PondWater[]; extern const u32 gBattleEnvironmentTilemap_PondWater[]; extern const u32 gBattleEnvironmentAnimTiles_PondWater[]; extern const u32 gBattleEnvironmentAnimTilemap_PondWater[]; -extern const u32 gBattleEnvironmentPalette_PondWater[]; +extern const u16 gBattleEnvironmentPalette_PondWater[]; extern const u32 gBattleEnvironmentTiles_Rock[]; extern const u32 gBattleEnvironmentTilemap_Rock[]; extern const u32 gBattleEnvironmentAnimTiles_Rock[]; extern const u32 gBattleEnvironmentAnimTilemap_Rock[]; -extern const u32 gBattleEnvironmentPalette_Rock[]; +extern const u16 gBattleEnvironmentPalette_Rock[]; extern const u32 gBattleEnvironmentTiles_Cave[]; extern const u32 gBattleEnvironmentTilemap_Cave[]; extern const u32 gBattleEnvironmentAnimTiles_Cave[]; extern const u32 gBattleEnvironmentAnimTilemap_Cave[]; -extern const u32 gBattleEnvironmentPalette_Cave[]; +extern const u16 gBattleEnvironmentPalette_Cave[]; extern const u32 gBattleEnvironmentTiles_Building[]; extern const u32 gBattleEnvironmentTilemap_Building[]; extern const u32 gBattleEnvironmentAnimTiles_Building[]; extern const u32 gBattleEnvironmentAnimTilemap_Building[]; -extern const u32 gBattleEnvironmentPalette_Building[]; -extern const u32 gBattleEnvironmentPalette_Plain[]; -extern const u32 gBattleEnvironmentPalette_Frontier[]; +extern const u16 gBattleEnvironmentPalette_Building[]; +extern const u16 gBattleEnvironmentPalette_Plain[]; +extern const u16 gBattleEnvironmentPalette_Frontier[]; extern const u32 gBattleEnvironmentTiles_Stadium[]; extern const u32 gBattleEnvironmentTilemap_Stadium[]; extern const u32 gBattleEnvironmentTiles_Rayquaza[]; extern const u32 gBattleEnvironmentTilemap_Rayquaza[]; extern const u32 gBattleEnvironmentAnimTiles_Rayquaza[]; extern const u32 gBattleEnvironmentAnimTilemap_Rayquaza[]; -extern const u32 gBattleEnvironmentPalette_Rayquaza[]; -extern const u32 gBattleEnvironmentPalette_Kyogre[]; -extern const u32 gBattleEnvironmentPalette_Groudon[]; -extern const u32 gBattleEnvironmentPalette_BuildingGym[]; -extern const u32 gBattleEnvironmentPalette_BuildingLeader[]; -extern const u32 gBattleEnvironmentPalette_StadiumAqua[]; -extern const u32 gBattleEnvironmentPalette_StadiumMagma[]; -extern const u32 gBattleEnvironmentPalette_StadiumSidney[]; -extern const u32 gBattleEnvironmentPalette_StadiumPhoebe[]; -extern const u32 gBattleEnvironmentPalette_StadiumGlacia[]; -extern const u32 gBattleEnvironmentPalette_StadiumDrake[]; -extern const u32 gBattleEnvironmentPalette_StadiumWallace[]; +extern const u16 gBattleEnvironmentPalette_Rayquaza[]; +extern const u16 gBattleEnvironmentPalette_Kyogre[]; +extern const u16 gBattleEnvironmentPalette_Groudon[]; +extern const u16 gBattleEnvironmentPalette_BuildingGym[]; +extern const u16 gBattleEnvironmentPalette_BuildingLeader[]; +extern const u16 gBattleEnvironmentPalette_StadiumAqua[]; +extern const u16 gBattleEnvironmentPalette_StadiumMagma[]; +extern const u16 gBattleEnvironmentPalette_StadiumSidney[]; +extern const u16 gBattleEnvironmentPalette_StadiumPhoebe[]; +extern const u16 gBattleEnvironmentPalette_StadiumGlacia[]; +extern const u16 gBattleEnvironmentPalette_StadiumDrake[]; +extern const u16 gBattleEnvironmentPalette_StadiumWallace[]; // Pokédex extern const u32 gPokedexInterface_Gfx[]; @@ -304,7 +304,7 @@ extern const u16 gPokedexSearchMenu_Pal[]; // berry tag screen extern const u32 gBerryCheck_Gfx[]; -extern const u32 gBerryCheck_Pal[]; +extern const u16 gBerryCheck_Pal[]; extern const u32 gBerryTag_Gfx[]; extern const u32 gBerryTag_Tilemap[]; @@ -315,16 +315,16 @@ extern const u32 gRaySceneDuoFight_GroudonClaw_Gfx[]; extern const u32 gRaySceneDuoFight_Kyogre_Gfx[]; extern const u32 gRaySceneDuoFight_KyogrePectoralFin_Gfx[]; extern const u32 gRaySceneDuoFight_KyogreDorsalFin_Gfx[]; -extern const u32 gRaySceneDuoFight_Groudon_Pal[]; -extern const u32 gRaySceneDuoFight_Kyogre_Pal[]; +extern const u16 gRaySceneDuoFight_Groudon_Pal[]; +extern const u16 gRaySceneDuoFight_Kyogre_Pal[]; extern const u32 gRaySceneDuoFight_Clouds_Gfx[]; -extern const u32 gRaySceneDuoFight_Clouds_Pal[]; +extern const u16 gRaySceneDuoFight_Clouds_Pal[]; extern const u32 gRaySceneDuoFight_Clouds1_Tilemap[]; extern const u32 gRaySceneDuoFight_Clouds2_Tilemap[]; extern const u32 gRaySceneDuoFight_Clouds3_Tilemap[]; extern const u32 gRaySceneTakesFlight_Smoke_Gfx[]; -extern const u32 gRaySceneTakesFlight_Smoke_Pal[]; -extern const u32 gRaySceneTakesFlight_Rayquaza_Pal[]; +extern const u16 gRaySceneTakesFlight_Smoke_Pal[]; +extern const u16 gRaySceneTakesFlight_Rayquaza_Pal[]; extern const u32 gRaySceneTakesFlight_Bg_Gfx[]; extern const u32 gRaySceneTakesFlight_Bg_Tilemap[]; extern const u32 gRaySceneTakesFlight_Rayquaza_Gfx[]; @@ -335,7 +335,7 @@ extern const u32 gRaySceneDescends_Light_Gfx[]; extern const u32 gRaySceneDescends_Light_Tilemap[]; extern const u32 gRaySceneDescends_Bg_Gfx[]; extern const u32 gRaySceneDescends_Bg_Tilemap[]; -extern const u32 gRaySceneDescends_Bg_Pal[]; +extern const u16 gRaySceneDescends_Bg_Pal[]; extern const u32 gRaySceneCharges_Rayquaza_Gfx[]; extern const u32 gRaySceneCharges_Streaks_Gfx[]; extern const u32 gRaySceneCharges_Bg_Gfx[]; @@ -343,1405 +343,1405 @@ extern const u32 gRaySceneCharges_Orbs_Tilemap[]; extern const u32 gRaySceneCharges_Rayquaza_Tilemap[]; extern const u32 gRaySceneCharges_Streaks_Tilemap[]; extern const u32 gRaySceneCharges_Bg_Tilemap[]; -extern const u32 gRaySceneCharges_Bg_Pal[]; +extern const u16 gRaySceneCharges_Bg_Pal[]; extern const u32 gRaySceneChasesAway_Groudon_Gfx[]; extern const u32 gRaySceneChasesAway_GroudonTail_Gfx[]; extern const u32 gRaySceneChasesAway_Kyogre_Gfx[]; extern const u32 gRaySceneChasesAway_Rayquaza_Gfx[]; extern const u32 gRaySceneChasesAway_RayquazaTail_Gfx[]; extern const u32 gRaySceneChasesAway_KyogreSplash_Gfx[]; -extern const u32 gRaySceneChasesAway_Groudon_Pal[]; -extern const u32 gRaySceneChasesAway_Kyogre_Pal[]; -extern const u32 gRaySceneChasesAway_Rayquaza_Pal[]; -extern const u32 gRaySceneChasesAway_KyogreSplash_Pal[]; +extern const u16 gRaySceneChasesAway_Groudon_Pal[]; +extern const u16 gRaySceneChasesAway_Kyogre_Pal[]; +extern const u16 gRaySceneChasesAway_Rayquaza_Pal[]; +extern const u16 gRaySceneChasesAway_KyogreSplash_Pal[]; extern const u32 gRaySceneChasesAway_Bg_Tilemap[]; extern const u32 gRaySceneChasesAway_Light_Tilemap[]; extern const u32 gRaySceneChasesAway_Ring_Tilemap[]; -extern const u32 gRaySceneChasesAway_Bg_Pal[]; +extern const u16 gRaySceneChasesAway_Bg_Pal[]; extern const u32 gRaySceneChasesAway_Light_Gfx[]; extern const u32 gRaySceneChasesAway_Ring_Gfx[]; // Poké Balls extern const u32 gItemIcon_StrangeBall[]; -extern const u32 gItemIconPalette_StrangeBall[]; +extern const u16 gItemIconPalette_StrangeBall[]; extern const u32 gItemIcon_PokeBall[]; -extern const u32 gItemIconPalette_PokeBall[]; +extern const u16 gItemIconPalette_PokeBall[]; extern const u32 gItemIcon_GreatBall[]; -extern const u32 gItemIconPalette_GreatBall[]; +extern const u16 gItemIconPalette_GreatBall[]; extern const u32 gItemIcon_UltraBall[]; -extern const u32 gItemIconPalette_UltraBall[]; +extern const u16 gItemIconPalette_UltraBall[]; extern const u32 gItemIcon_MasterBall[]; -extern const u32 gItemIconPalette_MasterBall[]; +extern const u16 gItemIconPalette_MasterBall[]; extern const u32 gItemIcon_PremierBall[]; extern const u32 gItemIcon_HealBall[]; -extern const u32 gItemIconPalette_HealBall[]; +extern const u16 gItemIconPalette_HealBall[]; extern const u32 gItemIcon_NetBall[]; -extern const u32 gItemIconPalette_NetBall[]; +extern const u16 gItemIconPalette_NetBall[]; extern const u32 gItemIcon_NestBall[]; -extern const u32 gItemIconPalette_NestBall[]; +extern const u16 gItemIconPalette_NestBall[]; extern const u32 gItemIcon_DiveBall[]; -extern const u32 gItemIconPalette_DiveBall[]; +extern const u16 gItemIconPalette_DiveBall[]; extern const u32 gItemIcon_DuskBall[]; -extern const u32 gItemIconPalette_DuskBall[]; +extern const u16 gItemIconPalette_DuskBall[]; extern const u32 gItemIcon_TimerBall[]; extern const u32 gItemIcon_QuickBall[]; -extern const u32 gItemIconPalette_QuickBall[]; +extern const u16 gItemIconPalette_QuickBall[]; extern const u32 gItemIcon_RepeatBall[]; -extern const u32 gItemIconPalette_RepeatBall[]; +extern const u16 gItemIconPalette_RepeatBall[]; extern const u32 gItemIcon_LuxuryBall[]; -extern const u32 gItemIconPalette_LuxuryBall[]; +extern const u16 gItemIconPalette_LuxuryBall[]; extern const u32 gItemIcon_LevelBall[]; -extern const u32 gItemIconPalette_LevelBall[]; +extern const u16 gItemIconPalette_LevelBall[]; extern const u32 gItemIcon_LureBall[]; -extern const u32 gItemIconPalette_LureBall[]; +extern const u16 gItemIconPalette_LureBall[]; extern const u32 gItemIcon_MoonBall[]; -extern const u32 gItemIconPalette_MoonBall[]; +extern const u16 gItemIconPalette_MoonBall[]; extern const u32 gItemIcon_FriendBall[]; -extern const u32 gItemIconPalette_FriendBall[]; +extern const u16 gItemIconPalette_FriendBall[]; extern const u32 gItemIcon_LoveBall[]; -extern const u32 gItemIconPalette_LoveBall[]; +extern const u16 gItemIconPalette_LoveBall[]; extern const u32 gItemIcon_FastBall[]; -extern const u32 gItemIconPalette_FastBall[]; +extern const u16 gItemIconPalette_FastBall[]; extern const u32 gItemIcon_HeavyBall[]; -extern const u32 gItemIconPalette_HeavyBall[]; +extern const u16 gItemIconPalette_HeavyBall[]; extern const u32 gItemIcon_DreamBall[]; -extern const u32 gItemIconPalette_DreamBall[]; +extern const u16 gItemIconPalette_DreamBall[]; extern const u32 gItemIcon_SafariBall[]; -extern const u32 gItemIconPalette_SafariBall[]; +extern const u16 gItemIconPalette_SafariBall[]; extern const u32 gItemIcon_SportBall[]; -extern const u32 gItemIconPalette_SportBall[]; +extern const u16 gItemIconPalette_SportBall[]; extern const u32 gItemIcon_ParkBall[]; -extern const u32 gItemIconPalette_ParkBall[]; +extern const u16 gItemIconPalette_ParkBall[]; extern const u32 gItemIcon_BeastBall[]; -extern const u32 gItemIconPalette_BeastBall[]; +extern const u16 gItemIconPalette_BeastBall[]; extern const u32 gItemIcon_CherishBall[]; -extern const u32 gItemIconPalette_CherishBall[]; +extern const u16 gItemIconPalette_CherishBall[]; // Medicine extern const u32 gItemIcon_Potion[]; -extern const u32 gItemIconPalette_Potion[]; -extern const u32 gItemIconPalette_SuperPotion[]; -extern const u32 gItemIconPalette_HyperPotion[]; +extern const u16 gItemIconPalette_Potion[]; +extern const u16 gItemIconPalette_SuperPotion[]; +extern const u16 gItemIconPalette_HyperPotion[]; extern const u32 gItemIcon_LargePotion[]; -extern const u32 gItemIconPalette_MaxPotion[]; -extern const u32 gItemIconPalette_FullRestore[]; +extern const u16 gItemIconPalette_MaxPotion[]; +extern const u16 gItemIconPalette_FullRestore[]; extern const u32 gItemIcon_Revive[]; -extern const u32 gItemIconPalette_Revive[]; +extern const u16 gItemIconPalette_Revive[]; extern const u32 gItemIcon_MaxRevive[]; extern const u32 gItemIcon_FreshWater[]; -extern const u32 gItemIconPalette_FreshWater[]; +extern const u16 gItemIconPalette_FreshWater[]; extern const u32 gItemIcon_SodaPop[]; -extern const u32 gItemIconPalette_SodaPop[]; +extern const u16 gItemIconPalette_SodaPop[]; extern const u32 gItemIcon_Lemonade[]; -extern const u32 gItemIconPalette_Lemonade[]; +extern const u16 gItemIconPalette_Lemonade[]; extern const u32 gItemIcon_MoomooMilk[]; -extern const u32 gItemIconPalette_MoomooMilk[]; +extern const u16 gItemIconPalette_MoomooMilk[]; extern const u32 gItemIcon_Powder[]; -extern const u32 gItemIconPalette_EnergyPowder[]; +extern const u16 gItemIconPalette_EnergyPowder[]; extern const u32 gItemIcon_EnergyRoot[]; -extern const u32 gItemIconPalette_EnergyRoot[]; -extern const u32 gItemIconPalette_HealPowder[]; +extern const u16 gItemIconPalette_EnergyRoot[]; +extern const u16 gItemIconPalette_HealPowder[]; extern const u32 gItemIcon_RevivalHerb[]; -extern const u32 gItemIconPalette_RevivalHerb[]; +extern const u16 gItemIconPalette_RevivalHerb[]; extern const u32 gItemIcon_Antidote[]; -extern const u32 gItemIconPalette_Antidote[]; +extern const u16 gItemIconPalette_Antidote[]; extern const u32 gItemIcon_StatusHeal[]; -extern const u32 gItemIconPalette_ParalyzeHeal[]; -extern const u32 gItemIconPalette_BurnHeal[]; -extern const u32 gItemIconPalette_IceHeal[]; -extern const u32 gItemIconPalette_Awakening[]; +extern const u16 gItemIconPalette_ParalyzeHeal[]; +extern const u16 gItemIconPalette_BurnHeal[]; +extern const u16 gItemIconPalette_IceHeal[]; +extern const u16 gItemIconPalette_Awakening[]; extern const u32 gItemIcon_FullHeal[]; -extern const u32 gItemIconPalette_FullHeal[]; +extern const u16 gItemIconPalette_FullHeal[]; extern const u32 gItemIcon_Ether[]; -extern const u32 gItemIconPalette_Ether[]; -extern const u32 gItemIconPalette_MaxEther[]; -extern const u32 gItemIconPalette_Elixir[]; -extern const u32 gItemIconPalette_MaxElixir[]; +extern const u16 gItemIconPalette_Ether[]; +extern const u16 gItemIconPalette_MaxEther[]; +extern const u16 gItemIconPalette_Elixir[]; +extern const u16 gItemIconPalette_MaxElixir[]; extern const u32 gItemIcon_BerryJuice[]; -extern const u32 gItemIconPalette_BerryJuice[]; +extern const u16 gItemIconPalette_BerryJuice[]; extern const u32 gItemIcon_SacredAsh[]; -extern const u32 gItemIconPalette_SacredAsh[]; +extern const u16 gItemIconPalette_SacredAsh[]; extern const u32 gItemIcon_SweetHeart[]; -extern const u32 gItemIconPalette_SweetHeart[]; +extern const u16 gItemIconPalette_SweetHeart[]; extern const u32 gItemIcon_MaxHoney[]; -extern const u32 gItemIconPalette_MaxHoney[]; +extern const u16 gItemIconPalette_MaxHoney[]; // Regional Specialties extern const u32 gItemIcon_PewterCrunchies[]; -extern const u32 gItemIconPalette_PewterCrunchies[]; +extern const u16 gItemIconPalette_PewterCrunchies[]; extern const u32 gItemIcon_RageCandyBar[]; -extern const u32 gItemIconPalette_RageCandyBar[]; +extern const u16 gItemIconPalette_RageCandyBar[]; extern const u32 gItemIcon_LavaCookie[]; -extern const u32 gItemIconPalette_LavaCookieAndLetter[]; +extern const u16 gItemIconPalette_LavaCookieAndLetter[]; extern const u32 gItemIcon_OldGateau[]; -extern const u32 gItemIconPalette_OldGateau[]; +extern const u16 gItemIconPalette_OldGateau[]; extern const u32 gItemIcon_Casteliacone[]; -extern const u32 gItemIconPalette_Casteliacone[]; +extern const u16 gItemIconPalette_Casteliacone[]; extern const u32 gItemIcon_LumioseGalette[]; -extern const u32 gItemIconPalette_LumioseGalette[]; +extern const u16 gItemIconPalette_LumioseGalette[]; extern const u32 gItemIcon_ShalourSable[]; -extern const u32 gItemIconPalette_ShalourSable[]; +extern const u16 gItemIconPalette_ShalourSable[]; extern const u32 gItemIcon_BigMalasada[]; -extern const u32 gItemIconPalette_BigMalasada[]; +extern const u16 gItemIconPalette_BigMalasada[]; // Vitamins extern const u32 gItemIcon_HPUp[]; -extern const u32 gItemIconPalette_HPUp[]; +extern const u16 gItemIconPalette_HPUp[]; extern const u32 gItemIcon_Vitamin[]; -extern const u32 gItemIconPalette_Protein[]; -extern const u32 gItemIconPalette_Iron[]; -extern const u32 gItemIconPalette_Calcium[]; -extern const u32 gItemIconPalette_Zinc[]; -extern const u32 gItemIconPalette_Carbos[]; +extern const u16 gItemIconPalette_Protein[]; +extern const u16 gItemIconPalette_Iron[]; +extern const u16 gItemIconPalette_Calcium[]; +extern const u16 gItemIconPalette_Zinc[]; +extern const u16 gItemIconPalette_Carbos[]; extern const u32 gItemIcon_PPUp[]; -extern const u32 gItemIconPalette_PPUp[]; +extern const u16 gItemIconPalette_PPUp[]; extern const u32 gItemIcon_PPMax[]; -extern const u32 gItemIconPalette_PPMax[]; +extern const u16 gItemIconPalette_PPMax[]; // EV Feathers extern const u32 gItemIcon_HealthFeather[]; -extern const u32 gItemIconPalette_HealthFeather[]; +extern const u16 gItemIconPalette_HealthFeather[]; extern const u32 gItemIcon_MuscleFeather[]; -extern const u32 gItemIconPalette_MuscleFeather[]; +extern const u16 gItemIconPalette_MuscleFeather[]; extern const u32 gItemIcon_ResistFeather[]; -extern const u32 gItemIconPalette_ResistFeather[]; +extern const u16 gItemIconPalette_ResistFeather[]; extern const u32 gItemIcon_GeniusFeather[]; -extern const u32 gItemIconPalette_GeniusFeather[]; +extern const u16 gItemIconPalette_GeniusFeather[]; extern const u32 gItemIcon_CleverFeather[]; -extern const u32 gItemIconPalette_CleverFeather[]; +extern const u16 gItemIconPalette_CleverFeather[]; extern const u32 gItemIcon_SwiftFeather[]; -extern const u32 gItemIconPalette_SwiftFeather[]; +extern const u16 gItemIconPalette_SwiftFeather[]; // Ability Modifiers extern const u32 gItemIcon_AbilityCapsule[]; -extern const u32 gItemIconPalette_AbilityCapsule[]; +extern const u16 gItemIconPalette_AbilityCapsule[]; extern const u32 gItemIcon_AbilityPatch[]; -extern const u32 gItemIconPalette_AbilityPatch[]; +extern const u16 gItemIconPalette_AbilityPatch[]; // Mints extern const u32 gItemIcon_Mint[]; -extern const u32 gItemIconPalette_RedMint[]; -extern const u32 gItemIconPalette_BlueMint[]; -extern const u32 gItemIconPalette_LightBlueMint[]; -extern const u32 gItemIconPalette_PinkMint[]; -extern const u32 gItemIconPalette_GreenMint[]; -extern const u32 gItemIconPalette_YellowMint[]; +extern const u16 gItemIconPalette_RedMint[]; +extern const u16 gItemIconPalette_BlueMint[]; +extern const u16 gItemIconPalette_LightBlueMint[]; +extern const u16 gItemIconPalette_PinkMint[]; +extern const u16 gItemIconPalette_GreenMint[]; +extern const u16 gItemIconPalette_YellowMint[]; // Candy extern const u32 gItemIcon_RareCandy[]; -extern const u32 gItemIconPalette_RareCandy[]; +extern const u16 gItemIconPalette_RareCandy[]; extern const u32 gItemIcon_ExpCandyXS[]; extern const u32 gItemIcon_ExpCandyS[]; extern const u32 gItemIcon_ExpCandyM[]; extern const u32 gItemIcon_ExpCandyL[]; extern const u32 gItemIcon_ExpCandyXL[]; -extern const u32 gItemIconPalette_ExpCandies[]; +extern const u16 gItemIconPalette_ExpCandies[]; extern const u32 gItemIcon_DynamaxCandy[]; -extern const u32 gItemIconPalette_DynamaxCandy[]; +extern const u16 gItemIconPalette_DynamaxCandy[]; // Medicinal Flutes extern const u32 gItemIcon_Flute[]; -extern const u32 gItemIconPalette_BlueFlute[]; -extern const u32 gItemIconPalette_YellowFlute[]; -extern const u32 gItemIconPalette_RedFlute[]; +extern const u16 gItemIconPalette_BlueFlute[]; +extern const u16 gItemIconPalette_YellowFlute[]; +extern const u16 gItemIconPalette_RedFlute[]; // Encounter-modifying Flutes -extern const u32 gItemIconPalette_BlackFlute[]; -extern const u32 gItemIconPalette_WhiteFlute[]; +extern const u16 gItemIconPalette_BlackFlute[]; +extern const u16 gItemIconPalette_WhiteFlute[]; // Encounter Modifiers extern const u32 gItemIcon_Repel[]; -extern const u32 gItemIconPalette_Repel[]; -extern const u32 gItemIconPalette_SuperRepel[]; -extern const u32 gItemIconPalette_MaxRepel[]; +extern const u16 gItemIconPalette_Repel[]; +extern const u16 gItemIconPalette_SuperRepel[]; +extern const u16 gItemIconPalette_MaxRepel[]; extern const u32 gItemIcon_Lure[]; -extern const u32 gItemIconPalette_Lure[]; -extern const u32 gItemIconPalette_SuperLure[]; -extern const u32 gItemIconPalette_MaxLure[]; +extern const u16 gItemIconPalette_Lure[]; +extern const u16 gItemIconPalette_SuperLure[]; +extern const u16 gItemIconPalette_MaxLure[]; extern const u32 gItemIcon_EscapeRope[]; -extern const u32 gItemIconPalette_EscapeRope[]; +extern const u16 gItemIconPalette_EscapeRope[]; // X Items extern const u32 gItemIcon_BattleStatItem[]; -extern const u32 gItemIconPalette_XAttack[]; -extern const u32 gItemIconPalette_XDefend[]; -extern const u32 gItemIconPalette_XSpecial[]; +extern const u16 gItemIconPalette_XAttack[]; +extern const u16 gItemIconPalette_XDefend[]; +extern const u16 gItemIconPalette_XSpecial[]; extern const u32 gItemIcon_XSpecialDefense[]; -extern const u32 gItemIconPalette_XSpecialDefense[]; -extern const u32 gItemIconPalette_XSpeed[]; -extern const u32 gItemIconPalette_XAccuracy[]; -extern const u32 gItemIconPalette_DireHit[]; -extern const u32 gItemIconPalette_GuardSpec[]; +extern const u16 gItemIconPalette_XSpecialDefense[]; +extern const u16 gItemIconPalette_XSpeed[]; +extern const u16 gItemIconPalette_XAccuracy[]; +extern const u16 gItemIconPalette_DireHit[]; +extern const u16 gItemIconPalette_GuardSpec[]; // Escape Items extern const u32 gItemIcon_PokeDoll[]; -extern const u32 gItemIconPalette_PokeDoll[]; +extern const u16 gItemIconPalette_PokeDoll[]; extern const u32 gItemIcon_FluffyTail[]; -extern const u32 gItemIconPalette_FluffyTail[]; +extern const u16 gItemIconPalette_FluffyTail[]; extern const u32 gItemIcon_PokeToy[]; -extern const u32 gItemIconPalette_PokeToy[]; +extern const u16 gItemIconPalette_PokeToy[]; extern const u32 gItemIcon_MaxMushrooms[]; -extern const u32 gItemIconPalette_MaxMushrooms[]; +extern const u16 gItemIconPalette_MaxMushrooms[]; // Treasures extern const u32 gItemIcon_BottleCap[]; -extern const u32 gItemIconPalette_BottleCap[]; -extern const u32 gItemIconPalette_GoldBottleCap[]; +extern const u16 gItemIconPalette_BottleCap[]; +extern const u16 gItemIconPalette_GoldBottleCap[]; extern const u32 gItemIcon_Nugget[]; -extern const u32 gItemIconPalette_Nugget[]; +extern const u16 gItemIconPalette_Nugget[]; extern const u32 gItemIcon_BigNugget[]; -extern const u32 gItemIconPalette_BigNugget[]; +extern const u16 gItemIconPalette_BigNugget[]; extern const u32 gItemIcon_TinyMushroom[]; -extern const u32 gItemIconPalette_Mushroom[]; +extern const u16 gItemIconPalette_Mushroom[]; extern const u32 gItemIcon_BigMushroom[]; extern const u32 gItemIcon_BalmMushroom[]; -extern const u32 gItemIconPalette_BalmMushroom[]; +extern const u16 gItemIconPalette_BalmMushroom[]; extern const u32 gItemIcon_Pearl[]; -extern const u32 gItemIconPalette_Pearl[]; +extern const u16 gItemIconPalette_Pearl[]; extern const u32 gItemIcon_BigPearl[]; extern const u32 gItemIcon_PearlString[]; -extern const u32 gItemIconPalette_PearlString[]; +extern const u16 gItemIconPalette_PearlString[]; extern const u32 gItemIcon_Stardust[]; -extern const u32 gItemIconPalette_Star[]; +extern const u16 gItemIconPalette_Star[]; extern const u32 gItemIcon_StarPiece[]; extern const u32 gItemIcon_CometShard[]; -extern const u32 gItemIconPalette_CometShard[]; -extern const u32 gItemIconPalette_ShoalSalt[]; +extern const u16 gItemIconPalette_CometShard[]; +extern const u16 gItemIconPalette_ShoalSalt[]; extern const u32 gItemIcon_ShoalShell[]; -extern const u32 gItemIconPalette_Shell[]; +extern const u16 gItemIconPalette_Shell[]; extern const u32 gItemIcon_Shard[]; -extern const u32 gItemIconPalette_RedShard[]; -extern const u32 gItemIconPalette_BlueShard[]; -extern const u32 gItemIconPalette_YellowShard[]; -extern const u32 gItemIconPalette_GreenShard[]; +extern const u16 gItemIconPalette_RedShard[]; +extern const u16 gItemIconPalette_BlueShard[]; +extern const u16 gItemIconPalette_YellowShard[]; +extern const u16 gItemIconPalette_GreenShard[]; extern const u32 gItemIcon_HeartScale[]; -extern const u32 gItemIconPalette_HeartScale[]; +extern const u16 gItemIconPalette_HeartScale[]; extern const u32 gItemIcon_Honey[]; -extern const u32 gItemIconPalette_Honey[]; +extern const u16 gItemIconPalette_Honey[]; extern const u32 gItemIcon_RareBone[]; -extern const u32 gItemIconPalette_RareBone[]; +extern const u16 gItemIconPalette_RareBone[]; extern const u32 gItemIcon_OddKeystone[]; -extern const u32 gItemIconPalette_OddKeystone[]; +extern const u16 gItemIconPalette_OddKeystone[]; extern const u32 gItemIcon_PrettyFeather[]; -extern const u32 gItemIconPalette_PrettyFeather[]; +extern const u16 gItemIconPalette_PrettyFeather[]; extern const u32 gItemIcon_RelicCoin[]; -extern const u32 gItemIconPalette_RelicCopper[]; -extern const u32 gItemIconPalette_RelicSilver[]; -extern const u32 gItemIconPalette_RelicGold[]; +extern const u16 gItemIconPalette_RelicCopper[]; +extern const u16 gItemIconPalette_RelicSilver[]; +extern const u16 gItemIconPalette_RelicGold[]; extern const u32 gItemIcon_RelicVase[]; -extern const u32 gItemIconPalette_Relics[]; +extern const u16 gItemIconPalette_Relics[]; extern const u32 gItemIcon_RelicBand[]; extern const u32 gItemIcon_RelicStatue[]; extern const u32 gItemIcon_RelicCrown[]; extern const u32 gItemIcon_StrangeSouvenir[]; -extern const u32 gItemIconPalette_StrangeSouvenir[]; +extern const u16 gItemIconPalette_StrangeSouvenir[]; // Fossils extern const u32 gItemIcon_HelixFossil[]; -extern const u32 gItemIconPalette_KantoFossil[]; +extern const u16 gItemIconPalette_KantoFossil[]; extern const u32 gItemIcon_DomeFossil[]; extern const u32 gItemIcon_OldAmber[]; -extern const u32 gItemIconPalette_OldAmber[]; +extern const u16 gItemIconPalette_OldAmber[]; extern const u32 gItemIcon_RootFossil[]; -extern const u32 gItemIconPalette_HoennFossil[]; +extern const u16 gItemIconPalette_HoennFossil[]; extern const u32 gItemIcon_ClawFossil[]; extern const u32 gItemIcon_ArmorFossil[]; -extern const u32 gItemIconPalette_ArmorFossil[]; +extern const u16 gItemIconPalette_ArmorFossil[]; extern const u32 gItemIcon_SkullFossil[]; -extern const u32 gItemIconPalette_SkullFossil[]; +extern const u16 gItemIconPalette_SkullFossil[]; extern const u32 gItemIcon_CoverFossil[]; -extern const u32 gItemIconPalette_CoverFossil[]; +extern const u16 gItemIconPalette_CoverFossil[]; extern const u32 gItemIcon_PlumeFossil[]; -extern const u32 gItemIconPalette_PlumeFossil[]; +extern const u16 gItemIconPalette_PlumeFossil[]; extern const u32 gItemIcon_JawFossil[]; -extern const u32 gItemIconPalette_JawFossil[]; +extern const u16 gItemIconPalette_JawFossil[]; extern const u32 gItemIcon_SailFossil[]; -extern const u32 gItemIconPalette_SailFossil[]; +extern const u16 gItemIconPalette_SailFossil[]; extern const u32 gItemIcon_FossilizedBird[]; -extern const u32 gItemIconPalette_FossilizedBird[]; +extern const u16 gItemIconPalette_FossilizedBird[]; extern const u32 gItemIcon_FossilizedFish[]; -extern const u32 gItemIconPalette_FossilizedFish[]; +extern const u16 gItemIconPalette_FossilizedFish[]; extern const u32 gItemIcon_FossilizedDrake[]; -extern const u32 gItemIconPalette_FossilizedDrake[]; +extern const u16 gItemIconPalette_FossilizedDrake[]; extern const u32 gItemIcon_FossilizedDino[]; -extern const u32 gItemIconPalette_FossilizedDino[]; +extern const u16 gItemIconPalette_FossilizedDino[]; // Mulch extern const u32 gItemIcon_Mulch[]; -extern const u32 gItemIconPalette_GrowthMulch[]; -extern const u32 gItemIconPalette_DampMulch[]; +extern const u16 gItemIconPalette_GrowthMulch[]; +extern const u16 gItemIconPalette_DampMulch[]; extern const u32 gItemIcon_StableMulch[]; -extern const u32 gItemIconPalette_StableMulch[]; -extern const u32 gItemIconPalette_GooeyMulch[]; -extern const u32 gItemIconPalette_RichMulch[]; -extern const u32 gItemIconPalette_SurpriseMulch[]; -extern const u32 gItemIconPalette_BoostMulch[]; -extern const u32 gItemIconPalette_AmazeMulch[]; +extern const u16 gItemIconPalette_StableMulch[]; +extern const u16 gItemIconPalette_GooeyMulch[]; +extern const u16 gItemIconPalette_RichMulch[]; +extern const u16 gItemIconPalette_SurpriseMulch[]; +extern const u16 gItemIconPalette_BoostMulch[]; +extern const u16 gItemIconPalette_AmazeMulch[]; // Apricorns extern const u32 gItemIcon_RedApricorn[]; -extern const u32 gItemIconPalette_RedApricorn[]; +extern const u16 gItemIconPalette_RedApricorn[]; extern const u32 gItemIcon_BlueApricorn[]; -extern const u32 gItemIconPalette_BlueApricorn[]; +extern const u16 gItemIconPalette_BlueApricorn[]; extern const u32 gItemIcon_YellowApricorn[]; -extern const u32 gItemIconPalette_YellowApricorn[]; +extern const u16 gItemIconPalette_YellowApricorn[]; extern const u32 gItemIcon_GreenApricorn[]; -extern const u32 gItemIconPalette_GreenApricorn[]; +extern const u16 gItemIconPalette_GreenApricorn[]; extern const u32 gItemIcon_PinkApricorn[]; -extern const u32 gItemIconPalette_PinkApricorn[]; +extern const u16 gItemIconPalette_PinkApricorn[]; extern const u32 gItemIcon_WhiteApricorn[]; -extern const u32 gItemIconPalette_WhiteApricorn[]; +extern const u16 gItemIconPalette_WhiteApricorn[]; extern const u32 gItemIcon_BlackApricorn[]; -extern const u32 gItemIconPalette_BlackApricorn[]; +extern const u16 gItemIconPalette_BlackApricorn[]; extern const u32 gItemIcon_WishingPiece[]; -extern const u32 gItemIconPalette_WishingPiece[]; +extern const u16 gItemIconPalette_WishingPiece[]; extern const u32 gItemIcon_GalaricaTwig[]; -extern const u32 gItemIconPalette_GalaricaItem[]; +extern const u16 gItemIconPalette_GalaricaItem[]; extern const u32 gItemIcon_ArmoriteOre[]; -extern const u32 gItemIconPalette_ArmoriteOre[]; +extern const u16 gItemIconPalette_ArmoriteOre[]; extern const u32 gItemIcon_DyniteOre[]; -extern const u32 gItemIconPalette_DyniteOre[]; +extern const u16 gItemIconPalette_DyniteOre[]; // Mail extern const u32 gItemIcon_OrangeMail[]; -extern const u32 gItemIconPalette_OrangeMail[]; +extern const u16 gItemIconPalette_OrangeMail[]; extern const u32 gItemIcon_HarborMail[]; -extern const u32 gItemIconPalette_HarborMail[]; +extern const u16 gItemIconPalette_HarborMail[]; extern const u32 gItemIcon_GlitterMail[]; -extern const u32 gItemIconPalette_GlitterMail[]; +extern const u16 gItemIconPalette_GlitterMail[]; extern const u32 gItemIcon_MechMail[]; -extern const u32 gItemIconPalette_MechMail[]; +extern const u16 gItemIconPalette_MechMail[]; extern const u32 gItemIcon_WoodMail[]; -extern const u32 gItemIconPalette_WoodMail[]; +extern const u16 gItemIconPalette_WoodMail[]; extern const u32 gItemIcon_WaveMail[]; -extern const u32 gItemIconPalette_WaveMail[]; +extern const u16 gItemIconPalette_WaveMail[]; extern const u32 gItemIcon_BeadMail[]; -extern const u32 gItemIconPalette_BeadMail[]; +extern const u16 gItemIconPalette_BeadMail[]; extern const u32 gItemIcon_ShadowMail[]; -extern const u32 gItemIconPalette_ShadowMail[]; +extern const u16 gItemIconPalette_ShadowMail[]; extern const u32 gItemIcon_TropicMail[]; -extern const u32 gItemIconPalette_TropicMail[]; +extern const u16 gItemIconPalette_TropicMail[]; extern const u32 gItemIcon_DreamMail[]; -extern const u32 gItemIconPalette_DreamMail[]; +extern const u16 gItemIconPalette_DreamMail[]; extern const u32 gItemIcon_FabMail[]; -extern const u32 gItemIconPalette_FabMail[]; +extern const u16 gItemIconPalette_FabMail[]; extern const u32 gItemIcon_RetroMail[]; -extern const u32 gItemIconPalette_RetroMail[]; +extern const u16 gItemIconPalette_RetroMail[]; // Evolution Items extern const u32 gItemIcon_FireStone[]; -extern const u32 gItemIconPalette_FireStone[]; +extern const u16 gItemIconPalette_FireStone[]; extern const u32 gItemIcon_WaterStone[]; -extern const u32 gItemIconPalette_WaterStone[]; +extern const u16 gItemIconPalette_WaterStone[]; extern const u32 gItemIcon_ThunderStone[]; -extern const u32 gItemIconPalette_ThunderStone[]; +extern const u16 gItemIconPalette_ThunderStone[]; extern const u32 gItemIcon_LeafStone[]; -extern const u32 gItemIconPalette_LeafStone[]; +extern const u16 gItemIconPalette_LeafStone[]; extern const u32 gItemIcon_IceStone[]; -extern const u32 gItemIconPalette_IceStone[]; +extern const u16 gItemIconPalette_IceStone[]; extern const u32 gItemIcon_SunStone[]; -extern const u32 gItemIconPalette_SunStone[]; +extern const u16 gItemIconPalette_SunStone[]; extern const u32 gItemIcon_MoonStone[]; -extern const u32 gItemIconPalette_MoonStone[]; +extern const u16 gItemIconPalette_MoonStone[]; extern const u32 gItemIcon_ShinyStone[]; -extern const u32 gItemIconPalette_ShinyStone[]; +extern const u16 gItemIconPalette_ShinyStone[]; extern const u32 gItemIcon_DuskStone[]; -extern const u32 gItemIconPalette_DuskStone[]; +extern const u16 gItemIconPalette_DuskStone[]; extern const u32 gItemIcon_DawnStone[]; -extern const u32 gItemIconPalette_DawnStone[]; +extern const u16 gItemIconPalette_DawnStone[]; extern const u32 gItemIcon_SweetApple[]; -extern const u32 gItemIconPalette_SweetApple[]; +extern const u16 gItemIconPalette_SweetApple[]; extern const u32 gItemIcon_TartApple[]; -extern const u32 gItemIconPalette_TartApple[]; +extern const u16 gItemIconPalette_TartApple[]; extern const u32 gItemIcon_CrackedPot[]; extern const u32 gItemIcon_ChippedPot[]; -extern const u32 gItemIconPalette_Pot[]; +extern const u16 gItemIconPalette_Pot[]; extern const u32 gItemIcon_GalaricaCuff[]; extern const u32 gItemIcon_GalaricaWreath[]; extern const u32 gItemIcon_DragonScale[]; -extern const u32 gItemIconPalette_DragonScale[]; +extern const u16 gItemIconPalette_DragonScale[]; extern const u32 gItemIcon_Upgrade[]; -extern const u32 gItemIconPalette_Upgrade[]; +extern const u16 gItemIconPalette_Upgrade[]; extern const u32 gItemIcon_Protector[]; -extern const u32 gItemIconPalette_Protector[]; +extern const u16 gItemIconPalette_Protector[]; extern const u32 gItemIcon_Electirizer[]; -extern const u32 gItemIconPalette_Electirizer[]; +extern const u16 gItemIconPalette_Electirizer[]; extern const u32 gItemIcon_Magmarizer[]; -extern const u32 gItemIconPalette_Magmarizer[]; +extern const u16 gItemIconPalette_Magmarizer[]; extern const u32 gItemIcon_DubiousDisc[]; -extern const u32 gItemIconPalette_DubiousDisc[]; +extern const u16 gItemIconPalette_DubiousDisc[]; extern const u32 gItemIcon_ReaperCloth[]; -extern const u32 gItemIconPalette_ReaperCloth[]; +extern const u16 gItemIconPalette_ReaperCloth[]; extern const u32 gItemIcon_PrismScale[]; -extern const u32 gItemIconPalette_PrismScale[]; +extern const u16 gItemIconPalette_PrismScale[]; extern const u32 gItemIcon_WhippedDream[]; -extern const u32 gItemIconPalette_WhippedDream[]; +extern const u16 gItemIconPalette_WhippedDream[]; extern const u32 gItemIcon_Sachet[]; -extern const u32 gItemIconPalette_Sachet[]; +extern const u16 gItemIconPalette_Sachet[]; extern const u32 gItemIcon_OvalStone[]; -extern const u32 gItemIconPalette_OvalStone[]; +extern const u16 gItemIconPalette_OvalStone[]; extern const u32 gItemIcon_StrawberrySweet[]; -extern const u32 gItemIconPalette_StrawberrySweet[]; +extern const u16 gItemIconPalette_StrawberrySweet[]; extern const u32 gItemIcon_LoveSweet[]; -extern const u32 gItemIconPalette_LoveSweet[]; +extern const u16 gItemIconPalette_LoveSweet[]; extern const u32 gItemIcon_BerrySweet[]; -extern const u32 gItemIconPalette_BerrySweet[]; +extern const u16 gItemIconPalette_BerrySweet[]; extern const u32 gItemIcon_CloverSweet[]; -extern const u32 gItemIconPalette_CloverSweet[]; +extern const u16 gItemIconPalette_CloverSweet[]; extern const u32 gItemIcon_FlowerSweet[]; -extern const u32 gItemIconPalette_FlowerSweet[]; +extern const u16 gItemIconPalette_FlowerSweet[]; extern const u32 gItemIcon_StarSweet[]; -extern const u32 gItemIconPalette_StarSweet[]; +extern const u16 gItemIconPalette_StarSweet[]; extern const u32 gItemIcon_RibbonSweet[]; -extern const u32 gItemIconPalette_RibbonSweet[]; +extern const u16 gItemIconPalette_RibbonSweet[]; extern const u32 gItemIcon_Everstone[]; -extern const u32 gItemIconPalette_Everstone[]; +extern const u16 gItemIconPalette_Everstone[]; extern const u32 gItemIcon_BlackAugurite[]; -extern const u32 gItemIconPalette_BlackAugurite[]; +extern const u16 gItemIconPalette_BlackAugurite[]; extern const u32 gItemIcon_LinkingCord[]; -extern const u32 gItemIconPalette_LinkingCord[]; +extern const u16 gItemIconPalette_LinkingCord[]; extern const u32 gItemIcon_PeatBlock[]; -extern const u32 gItemIconPalette_PeatBlock[]; +extern const u16 gItemIconPalette_PeatBlock[]; extern const u32 gItemIcon_SyrupyApple[]; -extern const u32 gItemIconPalette_SyrupyApple[]; +extern const u16 gItemIconPalette_SyrupyApple[]; extern const u32 gItemIcon_UnremarkableTeacup[]; -extern const u32 gItemIconPalette_UnremarkableTeacup[]; +extern const u16 gItemIconPalette_UnremarkableTeacup[]; extern const u32 gItemIcon_MasterpieceTeacup[]; -extern const u32 gItemIconPalette_MasterpieceTeacup[]; +extern const u16 gItemIconPalette_MasterpieceTeacup[]; extern const u32 gItemIcon_MetalAlloy[]; -extern const u32 gItemIconPalette_MetalAlloy[]; +extern const u16 gItemIconPalette_MetalAlloy[]; // Nectars extern const u32 gItemIcon_RedNectar[]; -extern const u32 gItemIconPalette_RedNectar[]; +extern const u16 gItemIconPalette_RedNectar[]; extern const u32 gItemIcon_YellowNectar[]; -extern const u32 gItemIconPalette_YellowNectar[]; +extern const u16 gItemIconPalette_YellowNectar[]; extern const u32 gItemIcon_PinkNectar[]; -extern const u32 gItemIconPalette_PinkNectar[]; +extern const u16 gItemIconPalette_PinkNectar[]; extern const u32 gItemIcon_PurpleNectar[]; -extern const u32 gItemIconPalette_PurpleNectar[]; +extern const u16 gItemIconPalette_PurpleNectar[]; // Plates extern const u32 gItemIcon_FlamePlate[]; -extern const u32 gItemIconPalette_FlamePlate[]; +extern const u16 gItemIconPalette_FlamePlate[]; extern const u32 gItemIcon_SplashPlate[]; -extern const u32 gItemIconPalette_SplashPlate[]; +extern const u16 gItemIconPalette_SplashPlate[]; extern const u32 gItemIcon_ZapPlate[]; -extern const u32 gItemIconPalette_ZapPlate[]; +extern const u16 gItemIconPalette_ZapPlate[]; extern const u32 gItemIcon_MeadowPlate[]; -extern const u32 gItemIconPalette_MeadowPlate[]; +extern const u16 gItemIconPalette_MeadowPlate[]; extern const u32 gItemIcon_IciclePlate[]; -extern const u32 gItemIconPalette_IciclePlate[]; +extern const u16 gItemIconPalette_IciclePlate[]; extern const u32 gItemIcon_FistPlate[]; -extern const u32 gItemIconPalette_FistPlate[]; +extern const u16 gItemIconPalette_FistPlate[]; extern const u32 gItemIcon_ToxicPlate[]; -extern const u32 gItemIconPalette_ToxicPlate[]; +extern const u16 gItemIconPalette_ToxicPlate[]; extern const u32 gItemIcon_EarthPlate[]; -extern const u32 gItemIconPalette_EarthPlate[]; +extern const u16 gItemIconPalette_EarthPlate[]; extern const u32 gItemIcon_SkyPlate[]; -extern const u32 gItemIconPalette_SkyPlate[]; +extern const u16 gItemIconPalette_SkyPlate[]; extern const u32 gItemIcon_MindPlate[]; -extern const u32 gItemIconPalette_MindPlate[]; +extern const u16 gItemIconPalette_MindPlate[]; extern const u32 gItemIcon_InsectPlate[]; -extern const u32 gItemIconPalette_InsectPlate[]; +extern const u16 gItemIconPalette_InsectPlate[]; extern const u32 gItemIcon_StonePlate[]; -extern const u32 gItemIconPalette_StonePlate[]; +extern const u16 gItemIconPalette_StonePlate[]; extern const u32 gItemIcon_SpookyPlate[]; -extern const u32 gItemIconPalette_SpookyPlate[]; +extern const u16 gItemIconPalette_SpookyPlate[]; extern const u32 gItemIcon_DracoPlate[]; -extern const u32 gItemIconPalette_DracoPlate[]; +extern const u16 gItemIconPalette_DracoPlate[]; extern const u32 gItemIcon_DreadPlate[]; -extern const u32 gItemIconPalette_DreadPlate[]; +extern const u16 gItemIconPalette_DreadPlate[]; extern const u32 gItemIcon_IronPlate[]; -extern const u32 gItemIconPalette_IronPlate[]; +extern const u16 gItemIconPalette_IronPlate[]; extern const u32 gItemIcon_PixiePlate[]; -extern const u32 gItemIconPalette_PixiePlate[]; +extern const u16 gItemIconPalette_PixiePlate[]; // Drives extern const u32 gItemIcon_DouseDrive[]; -extern const u32 gItemIconPalette_DouseDrive[]; +extern const u16 gItemIconPalette_DouseDrive[]; extern const u32 gItemIcon_ShockDrive[]; -extern const u32 gItemIconPalette_ShockDrive[]; +extern const u16 gItemIconPalette_ShockDrive[]; extern const u32 gItemIcon_BurnDrive[]; -extern const u32 gItemIconPalette_BurnDrive[]; +extern const u16 gItemIconPalette_BurnDrive[]; extern const u32 gItemIcon_ChillDrive[]; -extern const u32 gItemIconPalette_ChillDrive[]; +extern const u16 gItemIconPalette_ChillDrive[]; // Memories extern const u32 gItemIcon_FireMemory[]; -extern const u32 gItemIconPalette_FireMemory[]; +extern const u16 gItemIconPalette_FireMemory[]; extern const u32 gItemIcon_WaterMemory[]; -extern const u32 gItemIconPalette_WaterMemory[]; +extern const u16 gItemIconPalette_WaterMemory[]; extern const u32 gItemIcon_ElectricMemory[]; -extern const u32 gItemIconPalette_ElectricMemory[]; +extern const u16 gItemIconPalette_ElectricMemory[]; extern const u32 gItemIcon_GrassMemory[]; -extern const u32 gItemIconPalette_GrassMemory[]; +extern const u16 gItemIconPalette_GrassMemory[]; extern const u32 gItemIcon_IceMemory[]; -extern const u32 gItemIconPalette_IceMemory[]; +extern const u16 gItemIconPalette_IceMemory[]; extern const u32 gItemIcon_FightingMemory[]; -extern const u32 gItemIconPalette_FightingMemory[]; +extern const u16 gItemIconPalette_FightingMemory[]; extern const u32 gItemIcon_PoisonMemory[]; -extern const u32 gItemIconPalette_PoisonMemory[]; +extern const u16 gItemIconPalette_PoisonMemory[]; extern const u32 gItemIcon_GroundMemory[]; -extern const u32 gItemIconPalette_GroundMemory[]; +extern const u16 gItemIconPalette_GroundMemory[]; extern const u32 gItemIcon_FlyingMemory[]; -extern const u32 gItemIconPalette_FlyingMemory[]; +extern const u16 gItemIconPalette_FlyingMemory[]; extern const u32 gItemIcon_PsychicMemory[]; -extern const u32 gItemIconPalette_PsychicMemory[]; +extern const u16 gItemIconPalette_PsychicMemory[]; extern const u32 gItemIcon_BugMemory[]; -extern const u32 gItemIconPalette_BugMemory[]; +extern const u16 gItemIconPalette_BugMemory[]; extern const u32 gItemIcon_RockMemory[]; -extern const u32 gItemIconPalette_RockMemory[]; +extern const u16 gItemIconPalette_RockMemory[]; extern const u32 gItemIcon_GhostMemory[]; -extern const u32 gItemIconPalette_GhostMemory[]; +extern const u16 gItemIconPalette_GhostMemory[]; extern const u32 gItemIcon_DragonMemory[]; -extern const u32 gItemIconPalette_DragonMemory[]; +extern const u16 gItemIconPalette_DragonMemory[]; extern const u32 gItemIcon_DarkMemory[]; -extern const u32 gItemIconPalette_DarkMemory[]; +extern const u16 gItemIconPalette_DarkMemory[]; extern const u32 gItemIcon_SteelMemory[]; -extern const u32 gItemIconPalette_SteelMemory[]; +extern const u16 gItemIconPalette_SteelMemory[]; extern const u32 gItemIcon_FairyMemory[]; -extern const u32 gItemIconPalette_FairyMemory[]; +extern const u16 gItemIconPalette_FairyMemory[]; extern const u32 gItemIcon_RustedSword[]; extern const u32 gItemIcon_RustedShield[]; -extern const u32 gItemIconPalette_RustedWeapons[]; +extern const u16 gItemIconPalette_RustedWeapons[]; // Colored Orbs extern const u32 gItemIcon_RedOrb[]; -extern const u32 gItemIconPalette_RedOrb[]; +extern const u16 gItemIconPalette_RedOrb[]; extern const u32 gItemIcon_BlueOrb[]; -extern const u32 gItemIconPalette_BlueOrb[]; +extern const u16 gItemIconPalette_BlueOrb[]; // Mega Stones extern const u32 gItemIcon_Venusaurite[]; -extern const u32 gItemIconPalette_Venusaurite[]; +extern const u16 gItemIconPalette_Venusaurite[]; extern const u32 gItemIcon_CharizarditeX[]; -extern const u32 gItemIconPalette_CharizarditeX[]; +extern const u16 gItemIconPalette_CharizarditeX[]; extern const u32 gItemIcon_CharizarditeY[]; -extern const u32 gItemIconPalette_CharizarditeY[]; +extern const u16 gItemIconPalette_CharizarditeY[]; extern const u32 gItemIcon_Blastoisinite[]; -extern const u32 gItemIconPalette_Blastoisinite[]; +extern const u16 gItemIconPalette_Blastoisinite[]; extern const u32 gItemIcon_Beedrillite[]; -extern const u32 gItemIconPalette_Beedrillite[]; +extern const u16 gItemIconPalette_Beedrillite[]; extern const u32 gItemIcon_Pidgeotite[]; -extern const u32 gItemIconPalette_Pidgeotite[]; +extern const u16 gItemIconPalette_Pidgeotite[]; extern const u32 gItemIcon_Alakazite[]; -extern const u32 gItemIconPalette_Alakazite[]; +extern const u16 gItemIconPalette_Alakazite[]; extern const u32 gItemIcon_Slowbronite[]; -extern const u32 gItemIconPalette_Slowbronite[]; +extern const u16 gItemIconPalette_Slowbronite[]; extern const u32 gItemIcon_Gengarite[]; -extern const u32 gItemIconPalette_Gengarite[]; +extern const u16 gItemIconPalette_Gengarite[]; extern const u32 gItemIcon_Kangaskhanite[]; -extern const u32 gItemIconPalette_Kangaskhanite[]; +extern const u16 gItemIconPalette_Kangaskhanite[]; extern const u32 gItemIcon_Pinsirite[]; -extern const u32 gItemIconPalette_Pinsirite[]; +extern const u16 gItemIconPalette_Pinsirite[]; extern const u32 gItemIcon_Gyaradosite[]; -extern const u32 gItemIconPalette_Gyaradosite[]; +extern const u16 gItemIconPalette_Gyaradosite[]; extern const u32 gItemIcon_Aerodactylite[]; -extern const u32 gItemIconPalette_Aerodactylite[]; +extern const u16 gItemIconPalette_Aerodactylite[]; extern const u32 gItemIcon_MewtwoniteX[]; -extern const u32 gItemIconPalette_MewtwoniteX[]; +extern const u16 gItemIconPalette_MewtwoniteX[]; extern const u32 gItemIcon_MewtwoniteY[]; -extern const u32 gItemIconPalette_MewtwoniteY[]; +extern const u16 gItemIconPalette_MewtwoniteY[]; extern const u32 gItemIcon_Ampharosite[]; -extern const u32 gItemIconPalette_Ampharosite[]; +extern const u16 gItemIconPalette_Ampharosite[]; extern const u32 gItemIcon_Steelixite[]; -extern const u32 gItemIconPalette_Steelixite[]; +extern const u16 gItemIconPalette_Steelixite[]; extern const u32 gItemIcon_Scizorite[]; -extern const u32 gItemIconPalette_Scizorite[]; +extern const u16 gItemIconPalette_Scizorite[]; extern const u32 gItemIcon_Heracronite[]; -extern const u32 gItemIconPalette_Heracronite[]; +extern const u16 gItemIconPalette_Heracronite[]; extern const u32 gItemIcon_Houndoominite[]; -extern const u32 gItemIconPalette_Houndoominite[]; +extern const u16 gItemIconPalette_Houndoominite[]; extern const u32 gItemIcon_Tyranitarite[]; -extern const u32 gItemIconPalette_Tyranitarite[]; +extern const u16 gItemIconPalette_Tyranitarite[]; extern const u32 gItemIcon_Sceptilite[]; -extern const u32 gItemIconPalette_Sceptilite[]; +extern const u16 gItemIconPalette_Sceptilite[]; extern const u32 gItemIcon_Blazikenite[]; -extern const u32 gItemIconPalette_Blazikenite[]; +extern const u16 gItemIconPalette_Blazikenite[]; extern const u32 gItemIcon_Swampertite[]; -extern const u32 gItemIconPalette_Swampertite[]; +extern const u16 gItemIconPalette_Swampertite[]; extern const u32 gItemIcon_Gardevoirite[]; -extern const u32 gItemIconPalette_Gardevoirite[]; +extern const u16 gItemIconPalette_Gardevoirite[]; extern const u32 gItemIcon_Sablenite[]; -extern const u32 gItemIconPalette_Sablenite[]; +extern const u16 gItemIconPalette_Sablenite[]; extern const u32 gItemIcon_Mawilite[]; -extern const u32 gItemIconPalette_Mawilite[]; +extern const u16 gItemIconPalette_Mawilite[]; extern const u32 gItemIcon_Aggronite[]; -extern const u32 gItemIconPalette_Aggronite[]; +extern const u16 gItemIconPalette_Aggronite[]; extern const u32 gItemIcon_Medichamite[]; -extern const u32 gItemIconPalette_Medichamite[]; +extern const u16 gItemIconPalette_Medichamite[]; extern const u32 gItemIcon_Manectite[]; -extern const u32 gItemIconPalette_Manectite[]; +extern const u16 gItemIconPalette_Manectite[]; extern const u32 gItemIcon_Sharpedonite[]; -extern const u32 gItemIconPalette_Sharpedonite[]; +extern const u16 gItemIconPalette_Sharpedonite[]; extern const u32 gItemIcon_Cameruptite[]; -extern const u32 gItemIconPalette_Cameruptite[]; +extern const u16 gItemIconPalette_Cameruptite[]; extern const u32 gItemIcon_Altarianite[]; -extern const u32 gItemIconPalette_Altarianite[]; +extern const u16 gItemIconPalette_Altarianite[]; extern const u32 gItemIcon_Banettite[]; -extern const u32 gItemIconPalette_Banettite[]; +extern const u16 gItemIconPalette_Banettite[]; extern const u32 gItemIcon_Absolite[]; -extern const u32 gItemIconPalette_Absolite[]; +extern const u16 gItemIconPalette_Absolite[]; extern const u32 gItemIcon_Glalitite[]; -extern const u32 gItemIconPalette_Glalitite[]; +extern const u16 gItemIconPalette_Glalitite[]; extern const u32 gItemIcon_Salamencite[]; -extern const u32 gItemIconPalette_Salamencite[]; +extern const u16 gItemIconPalette_Salamencite[]; extern const u32 gItemIcon_Metagrossite[]; -extern const u32 gItemIconPalette_Metagrossite[]; +extern const u16 gItemIconPalette_Metagrossite[]; extern const u32 gItemIcon_Latiasite[]; -extern const u32 gItemIconPalette_Latiasite[]; +extern const u16 gItemIconPalette_Latiasite[]; extern const u32 gItemIcon_Latiosite[]; -extern const u32 gItemIconPalette_Latiosite[]; +extern const u16 gItemIconPalette_Latiosite[]; extern const u32 gItemIcon_Lopunnite[]; -extern const u32 gItemIconPalette_Lopunnite[]; +extern const u16 gItemIconPalette_Lopunnite[]; extern const u32 gItemIcon_Garchompite[]; -extern const u32 gItemIconPalette_Garchompite[]; +extern const u16 gItemIconPalette_Garchompite[]; extern const u32 gItemIcon_Lucarionite[]; -extern const u32 gItemIconPalette_Lucarionite[]; +extern const u16 gItemIconPalette_Lucarionite[]; extern const u32 gItemIcon_Abomasite[]; -extern const u32 gItemIconPalette_Abomasite[]; +extern const u16 gItemIconPalette_Abomasite[]; extern const u32 gItemIcon_Galladite[]; -extern const u32 gItemIconPalette_Galladite[]; +extern const u16 gItemIconPalette_Galladite[]; extern const u32 gItemIcon_Audinite[]; -extern const u32 gItemIconPalette_Audinite[]; +extern const u16 gItemIconPalette_Audinite[]; extern const u32 gItemIcon_Diancite[]; -extern const u32 gItemIconPalette_Diancite[]; +extern const u16 gItemIconPalette_Diancite[]; // Gems extern const u32 gItemIcon_NormalGem[]; -extern const u32 gItemIconPalette_NormalGem[]; +extern const u16 gItemIconPalette_NormalGem[]; extern const u32 gItemIcon_FireGem[]; -extern const u32 gItemIconPalette_FireGem[]; +extern const u16 gItemIconPalette_FireGem[]; extern const u32 gItemIcon_WaterGem[]; -extern const u32 gItemIconPalette_WaterGem[]; +extern const u16 gItemIconPalette_WaterGem[]; extern const u32 gItemIcon_ElectricGem[]; -extern const u32 gItemIconPalette_ElectricGem[]; +extern const u16 gItemIconPalette_ElectricGem[]; extern const u32 gItemIcon_GrassGem[]; -extern const u32 gItemIconPalette_GrassGem[]; +extern const u16 gItemIconPalette_GrassGem[]; extern const u32 gItemIcon_IceGem[]; -extern const u32 gItemIconPalette_IceGem[]; +extern const u16 gItemIconPalette_IceGem[]; extern const u32 gItemIcon_FightingGem[]; -extern const u32 gItemIconPalette_FightingGem[]; +extern const u16 gItemIconPalette_FightingGem[]; extern const u32 gItemIcon_PoisonGem[]; -extern const u32 gItemIconPalette_PoisonGem[]; +extern const u16 gItemIconPalette_PoisonGem[]; extern const u32 gItemIcon_GroundGem[]; -extern const u32 gItemIconPalette_GroundGem[]; +extern const u16 gItemIconPalette_GroundGem[]; extern const u32 gItemIcon_FlyingGem[]; -extern const u32 gItemIconPalette_FlyingGem[]; +extern const u16 gItemIconPalette_FlyingGem[]; extern const u32 gItemIcon_PsychicGem[]; -extern const u32 gItemIconPalette_PsychicGem[]; +extern const u16 gItemIconPalette_PsychicGem[]; extern const u32 gItemIcon_BugGem[]; -extern const u32 gItemIconPalette_BugGem[]; +extern const u16 gItemIconPalette_BugGem[]; extern const u32 gItemIcon_RockGem[]; -extern const u32 gItemIconPalette_RockGem[]; +extern const u16 gItemIconPalette_RockGem[]; extern const u32 gItemIcon_GhostGem[]; -extern const u32 gItemIconPalette_GhostGem[]; +extern const u16 gItemIconPalette_GhostGem[]; extern const u32 gItemIcon_DragonGem[]; -extern const u32 gItemIconPalette_DragonGem[]; +extern const u16 gItemIconPalette_DragonGem[]; extern const u32 gItemIcon_DarkGem[]; -extern const u32 gItemIconPalette_DarkGem[]; +extern const u16 gItemIconPalette_DarkGem[]; extern const u32 gItemIcon_SteelGem[]; -extern const u32 gItemIconPalette_SteelGem[]; +extern const u16 gItemIconPalette_SteelGem[]; extern const u32 gItemIcon_FairyGem[]; -extern const u32 gItemIconPalette_FairyGem[]; +extern const u16 gItemIconPalette_FairyGem[]; // Z-Crystals extern const u32 gItemIcon_NormaliumZ[]; -extern const u32 gItemIconPalette_NormaliumZ[]; +extern const u16 gItemIconPalette_NormaliumZ[]; extern const u32 gItemIcon_FiriumZ[]; -extern const u32 gItemIconPalette_FiriumZ[]; +extern const u16 gItemIconPalette_FiriumZ[]; extern const u32 gItemIcon_WateriumZ[]; -extern const u32 gItemIconPalette_WateriumZ[]; +extern const u16 gItemIconPalette_WateriumZ[]; extern const u32 gItemIcon_ElectriumZ[]; -extern const u32 gItemIconPalette_ElectriumZ[]; +extern const u16 gItemIconPalette_ElectriumZ[]; extern const u32 gItemIcon_GrassiumZ[]; -extern const u32 gItemIconPalette_GrassiumZ[]; +extern const u16 gItemIconPalette_GrassiumZ[]; extern const u32 gItemIcon_IciumZ[]; -extern const u32 gItemIconPalette_IciumZ[]; +extern const u16 gItemIconPalette_IciumZ[]; extern const u32 gItemIcon_FightiniumZ[]; -extern const u32 gItemIconPalette_FightiniumZ[]; +extern const u16 gItemIconPalette_FightiniumZ[]; extern const u32 gItemIcon_PoisoniumZ[]; -extern const u32 gItemIconPalette_PoisoniumZ[]; +extern const u16 gItemIconPalette_PoisoniumZ[]; extern const u32 gItemIcon_GroundiumZ[]; -extern const u32 gItemIconPalette_GroundiumZ[]; +extern const u16 gItemIconPalette_GroundiumZ[]; extern const u32 gItemIcon_FlyiniumZ[]; -extern const u32 gItemIconPalette_FlyiniumZ[]; +extern const u16 gItemIconPalette_FlyiniumZ[]; extern const u32 gItemIcon_PsychiumZ[]; -extern const u32 gItemIconPalette_PsychiumZ[]; +extern const u16 gItemIconPalette_PsychiumZ[]; extern const u32 gItemIcon_BuginiumZ[]; -extern const u32 gItemIconPalette_BuginiumZ[]; +extern const u16 gItemIconPalette_BuginiumZ[]; extern const u32 gItemIcon_RockiumZ[]; -extern const u32 gItemIconPalette_RockiumZ[]; +extern const u16 gItemIconPalette_RockiumZ[]; extern const u32 gItemIcon_GhostiumZ[]; -extern const u32 gItemIconPalette_GhostiumZ[]; +extern const u16 gItemIconPalette_GhostiumZ[]; extern const u32 gItemIcon_DragoniumZ[]; -extern const u32 gItemIconPalette_DragoniumZ[]; +extern const u16 gItemIconPalette_DragoniumZ[]; extern const u32 gItemIcon_DarkiniumZ[]; -extern const u32 gItemIconPalette_DarkiniumZ[]; +extern const u16 gItemIconPalette_DarkiniumZ[]; extern const u32 gItemIcon_SteeliumZ[]; -extern const u32 gItemIconPalette_SteeliumZ[]; +extern const u16 gItemIconPalette_SteeliumZ[]; extern const u32 gItemIcon_FairiumZ[]; -extern const u32 gItemIconPalette_FairiumZ[]; +extern const u16 gItemIconPalette_FairiumZ[]; extern const u32 gItemIcon_PikaniumZ[]; -extern const u32 gItemIconPalette_PikaniumZ[]; +extern const u16 gItemIconPalette_PikaniumZ[]; extern const u32 gItemIcon_EeviumZ[]; -extern const u32 gItemIconPalette_EeviumZ[]; +extern const u16 gItemIconPalette_EeviumZ[]; extern const u32 gItemIcon_SnorliumZ[]; -extern const u32 gItemIconPalette_SnorliumZ[]; +extern const u16 gItemIconPalette_SnorliumZ[]; extern const u32 gItemIcon_MewniumZ[]; -extern const u32 gItemIconPalette_MewniumZ[]; +extern const u16 gItemIconPalette_MewniumZ[]; extern const u32 gItemIcon_DecidiumZ[]; -extern const u32 gItemIconPalette_DecidiumZ[]; +extern const u16 gItemIconPalette_DecidiumZ[]; extern const u32 gItemIcon_InciniumZ[]; -extern const u32 gItemIconPalette_InciniumZ[]; +extern const u16 gItemIconPalette_InciniumZ[]; extern const u32 gItemIcon_PrimariumZ[]; -extern const u32 gItemIconPalette_PrimariumZ[]; +extern const u16 gItemIconPalette_PrimariumZ[]; extern const u32 gItemIcon_LycaniumZ[]; -extern const u32 gItemIconPalette_LycaniumZ[]; +extern const u16 gItemIconPalette_LycaniumZ[]; extern const u32 gItemIcon_MimikiumZ[]; -extern const u32 gItemIconPalette_MimikiumZ[]; +extern const u16 gItemIconPalette_MimikiumZ[]; extern const u32 gItemIcon_KommoniumZ[]; -extern const u32 gItemIconPalette_KommoniumZ[]; +extern const u16 gItemIconPalette_KommoniumZ[]; extern const u32 gItemIcon_TapuniumZ[]; -extern const u32 gItemIconPalette_TapuniumZ[]; +extern const u16 gItemIconPalette_TapuniumZ[]; extern const u32 gItemIcon_SolganiumZ[]; -extern const u32 gItemIconPalette_SolganiumZ[]; +extern const u16 gItemIconPalette_SolganiumZ[]; extern const u32 gItemIcon_LunaliumZ[]; -extern const u32 gItemIconPalette_LunaliumZ[]; +extern const u16 gItemIconPalette_LunaliumZ[]; extern const u32 gItemIcon_MarshadiumZ[]; -extern const u32 gItemIconPalette_MarshadiumZ[]; +extern const u16 gItemIconPalette_MarshadiumZ[]; extern const u32 gItemIcon_AloraichiumZ[]; -extern const u32 gItemIconPalette_AloraichiumZ[]; +extern const u16 gItemIconPalette_AloraichiumZ[]; extern const u32 gItemIcon_PikashuniumZ[]; -extern const u32 gItemIconPalette_PikashuniumZ[]; +extern const u16 gItemIconPalette_PikashuniumZ[]; extern const u32 gItemIcon_UltranecroziumZ[]; -extern const u32 gItemIconPalette_UltranecroziumZ[]; +extern const u16 gItemIconPalette_UltranecroziumZ[]; // Species-specific Held Items extern const u32 gItemIcon_LightBall[]; -extern const u32 gItemIconPalette_LightBall[]; +extern const u16 gItemIconPalette_LightBall[]; extern const u32 gItemIcon_Leek[]; -extern const u32 gItemIconPalette_Leek[]; +extern const u16 gItemIconPalette_Leek[]; extern const u32 gItemIcon_ThickClub[]; -extern const u32 gItemIconPalette_ThickClub[]; +extern const u16 gItemIconPalette_ThickClub[]; extern const u32 gItemIcon_LuckyPunch[]; -extern const u32 gItemIconPalette_LuckyPunch[]; +extern const u16 gItemIconPalette_LuckyPunch[]; extern const u32 gItemIcon_MetalPowder[]; -extern const u32 gItemIconPalette_MetalPowder[]; +extern const u16 gItemIconPalette_MetalPowder[]; extern const u32 gItemIcon_QuickPowder[]; -extern const u32 gItemIconPalette_QuickPowder[]; +extern const u16 gItemIconPalette_QuickPowder[]; extern const u32 gItemIcon_DeepSeaScale[]; -extern const u32 gItemIconPalette_DeepSeaScale[]; +extern const u16 gItemIconPalette_DeepSeaScale[]; extern const u32 gItemIcon_DeepSeaTooth[]; -extern const u32 gItemIconPalette_DeepSeaTooth[]; +extern const u16 gItemIconPalette_DeepSeaTooth[]; extern const u32 gItemIcon_SoulDew[]; -extern const u32 gItemIconPalette_SoulDew[]; +extern const u16 gItemIconPalette_SoulDew[]; extern const u32 gItemIcon_AdamantOrb[]; -extern const u32 gItemIconPalette_AdamantOrb[]; +extern const u16 gItemIconPalette_AdamantOrb[]; extern const u32 gItemIcon_LustrousOrb[]; -extern const u32 gItemIconPalette_LustrousOrb[]; +extern const u16 gItemIconPalette_LustrousOrb[]; extern const u32 gItemIcon_GriseousOrb[]; -extern const u32 gItemIconPalette_GriseousOrb[]; +extern const u16 gItemIconPalette_GriseousOrb[]; // Incenses extern const u32 gItemIcon_SeaIncense[]; -extern const u32 gItemIconPalette_SeaIncense[]; +extern const u16 gItemIconPalette_SeaIncense[]; extern const u32 gItemIcon_LaxIncense[]; -extern const u32 gItemIconPalette_LaxIncense[]; +extern const u16 gItemIconPalette_LaxIncense[]; extern const u32 gItemIcon_OddIncense[]; -extern const u32 gItemIconPalette_OddIncense[]; +extern const u16 gItemIconPalette_OddIncense[]; extern const u32 gItemIcon_RockIncense[]; -extern const u32 gItemIconPalette_RockIncense[]; +extern const u16 gItemIconPalette_RockIncense[]; extern const u32 gItemIcon_FullIncense[]; -extern const u32 gItemIconPalette_FullIncense[]; +extern const u16 gItemIconPalette_FullIncense[]; extern const u32 gItemIcon_WaveIncense[]; -extern const u32 gItemIconPalette_WaveIncense[]; +extern const u16 gItemIconPalette_WaveIncense[]; extern const u32 gItemIcon_RoseIncense[]; -extern const u32 gItemIconPalette_RoseIncense[]; +extern const u16 gItemIconPalette_RoseIncense[]; extern const u32 gItemIcon_LuckIncense[]; -extern const u32 gItemIconPalette_LuckIncense[]; +extern const u16 gItemIconPalette_LuckIncense[]; extern const u32 gItemIcon_PureIncense[]; -extern const u32 gItemIconPalette_PureIncense[]; +extern const u16 gItemIconPalette_PureIncense[]; // Contest Scarves extern const u32 gItemIcon_Scarf[]; -extern const u32 gItemIconPalette_RedScarf[]; -extern const u32 gItemIconPalette_BlueScarf[]; -extern const u32 gItemIconPalette_PinkScarf[]; -extern const u32 gItemIconPalette_GreenScarf[]; -extern const u32 gItemIconPalette_YellowScarf[]; +extern const u16 gItemIconPalette_RedScarf[]; +extern const u16 gItemIconPalette_BlueScarf[]; +extern const u16 gItemIconPalette_PinkScarf[]; +extern const u16 gItemIconPalette_GreenScarf[]; +extern const u16 gItemIconPalette_YellowScarf[]; // EV Gain Modifiers extern const u32 gItemIcon_MachoBrace[]; -extern const u32 gItemIconPalette_MachoBrace[]; +extern const u16 gItemIconPalette_MachoBrace[]; extern const u32 gItemIcon_PowerWeight[]; -extern const u32 gItemIconPalette_PowerWeight[]; +extern const u16 gItemIconPalette_PowerWeight[]; extern const u32 gItemIcon_PowerBracer[]; -extern const u32 gItemIconPalette_PowerBracer[]; +extern const u16 gItemIconPalette_PowerBracer[]; extern const u32 gItemIcon_PowerBelt[]; -extern const u32 gItemIconPalette_PowerBelt[]; +extern const u16 gItemIconPalette_PowerBelt[]; extern const u32 gItemIcon_PowerLens[]; -extern const u32 gItemIconPalette_PowerLens[]; +extern const u16 gItemIconPalette_PowerLens[]; extern const u32 gItemIcon_PowerBand[]; -extern const u32 gItemIconPalette_PowerBand[]; +extern const u16 gItemIconPalette_PowerBand[]; extern const u32 gItemIcon_PowerAnklet[]; -extern const u32 gItemIconPalette_PowerAnklet[]; +extern const u16 gItemIconPalette_PowerAnklet[]; // Type-boosting Held Items extern const u32 gItemIcon_SilkScarf[]; -extern const u32 gItemIconPalette_SilkScarf[]; +extern const u16 gItemIconPalette_SilkScarf[]; extern const u32 gItemIcon_Charcoal[]; -extern const u32 gItemIconPalette_Charcoal[]; +extern const u16 gItemIconPalette_Charcoal[]; extern const u32 gItemIcon_MysticWater[]; -extern const u32 gItemIconPalette_MysticWater[]; +extern const u16 gItemIconPalette_MysticWater[]; extern const u32 gItemIcon_Magnet[]; -extern const u32 gItemIconPalette_Magnet[]; +extern const u16 gItemIconPalette_Magnet[]; extern const u32 gItemIcon_MiracleSeed[]; -extern const u32 gItemIconPalette_MiracleSeed[]; +extern const u16 gItemIconPalette_MiracleSeed[]; extern const u32 gItemIcon_NeverMeltIce[]; -extern const u32 gItemIconPalette_NeverMeltIce[]; +extern const u16 gItemIconPalette_NeverMeltIce[]; extern const u32 gItemIcon_BlackBelt[]; -extern const u32 gItemIconPalette_BlackTypeEnhancingItem[]; +extern const u16 gItemIconPalette_BlackTypeEnhancingItem[]; extern const u32 gItemIcon_PoisonBarb[]; -extern const u32 gItemIconPalette_PoisonBarb[]; +extern const u16 gItemIconPalette_PoisonBarb[]; extern const u32 gItemIcon_SoftSand[]; -extern const u32 gItemIconPalette_SoftSand[]; +extern const u16 gItemIconPalette_SoftSand[]; extern const u32 gItemIcon_SharpBeak[]; -extern const u32 gItemIconPalette_SharpBeak[]; +extern const u16 gItemIconPalette_SharpBeak[]; extern const u32 gItemIcon_TwistedSpoon[]; -extern const u32 gItemIconPalette_TwistedSpoon[]; +extern const u16 gItemIconPalette_TwistedSpoon[]; extern const u32 gItemIcon_SilverPowder[]; -extern const u32 gItemIconPalette_SilverPowder[]; +extern const u16 gItemIconPalette_SilverPowder[]; extern const u32 gItemIcon_HardStone[]; -extern const u32 gItemIconPalette_HardStone[]; +extern const u16 gItemIconPalette_HardStone[]; extern const u32 gItemIcon_SpellTag[]; -extern const u32 gItemIconPalette_SpellTag[]; +extern const u16 gItemIconPalette_SpellTag[]; extern const u32 gItemIcon_DragonFang[]; -extern const u32 gItemIconPalette_DragonFang[]; +extern const u16 gItemIconPalette_DragonFang[]; extern const u32 gItemIcon_BlackGlasses[]; extern const u32 gItemIcon_MetalCoat[]; -extern const u32 gItemIconPalette_MetalCoat[]; +extern const u16 gItemIconPalette_MetalCoat[]; // Choice Items extern const u32 gItemIcon_ChoiceBand[]; -extern const u32 gItemIconPalette_ChoiceBand[]; +extern const u16 gItemIconPalette_ChoiceBand[]; extern const u32 gItemIcon_ChoiceSpecs[]; -extern const u32 gItemIconPalette_ChoiceSpecs[]; +extern const u16 gItemIconPalette_ChoiceSpecs[]; extern const u32 gItemIcon_ChoiceScarf[]; -extern const u32 gItemIconPalette_ChoiceScarf[]; +extern const u16 gItemIconPalette_ChoiceScarf[]; // Status Orbs extern const u32 gItemIcon_FlameOrb[]; -extern const u32 gItemIconPalette_FlameOrb[]; +extern const u16 gItemIconPalette_FlameOrb[]; extern const u32 gItemIcon_ToxicOrb[]; -extern const u32 gItemIconPalette_ToxicOrb[]; +extern const u16 gItemIconPalette_ToxicOrb[]; // Weather Rocks extern const u32 gItemIcon_DampRock[]; -extern const u32 gItemIconPalette_DampRock[]; +extern const u16 gItemIconPalette_DampRock[]; extern const u32 gItemIcon_HeatRock[]; -extern const u32 gItemIconPalette_HeatRock[]; +extern const u16 gItemIconPalette_HeatRock[]; extern const u32 gItemIcon_SmoothRock[]; -extern const u32 gItemIconPalette_SmoothRock[]; +extern const u16 gItemIconPalette_SmoothRock[]; extern const u32 gItemIcon_IcyRock[]; -extern const u32 gItemIconPalette_IcyRock[]; +extern const u16 gItemIconPalette_IcyRock[]; // Terrain Seeds extern const u32 gItemIcon_ElectricSeed[]; -extern const u32 gItemIconPalette_ElectricSeed[]; +extern const u16 gItemIconPalette_ElectricSeed[]; extern const u32 gItemIcon_PsychicSeed[]; -extern const u32 gItemIconPalette_PsychicSeed[]; +extern const u16 gItemIconPalette_PsychicSeed[]; extern const u32 gItemIcon_MistySeed[]; -extern const u32 gItemIconPalette_MistySeed[]; +extern const u16 gItemIconPalette_MistySeed[]; extern const u32 gItemIcon_GrassySeed[]; -extern const u32 gItemIconPalette_GrassySeed[]; +extern const u16 gItemIconPalette_GrassySeed[]; // Type-activated Stat Modifiers extern const u32 gItemIcon_AbsorbBulb[]; -extern const u32 gItemIconPalette_AbsorbBulb[]; +extern const u16 gItemIconPalette_AbsorbBulb[]; extern const u32 gItemIcon_CellBattery[]; -extern const u32 gItemIconPalette_CellBattery[]; +extern const u16 gItemIconPalette_CellBattery[]; extern const u32 gItemIcon_LuminousMoss[]; -extern const u32 gItemIconPalette_LuminousMoss[]; +extern const u16 gItemIconPalette_LuminousMoss[]; extern const u32 gItemIcon_Snowball[]; -extern const u32 gItemIconPalette_Snowball[]; +extern const u16 gItemIconPalette_Snowball[]; // Misc. Held Items extern const u32 gItemIcon_BrightPowder[]; -extern const u32 gItemIconPalette_BrightPowder[]; +extern const u16 gItemIconPalette_BrightPowder[]; extern const u32 gItemIcon_InBattleHerb[]; -extern const u32 gItemIconPalette_WhiteHerb[]; +extern const u16 gItemIconPalette_WhiteHerb[]; extern const u32 gItemIcon_ExpShare[]; -extern const u32 gItemIconPalette_ExpShare[]; +extern const u16 gItemIconPalette_ExpShare[]; extern const u32 gItemIcon_QuickClaw[]; -extern const u32 gItemIconPalette_QuickClaw[]; +extern const u16 gItemIconPalette_QuickClaw[]; extern const u32 gItemIcon_SootheBell[]; -extern const u32 gItemIconPalette_SootheBell[]; -extern const u32 gItemIconPalette_MentalHerb[]; +extern const u16 gItemIconPalette_SootheBell[]; +extern const u16 gItemIconPalette_MentalHerb[]; extern const u32 gItemIcon_KingsRock[]; -extern const u32 gItemIconPalette_KingsRock[]; +extern const u16 gItemIconPalette_KingsRock[]; extern const u32 gItemIcon_AmuletCoin[]; -extern const u32 gItemIconPalette_AmuletCoin[]; +extern const u16 gItemIconPalette_AmuletCoin[]; extern const u32 gItemIcon_CleanseTag[]; -extern const u32 gItemIconPalette_CleanseTag[]; +extern const u16 gItemIconPalette_CleanseTag[]; extern const u32 gItemIcon_SmokeBall[]; -extern const u32 gItemIconPalette_SmokeBall[]; +extern const u16 gItemIconPalette_SmokeBall[]; extern const u32 gItemIcon_FocusBand[]; -extern const u32 gItemIconPalette_FocusBand[]; +extern const u16 gItemIconPalette_FocusBand[]; extern const u32 gItemIcon_LuckyEgg[]; -extern const u32 gItemIconPalette_LuckyEgg[]; +extern const u16 gItemIconPalette_LuckyEgg[]; extern const u32 gItemIcon_ScopeLens[]; -extern const u32 gItemIconPalette_ScopeLens[]; +extern const u16 gItemIconPalette_ScopeLens[]; extern const u32 gItemIcon_Leftovers[]; -extern const u32 gItemIconPalette_Leftovers[]; +extern const u16 gItemIconPalette_Leftovers[]; extern const u32 gItemIcon_ShellBell[]; extern const u32 gItemIcon_WideLens[]; -extern const u32 gItemIconPalette_WideLens[]; +extern const u16 gItemIconPalette_WideLens[]; extern const u32 gItemIcon_MuscleBand[]; -extern const u32 gItemIconPalette_MuscleBand[]; +extern const u16 gItemIconPalette_MuscleBand[]; extern const u32 gItemIcon_WiseGlasses[]; -extern const u32 gItemIconPalette_WiseGlasses[]; +extern const u16 gItemIconPalette_WiseGlasses[]; extern const u32 gItemIcon_ExpertBelt[]; -extern const u32 gItemIconPalette_ExpertBelt[]; +extern const u16 gItemIconPalette_ExpertBelt[]; extern const u32 gItemIcon_LightClay[]; -extern const u32 gItemIconPalette_LightClay[]; +extern const u16 gItemIconPalette_LightClay[]; extern const u32 gItemIcon_LifeOrb[]; -extern const u32 gItemIconPalette_LifeOrb[]; +extern const u16 gItemIconPalette_LifeOrb[]; extern const u32 gItemIcon_PowerHerb[]; -extern const u32 gItemIconPalette_PowerHerb[]; +extern const u16 gItemIconPalette_PowerHerb[]; extern const u32 gItemIcon_FocusSash[]; -extern const u32 gItemIconPalette_FocusSash[]; +extern const u16 gItemIconPalette_FocusSash[]; extern const u32 gItemIcon_ZoomLens[]; -extern const u32 gItemIconPalette_ZoomLens[]; +extern const u16 gItemIconPalette_ZoomLens[]; extern const u32 gItemIcon_Metronome[]; -extern const u32 gItemIconPalette_Metronome[]; +extern const u16 gItemIconPalette_Metronome[]; extern const u32 gItemIcon_IronBall[]; -extern const u32 gItemIconPalette_IronBall[]; +extern const u16 gItemIconPalette_IronBall[]; extern const u32 gItemIcon_LaggingTail[]; -extern const u32 gItemIconPalette_LaggingTail[]; +extern const u16 gItemIconPalette_LaggingTail[]; extern const u32 gItemIcon_DestinyKnot[]; -extern const u32 gItemIconPalette_DestinyKnot[]; +extern const u16 gItemIconPalette_DestinyKnot[]; extern const u32 gItemIcon_BlackSludge[]; -extern const u32 gItemIconPalette_BlackSludge[]; +extern const u16 gItemIconPalette_BlackSludge[]; extern const u32 gItemIcon_GripClaw[]; -extern const u32 gItemIconPalette_GripClaw[]; +extern const u16 gItemIconPalette_GripClaw[]; extern const u32 gItemIcon_StickyBarb[]; -extern const u32 gItemIconPalette_StickyBarb[]; +extern const u16 gItemIconPalette_StickyBarb[]; extern const u32 gItemIcon_ShedShell[]; -extern const u32 gItemIconPalette_ShedShell[]; +extern const u16 gItemIconPalette_ShedShell[]; extern const u32 gItemIcon_BigRoot[]; -extern const u32 gItemIconPalette_BigRoot[]; +extern const u16 gItemIconPalette_BigRoot[]; extern const u32 gItemIcon_RazorClaw[]; -extern const u32 gItemIconPalette_RazorClaw[]; +extern const u16 gItemIconPalette_RazorClaw[]; extern const u32 gItemIcon_RazorFang[]; -extern const u32 gItemIconPalette_RazorFang[]; +extern const u16 gItemIconPalette_RazorFang[]; extern const u32 gItemIcon_Eviolite[]; -extern const u32 gItemIconPalette_Eviolite[]; +extern const u16 gItemIconPalette_Eviolite[]; extern const u32 gItemIcon_FloatStone[]; -extern const u32 gItemIconPalette_FloatStone[]; +extern const u16 gItemIconPalette_FloatStone[]; extern const u32 gItemIcon_RockyHelmet[]; -extern const u32 gItemIconPalette_RockyHelmet[]; +extern const u16 gItemIconPalette_RockyHelmet[]; extern const u32 gItemIcon_AirBalloon[]; -extern const u32 gItemIconPalette_AirBalloon[]; +extern const u16 gItemIconPalette_AirBalloon[]; extern const u32 gItemIcon_RedCard[]; -extern const u32 gItemIconPalette_RedCard[]; +extern const u16 gItemIconPalette_RedCard[]; extern const u32 gItemIcon_RingTarget[]; -extern const u32 gItemIconPalette_RingTarget[]; +extern const u16 gItemIconPalette_RingTarget[]; extern const u32 gItemIcon_BindingBand[]; -extern const u32 gItemIconPalette_BindingBand[]; +extern const u16 gItemIconPalette_BindingBand[]; extern const u32 gItemIcon_EjectButton[]; -extern const u32 gItemIconPalette_EjectButton[]; +extern const u16 gItemIconPalette_EjectButton[]; extern const u32 gItemIcon_WeaknessPolicy[]; -extern const u32 gItemIconPalette_WeaknessPolicy[]; +extern const u16 gItemIconPalette_WeaknessPolicy[]; extern const u32 gItemIcon_AssaultVest[]; -extern const u32 gItemIconPalette_AssaultVest[]; +extern const u16 gItemIconPalette_AssaultVest[]; extern const u32 gItemIcon_SafetyGoggles[]; -extern const u32 gItemIconPalette_SafetyGoggles[]; +extern const u16 gItemIconPalette_SafetyGoggles[]; extern const u32 gItemIcon_AdrenalineOrb[]; -extern const u32 gItemIconPalette_AdrenalineOrb[]; +extern const u16 gItemIconPalette_AdrenalineOrb[]; extern const u32 gItemIcon_TerrainExtender[]; -extern const u32 gItemIconPalette_TerrainExtender[]; +extern const u16 gItemIconPalette_TerrainExtender[]; extern const u32 gItemIcon_ProtectivePads[]; -extern const u32 gItemIconPalette_ProtectivePads[]; +extern const u16 gItemIconPalette_ProtectivePads[]; extern const u32 gItemIcon_ThroatSpray[]; -extern const u32 gItemIconPalette_ThroatSpray[]; +extern const u16 gItemIconPalette_ThroatSpray[]; extern const u32 gItemIcon_EjectPack[]; -extern const u32 gItemIconPalette_EjectPack[]; +extern const u16 gItemIconPalette_EjectPack[]; extern const u32 gItemIcon_HeavyDutyBoots[]; -extern const u32 gItemIconPalette_HeavyDutyBoots[]; +extern const u16 gItemIconPalette_HeavyDutyBoots[]; extern const u32 gItemIcon_BlunderPolicy[]; -extern const u32 gItemIconPalette_BlunderPolicy[]; +extern const u16 gItemIconPalette_BlunderPolicy[]; extern const u32 gItemIcon_RoomService[]; -extern const u32 gItemIconPalette_RoomService[]; +extern const u16 gItemIconPalette_RoomService[]; extern const u32 gItemIcon_UtilityUmbrella[]; -extern const u32 gItemIconPalette_UtilityUmbrella[]; +extern const u16 gItemIconPalette_UtilityUmbrella[]; // Berries extern const u32 gItemIcon_CheriBerry[]; -extern const u32 gItemIconPalette_CheriBerry[]; +extern const u16 gItemIconPalette_CheriBerry[]; extern const u32 gItemIcon_ChestoBerry[]; -extern const u32 gItemIconPalette_ChestoBerry[]; +extern const u16 gItemIconPalette_ChestoBerry[]; extern const u32 gItemIcon_PechaBerry[]; -extern const u32 gItemIconPalette_PechaBerry[]; +extern const u16 gItemIconPalette_PechaBerry[]; extern const u32 gItemIcon_RawstBerry[]; -extern const u32 gItemIconPalette_RawstBerry[]; +extern const u16 gItemIconPalette_RawstBerry[]; extern const u32 gItemIcon_AspearBerry[]; -extern const u32 gItemIconPalette_AspearBerry[]; +extern const u16 gItemIconPalette_AspearBerry[]; extern const u32 gItemIcon_LeppaBerry[]; -extern const u32 gItemIconPalette_LeppaBerry[]; +extern const u16 gItemIconPalette_LeppaBerry[]; extern const u32 gItemIcon_OranBerry[]; -extern const u32 gItemIconPalette_OranBerry[]; +extern const u16 gItemIconPalette_OranBerry[]; extern const u32 gItemIcon_PersimBerry[]; -extern const u32 gItemIconPalette_PersimBerry[]; +extern const u16 gItemIconPalette_PersimBerry[]; extern const u32 gItemIcon_LumBerry[]; -extern const u32 gItemIconPalette_LumBerry[]; +extern const u16 gItemIconPalette_LumBerry[]; extern const u32 gItemIcon_SitrusBerry[]; -extern const u32 gItemIconPalette_SitrusBerry[]; +extern const u16 gItemIconPalette_SitrusBerry[]; extern const u32 gItemIcon_FigyBerry[]; -extern const u32 gItemIconPalette_FigyBerry[]; +extern const u16 gItemIconPalette_FigyBerry[]; extern const u32 gItemIcon_WikiBerry[]; -extern const u32 gItemIconPalette_WikiBerry[]; +extern const u16 gItemIconPalette_WikiBerry[]; extern const u32 gItemIcon_MagoBerry[]; -extern const u32 gItemIconPalette_MagoBerry[]; +extern const u16 gItemIconPalette_MagoBerry[]; extern const u32 gItemIcon_AguavBerry[]; -extern const u32 gItemIconPalette_AguavBerry[]; +extern const u16 gItemIconPalette_AguavBerry[]; extern const u32 gItemIcon_IapapaBerry[]; -extern const u32 gItemIconPalette_IapapaBerry[]; +extern const u16 gItemIconPalette_IapapaBerry[]; extern const u32 gItemIcon_RazzBerry[]; -extern const u32 gItemIconPalette_RazzBerry[]; +extern const u16 gItemIconPalette_RazzBerry[]; extern const u32 gItemIcon_BlukBerry[]; -extern const u32 gItemIconPalette_BlukBerry[]; +extern const u16 gItemIconPalette_BlukBerry[]; extern const u32 gItemIcon_NanabBerry[]; -extern const u32 gItemIconPalette_NanabBerry[]; +extern const u16 gItemIconPalette_NanabBerry[]; extern const u32 gItemIcon_WepearBerry[]; -extern const u32 gItemIconPalette_WepearBerry[]; +extern const u16 gItemIconPalette_WepearBerry[]; extern const u32 gItemIcon_PinapBerry[]; -extern const u32 gItemIconPalette_PinapBerry[]; +extern const u16 gItemIconPalette_PinapBerry[]; extern const u32 gItemIcon_PomegBerry[]; -extern const u32 gItemIconPalette_PomegBerry[]; +extern const u16 gItemIconPalette_PomegBerry[]; extern const u32 gItemIcon_KelpsyBerry[]; -extern const u32 gItemIconPalette_KelpsyBerry[]; +extern const u16 gItemIconPalette_KelpsyBerry[]; extern const u32 gItemIcon_QualotBerry[]; -extern const u32 gItemIconPalette_QualotBerry[]; +extern const u16 gItemIconPalette_QualotBerry[]; extern const u32 gItemIcon_HondewBerry[]; -extern const u32 gItemIconPalette_HondewBerry[]; +extern const u16 gItemIconPalette_HondewBerry[]; extern const u32 gItemIcon_GrepaBerry[]; -extern const u32 gItemIconPalette_GrepaBerry[]; +extern const u16 gItemIconPalette_GrepaBerry[]; extern const u32 gItemIcon_TamatoBerry[]; -extern const u32 gItemIconPalette_TamatoBerry[]; +extern const u16 gItemIconPalette_TamatoBerry[]; extern const u32 gItemIcon_CornnBerry[]; -extern const u32 gItemIconPalette_CornnBerry[]; +extern const u16 gItemIconPalette_CornnBerry[]; extern const u32 gItemIcon_MagostBerry[]; -extern const u32 gItemIconPalette_MagostBerry[]; +extern const u16 gItemIconPalette_MagostBerry[]; extern const u32 gItemIcon_RabutaBerry[]; -extern const u32 gItemIconPalette_RabutaBerry[]; +extern const u16 gItemIconPalette_RabutaBerry[]; extern const u32 gItemIcon_NomelBerry[]; -extern const u32 gItemIconPalette_NomelBerry[]; +extern const u16 gItemIconPalette_NomelBerry[]; extern const u32 gItemIcon_SpelonBerry[]; -extern const u32 gItemIconPalette_SpelonBerry[]; +extern const u16 gItemIconPalette_SpelonBerry[]; extern const u32 gItemIcon_PamtreBerry[]; -extern const u32 gItemIconPalette_PamtreBerry[]; +extern const u16 gItemIconPalette_PamtreBerry[]; extern const u32 gItemIcon_WatmelBerry[]; -extern const u32 gItemIconPalette_WatmelBerry[]; +extern const u16 gItemIconPalette_WatmelBerry[]; extern const u32 gItemIcon_DurinBerry[]; -extern const u32 gItemIconPalette_DurinBerry[]; +extern const u16 gItemIconPalette_DurinBerry[]; extern const u32 gItemIcon_BelueBerry[]; -extern const u32 gItemIconPalette_BelueBerry[]; +extern const u16 gItemIconPalette_BelueBerry[]; extern const u32 gItemIcon_ChilanBerry[]; -extern const u32 gItemIconPalette_ChilanBerry[]; +extern const u16 gItemIconPalette_ChilanBerry[]; extern const u32 gItemIcon_OccaBerry[]; -extern const u32 gItemIconPalette_OccaBerry[]; +extern const u16 gItemIconPalette_OccaBerry[]; extern const u32 gItemIcon_PasshoBerry[]; -extern const u32 gItemIconPalette_PasshoBerry[]; +extern const u16 gItemIconPalette_PasshoBerry[]; extern const u32 gItemIcon_WacanBerry[]; -extern const u32 gItemIconPalette_WacanBerry[]; +extern const u16 gItemIconPalette_WacanBerry[]; extern const u32 gItemIcon_RindoBerry[]; -extern const u32 gItemIconPalette_RindoBerry[]; +extern const u16 gItemIconPalette_RindoBerry[]; extern const u32 gItemIcon_YacheBerry[]; -extern const u32 gItemIconPalette_YacheBerry[]; +extern const u16 gItemIconPalette_YacheBerry[]; extern const u32 gItemIcon_ChopleBerry[]; -extern const u32 gItemIconPalette_ChopleBerry[]; +extern const u16 gItemIconPalette_ChopleBerry[]; extern const u32 gItemIcon_KebiaBerry[]; -extern const u32 gItemIconPalette_KebiaBerry[]; +extern const u16 gItemIconPalette_KebiaBerry[]; extern const u32 gItemIcon_ShucaBerry[]; -extern const u32 gItemIconPalette_ShucaBerry[]; +extern const u16 gItemIconPalette_ShucaBerry[]; extern const u32 gItemIcon_CobaBerry[]; -extern const u32 gItemIconPalette_CobaBerry[]; +extern const u16 gItemIconPalette_CobaBerry[]; extern const u32 gItemIcon_PayapaBerry[]; -extern const u32 gItemIconPalette_PayapaBerry[]; +extern const u16 gItemIconPalette_PayapaBerry[]; extern const u32 gItemIcon_TangaBerry[]; -extern const u32 gItemIconPalette_TangaBerry[]; +extern const u16 gItemIconPalette_TangaBerry[]; extern const u32 gItemIcon_ChartiBerry[]; -extern const u32 gItemIconPalette_ChartiBerry[]; +extern const u16 gItemIconPalette_ChartiBerry[]; extern const u32 gItemIcon_KasibBerry[]; -extern const u32 gItemIconPalette_KasibBerry[]; +extern const u16 gItemIconPalette_KasibBerry[]; extern const u32 gItemIcon_HabanBerry[]; -extern const u32 gItemIconPalette_HabanBerry[]; +extern const u16 gItemIconPalette_HabanBerry[]; extern const u32 gItemIcon_ColburBerry[]; -extern const u32 gItemIconPalette_ColburBerry[]; +extern const u16 gItemIconPalette_ColburBerry[]; extern const u32 gItemIcon_BabiriBerry[]; -extern const u32 gItemIconPalette_BabiriBerry[]; +extern const u16 gItemIconPalette_BabiriBerry[]; extern const u32 gItemIcon_RoseliBerry[]; -extern const u32 gItemIconPalette_RoseliBerry[]; +extern const u16 gItemIconPalette_RoseliBerry[]; extern const u32 gItemIcon_LiechiBerry[]; -extern const u32 gItemIconPalette_LiechiBerry[]; +extern const u16 gItemIconPalette_LiechiBerry[]; extern const u32 gItemIcon_GanlonBerry[]; -extern const u32 gItemIconPalette_GanlonBerry[]; +extern const u16 gItemIconPalette_GanlonBerry[]; extern const u32 gItemIcon_SalacBerry[]; -extern const u32 gItemIconPalette_SalacBerry[]; +extern const u16 gItemIconPalette_SalacBerry[]; extern const u32 gItemIcon_PetayaBerry[]; -extern const u32 gItemIconPalette_PetayaBerry[]; +extern const u16 gItemIconPalette_PetayaBerry[]; extern const u32 gItemIcon_ApicotBerry[]; -extern const u32 gItemIconPalette_ApicotBerry[]; +extern const u16 gItemIconPalette_ApicotBerry[]; extern const u32 gItemIcon_LansatBerry[]; -extern const u32 gItemIconPalette_LansatBerry[]; +extern const u16 gItemIconPalette_LansatBerry[]; extern const u32 gItemIcon_StarfBerry[]; -extern const u32 gItemIconPalette_StarfBerry[]; +extern const u16 gItemIconPalette_StarfBerry[]; extern const u32 gItemIcon_EnigmaBerry[]; -extern const u32 gItemIconPalette_EnigmaBerry[]; +extern const u16 gItemIconPalette_EnigmaBerry[]; extern const u32 gItemIcon_MicleBerry[]; -extern const u32 gItemIconPalette_MicleBerry[]; +extern const u16 gItemIconPalette_MicleBerry[]; extern const u32 gItemIcon_CustapBerry[]; -extern const u32 gItemIconPalette_CustapBerry[]; +extern const u16 gItemIconPalette_CustapBerry[]; extern const u32 gItemIcon_JabocaBerry[]; -extern const u32 gItemIconPalette_JabocaBerry[]; +extern const u16 gItemIconPalette_JabocaBerry[]; extern const u32 gItemIcon_RowapBerry[]; -extern const u32 gItemIconPalette_RowapBerry[]; +extern const u16 gItemIconPalette_RowapBerry[]; extern const u32 gItemIcon_KeeBerry[]; -extern const u32 gItemIconPalette_KeeBerry[]; +extern const u16 gItemIconPalette_KeeBerry[]; extern const u32 gItemIcon_MarangaBerry[]; -extern const u32 gItemIconPalette_MarangaBerry[]; +extern const u16 gItemIconPalette_MarangaBerry[]; // TMs/HMs extern const u32 gItemIcon_TM[]; extern const u32 gItemIcon_HM[]; -extern const u32 gItemIconPalette_NormalTMHM[]; -extern const u32 gItemIconPalette_FireTMHM[]; -extern const u32 gItemIconPalette_WaterTMHM[]; -extern const u32 gItemIconPalette_ElectricTMHM[]; -extern const u32 gItemIconPalette_GrassTMHM[]; -extern const u32 gItemIconPalette_IceTMHM[]; -extern const u32 gItemIconPalette_FightingTMHM[]; -extern const u32 gItemIconPalette_PoisonTMHM[]; -extern const u32 gItemIconPalette_GroundTMHM[]; -extern const u32 gItemIconPalette_FlyingTMHM[]; -extern const u32 gItemIconPalette_PsychicTMHM[]; -extern const u32 gItemIconPalette_BugTMHM[]; -extern const u32 gItemIconPalette_RockTMHM[]; -extern const u32 gItemIconPalette_GhostTMHM[]; -extern const u32 gItemIconPalette_DragonTMHM[]; -extern const u32 gItemIconPalette_DarkTMHM[]; -extern const u32 gItemIconPalette_SteelTMHM[]; -extern const u32 gItemIconPalette_FairyTMHM[]; +extern const u16 gItemIconPalette_NormalTMHM[]; +extern const u16 gItemIconPalette_FireTMHM[]; +extern const u16 gItemIconPalette_WaterTMHM[]; +extern const u16 gItemIconPalette_ElectricTMHM[]; +extern const u16 gItemIconPalette_GrassTMHM[]; +extern const u16 gItemIconPalette_IceTMHM[]; +extern const u16 gItemIconPalette_FightingTMHM[]; +extern const u16 gItemIconPalette_PoisonTMHM[]; +extern const u16 gItemIconPalette_GroundTMHM[]; +extern const u16 gItemIconPalette_FlyingTMHM[]; +extern const u16 gItemIconPalette_PsychicTMHM[]; +extern const u16 gItemIconPalette_BugTMHM[]; +extern const u16 gItemIconPalette_RockTMHM[]; +extern const u16 gItemIconPalette_GhostTMHM[]; +extern const u16 gItemIconPalette_DragonTMHM[]; +extern const u16 gItemIconPalette_DarkTMHM[]; +extern const u16 gItemIconPalette_SteelTMHM[]; +extern const u16 gItemIconPalette_FairyTMHM[]; // Charms extern const u32 gItemIcon_OvalCharm[]; -extern const u32 gItemIconPalette_OvalCharm[]; +extern const u16 gItemIconPalette_OvalCharm[]; extern const u32 gItemIcon_ShinyCharm[]; -extern const u32 gItemIconPalette_ShinyCharm[]; +extern const u16 gItemIconPalette_ShinyCharm[]; extern const u32 gItemIcon_CatchingCharm[]; -extern const u32 gItemIconPalette_CatchingCharm[]; +extern const u16 gItemIconPalette_CatchingCharm[]; extern const u32 gItemIcon_ExpCharm[]; -extern const u32 gItemIconPalette_ExpCharm[]; +extern const u16 gItemIconPalette_ExpCharm[]; extern const u32 gItemIcon_GlimmeringCharm[]; -extern const u32 gItemIconPalette_GlimmeringCharm[]; +extern const u16 gItemIconPalette_GlimmeringCharm[]; // Form-changing Key Items extern const u32 gItemIcon_RotomCatalog[]; -extern const u32 gItemIconPalette_RotomCatalog[]; +extern const u16 gItemIconPalette_RotomCatalog[]; extern const u32 gItemIcon_Gracidea[]; -extern const u32 gItemIconPalette_Gracidea[]; +extern const u16 gItemIconPalette_Gracidea[]; extern const u32 gItemIcon_RevealGlass[]; -extern const u32 gItemIconPalette_RevealGlass[]; +extern const u16 gItemIconPalette_RevealGlass[]; extern const u32 gItemIcon_DNASplicers[]; -extern const u32 gItemIconPalette_DNASplicers[]; +extern const u16 gItemIconPalette_DNASplicers[]; extern const u32 gItemIcon_ZygardeCube[]; -extern const u32 gItemIconPalette_ZygardeCube[]; +extern const u16 gItemIconPalette_ZygardeCube[]; extern const u32 gItemIcon_PrisonBottle[]; -extern const u32 gItemIconPalette_PrisonBottle[]; +extern const u16 gItemIconPalette_PrisonBottle[]; extern const u32 gItemIcon_NecrozmaFuser[]; -extern const u32 gItemIconPalette_NSolarizer[]; -extern const u32 gItemIconPalette_NLunarizer[]; +extern const u16 gItemIconPalette_NSolarizer[]; +extern const u16 gItemIconPalette_NLunarizer[]; extern const u32 gItemIcon_ReinsOfUnity[]; -extern const u32 gItemIconPalette_ReinsOfUnity[]; +extern const u16 gItemIconPalette_ReinsOfUnity[]; // Battle Mechanic Key Items extern const u32 gItemIcon_MegaRing[]; -extern const u32 gItemIconPalette_MegaRing[]; +extern const u16 gItemIconPalette_MegaRing[]; extern const u32 gItemIcon_ZPowerRing[]; -extern const u32 gItemIconPalette_ZPowerRing[]; +extern const u16 gItemIconPalette_ZPowerRing[]; extern const u32 gItemIcon_DynamaxBand[]; -extern const u32 gItemIconPalette_DynamaxBand[]; +extern const u16 gItemIconPalette_DynamaxBand[]; // Misc. Key Items extern const u32 gItemIcon_Bicycle[]; -extern const u32 gItemIconPalette_Bicycle[]; +extern const u16 gItemIconPalette_Bicycle[]; extern const u32 gItemIcon_MachBike[]; -extern const u32 gItemIconPalette_MachBike[]; +extern const u16 gItemIconPalette_MachBike[]; extern const u32 gItemIcon_AcroBike[]; -extern const u32 gItemIconPalette_AcroBike[]; +extern const u16 gItemIconPalette_AcroBike[]; extern const u32 gItemIcon_OldRod[]; -extern const u32 gItemIconPalette_OldRod[]; +extern const u16 gItemIconPalette_OldRod[]; extern const u32 gItemIcon_GoodRod[]; -extern const u32 gItemIconPalette_GoodRod[]; +extern const u16 gItemIconPalette_GoodRod[]; extern const u32 gItemIcon_SuperRod[]; -extern const u32 gItemIconPalette_SuperRod[]; +extern const u16 gItemIconPalette_SuperRod[]; extern const u32 gItemIcon_DowsingMachine[]; -extern const u32 gItemIconPalette_DowsingMachine[]; +extern const u16 gItemIconPalette_DowsingMachine[]; extern const u32 gItemIcon_TownMap[]; -extern const u32 gItemIconPalette_TownMap[]; +extern const u16 gItemIconPalette_TownMap[]; extern const u32 gItemIcon_VsSeeker[]; -extern const u32 gItemIconPalette_VsSeeker[]; +extern const u16 gItemIconPalette_VsSeeker[]; extern const u32 gItemIcon_TMCase[]; -extern const u32 gItemIconPalette_TMCase[]; +extern const u16 gItemIconPalette_TMCase[]; extern const u32 gItemIcon_BerryPouch[]; -extern const u32 gItemIconPalette_BerryPouch[]; +extern const u16 gItemIconPalette_BerryPouch[]; extern const u32 gItemIcon_PokemonBoxLink[]; -extern const u32 gItemIconPalette_PokemonBoxLink[]; +extern const u16 gItemIconPalette_PokemonBoxLink[]; extern const u32 gItemIcon_CoinCase[]; -extern const u32 gItemIconPalette_CoinCase[]; +extern const u16 gItemIconPalette_CoinCase[]; extern const u32 gItemIcon_PowderJar[]; -extern const u32 gItemIconPalette_PowderJar[]; +extern const u16 gItemIconPalette_PowderJar[]; extern const u32 gItemIcon_WailmerPail[]; -extern const u32 gItemIconPalette_WailmerPail[]; +extern const u16 gItemIconPalette_WailmerPail[]; extern const u32 gItemIcon_PokeRadar[]; -extern const u32 gItemIconPalette_PokeRadar[]; +extern const u16 gItemIconPalette_PokeRadar[]; extern const u32 gItemIcon_PokeblockCase[]; -extern const u32 gItemIconPalette_PokeblockCase[]; +extern const u16 gItemIconPalette_PokeblockCase[]; extern const u32 gItemIcon_SootSack[]; -extern const u32 gItemIconPalette_SootSack[]; +extern const u16 gItemIconPalette_SootSack[]; extern const u32 gItemIcon_PokeFlute[]; -extern const u32 gItemIconPalette_PokeFlute[]; +extern const u16 gItemIconPalette_PokeFlute[]; extern const u32 gItemIcon_FameChecker[]; -extern const u32 gItemIconPalette_FameChecker[]; +extern const u16 gItemIconPalette_FameChecker[]; extern const u32 gItemIcon_TeachyTV[]; -extern const u32 gItemIconPalette_TeachyTV[]; +extern const u16 gItemIconPalette_TeachyTV[]; // Story Key Items extern const u32 gItemIcon_SSTicket[]; -extern const u32 gItemIconPalette_SSTicket[]; +extern const u16 gItemIconPalette_SSTicket[]; extern const u32 gItemIcon_EonTicket[]; -extern const u32 gItemIconPalette_EonTicket[]; +extern const u16 gItemIconPalette_EonTicket[]; extern const u32 gItemIcon_MysticTicket[]; -extern const u32 gItemIconPalette_MysticTicket[]; +extern const u16 gItemIconPalette_MysticTicket[]; extern const u32 gItemIcon_AuroraTicket[]; -extern const u32 gItemIconPalette_AuroraTicket[]; +extern const u16 gItemIconPalette_AuroraTicket[]; extern const u32 gItemIcon_OldSeaMap[]; -extern const u32 gItemIconPalette_OldSeaMap[]; +extern const u16 gItemIconPalette_OldSeaMap[]; extern const u32 gItemIcon_Letter[]; extern const u32 gItemIcon_DevonParts[]; -extern const u32 gItemIconPalette_DevonParts[]; +extern const u16 gItemIconPalette_DevonParts[]; extern const u32 gItemIcon_GoGoggles[]; -extern const u32 gItemIconPalette_GoGoggles[]; +extern const u16 gItemIconPalette_GoGoggles[]; extern const u32 gItemIcon_DevonScope[]; -extern const u32 gItemIconPalette_DevonScope[]; +extern const u16 gItemIconPalette_DevonScope[]; extern const u32 gItemIcon_BasementKey[]; -extern const u32 gItemIconPalette_OldKey[]; +extern const u16 gItemIconPalette_OldKey[]; extern const u32 gItemIcon_Scanner[]; -extern const u32 gItemIconPalette_Scanner[]; +extern const u16 gItemIconPalette_Scanner[]; extern const u32 gItemIcon_StorageKey[]; extern const u32 gItemIcon_KeyToRoom1[]; -extern const u32 gItemIconPalette_Key[]; +extern const u16 gItemIconPalette_Key[]; extern const u32 gItemIcon_KeyToRoom2[]; extern const u32 gItemIcon_KeyToRoom4[]; extern const u32 gItemIcon_KeyToRoom6[]; extern const u32 gItemIcon_Meteorite[]; -extern const u32 gItemIconPalette_Meteorite[]; +extern const u16 gItemIconPalette_Meteorite[]; extern const u32 gItemIcon_MagmaEmblem[]; -extern const u32 gItemIconPalette_MagmaEmblem[]; +extern const u16 gItemIconPalette_MagmaEmblem[]; extern const u32 gItemIcon_ContestPass[]; -extern const u32 gItemIconPalette_ContestPass[]; +extern const u16 gItemIconPalette_ContestPass[]; extern const u32 gItemIcon_Parcel[]; -extern const u32 gItemIconPalette_Parcel[]; +extern const u16 gItemIconPalette_Parcel[]; extern const u32 gItemIcon_SecretKey[]; -extern const u32 gItemIconPalette_SecretKey[]; +extern const u16 gItemIconPalette_SecretKey[]; extern const u32 gItemIcon_BikeVoucher[]; -extern const u32 gItemIconPalette_BikeVoucher[]; +extern const u16 gItemIconPalette_BikeVoucher[]; extern const u32 gItemIcon_GoldTeeth[]; -extern const u32 gItemIconPalette_GoldTeeth[]; +extern const u16 gItemIconPalette_GoldTeeth[]; extern const u32 gItemIcon_CardKey[]; -extern const u32 gItemIconPalette_CardKey[]; +extern const u16 gItemIconPalette_CardKey[]; extern const u32 gItemIcon_LiftKey[]; extern const u32 gItemIcon_SilphScope[]; -extern const u32 gItemIconPalette_SilphScope[]; +extern const u16 gItemIconPalette_SilphScope[]; extern const u32 gItemIcon_TriPass[]; -extern const u32 gItemIconPalette_TriPass[]; +extern const u16 gItemIconPalette_TriPass[]; extern const u32 gItemIcon_RainbowPass[]; -extern const u32 gItemIconPalette_RainbowPass[]; +extern const u16 gItemIconPalette_RainbowPass[]; extern const u32 gItemIcon_Tea[]; -extern const u32 gItemIconPalette_Tea[]; +extern const u16 gItemIconPalette_Tea[]; extern const u32 gItemIcon_Gem[]; -extern const u32 gItemIconPalette_Ruby[]; -extern const u32 gItemIconPalette_Sapphire[]; +extern const u16 gItemIconPalette_Ruby[]; +extern const u16 gItemIconPalette_Sapphire[]; // GEN IX ITEMS extern const u32 gItemIcon_AbilityShield[]; -extern const u32 gItemIconPalette_AbilityShield[]; +extern const u16 gItemIconPalette_AbilityShield[]; extern const u32 gItemIcon_ClearAmulet[]; -extern const u32 gItemIconPalette_ClearAmulet[]; +extern const u16 gItemIconPalette_ClearAmulet[]; extern const u32 gItemIcon_AuspiciousArmor[]; -extern const u32 gItemIconPalette_AuspiciousArmor[]; +extern const u16 gItemIconPalette_AuspiciousArmor[]; extern const u32 gItemIcon_BigBambooShoot[]; -extern const u32 gItemIconPalette_BigBambooShoot[]; +extern const u16 gItemIconPalette_BigBambooShoot[]; extern const u32 gItemIcon_BoosterEnergy[]; -extern const u32 gItemIconPalette_BoosterEnergy[]; +extern const u16 gItemIconPalette_BoosterEnergy[]; extern const u32 gItemIcon_CovertCloak[]; -extern const u32 gItemIconPalette_CovertCloak[]; +extern const u16 gItemIconPalette_CovertCloak[]; extern const u32 gItemIcon_GimmighoulCoin[]; -extern const u32 gItemIconPalette_GimmighoulCoin[]; +extern const u16 gItemIconPalette_GimmighoulCoin[]; extern const u32 gItemIcon_LeadersCrest[]; -extern const u32 gItemIconPalette_LeadersCrest[]; +extern const u16 gItemIconPalette_LeadersCrest[]; extern const u32 gItemIcon_LoadedDice[]; -extern const u32 gItemIconPalette_LoadedDice[]; +extern const u16 gItemIconPalette_LoadedDice[]; extern const u32 gItemIcon_MaliciousArmor[]; -extern const u32 gItemIconPalette_MaliciousArmor[]; +extern const u16 gItemIconPalette_MaliciousArmor[]; extern const u32 gItemIcon_MirrorHerb[]; -extern const u32 gItemIconPalette_MirrorHerb[]; +extern const u16 gItemIconPalette_MirrorHerb[]; extern const u32 gItemIcon_PunchingGlove[]; -extern const u32 gItemIconPalette_PunchingGlove[]; +extern const u16 gItemIconPalette_PunchingGlove[]; extern const u32 gItemIcon_ScrollOfDarkness[]; -extern const u32 gItemIconPalette_ScrollOfDarkness[]; +extern const u16 gItemIconPalette_ScrollOfDarkness[]; extern const u32 gItemIcon_ScrollOfWaters[]; -extern const u32 gItemIconPalette_ScrollOfWaters[]; +extern const u16 gItemIconPalette_ScrollOfWaters[]; extern const u32 gItemIcon_TeraOrb[]; -extern const u32 gItemIconPalette_TeraOrb[]; +extern const u16 gItemIconPalette_TeraOrb[]; extern const u32 gItemIcon_TinyBambooShoot[]; -extern const u32 gItemIconPalette_TinyBambooShoot[]; +extern const u16 gItemIconPalette_TinyBambooShoot[]; // Tera Shards extern const u32 gItemIcon_TeraShard[]; -extern const u32 gItemIconPalette_NormalTeraShard[]; -extern const u32 gItemIconPalette_FireTeraShard[]; -extern const u32 gItemIconPalette_WaterTeraShard[]; -extern const u32 gItemIconPalette_GrassTeraShard[]; -extern const u32 gItemIconPalette_ElectricTeraShard[]; -extern const u32 gItemIconPalette_IceTeraShard[]; -extern const u32 gItemIconPalette_FightingTeraShard[]; -extern const u32 gItemIconPalette_PoisonTeraShard[]; -extern const u32 gItemIconPalette_GroundTeraShard[]; -extern const u32 gItemIconPalette_FlyingTeraShard[]; -extern const u32 gItemIconPalette_PsychicTeraShard[]; -extern const u32 gItemIconPalette_BugTeraShard[]; -extern const u32 gItemIconPalette_RockTeraShard[]; -extern const u32 gItemIconPalette_GhostTeraShard[]; -extern const u32 gItemIconPalette_DarkTeraShard[]; -extern const u32 gItemIconPalette_DragonTeraShard[]; -extern const u32 gItemIconPalette_SteelTeraShard[]; -extern const u32 gItemIconPalette_FairyTeraShard[]; +extern const u16 gItemIconPalette_NormalTeraShard[]; +extern const u16 gItemIconPalette_FireTeraShard[]; +extern const u16 gItemIconPalette_WaterTeraShard[]; +extern const u16 gItemIconPalette_GrassTeraShard[]; +extern const u16 gItemIconPalette_ElectricTeraShard[]; +extern const u16 gItemIconPalette_IceTeraShard[]; +extern const u16 gItemIconPalette_FightingTeraShard[]; +extern const u16 gItemIconPalette_PoisonTeraShard[]; +extern const u16 gItemIconPalette_GroundTeraShard[]; +extern const u16 gItemIconPalette_FlyingTeraShard[]; +extern const u16 gItemIconPalette_PsychicTeraShard[]; +extern const u16 gItemIconPalette_BugTeraShard[]; +extern const u16 gItemIconPalette_RockTeraShard[]; +extern const u16 gItemIconPalette_GhostTeraShard[]; +extern const u16 gItemIconPalette_DarkTeraShard[]; +extern const u16 gItemIconPalette_DragonTeraShard[]; +extern const u16 gItemIconPalette_SteelTeraShard[]; +extern const u16 gItemIconPalette_FairyTeraShard[]; extern const u32 gItemIcon_StellarTeraShard[]; -extern const u32 gItemIconPalette_StellarTeraShard[]; +extern const u16 gItemIconPalette_StellarTeraShard[]; extern const u32 gItemIcon_AdamantCrystal[]; -extern const u32 gItemIconPalette_AdamantCrystal[]; +extern const u16 gItemIconPalette_AdamantCrystal[]; extern const u32 gItemIcon_GriseousCore[]; -extern const u32 gItemIconPalette_GriseousCore[]; +extern const u16 gItemIconPalette_GriseousCore[]; extern const u32 gItemIcon_LustrousGlobe[]; -extern const u32 gItemIconPalette_LustrousGlobe[]; +extern const u16 gItemIconPalette_LustrousGlobe[]; extern const u32 gItemIcon_BerserkGene[]; -extern const u32 gItemIconPalette_BerserkGene[]; +extern const u16 gItemIconPalette_BerserkGene[]; extern const u32 gItemIcon_FairyFeather[]; -extern const u32 gItemIconPalette_FairyFeather[]; +extern const u16 gItemIconPalette_FairyFeather[]; extern const u32 gItemIcon_Mochi[]; -extern const u32 gItemIconPalette_HealthMochi[]; -extern const u32 gItemIconPalette_MuscleMochi[]; -extern const u32 gItemIconPalette_ResistMochi[]; -extern const u32 gItemIconPalette_GeniusMochi[]; -extern const u32 gItemIconPalette_CleverMochi[]; -extern const u32 gItemIconPalette_SwiftMochi[]; -extern const u32 gItemIconPalette_FreshStartMochi[]; +extern const u16 gItemIconPalette_HealthMochi[]; +extern const u16 gItemIconPalette_MuscleMochi[]; +extern const u16 gItemIconPalette_ResistMochi[]; +extern const u16 gItemIconPalette_GeniusMochi[]; +extern const u16 gItemIconPalette_CleverMochi[]; +extern const u16 gItemIconPalette_SwiftMochi[]; +extern const u16 gItemIconPalette_FreshStartMochi[]; extern const u32 gItemIcon_WellspringMask[]; -extern const u32 gItemIconPalette_WellspringMask[]; +extern const u16 gItemIconPalette_WellspringMask[]; extern const u32 gItemIcon_HearthflameMask[]; -extern const u32 gItemIconPalette_HearthflameMask[]; +extern const u16 gItemIconPalette_HearthflameMask[]; extern const u32 gItemIcon_CornerstoneMask[]; -extern const u32 gItemIconPalette_CornerstoneMask[]; +extern const u16 gItemIconPalette_CornerstoneMask[]; extern const u32 gItemIcon_Remedy[]; -extern const u32 gItemIconPalette_Remedy[]; +extern const u16 gItemIconPalette_Remedy[]; extern const u32 gItemIcon_FineRemedy[]; -extern const u32 gItemIconPalette_FineRemedy[]; +extern const u16 gItemIconPalette_FineRemedy[]; extern const u32 gItemIcon_SuperbRemedy[]; -extern const u32 gItemIconPalette_SuperbRemedy[]; +extern const u16 gItemIconPalette_SuperbRemedy[]; extern const u32 gItemIcon_AuxBottle[]; -extern const u32 gItemIconPalette_AuxEvasion[]; -extern const u32 gItemIconPalette_AuxGuard[]; -extern const u32 gItemIconPalette_AuxPower[]; +extern const u16 gItemIconPalette_AuxEvasion[]; +extern const u16 gItemIconPalette_AuxGuard[]; +extern const u16 gItemIconPalette_AuxPower[]; extern const u32 gItemIcon_AuxPowerguard[]; -extern const u32 gItemIconPalette_AuxPowerguard[]; +extern const u16 gItemIconPalette_AuxPowerguard[]; extern const u32 gItemIcon_ChoiceDumpling[]; -extern const u32 gItemIconPalette_ChoiceDumpling[]; +extern const u16 gItemIconPalette_ChoiceDumpling[]; extern const u32 gItemIcon_JubilifeMuffin[]; -extern const u32 gItemIconPalette_JubilifeMuffin[]; +extern const u16 gItemIconPalette_JubilifeMuffin[]; extern const u32 gItemIcon_PokeshiDoll[]; -extern const u32 gItemIconPalette_PokeshiDoll[]; +extern const u16 gItemIconPalette_PokeshiDoll[]; extern const u32 gItemIcon_SwapSnack[]; -extern const u32 gItemIconPalette_SwapSnack[]; +extern const u16 gItemIconPalette_SwapSnack[]; extern const u32 gItemIcon_TwiceSpicedRadish[]; -extern const u32 gItemIconPalette_TwiceSpicedRadish[]; +extern const u16 gItemIconPalette_TwiceSpicedRadish[]; extern const u32 gItemIcon_ReturnToFieldArrow[]; -extern const u32 gItemIconPalette_ReturnToFieldArrow[]; +extern const u16 gItemIconPalette_ReturnToFieldArrow[]; //menu graphics extern const u16 gMenuInfoElements1_Pal[16]; @@ -1752,14 +1752,14 @@ extern const u8 gMenuInfoElements_Gfx[]; // item menu graphics extern const u32 gBagScreen_Gfx[]; extern const u32 gBagScreen_GfxTileMap[]; -extern const u32 gBagScreenFemale_Pal[]; -extern const u32 gBagScreenMale_Pal[]; +extern const u16 gBagScreenFemale_Pal[]; +extern const u16 gBagScreenMale_Pal[]; extern const u8 gBagMenuHMIcon_Gfx[]; // item menu icons graphics extern const u32 gBagMaleTiles[]; extern const u32 gBagFemaleTiles[]; -extern const u32 gBagPalette[]; +extern const u16 gBagPalette[]; extern const u32 gBerryCheckCircle_Gfx[]; //intro graphics @@ -1804,7 +1804,7 @@ extern const u32 gIntroFlygon_Gfx[]; // party menu graphics extern const u32 gPartyMenuBg_Gfx[]; extern const u32 gPartyMenuBg_Tilemap[]; -extern const u32 gPartyMenuBg_Pal[]; +extern const u16 gPartyMenuBg_Pal[]; // berry pics extern const u32 gBerryPic_Cheri[]; @@ -1874,73 +1874,73 @@ extern const u32 gBerryPic_Jaboca[]; extern const u32 gBerryPic_Rowap[]; extern const u32 gBerryPic_Kee[]; extern const u32 gBerryPic_Maranga[]; -extern const u32 gBerryPalette_Cheri[]; -extern const u32 gBerryPalette_Chesto[]; -extern const u32 gBerryPalette_Pecha[]; -extern const u32 gBerryPalette_Rawst[]; -extern const u32 gBerryPalette_Aspear[]; -extern const u32 gBerryPalette_Leppa[]; -extern const u32 gBerryPalette_Oran[]; -extern const u32 gBerryPalette_Persim[]; -extern const u32 gBerryPalette_Lum[]; -extern const u32 gBerryPalette_Sitrus[]; -extern const u32 gBerryPalette_Figy[]; -extern const u32 gBerryPalette_Wiki[]; -extern const u32 gBerryPalette_Mago[]; -extern const u32 gBerryPalette_Aguav[]; -extern const u32 gBerryPalette_Iapapa[]; -extern const u32 gBerryPalette_Razz[]; -extern const u32 gBerryPalette_Bluk[]; -extern const u32 gBerryPalette_Nanab[]; -extern const u32 gBerryPalette_Wepear[]; -extern const u32 gBerryPalette_Pinap[]; -extern const u32 gBerryPalette_Pomeg[]; -extern const u32 gBerryPalette_Kelpsy[]; -extern const u32 gBerryPalette_Qualot[]; -extern const u32 gBerryPalette_Hondew[]; -extern const u32 gBerryPalette_Grepa[]; -extern const u32 gBerryPalette_Tamato[]; -extern const u32 gBerryPalette_Cornn[]; -extern const u32 gBerryPalette_Magost[]; -extern const u32 gBerryPalette_Rabuta[]; -extern const u32 gBerryPalette_Nomel[]; -extern const u32 gBerryPalette_Spelon[]; -extern const u32 gBerryPalette_Pamtre[]; -extern const u32 gBerryPalette_Watmel[]; -extern const u32 gBerryPalette_Durin[]; -extern const u32 gBerryPalette_Belue[]; -extern const u32 gBerryPalette_Chilan[]; -extern const u32 gBerryPalette_Occa[]; -extern const u32 gBerryPalette_Passho[]; -extern const u32 gBerryPalette_Wacan[]; -extern const u32 gBerryPalette_Rindo[]; -extern const u32 gBerryPalette_Yache[]; -extern const u32 gBerryPalette_Chople[]; -extern const u32 gBerryPalette_Kebia[]; -extern const u32 gBerryPalette_Shuca[]; -extern const u32 gBerryPalette_Coba[]; -extern const u32 gBerryPalette_Payapa[]; -extern const u32 gBerryPalette_Tanga[]; -extern const u32 gBerryPalette_Charti[]; -extern const u32 gBerryPalette_Kasib[]; -extern const u32 gBerryPalette_Haban[]; -extern const u32 gBerryPalette_Colbur[]; -extern const u32 gBerryPalette_Babiri[]; -extern const u32 gBerryPalette_Roseli[]; -extern const u32 gBerryPalette_Liechi[]; -extern const u32 gBerryPalette_Ganlon[]; -extern const u32 gBerryPalette_Salac[]; -extern const u32 gBerryPalette_Petaya[]; -extern const u32 gBerryPalette_Apicot[]; -extern const u32 gBerryPalette_Lansat[]; -extern const u32 gBerryPalette_Starf[]; -extern const u32 gBerryPalette_Enigma[]; -extern const u32 gBerryPalette_Micle[]; -extern const u32 gBerryPalette_Custap[]; -extern const u32 gBerryPalette_Jaboca[]; -extern const u32 gBerryPalette_Rowap[]; -extern const u32 gBerryPalette_Kee[]; -extern const u32 gBerryPalette_Maranga[]; +extern const u16 gBerryPalette_Cheri[]; +extern const u16 gBerryPalette_Chesto[]; +extern const u16 gBerryPalette_Pecha[]; +extern const u16 gBerryPalette_Rawst[]; +extern const u16 gBerryPalette_Aspear[]; +extern const u16 gBerryPalette_Leppa[]; +extern const u16 gBerryPalette_Oran[]; +extern const u16 gBerryPalette_Persim[]; +extern const u16 gBerryPalette_Lum[]; +extern const u16 gBerryPalette_Sitrus[]; +extern const u16 gBerryPalette_Figy[]; +extern const u16 gBerryPalette_Wiki[]; +extern const u16 gBerryPalette_Mago[]; +extern const u16 gBerryPalette_Aguav[]; +extern const u16 gBerryPalette_Iapapa[]; +extern const u16 gBerryPalette_Razz[]; +extern const u16 gBerryPalette_Bluk[]; +extern const u16 gBerryPalette_Nanab[]; +extern const u16 gBerryPalette_Wepear[]; +extern const u16 gBerryPalette_Pinap[]; +extern const u16 gBerryPalette_Pomeg[]; +extern const u16 gBerryPalette_Kelpsy[]; +extern const u16 gBerryPalette_Qualot[]; +extern const u16 gBerryPalette_Hondew[]; +extern const u16 gBerryPalette_Grepa[]; +extern const u16 gBerryPalette_Tamato[]; +extern const u16 gBerryPalette_Cornn[]; +extern const u16 gBerryPalette_Magost[]; +extern const u16 gBerryPalette_Rabuta[]; +extern const u16 gBerryPalette_Nomel[]; +extern const u16 gBerryPalette_Spelon[]; +extern const u16 gBerryPalette_Pamtre[]; +extern const u16 gBerryPalette_Watmel[]; +extern const u16 gBerryPalette_Durin[]; +extern const u16 gBerryPalette_Belue[]; +extern const u16 gBerryPalette_Chilan[]; +extern const u16 gBerryPalette_Occa[]; +extern const u16 gBerryPalette_Passho[]; +extern const u16 gBerryPalette_Wacan[]; +extern const u16 gBerryPalette_Rindo[]; +extern const u16 gBerryPalette_Yache[]; +extern const u16 gBerryPalette_Chople[]; +extern const u16 gBerryPalette_Kebia[]; +extern const u16 gBerryPalette_Shuca[]; +extern const u16 gBerryPalette_Coba[]; +extern const u16 gBerryPalette_Payapa[]; +extern const u16 gBerryPalette_Tanga[]; +extern const u16 gBerryPalette_Charti[]; +extern const u16 gBerryPalette_Kasib[]; +extern const u16 gBerryPalette_Haban[]; +extern const u16 gBerryPalette_Colbur[]; +extern const u16 gBerryPalette_Babiri[]; +extern const u16 gBerryPalette_Roseli[]; +extern const u16 gBerryPalette_Liechi[]; +extern const u16 gBerryPalette_Ganlon[]; +extern const u16 gBerryPalette_Salac[]; +extern const u16 gBerryPalette_Petaya[]; +extern const u16 gBerryPalette_Apicot[]; +extern const u16 gBerryPalette_Lansat[]; +extern const u16 gBerryPalette_Starf[]; +extern const u16 gBerryPalette_Enigma[]; +extern const u16 gBerryPalette_Micle[]; +extern const u16 gBerryPalette_Custap[]; +extern const u16 gBerryPalette_Jaboca[]; +extern const u16 gBerryPalette_Rowap[]; +extern const u16 gBerryPalette_Kee[]; +extern const u16 gBerryPalette_Maranga[]; //PokéNav extern const u16 gPokenavCondition_Pal[]; @@ -1970,14 +1970,14 @@ extern const u32 gPokenavRibbonsSummaryBg_Gfx[]; extern const u32 gPokenavRibbonsSummaryBg_Tilemap[]; extern const u32 gSummaryScreen_Gfx[]; -extern const u32 gSummaryScreen_Pal[]; +extern const u16 gSummaryScreen_Pal[]; extern const u32 gSummaryPage_Info_Tilemap[]; extern const u32 gSummaryPage_InfoEgg_Tilemap[]; extern const u32 gSummaryPage_Skills_Tilemap[]; extern const u32 gSummaryPage_BattleMoves_Tilemap[]; extern const u32 gSummaryPage_ContestMoves_Tilemap[]; extern const u16 gPPTextPalette[]; -extern const u32 gMoveTypes_Pal[]; +extern const u16 gMoveTypes_Pal[]; extern const u16 gSummaryScreen_MoveEffect_Battle_Tilemap[]; extern const u16 gSummaryScreen_MoveEffect_Contest_Tilemap[]; @@ -1985,15 +1985,15 @@ extern const u16 gSummaryScreen_MoveEffect_Cancel_Tilemap[]; extern const u32 gMoveTypes_Gfx[]; extern const u32 gSummaryMoveSelect_Gfx[]; -extern const u32 gSummaryMoveSelect_Pal[]; +extern const u16 gSummaryMoveSelect_Pal[]; extern const u32 gStatusGfx_Icons[]; -extern const u32 gStatusPal_Icons[]; +extern const u16 gStatusPal_Icons[]; extern const u16 gCategoryIcons_Pal[]; extern const u32 gCategoryIcons_Gfx[]; extern const u32 gShopMenu_Gfx[]; extern const u32 gShopMenu_Tilemap[]; -extern const u32 gShopMenu_Pal[]; +extern const u16 gShopMenu_Pal[]; extern const u32 gShopMenuMoney_Gfx[]; extern const u32 gBattleInterface_BallStatusBarGfx[]; @@ -2024,12 +2024,12 @@ extern const u32 gNamingScreenUnderscore_Gfx[]; extern const u32 gPokeblockFeedBg_Tilemap[]; extern const u32 gConfetti_Gfx[]; -extern const u32 gConfetti_Pal[]; +extern const u16 gConfetti_Pal[]; extern const u32 gBattleInterfaceGfx_BattleBar[]; extern const u32 gBattleAnimSpriteGfx_Substitute[]; extern const u32 gBattleAnimSpriteGfx_SubstituteBack[]; -extern const u32 gBattleAnimSpritePal_Substitute[]; +extern const u16 gBattleAnimSpritePal_Substitute[]; extern const u32 gHealthboxSinglesPlayerGfx[]; extern const u32 gHealthboxSinglesOpponentGfx[]; extern const u32 gHealthboxDoublesPlayerGfx[]; @@ -2040,12 +2040,12 @@ extern const u16 gBattleInterface_BallStatusBarPal[]; extern const u16 gBattleInterface_BallDisplayPal[]; extern const u32 gSwapLineGfx[]; -extern const u32 gSwapLinePal[]; +extern const u16 gSwapLinePal[]; extern const u32 gBattlePyramidBag_Gfx[]; -extern const u32 gBattlePyramidBag_Pal[]; +extern const u16 gBattlePyramidBag_Pal[]; extern const u32 gBattlePyramidBagTilemap[]; -extern const u32 gBattlePyramidBagInterface_Pal[]; +extern const u16 gBattlePyramidBagInterface_Pal[]; extern const u16 gBattlePyramidFloor_Pal[][16]; extern const u16 gStandardMenuPalette[]; @@ -2063,9 +2063,9 @@ extern const u16 gTitleScreenEmeraldVersionPal[]; extern const u32 gDomeTourneyInfoCard_Gfx[]; extern const u32 gDomeTourneyInfoCard_Tilemap[]; extern const u32 gDomeTourneyInfoCardBg_Tilemap[]; -extern const u32 gDomeTourneyTree_Pal[]; -extern const u32 gDomeTourneyTreeButtons_Pal[]; -extern const u32 gDomeTourneyMatchCardBg_Pal[]; +extern const u16 gDomeTourneyTree_Pal[]; +extern const u16 gDomeTourneyTreeButtons_Pal[]; +extern const u16 gDomeTourneyMatchCardBg_Pal[]; extern const u32 gDomeTourneyTree_Gfx[]; extern const u32 gDomeTourneyLine_Gfx[]; extern const u32 gDomeTourneyLineDown_Tilemap[]; @@ -2078,14 +2078,14 @@ extern const u16 gTilesetAnims_BattleDomePals0_2[]; extern const u16 gTilesetAnims_BattleDomePals0_3[]; extern const u32 gBattleArenaJudgmentSymbolsGfx[]; -extern const u32 gBattleArenaJudgmentSymbolsPalette[]; +extern const u16 gBattleArenaJudgmentSymbolsPalette[]; -extern const u32 gBattleWindowTextPalette[]; +extern const u16 gBattleWindowTextPalette[]; -extern const u32 gContest2Pal[]; +extern const u16 gContest2Pal[]; extern const u32 gSmokescreenImpactTiles[]; -extern const u32 gSmokescreenImpactPalette[]; +extern const u16 gSmokescreenImpactPalette[]; extern const u32 gBattleAnimSpriteGfx_Bone[]; extern const u32 gBattleAnimSpriteGfx_Spark[]; @@ -2385,518 +2385,518 @@ extern const u32 gBattleAnimSpriteGfx_StoneEdge[]; extern const u32 gBattleAnimSpriteGfx_StealthRock[]; extern const u32 gBattleAnimSpriteGfx_PoisonJab[]; -extern const u32 gBattleAnimSpritePal_Bone[]; -extern const u32 gBattleAnimSpritePal_Spark[]; -extern const u32 gBattleAnimSpritePal_Pencil[]; -extern const u32 gBattleAnimSpritePal_AirWave[]; -extern const u32 gBattleAnimSpritePal_Orb[]; -extern const u32 gBattleAnimSpritePal_Sword[]; -extern const u32 gBattleAnimSpritePal_Seed[]; -extern const u32 gBattleAnimSpritePal_SeedBrown[]; -extern const u32 gBattleAnimSpritePal_Feint[]; -extern const u32 gBattleAnimSpritePal_Explosion6[]; -extern const u32 gBattleAnimSpritePal_PinkOrb[]; -extern const u32 gBattleAnimSpritePal_Gust[]; -extern const u32 gBattleAnimSpritePal_IceCube[]; -extern const u32 gBattleAnimSpritePal_Spark2[]; -extern const u32 gBattleAnimSpritePal_Orange[]; -extern const u32 gBattleAnimSpritePal_YellowBall[]; -extern const u32 gBattleAnimSpritePal_LockOn[]; -extern const u32 gBattleAnimSpritePal_TiedBag[]; -extern const u32 gBattleAnimSpritePal_BlackSmoke[]; -extern const u32 gBattleAnimSpritePal_BlackSmoke[]; -extern const u32 gBattleAnimSpritePal_Conversion[]; -extern const u32 gBattleAnimSpritePal_Glass[]; -extern const u32 gBattleAnimSpritePal_HornHit[]; -extern const u32 gBattleAnimSpritePal_Hit[]; -extern const u32 gBattleAnimSpritePal_Hit2[]; -extern const u32 gBattleAnimSpritePal_BlueShards[]; -extern const u32 gBattleAnimSpritePal_ClosingEye[]; -extern const u32 gBattleAnimSpritePal_WavingHand[]; -extern const u32 gBattleAnimSpritePal_HitDuplicate[]; -extern const u32 gBattleAnimSpritePal_Leer[]; -extern const u32 gBattleAnimSpritePal_BlueBurst[]; -extern const u32 gBattleAnimSpritePal_SmallEmber[]; -extern const u32 gBattleAnimSpritePal_GraySmoke[]; -extern const u32 gBattleAnimSpritePal_BlueStar[]; -extern const u32 gBattleAnimSpritePal_BubbleBurst[]; -extern const u32 gBattleAnimSpritePal_Fire[]; -extern const u32 gBattleAnimSpritePal_Fire[]; -extern const u32 gBattleAnimSpritePal_Fire[]; -extern const u32 gBattleAnimSpritePal_Lightning2[]; -extern const u32 gBattleAnimSpritePal_Lightning2[]; -extern const u32 gBattleAnimSpritePal_ClawSlash2[]; -extern const u32 gBattleAnimSpritePal_ClawSlash[]; -extern const u32 gBattleAnimSpritePal_ClawSlash2[]; -extern const u32 gBattleAnimSpritePal_ClawSlash2[]; -extern const u32 gBattleAnimSpritePal_BubbleBurst2[]; -extern const u32 gBattleAnimSpritePal_IceChunk[]; -extern const u32 gBattleAnimSpritePal_Glass2[]; -extern const u32 gBattleAnimSpritePal_PinkHeart2[]; -extern const u32 gBattleAnimSpritePal_SapDrip[]; -extern const u32 gBattleAnimSpritePal_SapDrip2[]; -extern const u32 gBattleAnimSpritePal_Sparkle1[]; -extern const u32 gBattleAnimSpritePal_Sparkle2[]; -extern const u32 gBattleAnimSpritePal_HumanoidFoot[]; -extern const u32 gBattleAnimSpritePal_HumanoidFoot[]; -extern const u32 gBattleAnimSpritePal_HumanoidFoot[]; -extern const u32 gBattleAnimSpritePal_HitDuplicate[]; -extern const u32 gBattleAnimSpritePal_YellowUnk[]; -extern const u32 gBattleAnimSpritePal_HumanoidFoot[]; -extern const u32 gBattleAnimSpritePal_SlamHit[]; -extern const u32 gBattleAnimSpritePal_Ring[]; -extern const u32 gBattleAnimSpritePal_Rocks[]; -extern const u32 gBattleAnimSpritePal_Z[]; -extern const u32 gBattleAnimSpritePal_YellowUnk2[]; -extern const u32 gBattleAnimSpritePal_AirSlash[]; -extern const u32 gBattleAnimSpritePal_SpinningGreenOrbs[]; -extern const u32 gBattleAnimSpritePal_Leaf[]; -extern const u32 gBattleAnimSpritePal_Finger[]; -extern const u32 gBattleAnimSpritePal_PoisonPowder[]; -extern const u32 gBattleAnimSpritePal_BrownTriangle[]; -extern const u32 gBattleAnimSpritePal_SleepPowder[]; -extern const u32 gBattleAnimSpritePal_StunSpore[]; -extern const u32 gBattleAnimSpritePal_PoisonPowder[]; -extern const u32 gBattleAnimSpritePal_Sparkle3[]; -extern const u32 gBattleAnimSpritePal_Sparkle3[]; -extern const u32 gBattleAnimSpritePal_MusicNotes[]; -extern const u32 gBattleAnimSpritePal_Duck[]; -extern const u32 gBattleAnimSpritePal_MudSand[]; -extern const u32 gBattleAnimSpritePal_Alert[]; -extern const u32 gBattleAnimSpritePal_BlueFlames[]; -extern const u32 gBattleAnimSpritePal_BlueFlames[]; -extern const u32 gBattleAnimSpritePal_Shock4[]; -extern const u32 gBattleAnimSpritePal_Shock4[]; -extern const u32 gBattleAnimSpritePal_Bell2[]; -extern const u32 gBattleAnimSpritePal_PinkGlove[]; -extern const u32 gBattleAnimSpritePal_BlueLines[]; -extern const u32 gBattleAnimSpritePal_Impact3[]; -extern const u32 gBattleAnimSpritePal_Impact2[]; -extern const u32 gBattleAnimSpritePal_Reticle[]; -extern const u32 gBattleAnimSpritePal_Breath[]; -extern const u32 gBattleAnimSpritePal_Anger[]; -extern const u32 gBattleAnimSpritePal_Snowball[]; -extern const u32 gBattleAnimSpritePal_Vine[]; -extern const u32 gBattleAnimSpritePal_Sword2[]; -extern const u32 gBattleAnimSpritePal_Clapping[]; -extern const u32 gBattleAnimSpritePal_RedTube[]; -extern const u32 gBattleAnimSpritePal_Amnesia[]; -extern const u32 gBattleAnimSpritePal_String2[]; -extern const u32 gBattleAnimSpritePal_Pencil2[]; -extern const u32 gBattleAnimSpritePal_Petal[]; -extern const u32 gBattleAnimSpritePal_BentSpoon[]; -extern const u32 gBattleAnimSpritePal_String2[]; -extern const u32 gBattleAnimSpritePal_MilkBottle[]; -extern const u32 gBattleAnimSpritePal_Coin[]; -extern const u32 gBattleAnimSpritePal_CrackedEgg[]; -extern const u32 gBattleAnimSpritePal_CrackedEgg[]; -extern const u32 gBattleAnimSpritePal_FreshEgg[]; -extern const u32 gBattleAnimSpritePal_Fangs[]; -extern const u32 gBattleAnimSpritePal_Explosion2[]; -extern const u32 gBattleAnimSpritePal_Explosion2[]; -extern const u32 gBattleAnimSpritePal_WaterDroplet[]; -extern const u32 gBattleAnimSpritePal_WaterDroplet[]; -extern const u32 gBattleAnimSpritePal_Seed2[]; -extern const u32 gBattleAnimSpritePal_Seed2[]; -extern const u32 gBattleAnimSpritePal_RedWand[]; -extern const u32 gBattleAnimSpritePal_PurpleGreenUnk[]; -extern const u32 gBattleAnimSpritePal_WaterColumn[]; -extern const u32 gBattleAnimSpritePal_MudUnk[]; -extern const u32 gBattleAnimSpritePal_RainDrops[]; -extern const u32 gBattleAnimSpritePal_FurySwipes[]; -extern const u32 gBattleAnimSpritePal_Vine2[]; -extern const u32 gBattleAnimSpritePal_Teeth[]; -extern const u32 gBattleAnimSpritePal_Bone2[]; -extern const u32 gBattleAnimSpritePal_WhiteBag[]; -extern const u32 gBattleAnimSpritePal_Unknown[]; -extern const u32 gBattleAnimSpritePal_PurpleCoral[]; -extern const u32 gBattleAnimSpritePal_PurpleCoral[]; -extern const u32 gBattleAnimSpritePal_Shock2[]; -extern const u32 gBattleAnimSpritePal_ClosingEye2[]; -extern const u32 gBattleAnimSpritePal_MetalBall[]; -extern const u32 gBattleAnimSpritePal_MonsterDoll[]; -extern const u32 gBattleAnimSpritePal_Whirlwind[]; -extern const u32 gBattleAnimSpritePal_Whirlwind[]; -extern const u32 gBattleAnimSpritePal_Explosion4[]; -extern const u32 gBattleAnimSpritePal_Explosion4[]; -extern const u32 gBattleAnimSpritePal_Tongue[]; -extern const u32 gBattleAnimSpritePal_Smoke[]; -extern const u32 gBattleAnimSpritePal_Smoke[]; -extern const u32 gBattleAnimSpritePal_Impact[]; -extern const u32 gBattleAnimSpritePal_Particles2[]; -extern const u32 gBattleAnimSpritePal_CircleImpact[]; -extern const u32 gBattleAnimSpritePal_Impact[]; -extern const u32 gBattleAnimSpritePal_Impact[]; -extern const u32 gBattleAnimSpritePal_SharpTeeth[]; -extern const u32 gBattleAnimSpritePal_RainbowRings[]; -extern const u32 gBattleAnimSpritePal_IceCrystals[]; -extern const u32 gBattleAnimSpritePal_IceCrystals[]; -extern const u32 gBattleAnimSpritePal_HandsAndFeet[]; -extern const u32 gBattleAnimSpritePal_MistCloud[]; -extern const u32 gBattleAnimSpritePal_SharpTeeth[]; -extern const u32 gBattleAnimSpritePal_RainDrops[]; -extern const u32 gBattleAnimSpritePal_Orbs[]; -extern const u32 gBattleAnimSpritePal_WaterImpact[]; -extern const u32 gBattleAnimSpritePal_WaterImpact[]; -extern const u32 gBattleAnimSpritePal_PoisonBubble[]; -extern const u32 gBattleAnimSpritePal_PoisonBubble[]; -extern const u32 gBattleAnimSpritePal_Spikes[]; -extern const u32 gBattleAnimSpritePal_HornHit2[]; -extern const u32 gBattleAnimSpritePal_AirWave2[]; -extern const u32 gBattleAnimSpritePal_SmallBubbles[]; -extern const u32 gBattleAnimSpritePal_RoundShadow[]; -extern const u32 gBattleAnimSpritePal_Sunlight[]; -extern const u32 gBattleAnimSpritePal_Spore[]; -extern const u32 gBattleAnimSpritePal_Flower[]; -extern const u32 gBattleAnimSpritePal_RazorLeaf[]; -extern const u32 gBattleAnimSpritePal_Needle[]; -extern const u32 gBattleAnimSpritePal_WhirlwindLines[]; -extern const u32 gBattleAnimSpritePal_GoldRing[]; -extern const u32 gBattleAnimSpritePal_PurpleRing[]; -extern const u32 gBattleAnimSpritePal_BlueRing[]; -extern const u32 gBattleAnimSpritePal_GreenLightWall[]; -extern const u32 gBattleAnimSpritePal_BlueLightWall[]; -extern const u32 gBattleAnimSpritePal_RedLightWall[]; -extern const u32 gBattleAnimSpritePal_GrayLightWall[]; -extern const u32 gBattleAnimSpritePal_OrangeLightWall[]; -extern const u32 gBattleAnimSpritePal_BlackBall2[]; -extern const u32 gBattleAnimSpritePal_PurpleGasCloud[]; -extern const u32 gBattleAnimSpritePal_YellowStar[]; -extern const u32 gBattleAnimSpritePal_LargeFreshEgg[]; -extern const u32 gBattleAnimSpritePal_ShadowBall[]; -extern const u32 gBattleAnimSpritePal_Lick[]; -extern const u32 gBattleAnimSpritePal_VoidLines[]; -extern const u32 gBattleAnimSpritePal_String[]; -extern const u32 gBattleAnimSpritePal_Lightbulb[]; -extern const u32 gBattleAnimSpritePal_Slash[]; -extern const u32 gBattleAnimSpritePal_FocusEnergy[]; -extern const u32 gBattleAnimSpritePal_SphereToCube[]; -extern const u32 gBattleAnimSpritePal_Tendrils[]; -extern const u32 gBattleAnimSpritePal_Eye[]; -extern const u32 gBattleAnimSpritePal_WhiteShadow[]; -extern const u32 gBattleAnimSpritePal_TealAlert[]; -extern const u32 gBattleAnimSpritePal_OpeningEye[]; -extern const u32 gBattleAnimSpritePal_RoundWhiteHalo[]; -extern const u32 gBattleAnimSpritePal_FangAttack[]; -extern const u32 gBattleAnimSpritePal_PurpleHandOutline[]; -extern const u32 gBattleAnimSpritePal_Moon[]; -extern const u32 gBattleAnimSpritePal_GreenSparkle[]; -extern const u32 gBattleAnimSpritePal_Spiral[]; -extern const u32 gBattleAnimSpritePal_SnoreZ[]; -extern const u32 gBattleAnimSpritePal_Explosion[]; -extern const u32 gBattleAnimSpritePal_Nail[]; -extern const u32 gBattleAnimSpritePal_GhostlySpirit[]; -extern const u32 gBattleAnimSpritePal_WarmRock[]; -extern const u32 gBattleAnimSpritePal_BreakingEgg[]; -extern const u32 gBattleAnimSpritePal_ThinRing[]; -extern const u32 gBattleAnimSpritePal_PunchImpact[]; -extern const u32 gBattleAnimSpritePal_Bell[]; -extern const u32 gBattleAnimSpritePal_MusicNotes2[]; -extern const u32 gBattleAnimSpritePal_SpeedDust[]; -extern const u32 gBattleAnimSpritePal_ThoughtBubble[]; -extern const u32 gBattleAnimSpritePal_MagentaHeart[]; -extern const u32 gBattleAnimSpritePal_ElectricOrbs[]; -extern const u32 gBattleAnimSpritePal_MovementWaves[]; -extern const u32 gBattleAnimBgPalette_ScaryFace[]; +extern const u16 gBattleAnimSpritePal_Bone[]; +extern const u16 gBattleAnimSpritePal_Spark[]; +extern const u16 gBattleAnimSpritePal_Pencil[]; +extern const u16 gBattleAnimSpritePal_AirWave[]; +extern const u16 gBattleAnimSpritePal_Orb[]; +extern const u16 gBattleAnimSpritePal_Sword[]; +extern const u16 gBattleAnimSpritePal_Seed[]; +extern const u16 gBattleAnimSpritePal_SeedBrown[]; +extern const u16 gBattleAnimSpritePal_Feint[]; +extern const u16 gBattleAnimSpritePal_Explosion6[]; +extern const u16 gBattleAnimSpritePal_PinkOrb[]; +extern const u16 gBattleAnimSpritePal_Gust[]; +extern const u16 gBattleAnimSpritePal_IceCube[]; +extern const u16 gBattleAnimSpritePal_Spark2[]; +extern const u16 gBattleAnimSpritePal_Orange[]; +extern const u16 gBattleAnimSpritePal_YellowBall[]; +extern const u16 gBattleAnimSpritePal_LockOn[]; +extern const u16 gBattleAnimSpritePal_TiedBag[]; +extern const u16 gBattleAnimSpritePal_BlackSmoke[]; +extern const u16 gBattleAnimSpritePal_BlackSmoke[]; +extern const u16 gBattleAnimSpritePal_Conversion[]; +extern const u16 gBattleAnimSpritePal_Glass[]; +extern const u16 gBattleAnimSpritePal_HornHit[]; +extern const u16 gBattleAnimSpritePal_Hit[]; +extern const u16 gBattleAnimSpritePal_Hit2[]; +extern const u16 gBattleAnimSpritePal_BlueShards[]; +extern const u16 gBattleAnimSpritePal_ClosingEye[]; +extern const u16 gBattleAnimSpritePal_WavingHand[]; +extern const u16 gBattleAnimSpritePal_HitDuplicate[]; +extern const u16 gBattleAnimSpritePal_Leer[]; +extern const u16 gBattleAnimSpritePal_BlueBurst[]; +extern const u16 gBattleAnimSpritePal_SmallEmber[]; +extern const u16 gBattleAnimSpritePal_GraySmoke[]; +extern const u16 gBattleAnimSpritePal_BlueStar[]; +extern const u16 gBattleAnimSpritePal_BubbleBurst[]; +extern const u16 gBattleAnimSpritePal_Fire[]; +extern const u16 gBattleAnimSpritePal_Fire[]; +extern const u16 gBattleAnimSpritePal_Fire[]; +extern const u16 gBattleAnimSpritePal_Lightning2[]; +extern const u16 gBattleAnimSpritePal_Lightning2[]; +extern const u16 gBattleAnimSpritePal_ClawSlash2[]; +extern const u16 gBattleAnimSpritePal_ClawSlash[]; +extern const u16 gBattleAnimSpritePal_ClawSlash2[]; +extern const u16 gBattleAnimSpritePal_ClawSlash2[]; +extern const u16 gBattleAnimSpritePal_BubbleBurst2[]; +extern const u16 gBattleAnimSpritePal_IceChunk[]; +extern const u16 gBattleAnimSpritePal_Glass2[]; +extern const u16 gBattleAnimSpritePal_PinkHeart2[]; +extern const u16 gBattleAnimSpritePal_SapDrip[]; +extern const u16 gBattleAnimSpritePal_SapDrip2[]; +extern const u16 gBattleAnimSpritePal_Sparkle1[]; +extern const u16 gBattleAnimSpritePal_Sparkle2[]; +extern const u16 gBattleAnimSpritePal_HumanoidFoot[]; +extern const u16 gBattleAnimSpritePal_HumanoidFoot[]; +extern const u16 gBattleAnimSpritePal_HumanoidFoot[]; +extern const u16 gBattleAnimSpritePal_HitDuplicate[]; +extern const u16 gBattleAnimSpritePal_YellowUnk[]; +extern const u16 gBattleAnimSpritePal_HumanoidFoot[]; +extern const u16 gBattleAnimSpritePal_SlamHit[]; +extern const u16 gBattleAnimSpritePal_Ring[]; +extern const u16 gBattleAnimSpritePal_Rocks[]; +extern const u16 gBattleAnimSpritePal_Z[]; +extern const u16 gBattleAnimSpritePal_YellowUnk2[]; +extern const u16 gBattleAnimSpritePal_AirSlash[]; +extern const u16 gBattleAnimSpritePal_SpinningGreenOrbs[]; +extern const u16 gBattleAnimSpritePal_Leaf[]; +extern const u16 gBattleAnimSpritePal_Finger[]; +extern const u16 gBattleAnimSpritePal_PoisonPowder[]; +extern const u16 gBattleAnimSpritePal_BrownTriangle[]; +extern const u16 gBattleAnimSpritePal_SleepPowder[]; +extern const u16 gBattleAnimSpritePal_StunSpore[]; +extern const u16 gBattleAnimSpritePal_PoisonPowder[]; +extern const u16 gBattleAnimSpritePal_Sparkle3[]; +extern const u16 gBattleAnimSpritePal_Sparkle3[]; +extern const u16 gBattleAnimSpritePal_MusicNotes[]; +extern const u16 gBattleAnimSpritePal_Duck[]; +extern const u16 gBattleAnimSpritePal_MudSand[]; +extern const u16 gBattleAnimSpritePal_Alert[]; +extern const u16 gBattleAnimSpritePal_BlueFlames[]; +extern const u16 gBattleAnimSpritePal_BlueFlames[]; +extern const u16 gBattleAnimSpritePal_Shock4[]; +extern const u16 gBattleAnimSpritePal_Shock4[]; +extern const u16 gBattleAnimSpritePal_Bell2[]; +extern const u16 gBattleAnimSpritePal_PinkGlove[]; +extern const u16 gBattleAnimSpritePal_BlueLines[]; +extern const u16 gBattleAnimSpritePal_Impact3[]; +extern const u16 gBattleAnimSpritePal_Impact2[]; +extern const u16 gBattleAnimSpritePal_Reticle[]; +extern const u16 gBattleAnimSpritePal_Breath[]; +extern const u16 gBattleAnimSpritePal_Anger[]; +extern const u16 gBattleAnimSpritePal_Snowball[]; +extern const u16 gBattleAnimSpritePal_Vine[]; +extern const u16 gBattleAnimSpritePal_Sword2[]; +extern const u16 gBattleAnimSpritePal_Clapping[]; +extern const u16 gBattleAnimSpritePal_RedTube[]; +extern const u16 gBattleAnimSpritePal_Amnesia[]; +extern const u16 gBattleAnimSpritePal_String2[]; +extern const u16 gBattleAnimSpritePal_Pencil2[]; +extern const u16 gBattleAnimSpritePal_Petal[]; +extern const u16 gBattleAnimSpritePal_BentSpoon[]; +extern const u16 gBattleAnimSpritePal_String2[]; +extern const u16 gBattleAnimSpritePal_MilkBottle[]; +extern const u16 gBattleAnimSpritePal_Coin[]; +extern const u16 gBattleAnimSpritePal_CrackedEgg[]; +extern const u16 gBattleAnimSpritePal_CrackedEgg[]; +extern const u16 gBattleAnimSpritePal_FreshEgg[]; +extern const u16 gBattleAnimSpritePal_Fangs[]; +extern const u16 gBattleAnimSpritePal_Explosion2[]; +extern const u16 gBattleAnimSpritePal_Explosion2[]; +extern const u16 gBattleAnimSpritePal_WaterDroplet[]; +extern const u16 gBattleAnimSpritePal_WaterDroplet[]; +extern const u16 gBattleAnimSpritePal_Seed2[]; +extern const u16 gBattleAnimSpritePal_Seed2[]; +extern const u16 gBattleAnimSpritePal_RedWand[]; +extern const u16 gBattleAnimSpritePal_PurpleGreenUnk[]; +extern const u16 gBattleAnimSpritePal_WaterColumn[]; +extern const u16 gBattleAnimSpritePal_MudUnk[]; +extern const u16 gBattleAnimSpritePal_RainDrops[]; +extern const u16 gBattleAnimSpritePal_FurySwipes[]; +extern const u16 gBattleAnimSpritePal_Vine2[]; +extern const u16 gBattleAnimSpritePal_Teeth[]; +extern const u16 gBattleAnimSpritePal_Bone2[]; +extern const u16 gBattleAnimSpritePal_WhiteBag[]; +extern const u16 gBattleAnimSpritePal_Unknown[]; +extern const u16 gBattleAnimSpritePal_PurpleCoral[]; +extern const u16 gBattleAnimSpritePal_PurpleCoral[]; +extern const u16 gBattleAnimSpritePal_Shock2[]; +extern const u16 gBattleAnimSpritePal_ClosingEye2[]; +extern const u16 gBattleAnimSpritePal_MetalBall[]; +extern const u16 gBattleAnimSpritePal_MonsterDoll[]; +extern const u16 gBattleAnimSpritePal_Whirlwind[]; +extern const u16 gBattleAnimSpritePal_Whirlwind[]; +extern const u16 gBattleAnimSpritePal_Explosion4[]; +extern const u16 gBattleAnimSpritePal_Explosion4[]; +extern const u16 gBattleAnimSpritePal_Tongue[]; +extern const u16 gBattleAnimSpritePal_Smoke[]; +extern const u16 gBattleAnimSpritePal_Smoke[]; +extern const u16 gBattleAnimSpritePal_Impact[]; +extern const u16 gBattleAnimSpritePal_Particles2[]; +extern const u16 gBattleAnimSpritePal_CircleImpact[]; +extern const u16 gBattleAnimSpritePal_Impact[]; +extern const u16 gBattleAnimSpritePal_Impact[]; +extern const u16 gBattleAnimSpritePal_SharpTeeth[]; +extern const u16 gBattleAnimSpritePal_RainbowRings[]; +extern const u16 gBattleAnimSpritePal_IceCrystals[]; +extern const u16 gBattleAnimSpritePal_IceCrystals[]; +extern const u16 gBattleAnimSpritePal_HandsAndFeet[]; +extern const u16 gBattleAnimSpritePal_MistCloud[]; +extern const u16 gBattleAnimSpritePal_SharpTeeth[]; +extern const u16 gBattleAnimSpritePal_RainDrops[]; +extern const u16 gBattleAnimSpritePal_Orbs[]; +extern const u16 gBattleAnimSpritePal_WaterImpact[]; +extern const u16 gBattleAnimSpritePal_WaterImpact[]; +extern const u16 gBattleAnimSpritePal_PoisonBubble[]; +extern const u16 gBattleAnimSpritePal_PoisonBubble[]; +extern const u16 gBattleAnimSpritePal_Spikes[]; +extern const u16 gBattleAnimSpritePal_HornHit2[]; +extern const u16 gBattleAnimSpritePal_AirWave2[]; +extern const u16 gBattleAnimSpritePal_SmallBubbles[]; +extern const u16 gBattleAnimSpritePal_RoundShadow[]; +extern const u16 gBattleAnimSpritePal_Sunlight[]; +extern const u16 gBattleAnimSpritePal_Spore[]; +extern const u16 gBattleAnimSpritePal_Flower[]; +extern const u16 gBattleAnimSpritePal_RazorLeaf[]; +extern const u16 gBattleAnimSpritePal_Needle[]; +extern const u16 gBattleAnimSpritePal_WhirlwindLines[]; +extern const u16 gBattleAnimSpritePal_GoldRing[]; +extern const u16 gBattleAnimSpritePal_PurpleRing[]; +extern const u16 gBattleAnimSpritePal_BlueRing[]; +extern const u16 gBattleAnimSpritePal_GreenLightWall[]; +extern const u16 gBattleAnimSpritePal_BlueLightWall[]; +extern const u16 gBattleAnimSpritePal_RedLightWall[]; +extern const u16 gBattleAnimSpritePal_GrayLightWall[]; +extern const u16 gBattleAnimSpritePal_OrangeLightWall[]; +extern const u16 gBattleAnimSpritePal_BlackBall2[]; +extern const u16 gBattleAnimSpritePal_PurpleGasCloud[]; +extern const u16 gBattleAnimSpritePal_YellowStar[]; +extern const u16 gBattleAnimSpritePal_LargeFreshEgg[]; +extern const u16 gBattleAnimSpritePal_ShadowBall[]; +extern const u16 gBattleAnimSpritePal_Lick[]; +extern const u16 gBattleAnimSpritePal_VoidLines[]; +extern const u16 gBattleAnimSpritePal_String[]; +extern const u16 gBattleAnimSpritePal_Lightbulb[]; +extern const u16 gBattleAnimSpritePal_Slash[]; +extern const u16 gBattleAnimSpritePal_FocusEnergy[]; +extern const u16 gBattleAnimSpritePal_SphereToCube[]; +extern const u16 gBattleAnimSpritePal_Tendrils[]; +extern const u16 gBattleAnimSpritePal_Eye[]; +extern const u16 gBattleAnimSpritePal_WhiteShadow[]; +extern const u16 gBattleAnimSpritePal_TealAlert[]; +extern const u16 gBattleAnimSpritePal_OpeningEye[]; +extern const u16 gBattleAnimSpritePal_RoundWhiteHalo[]; +extern const u16 gBattleAnimSpritePal_FangAttack[]; +extern const u16 gBattleAnimSpritePal_PurpleHandOutline[]; +extern const u16 gBattleAnimSpritePal_Moon[]; +extern const u16 gBattleAnimSpritePal_GreenSparkle[]; +extern const u16 gBattleAnimSpritePal_Spiral[]; +extern const u16 gBattleAnimSpritePal_SnoreZ[]; +extern const u16 gBattleAnimSpritePal_Explosion[]; +extern const u16 gBattleAnimSpritePal_Nail[]; +extern const u16 gBattleAnimSpritePal_GhostlySpirit[]; +extern const u16 gBattleAnimSpritePal_WarmRock[]; +extern const u16 gBattleAnimSpritePal_BreakingEgg[]; +extern const u16 gBattleAnimSpritePal_ThinRing[]; +extern const u16 gBattleAnimSpritePal_PunchImpact[]; +extern const u16 gBattleAnimSpritePal_Bell[]; +extern const u16 gBattleAnimSpritePal_MusicNotes2[]; +extern const u16 gBattleAnimSpritePal_SpeedDust[]; +extern const u16 gBattleAnimSpritePal_ThoughtBubble[]; +extern const u16 gBattleAnimSpritePal_MagentaHeart[]; +extern const u16 gBattleAnimSpritePal_ElectricOrbs[]; +extern const u16 gBattleAnimSpritePal_MovementWaves[]; +extern const u16 gBattleAnimBgPalette_ScaryFace[]; extern const u32 gBattleAnimBgImage_ScaryFace[]; -extern const u32 gBattleAnimSpritePal_RedHeart[]; -extern const u32 gBattleAnimSpritePal_RedOrb[]; -extern const u32 gBattleAnimSpritePal_EyeSparkle[]; -extern const u32 gBattleAnimSpritePal_PinkHeart[]; +extern const u16 gBattleAnimSpritePal_RedHeart[]; +extern const u16 gBattleAnimSpritePal_RedOrb[]; +extern const u16 gBattleAnimSpritePal_EyeSparkle[]; +extern const u16 gBattleAnimSpritePal_PinkHeart[]; extern const u32 gBattleAnimBgImage_Attract[]; -extern const u32 gBattleAnimBgPalette_Attract[]; +extern const u16 gBattleAnimBgPalette_Attract[]; extern const u32 gBattleAnimBgTilemap_Attract[]; -extern const u32 gBattleAnimSpritePal_Angel[]; -extern const u32 gBattleAnimSpritePal_Devil[]; -extern const u32 gBattleAnimSpritePal_Swipe[]; -extern const u32 gBattleAnimSpritePal_Roots[]; -extern const u32 gBattleAnimSpritePal_ItemBag[]; -extern const u32 gBattleAnimSpritePal_JaggedMusicNote[]; -extern const u32 gBattleAnimSpritePal_Pokeball[]; -extern const u32 gBattleAnimSpritePal_LetterZ[]; -extern const u32 gBattleAnimSpritePal_RapidSpin[]; -extern const u32 gBattleAnimSpritePal_TriAttackTriangle[]; -extern const u32 gBattleAnimSpritePal_WispOrb[]; -extern const u32 gBattleAnimSpritePal_GoldStars[]; -extern const u32 gBattleAnimSpritePal_EclipsingOrb[]; -extern const u32 gBattleAnimSpritePal_GrayOrb[]; -extern const u32 gBattleAnimSpritePal_BlueOrb[]; -extern const u32 gBattleAnimSpritePal_RedOrb2[]; -extern const u32 gBattleAnimSpritePal_PinkPetal[]; -extern const u32 gBattleAnimSpritePal_PainSplit[]; -extern const u32 gBattleAnimSpritePal_Confetti[]; -extern const u32 gBattleAnimSpritePal_GreenStar[]; -extern const u32 gBattleAnimSpritePal_PinkCloud[]; -extern const u32 gBattleAnimSpritePal_SweatDrop[]; -extern const u32 gBattleAnimSpritePal_GuardRing[]; +extern const u16 gBattleAnimSpritePal_Angel[]; +extern const u16 gBattleAnimSpritePal_Devil[]; +extern const u16 gBattleAnimSpritePal_Swipe[]; +extern const u16 gBattleAnimSpritePal_Roots[]; +extern const u16 gBattleAnimSpritePal_ItemBag[]; +extern const u16 gBattleAnimSpritePal_JaggedMusicNote[]; +extern const u16 gBattleAnimSpritePal_Pokeball[]; +extern const u16 gBattleAnimSpritePal_LetterZ[]; +extern const u16 gBattleAnimSpritePal_RapidSpin[]; +extern const u16 gBattleAnimSpritePal_TriAttackTriangle[]; +extern const u16 gBattleAnimSpritePal_WispOrb[]; +extern const u16 gBattleAnimSpritePal_GoldStars[]; +extern const u16 gBattleAnimSpritePal_EclipsingOrb[]; +extern const u16 gBattleAnimSpritePal_GrayOrb[]; +extern const u16 gBattleAnimSpritePal_BlueOrb[]; +extern const u16 gBattleAnimSpritePal_RedOrb2[]; +extern const u16 gBattleAnimSpritePal_PinkPetal[]; +extern const u16 gBattleAnimSpritePal_PainSplit[]; +extern const u16 gBattleAnimSpritePal_Confetti[]; +extern const u16 gBattleAnimSpritePal_GreenStar[]; +extern const u16 gBattleAnimSpritePal_PinkCloud[]; +extern const u16 gBattleAnimSpritePal_SweatDrop[]; +extern const u16 gBattleAnimSpritePal_GuardRing[]; extern const u32 gCureBubblesGfx[]; -extern const u32 gCureBubblesPal[]; +extern const u16 gCureBubblesPal[]; extern const u32 gCureBubblesTilemap[]; -extern const u32 gBattleAnimSpritePal_PurpleScratch[]; -extern const u32 gBattleAnimSpritePal_SmallRedEye[]; -extern const u32 gBattleAnimSpritePal_HollowOrb[]; -extern const u32 gBattleAnimSpritePal_BluegreenOrb[]; -extern const u32 gBattleAnimSpritePal_PawPrint[]; -extern const u32 gBattleAnimSpritePal_PurpleFlame[]; -extern const u32 gBattleAnimSpritePal_RedBall[]; -extern const u32 gBattleAnimSpritePal_SmellingsaltEffect[]; -extern const u32 gBattleAnimSpritePal_Meteor[]; -extern const u32 gBattleAnimSpritePal_FlatRock[]; -extern const u32 gBattleAnimSpritePal_MagnifyingGlass[]; -extern const u32 gBattleAnimSpritePal_BrownOrb[]; -extern const u32 gBattleAnimSpritePal_MetalSoundWaves[]; -extern const u32 gBattleAnimSpritePal_FlyingDirt[]; -extern const u32 gBattleAnimSpritePal_Windstorm[]; -extern const u32 gBattleAnimSpritePal_IcicleSpear[]; -extern const u32 gBattleAnimSpritePal_Hail[]; -extern const u32 gBattleAnimSpritePal_GlowyRedOrb[]; -extern const u32 gBattleAnimSpritePal_GlowyGreenOrb[]; -extern const u32 gBattleAnimSpritePal_GreenSpike[]; -extern const u32 gBattleAnimSpritePal_WhiteCircleOfLight[]; -extern const u32 gBattleAnimSpritePal_GlowyBlueOrb[]; -extern const u32 gBattleAnimSpritePal_Pokeblock[]; -extern const u32 gBattleAnimSpritePal_WhiteFeather[]; -extern const u32 gBattleAnimSpritePal_Sparkle6[]; -extern const u32 gBattleAnimSpritePal_Splash[]; -extern const u32 gBattleAnimSpritePal_Gem1[]; -extern const u32 gBattleAnimSpritePal_SlamHit2[]; -extern const u32 gBattleAnimSpritePal_Recycle[]; -extern const u32 gBattleAnimSpritePal_RedParticles[]; -extern const u32 gBattleAnimSpritePal_Protect[]; -extern const u32 gBattleAnimSpritePal_DirtMound[]; -extern const u32 gBattleAnimSpritePal_Shock3[]; -extern const u32 gBattleAnimSpritePal_WeatherBall[]; -extern const u32 gBattleAnimSpritePal_Bird[]; -extern const u32 gBattleAnimSpritePal_CrossImpact[]; -extern const u32 gBattleAnimSpritePal_Slash2[]; -extern const u32 gBattleAnimSpritePal_WhipHit[]; -extern const u32 gBattleAnimSpritePal_BlueRing2[]; -extern const u32 gBattleAnimSpritePal_TrumpCard[]; -extern const u32 gBattleAnimSpritePal_TrumpCardParticles[]; -extern const u32 gBattleAnimSpritePal_Acupressure[]; -extern const u32 gBattleAnimSpritePal_WringOut[]; -extern const u32 gBattleAnimSpritePal_ColoredOrbs[]; -extern const u32 gBattleAnimSpritePal_WorrySeed[]; -extern const u32 gBattleAnimSpritePal_SmallCloud[]; -extern const u32 gBattleAnimSpritePal_AttackOrder[]; -extern const u32 gBattleAnimSpritePal_DragonPulse[]; -extern const u32 gBattleAnimSpritePal_WoodHammer[]; -extern const u32 gBattleAnimSpritePal_PsychoCut[]; -extern const u32 gBattleAnimSpritePal_PowerGem[]; -extern const u32 gBattleAnimSpritePal_StoneEdge[]; -extern const u32 gBattleAnimSpritePal_StealthRock[]; -extern const u32 gBattleAnimSpritePal_PoisonJab[]; +extern const u16 gBattleAnimSpritePal_PurpleScratch[]; +extern const u16 gBattleAnimSpritePal_SmallRedEye[]; +extern const u16 gBattleAnimSpritePal_HollowOrb[]; +extern const u16 gBattleAnimSpritePal_BluegreenOrb[]; +extern const u16 gBattleAnimSpritePal_PawPrint[]; +extern const u16 gBattleAnimSpritePal_PurpleFlame[]; +extern const u16 gBattleAnimSpritePal_RedBall[]; +extern const u16 gBattleAnimSpritePal_SmellingsaltEffect[]; +extern const u16 gBattleAnimSpritePal_Meteor[]; +extern const u16 gBattleAnimSpritePal_FlatRock[]; +extern const u16 gBattleAnimSpritePal_MagnifyingGlass[]; +extern const u16 gBattleAnimSpritePal_BrownOrb[]; +extern const u16 gBattleAnimSpritePal_MetalSoundWaves[]; +extern const u16 gBattleAnimSpritePal_FlyingDirt[]; +extern const u16 gBattleAnimSpritePal_Windstorm[]; +extern const u16 gBattleAnimSpritePal_IcicleSpear[]; +extern const u16 gBattleAnimSpritePal_Hail[]; +extern const u16 gBattleAnimSpritePal_GlowyRedOrb[]; +extern const u16 gBattleAnimSpritePal_GlowyGreenOrb[]; +extern const u16 gBattleAnimSpritePal_GreenSpike[]; +extern const u16 gBattleAnimSpritePal_WhiteCircleOfLight[]; +extern const u16 gBattleAnimSpritePal_GlowyBlueOrb[]; +extern const u16 gBattleAnimSpritePal_Pokeblock[]; +extern const u16 gBattleAnimSpritePal_WhiteFeather[]; +extern const u16 gBattleAnimSpritePal_Sparkle6[]; +extern const u16 gBattleAnimSpritePal_Splash[]; +extern const u16 gBattleAnimSpritePal_Gem1[]; +extern const u16 gBattleAnimSpritePal_SlamHit2[]; +extern const u16 gBattleAnimSpritePal_Recycle[]; +extern const u16 gBattleAnimSpritePal_RedParticles[]; +extern const u16 gBattleAnimSpritePal_Protect[]; +extern const u16 gBattleAnimSpritePal_DirtMound[]; +extern const u16 gBattleAnimSpritePal_Shock3[]; +extern const u16 gBattleAnimSpritePal_WeatherBall[]; +extern const u16 gBattleAnimSpritePal_Bird[]; +extern const u16 gBattleAnimSpritePal_CrossImpact[]; +extern const u16 gBattleAnimSpritePal_Slash2[]; +extern const u16 gBattleAnimSpritePal_WhipHit[]; +extern const u16 gBattleAnimSpritePal_BlueRing2[]; +extern const u16 gBattleAnimSpritePal_TrumpCard[]; +extern const u16 gBattleAnimSpritePal_TrumpCardParticles[]; +extern const u16 gBattleAnimSpritePal_Acupressure[]; +extern const u16 gBattleAnimSpritePal_WringOut[]; +extern const u16 gBattleAnimSpritePal_ColoredOrbs[]; +extern const u16 gBattleAnimSpritePal_WorrySeed[]; +extern const u16 gBattleAnimSpritePal_SmallCloud[]; +extern const u16 gBattleAnimSpritePal_AttackOrder[]; +extern const u16 gBattleAnimSpritePal_DragonPulse[]; +extern const u16 gBattleAnimSpritePal_WoodHammer[]; +extern const u16 gBattleAnimSpritePal_PsychoCut[]; +extern const u16 gBattleAnimSpritePal_PowerGem[]; +extern const u16 gBattleAnimSpritePal_StoneEdge[]; +extern const u16 gBattleAnimSpritePal_StealthRock[]; +extern const u16 gBattleAnimSpritePal_PoisonJab[]; // New Battle Anim Particles extern const u32 gBattleAnimSpriteGfx_WhiteStreak[]; -extern const u32 gBattleAnimSpritePal_WhiteStreak[]; +extern const u16 gBattleAnimSpritePal_WhiteStreak[]; extern const u32 gBattleAnimSpriteGfx_PurpleJab[]; -extern const u32 gBattleAnimSpritePal_PurpleJab[]; -extern const u32 gBattleAnimSpritePal_ToxicSpikes[]; +extern const u16 gBattleAnimSpritePal_PurpleJab[]; +extern const u16 gBattleAnimSpritePal_ToxicSpikes[]; extern const u32 gBattleAnimSpriteGfx_EnergyBall[]; -extern const u32 gBattleAnimSpritePal_EnergyBall[]; +extern const u16 gBattleAnimSpritePal_EnergyBall[]; extern const u32 gBattleAnimSpriteGfx_MegaStone[]; -extern const u32 gBattleAnimSpritePal_MegaStone[]; +extern const u16 gBattleAnimSpritePal_MegaStone[]; extern const u32 gBattleAnimSpriteGfx_MegaParticles[]; -extern const u32 gBattleAnimSpritePal_MegaParticles[]; +extern const u16 gBattleAnimSpritePal_MegaParticles[]; extern const u32 gBattleAnimSpriteGfx_MegaSymbol[]; -extern const u32 gBattleAnimSpritePal_MegaSymbol[]; +extern const u16 gBattleAnimSpritePal_MegaSymbol[]; extern const u32 gBattleAnimSpriteGfx_FlashCannonBall[]; -extern const u32 gBattleAnimSpritePal_FlashCannonBall[]; +extern const u16 gBattleAnimSpritePal_FlashCannonBall[]; extern const u32 gBattleAnimSpriteGfx_WaterGun[]; -extern const u32 gBattleAnimSpritePal_WaterGun[]; +extern const u16 gBattleAnimSpritePal_WaterGun[]; extern const u32 gBattleAnimSpriteGfx_Punishment[]; -extern const u32 gBattleAnimSpritePal_Punishment[]; +extern const u16 gBattleAnimSpritePal_Punishment[]; extern const u32 gBattleAnimSpriteGfx_QuickGuard[]; -extern const u32 gBattleAnimSpritePal_QuickGuard[]; +extern const u16 gBattleAnimSpritePal_QuickGuard[]; extern const u32 gBattleAnimSpriteGfx_TeraCrystal[]; -extern const u32 gBattleAnimSpritePal_TeraCrystal[]; +extern const u16 gBattleAnimSpritePal_TeraCrystal[]; extern const u32 gBattleAnimSpriteGfx_TeraShatter[]; -extern const u32 gBattleAnimSpritePal_TeraShatter[]; +extern const u16 gBattleAnimSpritePal_TeraShatter[]; // New Battle Anim Particles extern const u32 gBattleAnimSpriteGfx_AlphaStone[]; -extern const u32 gBattleAnimSpritePal_AlphaStone[]; +extern const u16 gBattleAnimSpritePal_AlphaStone[]; extern const u32 gBattleAnimSpriteGfx_AlphaSymbol[]; -extern const u32 gBattleAnimSpritePal_AlphaSymbol[]; +extern const u16 gBattleAnimSpritePal_AlphaSymbol[]; extern const u32 gBattleAnimSpriteGfx_Anchor[]; extern const u32 gBattleAnimSpriteGfx_Apple[]; -extern const u32 gBattleAnimSpritePal_Apple[]; +extern const u16 gBattleAnimSpritePal_Apple[]; extern const u32 gBattleAnimSpriteGfx_Arrows[]; extern const u32 gBattleAnimSpriteGfx_AssuranceHand[]; -extern const u32 gBattleAnimSpritePal_AssuranceHand[]; +extern const u16 gBattleAnimSpritePal_AssuranceHand[]; extern const u32 gBattleAnimSpriteGfx_AuraSphere[]; -extern const u32 gBattleAnimSpritePal_AuraSphere[]; -extern const u32 gBattleAnimSpritePal_AvalancheRocks[]; +extern const u16 gBattleAnimSpritePal_AuraSphere[]; +extern const u16 gBattleAnimSpritePal_AvalancheRocks[]; extern const u32 gBattleAnimSpriteGfx_NewPokeball[]; -extern const u32 gBattleAnimSpritePal_NewPokeball[]; +extern const u16 gBattleAnimSpritePal_NewPokeball[]; extern const u32 gBattleAnimSpriteGfx_Beam[]; -extern const u32 gBattleAnimSpritePal_Beam[]; +extern const u16 gBattleAnimSpritePal_Beam[]; extern const u32 gBattleAnimSpriteGfx_BerryEaten[]; -extern const u32 gBattleAnimSpritePal_BerryEaten[]; +extern const u16 gBattleAnimSpritePal_BerryEaten[]; extern const u32 gBattleAnimSpriteGfx_BerryNormal[]; -extern const u32 gBattleAnimSpritePal_BerryNormal[]; +extern const u16 gBattleAnimSpritePal_BerryNormal[]; extern const u32 gBattleAnimSpriteGfx_BigRock[]; -extern const u32 gBattleAnimSpritePal_BigRock[]; +extern const u16 gBattleAnimSpritePal_BigRock[]; extern const u32 gBattleAnimSpriteGfx_BlacephalonHead[]; -extern const u32 gBattleAnimSpritePal_BlacephalonHead[]; +extern const u16 gBattleAnimSpritePal_BlacephalonHead[]; extern const u32 gBattleAnimSpriteGfx_BloodMoon[]; -extern const u32 gBattleAnimSpritePal_BloodMoon[]; -extern const u32 gBattleAnimSpritePal_BlueFlare[]; +extern const u16 gBattleAnimSpritePal_BloodMoon[]; +extern const u16 gBattleAnimSpritePal_BlueFlare[]; extern const u32 gBattleAnimSpriteGfx_Branch[]; -extern const u32 gBattleAnimSpritePal_Branch[]; +extern const u16 gBattleAnimSpritePal_Branch[]; extern const u32 gBattleAnimSpriteGfx_Brine[]; -extern const u32 gBattleAnimSpritePal_Brine[]; +extern const u16 gBattleAnimSpritePal_Brine[]; extern const u32 gBattleAnimSpriteGfx_ChainLink[]; -extern const u32 gBattleAnimSpritePal_ChainLink[]; +extern const u16 gBattleAnimSpritePal_ChainLink[]; extern const u32 gBattleAnimSpriteGfx_Chop[]; -extern const u32 gBattleAnimSpritePal_Chop[]; +extern const u16 gBattleAnimSpritePal_Chop[]; extern const u32 gBattleAnimSpriteGfx_Cacoon[]; -extern const u32 gBattleAnimSpritePal_Cacoon[]; +extern const u16 gBattleAnimSpritePal_Cacoon[]; extern const u32 gBattleAnimSpriteGfx_Confide[]; -extern const u32 gBattleAnimSpritePal_Confide[]; +extern const u16 gBattleAnimSpritePal_Confide[]; extern const u32 gBattleAnimSpriteGfx_CraftyShield[]; -extern const u32 gBattleAnimSpritePal_CraftyShield[]; +extern const u16 gBattleAnimSpritePal_CraftyShield[]; extern const u32 gBattleAnimSpriteGfx_NewNail[]; -extern const u32 gBattleAnimSpritePal_NewNail[]; -extern const u32 gBattleAnimSpritePal_DracoMeteor[]; +extern const u16 gBattleAnimSpritePal_NewNail[]; +extern const u16 gBattleAnimSpritePal_DracoMeteor[]; extern const u32 gBattleAnimSpriteGfx_DragonPulseRing[]; -extern const u32 gBattleAnimSpritePal_DragonPulseRing[]; +extern const u16 gBattleAnimSpritePal_DragonPulseRing[]; extern const u32 gBattleAnimSpriteGfx_DreepyMissile[]; -extern const u32 gBattleAnimSpritePal_DreepyMissile[]; +extern const u16 gBattleAnimSpritePal_DreepyMissile[]; extern const u32 gBattleAnimSpriteGfx_DreepyMissileShiny[]; -extern const u32 gBattleAnimSpritePal_DreepyMissileShiny[]; +extern const u16 gBattleAnimSpritePal_DreepyMissileShiny[]; extern const u32 gBattleAnimSpriteGfx_Drill[]; -extern const u32 gBattleAnimSpritePal_Drill[]; +extern const u16 gBattleAnimSpritePal_Drill[]; extern const u32 gBattleAnimSpriteGfx_NewEmbers[]; -extern const u32 gBattleAnimSpritePal_NewEmbers[]; +extern const u16 gBattleAnimSpritePal_NewEmbers[]; extern const u32 gBattleAnimSpriteGfx_FairyLockChains[]; extern const u32 gBattleAnimSpriteGfx_Fishies[]; -extern const u32 gBattleAnimSpritePal_Fishies[]; +extern const u16 gBattleAnimSpritePal_Fishies[]; extern const u32 gBattleAnimSpriteGfx_NewFly[]; -extern const u32 gBattleAnimSpritePal_NewFly[]; -extern const u32 gBattleAnimSpritePal_FusionFlare[]; -extern const u32 gBattleAnimSpritePal_GarbagePoisonPillar[]; +extern const u16 gBattleAnimSpritePal_NewFly[]; +extern const u16 gBattleAnimSpritePal_FusionFlare[]; +extern const u16 gBattleAnimSpritePal_GarbagePoisonPillar[]; extern const u32 gBattleAnimSpriteGfx_Gear[]; -extern const u32 gBattleAnimSpritePal_Gear[]; +extern const u16 gBattleAnimSpritePal_Gear[]; extern const u32 gBattleAnimSpriteGfx_GigavoltHavocSpear[]; -extern const u32 gBattleAnimSpritePal_GigavoltHavocSpear[]; +extern const u16 gBattleAnimSpritePal_GigavoltHavocSpear[]; extern const u32 gBattleAnimSpriteGfx_GoldenApple[]; -extern const u32 gBattleAnimSpritePal_GoldenApple[]; -extern const u32 gBattleAnimSpritePal_GreenDrake[]; +extern const u16 gBattleAnimSpritePal_GoldenApple[]; +extern const u16 gBattleAnimSpritePal_GreenDrake[]; extern const u32 gBattleAnimSpriteGfx_NewGreenStar[]; -extern const u32 gBattleAnimSpritePal_NewGreenStar[]; +extern const u16 gBattleAnimSpritePal_NewGreenStar[]; extern const u32 gBattleAnimSpriteGfx_HeartStamp[]; -extern const u32 gBattleAnimSpritePal_HeartStamp[]; +extern const u16 gBattleAnimSpritePal_HeartStamp[]; extern const u32 gBattleAnimSpriteGfx_ZygardeHexes[]; -extern const u32 gBattleAnimSpritePal_ZygardeHexes[]; +extern const u16 gBattleAnimSpritePal_ZygardeHexes[]; extern const u32 gBattleAnimSpriteGfx_HoopaHand[]; -extern const u32 gBattleAnimSpritePal_HoopaHand[]; +extern const u16 gBattleAnimSpritePal_HoopaHand[]; extern const u32 gBattleAnimSpriteGfx_HoopaRing[]; -extern const u32 gBattleAnimSpritePal_HoopaRing[]; +extern const u16 gBattleAnimSpritePal_HoopaRing[]; extern const u32 gBattleAnimSpriteGfx_NewHornHit[]; -extern const u32 gBattleAnimSpritePal_NewHornHit[]; +extern const u16 gBattleAnimSpritePal_NewHornHit[]; extern const u32 gBattleAnimSpriteGfx_HornLeech[]; -extern const u32 gBattleAnimSpritePal_HornLeech[]; +extern const u16 gBattleAnimSpritePal_HornLeech[]; extern const u32 gBattleAnimSpriteGfx_HorseshoeFist[]; -extern const u32 gBattleAnimSpritePal_HorseshoeFist[]; +extern const u16 gBattleAnimSpritePal_HorseshoeFist[]; extern const u32 gBattleAnimSpriteGfx_HydroPump[]; -extern const u32 gBattleAnimSpritePal_HydroPump[]; +extern const u16 gBattleAnimSpritePal_HydroPump[]; extern const u32 gBattleAnimSpriteGfx_IceRock[]; -extern const u32 gBattleAnimSpritePal_IceRock[]; +extern const u16 gBattleAnimSpritePal_IceRock[]; extern const u32 gBattleAnimSpriteGfx_LargeSpike[]; -extern const u32 gBattleAnimSpritePal_LargeSpike[]; +extern const u16 gBattleAnimSpritePal_LargeSpike[]; extern const u32 gBattleAnimSpriteGfx_NewLeaf[]; -extern const u32 gBattleAnimSpritePal_NewLeaf[]; +extern const u16 gBattleAnimSpritePal_NewLeaf[]; extern const u32 gBattleAnimSpriteGfx_NewLeechSeed[]; -extern const u32 gBattleAnimSpritePal_NewLeechSeed[]; +extern const u16 gBattleAnimSpritePal_NewLeechSeed[]; extern const u32 gBattleAnimSpriteGfx_LightningRain[]; -extern const u32 gBattleAnimSpritePal_LightningRain[]; +extern const u16 gBattleAnimSpritePal_LightningRain[]; extern const u32 gBattleAnimSpriteGfx_NewEye[]; -extern const u32 gBattleAnimSpritePal_NewEye[]; +extern const u16 gBattleAnimSpritePal_NewEye[]; extern const u32 gBattleAnimSpriteGfx_MetalBits[]; extern const u32 gBattleAnimSpriteGfx_MudBomb[]; -extern const u32 gBattleAnimSpritePal_MudBomb[]; +extern const u16 gBattleAnimSpritePal_MudBomb[]; extern const u32 gBattleAnimSpriteGfx_Mushroom[]; -extern const u32 gBattleAnimSpritePal_Mushroom[]; -extern const u32 gBattleAnimSpritePal_NaturalGiftRing[]; +extern const u16 gBattleAnimSpritePal_Mushroom[]; +extern const u16 gBattleAnimSpritePal_NaturalGiftRing[]; extern const u32 gBattleAnimSpriteGfx_NecrozmaStar[]; -extern const u32 gBattleAnimSpritePal_NecrozmaStar[]; -extern const u32 gBattleAnimSpritePal_NewImpact[]; +extern const u16 gBattleAnimSpritePal_NecrozmaStar[]; +extern const u16 gBattleAnimSpritePal_NewImpact[]; extern const u32 gBattleAnimSpriteGfx_Obstruct[]; -extern const u32 gBattleAnimSpritePal_Obstruct[]; +extern const u16 gBattleAnimSpritePal_Obstruct[]; extern const u32 gBattleAnimSpriteGfx_OmegaStone[]; -extern const u32 gBattleAnimSpritePal_OmegaStone[]; +extern const u16 gBattleAnimSpritePal_OmegaStone[]; extern const u32 gBattleAnimSpriteGfx_OmegaSymbol[]; -extern const u32 gBattleAnimSpritePal_OmegaSymbol[]; +extern const u16 gBattleAnimSpritePal_OmegaSymbol[]; extern const u32 gBattleAnimSpriteGfx_PinkDiamond[]; -extern const u32 gBattleAnimSpritePal_PinkDiamond[]; +extern const u16 gBattleAnimSpritePal_PinkDiamond[]; extern const u32 gBattleAnimSpriteGfx_PoisonColumn[]; -extern const u32 gBattleAnimSpritePal_PoisonColumn[]; +extern const u16 gBattleAnimSpritePal_PoisonColumn[]; extern const u32 gBattleAnimSpriteGfx_PowerTrick[]; -extern const u32 gBattleAnimSpritePal_PowerTrick[]; +extern const u16 gBattleAnimSpritePal_PowerTrick[]; extern const u32 gBattleAnimSpriteGfx_PurpleChain[]; -extern const u32 gBattleAnimSpritePal_PurpleChain[]; +extern const u16 gBattleAnimSpritePal_PurpleChain[]; extern const u32 gBattleAnimSpriteGfx_PurpleDrake[]; -extern const u32 gBattleAnimSpritePal_PurpleDrake[]; +extern const u16 gBattleAnimSpritePal_PurpleDrake[]; extern const u32 gBattleAnimSpriteGfx_QuickGuard[]; -extern const u32 gBattleAnimSpritePal_QuickGuard[]; +extern const u16 gBattleAnimSpritePal_QuickGuard[]; extern const u32 gBattleAnimSpriteGfx_RazorShell[]; -extern const u32 gBattleAnimSpritePal_RazorShell[]; +extern const u16 gBattleAnimSpritePal_RazorShell[]; extern const u32 gBattleAnimSpriteGfx_RedExplosion[]; -extern const u32 gBattleAnimSpritePal_RedExplosion[]; +extern const u16 gBattleAnimSpritePal_RedExplosion[]; extern const u32 gBattleAnimSpriteGfx_RocksSmall[]; extern const u32 gBattleAnimSpriteGfx_NewRocks[]; -extern const u32 gBattleAnimSpritePal_NewRocks[]; +extern const u16 gBattleAnimSpritePal_NewRocks[]; extern const u32 gBattleAnimSpriteGfx_ShellLeft[]; -extern const u32 gBattleAnimSpritePal_ShellLeft[]; +extern const u16 gBattleAnimSpritePal_ShellLeft[]; extern const u32 gBattleAnimSpriteGfx_ShellRight[]; -extern const u32 gBattleAnimSpritePal_SpacialRendSlices[]; +extern const u16 gBattleAnimSpritePal_SpacialRendSlices[]; extern const u32 gBattleAnimSpriteGfx_NewSpikes[]; -extern const u32 gBattleAnimSpritePal_NewSpikes[]; +extern const u16 gBattleAnimSpritePal_NewSpikes[]; extern const u32 gBattleAnimSpriteGfx_SpiritShackleArrow[]; -extern const u32 gBattleAnimSpritePal_SpiritShackleArrow[]; +extern const u16 gBattleAnimSpritePal_SpiritShackleArrow[]; extern const u32 gBattleAnimSpriteGfx_SteamEruption[]; -extern const u32 gBattleAnimSpritePal_SteamEruption[]; +extern const u16 gBattleAnimSpritePal_SteamEruption[]; extern const u32 gBattleAnimSpriteGfx_Steamroller[]; -extern const u32 gBattleAnimSpritePal_Steamroller[]; +extern const u16 gBattleAnimSpritePal_Steamroller[]; extern const u32 gBattleAnimSpriteGfx_StonePillar[]; -extern const u32 gBattleAnimSpritePal_StonePillar[]; +extern const u16 gBattleAnimSpritePal_StonePillar[]; extern const u32 gBattleAnimSpriteGfx_StraightBeam[]; -extern const u32 gBattleAnimSpritePal_StraightBeam[]; -extern const u32 gBattleAnimSpritePal_Poltergeist[]; -extern const u32 gBattleAnimSpritePal_NewSurf[]; +extern const u16 gBattleAnimSpritePal_StraightBeam[]; +extern const u16 gBattleAnimSpritePal_Poltergeist[]; +extern const u16 gBattleAnimSpritePal_NewSurf[]; extern const u32 gBattleAnimSpriteGfx_NewSword[]; -extern const u32 gBattleAnimSpritePal_NewSword[]; +extern const u16 gBattleAnimSpritePal_NewSword[]; extern const u32 gBattleAnimSpriteGfx_NewTeeth[]; -extern const u32 gBattleAnimSpritePal_NewTeeth[]; +extern const u16 gBattleAnimSpritePal_NewTeeth[]; extern const u32 gBattleAnimSpriteGfx_NewHandsAndFeet[]; -extern const u32 gBattleAnimSpritePal_NewHandsAndFeet[]; +extern const u16 gBattleAnimSpritePal_NewHandsAndFeet[]; extern const u32 gBattleAnimSpriteGfx_Tornado[]; -extern const u32 gBattleAnimSpritePal_Tornado[]; +extern const u16 gBattleAnimSpritePal_Tornado[]; extern const u32 gBattleAnimSpriteGfx_ZMoveSymbol[]; -extern const u32 gBattleAnimSpritePal_ZMoveSymbol[]; +extern const u16 gBattleAnimSpritePal_ZMoveSymbol[]; extern const u32 gBattleAnimSpriteGfx_Teapot[]; -extern const u32 gBattleAnimSpritePal_Teapot[]; +extern const u16 gBattleAnimSpritePal_Teapot[]; extern const u32 gBattleAnimSpriteGfx_WoodHammerHammer[]; -extern const u32 gBattleAnimSpritePal_WoodHammerHammer[]; +extern const u16 gBattleAnimSpritePal_WoodHammerHammer[]; extern const u32 gBattleAnimSpriteGfx_Snowflakes[]; -extern const u32 gBattleAnimSpritePal_Snowflakes[]; +extern const u16 gBattleAnimSpritePal_Snowflakes[]; extern const u32 gBattleAnimSpriteGfx_SyrupBlob[]; extern const u32 gBattleAnimSpriteGfx_SyrupShell[]; extern const u32 gBattleAnimSpriteGfx_SyrupSplat[]; -extern const u32 gBattleAnimSpritePal_SyrupRed[]; -extern const u32 gBattleAnimSpritePal_SyrupYellow[]; +extern const u16 gBattleAnimSpritePal_SyrupRed[]; +extern const u16 gBattleAnimSpritePal_SyrupYellow[]; extern const u32 gBattleAnimSpriteGfx_IvyCudgel[]; -extern const u32 gBattleAnimSpritePal_IvyCudgelGrass[]; -extern const u32 gBattleAnimSpritePal_IvyCudgelFire[]; -extern const u32 gBattleAnimSpritePal_IvyCudgelRock[]; -extern const u32 gBattleAnimSpritePal_IvyCudgelWater[]; +extern const u16 gBattleAnimSpritePal_IvyCudgelGrass[]; +extern const u16 gBattleAnimSpritePal_IvyCudgelFire[]; +extern const u16 gBattleAnimSpritePal_IvyCudgelRock[]; +extern const u16 gBattleAnimSpritePal_IvyCudgelWater[]; extern const u32 gBattleAnimSpriteGfx_PinkVioletOrb[]; -extern const u32 gBattleAnimSpritePal_PinkVioletOrb[]; +extern const u16 gBattleAnimSpritePal_PinkVioletOrb[]; extern const u32 gBattleAnimSpriteGfx_TeraStarstormBeam[]; -extern const u32 gBattleAnimSpritePal_TeraStarstormBeam[]; +extern const u16 gBattleAnimSpritePal_TeraStarstormBeam[]; extern const u32 gBattleAnimSpriteGfx_SaltParticle[]; -extern const u32 gBattleAnimSpritePal_SaltParticle[]; +extern const u16 gBattleAnimSpritePal_SaltParticle[]; extern const u32 gBattleAnimBgImage_Dark[]; extern const u32 gBattleAnimBgImage_Ghost[]; @@ -2913,37 +2913,37 @@ extern const u32 gBattleAnimBgImage_Aurora[]; extern const u32 gBattleAnimBgImage_Fissure[]; extern const u32 gBattleAnimBgImage_TrickRoom[]; extern const u32 gBattleAnimBgImage_Hurricane[]; -extern const u32 gBattleAnimBgPalette_Hurricane[]; +extern const u16 gBattleAnimBgPalette_Hurricane[]; extern const u32 gBattleAnimBgTilemap_Hurricane[]; -extern const u32 gBattleAnimBgPalette_RockWrecker[]; +extern const u16 gBattleAnimBgPalette_RockWrecker[]; extern const u32 gBattleAnimBgTilemap_GigaImpactPlayer[]; extern const u32 gBattleAnimBgTilemap_GigaImpactOpponent[]; extern const u32 gBattleAnimBgTilemap_GigaImpactContest[]; extern const u32 gBattleAnimBgImage_GigaImpact[]; extern const u32 gBattleAnimBgImage_GigaImpactContest[]; -extern const u32 gBattleAnimBgPalette_GigaImpact[]; +extern const u16 gBattleAnimBgPalette_GigaImpact[]; extern const u32 gBattleAnimBgImage_SpacialRend[]; -extern const u32 gBattleAnimBgPalette_SpacialRend[]; -extern const u32 gBattleAnimBgPalette_DarkVoid[]; +extern const u16 gBattleAnimBgPalette_SpacialRend[]; +extern const u16 gBattleAnimBgPalette_DarkVoid[]; extern const u32 gBattleAnimBgTilemap_DarkVoid[]; -extern const u32 gBattleAnimBgPalette_Dark[]; -extern const u32 gBattleAnimBgPalette_Ghost[]; -extern const u32 gBattleAnimBgPalette_Psychic[]; -extern const u32 gBattleAnimBgPalette_Impact[]; -extern const u32 gBattleAnimBgPalette_Drill[]; -extern const u32 gBattleAnimBgPalette_Highspeed[]; -extern const u32 gBattleAnimBgPalette_Thunder[]; -extern const u32 gBattleAnimBgPalette_Guillotine[]; -extern const u32 gBattleAnimBgPalette_Ice[]; -extern const u32 gBattleAnimBgPalette_Cosmic[]; -extern const u32 gBattleAnimBgPalette_InAir[]; -extern const u32 gBattleAnimBgPalette_Sky[]; -extern const u32 gBattleAnimBgPalette_Aurora[]; -extern const u32 gBattleAnimBgPalette_Fissure[]; -extern const u32 gBattleAnimBgPalette_Bug[]; -extern const u32 gBattleAnimBgPalette_SolarBeam[]; -extern const u32 gBattleAnimBgPalette_MagmaStorm[]; -extern const u32 gBattleAnimBgPalette_TrickRoom[]; +extern const u16 gBattleAnimBgPalette_Dark[]; +extern const u16 gBattleAnimBgPalette_Ghost[]; +extern const u16 gBattleAnimBgPalette_Psychic[]; +extern const u16 gBattleAnimBgPalette_Impact[]; +extern const u16 gBattleAnimBgPalette_Drill[]; +extern const u16 gBattleAnimBgPalette_Highspeed[]; +extern const u16 gBattleAnimBgPalette_Thunder[]; +extern const u16 gBattleAnimBgPalette_Guillotine[]; +extern const u16 gBattleAnimBgPalette_Ice[]; +extern const u16 gBattleAnimBgPalette_Cosmic[]; +extern const u16 gBattleAnimBgPalette_InAir[]; +extern const u16 gBattleAnimBgPalette_Sky[]; +extern const u16 gBattleAnimBgPalette_Aurora[]; +extern const u16 gBattleAnimBgPalette_Fissure[]; +extern const u16 gBattleAnimBgPalette_Bug[]; +extern const u16 gBattleAnimBgPalette_SolarBeam[]; +extern const u16 gBattleAnimBgPalette_MagmaStorm[]; +extern const u16 gBattleAnimBgPalette_TrickRoom[]; extern const u32 gBattleAnimBgTilemap_Dark[]; extern const u32 gBattleAnimBgTilemap_Ghost[]; extern const u32 gBattleAnimBgTilemap_Psychic[]; @@ -2956,7 +2956,7 @@ extern const u32 gBattleAnimBgTilemap_HighspeedOpponent[]; extern const u32 gBattleAnimBgTilemap_HighspeedPlayer[]; extern const u32 gBattleAnimBgTilemap_TrickRoom[]; extern const u32 gBattleAnimMaskImage_LightBeam[]; -extern const u32 gBattleAnimMaskPalette_LightBeam[]; +extern const u16 gBattleAnimMaskPalette_LightBeam[]; extern const u32 gBattleAnimMaskTilemap_LightBeam[]; extern const u32 gBattleAnimBgTilemap_Thunder[]; extern const u32 gBattleAnimBgTilemap_GuillotineOpponent[]; @@ -2967,111 +2967,111 @@ extern const u32 gBattleAnimBgTilemap_Cosmic[]; extern const u32 gBattleAnimBgTilemap_InAir[]; extern const u32 gBattleAnimBgTilemap_Aurora[]; extern const u32 gBattleAnimBgTilemap_Fissure[]; -extern const u32 gBattleAnimBgPalette_SludgeWave[]; +extern const u16 gBattleAnimBgPalette_SludgeWave[]; extern const u32 gBattleAnimBgImage_Aeroblast[]; -extern const u32 gBattleAnimBgPalette_Aeroblast[]; +extern const u16 gBattleAnimBgPalette_Aeroblast[]; extern const u32 gBattleAnimBgTilemap_Aeroblast[]; -extern const u32 gBattleAnimBgPalette_AuraSphere[]; +extern const u16 gBattleAnimBgPalette_AuraSphere[]; extern const u32 gBattleAnimBgImage_BlackholeEclipse[]; -extern const u32 gBattleAnimBgPalette_BlackholeEclipse[]; +extern const u16 gBattleAnimBgPalette_BlackholeEclipse[]; extern const u32 gBattleAnimBgTilemap_BlackholeEclipse[]; extern const u32 gBattleAnimBgImage_BloomDoom[]; -extern const u32 gBattleAnimBgPalette_BloomDoom[]; +extern const u16 gBattleAnimBgPalette_BloomDoom[]; extern const u32 gBattleAnimBgTilemap_BloomDoom[]; extern const u32 gBattleAnimBgImage_BoltStrike[]; -extern const u32 gBattleAnimBgPalette_BoltStrike[]; +extern const u16 gBattleAnimBgPalette_BoltStrike[]; extern const u32 gBattleAnimBgTilemap_BoltStrike[]; extern const u32 gBattleAnimBgImage_ClangorousSoulblaze[]; -extern const u32 gBattleAnimBgPalette_ClangorousSoulblaze[]; +extern const u16 gBattleAnimBgPalette_ClangorousSoulblaze[]; extern const u32 gBattleAnimBgTilemap_ClangorousSoulblaze[]; -extern const u32 gBattleAnimBgPalette_DynamaxCannon[]; +extern const u16 gBattleAnimBgPalette_DynamaxCannon[]; extern const u32 gBattleAnimBgImage_ElectricTerrain[]; -extern const u32 gBattleAnimBgPalette_ElectricTerrain[]; +extern const u16 gBattleAnimBgPalette_ElectricTerrain[]; extern const u32 gBattleAnimBgTilemap_ElectricTerrain[]; extern const u32 gBattleAnimBgImage_Fire1[]; -extern const u32 gBattleAnimBgPalette_Fire1[]; +extern const u16 gBattleAnimBgPalette_Fire1[]; extern const u32 gBattleAnimBgTilemap_Fire1[]; -extern const u32 gBattleAnimBgPalette_Fire2[]; +extern const u16 gBattleAnimBgPalette_Fire2[]; extern const u32 gBattleAnimBgImage_FocusBlast[]; -extern const u32 gBattleAnimBgPalette_FocusBlast[]; +extern const u16 gBattleAnimBgPalette_FocusBlast[]; extern const u32 gBattleAnimBgTilemap_FocusBlast[]; -extern const u32 gBattleAnimBgPalette_GarbageFalls[]; +extern const u16 gBattleAnimBgPalette_GarbageFalls[]; extern const u32 gBattleAnimBgImage_GrassyTerrain[]; -extern const u32 gBattleAnimBgPalette_GrassyTerrain[]; +extern const u16 gBattleAnimBgPalette_GrassyTerrain[]; extern const u32 gBattleAnimBgTilemap_GrassyTerrain[]; -extern const u32 gBattleAnimBgPalette_GunkShot[]; +extern const u16 gBattleAnimBgPalette_GunkShot[]; extern const u32 gBattleAnimBgImage_HydroCannon[]; -extern const u32 gBattleAnimBgPalette_HydroCannon[]; +extern const u16 gBattleAnimBgPalette_HydroCannon[]; extern const u32 gBattleAnimBgTilemap_HydroCannon[]; -extern const u32 gBattleAnimBgPalette_Chloroblast[]; +extern const u16 gBattleAnimBgPalette_Chloroblast[]; extern const u32 gBattleAnimBgImage_HydroPump[]; -extern const u32 gBattleAnimBgPalette_HydroPump[]; +extern const u16 gBattleAnimBgPalette_HydroPump[]; extern const u32 gBattleAnimBgTilemap_HydroPump[]; -extern const u32 gBattleAnimBgPalette_HyperBeam[]; -extern const u32 gBattleAnimBgPalette_HyperspaceFury[]; +extern const u16 gBattleAnimBgPalette_HyperBeam[]; +extern const u16 gBattleAnimBgPalette_HyperspaceFury[]; extern const u32 gBattleAnimBgImage_InfernoOverdrive[]; -extern const u32 gBattleAnimBgPalette_InfernoOverdrive[]; +extern const u16 gBattleAnimBgPalette_InfernoOverdrive[]; extern const u32 gBattleAnimBgTilemap_InfernoOverdrive[]; extern const u32 gBattleAnimBgImage_LeafStorm[]; -extern const u32 gBattleAnimBgPalette_LeafStorm[]; +extern const u16 gBattleAnimBgPalette_LeafStorm[]; extern const u32 gBattleAnimBgTilemap_LeafStorm[]; -extern const u32 gBattleAnimBgPalette_MagicRoom[]; +extern const u16 gBattleAnimBgPalette_MagicRoom[]; extern const u32 gBattleAnimBgImage_MaliciousMoonsault[]; -extern const u32 gBattleAnimBgPalette_MaliciousMoonsault[]; +extern const u16 gBattleAnimBgPalette_MaliciousMoonsault[]; extern const u32 gBattleAnimBgTilemap_MaliciousMoonsault[]; extern const u32 gBattleAnimBgImage_MaxLightning[]; -extern const u32 gBattleAnimBgPalette_MaxLightning[]; +extern const u16 gBattleAnimBgPalette_MaxLightning[]; extern const u32 gBattleAnimBgTilemap_MaxLightning[]; extern const u32 gBattleAnimBgImage_MistyTerrain[]; -extern const u32 gBattleAnimBgPalette_MistyTerrain[]; +extern const u16 gBattleAnimBgPalette_MistyTerrain[]; extern const u32 gBattleAnimBgTilemap_MistyTerrain[]; extern const u32 gBattleAnimBgImage_NeverendingNightmare[]; -extern const u32 gBattleAnimBgPalette_NeverendingNightmare[]; +extern const u16 gBattleAnimBgPalette_NeverendingNightmare[]; extern const u32 gBattleAnimBgTilemap_NeverendingNightmare[]; extern const u32 gBattleAnimBgImage_Nightmare[]; -extern const u32 gBattleAnimBgPalette_Nightmare[]; +extern const u16 gBattleAnimBgPalette_Nightmare[]; extern const u32 gBattleAnimBgTilemap_Nightmare[]; -extern const u32 gBattleAnimBgPalette_PoisonFalls[]; -extern const u32 gBattleAnimBgPalette_PsychicNew[]; +extern const u16 gBattleAnimBgPalette_PoisonFalls[]; +extern const u16 gBattleAnimBgPalette_PsychicNew[]; extern const u32 gBattleAnimBgImage_PsychicTerrain[]; -extern const u32 gBattleAnimBgPalette_PsychicTerrain[]; +extern const u16 gBattleAnimBgPalette_PsychicTerrain[]; extern const u32 gBattleAnimBgTilemap_PsychicTerrain[]; extern const u32 gBattleAnimBgImage_ShatteredPsyche[]; -extern const u32 gBattleAnimBgPalette_ShatteredPsyche[]; +extern const u16 gBattleAnimBgPalette_ShatteredPsyche[]; extern const u32 gBattleAnimBgTilemap_ShatteredPsyche[]; -extern const u32 gBattleAnimBgImage_SkyDay[]; -extern const u32 gBattleAnimBgPalette_SkyDay[]; -extern const u32 gBattleAnimBgTilemap_SkyDay[]; -extern const u32 gBattleAnimBgPalette_SkyAfternoon[]; -extern const u32 gBattleAnimBgPalette_SkyNight[]; +extern const u32 gBattleAnimBgImage_RockField[]; +extern const u16 gBattleAnimBgPalette_RockDay[]; +extern const u32 gBattleAnimBgTilemap_RockField[]; +extern const u16 gBattleAnimBgPalette_RockAfternoon[]; +extern const u16 gBattleAnimBgPalette_RockNight[]; extern const u32 gBattleAnimBgImage_SnuggleForever[]; -extern const u32 gBattleAnimBgPalette_SnuggleForever[]; +extern const u16 gBattleAnimBgPalette_SnuggleForever[]; extern const u32 gBattleAnimBgTilemap_SnuggleForever[]; extern const u32 gBattleAnimBgImage_SoulStealing7StarStrike[]; -extern const u32 gBattleAnimBgPalette_SoulStealing7StarStrike[]; +extern const u16 gBattleAnimBgPalette_SoulStealing7StarStrike[]; extern const u32 gBattleAnimBgTilemap_SoulStealing7StarStrike[]; -extern const u32 gBattleAnimBgPalette_TectonicRage[]; +extern const u16 gBattleAnimBgPalette_TectonicRage[]; extern const u32 gBattleAnimBgImage_TwinkleTackle[]; -extern const u32 gBattleAnimBgPalette_TwinkleTackle[]; +extern const u16 gBattleAnimBgPalette_TwinkleTackle[]; extern const u32 gBattleAnimBgTilemap_TwinkleTackle[]; extern const u32 gBattleAnimBgImage_WaterPulse[]; -extern const u32 gBattleAnimBgPalette_WaterPulse[]; +extern const u16 gBattleAnimBgPalette_WaterPulse[]; extern const u32 gBattleAnimBgTilemap_WaterPulse[]; extern const u32 gBattleAnimBgImage_Waterfall[]; -extern const u32 gBattleAnimBgPalette_Waterfall[]; +extern const u16 gBattleAnimBgPalette_Waterfall[]; extern const u32 gBattleAnimBgTilemap_Waterfall[]; -extern const u32 gBattleAnimBgPalette_WonderRoom[]; +extern const u16 gBattleAnimBgPalette_WonderRoom[]; extern const u32 gBattleAnimBgImage_ZMoveActivate[]; -extern const u32 gBattleAnimBgPalette_ZMoveActivate[]; +extern const u16 gBattleAnimBgPalette_ZMoveActivate[]; extern const u32 gBattleAnimBgTilemap_ZMoveActivate[]; extern const u32 gBattleAnimBgImage_ZMoveMountain[]; -extern const u32 gBattleAnimBgPalette_ZMoveMountain[]; +extern const u16 gBattleAnimBgPalette_ZMoveMountain[]; extern const u32 gBattleAnimBgTilemap_ZMoveMountain[]; -extern const u32 gBattleAnimSpritePal_SteelBeam[]; -extern const u32 gBattleAnimBgPalette_SteelBeam[]; +extern const u16 gBattleAnimSpritePal_SteelBeam[]; +extern const u16 gBattleAnimBgPalette_SteelBeam[]; extern const u32 gMetalShineGfx[]; -extern const u32 gMetalShinePalette[]; +extern const u16 gMetalShinePalette[]; extern const u32 gMetalShineTilemap[]; extern const u32 gBattleAnimMaskImage_Curse[]; @@ -3080,14 +3080,14 @@ extern const u32 gBattleAnimMaskTilemap_Curse[]; extern const u32 gStatAnim_Gfx[]; extern const u32 gStatAnim_Increase_Tilemap[]; extern const u32 gStatAnim_Decrease_Tilemap[]; -extern const u32 gStatAnim_Defense_Pal[]; -extern const u32 gStatAnim_Attack_Pal[]; -extern const u32 gStatAnim_Accuracy_Pal[]; -extern const u32 gStatAnim_Speed_Pal[]; -extern const u32 gStatAnim_Multiple_Pal[]; -extern const u32 gStatAnim_Evasion_Pal[]; -extern const u32 gStatAnim_SpAttack_Pal[]; -extern const u32 gStatAnim_SpDefense_Pal[]; +extern const u16 gStatAnim_Defense_Pal[]; +extern const u16 gStatAnim_Attack_Pal[]; +extern const u16 gStatAnim_Accuracy_Pal[]; +extern const u16 gStatAnim_Speed_Pal[]; +extern const u16 gStatAnim_Multiple_Pal[]; +extern const u16 gStatAnim_Evasion_Pal[]; +extern const u16 gStatAnim_SpAttack_Pal[]; +extern const u16 gStatAnim_SpDefense_Pal[]; extern const u32 gContestInterfaceGfx[]; extern const u32 gContestAudienceGfx[]; @@ -3095,7 +3095,7 @@ extern const u8 gContestApplauseMeterGfx[]; extern const u8 gContestNextTurnNumbersGfx[]; extern const u8 gContestNextTurnRandomGfx[]; extern const u32 gContestAudienceTilemap[]; -extern const u32 gContestInterfaceAudiencePalette[]; +extern const u16 gContestInterfaceAudiencePalette[]; extern const u32 gContestInterfaceTilemap[]; extern const u32 gContestCurtainTilemap[]; extern const u32 gContestSliderHeart_Gfx[]; @@ -3105,14 +3105,14 @@ extern const u32 gContestFaces_Gfx[]; extern const u32 gContestApplauseGfx[]; extern const u32 gContestJudgeGfx[]; extern const u32 gContestJudgeSymbolsGfx[]; -extern const u32 gContestJudgeSymbolsPal[]; +extern const u16 gContestJudgeSymbolsPal[]; extern const u32 gBattleAnimBgTilemap_SurfOpponent[]; extern const u32 gBattleAnimBgTilemap_SurfPlayer[]; extern const u32 gBattleAnimBgTilemap_SurfContest[]; extern const u32 gBattleAnimBgImage_Surf[]; -extern const u32 gBattleAnimBgPalette_Surf[]; -extern const u32 gBattleAnimBackgroundImageMuddyWater_Pal[]; +extern const u16 gBattleAnimBgPalette_Surf[]; +extern const u16 gBattleAnimBackgroundImageMuddyWater_Pal[]; extern const u32 gEnemyMonShadow_Gfx[]; extern const u32 gEnemyMonShadowsSized_Gfx[]; @@ -3189,12 +3189,12 @@ extern const u32 gBattleAnimBgImage_Sandstorm[]; // Pledge Effect field status - Rainbow extern const u32 gBattleAnimBgImage_Rainbow[]; -extern const u32 gBattleAnimBGPalette_Rainbow[]; +extern const u16 gBattleAnimBGPalette_Rainbow[]; extern const u32 gBattleAnimBgTilemap_Rainbow[]; // Pledge Effect field status - Swamp extern const u32 gBattleAnimBgImage_Swamp[]; -extern const u32 gBattleAnimBGPalette_Swamp[]; +extern const u16 gBattleAnimBGPalette_Swamp[]; extern const u32 gBattleAnimBgTilemap_Swamp[]; // Pokédex Area Screen @@ -3236,9 +3236,9 @@ extern const u16 gTradeCursor_Pal[]; // Party menu extern const u32 gPartyMenuPokeball_Gfx[]; extern const u32 gPartyMenuPokeballSmall_Gfx[]; -extern const u32 gStatusPal_Icons[]; -extern const u32 gPartyMenuPokeball_Pal[]; -extern const u32 gStatusPal_Icons[]; +extern const u16 gStatusPal_Icons[]; +extern const u16 gPartyMenuPokeball_Pal[]; +extern const u16 gStatusPal_Icons[]; // Roulette extern const u32 gRouletteMenu_Gfx[]; @@ -3254,7 +3254,7 @@ extern const u32 gContestResults_Gfx[]; extern const u32 gContestResults_WinnerBanner_Tilemap[]; extern const u32 gContestResults_Interface_Tilemap[]; extern const u32 gContestResults_Bg_Tilemap[]; -extern const u32 gContestResults_Pal[]; +extern const u16 gContestResults_Pal[]; extern const u16 gContestResultsTitle_Link_Tilemap[]; extern const u16 gContestResultsTitle_Normal_Tilemap[]; extern const u16 gContestResultsTitle_Super_Tilemap[]; @@ -3390,7 +3390,7 @@ extern const u16 gMonMarkingsMenu_Pal[]; extern const u32 gBattleIcons_Gfx1[]; extern const u32 gBattleIcons_Gfx2[]; -extern const u32 gBattleIcons_Pal1[]; -extern const u32 gBattleIcons_Pal2[]; +extern const u16 gBattleIcons_Pal1[]; +extern const u16 gBattleIcons_Pal2[]; #endif //GUARD_GRAPHICS_H diff --git a/include/item.h b/include/item.h index 3c6962efe1..519c3842c0 100644 --- a/include/item.h +++ b/include/item.h @@ -26,7 +26,7 @@ struct Item u8 battleUsage; u8 flingPower; const u32 *iconPic; - const u32 *iconPalette; + const u16 *iconPalette; }; struct BagPocket diff --git a/include/item_icon.h b/include/item_icon.h index e64c2ad34a..64753c32e2 100644 --- a/include/item_icon.h +++ b/include/item_icon.h @@ -12,6 +12,6 @@ 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 *GetItemIconPic(u16 itemId); -const void *GetItemIconPalette(u16 itemId); +const u16 *GetItemIconPalette(u16 itemId); #endif //GUARD_ITEM_ICON_H diff --git a/include/item_menu_icons.h b/include/item_menu_icons.h index c0eb67a6aa..f9ee725850 100644 --- a/include/item_menu_icons.h +++ b/include/item_menu_icons.h @@ -3,9 +3,9 @@ extern const struct CompressedSpriteSheet gBagMaleSpriteSheet; extern const struct CompressedSpriteSheet gBagFemaleSpriteSheet; -extern const struct CompressedSpritePalette gBagPaletteTable; +extern const struct SpritePalette gBagPaletteTable; extern const struct CompressedSpriteSheet gBerryCheckCircleSpriteSheet; -extern const struct CompressedSpritePalette gBerryCheckCirclePaletteTable; +extern const struct SpritePalette gBerryCheckCirclePaletteTable; void RemoveBagSprite(u8 id); void AddBagVisualSprite(u8 bagPocketId); diff --git a/include/line_break.h b/include/line_break.h index c423c9bf40..af0d27ff21 100644 --- a/include/line_break.h +++ b/include/line_break.h @@ -21,13 +21,20 @@ struct StringLine { u8 extraSpaceWidth; }; +enum ToggleScrollPrompt +{ + SHOW_SCROLL_PROMPT, + HIDE_SCROLL_PROMPT, +}; + void StripLineBreaks(u8 *src); -void BreakStringAutomatic(u8 *src, u32 maxWidth, u32 screenLines, u8 fontId); -void BreakSubStringAutomatic(u8 *src, u32 maxWidth, u32 screenLines, u8 fontId); +u32 CountLineBreaks(u8 *src); +void BreakStringAutomatic(u8 *src, u32 maxWidth, u32 screenLines, u8 fontId, enum ToggleScrollPrompt toggleScrollPrompt); +void BreakSubStringAutomatic(u8 *src, u32 maxWidth, u32 screenLines, u8 fontId, enum ToggleScrollPrompt toggleScrollPrompt); bool32 IsWordSplittingChar(const u8 *src, u32 index); u32 GetStringBadness(struct StringLine *stringLines, u32 numLines, u32 maxWidth); -void BuildNewString(struct StringLine *stringLines, u32 numLines, u32 maxLines, u8 *str); +void BuildNewString(struct StringLine *stringLines, u32 numLines, u32 maxLines, u8 *str, enum ToggleScrollPrompt toggleScrollPrompt); bool32 StringHasManualBreaks(u8 *src); #endif // GUARD_LINE_BREAK_H diff --git a/include/move.h b/include/move.h index 743889850e..16ede9d809 100644 --- a/include/move.h +++ b/include/move.h @@ -2,6 +2,7 @@ #define GUARD_MOVES_H #include "contest_effect.h" +#include "constants/battle.h" #include "constants/battle_move_effects.h" #include "constants/moves.h" @@ -38,6 +39,30 @@ struct AdditionalEffect u8 chance; // 0% = effect certain, primary effect }; +enum ProtectType +{ + PROTECT_TYPE_NONE, + PROTECT_TYPE_SIDE, + PROTECT_TYPE_SINGLE, +}; + +enum ProtectMethod +{ + PROTECT_NONE, + PROTECT_NORMAL, + PROTECT_SPIKY_SHIELD, + PROTECT_KINGS_SHIELD, + PROTECT_BANEFUL_BUNKER, + PROTECT_BURNING_BULWARK, + PROTECT_OBSTRUCT, + PROTECT_SILK_TRAP, + PROTECT_MAX_GUARD, + PROTECT_WIDE_GUARD, + PROTECT_QUICK_GUARD, + PROTECT_CRAFTY_SHIELD, + PROTECT_MAT_BLOCK, +}; + struct MoveInfo { const u8 *name; @@ -56,7 +81,6 @@ struct MoveInfo } zMove; // end of word s32 priority:4; - u32 recoil:7; u32 strikeCount:4; // Max 15 hits. Defaults to 1 if not set. May apply its effect on each hit. u32 criticalHitStage:2; bool32 alwaysCriticalHit:1; @@ -74,7 +98,6 @@ struct MoveInfo bool32 ballisticMove:1; bool32 powderMove:1; bool32 danceMove:1; - // end of word bool32 windMove:1; bool32 slicingMove:1; bool32 healingMove:1; @@ -82,6 +105,7 @@ struct MoveInfo bool32 ignoresTargetAbility:1; bool32 ignoresTargetDefenseEvasionStages:1; bool32 damagesUnderground:1; + // end of word bool32 damagesUnderwater:1; bool32 damagesAirborne:1; bool32 damagesAirborneDoubleDamage:1; @@ -90,6 +114,9 @@ struct MoveInfo bool32 ignoresSubstitute:1; bool32 forcePressure:1; bool32 cantUseTwice:1; + bool32 alwaysHitsInRain:1; + bool32 accuracy50InSun:1; + bool32 alwaysHitsInHailSnow:1; // Ban flags bool32 gravityBanned:1; bool32 mirrorMoveBanned:1; @@ -106,7 +133,7 @@ struct MoveInfo bool32 sketchBanned:1; //Other bool32 validApprenticeMove:1; - u32 padding:3; + u32 padding:7; // end of word union { @@ -114,16 +141,15 @@ struct MoveInfo u16 stringId; u16 status; } twoTurnAttack; - struct { - u16 side; - u16 property; // can be used to remove the hardcoded values - } protect; + u32 protectMethod; u32 status; - u16 moveProperty; - u16 holdEffect; - u16 type; - u16 fixedDamage; - u16 absorbPercentage; + u32 moveProperty; + u32 holdEffect; + u32 type; + u32 fixedDamage; + u32 absorbPercentage; + u32 recoilPercentage; + u32 nonVolatileStatus; } argument; // primary/secondary effects @@ -154,7 +180,7 @@ static inline const u8 *GetMoveName(u32 moveId) return gMovesInfo[SanitizeMoveId(moveId)].name; } -static inline u32 GetMoveEffect(u32 moveId) +static inline enum BattleMoveEffects GetMoveEffect(u32 moveId) { return gMovesInfo[SanitizeMoveId(moveId)].effect; } @@ -212,11 +238,6 @@ static inline s32 GetMovePriority(u32 moveId) return gMovesInfo[SanitizeMoveId(moveId)].priority; } -static inline u32 GetMoveRecoil(u32 moveId) -{ - return gMovesInfo[SanitizeMoveId(moveId)].recoil; -} - static inline u32 GetMoveStrikeCount(u32 moveId) { return gMovesInfo[SanitizeMoveId(moveId)].strikeCount; @@ -372,6 +393,21 @@ static inline bool32 MoveCantBeUsedTwice(u32 moveId) return gMovesInfo[SanitizeMoveId(moveId)].cantUseTwice; } +static inline bool32 MoveAlwaysHitsInRain(u32 moveId) +{ + return gMovesInfo[SanitizeMoveId(moveId)].alwaysHitsInRain; +} + +static inline bool32 MoveHas50AccuracyInSun(u32 moveId) +{ + return gMovesInfo[SanitizeMoveId(moveId)].accuracy50InSun; +} + +static inline bool32 MoveAlwaysHitsInHailSnow(u32 moveId) +{ + return gMovesInfo[SanitizeMoveId(moveId)].alwaysHitsInHailSnow; +} + static inline bool32 IsMoveGravityBanned(u32 moveId) { return gMovesInfo[SanitizeMoveId(moveId)].gravityBanned; @@ -457,9 +493,9 @@ static inline u32 GetMoveTwoTurnAttackWeather(u32 moveId) return gMovesInfo[SanitizeMoveId(moveId)].argument.twoTurnAttack.status; } -static inline u32 GetMoveProtectSide(u32 moveId) +static inline u32 GetMoveProtectMethod(u32 moveId) { - return gMovesInfo[SanitizeMoveId(moveId)].argument.protect.side; + return gMovesInfo[SanitizeMoveId(moveId)].argument.protectMethod; } static inline u32 GetMoveEffectArg_Status(u32 moveId) @@ -495,6 +531,25 @@ static inline u32 GetMoveAbsorbPercentage(u32 moveId) return gMovesInfo[moveId].argument.absorbPercentage; } +static inline u32 GetMoveRecoil(u32 moveId) +{ + return gMovesInfo[SanitizeMoveId(moveId)].argument.recoilPercentage; +} + +static inline u32 GetMoveNonVolatileStatus(u32 move) +{ + move = SanitizeMoveId(move); + switch(GetMoveEffect(move)) + { + case EFFECT_NON_VOLATILE_STATUS: + case EFFECT_YAWN: + case EFFECT_DARK_VOID: + return gMovesInfo[move].argument.nonVolatileStatus; + default: + return MOVE_EFFECT_NONE; + } +} + static inline const struct AdditionalEffect *GetMoveAdditionalEffectById(u32 moveId, u32 effect) { return &gMovesInfo[SanitizeMoveId(moveId)].additionalEffects[effect]; diff --git a/include/overworld.h b/include/overworld.h index 6a712ec7e8..09992cf482 100644 --- a/include/overworld.h +++ b/include/overworld.h @@ -26,6 +26,11 @@ #define SKIP_OBJECT_EVENT_LOAD 1 +// trigger a time-of-day blend once +#define HOURS_BLEND_ONCE 25 +// don't update gTimeBlend +#define HOURS_FREEZE_BLEND 26 + struct InitialPlayerAvatarState { u8 transitionFlags; @@ -40,6 +45,7 @@ struct LinkPlayerObjectEvent u8 movementMode; }; +// Exported RAM declarations extern struct WarpData gLastUsedWarp; extern struct LinkPlayerObjectEvent gLinkPlayerObjectEvents[4]; @@ -53,6 +59,10 @@ extern u8 gLocalLinkPlayerId; extern u8 gFieldLinkPlayerCount; extern bool8 gExitStairsMovementDisabled; extern bool8 gSkipShowMonAnim; +extern u8 gTimeOfDay; +extern s16 gTimeUpdateCounter; + +extern struct TimeBlendSettings gTimeBlend; extern const struct UCoords32 gDirectionToVectors[]; @@ -130,6 +140,11 @@ void CleanupOverworldWindowsAndTilemaps(void); bool32 IsOverworldLinkActive(void); void CB1_Overworld(void); void CB2_OverworldBasic(void); +void UpdateTimeOfDay(void); +bool32 MapHasNaturalLight(u8 mapType); +bool32 CurrentMapHasShadows(void); +void UpdateAltBgPalettes(u16 palettes); +void UpdatePalettesWithTime(u32); void CB2_Overworld(void); void SetMainCallback1(void (*cb)(void)); void SetUnusedCallback(void *func); @@ -156,6 +171,7 @@ bool32 Overworld_RecvKeysFromLinkIsRunning(void); bool32 Overworld_SendKeysToLinkIsRunning(void); bool32 IsSendingKeysOverCable(void); void ClearLinkPlayerObjectEvents(void); +bool16 SetTimeOfDay(u16 hours); // Item Description Headers enum ItemObtainFlags diff --git a/include/palette.h b/include/palette.h index 13c06b0078..d58bfeb60c 100644 --- a/include/palette.h +++ b/include/palette.h @@ -1,10 +1,10 @@ #ifndef GUARD_PALETTE_H #define GUARD_PALETTE_H -#define gPaletteFade_selectedPalettes (gPaletteFade.multipurpose1) // normal and fast fade -#define gPaletteFade_blendCnt (gPaletteFade.multipurpose1) // hardware fade -#define gPaletteFade_delay (gPaletteFade.multipurpose2) // normal and hardware fade -#define gPaletteFade_submode (gPaletteFade.multipurpose2) // fast fade +#define gPaletteFadeSelectedPalettes (gPaletteFade.multipurpose1) // normal and fast fade +#define gPaletteFadeBlendCnt (gPaletteFade.multipurpose1) // hardware fade +#define gPaletteFadeDelay (gPaletteFade.multipurpose2) // normal and hardware fade +#define gPaletteFadeSubmode (gPaletteFade.multipurpose2) // fast fade #define PLTT_BUFFER_SIZE (PLTT_SIZE / sizeof(u16)) @@ -14,6 +14,8 @@ #define PALETTE_FADE_STATUS_LOADING 0xFF #define PALETTES_BG 0x0000FFFF +// like PALETTES_BG but excludes UI pals [13, 15] +#define PALETTES_MAP 0x00001FFF #define PALETTES_OBJECTS 0xFFFF0000 #define PALETTES_ALL (PALETTES_BG | PALETTES_OBJECTS) @@ -24,6 +26,10 @@ #define OBJ_PLTT_ID(n) (OBJ_PLTT_OFFSET + PLTT_ID(n)) #define OBJ_PLTT_ID2(n) (PLTT_ID((n) + 16)) +// Used to determine whether a sprite palette tag should be excluded from time (and weather) blending +#define BLEND_IMMUNE_FLAG (1 << 15) +#define IS_BLEND_IMMUNE_TAG(tag) ((tag) & BLEND_IMMUNE_FLAG) + enum { FAST_FADE_IN_FROM_WHITE, @@ -32,38 +38,63 @@ enum FAST_FADE_OUT_TO_BLACK, }; +struct BlendSettings +{ + u32 blendColor:24; + u32 isTint:1; + u32 coeff:5; + u32 unused:2; +}; + +struct TimeBlendSettings +{ + struct BlendSettings startBlend; + struct BlendSettings endBlend; + u16 weight; + u16 altWeight; +}; + struct PaletteFadeControl { - u32 multipurpose1; - u8 delayCounter:6; - u16 y:5; // blend coefficient - u16 targetY:5; // target blend coefficient - u16 blendColor:15; - bool16 active:1; - u16 multipurpose2:6; - bool16 yDec:1; // whether blend coefficient is decreasing - bool16 bufferTransferDisabled:1; - u16 mode:2; - bool16 shouldResetBlendRegisters:1; - bool16 hardwareFadeFinishing:1; - u16 softwareFadeFinishingCounter:5; - bool16 softwareFadeFinishing:1; - bool16 objPaletteToggle:1; - u8 deltaY:4; // rate of change of blend coefficient + u32 multipurpose1; // This field needs to exist or errors will occur + // These three are only used for TOD blending + struct BlendSettings *bld0; + struct BlendSettings *bld1; + u32 weight:9; // [0, 256], so must be 9 bits + u32 delayCounter:6; + u32 y:5; // blend coefficient + u32 targetY:5; // target blend coefficient + u32 multipurpose2:6; + bool32 active:1; + u32 blendColor:15; + // end of word + bool32 yDec:1; // whether blend coefficient is decreasing + bool32 bufferTransferDisabled:1; + u32 mode:2; + bool32 shouldResetBlendRegisters:1; + bool32 hardwareFadeFinishing:1; + u32 softwareFadeFinishingCounter:5; + bool32 softwareFadeFinishing:1; + bool32 objPaletteToggle:1; + u32 deltaY:4; // rate of change of blend coefficient + u32 padding:15; }; +extern const struct BlendSettings gTimeOfDayBlend[]; + extern struct PaletteFadeControl gPaletteFade; extern u32 gPlttBufferTransferPending; extern u16 ALIGNED(4) gPlttBufferUnfaded[PLTT_BUFFER_SIZE]; extern u16 ALIGNED(4) gPlttBufferFaded[PLTT_BUFFER_SIZE]; -void LoadCompressedPalette(const u32 *src, u32 offset, u32 size); void LoadPalette(const void *src, u32 offset, u32 size); +void LoadPaletteFast(const void *src, u32 offset, u32 size); void FillPalette(u32 value, u32 offset, u32 size); void TransferPlttBuffer(void); u32 UpdatePaletteFade(void); void ResetPaletteFade(void); bool32 BeginNormalPaletteFade(u32 selectedPalettes, s8 delay, u8 startY, u8 targetY, u32 blendColor); +bool32 BeginTimeOfDayPaletteFade(u32 selectedPalettes, s8 delay, u8 startY, u8 targetY, struct BlendSettings *bld0, struct BlendSettings *bld1, u32 weight, u32 color); void ResetPaletteFadeControl(void); void InvertPlttBuffer(u32 selectedPalettes); void TintPlttBuffer(u32 selectedPalettes, s8 r, s8 g, s8 b); @@ -71,8 +102,13 @@ void UnfadePlttBuffer(u32 selectedPalettes); void BeginFastPaletteFade(u32 submode); void BeginHardwarePaletteFade(u32 blendCnt, u32 delay, u32 y, u32 targetY, u32 shouldResetBlendRegisters); void BlendPalettes(u32 selectedPalettes, u8 coeff, u32 color); +void BlendPalettesFine(u32 palettes, u16 *src, u16 *dst, u32 coeff, u32 color); void BlendPalettesUnfaded(u32 selectedPalettes, u8 coeff, u32 color); void BlendPalettesGradually(u32 selectedPalettes, s8 delay, u8 coeff, u8 coeffTarget, u16 color, u8 priority, u8 id); +void TimeBlendPalette(u16 palOffset, u32 coeff, u32 blendColor); +void TintPalette_RGB_Copy(u16 palOffset, u32 blendColor); +void TimeMixPalettes(u32 palettes, u16 *src, u16 *dst, struct BlendSettings *blend0, struct BlendSettings *blend1, u16 weight0); +void AvgPaletteWeighted(u16 *src0, u16 *src1, u16 *dst, u16 weight0); void TintPalette_GrayScale(u16 *palette, u32 count); void TintPalette_GrayScale2(u16 *palette, u32 count); void TintPalette_SepiaTone(u16 *palette, u32 count); @@ -80,12 +116,12 @@ void TintPalette_CustomTone(u16 *palette, u32 count, u16 rTone, u16 gTone, u16 b static inline void SetBackdropFromColor(u32 color) { - FillPalette(color, 0, PLTT_SIZEOF(1)); + FillPalette(color, 0, PLTT_SIZEOF(1)); } static inline void SetBackdropFromPalette(const u16 *palette) { - LoadPalette(palette, 0, PLTT_SIZEOF(1)); + LoadPalette(palette, 0, PLTT_SIZEOF(1)); } #endif // GUARD_PALETTE_H diff --git a/include/pokeball.h b/include/pokeball.h index d327df5d99..530e168f93 100644 --- a/include/pokeball.h +++ b/include/pokeball.h @@ -43,7 +43,7 @@ enum { }; extern const struct CompressedSpriteSheet gBallSpriteSheets[]; -extern const struct CompressedSpritePalette gBallSpritePalettes[]; +extern const struct SpritePalette gBallSpritePalettes[]; extern const struct SpriteTemplate gBallSpriteTemplates[]; #define POKEBALL_PLAYER_SENDOUT 0xFF diff --git a/include/pokeblock.h b/include/pokeblock.h index 24e6ea8569..d4fa6110e0 100644 --- a/include/pokeblock.h +++ b/include/pokeblock.h @@ -54,7 +54,7 @@ void PreparePokeblockFeedScene(void); extern const s8 gPokeblockFlavorCompatibilityTable[NUM_NATURES * FLAVOR_COUNT]; extern const u8 *const gPokeblockNames[]; extern const struct CompressedSpriteSheet gPokeblockCase_SpriteSheet; -extern const struct CompressedSpritePalette gPokeblockCase_SpritePal; +extern const struct SpritePalette gPokeblockCase_SpritePal; void OpenPokeblockCase(u8 caseId, void (*callback)(void)); void OpenPokeblockCaseInBattle(void); diff --git a/include/pokedex_area_screen.h b/include/pokedex_area_screen.h index 1aa42b3a26..ba577d1230 100755 --- a/include/pokedex_area_screen.h +++ b/include/pokedex_area_screen.h @@ -1,6 +1,17 @@ #ifndef GUARD_POKEDEX_AREA_SCREEN_H #define GUARD_POKEDEX_AREA_SCREEN_H +#include "rtc.h" + +extern u8 gAreaTimeOfDay; + +enum PokedexAreaScreenState +{ + DEX_SHOW_AREA_SCREEN, + DEX_UPDATE_AREA_SCREEN +}; + +void DisplayPokedexAreaScreen(u16 species, u8 *screenSwitchState, enum TimeOfDay timeOfDay, enum PokedexAreaScreenState areaState); void ShowPokedexAreaScreen(u16 species, u8 *screenSwitchState); #endif // GUARD_POKEDEX_AREA_SCREEN_H diff --git a/include/pokemon.h b/include/pokemon.h index 13d871b4b3..edc37a1a0b 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -2,6 +2,7 @@ #define GUARD_POKEMON_H #include "sprite.h" +#include "constants/form_change_types.h" #include "constants/items.h" #include "constants/regions.h" #include "constants/region_map_sections.h" @@ -344,11 +345,20 @@ struct BattlePokemon /*0x5A*/ bool8 isShiny; }; +struct EvolutionParam +{ + u16 condition; + u16 arg1; + u16 arg2; + u16 arg3; +}; + struct Evolution { u16 method; u16 param; u16 targetSpecies; + const struct EvolutionParam *params; }; struct SpeciesInfo /*0xC4*/ @@ -401,14 +411,14 @@ struct SpeciesInfo /*0xC4*/ const union AnimCmd *const *frontAnimFrames; const u32 *frontPic; const u32 *backPic; - const u32 *palette; - const u32 *shinyPalette; + const u16 *palette; + const u16 *shinyPalette; const u8 *iconSprite; #if P_GENDER_DIFFERENCES const u32 *frontPicFemale; const u32 *backPicFemale; - const u32 *paletteFemale; - const u32 *shinyPaletteFemale; + const u16 *paletteFemale; + const u16 *shinyPaletteFemale; const u8 *iconSpriteFemale; #endif //P_GENDER_DIFFERENCES #if P_FOOTPRINTS @@ -429,7 +439,7 @@ struct SpeciesInfo /*0xC4*/ #else u8 paddingF:3; #endif //P_GENDER_DIFFERENCES - u8 padding3:2; + u8 pokemonJumpType:2; // According to the clerk, the Pokémon allowed in Pokémon Jump are all <= 28 inches/71 cm, and do not only swim, burrow, or fly. u8 enemyMonElevation; // This determines how much higher above the usual position the enemy Pokémon is during battle. Species that float or fly have nonzero values. // Flags u32 isLegendary:1; @@ -609,9 +619,12 @@ extern u8 gEnemyPartyCount; extern struct Pokemon gEnemyParty[PARTY_SIZE]; extern struct SpriteTemplate gMultiuseSpriteTemplate; extern u16 gFollowerSteps; +extern bool32 consumeItem; +extern u32 removeBagItem; +extern u32 removeBagItemCount; -extern const u8 gFacilityClassToPicIndex[]; -extern const u8 gFacilityClassToTrainerClass[]; +extern const u16 gFacilityClassToPicIndex[]; +extern const u16 gFacilityClassToTrainerClass[]; extern const struct SpeciesInfo gSpeciesInfo[]; extern const u32 gExperienceTables[][MAX_LEVEL + 1]; extern const u8 gPPUpGetMask[]; @@ -623,6 +636,9 @@ extern const struct SpriteTemplate gBattlerSpriteTemplates[]; extern const u32 sExpCandyExperienceTable[]; extern const struct Ability gAbilitiesInfo[]; extern const struct NatureInfo gNaturesInfo[]; +#if P_TUTOR_MOVES_ARRAY +extern const u16 gTutorMoves[]; +#endif // P_TUTOR_MOVES_ARRAY void ZeroBoxMonData(struct BoxPokemon *boxMon); void ZeroMonData(struct Pokemon *mon); @@ -656,6 +672,7 @@ 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); +u16 MonTryLearningNewMoveAtLevel(struct Pokemon *mon, bool32 firstMove, u32 level); u16 MonTryLearningNewMove(struct Pokemon *mon, bool8 firstMove); void DeleteFirstMoveAndGiveMoveToMon(struct Pokemon *mon, u16 move); void DeleteFirstMoveAndGiveMoveToBoxMon(struct BoxPokemon *boxMon, u16 move); @@ -723,7 +740,8 @@ u8 *UseStatIncreaseItem(u16 itemId); u8 GetNature(struct Pokemon *mon); u8 GetNatureFromPersonality(u32 personality); u32 GetGMaxTargetSpecies(u32 species); -u16 GetEvolutionTargetSpecies(struct Pokemon *mon, enum EvolutionMode mode, u16 evolutionItem, struct Pokemon *tradePartner); +bool32 DoesMonMeetAdditionalConditions(struct Pokemon *mon, const struct EvolutionParam *params, struct Pokemon *tradePartner, u32 partyId, bool32 *canStopEvo, enum EvoState evoState); +u32 GetEvolutionTargetSpecies(struct Pokemon *mon, enum EvolutionMode mode, u16 evolutionItem, struct Pokemon *tradePartner, bool32 *canStopEvo, enum EvoState evoState); bool8 IsMonPastEvolutionLevel(struct Pokemon *mon); u16 NationalPokedexNumToSpecies(u16 nationalNum); u16 NationalToHoennOrder(u16 nationalNum); @@ -756,9 +774,9 @@ u16 GetBattleBGM(void); void PlayBattleBGM(void); 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); +const u16 *GetMonFrontSpritePal(struct Pokemon *mon); +const u16 *GetMonSpritePalFromSpeciesAndPersonality(u16 species, bool32 isShiny, u32 personality); +const u16 *GetMonSpritePalFromSpecies(u16 species, bool32 isShiny, bool32 isFemale); bool8 IsMoveHM(u16 move); bool8 IsMonSpriteNotFlipped(u16 species); s8 GetMonFlavorRelation(struct Pokemon *mon, u8 flavor); @@ -786,14 +804,15 @@ void DestroyMonSpritesGfxManager(u8 managerId); u8 *MonSpritesGfxManager_GetSpritePtr(u8 managerId, u8 spriteNum); u16 GetFormSpeciesId(u16 speciesId, u8 formId); u8 GetFormIdFromFormSpeciesId(u16 formSpeciesId); -u32 GetFormChangeTargetSpecies(struct Pokemon *mon, u16 method, u32 arg); -u32 GetFormChangeTargetSpeciesBoxMon(struct BoxPokemon *boxMon, u16 method, u32 arg); -bool32 DoesSpeciesHaveFormChangeMethod(u16 species, u16 method); +u32 GetFormChangeTargetSpecies(struct Pokemon *mon, enum FormChanges method, u32 arg); +u32 GetFormChangeTargetSpeciesBoxMon(struct BoxPokemon *boxMon, enum FormChanges method, u32 arg); +bool32 DoesSpeciesHaveFormChangeMethod(u16 species, enum FormChanges method); u16 MonTryLearningNewMoveEvolution(struct Pokemon *mon, bool8 firstMove); void RemoveIVIndexFromList(u8 *ivs, u8 selectedIv); +void TrySpecialOverworldEvo(void); bool32 SpeciesHasGenderDifferences(u16 species); -bool32 TryFormChange(u32 monId, u32 side, u16 method); -void TryToSetBattleFormChangeMoves(struct Pokemon *mon, u16 method); +bool32 TryFormChange(u32 monId, u32 side, enum FormChanges method); +void TryToSetBattleFormChangeMoves(struct Pokemon *mon, enum FormChanges method); u32 GetMonFriendshipScore(struct Pokemon *pokemon); u32 GetMonAffectionHearts(struct Pokemon *pokemon); void UpdateMonPersonality(struct BoxPokemon *boxMon, u32 personality); diff --git a/include/random.h b/include/random.h index 34b03db450..b9a0ab4311 100644 --- a/include/random.h +++ b/include/random.h @@ -190,10 +190,14 @@ enum RandomTag RNG_AI_SWITCH_TRAPPER, RNG_AI_SWITCH_FREE_TURN, RNG_AI_SWITCH_ALL_MOVES_BAD, + RNG_AI_SWITCH_ALL_SCORES_BAD, + RNG_AI_PP_STALL_DISREGARD_MOVE, RNG_SHELL_SIDE_ARM, RNG_RANDOM_TARGET, RNG_AI_PREDICT_ABILITY, RNG_AI_PREDICT_SWITCH, + RNG_AI_PREDICT_MOVE, + RNG_AI_STATUS_FOCUS_PUNCH, RNG_HEALER, RNG_DEXNAV_ENCOUNTER_LEVEL, }; diff --git a/include/recorded_battle.h b/include/recorded_battle.h index 88a0ee439b..faf966109f 100644 --- a/include/recorded_battle.h +++ b/include/recorded_battle.h @@ -27,7 +27,7 @@ struct RecordedBattleSave u8 frontierBrainSymbol; u8 battleScene:1; u8 textSpeed:3; - u32 AI_scripts; + u64 AI_scripts; u8 recordMixFriendName[PLAYER_NAME_LENGTH + 1]; u8 recordMixFriendClass; u8 apprenticeId; @@ -81,7 +81,7 @@ u8 GetBattleSceneInRecordedBattle(void); u8 GetTextSpeedInRecordedBattle(void); void RecordedBattle_CopyBattlerMoves(u32 battler); void RecordedBattle_CheckMovesetChanges(u8 mode); -u32 GetAiScriptsInRecordedBattle(void); +u64 GetAiScriptsInRecordedBattle(void); void RecordedBattle_SetPlaybackFinished(void); bool8 RecordedBattle_CanStopPlayback(void); void GetRecordedBattleRecordMixFriendName(u8 *dst); diff --git a/include/rtc.h b/include/rtc.h index bf8ff9aa93..8ee3071615 100644 --- a/include/rtc.h +++ b/include/rtc.h @@ -1,94 +1,13 @@ #ifndef GUARD_RTC_UTIL_H #define GUARD_RTC_UTIL_H +#include "global.h" #include "siirtc.h" - -#define RTC_INIT_ERROR 0x0001 -#define RTC_INIT_WARNING 0x0002 - -#define RTC_ERR_12HOUR_CLOCK 0x0010 -#define RTC_ERR_POWER_FAILURE 0x0020 -#define RTC_ERR_INVALID_YEAR 0x0040 -#define RTC_ERR_INVALID_MONTH 0x0080 -#define RTC_ERR_INVALID_DAY 0x0100 -#define RTC_ERR_INVALID_HOUR 0x0200 -#define RTC_ERR_INVALID_MINUTE 0x0400 -#define RTC_ERR_INVALID_SECOND 0x0800 - -#define RTC_ERR_FLAG_MASK 0x0FF0 - -//Morning and evening don't exist in Gen 3 -#if OW_TIMES_OF_DAY == GEN_3 - #define MORNING_HOUR_BEGIN 0 - #define MORNING_HOUR_END 0 - - #define DAY_HOUR_BEGIN 12 - #define DAY_HOUR_END HOURS_PER_DAY - - #define EVENING_HOUR_BEGIN 0 - #define EVENING_HOUR_END 0 - - #define NIGHT_HOUR_BEGIN 0 - #define NIGHT_HOUR_END 12 -//Evening doesn't exist in Gen 4 -#elif OW_TIMES_OF_DAY == GEN_4 - #define MORNING_HOUR_BEGIN 4 - #define MORNING_HOUR_END 10 - - #define DAY_HOUR_BEGIN 10 - #define DAY_HOUR_END 20 - - #define EVENING_HOUR_BEGIN 0 - #define EVENING_HOUR_END 0 - - #define NIGHT_HOUR_BEGIN 20 - #define NIGHT_HOUR_END 4 -//Gen 5 currently not included as the seasons change the times of day -#elif OW_TIMES_OF_DAY <= GEN_6 - #define MORNING_HOUR_BEGIN 4 - #define MORNING_HOUR_END 11 - - #define DAY_HOUR_BEGIN 11 - #define DAY_HOUR_END 18 - - #define EVENING_HOUR_BEGIN 18 - #define EVENING_HOUR_END 21 - - #define NIGHT_HOUR_BEGIN 21 - #define NIGHT_HOUR_END 4 -//These are the Sun/Ultra Sun times -#elif OW_TIMES_OF_DAY == GEN_7 - #define MORNING_HOUR_BEGIN 6 - #define MORNING_HOUR_END 10 - - #define DAY_HOUR_BEGIN 10 - #define DAY_HOUR_END 17 - - #define EVENING_HOUR_BEGIN 17 - #define EVENING_HOUR_END 18 - - #define NIGHT_HOUR_BEGIN 18 - #define NIGHT_HOUR_END 6 -#elif OW_TIMES_OF_DAY >= GEN_8 - #define MORNING_HOUR_BEGIN 6 - #define MORNING_HOUR_END 10 - - #define DAY_HOUR_BEGIN 10 - #define DAY_HOUR_END 19 - - #define EVENING_HOUR_BEGIN 19 - #define EVENING_HOUR_END 20 - - #define NIGHT_HOUR_BEGIN 20 - #define NIGHT_HOUR_END 6 -#endif - -#define TIME_MORNING 0 -#define TIME_DAY 1 -#define TIME_EVENING 2 -#define TIME_NIGHT 3 +#include "config/overworld.h" +#include "constants/rtc.h" extern struct Time gLocalTime; +extern const s32 sNumDaysInMonths[MONTH_COUNT]; void RtcDisableInterrupts(void); void RtcRestoreInterrupts(void); @@ -112,12 +31,19 @@ void FormatHexDate(u8 *dest, s32 year, s32 month, s32 day); void RtcCalcTimeDifference(struct SiiRtcInfo *rtc, struct Time *result, struct Time *t); void RtcCalcLocalTime(void); bool8 IsBetweenHours(s32 hours, s32 begin, s32 end); -u8 GetTimeOfDay(void); +enum TimeOfDay GetTimeOfDay(void); +enum TimeOfDay GetTimeOfDayForDex(void); void RtcInitLocalTimeOffset(s32 hour, s32 minute); void RtcCalcLocalTimeOffset(s32 days, s32 hours, s32 minutes, s32 seconds); void CalcTimeDifference(struct Time *result, struct Time *t1, struct Time *t2); u32 RtcGetMinuteCount(void); u32 RtcGetLocalDayCount(void); void FormatDecimalTimeWithoutSeconds(u8 *dest, s8 hour, s8 minute, bool32 is24Hour); +u16 GetFullYear(void); +enum Month GetMonth(void); +u8 GetDay(void); +enum Weekday GetDayOfWeek(void); +enum TimeOfDay TryIncrementTimeOfDay(enum TimeOfDay timeOfDay); +enum TimeOfDay TryDecrementTimeOfDay(enum TimeOfDay timeOfDay); #endif // GUARD_RTC_UTIL_H diff --git a/include/siirtc.h b/include/siirtc.h index ad13fc62f3..44dabfd11d 100644 --- a/include/siirtc.h +++ b/include/siirtc.h @@ -2,33 +2,7 @@ #define GUARD_RTC_H #include "gba/gba.h" - -#define SIIRTCINFO_INTFE 0x01 // frequency interrupt enable -#define SIIRTCINFO_INTME 0x02 // per-minute interrupt enable -#define SIIRTCINFO_INTAE 0x04 // alarm interrupt enable -#define SIIRTCINFO_24HOUR 0x40 // 0: 12-hour mode, 1: 24-hour mode -#define SIIRTCINFO_POWER 0x80 // power on or power failure occurred - -#define HOURS_PER_DAY 24 -#define MINUTES_PER_HOUR 60 -#define SECONDS_PER_MINUTE 60 - -enum -{ - MONTH_JAN = 1, - MONTH_FEB, - MONTH_MAR, - MONTH_APR, - MONTH_MAY, - MONTH_JUN, - MONTH_JUL, - MONTH_AUG, - MONTH_SEP, - MONTH_OCT, - MONTH_NOV, - MONTH_DEC, - MONTH_COUNT = MONTH_DEC -}; +#include "constants/siirtc.h" struct SiiRtcInfo { diff --git a/include/sprite.h b/include/sprite.h index 60f76b9d88..5b5fd5e62f 100644 --- a/include/sprite.h +++ b/include/sprite.h @@ -41,12 +41,6 @@ struct SpritePalette u16 tag; }; -struct CompressedSpritePalette -{ - const u32 *data; // LZ77 compressed palette data - u16 tag; -}; - struct AnimFrameCmd { // If the sprite has an array of images, this is the array index. @@ -306,16 +300,14 @@ 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); -void LoadTilesForSpriteSheets(struct SpriteSheet *sheets); void FreeSpriteTilesByTag(u16 tag); void FreeSpriteTileRanges(void); u16 GetSpriteTileStartByTag(u16 tag); u16 GetSpriteTileTagByTileStart(u16 start); void FreeAllSpritePalettes(void); u32 LoadSpritePalette(const struct SpritePalette *palette); +u32 LoadSpritePaletteWithTag(const u16 *pal, u16 tag); +u8 LoadSpritePaletteInSlot(const struct SpritePalette *palette, u8 paletteNum); void LoadSpritePalettes(const struct SpritePalette *palettes); u32 AllocSpritePalette(u16 tag); u32 IndexOfSpritePaletteTag(u16 tag); diff --git a/include/strings.h b/include/strings.h index 588d513d4b..a9cddee25b 100644 --- a/include/strings.h +++ b/include/strings.h @@ -1573,6 +1573,9 @@ extern const u8 gText_ChoosePokemon[]; extern const u8 gText_ChoosePokemonCancel[]; extern const u8 gText_ChoosePokemonConfirm[]; extern const u8 gText_SendWhichMonToPC[]; +extern const u8 gText_MoveItemWhere[]; +extern const u8 gText_XsYAnd[]; +extern const u8 gText_XsYWereSwapped[]; extern const u8 gText_MoveToWhere[]; extern const u8 gText_TeachWhichPokemon[]; extern const u8 gText_UseOnWhichPokemon[]; @@ -2414,6 +2417,8 @@ extern const u8 gText_PM[]; // FRLG whiteout extern const u8 gText_PlayerScurriedToCenter[]; extern const u8 gText_PlayerScurriedBackHome[]; +extern const u8 gText_PlayerRegroupCenter[]; +extern const u8 gText_PlayerRegroupHome[]; extern const u8 gText_Relearn[]; // move relearner from summary screen extern const u8 gText_Rename[]; // change nickname from summary screen diff --git a/include/test/battle.h b/include/test/battle.h index b524b47a7b..16b492ccad 100644 --- a/include/test/battle.h +++ b/include/test/battle.h @@ -873,7 +873,7 @@ void OpenPokemon(u32 sourceLine, u32 side, u32 species); void ClosePokemon(u32 sourceLine); void RNGSeed_(u32 sourceLine, rng_value_t seed); -void AIFlags_(u32 sourceLine, u32 flags); +void AIFlags_(u32 sourceLine, u64 flags); void AILogScores(u32 sourceLine); void Gender_(u32 sourceLine, u32 gender); void Nature_(u32 sourceLine, u32 nature); diff --git a/include/type_icons.h b/include/type_icons.h index 1d6a312f07..c84e44f53d 100644 --- a/include/type_icons.h +++ b/include/type_icons.h @@ -1,7 +1,7 @@ #ifndef GUARD_TYPE_ICONS_H #define GUARD_TYPE_ICONS_H -void LoadTypeIcons(u32); +void LoadTypeIcons(u32 battler); #define TYPE_ICON_TAG 0x2720 #define TYPE_ICON_TAG_2 0x2721 diff --git a/include/wild_encounter.h b/include/wild_encounter.h index 92b074629e..8a0eb671f6 100644 --- a/include/wild_encounter.h +++ b/include/wild_encounter.h @@ -1,8 +1,19 @@ #ifndef GUARD_WILD_ENCOUNTER_H #define GUARD_WILD_ENCOUNTER_H +#include "rtc.h" #include "constants/wild_encounter.h" +#define HEADER_NONE 0xFFFF + +enum WildPokemonArea { + WILD_AREA_LAND, + WILD_AREA_WATER, + WILD_AREA_ROCKS, + WILD_AREA_FISHING, + WILD_AREA_HIDDEN +}; + struct WildPokemon { u8 minLevel; @@ -16,17 +27,23 @@ struct WildPokemonInfo const struct WildPokemon *wildPokemon; }; +struct WildEncounterTypes +{ + const struct WildPokemonInfo *landMonsInfo; + const struct WildPokemonInfo *waterMonsInfo; + const struct WildPokemonInfo *rockSmashMonsInfo; + const struct WildPokemonInfo *fishingMonsInfo; + const struct WildPokemonInfo *hiddenMonsInfo; +}; + struct WildPokemonHeader { u8 mapGroup; u8 mapNum; - const struct WildPokemonInfo *landMonsInfo; - const struct WildPokemonInfo *waterMonsInfo; - const struct WildPokemonInfo *rockSmashMonsInfo; - const struct WildPokemonInfo *hiddenMonsInfo; - const struct WildPokemonInfo *fishingMonsInfo; + const struct WildEncounterTypes encounterTypes[TIMES_OF_DAY_COUNT]; }; + extern const struct WildPokemonHeader gWildMonHeaders[]; extern bool8 gIsFishingEncounter; extern bool8 gIsSurfingEncounter; @@ -50,5 +67,6 @@ u8 ChooseWildMonIndex_Land(void); u8 ChooseWildMonIndex_WaterRock(void); u8 ChooseHiddenMonIndex(void); bool32 MapHasNoEncounterData(void); +enum TimeOfDay GetTimeOfDayForEncounters(u32 headerId, enum WildPokemonArea area); #endif // GUARD_WILD_ENCOUNTER_H diff --git a/include/window.h b/include/window.h index 2fd0bddb20..2dd67b123f 100644 --- a/include/window.h +++ b/include/window.h @@ -52,6 +52,7 @@ bool32 InitWindows(const struct WindowTemplate *templates); u32 AddWindow(const struct WindowTemplate *template); int AddWindowWithoutTileMap(const struct WindowTemplate *template); void RemoveWindow(u32 windowId); +void RemoveAllWindowsOnBg(u32 bgId); void FreeAllWindowBuffers(void); void CopyWindowToVram(u32 windowId, u32 mode); void CopyWindowRectToVram(u32 windowId, u32 mode, u32 x, u32 y, u32 w, u32 h); diff --git a/json_data_rules.mk b/json_data_rules.mk index 08a2d00210..d545459d43 100755 --- a/json_data_rules.mk +++ b/json_data_rules.mk @@ -1,12 +1,6 @@ # JSON files are run through jsonproc, which is a tool that converts JSON data to an output file # based on an Inja template. https://github.com/pantor/inja -AUTO_GEN_TARGETS += $(DATA_SRC_SUBDIR)/wild_encounters.h -$(DATA_SRC_SUBDIR)/wild_encounters.h: $(DATA_SRC_SUBDIR)/wild_encounters.json $(DATA_SRC_SUBDIR)/wild_encounters.json.txt - $(JSONPROC) $^ $@ - -$(C_BUILDDIR)/wild_encounter.o: c_dep += $(DATA_SRC_SUBDIR)/wild_encounters.h - AUTO_GEN_TARGETS += $(DATA_SRC_SUBDIR)/region_map/region_map_entries.h $(DATA_SRC_SUBDIR)/region_map/region_map_entries.h: $(DATA_SRC_SUBDIR)/region_map/region_map_sections.json $(DATA_SRC_SUBDIR)/region_map/region_map_sections.json.txt $(JSONPROC) $^ $@ diff --git a/migration_scripts/1.12/convert_trainer_battle_types.py b/migration_scripts/1.12/convert_trainer_battle_types.py new file mode 100644 index 0000000000..c195ddc635 --- /dev/null +++ b/migration_scripts/1.12/convert_trainer_battle_types.py @@ -0,0 +1,17 @@ +import re +import os + +def trainer_battle_types(data): + data = re.sub(re.escape("Double Battle: No"), "Battle Type: Singles", data) + data = re.sub(re.escape("Double Battle: Yes"), "Battle Type: Doubles", data) + + return data + +if not os.path.exists("Makefile"): + print("Please run this script from your root folder.") + quit() + +with open('src/data/trainers.party', 'r') as file: + data = file.read() +with open('src/data/trainers.party', 'w') as file: + file.write(trainer_battle_types(data)) diff --git a/migration_scripts/1.12/remove_palette_compression.py b/migration_scripts/1.12/remove_palette_compression.py new file mode 100644 index 0000000000..1013744f79 --- /dev/null +++ b/migration_scripts/1.12/remove_palette_compression.py @@ -0,0 +1,71 @@ +import glob +import re +import os +from pathlib import Path + +if not os.path.exists("Makefile"): + print("Please run this script from your root folder.") + quit() + +allPals = list() + +def find_pals(fileInput): + fileTest = Path(fileInput) + if not fileTest.is_file(): + return False + with open(fileInput, 'r', encoding='UTF-8') as file: + while line:=file.readline(): + if ".gbapal.lz" in line and "u32" in line: + allPals.append(line) + line, sep, tail = line.partition("=") + line, sep, tail = line.partition("[]") + head, sep, line = line.partition("u32 ") + allPals.append(line) + +def handle_file(fileInput): + fileTest = Path(fileInput) + if not fileTest.is_file(): + return False + allLines = list() + with open(fileInput, 'r', encoding='UTF-8') as file: + while line:=file.readline(): + if "struct CompressedSpritePalette" in line: + line = line.replace("struct CompressedSpritePalette", "struct SpritePalette") + elif "LoadCompressedSpritePaletteUsingHeap" in line: + line = line.replace("LoadCompressedSpritePaletteUsingHeap", "LoadSpritePalette") + elif "LoadCompressedSpritePaletteWithTag" in line: + line = line.replace("LoadCompressedSpritePaletteWithTag", "LoadSpritePaletteWithTag") + elif "LoadCompressedSpritePalette" in line: + line = line.replace("LoadCompressedSpritePalette", "LoadSpritePalette") + elif "LoadCompressedPalette" in line: + line = line.replace("LoadCompressedPalette", "LoadPalette") + elif "u32" in line: + for currPal in allPals: + if currPal in line: + line = line.replace("u32", "u16") + if "INCBIN_U32" in line: + line = line.replace("INCBIN_U32", "INCBIN_U16") + line = line.replace(".lz", "") + break + else: + pass + allLines.append(line) + + with open(fileInput, 'w', encoding='UTF-8') as file: + for line in allLines: + file.write(line) + return True + +for path in glob.glob("src/**/*.c", recursive=True): + find_pals(path) +for path in glob.glob("src/**/*.h", recursive=True): + find_pals(path) +for path in glob.glob("include/**/*.h", recursive=True): + find_pals(path) + +for path in glob.glob("src/**/*.c", recursive=True): + handle_file(path) +for path in glob.glob("src/**/*.h", recursive=True): + handle_file(path) +for path in glob.glob("include/**/*.h", recursive=True): + handle_file(path) diff --git a/migration_scripts/1.12/update_evo_methods.py b/migration_scripts/1.12/update_evo_methods.py new file mode 100644 index 0000000000..78669c0130 --- /dev/null +++ b/migration_scripts/1.12/update_evo_methods.py @@ -0,0 +1,237 @@ +import re +import os + + +METHOD = 0 +CONDTION = 1 +SPECIES = 2 + + +def convert_methods(data): + new_data = "" + pattern = r'\{([^{}]+)\}' + + # make sure we're in the right directory before anything else + if not os.path.exists("Makefile"): + print("Please run this script from the project's root folder.") + quit() + + for line in data: + if "EVO_FRIENDSHIP," in line: + match = re.search(pattern, line) + members = match.group(1).split(",") + new_data = new_data + re.sub(pattern, "{EVO_LEVEL, " + f'{members[CONDTION].strip()}, {members[SPECIES].strip()}' + ", CONDITIONS({IF_MIN_FRIENDSHIP, FRIENDSHIP_EVO_THRESHOLD})}", line) + elif "EVO_FRIENDSHIP_DAY," in line: + match = re.search(pattern, line) + members = match.group(1).split(",") + new_data = new_data + re.sub(pattern, "{EVO_LEVEL, " + f'{members[CONDTION].strip()}, {members[SPECIES].strip()}' + ", CONDITIONS({IF_MIN_FRIENDSHIP, FRIENDSHIP_EVO_THRESHOLD}, {IF_NOT_TIME, TIME_NIGHT})}", line) + elif "EVO_FRIENDSHIP_NIGHT," in line: + match = re.search(pattern, line) + members = match.group(1).split(",") + new_data = new_data + re.sub(pattern, "{EVO_LEVEL, " + f'{members[CONDTION].strip()}, {members[SPECIES].strip()}' + ", CONDITIONS({IF_MIN_FRIENDSHIP, FRIENDSHIP_EVO_THRESHOLD}, {IF_TIME, TIME_NIGHT})}", line) + elif "EVO_TRADE_ITEM," in line: + match = re.search(pattern, line) + members = match.group(1).split(",") + new_data = new_data + re.sub(pattern, "{EVO_TRADE, " + f'0, {members[SPECIES].strip()}' + ", CONDITIONS({IF_HOLD_ITEM, " + f'{members[CONDTION].strip()}' + "})}", line) + elif "EVO_LEVEL_ATK_GT_DEF," in line: + match = re.search(pattern, line) + members = match.group(1).split(",") + new_data = new_data + re.sub(pattern, "{EVO_LEVEL, " + f'{members[CONDTION].strip()}, {members[SPECIES].strip()}' + ", CONDITIONS({IF_ATK_GT_DEF})}", line) + elif "EVO_LEVEL_ATK_EQ_DEF," in line: + match = re.search(pattern, line) + members = match.group(1).split(",") + new_data = new_data + re.sub(pattern, "{EVO_LEVEL, " + f'{members[CONDTION].strip()}, {members[SPECIES].strip()}' + ", CONDITIONS({IF_ATK_EQ_DEF})}", line) + elif "EVO_LEVEL_ATK_LT_DEF," in line: + match = re.search(pattern, line) + members = match.group(1).split(",") + new_data = new_data + re.sub(pattern, "{EVO_LEVEL, " + f'{members[CONDTION].strip()}, {members[SPECIES].strip()}' + ", CONDITIONS({IF_ATK_LT_DEF})}", line) + elif "EVO_LEVEL_SILCOON," in line: + match = re.search(pattern, line) + members = match.group(1).split(",") + new_data = new_data + re.sub(pattern, "{EVO_LEVEL, " + f'{members[CONDTION].strip()}, {members[SPECIES].strip()}' + ", CONDITIONS({IF_PID_UPPER_MODULO_10_GT, 5})}", line) + elif "EVO_LEVEL_CASCOON," in line: + match = re.search(pattern, line) + members = match.group(1).split(",") + new_data = new_data + re.sub(pattern, "{EVO_LEVEL, " + f'{members[CONDTION].strip()}, {members[SPECIES].strip()}' + ", CONDITIONS({IF_PID_UPPER_MODULO_10_LT, 5})}", line) + elif "EVO_LEVEL_NINJASK," in line: + match = re.search(pattern, line) + members = match.group(1).split(",") + new_data = new_data + re.sub(pattern, "{EVO_LEVEL, " + f'{members[CONDTION].strip()}, {members[SPECIES].strip()}', line) + # elif "EVO_LEVEL_SHEDINJA," in line: + # match = re.search(pattern, line) + # members = match.group(1).split(",") + # new_data = new_data = re.sub(pattern, " ", line) + elif "EVO_BEAUTY," in line: + match = re.search(pattern, line) + members = match.group(1).split(",") + new_data = new_data + re.sub(pattern, "{EVO_LEVEL, " + f'0, {members[SPECIES].strip()}' + ", CONDITIONS({IF_MIN_BEAUTY, " + f'{members[CONDTION].strip()}' + "})}", line) + elif "EVO_LEVEL_FEMALE," in line: + match = re.search(pattern, line) + members = match.group(1).split(",") + new_data = new_data + re.sub(pattern, "{EVO_LEVEL, " + f'{members[CONDTION].strip()}, {members[SPECIES].strip()}' + ", CONDITIONS({IF_GENDER, MON_FEMALE})}", line) + elif "EVO_LEVEL_MALE," in line: + match = re.search(pattern, line) + members = match.group(1).split(",") + new_data = new_data + re.sub(pattern, "{EVO_LEVEL, " + f'{members[CONDTION].strip()}, {members[SPECIES].strip()}' + ", CONDITIONS({IF_GENDER, MON_MALE})}", line) + elif "EVO_LEVEL_NIGHT," in line: + match = re.search(pattern, line) + members = match.group(1).split(",") + new_data = new_data + re.sub(pattern, "{EVO_LEVEL, " + f'{members[CONDTION].strip()}, {members[SPECIES].strip()}' + ", CONDITIONS({IF_TIME, TIME_NIGHT})}", line) + elif "EVO_LEVEL_DAY," in line: + match = re.search(pattern, line) + members = match.group(1).split(",") + new_data = new_data + re.sub(pattern, "{EVO_LEVEL, " + f'{members[CONDTION].strip()}, {members[SPECIES].strip()}' + ", CONDITIONS({IF_NOT_TIME, TIME_NIGHT})}", line) + elif "EVO_LEVEL_DUSK," in line: + match = re.search(pattern, line) + members = match.group(1).split(",") + new_data = new_data + re.sub(pattern, "{EVO_LEVEL, " + f'{members[CONDTION].strip()}, {members[SPECIES].strip()}' + ", CONDITIONS({IF_TIME, TIME_EVENING})}", line) + elif "EVO_ITEM_HOLD_DAY," in line: + match = re.search(pattern, line) + members = match.group(1).split(",") + new_data = new_data + re.sub(pattern, "{EVO_LEVEL, " + f'0, {members[SPECIES].strip()}' + ", CONDITIONS({IF_NOT_TIME, TIME_NIGHT}, {IF_HOLD_ITEM, " + f'{members[CONDTION].strip()}' + "})}", line) + elif "EVO_ITEM_HOLD_NIGHT," in line: + match = re.search(pattern, line) + members = match.group(1).split(",") + new_data = new_data + re.sub(pattern, "{EVO_LEVEL, " + f'0, {members[SPECIES].strip()}' + ", CONDITIONS({IF_TIME, TIME_NIGHT}, {IF_HOLD_ITEM, " + f'{members[CONDTION].strip()}' + "})}", line) + elif "EVO_MOVE," in line: + match = re.search(pattern, line) + members = match.group(1).split(",") + new_data = new_data + re.sub(pattern, "{EVO_LEVEL, " + f'0, {members[SPECIES].strip()}' + ", CONDITIONS({IF_KNOWS_MOVE, " + f'{members[CONDTION].strip()}' + "})}", line) + elif "EVO_FRIENDSHIP_MOVE_TYPE," in line: + match = re.search(pattern, line) + members = match.group(1).split(",") + new_data = new_data + re.sub(pattern, "{EVO_LEVEL, " + f'0, {members[SPECIES].strip()}' + ", CONDITIONS({IF_MIN_FRIENDSHIP, FRIENDSHIP_EVO_THRESHOLD}, {IF_KNOWS_MOVE_TYPE, " + f'{members[CONDTION].strip()}' + "})}", line) + elif "EVO_MAPSEC," in line: + match = re.search(pattern, line) + members = match.group(1).split(",") + new_data = new_data + re.sub(pattern, "{EVO_LEVEL, " + f'0, {members[SPECIES].strip()}' + ", CONDITIONS({IF_IN_MAPSEC, " + f'{members[CONDTION].strip()}' + "})}", line) + elif "EVO_ITEM_MALE," in line: + match = re.search(pattern, line) + members = match.group(1).split(",") + new_data = new_data + re.sub(pattern, "{EVO_ITEM, " + f'{members[CONDTION].strip()}, {members[SPECIES].strip()}' + ", CONDITIONS({IF_GENDER, MON_MALE})}", line) + elif "EVO_ITEM_FEMALE," in line: + match = re.search(pattern, line) + members = match.group(1).split(",") + new_data = new_data + re.sub(pattern, "{EVO_ITEM, " + f'{members[CONDTION].strip()}, {members[SPECIES].strip()}' + ", CONDITIONS({IF_GENDER, MON_FEMALE})}", line) + elif "EVO_LEVEL_RAIN," in line: + match = re.search(pattern, line) + members = match.group(1).split(",") + new_data = new_data + re.sub(pattern, "{EVO_LEVEL, " + f'{members[CONDTION].strip()}, {members[SPECIES].strip()}' + ", CONDITIONS({IF_WEATHER, WEATHER_RAIN})}", line) + elif "EVO_LEVEL_FOG," in line: + match = re.search(pattern, line) + members = match.group(1).split(",") + new_data = new_data + re.sub(pattern, "{EVO_LEVEL, " + f'{members[CONDTION].strip()}, {members[SPECIES].strip()}' + ", CONDITIONS({IF_WEATHER, WEATHER_FOG})}", line) + elif "EVO_SPECIFIC_MON_IN_PARTY," in line: + match = re.search(pattern, line) + members = match.group(1).split(",") + new_data = new_data + re.sub(pattern, "{EVO_LEVEL, " + f'0, {members[SPECIES].strip()}' + ", CONDITIONS({IF_SPECIES_IN_PARTY, " + f'{members[CONDTION].strip()}' + "})}", line) + elif "EVO_LEVEL_DARK_TYPE_MON_IN_PARTY," in line: + match = re.search(pattern, line) + members = match.group(1).split(",") + new_data = new_data + re.sub(pattern, "{EVO_LEVEL, " + f'{members[CONDTION].strip()}, {members[SPECIES].strip()}' + ", CONDITIONS({IF_TYPE_IN_PARTY, TYPE_DARK})}", line) + elif "EVO_TRADE_SPECIFIC_MON," in line: + match = re.search(pattern, line) + members = match.group(1).split(",") + new_data = new_data + re.sub(pattern, "{EVO_TRADE, " + f'0, {members[SPECIES].strip()}' + ", CONDITIONS({IF_TRADE_PARTNER_SPECIES, " + f'{members[CONDTION].strip()}' + "})}", line) + elif "EVO_SPECIFIC_MAP," in line: + match = re.search(pattern, line) + members = match.group(1).split(",") + new_data = new_data + re.sub(pattern, "{EVO_LEVEL, " + f'0, {members[SPECIES].strip()}' + ", CONDITIONS({IF_IN_MAP, " + f'{members[CONDTION].strip()}' + "})}", line) + elif "EVO_LEVEL_NATURE_AMPED," in line: + match = re.search(pattern, line) + members = match.group(1).split(",") + new_data = new_data + re.sub(pattern, "{EVO_LEVEL, " + f'{members[CONDTION].strip()}, {members[SPECIES].strip()}' + ", CONDITIONS({IF_AMPED_NATURE})}", line) + elif "EVO_LEVEL_NATURE_LOW_KEY," in line: + match = re.search(pattern, line) + members = match.group(1).split(",") + new_data = new_data + re.sub(pattern, "{EVO_LEVEL, " + f'{members[CONDTION].strip()}, {members[SPECIES].strip()}' + ", CONDITIONS({IF_LOW_KEY_NATURE})}", line) + elif "EVO_CRITICAL_HITS," in line: + match = re.search(pattern, line) + members = match.group(1).split(",") + new_data = new_data + re.sub(pattern, "{EVO_BATTLE_END, " + f'0, {members[SPECIES].strip()}' + ", CONDITIONS({IF_CRITICAL_HITS_GE, " + f'{members[CONDTION].strip()}' + "})}", line) + elif "EVO_SCRIPT_TRIGGER_DMG," in line: + match = re.search(pattern, line) + members = match.group(1).split(",") + new_data = new_data + re.sub(pattern, "{EVO_SCRIPT_TRIGGER, " + f'0, {members[SPECIES].strip()}' + ", CONDITIONS({IF_CURRENT_DAMAGE_GE, " + f'{members[CONDTION].strip()}' + "})}", line) + elif "EVO_DARK_SCROLL," in line: + match = re.search(pattern, line) + members = match.group(1).split(",") + new_data = new_data + re.sub(pattern, "{EVO_SCRIPT_TRIGGER, " + f'0, {members[SPECIES].strip()}' + "}", line) + elif "EVO_WATER_SCROLL," in line: + match = re.search(pattern, line) + members = match.group(1).split(",") + new_data = new_data + re.sub(pattern, "{EVO_SCRIPT_TRIGGER, " + f'1, {members[SPECIES].strip()}' + "}", line) + elif "EVO_ITEM_NIGHT," in line: + match = re.search(pattern, line) + members = match.group(1).split(",") + new_data = new_data + re.sub(pattern, "{EVO_ITEM, " + f'{members[CONDTION].strip()}, {members[SPECIES].strip()}' + ", CONDITIONS({IF_TIME, TIME_NIGHT})}", line) + elif "EVO_ITEM_DAY," in line: + match = re.search(pattern, line) + members = match.group(1).split(",") + new_data = new_data + re.sub(pattern, "{EVO_ITEM, " + f'{members[CONDTION].strip()}, {members[SPECIES].strip()}' + ", CONDITIONS({IF_NOT_TIME, TIME_NIGHT})}", line) + elif "EVO_MOVE_TWO_SEGMENT," in line: + match = re.search(pattern, line) + members = match.group(1).split(",") + new_data = new_data + re.sub(pattern, "{EVO_LEVEL, " + f'0, {members[SPECIES].strip()}' + ", CONDITIONS({IF_KNOWS_MOVE, " + f'{members[CONDTION].strip()}' + "}, {IF_PID_MODULO_100_LT, 100})}", line) + elif "EVO_MOVE_THREE_SEGMENT," in line: + match = re.search(pattern, line) + members = match.group(1).split(",") + new_data = new_data + re.sub(pattern, "{EVO_LEVEL, " + f'0, {members[SPECIES].strip()}' + ", CONDITIONS({IF_KNOWS_MOVE, " + f'{members[CONDTION].strip()}' + "}, {IF_PID_MODULO_100_LT, 1})}", line) + elif "EVO_LEVEL_FAMILY_OF_THREE," in line: + match = re.search(pattern, line) + members = match.group(1).split(",") + new_data = new_data + re.sub(pattern, "{EVO_LEVEL, " + f'{members[CONDTION].strip()}, {members[SPECIES].strip()}' + ", CONDITIONS({IF_PID_MODULO_100_EQ, 0})}", line) + elif "EVO_LEVEL_FAMILY_OF_FOUR," in line: + match = re.search(pattern, line) + members = match.group(1).split(",") + new_data = new_data + re.sub(pattern, "{EVO_LEVEL, " + f'{members[CONDTION].strip()}, {members[SPECIES].strip()}' + ", CONDITIONS({IF_PID_MODULO_100_GT, 0})}", line) + elif "EVO_USE_MOVE_TWENTY_TIMES," in line: + match = re.search(pattern, line) + members = match.group(1).split(",") + new_data = new_data + re.sub(pattern, "{EVO_LEVEL, " + f'0, {members[SPECIES].strip()}' + ", CONDITIONS({IF_USED_MOVE_X_TIMES, " + f'{members[CONDTION].strip()}' + ", 20})}", line) + elif "EVO_RECOIL_DAMAGE_MALE," in line: + match = re.search(pattern, line) + members = match.group(1).split(",") + new_data = new_data + re.sub(pattern, "{EVO_LEVEL, " + f'0, {members[SPECIES].strip()}' + ", CONDITIONS({IF_RECOIL_DAMAGE_GE, " + f'{members[CONDTION].strip()}' + "}, {IF_GENDER, MON_MALE})}", line) + elif "EVO_RECOIL_DAMAGE_FEMALE," in line: + match = re.search(pattern, line) + members = match.group(1).split(",") + new_data = new_data + re.sub(pattern, "{EVO_LEVEL, " + f'0, {members[SPECIES].strip()}' + ", CONDITIONS({IF_RECOIL_DAMAGE_GE, " + f'{members[CONDTION].strip()}' + "}, {IF_GENDER, MON_FEMALE})}", line) + elif "EVO_ITEM_COUNT_999," in line: + match = re.search(pattern, line) + members = match.group(1).split(",") + new_data = new_data + re.sub(pattern, "{EVO_LEVEL, " + f'0, {members[SPECIES].strip()}' + ", CONDITIONS({IF_BAG_ITEM_COUNT, " + f'{members[CONDTION].strip()}' + ", 999})}", line) + elif "EVO_DEFEAT_THREE_WITH_ITEM," in line: + match = re.search(pattern, line) + members = match.group(1).split(",") + new_data = new_data + re.sub(pattern, "{EVO_LEVEL, " + f'0, {members[SPECIES].strip()}' + ", CONDITIONS({IF_DEFEAT_X_WITH_ITEMS, " + "SPECIES_BISHARP, ITEM_LEADERS_CREST, 3})}", line) + elif "EVO_OVERWORLD_STEPS," in line: + match = re.search(pattern, line) + members = match.group(1).split(",") + new_data = new_data + re.sub(pattern, "{EVO_LEVEL, " + f'0, {members[SPECIES].strip()}' + ", CONDITIONS({IF_MIN_OVERWORLD_STEPS, 1000})}", line) + else: + new_data = new_data + line + + return new_data + + +species_files = [ + "gen_1_families.h", + "gen_2_families.h", + "gen_3_families.h", + "gen_4_families.h", + "gen_5_families.h", + "gen_6_families.h", + "gen_7_families.h", + "gen_8_families.h", + "gen_9_families.h", +] + +PATH = "src/data/pokemon/species_info/" + +for source in species_files: + with open(PATH + source, 'r') as file: + data = file.readlines() + + with open(PATH + source, 'w') as file: + file.write(convert_methods(data)) diff --git a/migration_scripts/add_time_based_encounters.py b/migration_scripts/add_time_based_encounters.py new file mode 100644 index 0000000000..aebdafc2b2 --- /dev/null +++ b/migration_scripts/add_time_based_encounters.py @@ -0,0 +1,91 @@ +import json +import sys +import os + +try: + if not os.path.exists("./tools/wild_encounters/"): + print("Please run this script from the project's root folder.") + quit() + sys.path.append("./tools/wild_encounters/") + from wild_encounters_to_header import TimeOfDay, SetupUserTimeEnum +except ImportError: + print("Could not import the file tools/wild_encounters/wild_encounters_to_header.py") + quit() + +ARGS = [ + "--copy", +] + +TIME_OF_DAY_DEFAULT = 0 + + +def GetWildEncounterFile(): + if not os.path.exists("Makefile"): + print("Please run this script from the project's root folder.") + quit() + + timeOfDay = SetupUserTimeEnum(TimeOfDay()) + + wFile = open("src/data/wild_encounters.json") + wData = json.load(wFile) + + wBackupData = json.dumps(wData, indent=2) + wBackupFile = open("src/data/wild_encounters.json.bak", mode="w", encoding="utf-8") + wBackupFile.write(wBackupData) + + global COPY_FULL_ENCOUNTER + COPY_FULL_ENCOUNTER = False + + for arg in ARGS: + if len(sys.argv) > 1: + if arg in sys.argv[1:3]: + if arg == ARGS[0]: + COPY_FULL_ENCOUNTER = True + + encounterCount = 0 + for group in wData["wild_encounter_groups"]: + wEncounters = wData["wild_encounter_groups"][encounterCount]["encounters"] + editMap = True + + wEncounters_New = list() + for map in wEncounters: + for suffix in timeOfDay.fvals: + tempSuffix = "_" + suffix + if tempSuffix in map["base_label"]: + editMap = False + break + else: + editMap = True + + if editMap: + k = 0 + for suffix in timeOfDay.fvals: + tempDict = dict() + if k == TIME_OF_DAY_DEFAULT or COPY_FULL_ENCOUNTER: + tempDict = map.copy() + + tempMapLabel = "" + if "map" in map: + tempMapLabel = map["map"] + tempDict["map"] = tempMapLabel + + tempLabel = map["base_label"] + "_" + suffix + tempDict["base_label"] = tempLabel + wEncounters_New.append(tempDict) + if map["base_label"] in wEncounters_New: + wEncounters_New[map["base_label"]].pop() + + print(tempLabel + " added") + k += 1 + else: + wEncounters_New.append(map.copy()) + + wData["wild_encounter_groups"][encounterCount]["encounters"] = wEncounters_New + encounterCount += 1 + + wNewData = json.dumps(wData, indent=2) + wNewFile = open("src/data/wild_encounters.json", mode="w", encoding="utf-8") + wNewFile.write(wNewData) + + +GetWildEncounterFile() diff --git a/src/battle_ai_main.c b/src/battle_ai_main.c index 87bd6f0540..2805a10692 100644 --- a/src/battle_ai_main.c +++ b/src/battle_ai_main.c @@ -32,11 +32,11 @@ #define AI_ACTION_WATCH (1 << 2) #define AI_ACTION_DO_NOT_ATTACK (1 << 3) -static u32 ChooseMoveOrAction_Singles(u32 battlerAi); -static u32 ChooseMoveOrAction_Doubles(u32 battlerAi); -static inline void BattleAI_DoAIProcessing(struct AI_ThinkingStruct *aiThink, u32 battlerAi, u32 battlerDef); -static inline void BattleAI_DoAIProcessing_PredictedSwitchin(struct AI_ThinkingStruct *aiThink, struct AiLogicData *aiData, u32 battlerAi, u32 battlerDef); -static bool32 IsPinchBerryItemEffect(u32 holdEffect); +static u32 ChooseMoveOrAction_Singles(u32 battler); +static u32 ChooseMoveOrAction_Doubles(u32 battler); +static inline void BattleAI_DoAIProcessing(struct AiThinkingStruct *aiThink, u32 battlerAtk, u32 battlerDef); +static inline void BattleAI_DoAIProcessing_PredictedSwitchin(struct AiThinkingStruct *aiThink, struct AiLogicData *aiData, u32 battlerAtk, u32 battlerDef); +static bool32 IsPinchBerryItemEffect(enum ItemHoldEffect holdEffect); // ewram EWRAM_DATA const u8 *gAIScriptPtr = NULL; // Still used in contests @@ -58,6 +58,7 @@ 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 AI_PredictSwitch(u32 battlerAtk, u32 battlerDef, u32 move, s32 score); +static s32 AI_CheckPpStall(u32 battlerAtk, u32 battlerDef, u32 move, s32 score); static s32 (*const sBattleAiFuncTable[])(u32, u32, u32, s32) = { @@ -73,33 +74,65 @@ 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, // Unused - [13] = NULL, // Unused - [14] = NULL, // Unused - [15] = NULL, // Unused - [16] = NULL, // Unused - [17] = NULL, // Unused - [18] = NULL, // Unused - [19] = NULL, // Unused - [20] = NULL, // Unused - [21] = NULL, // Unused - [22] = NULL, // Unused + [12] = NULL, // AI_FLAG_PREFER_STATUS_MOVES + [13] = NULL, // AI_FLAG_STALL + [14] = NULL, // AI_FLAG_SMART_SWITCHING + [15] = NULL, // AI_FLAG_ACE_POKEMON + [16] = NULL, // AI_FLAG_OMNISCIENT + [17] = NULL, // AI_FLAG_SMART_MON_CHOICES + [18] = NULL, // AI_FLAG_CONSERVATIVE + [19] = NULL, // AI_FLAG_SEQUENCE_SWITCHING + [20] = NULL, // AI_FLAG_DOUBLE_ACE_POKEMON + [21] = NULL, // AI_FLAG_WEIGH_ABILITY_PREDICTION + [22] = NULL, // AI_FLAG_PREFER_HIGHEST_DAMAGE_MOVE [23] = AI_PredictSwitch, // AI_FLAG_PREDICT_SWITCH - [24] = NULL, // Unused - [25] = NULL, // Unused - [26] = NULL, // Unused + [24] = NULL, // AI_FLAG_PREDICT_INCOMING_MON + [25] = AI_CheckPpStall, // AI_FLAG_PP_STALL_PREVENTION + [26] = NULL, // AI_FLAG_PREDICT_MOVE [27] = 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 + [28] = NULL, // Unused + [29] = NULL, // Unused + [30] = NULL, // Unused + [31] = NULL, // Unused + [32] = NULL, // Unused + [33] = NULL, // Unused + [34] = NULL, // Unused + [35] = NULL, // Unused + [36] = NULL, // Unused + [37] = NULL, // Unused + [38] = NULL, // Unused + [39] = NULL, // Unused + [40] = NULL, // Unused + [41] = NULL, // Unused + [42] = NULL, // Unused + [43] = NULL, // Unused + [44] = NULL, // Unused + [45] = NULL, // Unused + [46] = NULL, // Unused + [47] = NULL, // Unused + [48] = NULL, // Unused + [49] = NULL, // Unused + [50] = NULL, // Unused + [51] = NULL, // Unused + [52] = NULL, // Unused + [53] = NULL, // Unused + [54] = NULL, // Unused + [55] = NULL, // Unused + [56] = NULL, // Unused + [57] = NULL, // Unused + [58] = NULL, // Unused + [59] = NULL, // Unused + [60] = AI_DynamicFunc, // AI_FLAG_DYNAMIC_FUNC + [61] = AI_Roaming, // AI_FLAG_ROAMING + [62] = AI_Safari, // AI_FLAG_SAFARI + [63] = AI_FirstBattle, // AI_FLAG_FIRST_BATTLE }; // Functions void BattleAI_SetupItems(void) { s32 i; - u8 *data = (u8 *)BATTLE_HISTORY; + u8 *data = (u8 *)gBattleHistory; const u16 *items = GetTrainerItemsFromId(TRAINER_BATTLE_PARAM.opponentA); for (i = 0; i < sizeof(struct BattleHistory); i++) @@ -117,17 +150,17 @@ void BattleAI_SetupItems(void) { if (items[i] != ITEM_NONE) { - BATTLE_HISTORY->trainerItems[BATTLE_HISTORY->itemsNo] = items[i]; - BATTLE_HISTORY->itemsNo++; + gBattleHistory->trainerItems[gBattleHistory->itemsNo] = items[i]; + gBattleHistory->itemsNo++; } } } } -static u32 GetWildAiFlags(void) +static u64 GetWildAiFlags(void) { u32 avgLevel = GetMonData(&gEnemyParty[0], MON_DATA_LEVEL); - u32 flags = 0; + u64 flags = 0; if (IsDoubleBattle()) avgLevel = (GetMonData(&gEnemyParty[0], MON_DATA_LEVEL) + GetMonData(&gEnemyParty[1], MON_DATA_LEVEL)) / 2; @@ -146,9 +179,9 @@ static u32 GetWildAiFlags(void) return flags; } -static u32 GetAiFlags(u16 trainerId) +static u64 GetAiFlags(u16 trainerId) { - u32 flags = 0; + u64 flags = 0; if (!(gBattleTypeFlags & BATTLE_TYPE_HAS_AI) && !IsWildMonSmart()) return 0; @@ -196,89 +229,184 @@ static u32 GetAiFlags(u16 trainerId) void BattleAI_SetupFlags(void) { if (IsAiVsAiBattle()) - AI_THINKING_STRUCT->aiFlags[B_POSITION_PLAYER_LEFT] = GetAiFlags(gPartnerTrainerId); + gAiThinkingStruct->aiFlags[B_POSITION_PLAYER_LEFT] = GetAiFlags(gPartnerTrainerId); else - AI_THINKING_STRUCT->aiFlags[B_POSITION_PLAYER_LEFT] = 0; // player has no AI + gAiThinkingStruct->aiFlags[B_POSITION_PLAYER_LEFT] = 0; // player has no AI if (DEBUG_OVERWORLD_MENU && gIsDebugBattle) { - AI_THINKING_STRUCT->aiFlags[B_POSITION_OPPONENT_LEFT] = gDebugAIFlags; - AI_THINKING_STRUCT->aiFlags[B_POSITION_OPPONENT_RIGHT] = gDebugAIFlags; + gAiThinkingStruct->aiFlags[B_POSITION_OPPONENT_LEFT] = gDebugAIFlags; + gAiThinkingStruct->aiFlags[B_POSITION_OPPONENT_RIGHT] = gDebugAIFlags; return; } if (IsWildMonSmart() && !(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_TRAINER))) { // smart wild AI - AI_THINKING_STRUCT->aiFlags[B_POSITION_OPPONENT_LEFT] = GetAiFlags(0xFFFF); - AI_THINKING_STRUCT->aiFlags[B_POSITION_OPPONENT_RIGHT] = GetAiFlags(0xFFFF); + gAiThinkingStruct->aiFlags[B_POSITION_OPPONENT_LEFT] = GetAiFlags(0xFFFF); + gAiThinkingStruct->aiFlags[B_POSITION_OPPONENT_RIGHT] = GetAiFlags(0xFFFF); } else { - AI_THINKING_STRUCT->aiFlags[B_POSITION_OPPONENT_LEFT] = GetAiFlags(TRAINER_BATTLE_PARAM.opponentA); + gAiThinkingStruct->aiFlags[B_POSITION_OPPONENT_LEFT] = GetAiFlags(TRAINER_BATTLE_PARAM.opponentA); if (TRAINER_BATTLE_PARAM.opponentB != 0) - AI_THINKING_STRUCT->aiFlags[B_POSITION_OPPONENT_RIGHT] = GetAiFlags(TRAINER_BATTLE_PARAM.opponentB); + gAiThinkingStruct->aiFlags[B_POSITION_OPPONENT_RIGHT] = GetAiFlags(TRAINER_BATTLE_PARAM.opponentB); else - AI_THINKING_STRUCT->aiFlags[B_POSITION_OPPONENT_RIGHT] = AI_THINKING_STRUCT->aiFlags[B_POSITION_OPPONENT_LEFT]; + gAiThinkingStruct->aiFlags[B_POSITION_OPPONENT_RIGHT] = gAiThinkingStruct->aiFlags[B_POSITION_OPPONENT_LEFT]; } if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER) { - AI_THINKING_STRUCT->aiFlags[B_POSITION_PLAYER_RIGHT] = GetAiFlags(gPartnerTrainerId - TRAINER_PARTNER(PARTNER_NONE)); + gAiThinkingStruct->aiFlags[B_POSITION_PLAYER_RIGHT] = GetAiFlags(gPartnerTrainerId - TRAINER_PARTNER(PARTNER_NONE)); } else if (IsDoubleBattle() && IsAiVsAiBattle()) { - AI_THINKING_STRUCT->aiFlags[B_POSITION_PLAYER_RIGHT] = AI_THINKING_STRUCT->aiFlags[B_POSITION_PLAYER_LEFT]; + gAiThinkingStruct->aiFlags[B_POSITION_PLAYER_RIGHT] = gAiThinkingStruct->aiFlags[B_POSITION_PLAYER_LEFT]; } else { - AI_THINKING_STRUCT->aiFlags[B_POSITION_PLAYER_RIGHT] = 0; // player + gAiThinkingStruct->aiFlags[B_POSITION_PLAYER_RIGHT] = 0; // player } } void BattleAI_SetupAIData(u8 defaultScoreMoves, u32 battler) { - s32 i; - u8 moveLimitations; - u32 flags[MAX_BATTLERS_COUNT]; + u32 moveLimitations, moveLimitationsTarget; + u32 defaultScoreMovesTarget = defaultScoreMoves; + u64 flags[MAX_BATTLERS_COUNT]; + u32 moveIndex; // Clear AI data but preserve the flags. - memcpy(&flags[0], &AI_THINKING_STRUCT->aiFlags[0], sizeof(u32) * MAX_BATTLERS_COUNT); - memset(AI_THINKING_STRUCT, 0, sizeof(struct AI_ThinkingStruct)); - memcpy(&AI_THINKING_STRUCT->aiFlags[0], &flags[0], sizeof(u32) * MAX_BATTLERS_COUNT); + memcpy(&flags[0], &gAiThinkingStruct->aiFlags[0], sizeof(u64) * MAX_BATTLERS_COUNT); + memset(gAiThinkingStruct, 0, sizeof(struct AiThinkingStruct)); + memcpy(&gAiThinkingStruct->aiFlags[0], &flags[0], sizeof(u64) * MAX_BATTLERS_COUNT); + + moveLimitations = gAiLogicData->moveLimitations[battler]; // Conditional score reset, unlike Ruby. - for (i = 0; i < MAX_MON_MOVES; i++) + for (moveIndex = 0; moveIndex < MAX_MON_MOVES; moveIndex++) { + if (moveLimitations & (1u << moveIndex)) + SET_SCORE(battler, moveIndex, 0); if (defaultScoreMoves & 1) - SET_SCORE(battler, i, AI_SCORE_DEFAULT); + SET_SCORE(battler, moveIndex, AI_SCORE_DEFAULT); else - SET_SCORE(battler, i, 0); + SET_SCORE(battler, moveIndex, 0); defaultScoreMoves >>= 1; } - moveLimitations = AI_DATA->moveLimitations[battler]; - - // Ignore moves that aren't possible to use. - for (i = 0; i < MAX_MON_MOVES; i++) - { - if ((1u << i) & moveLimitations) - SET_SCORE(battler, i, 0); - } - gBattlerTarget = SetRandomTarget(battler); - gBattleStruct->aiChosenTarget[battler] = gBattlerTarget; + gAiBattleData->chosenTarget[battler] = gBattlerTarget; + + // Initialize move prediction scores + if (gAiThinkingStruct->aiFlags[battler] & AI_FLAG_PREDICT_MOVE) + { + u32 opposingBattler = GetOppositeBattler(battler); + moveLimitationsTarget = gAiLogicData->moveLimitations[opposingBattler]; + + for (moveIndex = 0; moveIndex < MAX_MON_MOVES; moveIndex++) + { + if (moveLimitationsTarget & (1u << moveIndex)) + SET_SCORE(opposingBattler, moveIndex, 0); + if (defaultScoreMovesTarget & 1) + SET_SCORE(opposingBattler, moveIndex, AI_SCORE_DEFAULT); + else + SET_SCORE(opposingBattler, moveIndex, 0); + + defaultScoreMovesTarget >>= 1; + } + } } -u32 BattleAI_ChooseMoveOrAction(u32 battler) +bool32 BattlerChoseNonMoveAction(void) { - u32 ret; + if (gAiThinkingStruct->aiAction & AI_ACTION_FLEE) + { + gAiBattleData->actionFlee = TRUE; + return TRUE; + } + + if (gAiThinkingStruct->aiAction & AI_ACTION_WATCH) + { + gAiBattleData->choiceWatch = TRUE; + return TRUE; + } + + return FALSE; +} + +void SetupAIPredictionData(u32 battler, enum SwitchType switchType) +{ + s32 opposingBattler = GetOppositeBattler(battler); + gAiLogicData->aiPredictionInProgress = TRUE; + gAiLogicData->battlerDoingPrediction = battler; + + // Switch prediction + if ((gAiThinkingStruct->aiFlags[battler] & AI_FLAG_PREDICT_SWITCH)) + { + gAiLogicData->mostSuitableMonId[opposingBattler] = GetMostSuitableMonToSwitchInto(opposingBattler, switchType); + if (ShouldSwitch(opposingBattler)) + gAiLogicData->shouldSwitch |= (1u << opposingBattler); + gBattleStruct->prevTurnSpecies[opposingBattler] = gBattleMons[opposingBattler].species; + + // Determine whether AI will use predictions this turn + gAiLogicData->predictingSwitch = RandomPercentage(RNG_AI_PREDICT_SWITCH, PREDICT_SWITCH_CHANCE); + } + + // Move prediction + if (gAiThinkingStruct->aiFlags[battler] & AI_FLAG_PREDICT_MOVE) + { + gAiLogicData->predictedMove[opposingBattler] = gBattleMons[opposingBattler].moves[BattleAI_ChooseMoveIndex(opposingBattler)]; + ModifySwitchAfterMoveScoring(opposingBattler); + + // Determine whether AI will use predictions this turn + gAiLogicData->predictingMove = RandomPercentage(RNG_AI_PREDICT_MOVE, PREDICT_MOVE_CHANCE); + } + gAiLogicData->aiPredictionInProgress = FALSE; +} + +void ComputeBattlerDecisions(u32 battler) +{ + if ((gBattleTypeFlags & BATTLE_TYPE_HAS_AI || IsWildMonSmart()) + && (BattlerHasAi(battler) + && !(gBattleTypeFlags & BATTLE_TYPE_PALACE))) + { + // If ai is about to flee or chosen to watch player, no need to calc anything + if (BattlerChoseNonMoveAction()) + return; + + // Risky AI switches aggressively even mid battle + enum SwitchType switchType = (gAiThinkingStruct->aiFlags[battler] & AI_FLAG_RISKY) ? SWITCH_AFTER_KO : SWITCH_MID_BATTLE; + + gAiLogicData->aiCalcInProgress = TRUE; + + // Setup battler and prediction data + BattleAI_SetupAIData(0xF, battler); + SetupAIPredictionData(battler, switchType); + + // AI's own switching data + gAiLogicData->mostSuitableMonId[battler] = GetMostSuitableMonToSwitchInto(battler, switchType); + if (ShouldSwitch(battler)) + gAiLogicData->shouldSwitch |= (1u << battler); + gBattleStruct->prevTurnSpecies[battler] = gBattleMons[battler].species; + + // AI's move scoring + gAiBattleData->chosenMoveIndex[battler] = BattleAI_ChooseMoveIndex(battler); // Calculate score and chose move index + ModifySwitchAfterMoveScoring(battler); + + gAiLogicData->aiCalcInProgress = FALSE; + } +} + +u32 BattleAI_ChooseMoveIndex(u32 battler) +{ + u32 chosenMoveIndex; if (!IsDoubleBattle()) - ret = ChooseMoveOrAction_Singles(battler); + chosenMoveIndex = ChooseMoveOrAction_Singles(battler); else - ret = ChooseMoveOrAction_Doubles(battler); + chosenMoveIndex = ChooseMoveOrAction_Doubles(battler); // Clear protect structures, some flags may be set during AI calcs // e.g. pranksterElevated from GetBattleMovePriority @@ -286,13 +414,14 @@ u32 BattleAI_ChooseMoveOrAction(u32 battler) #if TESTING TestRunner_Battle_CheckAiMoveScores(battler); #endif // TESTING - return ret; + + return chosenMoveIndex; } static void CopyBattlerDataToAIParty(u32 bPosition, u32 side) { u32 battler = GetBattlerAtPosition(bPosition); - struct AiPartyMon *aiMon = &AI_PARTY->mons[side][gBattlerPartyIndexes[battler]]; + struct AiPartyMon *aiMon = &gAiPartyData->mons[side][gBattlerPartyIndexes[battler]]; struct BattlePokemon *bMon = &gBattleMons[battler]; aiMon->species = bMon->species; @@ -307,11 +436,11 @@ static void CopyBattlerDataToAIParty(u32 bPosition, u32 side) void Ai_InitPartyStruct(void) { u32 i; - bool32 isOmniscient = (AI_THINKING_STRUCT->aiFlags[B_POSITION_OPPONENT_LEFT] & AI_FLAG_OMNISCIENT) || (AI_THINKING_STRUCT->aiFlags[B_POSITION_OPPONENT_RIGHT] & AI_FLAG_OMNISCIENT); + bool32 isOmniscient = (gAiThinkingStruct->aiFlags[B_POSITION_OPPONENT_LEFT] & AI_FLAG_OMNISCIENT) || (gAiThinkingStruct->aiFlags[B_POSITION_OPPONENT_RIGHT] & AI_FLAG_OMNISCIENT); struct Pokemon *mon; - AI_PARTY->count[B_SIDE_PLAYER] = CalculatePlayerPartyCount(); - AI_PARTY->count[B_SIDE_OPPONENT] = CalculateEnemyPartyCount(); + gAiPartyData->count[B_SIDE_PLAYER] = CalculatePlayerPartyCount(); + gAiPartyData->count[B_SIDE_OPPONENT] = CalculateEnemyPartyCount(); // Save first 2 or 4(in doubles) mons CopyBattlerDataToAIParty(B_POSITION_PLAYER_LEFT, B_SIDE_PLAYER); @@ -326,20 +455,20 @@ void Ai_InitPartyStruct(void) } // Find fainted mons - for (i = 0; i < AI_PARTY->count[B_SIDE_PLAYER]; i++) + for (i = 0; i < gAiPartyData->count[B_SIDE_PLAYER]; i++) { if (GetMonData(&gPlayerParty[i], MON_DATA_HP) == 0) - AI_PARTY->mons[B_SIDE_PLAYER][i].isFainted = TRUE; + gAiPartyData->mons[B_SIDE_PLAYER][i].isFainted = TRUE; if (isOmniscient) { u32 j; mon = &gPlayerParty[i]; - AI_PARTY->mons[B_SIDE_PLAYER][i].item = GetMonData(mon, MON_DATA_HELD_ITEM); - AI_PARTY->mons[B_SIDE_PLAYER][i].heldEffect = GetItemHoldEffect(AI_PARTY->mons[B_SIDE_PLAYER][i].item); - AI_PARTY->mons[B_SIDE_PLAYER][i].ability = GetMonAbility(mon); + gAiPartyData->mons[B_SIDE_PLAYER][i].item = GetMonData(mon, MON_DATA_HELD_ITEM); + gAiPartyData->mons[B_SIDE_PLAYER][i].heldEffect = GetItemHoldEffect(gAiPartyData->mons[B_SIDE_PLAYER][i].item); + gAiPartyData->mons[B_SIDE_PLAYER][i].ability = GetMonAbility(mon); for (j = 0; j < MAX_MON_MOVES; j++) - AI_PARTY->mons[B_SIDE_PLAYER][i].moves[j] = GetMonData(mon, MON_DATA_MOVE1 + j); + gAiPartyData->mons[B_SIDE_PLAYER][i].moves[j] = GetMonData(mon, MON_DATA_MOVE1 + j); } } } @@ -348,19 +477,19 @@ void Ai_UpdateSwitchInData(u32 battler) { u32 i; u32 side = GetBattlerSide(battler); - struct AiPartyMon *aiMon = &AI_PARTY->mons[side][gBattlerPartyIndexes[battler]]; + struct AiPartyMon *aiMon = &gAiPartyData->mons[side][gBattlerPartyIndexes[battler]]; // See if the switched-in mon has been already in battle if (aiMon->wasSentInBattle) { if (aiMon->ability) - BATTLE_HISTORY->abilities[battler] = aiMon->ability; + gBattleHistory->abilities[battler] = aiMon->ability; if (aiMon->heldEffect) - BATTLE_HISTORY->itemEffects[battler] = aiMon->heldEffect; + gBattleHistory->itemEffects[battler] = aiMon->heldEffect; for (i = 0; i < MAX_MON_MOVES; i++) { if (aiMon->moves[i]) - BATTLE_HISTORY->usedMoves[battler][i] = aiMon->moves[i]; + gBattleHistory->usedMoves[battler][i] = aiMon->moves[i]; } aiMon->switchInCount++; aiMon->status = gBattleMons[battler].status1; // Copy status, because it could've been changed in battle. @@ -376,7 +505,7 @@ void Ai_UpdateSwitchInData(u32 battler) void Ai_UpdateFaintData(u32 battler) { - struct AiPartyMon *aiMon = &AI_PARTY->mons[GetBattlerSide(battler)][gBattlerPartyIndexes[battler]]; + struct AiPartyMon *aiMon = &gAiPartyData->mons[GetBattlerSide(battler)][gBattlerPartyIndexes[battler]]; ClearBattlerMoveHistory(battler); ClearBattlerAbilityHistory(battler); ClearBattlerItemEffectHistory(battler); @@ -413,8 +542,8 @@ static u32 Ai_SetMoveAccuracy(struct AiLogicData *aiData, u32 battlerAtk, u32 ba static void CalcBattlerAiMovesData(struct AiLogicData *aiData, u32 battlerAtk, u32 battlerDef, u32 weather) { u32 moveIndex, move; - u32 rollType = GetDmgRollType(battlerAtk); u16 *moves = GetMovesArray(battlerAtk); + u32 moveLimitations = aiData->moveLimitations[battlerAtk]; for (moveIndex = 0; moveIndex < MAX_MON_MOVES; moveIndex++) { @@ -422,14 +551,13 @@ static void CalcBattlerAiMovesData(struct AiLogicData *aiData, u32 battlerAtk, u uq4_12_t effectiveness = Q_4_12(0.0); move = moves[moveIndex]; - if (move != MOVE_NONE - && move != MOVE_UNAVAILABLE - //&& !IsBattleMoveStatus(move) /* we want to get effectiveness and accuracy of status moves */ - && !(aiData->moveLimitations[battlerAtk] & (1u << moveIndex))) - { - dmg = AI_CalcDamage(move, battlerAtk, battlerDef, &effectiveness, TRUE, weather, rollType); - aiData->moveAccuracy[battlerAtk][battlerDef][moveIndex] = Ai_SetMoveAccuracy(aiData, battlerAtk, battlerDef, move); - } + if (IsMoveUnusable(moveIndex, move, moveLimitations)) + continue; + + // Also get effectiveness of status moves + dmg = AI_CalcDamage(move, battlerAtk, battlerDef, &effectiveness, TRUE, weather); + aiData->moveAccuracy[battlerAtk][battlerDef][moveIndex] = Ai_SetMoveAccuracy(aiData, battlerAtk, battlerDef, move); + aiData->simulatedDmg[battlerAtk][battlerDef][moveIndex] = dmg; aiData->effectiveness[battlerAtk][battlerDef][moveIndex] = effectiveness; } @@ -472,7 +600,7 @@ void SetAiLogicDataForTurn(struct AiLogicData *aiData) // get/assume all battler data and simulate AI damage battlersCount = gBattlersCount; - AI_DATA->aiCalcInProgress = TRUE; + gAiLogicData->aiCalcInProgress = TRUE; if (DEBUG_AI_DELAY_TIMER) CycleCountStart(); for (battlerAtk = 0; battlerAtk < battlersCount; battlerAtk++) @@ -493,60 +621,101 @@ void SetAiLogicDataForTurn(struct AiLogicData *aiData) if (DEBUG_AI_DELAY_TIMER) // We add to existing to compound multiple calls gBattleStruct->aiDelayCycles += CycleCountEnd(); - AI_DATA->aiCalcInProgress = FALSE; + gAiLogicData->aiCalcInProgress = FALSE; } -static u32 ChooseMoveOrAction_Singles(u32 battlerAi) +u32 GetPartyMonAbility(struct Pokemon *mon) +{ + // Doesn't have any special handling yet + u32 species = GetMonData(mon, MON_DATA_SPECIES); + u32 ability = gSpeciesInfo[species].abilities[GetMonData(mon, MON_DATA_ABILITY_NUM)]; + return ability; +} + +static u32 PpStallReduction(u32 move, u32 battlerAtk) +{ + if (move == MOVE_NONE) + return 0; + u32 tempBattleMonIndex = 0; + u32 totalStallValue = 0; + u32 returnValue = 0; + struct BattlePokemon backupBattleMon; + memcpy(&backupBattleMon, &gBattleMons[tempBattleMonIndex], sizeof(struct BattlePokemon)); + for (u32 partyIndex = 0; partyIndex < PARTY_SIZE; partyIndex++) + { + u32 currentStallValue = gAiBattleData->playerStallMons[partyIndex]; + if (currentStallValue == 0 || GetMonData(&gPlayerParty[partyIndex], MON_DATA_HP) == 0) + continue; + PokemonToBattleMon(&gPlayerParty[partyIndex], &gBattleMons[tempBattleMonIndex]); + u32 species = GetMonData(&gPlayerParty[partyIndex], MON_DATA_SPECIES); + u32 abilityAtk = ABILITY_NONE; + u32 abilityDef = GetPartyMonAbility(&gPlayerParty[partyIndex]); + u32 moveType = GetBattleMoveType(move); // Probably doesn't handle dynamic types right now + if (CanAbilityAbsorbMove(battlerAtk, tempBattleMonIndex, abilityDef, move, moveType, ABILITY_CHECK_TRIGGER) + || CanAbilityBlockMove(battlerAtk, tempBattleMonIndex, abilityAtk, abilityDef, move, ABILITY_CHECK_TRIGGER) + || (CalcPartyMonTypeEffectivenessMultiplier(move, species, abilityDef) == 0)) + { + totalStallValue += currentStallValue; + } + } + + for (u32 i = 0; returnValue == 0 && i < totalStallValue; i++) + { + if (RandomPercentage(RNG_AI_PP_STALL_DISREGARD_MOVE, (100 - PP_STALL_DISREGARD_MOVE_PERCENTAGE))) + returnValue = PP_STALL_SCORE_REDUCTION; + } + + memcpy(&gBattleMons[tempBattleMonIndex], &backupBattleMon, sizeof(struct BattlePokemon)); + + return returnValue; +} + +static u32 ChooseMoveOrAction_Singles(u32 battler) { u8 currentMoveArray[MAX_MON_MOVES]; u8 consideredMoveArray[MAX_MON_MOVES]; u32 numOfBestMoves; s32 i; - u32 flags = AI_THINKING_STRUCT->aiFlags[battlerAi]; + u64 flags = gAiThinkingStruct->aiFlags[GetThinkingBattler(battler)]; + u32 opposingBattler = GetOppositeBattler(battler); - AI_DATA->partnerMove = 0; // no ally + gAiLogicData->partnerMove = 0; // no ally while (flags != 0) { if (flags & 1) { - if (IsBattlerPredictedToSwitch(gBattlerTarget) && (AI_THINKING_STRUCT->aiFlags[battlerAi] & AI_FLAG_PREDICT_INCOMING_MON)) - BattleAI_DoAIProcessing_PredictedSwitchin(AI_THINKING_STRUCT, AI_DATA, battlerAi, gBattlerTarget); + if (IsBattlerPredictedToSwitch(opposingBattler) && (gAiThinkingStruct->aiFlags[battler] & AI_FLAG_PREDICT_INCOMING_MON)) + BattleAI_DoAIProcessing_PredictedSwitchin(gAiThinkingStruct, gAiLogicData, battler, opposingBattler); else - BattleAI_DoAIProcessing(AI_THINKING_STRUCT, battlerAi, gBattlerTarget); + BattleAI_DoAIProcessing(gAiThinkingStruct, battler, opposingBattler); } - flags >>= 1; - AI_THINKING_STRUCT->aiLogicId++; + flags >>= (u64)1; + gAiThinkingStruct->aiLogicId++; } for (i = 0; i < MAX_MON_MOVES; i++) { - gBattleStruct->aiFinalScore[battlerAi][gBattlerTarget][i] = AI_THINKING_STRUCT->score[i]; + gAiBattleData->finalScore[battler][opposingBattler][i] = gAiThinkingStruct->score[i]; } - // Check special AI actions. - if (AI_THINKING_STRUCT->aiAction & AI_ACTION_FLEE) - return AI_CHOICE_FLEE; - if (AI_THINKING_STRUCT->aiAction & AI_ACTION_WATCH) - return AI_CHOICE_WATCH; - numOfBestMoves = 1; - currentMoveArray[0] = AI_THINKING_STRUCT->score[0]; + currentMoveArray[0] = gAiThinkingStruct->score[0]; consideredMoveArray[0] = 0; for (i = 1; i < MAX_MON_MOVES; i++) { - if (gBattleMons[battlerAi].moves[i] != MOVE_NONE) + if (gBattleMons[battler].moves[i] != MOVE_NONE) { // In ruby, the order of these if statements is reversed. - if (currentMoveArray[0] == AI_THINKING_STRUCT->score[i]) + if (currentMoveArray[0] == gAiThinkingStruct->score[i]) { - currentMoveArray[numOfBestMoves] = AI_THINKING_STRUCT->score[i]; + currentMoveArray[numOfBestMoves] = gAiThinkingStruct->score[i]; consideredMoveArray[numOfBestMoves++] = i; } - if (currentMoveArray[0] < AI_THINKING_STRUCT->score[i]) + if (currentMoveArray[0] < gAiThinkingStruct->score[i]) { numOfBestMoves = 1; - currentMoveArray[0] = AI_THINKING_STRUCT->score[i]; + currentMoveArray[0] = gAiThinkingStruct->score[i]; consideredMoveArray[0] = i; } } @@ -554,10 +723,10 @@ static u32 ChooseMoveOrAction_Singles(u32 battlerAi) return consideredMoveArray[Random() % numOfBestMoves]; } -static u32 ChooseMoveOrAction_Doubles(u32 battlerAi) +static u32 ChooseMoveOrAction_Doubles(u32 battler) { s32 i, j; - u32 flags; + u64 flags; s32 bestMovePointsForTarget[MAX_BATTLERS_COUNT]; u8 mostViableTargetsArray[MAX_BATTLERS_COUNT]; u8 actionOrMoveIndex[MAX_BATTLERS_COUNT]; @@ -569,7 +738,7 @@ static u32 ChooseMoveOrAction_Doubles(u32 battlerAi) for (i = 0; i < MAX_BATTLERS_COUNT; i++) { - if (i == battlerAi || gBattleMons[i].hp == 0) + if (i == battler || gBattleMons[i].hp == 0) { actionOrMoveIndex[i] = 0xFF; bestMovePointsForTarget[i] = -1; @@ -577,77 +746,66 @@ static u32 ChooseMoveOrAction_Doubles(u32 battlerAi) else { if (gBattleTypeFlags & BATTLE_TYPE_PALACE) - BattleAI_SetupAIData(gBattleStruct->palaceFlags >> 4, battlerAi); + BattleAI_SetupAIData(gBattleStruct->palaceFlags >> 4, battler); else - BattleAI_SetupAIData(0xF, battlerAi); + BattleAI_SetupAIData(0xF, battler); gBattlerTarget = i; - AI_DATA->partnerMove = GetAllyChosenMove(battlerAi); - AI_THINKING_STRUCT->aiLogicId = 0; - AI_THINKING_STRUCT->movesetIndex = 0; - flags = AI_THINKING_STRUCT->aiFlags[battlerAi]; + gAiLogicData->partnerMove = GetAllyChosenMove(battler); + gAiThinkingStruct->aiLogicId = 0; + gAiThinkingStruct->movesetIndex = 0; + flags = gAiThinkingStruct->aiFlags[GetThinkingBattler(battler)]; while (flags != 0) { if (flags & 1) { - if (IsBattlerPredictedToSwitch(gBattlerTarget) && (AI_THINKING_STRUCT->aiFlags[battlerAi] & AI_FLAG_PREDICT_INCOMING_MON)) - BattleAI_DoAIProcessing_PredictedSwitchin(AI_THINKING_STRUCT, AI_DATA, battlerAi, gBattlerTarget); + if (IsBattlerPredictedToSwitch(gBattlerTarget) && (gAiThinkingStruct->aiFlags[battler] & AI_FLAG_PREDICT_INCOMING_MON)) + BattleAI_DoAIProcessing_PredictedSwitchin(gAiThinkingStruct, gAiLogicData, battler, gBattlerTarget); else - BattleAI_DoAIProcessing(AI_THINKING_STRUCT, battlerAi, gBattlerTarget); + BattleAI_DoAIProcessing(gAiThinkingStruct, battler, gBattlerTarget); } - flags >>= 1; - AI_THINKING_STRUCT->aiLogicId++; + flags >>= (u64)1; + gAiThinkingStruct->aiLogicId++; } - if (AI_THINKING_STRUCT->aiAction & AI_ACTION_FLEE) + mostViableMovesScores[0] = gAiThinkingStruct->score[0]; + mostViableMovesIndices[0] = 0; + mostViableMovesNo = 1; + for (j = 1; j < MAX_MON_MOVES; j++) { - actionOrMoveIndex[i] = AI_CHOICE_FLEE; - } - else if (AI_THINKING_STRUCT->aiAction & AI_ACTION_WATCH) - { - actionOrMoveIndex[i] = AI_CHOICE_WATCH; - } - else - { - mostViableMovesScores[0] = AI_THINKING_STRUCT->score[0]; - mostViableMovesIndices[0] = 0; - mostViableMovesNo = 1; - for (j = 1; j < MAX_MON_MOVES; j++) + if (gBattleMons[battler].moves[j] != 0) { - if (gBattleMons[battlerAi].moves[j] != 0) - { - if (!CanTargetBattler(battlerAi, i, gBattleMons[battlerAi].moves[j])) - continue; + if (!CanTargetBattler(battler, i, gBattleMons[battler].moves[j])) + continue; - if (mostViableMovesScores[0] == AI_THINKING_STRUCT->score[j]) - { - mostViableMovesScores[mostViableMovesNo] = AI_THINKING_STRUCT->score[j]; - mostViableMovesIndices[mostViableMovesNo] = j; - mostViableMovesNo++; - } - if (mostViableMovesScores[0] < AI_THINKING_STRUCT->score[j]) - { - mostViableMovesScores[0] = AI_THINKING_STRUCT->score[j]; - mostViableMovesIndices[0] = j; - mostViableMovesNo = 1; - } + if (mostViableMovesScores[0] == gAiThinkingStruct->score[j]) + { + mostViableMovesScores[mostViableMovesNo] = gAiThinkingStruct->score[j]; + mostViableMovesIndices[mostViableMovesNo] = j; + mostViableMovesNo++; + } + if (mostViableMovesScores[0] < gAiThinkingStruct->score[j]) + { + mostViableMovesScores[0] = gAiThinkingStruct->score[j]; + mostViableMovesIndices[0] = j; + mostViableMovesNo = 1; } } - actionOrMoveIndex[i] = mostViableMovesIndices[Random() % mostViableMovesNo]; - bestMovePointsForTarget[i] = mostViableMovesScores[0]; + } + actionOrMoveIndex[i] = mostViableMovesIndices[Random() % mostViableMovesNo]; + bestMovePointsForTarget[i] = mostViableMovesScores[0]; - // Don't use a move against ally if it has less than 100 points. - if (i == BATTLE_PARTNER(battlerAi) && bestMovePointsForTarget[i] < AI_SCORE_DEFAULT) - { - bestMovePointsForTarget[i] = -1; - } + // Don't use a move against ally if it has less than 100 points. + if (i == BATTLE_PARTNER(battler) && bestMovePointsForTarget[i] < AI_SCORE_DEFAULT) + { + bestMovePointsForTarget[i] = -1; } for (j = 0; j < MAX_MON_MOVES; j++) { - gBattleStruct->aiFinalScore[battlerAi][gBattlerTarget][j] = AI_THINKING_STRUCT->score[j]; + gAiBattleData->finalScore[battler][gBattlerTarget][j] = gAiThinkingStruct->score[j]; } } } @@ -672,7 +830,7 @@ static u32 ChooseMoveOrAction_Doubles(u32 battlerAi) } gBattlerTarget = mostViableTargetsArray[Random() % mostViableTargetsNo]; - gBattleStruct->aiChosenTarget[battlerAi] = gBattlerTarget; + gAiBattleData->chosenTarget[battler] = gBattlerTarget; return actionOrMoveIndex[gBattlerTarget]; } @@ -687,26 +845,26 @@ static inline bool32 ShouldConsiderMoveForBattler(u32 battlerAi, u32 battlerDef, return TRUE; } -static inline void BattleAI_DoAIProcessing(struct AI_ThinkingStruct *aiThink, u32 battlerAi, u32 battlerDef) +static inline void BattleAI_DoAIProcessing(struct AiThinkingStruct *aiThink, u32 battlerAtk, u32 battlerDef) { do { - if (gBattleMons[battlerAi].pp[aiThink->movesetIndex] == 0) + if (gBattleMons[battlerAtk].pp[aiThink->movesetIndex] == 0) aiThink->moveConsidered = MOVE_NONE; else - aiThink->moveConsidered = gBattleMons[battlerAi].moves[aiThink->movesetIndex]; + aiThink->moveConsidered = gBattleMons[battlerAtk].moves[aiThink->movesetIndex]; // There is no point in calculating scores for all 3 battlers(2 opponents + 1 ally) with certain moves. if (aiThink->moveConsidered != MOVE_NONE && aiThink->score[aiThink->movesetIndex] > 0 - && ShouldConsiderMoveForBattler(battlerAi, battlerDef, aiThink->moveConsidered)) + && ShouldConsiderMoveForBattler(battlerAtk, battlerDef, aiThink->moveConsidered)) { if (aiThink->aiLogicId < ARRAY_COUNT(sBattleAiFuncTable) && sBattleAiFuncTable[aiThink->aiLogicId] != NULL) { // Call AI function aiThink->score[aiThink->movesetIndex] = - sBattleAiFuncTable[aiThink->aiLogicId](battlerAi, + sBattleAiFuncTable[aiThink->aiLogicId](battlerAtk, battlerDef, aiThink->moveConsidered, aiThink->score[aiThink->movesetIndex]); @@ -722,7 +880,7 @@ static inline void BattleAI_DoAIProcessing(struct AI_ThinkingStruct *aiThink, u3 aiThink->movesetIndex = 0; } -void BattleAI_DoAIProcessing_PredictedSwitchin(struct AI_ThinkingStruct *aiThink, struct AiLogicData *aiData, u32 battlerAtk, u32 battlerDef) +void BattleAI_DoAIProcessing_PredictedSwitchin(struct AiThinkingStruct *aiThink, struct AiLogicData *aiData, u32 battlerAtk, u32 battlerDef) { struct BattlePokemon switchoutCandidate = gBattleMons[battlerDef]; struct SimulatedDamage simulatedDamageSwitchout[MAX_MON_MOVES]; @@ -837,16 +995,19 @@ void BattleAI_DoAIProcessing_PredictedSwitchin(struct AI_ThinkingStruct *aiThink static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) { // move data - s8 atkPriority = GetBattleMovePriority(battlerAtk, move); - u32 moveEffect = GetMoveEffect(move); + enum BattleMoveEffects moveEffect = GetMoveEffect(move); + u32 nonVolatileStatus = GetMoveNonVolatileStatus(move); s32 moveType; u32 moveTarget = GetBattlerMoveTargetType(battlerAtk, move); - struct AiLogicData *aiData = AI_DATA; - uq4_12_t effectiveness = aiData->effectiveness[battlerAtk][battlerDef][AI_THINKING_STRUCT->movesetIndex]; + struct AiLogicData *aiData = gAiLogicData; + uq4_12_t effectiveness = aiData->effectiveness[battlerAtk][battlerDef][gAiThinkingStruct->movesetIndex]; bool32 isDoubleBattle = IsValidDoubleBattle(battlerAtk); u32 i; u32 weather; - u32 predictedMove = aiData->lastUsedMove[battlerDef]; + u32 predictedMove = GetIncomingMove(battlerAtk, battlerDef, gAiLogicData); + u32 abilityAtk = aiData->abilities[battlerAtk]; + u32 abilityDef = aiData->abilities[battlerDef]; + s32 atkPriority = GetBattleMovePriority(battlerAtk, abilityAtk, move); if (IS_TARGETING_PARTNER(battlerAtk, battlerDef)) return score; @@ -866,6 +1027,31 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) if (gBattleStruct->battlerState[battlerDef].commandingDondozo) RETURN_SCORE_MINUS(20); + // Don't setup into expected Focus Punch. + if (GetMoveCategory(move) == DAMAGE_CATEGORY_STATUS + && nonVolatileStatus != MOVE_EFFECT_SLEEP + && GetMoveEffect(predictedMove) != EFFECT_FOCUS_PUNCH + && GetMoveEffect(GetBestDmgMoveFromBattler(battlerDef, battlerAtk, AI_DEFENDING)) == EFFECT_FOCUS_PUNCH + && RandomPercentage(RNG_AI_STATUS_FOCUS_PUNCH, STATUS_MOVE_FOCUS_PUNCH_CHANCE)) + { + RETURN_SCORE_MINUS(20); + } + + // Don't use anything but super effective thawing moves if target is frozen if any other attack available + if (((GetMoveType(move) == TYPE_FIRE && GetMovePower(move) != 0) || CanBurnHitThaw(move)) && effectiveness < UQ_4_12(2.0) && (gBattleMons[battlerDef].status1 & (STATUS1_FROSTBITE | STATUS1_FREEZE))) + { + u32 aiMove; + for (i = 0; i < MAX_MON_MOVES; i++) + { + aiMove = gBattleMons[battlerAtk].moves[i]; + if (GetMoveType(aiMove) != TYPE_FIRE && !CanBurnHitThaw(aiMove) && GetMovePower(gBattleMons[battlerAtk].moves[i]) != 0) + { + ADJUST_SCORE(-1); + break; + } + } + } + if (effectiveness == UQ_4_12(0.0)) { RETURN_SCORE_MINUS(20); @@ -892,145 +1078,124 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) } } + if (DoesBattlerIgnoreAbilityChecks(battlerAtk, abilityAtk, move)) + abilityDef = ABILITY_NONE; + // check non-user target if (!(moveTarget & MOVE_TARGET_USER)) { - // target ability checks - if (!DoesBattlerIgnoreAbilityChecks(battlerAtk, aiData->abilities[battlerAtk], move)) + if (CanAbilityBlockMove(battlerAtk, battlerDef, abilityAtk, abilityDef, move, ABILITY_CHECK_TRIGGER_AI)) + RETURN_SCORE_MINUS(20); + + if (CanAbilityAbsorbMove(battlerAtk, battlerDef, abilityDef, move, moveType, ABILITY_CHECK_TRIGGER_AI)) + RETURN_SCORE_MINUS(20); + + switch (abilityDef) { - if (CanAbilityBlockMove(battlerAtk, battlerDef, move, aiData->abilities[battlerDef], ABILITY_CHECK_TRIGGER)) - RETURN_SCORE_MINUS(20); - - if (CanAbilityAbsorbMove(battlerAtk, battlerDef, aiData->abilities[battlerDef], move, moveType, ABILITY_CHECK_TRIGGER)) - RETURN_SCORE_MINUS(20); - - switch (aiData->abilities[battlerDef]) + case ABILITY_MAGIC_GUARD: + switch (moveEffect) { - case ABILITY_MAGIC_GUARD: - switch (moveEffect) - { - case EFFECT_POISON: - case EFFECT_WILL_O_WISP: - case EFFECT_TOXIC: - case EFFECT_LEECH_SEED: - ADJUST_SCORE(-5); - break; - case EFFECT_CURSE: - if (IS_BATTLER_OF_TYPE(battlerAtk, TYPE_GHOST)) // Don't use Curse if you're a ghost type vs a Magic Guard user, they'll take no damage. - ADJUST_SCORE(-5); - break; - } + case EFFECT_LEECH_SEED: + ADJUST_SCORE(-5); break; - case ABILITY_WONDER_GUARD: - if (effectiveness < UQ_4_12(2.0)) + case EFFECT_CURSE: + if (IS_BATTLER_OF_TYPE(battlerAtk, TYPE_GHOST)) // Don't use Curse if you're a ghost type vs a Magic Guard user, they'll take no damage. + ADJUST_SCORE(-5); + break; + default: + break; + } + + switch(nonVolatileStatus) + { + case MOVE_EFFECT_POISON: + case MOVE_EFFECT_TOXIC: + case MOVE_EFFECT_BURN: + ADJUST_SCORE(-5); + break; + } + break; + break; + case ABILITY_WONDER_GUARD: + if (effectiveness < UQ_4_12(2.0)) + RETURN_SCORE_MINUS(20); + break; + case ABILITY_JUSTIFIED: + if (moveType == TYPE_DARK && !IsBattleMoveStatus(move) && !IS_TARGETING_PARTNER(battlerAtk, battlerDef)) + RETURN_SCORE_MINUS(10); + break; + case ABILITY_RATTLED: + if (!IsBattleMoveStatus(move) + && (moveType == TYPE_DARK || moveType == TYPE_GHOST || moveType == TYPE_BUG)) + RETURN_SCORE_MINUS(10); + break; + case ABILITY_AROMA_VEIL: + if (IsAromaVeilProtectedEffect(moveEffect)) + RETURN_SCORE_MINUS(10); + break; + case ABILITY_SWEET_VEIL: + if (nonVolatileStatus == MOVE_EFFECT_SLEEP) + RETURN_SCORE_MINUS(10); + break; + case ABILITY_FLOWER_VEIL: + if (IS_BATTLER_OF_TYPE(battlerDef, TYPE_GRASS) && (IsNonVolatileStatusMove(move))) + RETURN_SCORE_MINUS(10); + break; + case ABILITY_MAGIC_BOUNCE: + if (MoveCanBeBouncedBack(move)) + RETURN_SCORE_MINUS(20); + break; + case ABILITY_CONTRARY: + if (IsStatLoweringEffect(moveEffect)) + RETURN_SCORE_MINUS(20); + break; + case ABILITY_COMATOSE: + if (IsNonVolatileStatusMove(move)) + RETURN_SCORE_MINUS(10); + break; + case ABILITY_SHIELDS_DOWN: + if (IsShieldsDownProtected(battlerAtk, aiData->abilities[battlerAtk]) && IsNonVolatileStatusMove(move)) + RETURN_SCORE_MINUS(10); + break; + case ABILITY_LEAF_GUARD: + if ((AI_GetWeather() & B_WEATHER_SUN) + && aiData->holdEffects[battlerDef] != HOLD_EFFECT_UTILITY_UMBRELLA + && IsNonVolatileStatusMove(move)) + RETURN_SCORE_MINUS(10); + break; + } // def ability checks + + // target partner ability checks & not attacking partner + if (isDoubleBattle) + { + switch (aiData->abilities[BATTLE_PARTNER(battlerDef)]) + { + case ABILITY_LIGHTNING_ROD: + if (moveType == TYPE_ELECTRIC && !IsMoveRedirectionPrevented(battlerAtk, move, aiData->abilities[battlerAtk])) RETURN_SCORE_MINUS(20); break; - case ABILITY_JUSTIFIED: - if (moveType == TYPE_DARK && !IsBattleMoveStatus(move)) - RETURN_SCORE_MINUS(10); + case ABILITY_STORM_DRAIN: + if (moveType == TYPE_WATER && !IsMoveRedirectionPrevented(battlerAtk, move, aiData->abilities[battlerAtk])) + RETURN_SCORE_MINUS(20); break; - case ABILITY_RATTLED: - if (!IsBattleMoveStatus(move) - && (moveType == TYPE_DARK || moveType == TYPE_GHOST || moveType == TYPE_BUG)) + case ABILITY_MAGIC_BOUNCE: + if (MoveCanBeBouncedBack(move) && moveTarget & (MOVE_TARGET_BOTH | MOVE_TARGET_FOES_AND_ALLY | MOVE_TARGET_OPPONENTS_FIELD)) + RETURN_SCORE_MINUS(20); + break; + case ABILITY_SWEET_VEIL: + if (nonVolatileStatus == MOVE_EFFECT_SLEEP) + RETURN_SCORE_MINUS(20); + break; + case ABILITY_FLOWER_VEIL: + if ((IS_BATTLER_OF_TYPE(battlerDef, TYPE_GRASS)) && (IsNonVolatileStatusMove(move) || IsStatLoweringEffect(moveEffect))) RETURN_SCORE_MINUS(10); break; case ABILITY_AROMA_VEIL: if (IsAromaVeilProtectedEffect(moveEffect)) RETURN_SCORE_MINUS(10); break; - case ABILITY_SWEET_VEIL: - if (moveEffect == EFFECT_SLEEP || moveEffect == EFFECT_YAWN) - RETURN_SCORE_MINUS(10); - break; - case ABILITY_FLOWER_VEIL: - if (IS_BATTLER_OF_TYPE(battlerDef, TYPE_GRASS) && (IsNonVolatileStatusMoveEffect(moveEffect) || IsStatLoweringEffect(moveEffect))) - RETURN_SCORE_MINUS(10); - break; - case ABILITY_MAGIC_BOUNCE: - if (MoveCanBeBouncedBack(move)) - RETURN_SCORE_MINUS(20); - break; - case ABILITY_CONTRARY: - if (IsStatLoweringEffect(moveEffect)) - RETURN_SCORE_MINUS(20); - break; - case ABILITY_CLEAR_BODY: - case ABILITY_FULL_METAL_BODY: - case ABILITY_WHITE_SMOKE: - if (IsStatLoweringEffect(moveEffect)) - RETURN_SCORE_MINUS(10); - break; - case ABILITY_HYPER_CUTTER: - if ((moveEffect == EFFECT_ATTACK_DOWN || moveEffect == EFFECT_ATTACK_DOWN_2) - && move != MOVE_PLAY_NICE && move != MOVE_NOBLE_ROAR && move != MOVE_TEARFUL_LOOK && move != MOVE_VENOM_DRENCH) - RETURN_SCORE_MINUS(10); - break; - case ABILITY_ILLUMINATE: - if (B_ILLUMINATE_EFFECT < GEN_9) - break; - // fallthrough - case ABILITY_KEEN_EYE: - case ABILITY_MINDS_EYE: - if (moveEffect == EFFECT_ACCURACY_DOWN || moveEffect == EFFECT_ACCURACY_DOWN_2) - RETURN_SCORE_MINUS(10); - break; - case ABILITY_BIG_PECKS: - if (moveEffect == EFFECT_DEFENSE_DOWN || moveEffect == EFFECT_DEFENSE_DOWN_2) - RETURN_SCORE_MINUS(10); - break; - case ABILITY_DEFIANT: - case ABILITY_COMPETITIVE: - if (IsStatLoweringEffect(moveEffect) && !IS_TARGETING_PARTNER(battlerAtk, battlerDef)) - RETURN_SCORE_MINUS(8); - break; - case ABILITY_COMATOSE: - if (IsNonVolatileStatusMoveEffect(moveEffect)) - RETURN_SCORE_MINUS(10); - break; - case ABILITY_SHIELDS_DOWN: - if (IsShieldsDownProtected(battlerAtk, aiData->abilities[battlerAtk]) && IsNonVolatileStatusMoveEffect(moveEffect)) - RETURN_SCORE_MINUS(10); - break; - case ABILITY_LEAF_GUARD: - if ((AI_GetWeather() & B_WEATHER_SUN) - && aiData->holdEffects[battlerDef] != HOLD_EFFECT_UTILITY_UMBRELLA - && IsNonVolatileStatusMoveEffect(moveEffect)) - RETURN_SCORE_MINUS(10); - break; - } // def ability checks - - // target partner ability checks & not attacking partner - if (isDoubleBattle) - { - switch (aiData->abilities[BATTLE_PARTNER(battlerDef)]) - { - case ABILITY_LIGHTNING_ROD: - if (moveType == TYPE_ELECTRIC && !IsMoveRedirectionPrevented(battlerAtk, move, aiData->abilities[battlerAtk])) - RETURN_SCORE_MINUS(20); - break; - case ABILITY_STORM_DRAIN: - if (moveType == TYPE_WATER && !IsMoveRedirectionPrevented(battlerAtk, move, aiData->abilities[battlerAtk])) - RETURN_SCORE_MINUS(20); - break; - case ABILITY_MAGIC_BOUNCE: - if (MoveCanBeBouncedBack(move) && moveTarget & (MOVE_TARGET_BOTH | MOVE_TARGET_FOES_AND_ALLY | MOVE_TARGET_OPPONENTS_FIELD)) - RETURN_SCORE_MINUS(20); - break; - case ABILITY_SWEET_VEIL: - if (moveEffect == EFFECT_SLEEP || moveEffect == EFFECT_YAWN) - RETURN_SCORE_MINUS(20); - break; - case ABILITY_FLOWER_VEIL: - if ((IS_BATTLER_OF_TYPE(battlerDef, TYPE_GRASS)) && (IsNonVolatileStatusMoveEffect(moveEffect) || IsStatLoweringEffect(moveEffect))) - RETURN_SCORE_MINUS(10); - break; - case ABILITY_AROMA_VEIL: - if (IsAromaVeilProtectedEffect(moveEffect)) - RETURN_SCORE_MINUS(10); - break; - } - } // def partner ability checks - } // ignore def ability check + } + } // def partner ability checks // gen7+ dark type mons immune to priority->elevated moves from prankster if (B_PRANKSTER_DARK_TYPES >= GEN_7 && IS_BATTLER_OF_TYPE(battlerDef, TYPE_DARK) @@ -1041,13 +1206,13 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) // terrain & effect checks if (IsBattlerTerrainAffected(battlerDef, STATUS_FIELD_ELECTRIC_TERRAIN)) { - if (moveEffect == EFFECT_SLEEP || moveEffect == EFFECT_YAWN) + if (nonVolatileStatus == MOVE_EFFECT_SLEEP) RETURN_SCORE_MINUS(20); } if (IsBattlerTerrainAffected(battlerDef, STATUS_FIELD_MISTY_TERRAIN)) { - if (IsNonVolatileStatusMoveEffect(moveEffect) || IsConfusionMoveEffect(moveEffect)) + if (IsNonVolatileStatusMove(move) || IsConfusionMoveEffect(moveEffect)) RETURN_SCORE_MINUS(20); } @@ -1060,7 +1225,7 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) // the following checks apply to any target (including user) // throat chop check - if (gDisableStructs[battlerAtk].throatChopTimer && IsSoundMove(move)) + if (gDisableStructs[battlerAtk].throatChopTimer > gBattleTurnCounter && IsSoundMove(move)) return 0; // Can't even select move at all // heal block check if (gStatuses3[battlerAtk] & STATUS3_HEAL_BLOCK && IsHealBlockPreventingMove(battlerAtk, move)) @@ -1078,6 +1243,9 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) case EFFECT_SNOWSCAPE: case EFFECT_SANDSTORM: RETURN_SCORE_MINUS(30); + break; + default: + break; } if (!IsBattleMoveStatus(move)) @@ -1099,19 +1267,13 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) switch (moveEffect) { case EFFECT_HIT: // only applies to Vital Throw - if (GetBattleMovePriority(battlerAtk, move) < 0 && AI_IsFaster(battlerAtk, battlerDef, move) && aiData->hpPercents[battlerAtk] < 40) + if (GetBattleMovePriority(battlerAtk, aiData->abilities[battlerAtk], move) < 0 && AI_IsFaster(battlerAtk, battlerDef, move) && aiData->hpPercents[battlerAtk] < 40) ADJUST_SCORE(-2); // don't want to move last break; default: break; // check move damage - case EFFECT_SLEEP: - if (!AI_CanPutToSleep(battlerAtk, battlerDef, aiData->abilities[battlerDef], move, aiData->partnerMove)) - ADJUST_SCORE(-10); - if (PartnerMoveActivatesSleepClause(aiData->partnerMove)) - ADJUST_SCORE(-20); - break; case EFFECT_EXPLOSION: - if (!(AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_WILL_SUICIDE)) + if (!(gAiThinkingStruct->aiFlags[battlerAtk] & AI_FLAG_WILL_SUICIDE)) ADJUST_SCORE(-2); if (effectiveness == UQ_4_12(0.0)) @@ -1226,6 +1388,8 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) break; case EFFECT_QUIVER_DANCE: case EFFECT_GEOMANCY: + if (HasBattlerSideAbility(battlerDef, ABILITY_UNAWARE, aiData)) + ADJUST_SCORE(-10); if (gBattleMons[battlerAtk].statStages[STAT_SPATK] >= MAX_STAT_STAGE || !HasMoveWithCategory(battlerAtk, DAMAGE_CATEGORY_SPECIAL)) ADJUST_SCORE(-10); else if (!BattlerStatCanRise(battlerAtk, aiData->abilities[battlerAtk], STAT_SPEED)) @@ -1357,47 +1521,40 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) // stat lowering effects case EFFECT_ATTACK_DOWN: case EFFECT_ATTACK_DOWN_2: - if (!ShouldLowerStat(battlerAtk, battlerDef, aiData->abilities[battlerDef], STAT_ATK)) //|| !HasMoveWithCategory(battlerDef, DAMAGE_CATEGORY_PHYSICAL)) - ADJUST_SCORE(-10); - else if (aiData->abilities[battlerDef] == ABILITY_HYPER_CUTTER) + if (!ShouldLowerStat(battlerAtk, battlerDef, abilityDef, STAT_ATK)) //|| !HasMoveWithCategory(battlerDef, DAMAGE_CATEGORY_PHYSICAL)) ADJUST_SCORE(-10); break; case EFFECT_DEFENSE_DOWN: case EFFECT_DEFENSE_DOWN_2: - if (!ShouldLowerStat(battlerAtk, battlerDef, aiData->abilities[battlerDef], STAT_DEF)) + if (!ShouldLowerStat(battlerAtk, battlerDef, abilityDef, STAT_DEF)) ADJUST_SCORE(-10); break; case EFFECT_SPEED_DOWN: case EFFECT_SPEED_DOWN_2: - if (!ShouldLowerStat(battlerAtk, battlerDef, aiData->abilities[battlerDef], STAT_SPEED)) - ADJUST_SCORE(-10); - else if (aiData->abilities[battlerDef] == ABILITY_SPEED_BOOST) + if (!ShouldLowerStat(battlerAtk, battlerDef, abilityDef, STAT_SPEED)) ADJUST_SCORE(-10); break; case EFFECT_SPECIAL_ATTACK_DOWN: case EFFECT_SPECIAL_ATTACK_DOWN_2: - if (!ShouldLowerStat(battlerAtk, battlerDef, aiData->abilities[battlerDef], STAT_SPATK)) //|| !HasMoveWithCategory(battlerDef, DAMAGE_CATEGORY_SPECIAL)) + if (!ShouldLowerStat(battlerAtk, battlerDef, abilityDef, STAT_SPATK)) //|| !HasMoveWithCategory(battlerDef, DAMAGE_CATEGORY_SPECIAL)) ADJUST_SCORE(-10); break; case EFFECT_SPECIAL_DEFENSE_DOWN: case EFFECT_SPECIAL_DEFENSE_DOWN_2: - if (!ShouldLowerStat(battlerAtk, battlerDef, aiData->abilities[battlerDef], STAT_SPDEF)) + if (!ShouldLowerStat(battlerAtk, battlerDef, abilityDef, STAT_SPDEF)) ADJUST_SCORE(-10); break; case EFFECT_ACCURACY_DOWN: case EFFECT_ACCURACY_DOWN_2: - if (!ShouldLowerStat(battlerAtk, battlerDef, aiData->abilities[battlerDef], STAT_ACC)) + if (!ShouldLowerStat(battlerAtk, battlerDef, abilityDef, STAT_ACC)) ADJUST_SCORE(-10); - else if (aiData->abilities[battlerDef] == ABILITY_KEEN_EYE || aiData->abilities[battlerDef] == ABILITY_MINDS_EYE - || (B_ILLUMINATE_EFFECT >= GEN_9 && aiData->abilities[battlerDef] == ABILITY_ILLUMINATE)) - ADJUST_SCORE(-8); break; case EFFECT_EVASION_DOWN: case EFFECT_EVASION_DOWN_2: case EFFECT_TICKLE: - if (!ShouldLowerStat(battlerAtk, battlerDef, aiData->abilities[battlerDef], STAT_ATK)) + if (!ShouldLowerStat(battlerAtk, battlerDef, abilityDef, STAT_ATK)) ADJUST_SCORE(-10); - else if (!ShouldLowerStat(battlerAtk, battlerDef, aiData->abilities[battlerDef], STAT_DEF)) + else if (!ShouldLowerStat(battlerAtk, battlerDef, abilityDef, STAT_DEF)) ADJUST_SCORE(-8); break; case EFFECT_VENOM_DRENCH: @@ -1407,18 +1564,18 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) } else { - if (!ShouldLowerStat(battlerAtk, battlerDef, aiData->abilities[battlerDef], STAT_SPEED)) + if (!ShouldLowerStat(battlerAtk, battlerDef, abilityDef, STAT_SPEED)) ADJUST_SCORE(-10); - else if (!ShouldLowerStat(battlerAtk, battlerDef, aiData->abilities[battlerDef], STAT_SPATK)) + else if (!ShouldLowerStat(battlerAtk, battlerDef, abilityDef, STAT_SPATK)) ADJUST_SCORE(-8); - else if (!ShouldLowerStat(battlerAtk, battlerDef, aiData->abilities[battlerDef], STAT_ATK)) + else if (!ShouldLowerStat(battlerAtk, battlerDef, abilityDef, STAT_ATK)) ADJUST_SCORE(-6); } break; case EFFECT_NOBLE_ROAR: - if (!ShouldLowerStat(battlerAtk, battlerDef, aiData->abilities[battlerDef], STAT_SPATK)) + if (!ShouldLowerStat(battlerAtk, battlerDef, abilityDef, STAT_SPATK)) ADJUST_SCORE(-10); - else if (!ShouldLowerStat(battlerAtk, battlerDef, aiData->abilities[battlerDef], STAT_ATK)) + else if (!ShouldLowerStat(battlerAtk, battlerDef, abilityDef, STAT_ATK)) ADJUST_SCORE(-8); break; case EFFECT_CAPTIVATE: @@ -1452,12 +1609,12 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) if (aiData->abilities[battlerDef] == ABILITY_WONDER_GUARD && effectiveness < UQ_4_12(2.0)) ADJUST_SCORE(-10); if (HasDamagingMove(battlerDef) && !((gBattleMons[battlerAtk].status2 & STATUS2_SUBSTITUTE) - || IsBattlerIncapacitated(battlerDef, aiData->abilities[battlerDef]) + || IsBattlerIncapacitated(battlerDef, abilityDef) || gBattleMons[battlerDef].status2 & (STATUS2_INFATUATION | STATUS2_CONFUSION))) ADJUST_SCORE(-10); - if (HasMoveEffect(battlerAtk, EFFECT_SUBSTITUTE) && !(gBattleMons[battlerAtk].status2 & STATUS2_SUBSTITUTE)) + if (HasMoveWithEffect(battlerAtk, EFFECT_SUBSTITUTE) && !(gBattleMons[battlerAtk].status2 & STATUS2_SUBSTITUTE)) ADJUST_SCORE(-10); - if (HasMoveEffect(battlerAtk, EFFECT_SLEEP) && ! (gBattleMons[battlerDef].status1 & STATUS1_SLEEP)) + if (HasNonVolatileMoveEffect(battlerAtk, MOVE_EFFECT_SLEEP) && ! (gBattleMons[battlerDef].status1 & STATUS1_SLEEP)) ADJUST_SCORE(-10); break; case EFFECT_COUNTER: @@ -1466,7 +1623,7 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) ADJUST_SCORE(-1); 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 + && !(predictedMove == MOVE_NONE && (gAiThinkingStruct->aiFlags[battlerAtk] & AI_FLAG_RISKY))) // Let Risky AI predict blindly based on stats ADJUST_SCORE(-10); break; @@ -1479,14 +1636,9 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) ADJUST_SCORE(-10); break; case EFFECT_TOXIC_THREAD: - if (!ShouldLowerStat(battlerAtk, battlerDef, aiData->abilities[battlerDef], STAT_SPEED)) + if (!ShouldLowerStat(battlerAtk, battlerDef, abilityDef, STAT_SPEED)) ADJUST_SCORE(-1); // may still want to just poison //fallthrough - case EFFECT_POISON: - case EFFECT_TOXIC: - if (!AI_CanPoison(battlerAtk, battlerDef, aiData->abilities[battlerDef], move, aiData->partnerMove)) - ADJUST_SCORE(-10); - break; case EFFECT_LIGHT_SCREEN: if (gSideStatuses[GetBattlerSide(battlerAtk)] & SIDE_STATUS_LIGHTSCREEN || PartnerHasSameMoveEffectWithoutTarget(BATTLE_PARTNER(battlerAtk), move, aiData->partnerMove)) @@ -1526,16 +1678,12 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) if (!AI_CanConfuse(battlerAtk, battlerDef, aiData->abilities[battlerDef], BATTLE_PARTNER(battlerAtk), move, aiData->partnerMove)) ADJUST_SCORE(-10); break; - case EFFECT_PARALYZE: - if (!AI_CanParalyze(battlerAtk, battlerDef, aiData->abilities[battlerDef], move, aiData->partnerMove)) - ADJUST_SCORE(-10); - break; case EFFECT_SUBSTITUTE: if (gBattleMons[battlerAtk].status2 & STATUS2_SUBSTITUTE || aiData->abilities[battlerDef] == ABILITY_INFILTRATOR) ADJUST_SCORE(-8); else if (aiData->hpPercents[battlerAtk] <= 25) ADJUST_SCORE(-10); - else if (HasSubstituteIgnoringMove(battlerDef)) + else if (HasMoveWithFlag(battlerDef, MoveIgnoresSubstitute)) ADJUST_SCORE(-8); break; case EFFECT_SHED_TAIL: @@ -1545,7 +1693,7 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) ADJUST_SCORE(-8); else if (aiData->hpPercents[battlerAtk] <= 50) ADJUST_SCORE(-10); - else if (HasSubstituteIgnoringMove(battlerDef)) + else if (HasMoveWithFlag(battlerDef, MoveIgnoresSubstitute)) ADJUST_SCORE(-8); break; case EFFECT_LEECH_SEED: @@ -1606,7 +1754,9 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) ADJUST_SCORE(-10); // if mon will wake up, is not asleep, or is not comatose break; case EFFECT_MEAN_LOOK: - if (IsBattlerTrapped(battlerDef, TRUE) || DoesPartnerHaveSameMoveEffect(BATTLE_PARTNER(battlerAtk), battlerDef, move, aiData->partnerMove)) + if (AI_CanBattlerEscape(battlerDef) + || IsBattlerTrapped(battlerAtk, battlerDef) + || DoesPartnerHaveSameMoveEffect(BATTLE_PARTNER(battlerAtk), battlerDef, move, aiData->partnerMove)) ADJUST_SCORE(-10); break; case EFFECT_NIGHTMARE: @@ -1766,6 +1916,8 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) break; case EFFECT_BELLY_DRUM: case EFFECT_FILLET_AWAY: + if (HasBattlerSideAbility(battlerDef, ABILITY_UNAWARE, aiData)) + ADJUST_SCORE(-10); if (aiData->abilities[battlerAtk] == ABILITY_CONTRARY) ADJUST_SCORE(-10); else if (aiData->hpPercents[battlerAtk] <= 60) @@ -1814,10 +1966,6 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) if (B_MENTAL_HERB >= GEN_5 && aiData->holdEffects[battlerDef] == HOLD_EFFECT_MENTAL_HERB) ADJUST_SCORE(-6); break; - case EFFECT_WILL_O_WISP: - if (!AI_CanBurn(battlerAtk, battlerDef, aiData->abilities[battlerDef], BATTLE_PARTNER(battlerAtk), move, aiData->partnerMove)) - ADJUST_SCORE(-10); - break; case EFFECT_MEMENTO: if (CountUsablePartyMons(battlerAtk) == 0 || DoesPartnerHaveSameMoveEffect(BATTLE_PARTNER(battlerAtk), battlerDef, move, aiData->partnerMove)) ADJUST_SCORE(-10); @@ -1929,7 +2077,7 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) ADJUST_SCORE(-10); break; case EFFECT_REST: - if (!CanBeSlept(battlerAtk, aiData->abilities[battlerAtk], NOT_BLOCKED_BY_SLEEP_CLAUSE)) + if (!CanBeSlept(battlerAtk, battlerAtk, aiData->abilities[battlerAtk], NOT_BLOCKED_BY_SLEEP_CLAUSE)) ADJUST_SCORE(-10); //fallthrough case EFFECT_RESTORE_HP: @@ -1961,8 +2109,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 - && !(AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_RISKY)) + if (aiData->abilities[battlerAtk] != ABILITY_MAGIC_GUARD && gAiLogicData->moveAccuracy[battlerAtk][battlerDef][gAiThinkingStruct->movesetIndex] < 75 + && !(gAiThinkingStruct->aiFlags[battlerAtk] & AI_FLAG_RISKY)) ADJUST_SCORE(-6); break; case EFFECT_TRANSFORM: @@ -2059,8 +2207,7 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) && move != MOVE_CRAFTY_SHIELD) //These moves have infinite usage { if (GetBattlerSecondaryDamage(battlerAtk) >= gBattleMons[battlerAtk].hp - && aiData->abilities[battlerDef] != ABILITY_MOXIE - && aiData->abilities[battlerDef] != ABILITY_BEAST_BOOST) + && !(IsMoxieTypeAbility(aiData->abilities[battlerDef]))) { ADJUST_SCORE(-10); //Don't protect if you're going to faint after protecting } @@ -2077,7 +2224,7 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) } } - /*if (AI_THINKING_STRUCT->aiFlags[battlerAtk] == AI_SCRIPT_CHECK_BAD_MOVE //Only basic AI + /*if (gAiThinkingStruct->aiFlags[battlerAtk] == AI_SCRIPT_CHECK_BAD_MOVE //Only basic AI && IsDoubleBattle()) //Make the regular AI know how to use Protect minimally in Doubles { u8 shouldProtect = ShouldProtect(battlerAtk, battlerDef, move); @@ -2205,7 +2352,7 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) ADJUST_SCORE(-10); // no teammates to assist from break; case EFFECT_MAGIC_COAT: - if (!HasMagicCoatAffectedMove(battlerDef)) + if (!HasMoveWithFlag(battlerDef, MoveCanBeBouncedBack)) ADJUST_SCORE(-10); break; case EFFECT_YAWN: @@ -2252,8 +2399,8 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) ADJUST_SCORE(-10); break; case EFFECT_SNATCH: - if (!HasSnatchAffectedMove(battlerDef) - || PartnerHasSameMoveEffectWithoutTarget(BATTLE_PARTNER(battlerAtk), move, aiData->partnerMove)) + if (!HasMoveWithFlag(battlerDef, MoveCanBeSnatched) + || PartnerHasSameMoveEffectWithoutTarget(BATTLE_PARTNER(battlerAtk), move, aiData->partnerMove)) ADJUST_SCORE(-10); break; case EFFECT_POWER_TRICK: @@ -2391,7 +2538,7 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) { ADJUST_SCORE(-10); } - else if (!(AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_POWERFUL_STATUS)) + else if (!(gAiThinkingStruct->aiFlags[battlerAtk] & AI_FLAG_POWERFUL_STATUS)) { if (gFieldStatuses & STATUS_FIELD_TRICK_ROOM) // Trick Room Up { @@ -2437,32 +2584,21 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) switch (effect) { case MOVE_EFFECT_BURN: - if (!AI_CanBurn(battlerAtk, battlerDef, BATTLE_PARTNER(battlerAtk), move, aiData->partnerMove)) - ADJUST_SCORE(-10); break; case MOVE_EFFECT_PARALYSIS: - if (!AI_CanParalyze(battlerAtk, battlerDef, aiData->abilities[battlerDef], move, aiData->partnerMove)) - ADJUST_SCORE(-10); break; case MOVE_EFFECT_POISON: - if (!AI_CanPoison(battlerAtk, battlerDef, aiData->abilities[battlerDef], move, aiData->partnerMove)) - ADJUST_SCORE(-10); break; case MOVE_EFFECT_TOXIC: - if (!AI_CanPoison(battlerAtk, battlerDef, aiData->abilities[battlerDef], move, aiData->partnerMove)) - ADJUST_SCORE(-10); break; case MOVE_EFFECT_FREEZE: - if (!CanBeFrozen(battlerDef, TRUE) - || MoveBlockedBySubstitute(move, battlerAtk, battlerDef)) - ADJUST_SCORE(-10); break; }*/ } break; case EFFECT_EMBARGO: if (!IsBattlerItemEnabled(battlerAtk) - || gDisableStructs[battlerDef].embargoTimer != 0 + || gStatuses3[battlerDef] & STATUS3_EMBARGO || PartnerMoveIsSameAsAttacker(BATTLE_PARTNER(battlerAtk), battlerDef, move, aiData->partnerMove)) ADJUST_SCORE(-10); break; @@ -2480,7 +2616,7 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) ADJUST_SCORE(-10); break; case EFFECT_HEAL_BLOCK: - if (gDisableStructs[battlerDef].healBlockTimer != 0 + if (gStatuses3[battlerDef] & STATUS3_HEAL_BLOCK || PartnerMoveIsSameAsAttacker(BATTLE_PARTNER(battlerAtk), battlerDef, move, aiData->partnerMove)) ADJUST_SCORE(-10); break; @@ -2700,13 +2836,50 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) ADJUST_SCORE(-10); break; case EFFECT_UPPER_HAND: - if (predictedMove == MOVE_NONE || IsBattleMoveStatus(predictedMove) || AI_IsSlower(battlerAtk, battlerDef, move) || GetBattleMovePriority(battlerDef, predictedMove) < 1 || GetBattleMovePriority(battlerDef, predictedMove) > 3) // Opponent going first or not using priority move - ADJUST_SCORE(-10); + { + u32 defPrio = GetBattleMovePriority(battlerDef, aiData->abilities[battlerDef], predictedMove); + if (predictedMove == MOVE_NONE + || IsBattleMoveStatus(predictedMove) + || AI_IsSlower(battlerAtk, battlerDef, move) + || defPrio < 1 + || defPrio > 3) // Opponent going first or not using priority move + ADJUST_SCORE(-10); + } break; case EFFECT_PLACEHOLDER: return 0; // cannot even select } // move effect checks + // check non-volatile effects + switch(nonVolatileStatus) + { + case MOVE_EFFECT_POISON: + case MOVE_EFFECT_TOXIC: + if (!AI_CanPoison(battlerAtk, battlerDef, abilityDef, move, aiData->partnerMove)) + ADJUST_SCORE(-10); + if (!ShouldPoison(battlerAtk, battlerDef)) + ADJUST_SCORE(-5); + break; + case MOVE_EFFECT_SLEEP: + if (!AI_CanPutToSleep(battlerAtk, battlerDef, abilityDef, move, aiData->partnerMove)) + ADJUST_SCORE(-10); + if (PartnerMoveActivatesSleepClause(aiData->partnerMove)) + ADJUST_SCORE(-20); + break; + case MOVE_EFFECT_PARALYSIS: + if (!AI_CanParalyze(battlerAtk, battlerDef, aiData->abilities[battlerDef], move, aiData->partnerMove)) + ADJUST_SCORE(-10); + if (!ShouldParalyze(battlerAtk, battlerDef, aiData->abilities[battlerDef])) + ADJUST_SCORE(-5); + break; + case MOVE_EFFECT_BURN: + if (!AI_CanBurn(battlerAtk, battlerDef, aiData->abilities[battlerDef], BATTLE_PARTNER(battlerAtk), move, aiData->partnerMove)) + ADJUST_SCORE(-10); + if (!ShouldBurn(battlerAtk, battlerDef, aiData->abilities[battlerDef])) + ADJUST_SCORE(-5); + break; + } + // Choice items if (HOLD_EFFECT_CHOICE(aiData->holdEffects[battlerAtk]) && IsBattlerItemEnabled(battlerAtk)) { @@ -2718,8 +2891,8 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) // 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))) + || gAiLogicData->mostSuitableMonId[battlerAtk] == PARTY_SIZE + || (!AI_CanBattlerEscape(battlerAtk) && IsBattlerTrapped(battlerDef, battlerAtk)))) ADJUST_SCORE(-30); } @@ -2731,7 +2904,7 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) static s32 AI_TryToFaint(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) { - u32 movesetIndex = AI_THINKING_STRUCT->movesetIndex; + u32 movesetIndex = gAiThinkingStruct->movesetIndex; if (IS_TARGETING_PARTNER(battlerAtk, battlerDef)) return score; @@ -2739,8 +2912,10 @@ static s32 AI_TryToFaint(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) if (IsBattleMoveStatus(move)) return score; // status moves aren't accounted here - if (CanIndexMoveFaintTarget(battlerAtk, battlerDef, movesetIndex, 0) && GetMoveEffect(move) != EFFECT_EXPLOSION) + if (CanIndexMoveFaintTarget(battlerAtk, battlerDef, movesetIndex, AI_ATTACKING) && GetMoveEffect(move) != EFFECT_EXPLOSION) { + if (CanIndexMoveGuaranteeFaintTarget(battlerAtk, battlerDef, movesetIndex)) + ADJUST_SCORE(1); // Bonus point if the KO is guaranteed if (AI_IsFaster(battlerAtk, battlerDef, move)) ADJUST_SCORE(FAST_KILL); else @@ -2748,7 +2923,7 @@ static s32 AI_TryToFaint(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) } else if (CanTargetFaintAi(battlerDef, battlerAtk) && GetWhichBattlerFasterOrTies(battlerAtk, battlerDef, TRUE) != AI_IS_FASTER - && GetBattleMovePriority(battlerAtk, move) > 0) + && GetBattleMovePriority(battlerAtk, gAiLogicData->abilities[battlerAtk], move) > 0) { ADJUST_SCORE(LAST_CHANCE); } @@ -2761,22 +2936,28 @@ static s32 AI_DoubleBattle(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) { // move data u32 moveType = GetMoveType(move); - u32 effect = GetMoveEffect(move); + enum BattleMoveEffects effect = GetMoveEffect(move); u32 moveTarget = GetBattlerMoveTargetType(battlerAtk, move); // ally data u32 battlerAtkPartner = BATTLE_PARTNER(battlerAtk); - struct AiLogicData *aiData = AI_DATA; + struct AiLogicData *aiData = gAiLogicData; u32 atkPartnerAbility = aiData->abilities[BATTLE_PARTNER(battlerAtk)]; u32 atkPartnerHoldEffect = aiData->holdEffects[BATTLE_PARTNER(battlerAtk)]; - u32 partnerEffect = GetMoveEffect(aiData->partnerMove); - bool32 partnerProtecting = (partnerEffect == EFFECT_PROTECT); + enum BattleMoveEffects partnerEffect = GetMoveEffect(aiData->partnerMove); + bool32 partnerProtecting = IsAllyProtectingFromMove(battlerAtk, move, aiData->partnerMove) && !MoveIgnoresProtect(move); bool32 attackerHasBadAbility = (gAbilitiesInfo[aiData->abilities[battlerAtk]].aiRating < 0); bool32 partnerHasBadAbility = (gAbilitiesInfo[atkPartnerAbility].aiRating < 0); - u32 predictedMove = aiData->lastUsedMove[battlerDef]; + u32 predictedMove = GetIncomingMove(battlerAtk, battlerDef, gAiLogicData); SetTypeBeforeUsingMove(move, battlerAtk); moveType = GetBattleMoveType(move); + u32 friendlyFireThreshold = GetFriendlyFireKOThreshold(battlerAtk); + u32 noOfHitsToKOPartner = GetNoOfHitsToKOBattler(battlerAtk, battlerAtkPartner, gAiThinkingStruct->movesetIndex, AI_ATTACKING); + bool32 wouldPartnerFaint = CanIndexMoveFaintTarget(battlerAtk, battlerAtkPartner, gAiThinkingStruct->movesetIndex, AI_ATTACKING) + && !partnerProtecting && IsBattlerAlive(battlerAtkPartner); + bool32 isFriendlyFireOK = !wouldPartnerFaint && (noOfHitsToKOPartner == 0 || noOfHitsToKOPartner > friendlyFireThreshold); + // check what effect partner is using if (aiData->partnerMove != 0) { @@ -2803,6 +2984,8 @@ static s32 AI_DoubleBattle(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) if (IsMoveEffectWeather(move)) ADJUST_SCORE(-10); break; + default: + break; } } // check partner move effect @@ -2825,7 +3008,7 @@ static s32 AI_DoubleBattle(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) { case EFFECT_HELPING_HAND: if (!IsBattlerAlive(battlerAtkPartner) || !HasDamagingMove(battlerAtkPartner)) - ADJUST_SCORE(-5); + ADJUST_SCORE(-20); break; case EFFECT_PERISH_SONG: if (aiData->partnerMove != 0 && HasTrappingMoveEffect(battlerAtkPartner)) @@ -2848,6 +3031,8 @@ static s32 AI_DoubleBattle(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) || HasMoveWithCriticalHitChance(battlerAtkPartner)) ADJUST_SCORE(GOOD_EFFECT); break; + default: + break; } // our effect relative to partner // consider global move effects @@ -2886,11 +3071,107 @@ static s32 AI_DoubleBattle(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) RETURN_SCORE_PLUS(DECENT_EFFECT); // our partner benefits from snow } break; + default: + break; } // global move effect check + // Specific logic for spread moves. + if (moveTarget == MOVE_TARGET_FOES_AND_ALLY) + { + // Don't kill your partner for no reason. + if (wouldPartnerFaint) + { + // If it kills both opponents, that's a good reason. + if (CanIndexMoveFaintTarget(battlerAtk, BATTLE_OPPOSITE(battlerAtk), gAiThinkingStruct->movesetIndex, AI_ATTACKING) + && CanIndexMoveFaintTarget(battlerAtk, BATTLE_OPPOSITE(battlerAtkPartner), gAiThinkingStruct->movesetIndex, AI_ATTACKING)) + { + switch (effect) + { + case EFFECT_EXPLOSION: + if (gAiThinkingStruct->aiFlags[battlerAtk] & (AI_FLAG_RISKY | AI_FLAG_WILL_SUICIDE)) + { + RETURN_SCORE_PLUS(10); + } + break; + default: + RETURN_SCORE_PLUS(10); + break; + } + } + // Both opponents can kill the partner + else if (CanTargetFaintAi(BATTLE_OPPOSITE(battlerAtk), battlerAtkPartner) + && (CanTargetFaintAi(BATTLE_OPPOSITE(battlerAtkPartner), battlerAtkPartner))) + { + // The spread move should kill an opponent. + if (CanIndexMoveFaintTarget(battlerAtk, BATTLE_OPPOSITE(battlerAtk), gAiThinkingStruct->movesetIndex, AI_ATTACKING) + || CanIndexMoveFaintTarget(battlerAtk, BATTLE_OPPOSITE(battlerAtkPartner), gAiThinkingStruct->movesetIndex, AI_ATTACKING)) + { + ADJUST_SCORE(WEAK_EFFECT); + } + + // Alternatively, it benefits from the ally's death, and it will probably die anyway. + if (IsMoxieTypeAbility(aiData->abilities[battlerAtk])) + { + ADJUST_SCORE(GOOD_EFFECT); + } + if ((aiData->abilities[battlerAtk] == ABILITY_RECEIVER) && !partnerHasBadAbility) + { + ADJUST_SCORE(GOOD_EFFECT); + } + if (HasMove(battlerAtk, MOVE_LAST_RESPECTS)) + { + ADJUST_SCORE(GOOD_EFFECT); + } + } + // It can kill one opponent when killing its ally, and its ally is not in extreme danger. + // This is easy for the player to cheese. + else if (CanIndexMoveFaintTarget(battlerAtk, BATTLE_OPPOSITE(battlerAtk), gAiThinkingStruct->movesetIndex, AI_ATTACKING) + || CanIndexMoveFaintTarget(battlerAtk, BATTLE_OPPOSITE(battlerAtkPartner), gAiThinkingStruct->movesetIndex, AI_ATTACKING)) + { + if (gAiThinkingStruct->aiFlags[battlerAtk] & AI_FLAG_WILL_SUICIDE) + { + RETURN_SCORE_PLUS(10); + } + else + { + ADJUST_SCORE(-DECENT_EFFECT); + } + } + // No reason to kill partner has been found. + else + { + RETURN_SCORE_MINUS(10); + } + } + + // Partner will not faint. + else { + + // Triggering your ally's hold item should only be done deliberately with a spread move. + switch (atkPartnerHoldEffect) + { + case HOLD_EFFECT_WEAKNESS_POLICY: + if (aiData->effectiveness[battlerAtk][battlerAtkPartner][gAiThinkingStruct->movesetIndex] >= UQ_4_12(2.0) && isFriendlyFireOK) + { + ADJUST_SCORE(GOOD_EFFECT); + } + break; + default: + break; + } + } + } + // check specific target if (IS_TARGETING_PARTNER(battlerAtk, battlerDef)) { + bool32 isMoveAffectedByPartnerAbility = TRUE; + + if (wouldPartnerFaint) + { + RETURN_SCORE_MINUS(30); + } + // partner ability checks if (!partnerProtecting && moveTarget != MOVE_TARGET_BOTH && !DoesBattlerIgnoreAbilityChecks(battlerAtk, aiData->abilities[battlerAtk], move)) { @@ -2900,95 +3181,241 @@ static s32 AI_DoubleBattle(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) if (MoveAlwaysCrits(move) && BattlerStatCanRise(battlerAtkPartner, atkPartnerAbility, STAT_ATK) && AI_IsFaster(battlerAtk, battlerAtkPartner, move) - && !CanIndexMoveFaintTarget(battlerAtk, battlerAtkPartner, AI_THINKING_STRUCT->movesetIndex, 1)) + && isFriendlyFireOK) { - RETURN_SCORE_PLUS(GOOD_EFFECT); + if (MoveAlwaysCrits(move)) + { + if (moveTarget == MOVE_TARGET_FOES_AND_ALLY) + { + ADJUST_SCORE(DECENT_EFFECT); + } + RETURN_SCORE_PLUS(GOOD_EFFECT); + } + // todo: figuring out a non-guaranteed crit roll that's useful } - break; - case ABILITY_VOLT_ABSORB: - if (!(AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_HP_AWARE)) + else { - RETURN_SCORE_MINUS(10); - } - break; // handled in AI_HPAware - case ABILITY_MOTOR_DRIVE: - if (moveType == TYPE_ELECTRIC && BattlerStatCanRise(battlerAtkPartner, atkPartnerAbility, STAT_SPEED)) - { - RETURN_SCORE_PLUS(WEAK_EFFECT); + isMoveAffectedByPartnerAbility = FALSE; } break; case ABILITY_LIGHTNING_ROD: - if (B_REDIRECT_ABILITY_IMMUNITY >= GEN_5 - && moveType == TYPE_ELECTRIC - && HasMoveWithCategory(battlerAtkPartner, DAMAGE_CATEGORY_SPECIAL) - && BattlerStatCanRise(battlerAtkPartner, atkPartnerAbility, STAT_SPATK)) + case ABILITY_MOTOR_DRIVE: + case ABILITY_VOLT_ABSORB: + if (moveType == TYPE_ELECTRIC) { - RETURN_SCORE_PLUS(WEAK_EFFECT); + if (B_REDIRECT_ABILITY_IMMUNITY < GEN_5 && atkPartnerAbility == ABILITY_LIGHTNING_ROD) + { + RETURN_SCORE_MINUS(10); + } + + if (moveTarget == MOVE_TARGET_FOES_AND_ALLY) + { + ADJUST_SCORE(DECENT_EFFECT); + } + else if (ShouldTriggerAbility(battlerAtkPartner, atkPartnerAbility)) + { + RETURN_SCORE_PLUS(WEAK_EFFECT); + } + else + { + RETURN_SCORE_MINUS(10); + } + } + else + { + isMoveAffectedByPartnerAbility = FALSE; } break; - case ABILITY_WATER_ABSORB: - case ABILITY_DRY_SKIN: case ABILITY_EARTH_EATER: - if (!(AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_HP_AWARE)) + case ABILITY_LEVITATE: + if (moveType == TYPE_GROUND) { - RETURN_SCORE_MINUS(10); + if (moveTarget == MOVE_TARGET_FOES_AND_ALLY) + { + ADJUST_SCORE(DECENT_EFFECT); + } + else if (atkPartnerAbility == ABILITY_EARTH_EATER && !(gAiThinkingStruct->aiFlags[battlerAtk] & AI_FLAG_HP_AWARE)) + { + RETURN_SCORE_MINUS(10); + } + } + else + { + isMoveAffectedByPartnerAbility = FALSE; } break; // handled in AI_HPAware + case ABILITY_DRY_SKIN: + case ABILITY_WATER_ABSORB: case ABILITY_STORM_DRAIN: - if (B_REDIRECT_ABILITY_IMMUNITY >= GEN_5 - && moveType == TYPE_WATER - && HasMoveWithCategory(battlerAtkPartner, DAMAGE_CATEGORY_SPECIAL) - && BattlerStatCanRise(battlerAtkPartner, atkPartnerAbility, STAT_SPATK)) + if (moveType == TYPE_WATER) { - RETURN_SCORE_PLUS(WEAK_EFFECT); + if (B_REDIRECT_ABILITY_IMMUNITY < GEN_5 && atkPartnerAbility == ABILITY_STORM_DRAIN) + { + RETURN_SCORE_MINUS(10); + } + + if (moveTarget == MOVE_TARGET_FOES_AND_ALLY) + { + ADJUST_SCORE(DECENT_EFFECT); + } + else if (ShouldTriggerAbility(battlerAtkPartner, atkPartnerAbility)) + { + RETURN_SCORE_PLUS(WEAK_EFFECT); + } + else + { + RETURN_SCORE_MINUS(10); + } + } + else + { + isMoveAffectedByPartnerAbility = FALSE; } break; case ABILITY_WATER_COMPACTION: - if (moveType == TYPE_WATER && GetNoOfHitsToKOBattler(battlerAtk, battlerDef, AI_THINKING_STRUCT->movesetIndex) >= 4) + if (moveType == TYPE_WATER && isFriendlyFireOK + && ShouldTriggerAbility(battlerAtkPartner, atkPartnerAbility)) { - RETURN_SCORE_PLUS(WEAK_EFFECT); // only mon with this ability is weak to water so only make it okay if we do very little damage + if (moveTarget == MOVE_TARGET_FOES_AND_ALLY) + { + ADJUST_SCORE(DECENT_EFFECT); + } + + if (GetMoveStrikeCount(move) > 1 && effect != EFFECT_DRAGON_DARTS) + { + ADJUST_SCORE(DECENT_EFFECT); + } + } + else + { + isMoveAffectedByPartnerAbility = FALSE; + } + break; + case ABILITY_STEAM_ENGINE: + if (isFriendlyFireOK && (moveType == TYPE_WATER || moveType == TYPE_FIRE) + && ShouldTriggerAbility(battlerAtkPartner, atkPartnerAbility)) + { + if (moveTarget == MOVE_TARGET_FOES_AND_ALLY) + { + ADJUST_SCORE(DECENT_EFFECT); + } + RETURN_SCORE_PLUS(WEAK_EFFECT); + } + else + { + isMoveAffectedByPartnerAbility = FALSE; + } + break; + case ABILITY_THERMAL_EXCHANGE: + if (moveType == TYPE_FIRE && isFriendlyFireOK + && !IsBattleMoveStatus(move) + && ShouldTriggerAbility(battlerAtkPartner, atkPartnerAbility)) + { + if (moveTarget == MOVE_TARGET_FOES_AND_ALLY) + { + ADJUST_SCORE(DECENT_EFFECT); + } + + if (GetMoveStrikeCount(move) > 1 && effect != EFFECT_DRAGON_DARTS) + { + ADJUST_SCORE(WEAK_EFFECT); + } + + RETURN_SCORE_PLUS(WEAK_EFFECT); + } + else + { + isMoveAffectedByPartnerAbility = FALSE; } - RETURN_SCORE_MINUS(10); break; case ABILITY_FLASH_FIRE: - if (moveType == TYPE_FIRE - && HasMoveWithType(battlerAtkPartner, TYPE_FIRE) - && !gDisableStructs[battlerAtkPartner].flashFireBoosted) + case ABILITY_WELL_BAKED_BODY: + if (moveType == TYPE_FIRE) { - RETURN_SCORE_PLUS(WEAK_EFFECT); + if (moveTarget == MOVE_TARGET_FOES_AND_ALLY) + { + ADJUST_SCORE(DECENT_EFFECT); + } + if (ShouldTriggerAbility(battlerAtkPartner, atkPartnerAbility)) + { + RETURN_SCORE_PLUS(WEAK_EFFECT); + } + } + else + { + isMoveAffectedByPartnerAbility = FALSE; } break; case ABILITY_SAP_SIPPER: - if (moveType == TYPE_GRASS - && HasMoveWithCategory(battlerAtkPartner, DAMAGE_CATEGORY_PHYSICAL) - && BattlerStatCanRise(battlerAtkPartner, atkPartnerAbility, STAT_ATK)) + if (moveType == TYPE_GRASS) { - RETURN_SCORE_PLUS(WEAK_EFFECT); + if (moveTarget == MOVE_TARGET_FOES_AND_ALLY) + { + ADJUST_SCORE(DECENT_EFFECT); + } + + if (ShouldTriggerAbility(battlerAtkPartner, atkPartnerAbility)) + { + RETURN_SCORE_PLUS(WEAK_EFFECT); + } + } + else + { + isMoveAffectedByPartnerAbility = FALSE; } break; case ABILITY_JUSTIFIED: - if (moveType == TYPE_DARK + if (moveType == TYPE_DARK && isFriendlyFireOK && !IsBattleMoveStatus(move) - && HasMoveWithCategory(battlerAtkPartner, DAMAGE_CATEGORY_PHYSICAL) - && BattlerStatCanRise(battlerAtkPartner, atkPartnerAbility, STAT_ATK) - && !CanIndexMoveFaintTarget(battlerAtk, battlerAtkPartner, AI_THINKING_STRUCT->movesetIndex, 1)) + && ShouldTriggerAbility(battlerAtkPartner, atkPartnerAbility)) { - RETURN_SCORE_PLUS(WEAK_EFFECT); + if (moveTarget == MOVE_TARGET_FOES_AND_ALLY) + { + ADJUST_SCORE(GOOD_EFFECT); + } + + if (GetMoveStrikeCount(move) > 1 && effect != EFFECT_DRAGON_DARTS) + { + ADJUST_SCORE(WEAK_EFFECT); + } + + ADJUST_SCORE(WEAK_EFFECT); // Beat Up is handled later + } + else + { + isMoveAffectedByPartnerAbility = FALSE; } break; case ABILITY_RATTLED: - if (!IsBattleMoveStatus(move) + if (!IsBattleMoveStatus(move) && isFriendlyFireOK && (moveType == TYPE_DARK || moveType == TYPE_GHOST || moveType == TYPE_BUG) - && BattlerStatCanRise(battlerAtkPartner, atkPartnerAbility, STAT_SPEED) - && !CanIndexMoveFaintTarget(battlerAtk, battlerAtkPartner, AI_THINKING_STRUCT->movesetIndex, 1)) + && ShouldTriggerAbility(battlerAtkPartner, atkPartnerAbility)) { + if (moveTarget == MOVE_TARGET_FOES_AND_ALLY) + { + ADJUST_SCORE(DECENT_EFFECT); + } RETURN_SCORE_PLUS(WEAK_EFFECT); } + else + { + isMoveAffectedByPartnerAbility = FALSE; + } break; case ABILITY_CONTRARY: - if (IsStatLoweringEffect(effect)) + case ABILITY_DEFIANT: + case ABILITY_COMPETITIVE: + if (IsStatLoweringEffect(effect) && isFriendlyFireOK && ShouldTriggerAbility(battlerAtkPartner, atkPartnerAbility)) { - RETURN_SCORE_PLUS(DECENT_EFFECT); + if (moveTarget == MOVE_TARGET_FOES_AND_ALLY) + { + ADJUST_SCORE(GOOD_EFFECT); + } + RETURN_SCORE_PLUS(WEAK_EFFECT); + } + else + { + isMoveAffectedByPartnerAbility = FALSE; } break; } @@ -2997,6 +3424,11 @@ static s32 AI_DoubleBattle(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) // attacker move effects specifically targeting partner if (!partnerProtecting) { + if (wouldPartnerFaint) + { + RETURN_SCORE_MINUS(30); + } + switch (effect) { case EFFECT_SPICY_EXTRACT: @@ -3034,11 +3466,16 @@ static s32 AI_DoubleBattle(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) case EFFECT_BEAT_UP: if (atkPartnerAbility == ABILITY_JUSTIFIED && moveType == TYPE_DARK + && !DoesBattlerIgnoreAbilityChecks(battlerAtk, aiData->abilities[battlerAtk], move) && !IsBattleMoveStatus(move) && HasMoveWithCategory(battlerAtkPartner, DAMAGE_CATEGORY_PHYSICAL) && BattlerStatCanRise(battlerAtkPartner, atkPartnerAbility, STAT_ATK) - && !CanIndexMoveFaintTarget(battlerAtk, battlerAtkPartner, AI_THINKING_STRUCT->movesetIndex, 0)) + && !wouldPartnerFaint) { + if (isFriendlyFireOK) + { + ADJUST_SCORE(DECENT_EFFECT); + } RETURN_SCORE_PLUS(WEAK_EFFECT); } break; @@ -3127,10 +3564,17 @@ static s32 AI_DoubleBattle(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) && gBattleMons[battlerAtkPartner].hp < gBattleMons[battlerAtkPartner].maxHP / 2) RETURN_SCORE_PLUS(WEAK_EFFECT); break; + default: + break; } // attacker move effects } // check partner protecting - ADJUST_SCORE(-30); // otherwise, don't target partner + if ((isMoveAffectedByPartnerAbility && (score <= AI_SCORE_DEFAULT)) || !isMoveAffectedByPartnerAbility) + { + RETURN_SCORE_MINUS(10); + } + + } else // checking opponent { @@ -3143,6 +3587,8 @@ static s32 AI_DoubleBattle(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) else if (IsAbilityOfRating(aiData->abilities[battlerAtk], 0) || IsAbilityOfRating(aiData->abilities[battlerDef], 10)) ADJUST_SCORE(DECENT_EFFECT); // we want to transfer our bad ability or take their awesome ability break; + default: + break; } // lightning rod, flash fire against enemy handled in AI_CheckBadMove @@ -3151,7 +3597,7 @@ static s32 AI_DoubleBattle(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) return score; } -static bool32 IsPinchBerryItemEffect(u32 holdEffect) +static bool32 IsPinchBerryItemEffect(enum ItemHoldEffect holdEffect) { switch (holdEffect) { @@ -3165,15 +3611,15 @@ static bool32 IsPinchBerryItemEffect(u32 holdEffect) case HOLD_EFFECT_CUSTAP_BERRY: case HOLD_EFFECT_MICLE_BERRY: return TRUE; + default: + return FALSE; } - - return FALSE; } static s32 CompareMoveAccuracies(u32 battlerAtk, u32 battlerDef, u32 moveSlot1, u32 moveSlot2) { - u32 acc1 = AI_DATA->moveAccuracy[battlerAtk][battlerDef][moveSlot1]; - u32 acc2 = AI_DATA->moveAccuracy[battlerAtk][battlerDef][moveSlot2]; + u32 acc1 = gAiLogicData->moveAccuracy[battlerAtk][battlerDef][moveSlot1]; + u32 acc2 = gAiLogicData->moveAccuracy[battlerAtk][battlerDef][moveSlot2]; if (acc1 > acc2) return 1; @@ -3185,13 +3631,14 @@ static s32 CompareMoveAccuracies(u32 battlerAtk, u32 battlerDef, u32 moveSlot1, static inline bool32 ShouldUseSpreadDamageMove(u32 battlerAtk, u32 move, u32 moveIndex, u32 hitsToFaintOpposingBattler) { u32 partnerBattler = BATTLE_PARTNER(battlerAtk); - u32 noOfHitsToFaintPartner = GetNoOfHitsToKOBattler(battlerAtk, partnerBattler, moveIndex); + u32 noOfHitsToFaintPartner = GetNoOfHitsToKOBattler(battlerAtk, partnerBattler, moveIndex, AI_ATTACKING); + u32 friendlyFireThreshold = GetFriendlyFireKOThreshold(battlerAtk); return (IsDoubleBattle() && noOfHitsToFaintPartner != 0 // Immunity check && IsBattlerAlive(partnerBattler) && GetBattlerMoveTargetType(battlerAtk, move) == MOVE_TARGET_FOES_AND_ALLY - && !(noOfHitsToFaintPartner < 4 && hitsToFaintOpposingBattler == 1) - && noOfHitsToFaintPartner < 7); + && !(noOfHitsToFaintPartner < friendlyFireThreshold && hitsToFaintOpposingBattler == 1) + && noOfHitsToFaintPartner < (friendlyFireThreshold * 2)); } static s32 AI_CompareDamagingMoves(u32 battlerAtk, u32 battlerDef, u32 currId) @@ -3210,7 +3657,7 @@ static s32 AI_CompareDamagingMoves(u32 battlerAtk, u32 battlerDef, u32 currId) { if (moves[i] != MOVE_NONE && GetMovePower(moves[i]) != 0) { - noOfHits[i] = GetNoOfHitsToKOBattler(battlerAtk, battlerDef, i); + noOfHits[i] = GetNoOfHitsToKOBattler(battlerAtk, battlerDef, i, AI_ATTACKING); if (ShouldUseSpreadDamageMove(battlerAtk,moves[i], i, noOfHits[i])) { noOfHits[i] = -1; @@ -3230,9 +3677,6 @@ static s32 AI_CompareDamagingMoves(u32 battlerAtk, u32 battlerDef, u32 currId) viableMoveScores[i] = 0; isTwoTurnNotSemiInvulnerableMove[i] = FALSE; } - /* - Test_MgbaPrintf("%S: required hits: %d Dmg: %d", gMoveNames[moves[i]], noOfHits[i], AI_DATA->simulatedDmg[battlerAtk][battlerDef][i]); - */ } // Priority list: @@ -3299,8 +3743,8 @@ static s32 AI_CompareDamagingMoves(u32 battlerAtk, u32 battlerDef, u32 currId) static u32 AI_CalcHoldEffectMoveScore(u32 battlerAtk, u32 battlerDef, u32 move) { - struct AiLogicData *aiData = AI_DATA; - u32 holdEffect = aiData->holdEffects[battlerAtk]; + struct AiLogicData *aiData = gAiLogicData; + enum ItemHoldEffect holdEffect = aiData->holdEffects[battlerAtk]; s32 score = 0; @@ -3308,7 +3752,7 @@ static u32 AI_CalcHoldEffectMoveScore(u32 battlerAtk, u32 battlerDef, u32 move) { case HOLD_EFFECT_BLUNDER_POLICY: { - u32 moveAcc = aiData->moveAccuracy[battlerAtk][battlerDef][AI_THINKING_STRUCT->movesetIndex]; + u32 moveAcc = aiData->moveAccuracy[battlerAtk][battlerDef][gAiThinkingStruct->movesetIndex]; if (moveAcc <= LOW_ACCURACY_THRESHOLD) { @@ -3320,6 +3764,8 @@ static u32 AI_CalcHoldEffectMoveScore(u32 battlerAtk, u32 battlerDef, u32 move) } } break; + default: + break; } return score; @@ -3328,13 +3774,13 @@ static u32 AI_CalcHoldEffectMoveScore(u32 battlerAtk, u32 battlerDef, u32 move) static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move) { // move data - u32 moveEffect = GetMoveEffect(move); - struct AiLogicData *aiData = AI_DATA; - u32 movesetIndex = AI_THINKING_STRUCT->movesetIndex; + enum BattleMoveEffects moveEffect = GetMoveEffect(move); + struct AiLogicData *aiData = gAiLogicData; + u32 movesetIndex = gAiThinkingStruct->movesetIndex; uq4_12_t effectiveness = aiData->effectiveness[battlerAtk][battlerDef][movesetIndex]; s32 score = 0; - u32 predictedMove = aiData->lastUsedMove[battlerDef]; + u32 predictedMove = GetIncomingMove(battlerAtk, battlerDef, gAiLogicData); u32 predictedType = GetMoveType(predictedMove); u32 predictedMoveSlot = GetMoveSlot(GetMovesArray(battlerDef), predictedMove); bool32 isDoubleBattle = IsValidDoubleBattle(battlerAtk); @@ -3345,7 +3791,7 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move) moveEffect = EFFECT_PROTECT; // check status move preference - if (AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_PREFER_STATUS_MOVES && IsBattleMoveStatus(move) && effectiveness != UQ_4_12(0.0)) + if (gAiThinkingStruct->aiFlags[battlerAtk] & AI_FLAG_PREFER_STATUS_MOVES && IsBattleMoveStatus(move) && effectiveness != UQ_4_12(0.0)) ADJUST_SCORE(10); // check thawing moves @@ -3353,17 +3799,33 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move) ADJUST_SCORE(10); // check burn / frostbite - if (AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_SMART_SWITCHING && AI_DATA->abilities[battlerAtk] == ABILITY_NATURAL_CURE) + if (gAiThinkingStruct->aiFlags[battlerAtk] & AI_FLAG_SMART_SWITCHING && gAiLogicData->abilities[battlerAtk] == ABILITY_NATURAL_CURE) { if ((gBattleMons[battlerAtk].status1 & STATUS1_BURN && HasOnlyMovesWithCategory(battlerAtk, DAMAGE_CATEGORY_PHYSICAL, TRUE)) || (gBattleMons[battlerAtk].status1 & STATUS1_FROSTBITE && HasOnlyMovesWithCategory(battlerAtk, DAMAGE_CATEGORY_SPECIAL, TRUE))) ADJUST_SCORE(-20); // Force switch if all your attacking moves are physical and you have Natural Cure. } + // Non-volatile statuses + switch(GetMoveNonVolatileStatus(move)) + { + case MOVE_EFFECT_POISON: + case MOVE_EFFECT_TOXIC: + IncreasePoisonScore(battlerAtk, battlerDef, move, &score); + break; + case MOVE_EFFECT_SLEEP: + IncreaseSleepScore(battlerAtk, battlerDef, move, &score); + break; + case MOVE_EFFECT_PARALYSIS: + IncreaseParalyzeScore(battlerAtk, battlerDef, move, &score); + break; + case MOVE_EFFECT_BURN: + IncreaseBurnScore(battlerAtk, battlerDef, move, &score); + break; + } // move effect checks switch (moveEffect) { - case EFFECT_SLEEP: case EFFECT_YAWN: IncreaseSleepScore(battlerAtk, battlerDef, move, &score); break; @@ -3379,14 +3841,14 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move) break; case EFFECT_EXPLOSION: case EFFECT_MEMENTO: - if (AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_WILL_SUICIDE && gBattleMons[battlerDef].statStages[STAT_EVASION] < 7) + if (gAiThinkingStruct->aiFlags[battlerAtk] & AI_FLAG_WILL_SUICIDE && gBattleMons[battlerDef].statStages[STAT_EVASION] < 7) { if (aiData->hpPercents[battlerAtk] < 50 && AI_RandLessThan(128)) ADJUST_SCORE(DECENT_EFFECT); } break; case EFFECT_FINAL_GAMBIT: - if (AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_WILL_SUICIDE) + if (gAiThinkingStruct->aiFlags[battlerAtk] & AI_FLAG_WILL_SUICIDE) ADJUST_SCORE(DECENT_EFFECT); break; case EFFECT_MIRROR_MOVE: @@ -3586,7 +4048,7 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move) break; } - if (ShouldRecover(battlerAtk, battlerDef, move, healPercent)) + if (ShouldRecover(battlerAtk, battlerDef, move, healPercent, AI_DEFENDING)) ADJUST_SCORE(DECENT_EFFECT); } break; @@ -3596,13 +4058,9 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move) case EFFECT_MORNING_SUN: case EFFECT_SYNTHESIS: case EFFECT_MOONLIGHT: - if (ShouldRecover(battlerAtk, battlerDef, move, 50)) + if (ShouldRecover(battlerAtk, battlerDef, move, 50, AI_DEFENDING)) ADJUST_SCORE(GOOD_EFFECT); break; - case EFFECT_TOXIC: - case EFFECT_POISON: - IncreasePoisonScore(battlerAtk, battlerDef, move, &score); - break; case EFFECT_LIGHT_SCREEN: case EFFECT_REFLECT: case EFFECT_AURORA_VEIL: @@ -3614,16 +4072,16 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move) } break; case EFFECT_REST: - if (!(CanBeSlept(battlerAtk, aiData->abilities[battlerAtk], NOT_BLOCKED_BY_SLEEP_CLAUSE))) + if (!(CanBeSlept(battlerAtk, battlerAtk, aiData->abilities[battlerAtk], NOT_BLOCKED_BY_SLEEP_CLAUSE))) { break; } - else if (ShouldRecover(battlerAtk, battlerDef, move, 100)) + else if (ShouldRecover(battlerAtk, battlerDef, move, 100, AI_DEFENDING)) { if (aiData->holdEffects[battlerAtk] == HOLD_EFFECT_CURE_SLP || aiData->holdEffects[battlerAtk] == HOLD_EFFECT_CURE_STATUS - || HasMoveEffect(EFFECT_SLEEP_TALK, battlerAtk) - || HasMoveEffect(EFFECT_SNORE, battlerAtk) + || HasMoveWithEffect(EFFECT_SLEEP_TALK, battlerAtk) + || HasMoveWithEffect(EFFECT_SNORE, battlerAtk) || aiData->abilities[battlerAtk] == ABILITY_SHED_SKIN || aiData->abilities[battlerAtk] == ABILITY_EARLY_BIRD || (AI_GetWeather() & B_WEATHER_RAIN && gWishFutureKnock.weatherDuration != 1 && aiData->abilities[battlerAtk] == ABILITY_HYDRATION && aiData->holdEffects[battlerAtk] != HOLD_EFFECT_UTILITY_UMBRELLA)) @@ -3643,17 +4101,14 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move) case EFFECT_FOCUS_ENERGY: case EFFECT_LASER_FOCUS: if (aiData->abilities[battlerAtk] == ABILITY_SUPER_LUCK - || aiData->abilities[battlerAtk] == ABILITY_SNIPER - || aiData->holdEffects[battlerAtk] == HOLD_EFFECT_SCOPE_LENS - || HasHighCritRatioMove(battlerAtk)) + || aiData->abilities[battlerAtk] == ABILITY_SNIPER + || aiData->holdEffects[battlerAtk] == HOLD_EFFECT_SCOPE_LENS + || HasMoveWithFlag(battlerAtk, GetMoveCriticalHitStage)) ADJUST_SCORE(GOOD_EFFECT); break; case EFFECT_CONFUSE: IncreaseConfusionScore(battlerAtk, battlerDef, move, &score); break; - case EFFECT_PARALYZE: - IncreaseParalyzeScore(battlerAtk, battlerDef, move, &score); - break; case EFFECT_SUBSTITUTE: case EFFECT_SHED_TAIL: ADJUST_SCORE(IncreaseSubstituteMoveScore(battlerAtk, battlerDef, move)); @@ -3668,12 +4123,13 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move) case EFFECT_LEECH_SEED: if (IS_BATTLER_OF_TYPE(battlerDef, TYPE_GRASS) || gStatuses3[battlerDef] & STATUS3_LEECHSEED - || HasMoveEffect(battlerDef, EFFECT_RAPID_SPIN) + || HasMoveWithEffect(battlerDef, EFFECT_RAPID_SPIN) || aiData->abilities[battlerDef] == ABILITY_LIQUID_OOZE || aiData->abilities[battlerDef] == ABILITY_MAGIC_GUARD) break; ADJUST_SCORE(GOOD_EFFECT); - if (!HasDamagingMove(battlerDef) || IsBattlerTrapped(battlerDef, FALSE) + if (!HasDamagingMove(battlerDef) + || (!AI_CanBattlerEscape(battlerDef) && IsBattlerTrapped(battlerAtk, battlerDef)) || aiData->holdEffects[battlerAtk] == HOLD_EFFECT_BIG_ROOT) ADJUST_SCORE(DECENT_EFFECT); break; @@ -3684,7 +4140,7 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move) //todo - check z splash, z celebrate, z happy hour (lol) break; case EFFECT_TELEPORT: // Either remove or add better logic - if (!(gBattleTypeFlags & BATTLE_TYPE_TRAINER) || GetBattlerSide(battlerAtk) != B_SIDE_PLAYER) + if (!(gBattleTypeFlags & BATTLE_TYPE_TRAINER) || !IsOnPlayerSide(battlerAtk)) break; //fallthrough case EFFECT_HIT_ESCAPE: @@ -3714,7 +4170,7 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move) } break; case EFFECT_BATON_PASS: - if ((AI_DATA->shouldSwitch & (1u << battlerAtk)) && (gBattleMons[battlerAtk].status2 & STATUS2_SUBSTITUTE + if ((gAiLogicData->shouldSwitch & (1u << battlerAtk)) && (gBattleMons[battlerAtk].status2 & STATUS2_SUBSTITUTE || (gStatuses3[battlerAtk] & (STATUS3_ROOTED | STATUS3_AQUA_RING | STATUS3_MAGNET_RISE | STATUS3_POWER_TRICK)) || AnyStatIsRaised(battlerAtk))) ADJUST_SCORE(BEST_EFFECT); @@ -3733,20 +4189,32 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move) } break; case EFFECT_ENCORE: + { if (GetActiveGimmick(battlerDef) == GIMMICK_DYNAMAX) break; - else if (gDisableStructs[battlerDef].encoreTimer == 0 + + bool32 encourage = gBattleMoveEffects[GetMoveEffect(gLastMoves[battlerDef])].encourageEncore; + + switch(GetMoveNonVolatileStatus(gLastMoves[battlerDef])) + { + case MOVE_EFFECT_POISON: + case MOVE_EFFECT_PARALYSIS: + encourage = TRUE; + break; + } + if (gDisableStructs[battlerDef].encoreTimer == 0 && (B_MENTAL_HERB < GEN_5 || aiData->holdEffects[battlerDef] != HOLD_EFFECT_MENTAL_HERB) - && (gBattleMoveEffects[GetMoveEffect(gLastMoves[battlerDef])].encourageEncore)) + && (encourage)) ADJUST_SCORE(BEST_EFFECT); break; + } case EFFECT_SLEEP_TALK: case EFFECT_SNORE: if (!IsWakeupTurn(battlerAtk) && gBattleMons[battlerAtk].status1 & STATUS1_SLEEP) ADJUST_SCORE(BEST_EFFECT); break; case EFFECT_LOCK_ON: - if (HasMoveEffect(battlerAtk, EFFECT_OHKO)) + if (HasMoveWithEffect(battlerAtk, EFFECT_OHKO)) ADJUST_SCORE(GOOD_EFFECT); else if (HasMoveWithLowAccuracy(battlerAtk, battlerDef, 85, TRUE, aiData->abilities[battlerAtk], aiData->abilities[battlerDef], aiData->holdEffects[battlerAtk], aiData->holdEffects[battlerDef])) ADJUST_SCORE(GOOD_EFFECT); @@ -3768,7 +4236,7 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move) case EFFECT_CURSE: if (IS_BATTLER_OF_TYPE(battlerAtk, TYPE_GHOST)) { - if (IsBattlerTrapped(battlerDef, TRUE)) + if (!AI_CanBattlerEscape(battlerDef) && IsBattlerTrapped(battlerAtk, battlerDef)) ADJUST_SCORE(GOOD_EFFECT); else ADJUST_SCORE(WEAK_EFFECT); @@ -3830,7 +4298,7 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move) && IsPinchBerryItemEffect(aiData->holdEffects[battlerAtk])) ADJUST_SCORE(GOOD_EFFECT); else if ((gBattleMons[battlerAtk].hp > 1) // Only spam endure for Flail/Reversal if you're not at Min Health - && (HasMoveEffect(battlerAtk, EFFECT_FLAIL) || HasMoveEffect(battlerAtk, EFFECT_ENDEAVOR))) + && (HasMoveWithEffect(battlerAtk, EFFECT_FLAIL) || HasMoveWithEffect(battlerAtk, EFFECT_ENDEAVOR))) ADJUST_SCORE(GOOD_EFFECT); } break; @@ -3861,7 +4329,7 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move) ADJUST_SCORE(DECENT_EFFECT); break; case EFFECT_PERISH_SONG: - if (IsBattlerTrapped(battlerDef, TRUE)) + if (!AI_CanBattlerEscape(battlerDef) && IsBattlerTrapped(battlerAtk, battlerDef)) ADJUST_SCORE(GOOD_EFFECT); break; case EFFECT_SANDSTORM: @@ -3870,41 +4338,41 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move) ADJUST_SCORE(DECENT_EFFECT); if (aiData->holdEffects[battlerAtk] == HOLD_EFFECT_SMOOTH_ROCK) ADJUST_SCORE(WEAK_EFFECT); - if (HasMoveEffect(battlerDef, EFFECT_MORNING_SUN) - || HasMoveEffect(battlerDef, EFFECT_SYNTHESIS) - || HasMoveEffect(battlerDef, EFFECT_MOONLIGHT)) + if (HasMoveWithEffect(battlerDef, EFFECT_MORNING_SUN) + || HasMoveWithEffect(battlerDef, EFFECT_SYNTHESIS) + || HasMoveWithEffect(battlerDef, EFFECT_MOONLIGHT)) ADJUST_SCORE(WEAK_EFFECT); } break; case EFFECT_HAIL: if (ShouldSetHail(battlerAtk, aiData->abilities[battlerAtk], aiData->holdEffects[battlerAtk])) { - if ((HasMoveEffect(battlerAtk, EFFECT_AURORA_VEIL) || HasMoveEffect(BATTLE_PARTNER(battlerAtk), EFFECT_AURORA_VEIL)) + if ((HasMoveWithEffect(battlerAtk, EFFECT_AURORA_VEIL) || HasMoveWithEffect(BATTLE_PARTNER(battlerAtk), EFFECT_AURORA_VEIL)) && ShouldSetScreen(battlerAtk, battlerDef, EFFECT_AURORA_VEIL)) ADJUST_SCORE(GOOD_EFFECT); ADJUST_SCORE(DECENT_EFFECT); if (aiData->holdEffects[battlerAtk] == HOLD_EFFECT_ICY_ROCK) ADJUST_SCORE(WEAK_EFFECT); - if (HasMoveEffect(battlerDef, EFFECT_MORNING_SUN) - || HasMoveEffect(battlerDef, EFFECT_SYNTHESIS) - || HasMoveEffect(battlerDef, EFFECT_MOONLIGHT)) + if (HasMoveWithEffect(battlerDef, EFFECT_MORNING_SUN) + || HasMoveWithEffect(battlerDef, EFFECT_SYNTHESIS) + || HasMoveWithEffect(battlerDef, EFFECT_MOONLIGHT)) ADJUST_SCORE(WEAK_EFFECT); } break; case EFFECT_SNOWSCAPE: if (ShouldSetSnow(battlerAtk, aiData->abilities[battlerAtk], aiData->holdEffects[battlerAtk])) { - if ((HasMoveEffect(battlerAtk, EFFECT_AURORA_VEIL) || HasMoveEffect(BATTLE_PARTNER(battlerAtk), EFFECT_AURORA_VEIL)) + if ((HasMoveWithEffect(battlerAtk, EFFECT_AURORA_VEIL) || HasMoveWithEffect(BATTLE_PARTNER(battlerAtk), EFFECT_AURORA_VEIL)) && ShouldSetScreen(battlerAtk, battlerDef, EFFECT_AURORA_VEIL)) ADJUST_SCORE(GOOD_EFFECT); ADJUST_SCORE(DECENT_EFFECT); if (aiData->holdEffects[battlerAtk] == HOLD_EFFECT_ICY_ROCK) ADJUST_SCORE(WEAK_EFFECT); - if (HasMoveEffect(battlerDef, EFFECT_MORNING_SUN) - || HasMoveEffect(battlerDef, EFFECT_SYNTHESIS) - || HasMoveEffect(battlerDef, EFFECT_MOONLIGHT)) + if (HasMoveWithEffect(battlerDef, EFFECT_MORNING_SUN) + || HasMoveWithEffect(battlerDef, EFFECT_SYNTHESIS) + || HasMoveWithEffect(battlerDef, EFFECT_MOONLIGHT)) ADJUST_SCORE(WEAK_EFFECT); } break; @@ -3914,10 +4382,10 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move) ADJUST_SCORE(DECENT_EFFECT); if (aiData->holdEffects[battlerAtk] == HOLD_EFFECT_DAMP_ROCK) ADJUST_SCORE(WEAK_EFFECT); - if (HasMoveEffect(battlerDef, EFFECT_MORNING_SUN) - || HasMoveEffect(battlerDef, EFFECT_SYNTHESIS) - || HasMoveEffect(battlerDef, EFFECT_SOLAR_BEAM) - || HasMoveEffect(battlerDef, EFFECT_MOONLIGHT)) + if (HasMoveWithEffect(battlerDef, EFFECT_MORNING_SUN) + || HasMoveWithEffect(battlerDef, EFFECT_SYNTHESIS) + || HasMoveWithEffect(battlerDef, EFFECT_SOLAR_BEAM) + || HasMoveWithEffect(battlerDef, EFFECT_MOONLIGHT)) ADJUST_SCORE(WEAK_EFFECT); if (HasMoveWithType(battlerDef, TYPE_FIRE) || HasMoveWithType(BATTLE_PARTNER(battlerDef), TYPE_FIRE)) ADJUST_SCORE(WEAK_EFFECT); @@ -3931,14 +4399,14 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move) ADJUST_SCORE(WEAK_EFFECT); if (HasMoveWithType(battlerDef, TYPE_WATER) || HasMoveWithType(BATTLE_PARTNER(battlerDef), TYPE_WATER)) ADJUST_SCORE(WEAK_EFFECT); - if (HasMoveEffect(battlerDef, EFFECT_THUNDER) || HasMoveEffect(BATTLE_PARTNER(battlerDef), EFFECT_THUNDER)) + if (HasMoveWithFlag(battlerDef, MoveHas50AccuracyInSun) || HasMoveWithFlag(BATTLE_PARTNER(battlerDef), MoveHas50AccuracyInSun)) ADJUST_SCORE(WEAK_EFFECT); } break; case EFFECT_FELL_STINGER: if (gBattleMons[battlerAtk].statStages[STAT_ATK] < MAX_STAT_STAGE && aiData->abilities[battlerAtk] != ABILITY_CONTRARY - && CanIndexMoveFaintTarget(battlerAtk, battlerDef, movesetIndex, 0)) + && CanIndexMoveFaintTarget(battlerAtk, battlerDef, movesetIndex, AI_ATTACKING)) ADJUST_SCORE(BEST_EFFECT); break; case EFFECT_BELLY_DRUM: @@ -3954,7 +4422,7 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move) case EFFECT_SEMI_INVULNERABLE: if (predictedMove != MOVE_NONE && !isDoubleBattle) { - u32 predictedEffect = GetMoveEffect(predictedMove); + enum BattleMoveEffects predictedEffect = GetMoveEffect(predictedMove); if ((AI_IsFaster(battlerAtk, battlerDef, move)) && (predictedEffect == EFFECT_EXPLOSION || predictedEffect == EFFECT_PROTECT)) ADJUST_SCORE(GOOD_EFFECT); @@ -3963,29 +4431,29 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move) } break; case EFFECT_DEFENSE_CURL: - if (HasMoveEffect(battlerAtk, EFFECT_ROLLOUT) && !(gBattleMons[battlerAtk].status2 & STATUS2_DEFENSE_CURL)) + if (HasMoveWithEffect(battlerAtk, EFFECT_ROLLOUT) && !(gBattleMons[battlerAtk].status2 & STATUS2_DEFENSE_CURL)) ADJUST_SCORE(DECENT_EFFECT); 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)) ADJUST_SCORE(GOOD_EFFECT); - else if (gDisableStructs[battlerAtk].isFirstTurn && GetBestDmgMoveFromBattler(battlerAtk, battlerDef) == move) + else if (gDisableStructs[battlerAtk].isFirstTurn && GetBestDmgMoveFromBattler(battlerAtk, battlerDef, AI_ATTACKING) == move) ADJUST_SCORE(BEST_EFFECT); break; case EFFECT_STOCKPILE: if (aiData->abilities[battlerAtk] == ABILITY_CONTRARY) break; - if (HasMoveEffect(battlerAtk, EFFECT_SWALLOW) || HasMoveEffect(battlerAtk, EFFECT_SPIT_UP)) + if (HasMoveWithEffect(battlerAtk, EFFECT_SWALLOW) || HasMoveWithEffect(battlerAtk, EFFECT_SPIT_UP)) ADJUST_SCORE(DECENT_EFFECT); ADJUST_SCORE(IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_DEF)); ADJUST_SCORE(IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_SPDEF)); break; case EFFECT_SWAGGER: case EFFECT_FLATTER: - if (HasMoveEffect(battlerAtk, EFFECT_FOUL_PLAY) - || HasMoveEffect(battlerAtk, EFFECT_PSYCH_UP) - || HasMoveEffect(battlerAtk, EFFECT_SPECTRAL_THIEF)) + if (HasMoveWithEffect(battlerAtk, EFFECT_FOUL_PLAY) + || HasMoveWithEffect(battlerAtk, EFFECT_PSYCH_UP) + || HasMoveWithEffect(battlerAtk, EFFECT_SPECTRAL_THIEF)) ADJUST_SCORE(DECENT_EFFECT); if (aiData->abilities[battlerDef] == ABILITY_CONTRARY) ADJUST_SCORE(GOOD_EFFECT); @@ -4002,7 +4470,7 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move) break; // Don't use if the attract won't have a change to activate if (gBattleMons[battlerDef].status1 & STATUS1_ANY || (gBattleMons[battlerDef].status2 & STATUS2_CONFUSION) - || IsBattlerTrapped(battlerDef, TRUE)) + || (!AI_CanBattlerEscape(battlerDef) && IsBattlerTrapped(battlerAtk, battlerDef))) ADJUST_SCORE(GOOD_EFFECT); else ADJUST_SCORE(DECENT_EFFECT); @@ -4033,9 +4501,6 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move) break; case EFFECT_TORMENT: break; - case EFFECT_WILL_O_WISP: - IncreaseBurnScore(battlerAtk, battlerDef, move, &score); - break; case EFFECT_FOLLOW_ME: if (isDoubleBattle && GetMoveTarget(move) == MOVE_TARGET_USER @@ -4076,11 +4541,11 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move) ADJUST_SCORE(DECENT_EFFECT); break; case HOLD_EFFECT_TOXIC_ORB: - if (!ShouldPoisonSelf(battlerAtk, aiData->abilities[battlerAtk])) + if (!ShouldPoison(battlerAtk, battlerAtk)) ADJUST_SCORE(DECENT_EFFECT); break; case HOLD_EFFECT_FLAME_ORB: - if (!ShouldBurnSelf(battlerAtk, aiData->abilities[battlerAtk]) && CanBeBurned(battlerAtk, aiData->abilities[battlerDef])) + if (!ShouldBurn(battlerAtk, battlerAtk, aiData->abilities[battlerAtk])) ADJUST_SCORE(DECENT_EFFECT); break; case HOLD_EFFECT_BLACK_SLUDGE: @@ -4088,7 +4553,7 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move) ADJUST_SCORE(DECENT_EFFECT); break; case HOLD_EFFECT_IRON_BALL: - if (!HasMoveEffect(battlerDef, EFFECT_FLING) || !IsBattlerGrounded(battlerDef)) + if (!HasMoveWithEffect(battlerDef, EFFECT_FLING) || !IsBattlerGrounded(battlerDef)) ADJUST_SCORE(DECENT_EFFECT); break; case HOLD_EFFECT_LAGGING_TAIL: @@ -4126,11 +4591,11 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move) case HOLD_EFFECT_CHOICE_BAND: break; case HOLD_EFFECT_TOXIC_ORB: - if (ShouldPoisonSelf(battlerAtk, aiData->abilities[battlerAtk])) + if (ShouldPoison(battlerAtk, battlerAtk)) ADJUST_SCORE(DECENT_EFFECT); break; case HOLD_EFFECT_FLAME_ORB: - if (ShouldBurnSelf(battlerAtk, aiData->abilities[battlerAtk])) + if (ShouldBurn(battlerAtk, battlerAtk, aiData->abilities[battlerAtk])) ADJUST_SCORE(DECENT_EFFECT); break; case HOLD_EFFECT_BLACK_SLUDGE: @@ -4138,7 +4603,7 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move) ADJUST_SCORE(DECENT_EFFECT); break; case HOLD_EFFECT_IRON_BALL: - if (HasMoveEffect(battlerAtk, EFFECT_FLING)) + if (HasMoveWithEffect(battlerAtk, EFFECT_FLING)) ADJUST_SCORE(DECENT_EFFECT); break; case HOLD_EFFECT_LAGGING_TAIL: @@ -4157,7 +4622,7 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move) switch (aiData->holdEffects[battlerDef]) { case HOLD_EFFECT_IRON_BALL: - if (HasMoveEffect(battlerDef, EFFECT_FLING)) + if (HasMoveWithEffect(battlerDef, EFFECT_FLING)) ADJUST_SCORE(DECENT_EFFECT); break; case HOLD_EFFECT_LAGGING_TAIL: @@ -4308,7 +4773,7 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move) ADJUST_SCORE(IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_DEF)); break; case EFFECT_SHELL_SMASH: - if (aiData->holdEffects[battlerAtk] == HOLD_EFFECT_RESTORE_STATS) + if (aiData->holdEffects[battlerAtk] == HOLD_EFFECT_WHITE_HERB) ADJUST_SCORE(WEAK_EFFECT); ADJUST_SCORE(IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_SPEED)); @@ -4394,11 +4859,11 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move) ADJUST_SCORE(GOOD_EFFECT); break; case EFFECT_PLEDGE: - if (isDoubleBattle && HasMoveEffect(BATTLE_PARTNER(battlerAtk), EFFECT_PLEDGE)) + if (isDoubleBattle && HasMoveWithEffect(BATTLE_PARTNER(battlerAtk), EFFECT_PLEDGE)) ADJUST_SCORE(GOOD_EFFECT); // Partner might use pledge move break; case EFFECT_TRICK_ROOM: - if (!(AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_POWERFUL_STATUS)) + if (!(gAiThinkingStruct->aiFlags[battlerAtk] & AI_FLAG_POWERFUL_STATUS)) { if (!(gFieldStatuses & STATUS_FIELD_TRICK_ROOM) && GetBattlerSideSpeedAverage(battlerAtk) < GetBattlerSideSpeedAverage(battlerDef)) ADJUST_SCORE(GOOD_EFFECT); @@ -4478,7 +4943,7 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move) ADJUST_SCORE(DECENT_EFFECT); break; case EFFECT_SOAK: - if (HasMoveWithType(battlerAtk, TYPE_ELECTRIC) || HasMoveWithType(battlerAtk, TYPE_GRASS) || (HasMoveEffect(battlerAtk, EFFECT_SUPER_EFFECTIVE_ON_ARG) && GetMoveArgType(move) == TYPE_WATER) ) + if (HasMoveWithType(battlerAtk, TYPE_ELECTRIC) || HasMoveWithType(battlerAtk, TYPE_GRASS) || (HasMoveWithEffect(battlerAtk, EFFECT_SUPER_EFFECTIVE_ON_ARG) && GetMoveArgType(move) == TYPE_WATER) ) ADJUST_SCORE(DECENT_EFFECT); // Get some super effective moves break; case EFFECT_THIRD_TYPE: @@ -4543,20 +5008,20 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move) break; case EFFECT_COUNTER: if ((!IsBattlerIncapacitated(battlerDef, aiData->abilities[battlerDef]) && predictedMove != MOVE_NONE) - && (GetNoOfHitsToKOBattler(battlerDef, battlerAtk, predictedMoveSlot) >= 2) + && (GetNoOfHitsToKOBattler(battlerDef, battlerAtk, predictedMoveSlot, AI_DEFENDING) >= 2) && (GetBattleMoveCategory(predictedMove) == DAMAGE_CATEGORY_PHYSICAL)) ADJUST_SCORE(GOOD_EFFECT); break; case EFFECT_MIRROR_COAT: if ((!IsBattlerIncapacitated(battlerDef, aiData->abilities[battlerDef]) && predictedMove != MOVE_NONE) - && (GetNoOfHitsToKOBattler(battlerDef, battlerAtk, predictedMoveSlot) >= 2) + && (GetNoOfHitsToKOBattler(battlerDef, battlerAtk, predictedMoveSlot, AI_DEFENDING) >= 2) && (GetBattleMoveCategory(predictedMove) == DAMAGE_CATEGORY_SPECIAL)) ADJUST_SCORE(GOOD_EFFECT); break; case EFFECT_SHORE_UP: - if ((AI_GetWeather() & B_WEATHER_SANDSTORM) && ShouldRecover(battlerAtk, battlerDef, move, 67)) + if ((AI_GetWeather() & B_WEATHER_SANDSTORM) && ShouldRecover(battlerAtk, battlerDef, move, 67, AI_DEFENDING)) ADJUST_SCORE(DECENT_EFFECT); - else if (ShouldRecover(battlerAtk, battlerDef, move, 50)) + else if (ShouldRecover(battlerAtk, battlerDef, move, 50, AI_DEFENDING)) ADJUST_SCORE(DECENT_EFFECT); break; case EFFECT_ENDEAVOR: @@ -4567,9 +5032,9 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move) if (GetFirstFaintedPartyIndex(battlerAtk) != PARTY_SIZE) { ADJUST_SCORE(DECENT_EFFECT); - if (AI_DATA->shouldSwitch & (1u << battlerAtk)) // Bad matchup + if (gAiLogicData->shouldSwitch & (1u << battlerAtk)) // Bad matchup ADJUST_SCORE(WEAK_EFFECT); - if (AI_DATA->mostSuitableMonId[battlerAtk] != PARTY_SIZE) // Good mon to send in after + if (gAiLogicData->mostSuitableMonId[battlerAtk] != PARTY_SIZE) // Good mon to send in after ADJUST_SCORE(WEAK_EFFECT); } break; @@ -4582,8 +5047,8 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move) //case EFFECT_SKY_DROP //break; case EFFECT_JUNGLE_HEALING: - if (ShouldRecover(battlerAtk, battlerDef, move, 25) - || ShouldRecover(BATTLE_PARTNER(battlerAtk), battlerDef, move, 25) + if (ShouldRecover(battlerAtk, battlerDef, move, 25, AI_DEFENDING) + || ShouldRecover(BATTLE_PARTNER(battlerAtk), battlerDef, move, 25, AI_DEFENDING) || gBattleMons[battlerAtk].status1 & STATUS1_ANY || gBattleMons[BATTLE_PARTNER(battlerAtk)].status1 & STATUS1_ANY) ADJUST_SCORE(GOOD_EFFECT); @@ -4595,6 +5060,30 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move) case EFFECT_SPECTRAL_THIEF: ADJUST_SCORE(AI_ShouldCopyStatChanges(battlerAtk, battlerDef)); break; + case EFFECT_SMACK_DOWN: + if (!IsBattlerGrounded(battlerDef) && HasDamagingMoveOfType(battlerAtk, TYPE_GROUND) && !CanTargetFaintAi(battlerDef, battlerAtk)) + ADJUST_SCORE(DECENT_EFFECT); + break; + case EFFECT_KNOCK_OFF: + if (CanKnockOffItem(battlerDef, aiData->items[battlerDef])) + { + switch (aiData->holdEffects[battlerDef]) + { + case HOLD_EFFECT_IRON_BALL: + if (HasMoveWithEffect(battlerDef, EFFECT_FLING)) + ADJUST_SCORE(DECENT_EFFECT); + break; + case HOLD_EFFECT_LAGGING_TAIL: + case HOLD_EFFECT_STICKY_BARB: + break; + default: + ADJUST_SCORE(DECENT_EFFECT); + break; + } + } + break; + default: + break; } // move effect checks u32 additionalEffectCount = GetMoveAdditionalEffectCount(move); @@ -4609,7 +5098,7 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move) // Consider move effects that target self if (additionalEffect->self) { - u32 StageStatId; + enum StatChange StageStatId; if (aiData->abilities[battlerAtk] != ABILITY_CONTRARY) { @@ -4732,42 +5221,20 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move) else if (GetItemPocket(aiData->items[battlerDef]) == POCKET_BERRIES || aiData->holdEffects[battlerDef] == HOLD_EFFECT_GEMS) ADJUST_SCORE(DECENT_EFFECT); break; - case MOVE_EFFECT_SMACK_DOWN: - if (!IsBattlerGrounded(battlerDef) && HasDamagingMoveOfType(battlerAtk, TYPE_GROUND) && !CanTargetFaintAi(battlerDef, battlerAtk)) - ADJUST_SCORE(DECENT_EFFECT); - break; - case MOVE_EFFECT_KNOCK_OFF: - if (CanKnockOffItem(battlerDef, aiData->items[battlerDef])) - { - switch (aiData->holdEffects[battlerDef]) - { - case HOLD_EFFECT_IRON_BALL: - if (HasMoveEffect(battlerDef, EFFECT_FLING)) - ADJUST_SCORE(DECENT_EFFECT); - break; - case HOLD_EFFECT_LAGGING_TAIL: - case HOLD_EFFECT_STICKY_BARB: - break; - default: - ADJUST_SCORE(DECENT_EFFECT); - break; - } - } - break; case MOVE_EFFECT_STEAL_ITEM: { bool32 canSteal = FALSE; if (B_TRAINERS_KNOCK_OFF_ITEMS == TRUE) canSteal = TRUE; - if (gBattleTypeFlags & BATTLE_TYPE_FRONTIER || GetBattlerSide(battlerAtk) == B_SIDE_PLAYER) + if (gBattleTypeFlags & BATTLE_TYPE_FRONTIER || IsOnPlayerSide(battlerAtk)) canSteal = TRUE; if (canSteal && aiData->items[battlerAtk] == ITEM_NONE && aiData->items[battlerDef] != ITEM_NONE && CanBattlerGetOrLoseItem(battlerDef, aiData->items[battlerDef]) && CanBattlerGetOrLoseItem(battlerAtk, aiData->items[battlerDef]) - && !HasMoveEffect(battlerAtk, EFFECT_ACROBATICS) + && !HasMoveWithEffect(battlerAtk, EFFECT_ACROBATICS) && aiData->abilities[battlerDef] != ABILITY_STICKY_HOLD) { switch (aiData->holdEffects[battlerDef]) @@ -4780,11 +5247,11 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move) ADJUST_SCORE(DECENT_EFFECT); break; case HOLD_EFFECT_TOXIC_ORB: - if (ShouldPoisonSelf(battlerAtk, aiData->abilities[battlerAtk])) + if (ShouldPoison(battlerAtk, battlerAtk)) ADJUST_SCORE(DECENT_EFFECT); break; case HOLD_EFFECT_FLAME_ORB: - if (ShouldBurnSelf(battlerAtk, aiData->abilities[battlerAtk])) + if (ShouldBurn(battlerAtk, battlerAtk, aiData->abilities[battlerAtk])) ADJUST_SCORE(DECENT_EFFECT); break; case HOLD_EFFECT_BLACK_SLUDGE: @@ -4792,7 +5259,7 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move) ADJUST_SCORE(DECENT_EFFECT); break; case HOLD_EFFECT_IRON_BALL: - if (HasMoveEffect(battlerAtk, EFFECT_FLING)) + if (HasMoveWithEffect(battlerAtk, EFFECT_FLING)) ADJUST_SCORE(DECENT_EFFECT); break; case HOLD_EFFECT_LAGGING_TAIL: @@ -4821,7 +5288,7 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move) ADJUST_SCORE(GOOD_EFFECT); break; case MOVE_EFFECT_THROAT_CHOP: - if (IsSoundMove(GetBestDmgMoveFromBattler(battlerDef, battlerAtk))) + if (IsSoundMove(GetBestDmgMoveFromBattler(battlerDef, battlerAtk, AI_DEFENDING))) { if (AI_IsFaster(battlerAtk, battlerDef, move)) ADJUST_SCORE(GOOD_EFFECT); @@ -4830,7 +5297,7 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move) } break; case MOVE_EFFECT_WRAP: - if (!HasMoveEffect(battlerDef, EFFECT_RAPID_SPIN) && ShouldTrap(battlerAtk, battlerDef, move)) + if (!HasMoveWithEffect(battlerDef, EFFECT_RAPID_SPIN) && ShouldTrap(battlerAtk, battlerDef, move)) ADJUST_SCORE(BEST_EFFECT); break; case MOVE_EFFECT_SALT_CURE: @@ -4854,15 +5321,15 @@ static s32 AI_CheckViability(u32 battlerAtk, u32 battlerDef, u32 move, s32 score if (GetMovePower(move) != 0) { - if (GetNoOfHitsToKOBattler(battlerAtk, battlerDef, AI_THINKING_STRUCT->movesetIndex) == 0) + if (GetNoOfHitsToKOBattler(battlerAtk, battlerDef, gAiThinkingStruct->movesetIndex, AI_ATTACKING) == 0) ADJUST_AND_RETURN_SCORE(NO_DAMAGE_OR_FAILS); // No point in checking the move further so return early else { - if (AI_THINKING_STRUCT->aiFlags[battlerAtk] & (AI_FLAG_RISKY | AI_FLAG_PREFER_HIGHEST_DAMAGE_MOVE) - && GetBestDmgMoveFromBattler(battlerAtk, battlerDef) == move) + if (gAiThinkingStruct->aiFlags[battlerAtk] & (AI_FLAG_RISKY | AI_FLAG_PREFER_HIGHEST_DAMAGE_MOVE) + && GetBestDmgMoveFromBattler(battlerAtk, battlerDef, AI_ATTACKING) == move) ADJUST_SCORE(BEST_DAMAGE_MOVE); else - ADJUST_SCORE(AI_CompareDamagingMoves(battlerAtk, battlerDef, AI_THINKING_STRUCT->movesetIndex)); + ADJUST_SCORE(AI_CompareDamagingMoves(battlerAtk, battlerDef, gAiThinkingStruct->movesetIndex)); } } @@ -4880,10 +5347,10 @@ static s32 AI_ForceSetupFirstTurn(u32 battlerAtk, u32 battlerDef, u32 move, s32 || gBattleResults.battleTurnCounter != 0) return score; - if (AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_SMART_SWITCHING + if (gAiThinkingStruct->aiFlags[battlerAtk] & AI_FLAG_SMART_SWITCHING && AI_IsSlower(battlerAtk, battlerDef, move) && CanTargetFaintAi(battlerDef, battlerAtk) - && GetBattleMovePriority(battlerAtk, move) == 0) + && GetBattleMovePriority(battlerAtk, gAiLogicData->abilities[battlerAtk], move) == 0) { RETURN_SCORE_MINUS(20); // No point in setting up if you will faint. Should just switch if possible.. } @@ -4927,8 +5394,7 @@ static s32 AI_ForceSetupFirstTurn(u32 battlerAtk, u32 battlerDef, u32 move, s32 case EFFECT_ACCURACY_DOWN_2: case EFFECT_EVASION_DOWN_2: case EFFECT_REFLECT: - case EFFECT_POISON: - case EFFECT_PARALYZE: + case EFFECT_NON_VOLATILE_STATUS: case EFFECT_SUBSTITUTE: case EFFECT_LEECH_SEED: case EFFECT_MINIMIZE: @@ -4939,7 +5405,6 @@ static s32 AI_ForceSetupFirstTurn(u32 battlerAtk, u32 battlerDef, u32 move, s32 case EFFECT_DEFENSE_CURL: case EFFECT_TORMENT: case EFFECT_FLATTER: - case EFFECT_WILL_O_WISP: case EFFECT_INGRAIN: case EFFECT_IMPRISON: case EFFECT_TICKLE: @@ -5007,7 +5472,7 @@ static s32 AI_ForceSetupFirstTurn(u32 battlerAtk, u32 battlerDef, u32 move, s32 static s32 AI_Risky(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) { u8 i; - struct AiLogicData *aiData = AI_DATA; + struct AiLogicData *aiData = gAiLogicData; if (IS_TARGETING_PARTNER(battlerAtk, battlerDef)) return score; @@ -5083,9 +5548,9 @@ static s32 AI_TryTo2HKO(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) if (IS_TARGETING_PARTNER(battlerAtk, battlerDef)) return score; - if (GetNoOfHitsToKOBattler(battlerAtk, battlerDef, AI_THINKING_STRUCT->movesetIndex) == 1) + if (GetNoOfHitsToKOBattler(battlerAtk, battlerDef, gAiThinkingStruct->movesetIndex, AI_ATTACKING) == 1) ADJUST_SCORE(BEST_EFFECT); - else if (GetNoOfHitsToKOBattler(battlerAtk, battlerDef, AI_THINKING_STRUCT->movesetIndex) == 2) + else if (GetNoOfHitsToKOBattler(battlerAtk, battlerDef, gAiThinkingStruct->movesetIndex, AI_ATTACKING) == 2) ADJUST_SCORE(DECENT_EFFECT); return score; @@ -5097,17 +5562,17 @@ static s32 AI_PreferBatonPass(u32 battlerAtk, u32 battlerDef, u32 move, s32 scor if (IS_TARGETING_PARTNER(battlerAtk, battlerDef) || CountUsablePartyMons(battlerAtk) == 0 || !IsBattleMoveStatus(move) - || !HasMoveEffect(battlerAtk, EFFECT_BATON_PASS) - || IsBattlerTrapped(battlerAtk, TRUE)) + || !HasMoveWithEffect(battlerAtk, EFFECT_BATON_PASS) + || (!AI_CanBattlerEscape(battlerAtk) && IsBattlerTrapped(battlerDef, battlerAtk))) return score; - u32 effect = GetMoveEffect(move); + enum BattleMoveEffects effect = GetMoveEffect(move); if (IsStatRaisingEffect(effect)) { if (gBattleResults.battleTurnCounter == 0) ADJUST_SCORE(GOOD_EFFECT); - else if (AI_DATA->hpPercents[battlerAtk] < 60) + else if (gAiLogicData->hpPercents[battlerAtk] < 60) ADJUST_SCORE(-10); else ADJUST_SCORE(WEAK_EFFECT); @@ -5146,7 +5611,7 @@ static s32 AI_PreferBatonPass(u32 battlerAtk, u32 battlerDef, u32 move, s32 scor static s32 AI_HPAware(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) { - u32 effect = GetMoveEffect(move); + enum BattleMoveEffects effect = GetMoveEffect(move); u32 moveType = 0; SetTypeBeforeUsingMove(move, battlerAtk); @@ -5155,9 +5620,9 @@ static s32 AI_HPAware(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) if (IS_TARGETING_PARTNER(battlerAtk, battlerDef)) { if ((effect == EFFECT_HEAL_PULSE || effect == EFFECT_HIT_ENEMY_HEAL_ALLY) - || (moveType == TYPE_ELECTRIC && AI_DATA->abilities[BATTLE_PARTNER(battlerAtk)] == ABILITY_VOLT_ABSORB) - || (moveType == TYPE_GROUND && AI_DATA->abilities[BATTLE_PARTNER(battlerAtk)] == ABILITY_EARTH_EATER) - || (moveType == TYPE_WATER && (AI_DATA->abilities[BATTLE_PARTNER(battlerAtk)] == ABILITY_DRY_SKIN || AI_DATA->abilities[BATTLE_PARTNER(battlerAtk)] == ABILITY_WATER_ABSORB))) + || (moveType == TYPE_ELECTRIC && gAiLogicData->abilities[BATTLE_PARTNER(battlerAtk)] == ABILITY_VOLT_ABSORB) + || (moveType == TYPE_GROUND && gAiLogicData->abilities[BATTLE_PARTNER(battlerAtk)] == ABILITY_EARTH_EATER) + || (moveType == TYPE_WATER && (gAiLogicData->abilities[BATTLE_PARTNER(battlerAtk)] == ABILITY_DRY_SKIN || gAiLogicData->abilities[BATTLE_PARTNER(battlerAtk)] == ABILITY_WATER_ABSORB))) { if (gStatuses3[battlerDef] & STATUS3_HEAL_BLOCK) return 0; @@ -5166,14 +5631,14 @@ static s32 AI_HPAware(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) || (CanTargetFaintAi(BATTLE_PARTNER(FOE(battlerAtk)), BATTLE_PARTNER(battlerAtk)))) ADJUST_SCORE(-1); - if (AI_DATA->hpPercents[battlerDef] <= 50) + if (gAiLogicData->hpPercents[battlerDef] <= 50) ADJUST_SCORE(WEAK_EFFECT); } } else { // Consider AI HP - if (AI_DATA->hpPercents[battlerAtk] > 70) + if (gAiLogicData->hpPercents[battlerAtk] > 70) { // high hp switch (effect) @@ -5198,7 +5663,7 @@ static s32 AI_HPAware(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) break; } } - else if (AI_DATA->hpPercents[battlerAtk] > 30) + else if (gAiLogicData->hpPercents[battlerAtk] > 30) { // med hp if (IsStatRaisingEffect(effect) || IsStatLoweringEffect(effect)) @@ -5261,18 +5726,18 @@ static s32 AI_HPAware(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) } // consider target HP - if (CanIndexMoveFaintTarget(battlerAtk, battlerDef, AI_THINKING_STRUCT->movesetIndex, 0)) + if (CanIndexMoveFaintTarget(battlerAtk, battlerDef, gAiThinkingStruct->movesetIndex, AI_ATTACKING)) { ADJUST_SCORE(DECENT_EFFECT); } else { - if (AI_DATA->hpPercents[battlerDef] > 70) + if (gAiLogicData->hpPercents[battlerDef] > 70) { // high HP ; // nothing yet } - else if (AI_DATA->hpPercents[battlerDef] > 30) + else if (gAiLogicData->hpPercents[battlerDef] > 30) { // med HP - check discouraged effects switch (effect) @@ -5308,7 +5773,6 @@ static s32 AI_HPAware(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) case EFFECT_SPECIAL_DEFENSE_DOWN_2: case EFFECT_ACCURACY_DOWN_2: case EFFECT_EVASION_DOWN_2: - case EFFECT_POISON: case EFFECT_PAIN_SPLIT: case EFFECT_PERISH_SONG: case EFFECT_SAFEGUARD: @@ -5324,6 +5788,13 @@ static s32 AI_HPAware(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) default: break; } + + switch(GetMoveNonVolatileStatus(move)) + { + case MOVE_EFFECT_POISON: + ADJUST_SCORE(-2); + break; + } } else { @@ -5338,9 +5809,9 @@ static s32 AI_HPAware(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) static s32 AI_PowerfulStatus(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) { - u32 moveEffect = GetMoveEffect(move); + enum BattleMoveEffects moveEffect = GetMoveEffect(move); - if (GetMoveCategory(move) != DAMAGE_CATEGORY_STATUS || GetMoveEffect(AI_DATA->partnerMove) == moveEffect) + if (GetMoveCategory(move) != DAMAGE_CATEGORY_STATUS || GetMoveEffect(gAiLogicData->partnerMove) == moveEffect) return score; switch (moveEffect) @@ -5350,15 +5821,15 @@ static s32 AI_PowerfulStatus(u32 battlerAtk, u32 battlerDef, u32 move, s32 score ADJUST_SCORE(POWERFUL_STATUS_MOVE); break; case EFFECT_TRICK_ROOM: - if (!(gFieldStatuses & STATUS_FIELD_TRICK_ROOM) && !HasMoveEffect(battlerDef, EFFECT_TRICK_ROOM)) + if (!(gFieldStatuses & STATUS_FIELD_TRICK_ROOM) && !HasMoveWithEffect(battlerDef, EFFECT_TRICK_ROOM)) ADJUST_SCORE(POWERFUL_STATUS_MOVE); break; case EFFECT_MAGIC_ROOM: - if (!(gFieldStatuses & STATUS_FIELD_MAGIC_ROOM) && !HasMoveEffect(battlerDef, EFFECT_MAGIC_ROOM)) + if (!(gFieldStatuses & STATUS_FIELD_MAGIC_ROOM) && !HasMoveWithEffect(battlerDef, EFFECT_MAGIC_ROOM)) ADJUST_SCORE(POWERFUL_STATUS_MOVE); break; case EFFECT_WONDER_ROOM: - if (!(gFieldStatuses & STATUS_FIELD_WONDER_ROOM) && !HasMoveEffect(battlerDef, EFFECT_WONDER_ROOM)) + if (!(gFieldStatuses & STATUS_FIELD_WONDER_ROOM) && !HasMoveWithEffect(battlerDef, EFFECT_WONDER_ROOM)) ADJUST_SCORE(POWERFUL_STATUS_MOVE); break; case EFFECT_GRAVITY: @@ -5383,7 +5854,7 @@ static s32 AI_PowerfulStatus(u32 battlerAtk, u32 battlerDef, u32 move, s32 score case EFFECT_STEALTH_ROCK: case EFFECT_STICKY_WEB: case EFFECT_TOXIC_SPIKES: - if (AI_ShouldSetUpHazards(battlerAtk, battlerDef, AI_DATA)) + if (AI_ShouldSetUpHazards(battlerAtk, battlerDef, gAiLogicData)) ADJUST_SCORE(POWERFUL_STATUS_MOVE); break; case EFFECT_GRASSY_TERRAIN: @@ -5421,6 +5892,9 @@ static s32 AI_PowerfulStatus(u32 battlerAtk, u32 battlerDef, u32 move, s32 score case EFFECT_SNOWSCAPE: if (IsWeatherActive(B_WEATHER_SNOW | B_WEATHER_PRIMAL_ANY) == WEATHER_INACTIVE) ADJUST_SCORE(POWERFUL_STATUS_MOVE); + break; + default: + break; } return score; @@ -5433,28 +5907,29 @@ static s32 AI_PredictSwitch(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) u32 ability = gBattleMons[battlerAtk].ability; u32 opposingHazardFlags = gSideStatuses[GetBattlerSide(battlerDef)] & (SIDE_STATUS_SPIKES | SIDE_STATUS_STEALTH_ROCK | SIDE_STATUS_TOXIC_SPIKES); u32 aiHazardFlags = gSideStatuses[GetBattlerSide(battlerAtk)] & (SIDE_STATUS_HAZARDS_ANY); - u32 moveEffect = GetMoveEffect(move); - struct AiLogicData *aiData = AI_DATA; - uq4_12_t effectiveness = aiData->effectiveness[battlerAtk][battlerDef][AI_THINKING_STRUCT->movesetIndex]; + enum BattleMoveEffects moveEffect = GetMoveEffect(move); + struct AiLogicData *aiData = gAiLogicData; + uq4_12_t effectiveness = aiData->effectiveness[battlerAtk][battlerDef][gAiThinkingStruct->movesetIndex]; + u32 predictedMove = GetIncomingMove(battlerAtk, battlerDef, gAiLogicData); // Switch benefit switch (moveEffect) { case EFFECT_PURSUIT: { - u32 hitsToKO = GetNoOfHitsToKOBattler(battlerAtk, battlerDef, AI_THINKING_STRUCT->movesetIndex); + u32 hitsToKO = GetNoOfHitsToKOBattler(battlerAtk, battlerDef, gAiThinkingStruct->movesetIndex, AI_ATTACKING); if (hitsToKO == 2) ADJUST_SCORE(GOOD_EFFECT); else if (hitsToKO == 1) ADJUST_SCORE(BEST_EFFECT); - // else if (IsPredictedToUsePursuitableMove(battlerDef, battlerAtk) && !MoveWouldHitFirst(move, battlerAtk, battlerDef)) //Pursuit against fast U-Turn - // ADJUST_SCORE(GOOD_EFFECT); + else if (IsSwitchOutEffect(GetMoveEffect(predictedMove)) && AI_WhoStrikesFirst(battlerAtk, battlerDef, move) == AI_IS_SLOWER) // Pursuit against fast U-Turn + ADJUST_SCORE(DECENT_EFFECT); break; } case EFFECT_FOCUS_PUNCH: ADJUST_SCORE(DECENT_EFFECT); - if (AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_CHECK_BAD_MOVE) + if (gAiThinkingStruct->aiFlags[battlerAtk] & AI_FLAG_CHECK_BAD_MOVE) { if (aiData->abilities[battlerDef] == ABILITY_WONDER_GUARD && effectiveness < UQ_4_12(2.0)) ADJUST_SCORE(10); @@ -5515,7 +5990,7 @@ static s32 AI_PredictSwitch(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) ADJUST_SCORE(DECENT_EFFECT); break; case EFFECT_RESTORE_HP: - if (AI_DATA->hpPercents[battlerAtk] < 60) + if (gAiLogicData->hpPercents[battlerAtk] < 60) ADJUST_SCORE(GOOD_EFFECT); break; @@ -5550,6 +6025,9 @@ static s32 AI_PredictSwitch(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) case EFFECT_MEAN_LOOK: ADJUST_SCORE(-GOOD_EFFECT); break; + + default: + break; } // Additional effects @@ -5576,20 +6054,36 @@ static s32 AI_PredictSwitch(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) return score; } +static s32 AI_CheckPpStall(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) +{ + if (!IsOnPlayerSide(battlerAtk)) + score -= PpStallReduction(move, battlerAtk); + return score; +} + static void AI_Flee(void) { - AI_THINKING_STRUCT->aiAction |= (AI_ACTION_DONE | AI_ACTION_FLEE | AI_ACTION_DO_NOT_ATTACK); + gAiThinkingStruct->aiAction |= (AI_ACTION_DONE | AI_ACTION_FLEE | AI_ACTION_DO_NOT_ATTACK); } static void AI_Watch(void) { - AI_THINKING_STRUCT->aiAction |= (AI_ACTION_DONE | AI_ACTION_WATCH | AI_ACTION_DO_NOT_ATTACK); + gAiThinkingStruct->aiAction |= (AI_ACTION_DONE | AI_ACTION_WATCH | AI_ACTION_DO_NOT_ATTACK); } // Roaming pokemon logic static s32 AI_Roaming(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) { - if (IsBattlerTrapped(battlerAtk, FALSE)) + bool32 roamerCanFlee = FALSE; + + if (AI_CanBattlerEscape(battlerAtk)) + roamerCanFlee = TRUE; + else if (gAiLogicData->abilities[battlerAtk] == ABILITY_RUN_AWAY) + roamerCanFlee = TRUE; + else if (gAiLogicData->holdEffects[battlerAtk] == HOLD_EFFECT_CAN_ALWAYS_RUN) + roamerCanFlee = TRUE; + + if (!roamerCanFlee && IsBattlerTrapped(battlerDef, battlerAtk)) return score; AI_Flee(); @@ -5612,7 +6106,7 @@ static s32 AI_Safari(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) // First battle logic static s32 AI_FirstBattle(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) { - if (AI_DATA->hpPercents[battlerDef] <= 20) + if (gAiLogicData->hpPercents[battlerDef] <= 20) AI_Flee(); return score; diff --git a/src/battle_ai_switch_items.c b/src/battle_ai_switch_items.c index 06ce16cb74..60030acef5 100644 --- a/src/battle_ai_switch_items.c +++ b/src/battle_ai_switch_items.c @@ -22,7 +22,7 @@ #include "constants/moves.h" // this file's functions -static bool32 HasSuperEffectiveMoveAgainstOpponents(u32 battler, bool32 noRng); +static bool32 CanUseSuperEffectiveMoveAgainstOpponents(u32 battler); static bool32 FindMonWithFlagsAndSuperEffective(u32 battler, u16 flags, u32 moduloPercent); static bool32 ShouldUseItem(u32 battler); static bool32 AiExpectsToFaintPlayer(u32 battler); @@ -30,11 +30,12 @@ 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 u32 GetHPHealAmount(u8 itemEffectParam, struct Pokemon *mon); static void InitializeSwitchinCandidate(struct Pokemon *mon) { - PokemonToBattleMon(mon, &AI_DATA->switchinCandidate.battleMon); - AI_DATA->switchinCandidate.hypotheticalStatus = FALSE; + PokemonToBattleMon(mon, &gAiLogicData->switchinCandidate.battleMon); + gAiLogicData->switchinCandidate.hypotheticalStatus = FALSE; } u32 GetSwitchChance(enum ShouldSwitchScenario shouldSwitchScenario) @@ -100,25 +101,20 @@ u32 GetSwitchChance(enum ShouldSwitchScenario shouldSwitchScenario) return SHOULD_SWITCH_ATTACKING_STAT_MINUS_TWO_PERCENTAGE; case SHOULD_SWITCH_ATTACKING_STAT_MINUS_THREE_PLUS: return SHOULD_SWITCH_ATTACKING_STAT_MINUS_THREE_PLUS_PERCENTAGE; + case SHOULD_SWITCH_ALL_SCORES_BAD: + return SHOULD_SWITCH_ALL_SCORES_BAD_PERCENTAGE; default: return 100; } } -u32 GetThinkingBattler(u32 battler) -{ - if (AI_DATA->aiSwitchPredictionInProgress) - return AI_DATA->battlerDoingPrediction; - return battler; -} - static bool32 IsAceMon(u32 battler, u32 monPartyId) { - if (AI_THINKING_STRUCT->aiFlags[GetThinkingBattler(battler)] & AI_FLAG_ACE_POKEMON + if (gAiThinkingStruct->aiFlags[GetThinkingBattler(battler)] & AI_FLAG_ACE_POKEMON && !gBattleStruct->battlerState[battler].forcedSwitch && monPartyId == CalculateEnemyPartyCountInSide(battler)-1) return TRUE; - if (AI_THINKING_STRUCT->aiFlags[GetThinkingBattler(battler)] & AI_FLAG_DOUBLE_ACE_POKEMON + if (gAiThinkingStruct->aiFlags[GetThinkingBattler(battler)] & AI_FLAG_DOUBLE_ACE_POKEMON && !gBattleStruct->battlerState[battler].forcedSwitch && (monPartyId == CalculateEnemyPartyCount()-1 || monPartyId == CalculateEnemyPartyCount()-2)) return TRUE; @@ -164,6 +160,14 @@ static inline bool32 SetSwitchinAndSwitch(u32 battler, u32 switchinId) return TRUE; } +static bool32 AI_DoesChoiceItemBlockMove(u32 battler, u32 move) +{ + // Choice locked into something else + if (gAiLogicData->lastUsedMove[battler] != MOVE_NONE && gAiLogicData->lastUsedMove[battler] != move && HOLD_EFFECT_CHOICE(GetBattlerHoldEffect(battler, FALSE)) && IsBattlerItemEnabled(battler)) + return TRUE; + return FALSE; +} + // Note that as many return statements as possible are INTENTIONALLY put after all of the loops; // the function can take a max of about 0.06s to run, and this prevents the player from identifying // whether the mon will switch or not by seeing how long the delay is before they select a move @@ -172,13 +176,14 @@ static bool32 ShouldSwitchIfHasBadOdds(u32 battler) //Variable initialization u8 opposingPosition, atkType1, atkType2, defType1, defType2; s32 i, damageDealt = 0, maxDamageDealt = 0, damageTaken = 0, maxDamageTaken = 0; - u32 aiMove, playerMove, aiBestMove = MOVE_NONE, aiAbility = AI_DATA->abilities[battler], opposingBattler, weather = AI_GetWeather(); + u32 aiMove, playerMove, aiBestMove = MOVE_NONE, aiAbility = gAiLogicData->abilities[battler], opposingBattler; bool32 getsOneShot = FALSE, hasStatusMove = FALSE, hasSuperEffectiveMove = FALSE; - u16 typeEffectiveness = UQ_4_12(1.0), aiMoveEffect; //baseline typing damage - uq4_12_t effectiveness; + u16 typeEffectiveness = UQ_4_12(1.0); //baseline typing damage + enum BattleMoveEffects aiMoveEffect; + u32 hitsToKoPlayer = 0, hitsToKoAI = 0; // Only use this if AI_FLAG_SMART_SWITCHING is set for the trainer - if (!(AI_THINKING_STRUCT->aiFlags[GetThinkingBattler(battler)] & AI_FLAG_SMART_SWITCHING)) + if (!(gAiThinkingStruct->aiFlags[GetThinkingBattler(battler)] & AI_FLAG_SMART_SWITCHING)) return FALSE; // Double Battles aren't included in AI_FLAG_SMART_MON_CHOICE. Defaults to regular switch in logic @@ -194,18 +199,22 @@ static bool32 ShouldSwitchIfHasBadOdds(u32 battler) defType1 = gBattleMons[battler].types[0]; defType2 = gBattleMons[battler].types[1]; - // Check AI moves for damage dealt for (i = 0; i < MAX_MON_MOVES; i++) { aiMove = gBattleMons[battler].moves[i]; aiMoveEffect = GetMoveEffect(aiMove); if (aiMove != MOVE_NONE) { + u32 nonVolatileStatus = GetMoveNonVolatileStatus(aiMove); // Check if mon has an "important" status move if (aiMoveEffect == EFFECT_REFLECT || aiMoveEffect == EFFECT_LIGHT_SCREEN || aiMoveEffect == EFFECT_SPIKES || aiMoveEffect == EFFECT_TOXIC_SPIKES || aiMoveEffect == EFFECT_STEALTH_ROCK || aiMoveEffect == EFFECT_STICKY_WEB || aiMoveEffect == EFFECT_LEECH_SEED || aiMoveEffect == EFFECT_EXPLOSION - || aiMoveEffect == EFFECT_SLEEP || aiMoveEffect == EFFECT_YAWN || aiMoveEffect == EFFECT_TOXIC || aiMoveEffect == EFFECT_WILL_O_WISP || aiMoveEffect == EFFECT_PARALYZE + || nonVolatileStatus == MOVE_EFFECT_SLEEP + || nonVolatileStatus == MOVE_EFFECT_TOXIC + || nonVolatileStatus == MOVE_EFFECT_PARALYSIS + || nonVolatileStatus == MOVE_EFFECT_BURN + || aiMoveEffect == EFFECT_YAWN || aiMoveEffect == EFFECT_TRICK || aiMoveEffect == EFFECT_TRICK_ROOM || aiMoveEffect== EFFECT_WONDER_ROOM || aiMoveEffect == EFFECT_PSYCHO_SHIFT || aiMoveEffect == EFFECT_FIRST_TURN_ONLY ) { @@ -216,21 +225,22 @@ static bool32 ShouldSwitchIfHasBadOdds(u32 battler) if (!IsBattleMoveStatus(aiMove)) { // Check if mon has a super effective move - if (AI_GetMoveEffectiveness(aiMove, battler, opposingBattler) >= UQ_4_12(2.0)) + if (AI_GetMoveEffectiveness(aiMove, battler, opposingBattler) >= UQ_4_12(2.0) && !AI_DoesChoiceItemBlockMove(battler, aiMove)) hasSuperEffectiveMove = TRUE; // Get maximum damage mon can deal - damageDealt = AI_DATA->simulatedDmg[battler][opposingBattler][i].expected; - if(damageDealt > maxDamageDealt) + damageDealt = AI_GetDamage(battler, opposingBattler, i, AI_ATTACKING, gAiLogicData); + if(damageDealt > maxDamageDealt && !AI_DoesChoiceItemBlockMove(battler, aiMove)) { maxDamageDealt = damageDealt; aiBestMove = aiMove; } - } } } + hitsToKoPlayer = GetNoOfHitsToKOBattlerDmg(maxDamageDealt, opposingBattler); + // Calculate type advantage typeEffectiveness = uq4_12_multiply(typeEffectiveness, (GetTypeModifier(atkType1, defType1))); if (atkType2 != atkType1) @@ -248,12 +258,19 @@ static bool32 ShouldSwitchIfHasBadOdds(u32 battler) playerMove = gBattleMons[opposingBattler].moves[i]; if (playerMove != MOVE_NONE && !IsBattleMoveStatus(playerMove) && GetMoveEffect(playerMove) != EFFECT_FOCUS_PUNCH) { - damageTaken = AI_CalcDamage(playerMove, opposingBattler, battler, &effectiveness, FALSE, weather, DMG_ROLL_HIGHEST).expected; + damageTaken = AI_GetDamage(opposingBattler, battler, i, AI_DEFENDING, gAiLogicData); + if (playerMove == gBattleStruct->choicedMove[opposingBattler]) // If player is choiced, only care about the choice locked move + { + return maxDamageTaken = damageTaken; + break; + } if (damageTaken > maxDamageTaken) maxDamageTaken = damageTaken; } } + hitsToKoAI = GetNoOfHitsToKOBattlerDmg(maxDamageTaken, battler); + // Check if mon gets one shot if(maxDamageTaken > gBattleMons[battler].hp && !(gItemsInfo[gBattleMons[battler].item].holdEffect == HOLD_EFFECT_FOCUS_SASH || (!IsMoldBreakerTypeAbility(opposingBattler, gBattleMons[opposingBattler].ability) && B_STURDY >= GEN_5 && aiAbility == ABILITY_STURDY))) @@ -261,15 +278,12 @@ static bool32 ShouldSwitchIfHasBadOdds(u32 battler) getsOneShot = TRUE; } - // Check if current mon can outspeed and KO in spite of bad matchup, and don't switch out if it can - if(damageDealt > gBattleMons[opposingBattler].hp) - { - if (AI_IsFaster(battler, opposingBattler, aiBestMove)) - return FALSE; - } + // Check if current mon can 1v1 in spite of bad matchup, and don't switch out if it can + if(hitsToKoPlayer < hitsToKoAI || (hitsToKoPlayer == hitsToKoAI && AI_IsFaster(battler, opposingBattler, aiBestMove))) + return FALSE; // If we don't have any other viable options, don't switch out - if (AI_DATA->mostSuitableMonId[battler] == PARTY_SIZE) + if (gAiLogicData->mostSuitableMonId[battler] == PARTY_SIZE) return FALSE; // Start assessing whether or not mon has bad odds @@ -281,7 +295,7 @@ static bool32 ShouldSwitchIfHasBadOdds(u32 battler) && gBattleMons[battler].hp >= gBattleMons[battler].maxHP / 4))) { // 50% chance to stay in regardless - if (RandomPercentage(RNG_AI_SWITCH_HASBADODDS, (100 - GetSwitchChance(SHOULD_SWITCH_HASBADODDS))) && !AI_DATA->aiSwitchPredictionInProgress) + if (RandomPercentage(RNG_AI_SWITCH_HASBADODDS, (100 - GetSwitchChance(SHOULD_SWITCH_HASBADODDS))) && !gAiLogicData->aiPredictionInProgress) return FALSE; // Switch mon out @@ -301,7 +315,7 @@ static bool32 ShouldSwitchIfHasBadOdds(u32 battler) return FALSE; // 50% chance to stay in regardless - if (RandomPercentage(RNG_AI_SWITCH_HASBADODDS, (100 - GetSwitchChance(SHOULD_SWITCH_HASBADODDS))) && !AI_DATA->aiSwitchPredictionInProgress) + if (RandomPercentage(RNG_AI_SWITCH_HASBADODDS, (100 - GetSwitchChance(SHOULD_SWITCH_HASBADODDS))) && !gAiLogicData->aiPredictionInProgress) return FALSE; // Switch mon out @@ -314,11 +328,11 @@ static bool32 ShouldSwitchIfHasBadOdds(u32 battler) static bool32 ShouldSwitchIfTruant(u32 battler) { // Switch if mon with truant is bodied by Protect or invulnerability spam - if (AI_DATA->abilities[battler] == ABILITY_TRUANT + if (gAiLogicData->abilities[battler] == ABILITY_TRUANT && IsTruantMonVulnerable(battler, gBattlerTarget) && gDisableStructs[battler].truantCounter && gBattleMons[battler].hp >= gBattleMons[battler].maxHP / 2 - && AI_DATA->mostSuitableMonId[battler] != PARTY_SIZE) + && gAiLogicData->mostSuitableMonId[battler] != PARTY_SIZE) { if (RandomPercentage(RNG_AI_SWITCH_TRUANT, GetSwitchChance(SHOULD_SWITCH_TRUANT))) return SetSwitchinAndSwitch(battler, PARTY_SIZE); @@ -326,6 +340,38 @@ static bool32 ShouldSwitchIfTruant(u32 battler) return FALSE; } +static u32 FindMonWithMoveOfEffectiveness(u32 battler, u32 opposingBattler, uq4_12_t effectiveness) +{ + u32 move, i, j; + s32 firstId; + s32 lastId; // + 1 + struct Pokemon *party = NULL; + + // Get party information. + GetAIPartyIndexes(battler, &firstId, &lastId); + party = GetBattlerParty(battler); + + // Find a Pokémon in the party that has a super effective move. + for (i = firstId; i < lastId; i++) + { + if (!IsValidForBattle(&party[i])) + continue; + if (i == gBattlerPartyIndexes[battler]) + continue; + if (IsAceMon(battler, i)) + continue; + + for (j = 0; j < MAX_MON_MOVES; j++) + { + move = GetMonData(&party[i], MON_DATA_MOVE1 + j); + if (move != MOVE_NONE && AI_GetMoveEffectiveness(move, battler, opposingBattler) >= effectiveness && gMovesInfo[move].power != 0) + return SetSwitchinAndSwitch(battler, i); + } + } + + return FALSE; // There is not a single Pokémon in the party that has a move with this effectiveness threshold +} + static bool32 ShouldSwitchIfAllMovesBad(u32 battler) { u32 moveIndex; @@ -350,29 +396,32 @@ static bool32 ShouldSwitchIfAllMovesBad(u32 battler) for (moveIndex = 0; moveIndex < MAX_MON_MOVES; moveIndex++) { aiMove = gBattleMons[battler].moves[moveIndex]; - if (AI_GetMoveEffectiveness(aiMove, battler, opposingBattler) > UQ_4_12(0.0) && aiMove != MOVE_NONE) + if (AI_GetMoveEffectiveness(aiMove, battler, opposingBattler) > UQ_4_12(0.0) && aiMove != MOVE_NONE + && (!ALL_MOVES_BAD_STATUS_MOVES_BAD || gMovesInfo[aiMove].power != 0)) // If using ALL_MOVES_BAD_STATUS_MOVES_BAD, then need power to be non-zero return FALSE; } } if (RandomPercentage(RNG_AI_SWITCH_ALL_MOVES_BAD, GetSwitchChance(SHOULD_SWITCH_ALL_MOVES_BAD))) - return SetSwitchinAndSwitch(battler, PARTY_SIZE); + { + if (gAiLogicData->mostSuitableMonId[battler] == PARTY_SIZE) // No good candidate mons, find any one that can deal damage + return FindMonWithMoveOfEffectiveness(battler, opposingBattler, UQ_4_12(1.0)); + else // Good candidate mon, send that in + return SetSwitchinAndSwitch(battler, PARTY_SIZE); + } + return FALSE; } -static bool32 FindMonThatHitsWonderGuard(u32 battler) +static bool32 ShouldSwitchIfWonderGuard(u32 battler) { u32 opposingBattler = GetOppositeBattler(battler); - s32 i, j; - s32 firstId; - s32 lastId; // + 1 - struct Pokemon *party = NULL; - u16 move; + u32 i, move; if (IsDoubleBattle()) return FALSE; - if (AI_DATA->abilities[opposingBattler] != ABILITY_WONDER_GUARD) + if (gAiLogicData->abilities[opposingBattler] != ABILITY_WONDER_GUARD) return FALSE; // Check if Pokémon has a super effective move. @@ -386,33 +435,15 @@ static bool32 FindMonThatHitsWonderGuard(u32 battler) } } - // Get party information. - GetAIPartyIndexes(battler, &firstId, &lastId); - party = GetBattlerParty(battler); - - // Find a Pokémon in the party that has a super effective move. - for (i = firstId; i < lastId; i++) + if (RandomPercentage(RNG_AI_SWITCH_WONDER_GUARD, GetSwitchChance(SHOULD_SWITCH_WONDER_GUARD))) { - if (!IsValidForBattle(&party[i])) - continue; - if (i == gBattlerPartyIndexes[battler]) - continue; - if (IsAceMon(battler, i)) - continue; - - for (j = 0; j < MAX_MON_MOVES; j++) - { - move = GetMonData(&party[i], MON_DATA_MOVE1 + j); - if (move != MOVE_NONE) - { - // Found a mon - if (AI_GetMoveEffectiveness(move, battler, opposingBattler) >= UQ_4_12(2.0) && RandomPercentage(RNG_AI_SWITCH_WONDER_GUARD, GetSwitchChance(SHOULD_SWITCH_WONDER_GUARD))) - return SetSwitchinAndSwitch(battler, i); - } - } + if (gAiLogicData->mostSuitableMonId[battler] == PARTY_SIZE) // No good candidate mons, find any one that can deal damage + return FindMonWithMoveOfEffectiveness(battler, opposingBattler, UQ_4_12(2.0)); + else // Good candidate mon, send that in + return SetSwitchinAndSwitch(battler, PARTY_SIZE); } - return FALSE; // There is not a single Pokémon in the party that has a super effective move against a mon with Wonder Guard. + return FALSE; } static bool32 FindMonThatAbsorbsOpponentsMove(u32 battler) @@ -425,21 +456,21 @@ static bool32 FindMonThatAbsorbsOpponentsMove(u32 battler) struct Pokemon *party; u16 monAbility, aiMove; u32 opposingBattler = GetOppositeBattler(battler); - u32 incomingMove = AI_DATA->lastUsedMove[opposingBattler]; + u32 incomingMove = GetIncomingMove(battler, opposingBattler, gAiLogicData); u32 incomingType = GetMoveType(incomingMove); - u32 predictedMove = incomingMove; // Update for move prediction - u32 predictedType = GetMoveType(predictedMove); bool32 isOpposingBattlerChargingOrInvulnerable = (IsSemiInvulnerable(opposingBattler, incomingMove) || IsTwoTurnNotSemiInvulnerableMove(opposingBattler, incomingMove)); s32 i, j; - if (!(AI_THINKING_STRUCT->aiFlags[GetThinkingBattler(battler)] & AI_FLAG_SMART_SWITCHING)) + if (!(gAiThinkingStruct->aiFlags[GetThinkingBattler(battler)] & AI_FLAG_SMART_SWITCHING)) return FALSE; - if (gBattleStruct->prevTurnSpecies[battler] != gBattleMons[battler].species) // AI mon has changed, player's behaviour no longer reliable; note to override this if using AI_FLAG_PREDICT_MOVE - return FALSE; - if (HasSuperEffectiveMoveAgainstOpponents(battler, TRUE) && (RandomPercentage(RNG_AI_SWITCH_ABSORBING_STAY_IN, STAY_IN_ABSORBING_PERCENTAGE) || AI_DATA->aiSwitchPredictionInProgress)) + if (gBattleStruct->prevTurnSpecies[battler] != gBattleMons[battler].species && !(gAiThinkingStruct->aiFlags[battler] & AI_FLAG_PREDICT_MOVE)) // AI mon has changed, player's behaviour no longer reliable; override this if using AI_FLAG_PREDICT_MOVE + return FALSE; + if (CanUseSuperEffectiveMoveAgainstOpponents(battler) && (RandomPercentage(RNG_AI_SWITCH_ABSORBING_STAY_IN, STAY_IN_ABSORBING_PERCENTAGE) || gAiLogicData->aiPredictionInProgress)) return FALSE; if (AreStatsRaised(battler)) return FALSE; + if (IsMoldBreakerTypeAbility(opposingBattler, gAiLogicData->abilities[opposingBattler])) + return FALSE; // Don't switch if mon could OHKO for (i = 0; i < MAX_MON_MOVES; i++) @@ -450,7 +481,7 @@ static bool32 FindMonThatAbsorbsOpponentsMove(u32 battler) // Only check damage if it's a damaging move if (!IsBattleMoveStatus(aiMove)) { - if (AI_DATA->simulatedDmg[battler][opposingBattler][i].expected > gBattleMons[opposingBattler].hp) + if (!AI_DoesChoiceItemBlockMove(battler, aiMove) && AI_GetDamage(battler, opposingBattler, i, AI_ATTACKING, gAiLogicData) > gBattleMons[opposingBattler].hp) return FALSE; } } @@ -471,37 +502,45 @@ static bool32 FindMonThatAbsorbsOpponentsMove(u32 battler) } // Create an array of possible absorb abilities so the AI considers all of them - if (predictedType == TYPE_FIRE) + if (incomingType == TYPE_FIRE) { absorbingTypeAbilities[numAbsorbingAbilities++] = ABILITY_FLASH_FIRE; } - else if (predictedType == TYPE_WATER || (isOpposingBattlerChargingOrInvulnerable && incomingType == TYPE_WATER)) + else if (incomingType == TYPE_WATER || (isOpposingBattlerChargingOrInvulnerable && incomingType == TYPE_WATER)) { absorbingTypeAbilities[numAbsorbingAbilities++] = ABILITY_WATER_ABSORB; absorbingTypeAbilities[numAbsorbingAbilities++] = ABILITY_DRY_SKIN; if (B_REDIRECT_ABILITY_IMMUNITY >= GEN_5) absorbingTypeAbilities[numAbsorbingAbilities++] = ABILITY_STORM_DRAIN; } - else if (predictedType == TYPE_ELECTRIC || (isOpposingBattlerChargingOrInvulnerable && incomingType == TYPE_ELECTRIC)) + else if (incomingType == TYPE_ELECTRIC || (isOpposingBattlerChargingOrInvulnerable && incomingType == TYPE_ELECTRIC)) { absorbingTypeAbilities[numAbsorbingAbilities++] = ABILITY_VOLT_ABSORB; absorbingTypeAbilities[numAbsorbingAbilities++] = ABILITY_MOTOR_DRIVE; if (B_REDIRECT_ABILITY_IMMUNITY >= GEN_5) absorbingTypeAbilities[numAbsorbingAbilities++] = ABILITY_LIGHTNING_ROD; } - else if (predictedType == TYPE_GRASS || (isOpposingBattlerChargingOrInvulnerable && incomingType == TYPE_GRASS)) + else if (incomingType == TYPE_GRASS || (isOpposingBattlerChargingOrInvulnerable && incomingType == TYPE_GRASS)) { absorbingTypeAbilities[numAbsorbingAbilities++] = ABILITY_SAP_SIPPER; } - else if (predictedType == TYPE_GROUND || (isOpposingBattlerChargingOrInvulnerable && incomingType == TYPE_GROUND)) + else if (incomingType == TYPE_GROUND || (isOpposingBattlerChargingOrInvulnerable && incomingType == TYPE_GROUND)) { absorbingTypeAbilities[numAbsorbingAbilities++] = ABILITY_EARTH_EATER; absorbingTypeAbilities[numAbsorbingAbilities++] = ABILITY_LEVITATE; } - else if (IsSoundMove(predictedMove) || (isOpposingBattlerChargingOrInvulnerable && IsSoundMove(incomingMove))) + else if (IsSoundMove(incomingMove) || (isOpposingBattlerChargingOrInvulnerable && IsSoundMove(incomingMove))) { absorbingTypeAbilities[numAbsorbingAbilities++] = ABILITY_SOUNDPROOF; } + else if (IsBallisticMove(incomingMove) || (isOpposingBattlerChargingOrInvulnerable && IsBallisticMove(incomingMove))) + { + absorbingTypeAbilities[numAbsorbingAbilities++] = ABILITY_BULLETPROOF; + } + else if (IsWindMove(incomingMove) || (isOpposingBattlerChargingOrInvulnerable && IsWindMove(incomingMove))) + { + absorbingTypeAbilities[numAbsorbingAbilities++] = ABILITY_WIND_RIDER; + } else { return FALSE; @@ -548,13 +587,14 @@ static bool32 FindMonThatAbsorbsOpponentsMove(u32 battler) static bool32 ShouldSwitchIfOpponentChargingOrInvulnerable(u32 battler) { u32 opposingBattler = GetOppositeBattler(battler); - u32 incomingMove = AI_DATA->lastUsedMove[opposingBattler]; + u32 incomingMove = GetIncomingMove(battler, opposingBattler, gAiLogicData); + bool32 isOpposingBattlerChargingOrInvulnerable = (IsSemiInvulnerable(opposingBattler, incomingMove) || IsTwoTurnNotSemiInvulnerableMove(opposingBattler, incomingMove)); - if (IsDoubleBattle() || !(AI_THINKING_STRUCT->aiFlags[GetThinkingBattler(battler)] & AI_FLAG_SMART_SWITCHING)) + if (IsDoubleBattle() || !(gAiThinkingStruct->aiFlags[GetThinkingBattler(battler)] & AI_FLAG_SMART_SWITCHING)) return FALSE; - if (isOpposingBattlerChargingOrInvulnerable && AI_DATA->mostSuitableMonId[battler] != PARTY_SIZE && RandomPercentage(RNG_AI_SWITCH_FREE_TURN, GetSwitchChance(SHOULD_SWITCH_FREE_TURN))) + if (isOpposingBattlerChargingOrInvulnerable && gAiLogicData->mostSuitableMonId[battler] != PARTY_SIZE && RandomPercentage(RNG_AI_SWITCH_FREE_TURN, GetSwitchChance(SHOULD_SWITCH_FREE_TURN))) return SetSwitchinAndSwitch(battler, PARTY_SIZE); return FALSE; @@ -570,7 +610,7 @@ static bool32 ShouldSwitchIfTrapperInParty(u32 battler) s32 opposingBattler = GetOppositeBattler(battler); // Only use this if AI_FLAG_SMART_SWITCHING is set for the trainer - if (!(AI_THINKING_STRUCT->aiFlags[GetThinkingBattler(battler)] & AI_FLAG_SMART_SWITCHING)) + if (!(gAiThinkingStruct->aiFlags[GetThinkingBattler(battler)] & AI_FLAG_SMART_SWITCHING)) return FALSE; // Check if current mon has an ability that traps opponent @@ -591,7 +631,7 @@ static bool32 ShouldSwitchIfTrapperInParty(u32 battler) if (CanAbilityTrapOpponent(monAbility, opposingBattler) || (CanAbilityTrapOpponent(AI_GetBattlerAbility(opposingBattler), opposingBattler) && monAbility == ABILITY_TRACE)) { // If mon in slot i is the most suitable switchin candidate, then it's a trapper than wins 1v1 - if (i == AI_DATA->mostSuitableMonId[battler] && RandomPercentage(RNG_AI_SWITCH_FREE_TURN, GetSwitchChance(SHOULD_SWITCH_FREE_TURN))) + if (i == gAiLogicData->mostSuitableMonId[battler] && RandomPercentage(RNG_AI_SWITCH_FREE_TURN, GetSwitchChance(SHOULD_SWITCH_FREE_TURN))) return SetSwitchinAndSwitch(battler, PARTY_SIZE); } } @@ -601,8 +641,8 @@ static bool32 ShouldSwitchIfTrapperInParty(u32 battler) static bool32 ShouldSwitchIfBadlyStatused(u32 battler) { bool32 switchMon = FALSE; - u16 monAbility = AI_DATA->abilities[battler]; - u16 holdEffect = AI_DATA->holdEffects[battler]; + u16 monAbility = gAiLogicData->abilities[battler]; + enum ItemHoldEffect holdEffect = gAiLogicData->holdEffects[battler]; u8 opposingPosition = BATTLE_OPPOSITE(GetBattlerPosition(battler)); u8 opposingBattler = GetBattlerAtPosition(opposingPosition); bool32 hasStatRaised = AnyStatIsRaised(battler); @@ -614,18 +654,18 @@ static bool32 ShouldSwitchIfBadlyStatused(u32 battler) && RandomPercentage(RNG_AI_SWITCH_PERISH_SONG, GetSwitchChance(SHOULD_SWITCH_PERISH_SONG))) return SetSwitchinAndSwitch(battler, PARTY_SIZE); - if (AI_THINKING_STRUCT->aiFlags[GetThinkingBattler(battler)] & AI_FLAG_SMART_SWITCHING) + if (gAiThinkingStruct->aiFlags[GetThinkingBattler(battler)] & AI_FLAG_SMART_SWITCHING) { //Yawn if (gStatuses3[battler] & STATUS3_YAWN - && CanBeSlept(battler, monAbility, BLOCKED_BY_SLEEP_CLAUSE) + && CanBeSlept(battler, battler, monAbility, BLOCKED_BY_SLEEP_CLAUSE) // TODO: ask for help from pawwkie && gBattleMons[battler].hp > gBattleMons[battler].maxHP / 3 && RandomPercentage(RNG_AI_SWITCH_YAWN, GetSwitchChance(SHOULD_SWITCH_YAWN))) { switchMon = TRUE; // If we don't have a good switchin, not worth switching - if (AI_DATA->mostSuitableMonId[battler] == PARTY_SIZE) + if (gAiLogicData->mostSuitableMonId[battler] == PARTY_SIZE) switchMon = FALSE; // Check if Active Pokemon can KO opponent instead of switching @@ -639,7 +679,7 @@ static bool32 ShouldSwitchIfBadlyStatused(u32 battler) || monAbility == ABILITY_EARLY_BIRD) || holdEffect == (HOLD_EFFECT_CURE_SLP | HOLD_EFFECT_CURE_STATUS) || HasMove(battler, MOVE_SLEEP_TALK) - || (HasMoveEffect(battler, MOVE_SNORE) && AI_GetMoveEffectiveness(MOVE_SNORE, battler, opposingBattler) >= UQ_4_12(2.0)) + || (HasMoveWithEffect(battler, MOVE_SNORE) && AI_GetMoveEffectiveness(MOVE_SNORE, battler, opposingBattler) >= UQ_4_12(2.0)) || (IsBattlerGrounded(battler) && (HasMove(battler, MOVE_MISTY_TERRAIN) || HasMove(battler, MOVE_ELECTRIC_TERRAIN))) ) @@ -647,14 +687,14 @@ static bool32 ShouldSwitchIfBadlyStatused(u32 battler) // Check if Active Pokemon evasion boosted and might be able to dodge until awake if (gBattleMons[battler].statStages[STAT_EVASION] > (DEFAULT_STAT_STAGE + 3) - && AI_DATA->abilities[opposingBattler] != ABILITY_UNAWARE - && AI_DATA->abilities[opposingBattler] != ABILITY_KEEN_EYE - && AI_DATA->abilities[opposingBattler] != ABILITY_MINDS_EYE - && (B_ILLUMINATE_EFFECT >= GEN_9 && AI_DATA->abilities[opposingBattler] != ABILITY_ILLUMINATE) + && gAiLogicData->abilities[opposingBattler] != ABILITY_UNAWARE + && gAiLogicData->abilities[opposingBattler] != ABILITY_KEEN_EYE + && gAiLogicData->abilities[opposingBattler] != ABILITY_MINDS_EYE + && (B_ILLUMINATE_EFFECT >= GEN_9 && gAiLogicData->abilities[opposingBattler] != ABILITY_ILLUMINATE) && !(gBattleMons[battler].status2 & STATUS2_FORESIGHT) && !(gStatuses3[battler] & STATUS3_MIRACLE_EYED)) switchMon = FALSE; - + if (switchMon) return SetSwitchinAndSwitch(battler, PARTY_SIZE); } @@ -662,12 +702,12 @@ static bool32 ShouldSwitchIfBadlyStatused(u32 battler) // Secondary Damage if (monAbility != ABILITY_MAGIC_GUARD && !AiExpectsToFaintPlayer(battler) - && AI_DATA->mostSuitableMonId[battler] != PARTY_SIZE) + && gAiLogicData->mostSuitableMonId[battler] != PARTY_SIZE) { //Toxic if (((gBattleMons[battler].status1 & STATUS1_TOXIC_COUNTER) >= STATUS1_TOXIC_TURN(2)) && gBattleMons[battler].hp >= (gBattleMons[battler].maxHP / 3) - && AI_DATA->mostSuitableMonId[battler] != PARTY_SIZE + && gAiLogicData->mostSuitableMonId[battler] != PARTY_SIZE && (hasStatRaised ? RandomPercentage(RNG_AI_SWITCH_BADLY_POISONED, GetSwitchChance(SHOULD_SWITCH_BADLY_POISONED_STATS_RAISED)) : RandomPercentage(RNG_AI_SWITCH_BADLY_POISONED, GetSwitchChance(SHOULD_SWITCH_BADLY_POISONED)))) return SetSwitchinAndSwitch(battler, PARTY_SIZE); @@ -690,7 +730,7 @@ static bool32 ShouldSwitchIfBadlyStatused(u32 battler) // Infatuation if (gBattleMons[battler].status2 & STATUS2_INFATUATION && !AiExpectsToFaintPlayer(battler) - && AI_DATA->mostSuitableMonId[battler] != PARTY_SIZE + && gAiLogicData->mostSuitableMonId[battler] != PARTY_SIZE && RandomPercentage(RNG_AI_SWITCH_INFATUATION, GetSwitchChance(SHOULD_SWITCH_INFATUATION))) return SetSwitchinAndSwitch(battler, PARTY_SIZE); } @@ -707,18 +747,18 @@ static bool32 ShouldSwitchIfAbilityBenefit(u32 battler) || IsNeutralizingGasOnField()) return FALSE; - switch(AI_DATA->abilities[battler]) + switch(gAiLogicData->abilities[battler]) { case ABILITY_NATURAL_CURE: //Attempt to cure bad ailment if (gBattleMons[battler].status1 & (STATUS1_SLEEP | STATUS1_FREEZE | STATUS1_TOXIC_POISON) - && AI_DATA->mostSuitableMonId[battler] != PARTY_SIZE + && gAiLogicData->mostSuitableMonId[battler] != PARTY_SIZE && (hasStatRaised ? RandomPercentage(RNG_AI_SWITCH_NATURAL_CURE, GetSwitchChance(SHOULD_SWITCH_NATURAL_CURE_STRONG_STATS_RAISED)) : RandomPercentage(RNG_AI_SWITCH_NATURAL_CURE, GetSwitchChance(SHOULD_SWITCH_NATURAL_CURE_STRONG)))) break; //Attempt to cure lesser ailment if ((gBattleMons[battler].status1 & STATUS1_ANY) && (gBattleMons[battler].hp >= gBattleMons[battler].maxHP / 2) - && AI_DATA->mostSuitableMonId[battler] != PARTY_SIZE + && gAiLogicData->mostSuitableMonId[battler] != PARTY_SIZE && (hasStatRaised ? RandomPercentage(RNG_AI_SWITCH_NATURAL_CURE, GetSwitchChance(SHOULD_SWITCH_NATURAL_CURE_WEAK_STATS_RAISED)) : RandomPercentage(RNG_AI_SWITCH_NATURAL_CURE, GetSwitchChance(SHOULD_SWITCH_NATURAL_CURE_WEAK)))) break; @@ -729,12 +769,17 @@ static bool32 ShouldSwitchIfAbilityBenefit(u32 battler) if (gBattleMons[battler].status1 & STATUS1_ANY) return FALSE; if ((gBattleMons[battler].hp <= ((gBattleMons[battler].maxHP * 2) / 3)) - && AI_DATA->mostSuitableMonId[battler] != PARTY_SIZE + && gAiLogicData->mostSuitableMonId[battler] != PARTY_SIZE && (hasStatRaised ? RandomPercentage(RNG_AI_SWITCH_REGENERATOR, GetSwitchChance(SHOULD_SWITCH_REGENERATOR_STATS_RAISED)) : RandomPercentage(RNG_AI_SWITCH_REGENERATOR, GetSwitchChance(SHOULD_SWITCH_REGENERATOR)))) break; return FALSE; + case ABILITY_ZERO_TO_HERO: + // Want to activate Palafin-Zero at all costs + if (gBattleMons[battler].species == SPECIES_PALAFIN_ZERO) + break; + default: return FALSE; } @@ -742,7 +787,7 @@ static bool32 ShouldSwitchIfAbilityBenefit(u32 battler) return SetSwitchinAndSwitch(battler, PARTY_SIZE); } -static bool32 HasSuperEffectiveMoveAgainstOpponents(u32 battler, bool32 noRng) +static bool32 CanUseSuperEffectiveMoveAgainstOpponents(u32 battler) { s32 i; u16 move; @@ -755,15 +800,12 @@ static bool32 HasSuperEffectiveMoveAgainstOpponents(u32 battler, bool32 noRng) for (i = 0; i < MAX_MON_MOVES; i++) { move = gBattleMons[battler].moves[i]; - if (move == MOVE_NONE) + if (move == MOVE_NONE || AI_DoesChoiceItemBlockMove(battler, move)) continue; if (AI_GetMoveEffectiveness(move, battler, opposingBattler) >= UQ_4_12(2.0)) { - if (noRng) - return TRUE; - if (Random() % 10 != 0) - return TRUE; + return TRUE; } } } @@ -777,15 +819,12 @@ static bool32 HasSuperEffectiveMoveAgainstOpponents(u32 battler, bool32 noRng) for (i = 0; i < MAX_MON_MOVES; i++) { move = gBattleMons[battler].moves[i]; - if (move == MOVE_NONE) + if (move == MOVE_NONE || AI_DoesChoiceItemBlockMove(battler, move)) continue; if (AI_GetMoveEffectiveness(move, battler, opposingBattler) >= UQ_4_12(2.0)) { - if (noRng) - return TRUE; - if (Random() % 10 != 0) - return TRUE; + return TRUE; } } } @@ -803,7 +842,7 @@ static bool32 FindMonWithFlagsAndSuperEffective(u32 battler, u16 flags, u32 perc u16 move; // Similar functionality handled more thoroughly by ShouldSwitchIfHasBadOdds - if (AI_THINKING_STRUCT->aiFlags[GetThinkingBattler(battler)] & AI_FLAG_SMART_SWITCHING) + if (gAiThinkingStruct->aiFlags[GetThinkingBattler(battler)] & AI_FLAG_SMART_SWITCHING) return FALSE; if (gLastLandedMoves[battler] == MOVE_NONE) @@ -865,7 +904,7 @@ static bool32 FindMonWithFlagsAndSuperEffective(u32 battler, u16 flags, u32 perc if (move == 0) continue; - if (AI_GetMoveEffectiveness(move, battler, battlerIn1) >= UQ_4_12(2.0) && (RandomPercentage(RNG_AI_SWITCH_SE_DEFENSIVE, percentChance) || AI_DATA->aiSwitchPredictionInProgress)) + if (AI_GetMoveEffectiveness(move, battler, battlerIn1) >= UQ_4_12(2.0) && (RandomPercentage(RNG_AI_SWITCH_SE_DEFENSIVE, percentChance) || gAiLogicData->aiPredictionInProgress)) return SetSwitchinAndSwitch(battler, i); } } @@ -878,7 +917,7 @@ static bool32 CanMonSurviveHazardSwitchin(u32 battler) { u32 battlerIn1, battlerIn2; u32 hazardDamage = 0, battlerHp = gBattleMons[battler].hp; - u32 ability = AI_DATA->abilities[battler], aiMove; + u32 ability = gAiLogicData->abilities[battler], aiMove; s32 firstId, lastId, i, j; struct Pokemon *party; @@ -941,7 +980,7 @@ static bool32 ShouldSwitchIfEncored(u32 battler) u32 opposingBattler = GetOppositeBattler(battler); // Only use this if AI_FLAG_SMART_SWITCHING is set for the trainer - if (!(AI_THINKING_STRUCT->aiFlags[GetThinkingBattler(battler)] & AI_FLAG_SMART_SWITCHING)) + if (!(gAiThinkingStruct->aiFlags[GetThinkingBattler(battler)] & AI_FLAG_SMART_SWITCHING)) return FALSE; // If not Encore'd don't switch @@ -957,7 +996,7 @@ static bool32 ShouldSwitchIfEncored(u32 battler) return FALSE; // Switch out 50% of the time otherwise - else if ((RandomPercentage(RNG_AI_SWITCH_ENCORE, GetSwitchChance(SHOULD_SWITCH_ENCORE_DAMAGE)) || AI_DATA->aiSwitchPredictionInProgress) && AI_DATA->mostSuitableMonId[battler] != PARTY_SIZE) + else if ((RandomPercentage(RNG_AI_SWITCH_ENCORE, GetSwitchChance(SHOULD_SWITCH_ENCORE_DAMAGE)) || gAiLogicData->aiPredictionInProgress) && gAiLogicData->mostSuitableMonId[battler] != PARTY_SIZE) return SetSwitchinAndSwitch(battler, PARTY_SIZE); return FALSE; @@ -965,11 +1004,19 @@ static bool32 ShouldSwitchIfEncored(u32 battler) static bool32 ShouldSwitchIfBadChoiceLock(u32 battler) { - u32 holdEffect = GetBattlerHoldEffect(battler, FALSE); + enum ItemHoldEffect holdEffect = GetBattlerHoldEffect(battler, FALSE); + u32 lastUsedMove = gAiLogicData->lastUsedMove[battler]; + u32 opposingBattler = GetOppositeBattler(battler); + bool32 moveAffectsTarget = TRUE; + + if (lastUsedMove != MOVE_NONE && (AI_GetMoveEffectiveness(lastUsedMove, battler, opposingBattler) == UQ_4_12(0.0) + || CanAbilityAbsorbMove(battler, opposingBattler, gAiLogicData->abilities[opposingBattler], lastUsedMove, GetMoveType(lastUsedMove), ABILITY_CHECK_TRIGGER) + || CanAbilityBlockMove(battler, opposingBattler, gAiLogicData->abilities[battler], gAiLogicData->abilities[opposingBattler], lastUsedMove, ABILITY_CHECK_TRIGGER))) + moveAffectsTarget = FALSE; if (HOLD_EFFECT_CHOICE(holdEffect) && IsBattlerItemEnabled(battler)) { - if (GetMoveCategory(AI_DATA->lastUsedMove[battler]) == DAMAGE_CATEGORY_STATUS && RandomPercentage(RNG_AI_SWITCH_CHOICE_LOCKED, GetSwitchChance(SHOULD_SWITCH_CHOICE_LOCKED))) + if ((GetMoveCategory(lastUsedMove) == DAMAGE_CATEGORY_STATUS || !moveAffectsTarget) && RandomPercentage(RNG_AI_SWITCH_CHOICE_LOCKED, GetSwitchChance(SHOULD_SWITCH_CHOICE_LOCKED))) return SetSwitchinAndSwitch(battler, PARTY_SIZE); } @@ -983,7 +1030,7 @@ static bool32 ShouldSwitchIfAttackingStatsLowered(u32 battler) s8 spAttackingStage = gBattleMons[battler].statStages[STAT_SPATK]; // Only use this if AI_FLAG_SMART_SWITCHING is set for the trainer - if (!(AI_THINKING_STRUCT->aiFlags[GetThinkingBattler(battler)] & AI_FLAG_SMART_SWITCHING)) + if (!(gAiThinkingStruct->aiFlags[GetThinkingBattler(battler)] & AI_FLAG_SMART_SWITCHING)) return FALSE; // Physical attacker @@ -995,7 +1042,7 @@ static bool32 ShouldSwitchIfAttackingStatsLowered(u32 battler) // 50% chance if attack at -2 and have a good candidate mon else if (attackingStage == DEFAULT_STAT_STAGE - 2) { - if (AI_DATA->mostSuitableMonId[battler] != PARTY_SIZE && (RandomPercentage(RNG_AI_SWITCH_STATS_LOWERED, GetSwitchChance(SHOULD_SWITCH_ATTACKING_STAT_MINUS_TWO)) || AI_DATA->aiSwitchPredictionInProgress)) + if (gAiLogicData->mostSuitableMonId[battler] != PARTY_SIZE && (RandomPercentage(RNG_AI_SWITCH_STATS_LOWERED, GetSwitchChance(SHOULD_SWITCH_ATTACKING_STAT_MINUS_TWO)) || gAiLogicData->aiPredictionInProgress)) return SetSwitchinAndSwitch(battler, PARTY_SIZE); } // If at -3 or worse, switch out regardless @@ -1012,7 +1059,7 @@ static bool32 ShouldSwitchIfAttackingStatsLowered(u32 battler) // 50% chance if attack at -2 and have a good candidate mon else if (spAttackingStage == DEFAULT_STAT_STAGE - 2) { - if (AI_DATA->mostSuitableMonId[battler] != PARTY_SIZE && (RandomPercentage(RNG_AI_SWITCH_STATS_LOWERED, GetSwitchChance(SHOULD_SWITCH_ATTACKING_STAT_MINUS_TWO)) || AI_DATA->aiSwitchPredictionInProgress)) + if (gAiLogicData->mostSuitableMonId[battler] != PARTY_SIZE && (RandomPercentage(RNG_AI_SWITCH_STATS_LOWERED, GetSwitchChance(SHOULD_SWITCH_ATTACKING_STAT_MINUS_TWO)) || gAiLogicData->aiPredictionInProgress)) return SetSwitchinAndSwitch(battler, PARTY_SIZE); } // If at -3 or worse, switch out regardless @@ -1022,23 +1069,6 @@ static bool32 ShouldSwitchIfAttackingStatsLowered(u32 battler) return FALSE; } -static bool32 HasGoodSubstituteMove(u32 battler) -{ - int i; - u32 aiMove, aiMoveEffect, opposingBattler = GetOppositeBattler(battler); - for (i = 0; i < MAX_MON_MOVES; i++) - { - aiMove = gBattleMons[battler].moves[i]; - aiMoveEffect = GetMoveEffect(aiMove); - if (IsSubstituteEffect(aiMoveEffect)) - { - if (IncreaseSubstituteMoveScore(battler, opposingBattler, aiMove) > 0) - return TRUE; - } - } - return FALSE; -} - bool32 ShouldSwitch(u32 battler) { u32 battlerIn1, battlerIn2; @@ -1058,7 +1088,7 @@ bool32 ShouldSwitch(u32 battler) return FALSE; // Sequence Switching AI never switches mid-battle - if (AI_THINKING_STRUCT->aiFlags[GetThinkingBattler(battler)] & AI_FLAG_SEQUENCE_SWITCHING) + if (gAiThinkingStruct->aiFlags[GetThinkingBattler(battler)] & AI_FLAG_SEQUENCE_SWITCHING) return FALSE; availableToSwitch = 0; @@ -1108,11 +1138,9 @@ bool32 ShouldSwitch(u32 battler) // FindMon functions can prompt a switch to specific party members that override GetMostSuitableMonToSwitchInto // The rest can prompt a switch to party member returned by GetMostSuitableMonToSwitchInto - if (FindMonThatHitsWonderGuard(battler)) + if (ShouldSwitchIfWonderGuard(battler)) return TRUE; - if ((AI_THINKING_STRUCT->aiFlags[GetThinkingBattler(battler)] & AI_FLAG_SMART_SWITCHING) && (CanMonSurviveHazardSwitchin(battler) == FALSE)) - return FALSE; - if (HasGoodSubstituteMove(battler)) + if ((gAiThinkingStruct->aiFlags[GetThinkingBattler(battler)] & AI_FLAG_SMART_SWITCHING) && (CanMonSurviveHazardSwitchin(battler) == FALSE)) return FALSE; if (ShouldSwitchIfTrapperInParty(battler)) return TRUE; @@ -1140,9 +1168,9 @@ bool32 ShouldSwitch(u32 battler) // Removing switch capabilites under specific conditions // These Functions prevent the "FindMonWithFlagsAndSuperEffective" from getting out of hand. // We don't use FindMonWithFlagsAndSuperEffective with AI_FLAG_SMART_SWITCHING, so we can bail early. - if (AI_THINKING_STRUCT->aiFlags[GetThinkingBattler(battler)] & AI_FLAG_SMART_SWITCHING) + if (gAiThinkingStruct->aiFlags[GetThinkingBattler(battler)] & AI_FLAG_SMART_SWITCHING) return FALSE; - if (HasSuperEffectiveMoveAgainstOpponents(battler, FALSE)) + if (CanUseSuperEffectiveMoveAgainstOpponents(battler)) return FALSE; if (AreStatsRaised(battler)) return FALSE; @@ -1156,6 +1184,109 @@ bool32 ShouldSwitch(u32 battler) return FALSE; } +bool32 ShouldSwitchIfAllScoresBad(u32 battler) +{ + u32 i, score, opposingBattler = GetOppositeBattler(battler); + if (!(gAiThinkingStruct->aiFlags[GetThinkingBattler(battler)] & AI_FLAG_SMART_SWITCHING)) + return FALSE; + + for (i = 0; i < MAX_MON_MOVES; i++) + { + score = gAiBattleData->finalScore[battler][opposingBattler][i]; + if (score > AI_BAD_SCORE_THRESHOLD) + return FALSE; + } + if (RandomPercentage(RNG_AI_SWITCH_ALL_SCORES_BAD, GetSwitchChance(SHOULD_SWITCH_ALL_SCORES_BAD))) + return TRUE; + return FALSE; +} + +bool32 ShouldStayInToUseMove(u32 battler) +{ + u32 i, aiMove, opposingBattler = GetOppositeBattler(battler); + enum BattleMoveEffects aiMoveEffect; + for (i = 0; i < MAX_MON_MOVES; i++) + { + aiMove = gBattleMons[battler].moves[i]; + aiMoveEffect = GetMoveEffect(aiMove); + if (aiMoveEffect == EFFECT_REVIVAL_BLESSING || IsSwitchOutEffect(aiMoveEffect)) + { + if (gAiBattleData->finalScore[battler][opposingBattler][i] > AI_GOOD_SCORE_THRESHOLD) + return TRUE; + } + } + return FALSE; +} + +void ModifySwitchAfterMoveScoring(u32 battler) +{ + u32 battlerIn1, battlerIn2; + s32 firstId; + s32 lastId; // + 1 + struct Pokemon *party; + s32 i; + s32 availableToSwitch; + + if (gBattleMons[battler].status2 & (STATUS2_WRAPPED | STATUS2_ESCAPE_PREVENTION)) + return; + if (gStatuses3[battler] & STATUS3_ROOTED) + return; + if (IsAbilityPreventingEscape(battler)) + return; + if (gBattleTypeFlags & BATTLE_TYPE_ARENA) + return; + + // Sequence Switching AI never switches mid-battle + if (gAiThinkingStruct->aiFlags[GetThinkingBattler(battler)] & AI_FLAG_SEQUENCE_SWITCHING) + return; + + availableToSwitch = 0; + + if (IsDoubleBattle()) + { + u32 partner = GetBattlerAtPosition(BATTLE_PARTNER(GetBattlerAtPosition(battler))); + battlerIn1 = battler; + if (gAbsentBattlerFlags & (1u << partner)) + battlerIn2 = battler; + else + battlerIn2 = partner; + } + else + { + battlerIn1 = battler; + battlerIn2 = battler; + } + + GetAIPartyIndexes(battler, &firstId, &lastId); + party = GetBattlerParty(battler); + + for (i = firstId; i < lastId; i++) + { + if (!IsValidForBattle(&party[i])) + continue; + if (i == gBattlerPartyIndexes[battlerIn1]) + continue; + if (i == gBattlerPartyIndexes[battlerIn2]) + continue; + if (i == gBattleStruct->monToSwitchIntoId[battlerIn1]) + continue; + if (i == gBattleStruct->monToSwitchIntoId[battlerIn2]) + continue; + if (IsAceMon(battler, i)) + continue; + + availableToSwitch++; + } + + if (availableToSwitch == 0) + return; + + if (ShouldSwitchIfAllScoresBad(battler)) + gAiLogicData->shouldSwitch |= (1u << battler); + else if (ShouldStayInToUseMove(battler)) + gAiLogicData->shouldSwitch &= ~(1u << battler); +} + bool32 IsSwitchinValid(u32 battler) { // Edge case: See if partner already chose to switch into the same mon @@ -1164,14 +1295,14 @@ bool32 IsSwitchinValid(u32 battler) u32 partner = GetBattlerAtPosition(BATTLE_PARTNER(GetBattlerAtPosition(battler))); if (gBattleStruct->AI_monToSwitchIntoId[battler] == PARTY_SIZE) // Generic switch { - if ((AI_DATA->shouldSwitch & (1u << partner)) && AI_DATA->monToSwitchInId[partner] == AI_DATA->mostSuitableMonId[battler]) + if ((gAiLogicData->shouldSwitch & (1u << partner)) && gAiLogicData->monToSwitchInId[partner] == gAiLogicData->mostSuitableMonId[battler]) { return FALSE; } } else // Override switch { - if ((AI_DATA->shouldSwitch & (1u << partner)) && AI_DATA->monToSwitchInId[partner] == gBattleStruct->AI_monToSwitchIntoId[battler]) + if ((gAiLogicData->shouldSwitch & (1u << partner)) && gAiLogicData->monToSwitchInId[partner] == gBattleStruct->AI_monToSwitchIntoId[battler]) { return FALSE; } @@ -1191,12 +1322,12 @@ void AI_TrySwitchOrUseItem(u32 battler) if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) { - if (AI_DATA->shouldSwitch & (1u << battler) && IsSwitchinValid(battler)) + if (gAiLogicData->shouldSwitch & (1u << battler) && IsSwitchinValid(battler)) { BtlController_EmitTwoReturnValues(battler, 1, B_ACTION_SWITCH, 0); if (gBattleStruct->AI_monToSwitchIntoId[battler] == PARTY_SIZE) { - s32 monToSwitchId = AI_DATA->mostSuitableMonId[battler]; + s32 monToSwitchId = gAiLogicData->mostSuitableMonId[battler]; if (monToSwitchId == PARTY_SIZE) { if (!IsDoubleBattle()) @@ -1235,7 +1366,7 @@ void AI_TrySwitchOrUseItem(u32 battler) } gBattleStruct->monToSwitchIntoId[battler] = gBattleStruct->AI_monToSwitchIntoId[battler]; - AI_DATA->monToSwitchInId[battler] = gBattleStruct->AI_monToSwitchIntoId[battler]; + gAiLogicData->monToSwitchInId[battler] = gBattleStruct->AI_monToSwitchIntoId[battler]; return; } else if (ShouldUseItem(battler)) @@ -1347,7 +1478,6 @@ static u32 GetBestMonDmg(struct Pokemon *party, int firstId, int lastId, u8 inva int i, j; int dmg, bestDmg = 0; int bestMonId = PARTY_SIZE; - u32 rollType = GetDmgRollType(battler); u32 aiMove; @@ -1359,11 +1489,11 @@ static u32 GetBestMonDmg(struct Pokemon *party, int firstId, int lastId, u8 inva InitializeSwitchinCandidate(&party[i]); for (j = 0; j < MAX_MON_MOVES; j++) { - aiMove = AI_DATA->switchinCandidate.battleMon.moves[j]; + aiMove = gAiLogicData->switchinCandidate.battleMon.moves[j]; if (aiMove != MOVE_NONE && !IsBattleMoveStatus(aiMove)) { aiMove = GetMonData(&party[i], MON_DATA_MOVE1 + j); - dmg = AI_CalcPartyMonDamage(aiMove, battler, opposingBattler, AI_DATA->switchinCandidate.battleMon, TRUE, rollType); + dmg = AI_CalcPartyMonDamage(aiMove, battler, opposingBattler, gAiLogicData->switchinCandidate.battleMon, AI_ATTACKING); if (bestDmg < dmg) { bestDmg = dmg; @@ -1453,8 +1583,8 @@ static u32 GetSwitchinHazardsDamage(u32 battler, struct BattlePokemon *battleMon // Gets damage / healing from weather static s32 GetSwitchinWeatherImpact(void) { - s32 weatherImpact = 0, maxHP = AI_DATA->switchinCandidate.battleMon.maxHP, ability = AI_DATA->switchinCandidate.battleMon.ability; - u32 holdEffect = GetItemHoldEffect(AI_DATA->switchinCandidate.battleMon.item); + s32 weatherImpact = 0, maxHP = gAiLogicData->switchinCandidate.battleMon.maxHP, ability = gAiLogicData->switchinCandidate.battleMon.ability; + enum ItemHoldEffect holdEffect = GetItemHoldEffect(gAiLogicData->switchinCandidate.battleMon.item); if (HasWeatherEffect()) { @@ -1462,7 +1592,7 @@ static s32 GetSwitchinWeatherImpact(void) if (holdEffect != HOLD_EFFECT_SAFETY_GOGGLES && ability != ABILITY_MAGIC_GUARD && ability != ABILITY_OVERCOAT) { if ((gBattleWeather & B_WEATHER_HAIL) - && (AI_DATA->switchinCandidate.battleMon.types[0] != TYPE_ICE || AI_DATA->switchinCandidate.battleMon.types[1] != TYPE_ICE) + && (gAiLogicData->switchinCandidate.battleMon.types[0] != TYPE_ICE || gAiLogicData->switchinCandidate.battleMon.types[1] != TYPE_ICE) && ability != ABILITY_SNOW_CLOAK && ability != ABILITY_ICE_BODY) { weatherImpact = maxHP / 16; @@ -1470,9 +1600,9 @@ static s32 GetSwitchinWeatherImpact(void) weatherImpact = 1; } else if ((gBattleWeather & B_WEATHER_SANDSTORM) - && (AI_DATA->switchinCandidate.battleMon.types[0] != TYPE_GROUND && AI_DATA->switchinCandidate.battleMon.types[1] != TYPE_GROUND - && AI_DATA->switchinCandidate.battleMon.types[0] != TYPE_ROCK && AI_DATA->switchinCandidate.battleMon.types[1] != TYPE_ROCK - && AI_DATA->switchinCandidate.battleMon.types[0] != TYPE_STEEL && AI_DATA->switchinCandidate.battleMon.types[1] != TYPE_STEEL + && (gAiLogicData->switchinCandidate.battleMon.types[0] != TYPE_GROUND && gAiLogicData->switchinCandidate.battleMon.types[1] != TYPE_GROUND + && gAiLogicData->switchinCandidate.battleMon.types[0] != TYPE_ROCK && gAiLogicData->switchinCandidate.battleMon.types[1] != TYPE_ROCK + && gAiLogicData->switchinCandidate.battleMon.types[0] != TYPE_STEEL && gAiLogicData->switchinCandidate.battleMon.types[1] != TYPE_STEEL && ability != ABILITY_SAND_VEIL && ability != ABILITY_SAND_RUSH && ability != ABILITY_SAND_FORCE)) { weatherImpact = maxHP / 16; @@ -1517,13 +1647,13 @@ static s32 GetSwitchinWeatherImpact(void) // Gets one turn of recurring healing static u32 GetSwitchinRecurringHealing(void) { - u32 recurringHealing = 0, maxHP = AI_DATA->switchinCandidate.battleMon.maxHP, ability = AI_DATA->switchinCandidate.battleMon.ability; - u32 holdEffect = GetItemHoldEffect(AI_DATA->switchinCandidate.battleMon.item); + u32 recurringHealing = 0, maxHP = gAiLogicData->switchinCandidate.battleMon.maxHP, ability = gAiLogicData->switchinCandidate.battleMon.ability; + enum ItemHoldEffect holdEffect = GetItemHoldEffect(gAiLogicData->switchinCandidate.battleMon.item); // Items if (ability != ABILITY_KLUTZ) { - if (holdEffect == HOLD_EFFECT_BLACK_SLUDGE && (AI_DATA->switchinCandidate.battleMon.types[0] == TYPE_POISON || AI_DATA->switchinCandidate.battleMon.types[1] == TYPE_POISON)) + if (holdEffect == HOLD_EFFECT_BLACK_SLUDGE && (gAiLogicData->switchinCandidate.battleMon.types[0] == TYPE_POISON || gAiLogicData->switchinCandidate.battleMon.types[1] == TYPE_POISON)) { recurringHealing = maxHP / 16; if (recurringHealing == 0) @@ -1538,7 +1668,7 @@ static u32 GetSwitchinRecurringHealing(void) } // Intentionally omitting Shell Bell for its inconsistency // Abilities - if (ability == ABILITY_POISON_HEAL && (AI_DATA->switchinCandidate.battleMon.status1 & STATUS1_POISON)) + if (ability == ABILITY_POISON_HEAL && (gAiLogicData->switchinCandidate.battleMon.status1 & STATUS1_POISON)) { u32 healing = maxHP / 8; if (healing == 0) @@ -1551,13 +1681,13 @@ static u32 GetSwitchinRecurringHealing(void) // Gets one turn of recurring damage static u32 GetSwitchinRecurringDamage(void) { - u32 passiveDamage = 0, maxHP = AI_DATA->switchinCandidate.battleMon.maxHP, ability = AI_DATA->switchinCandidate.battleMon.ability; - u32 holdEffect = GetItemHoldEffect(AI_DATA->switchinCandidate.battleMon.item); + u32 passiveDamage = 0, maxHP = gAiLogicData->switchinCandidate.battleMon.maxHP, ability = gAiLogicData->switchinCandidate.battleMon.ability; + enum ItemHoldEffect holdEffect = GetItemHoldEffect(gAiLogicData->switchinCandidate.battleMon.item); // Items if (ability != ABILITY_MAGIC_GUARD && ability != ABILITY_KLUTZ) { - if (holdEffect == HOLD_EFFECT_BLACK_SLUDGE && AI_DATA->switchinCandidate.battleMon.types[0] != TYPE_POISON && AI_DATA->switchinCandidate.battleMon.types[1] != TYPE_POISON) + if (holdEffect == HOLD_EFFECT_BLACK_SLUDGE && gAiLogicData->switchinCandidate.battleMon.types[0] != TYPE_POISON && gAiLogicData->switchinCandidate.battleMon.types[1] != TYPE_POISON) { passiveDamage = maxHP / 8; if (passiveDamage == 0) @@ -1582,14 +1712,14 @@ static u32 GetSwitchinRecurringDamage(void) // Gets one turn of status damage static u32 GetSwitchinStatusDamage(u32 battler) { - u8 defType1 = AI_DATA->switchinCandidate.battleMon.types[0], defType2 = AI_DATA->switchinCandidate.battleMon.types[1]; + u8 defType1 = gAiLogicData->switchinCandidate.battleMon.types[0], defType2 = gAiLogicData->switchinCandidate.battleMon.types[1]; u8 tSpikesLayers = gSideTimers[GetBattlerSide(battler)].toxicSpikesAmount; - u16 heldItemEffect = GetItemHoldEffect(AI_DATA->switchinCandidate.battleMon.item); - u32 status = AI_DATA->switchinCandidate.battleMon.status1, ability = AI_DATA->switchinCandidate.battleMon.ability, maxHP = AI_DATA->switchinCandidate.battleMon.maxHP; + u16 heldItemEffect = GetItemHoldEffect(gAiLogicData->switchinCandidate.battleMon.item); + u32 status = gAiLogicData->switchinCandidate.battleMon.status1, ability = gAiLogicData->switchinCandidate.battleMon.ability, maxHP = gAiLogicData->switchinCandidate.battleMon.maxHP; u32 statusDamage = 0; // Status condition damage - if ((status != 0) && AI_DATA->switchinCandidate.battleMon.ability != ABILITY_MAGIC_GUARD) + if ((status != 0) && gAiLogicData->switchinCandidate.battleMon.ability != ABILITY_MAGIC_GUARD) { if (status & STATUS1_BURN) { @@ -1620,11 +1750,11 @@ static u32 GetSwitchinStatusDamage(u32 battler) else if ((status & STATUS1_TOXIC_POISON) && ability != ABILITY_POISON_HEAL) { if ((status & STATUS1_TOXIC_COUNTER) != STATUS1_TOXIC_TURN(15)) // not 16 turns - AI_DATA->switchinCandidate.battleMon.status1 += STATUS1_TOXIC_TURN(1); + gAiLogicData->switchinCandidate.battleMon.status1 += STATUS1_TOXIC_TURN(1); statusDamage = maxHP / 16; if (statusDamage == 0) statusDamage = 1; - statusDamage *= AI_DATA->switchinCandidate.battleMon.status1 & STATUS1_TOXIC_COUNTER >> 8; + statusDamage *= gAiLogicData->switchinCandidate.battleMon.status1 & STATUS1_TOXIC_COUNTER >> 8; } } @@ -1640,14 +1770,14 @@ static u32 GetSwitchinStatusDamage(u32 battler) { if (tSpikesLayers == 1) { - AI_DATA->switchinCandidate.battleMon.status1 = STATUS1_POISON; // Assign "hypothetical" status to the switchin candidate so we can get the damage it would take from TSpikes - AI_DATA->switchinCandidate.hypotheticalStatus = TRUE; + gAiLogicData->switchinCandidate.battleMon.status1 = STATUS1_POISON; // Assign "hypothetical" status to the switchin candidate so we can get the damage it would take from TSpikes + gAiLogicData->switchinCandidate.hypotheticalStatus = TRUE; } if (tSpikesLayers == 2) { - AI_DATA->switchinCandidate.battleMon.status1 = STATUS1_TOXIC_POISON; // Assign "hypothetical" status to the switchin candidate so we can get the damage it would take from TSpikes - AI_DATA->switchinCandidate.battleMon.status1 += STATUS1_TOXIC_TURN(1); - AI_DATA->switchinCandidate.hypotheticalStatus = TRUE; + gAiLogicData->switchinCandidate.battleMon.status1 = STATUS1_TOXIC_POISON; // Assign "hypothetical" status to the switchin candidate so we can get the damage it would take from TSpikes + gAiLogicData->switchinCandidate.battleMon.status1 += STATUS1_TOXIC_TURN(1); + gAiLogicData->switchinCandidate.hypotheticalStatus = TRUE; } } return statusDamage; @@ -1656,16 +1786,16 @@ static u32 GetSwitchinStatusDamage(u32 battler) // Gets number of hits to KO factoring in hazards, healing held items, status, and weather static u32 GetSwitchinHitsToKO(s32 damageTaken, u32 battler) { - u32 startingHP = AI_DATA->switchinCandidate.battleMon.hp - GetSwitchinHazardsDamage(battler, &AI_DATA->switchinCandidate.battleMon); + u32 startingHP = gAiLogicData->switchinCandidate.battleMon.hp - GetSwitchinHazardsDamage(battler, &gAiLogicData->switchinCandidate.battleMon); s32 weatherImpact = GetSwitchinWeatherImpact(); // Signed to handle both damage and healing in the same value u32 recurringDamage = GetSwitchinRecurringDamage(); u32 recurringHealing = GetSwitchinRecurringHealing(); u32 statusDamage = GetSwitchinStatusDamage(battler); u32 hitsToKO = 0, singleUseItemHeal = 0; - u16 maxHP = AI_DATA->switchinCandidate.battleMon.maxHP, item = AI_DATA->switchinCandidate.battleMon.item, heldItemEffect = GetItemHoldEffect(item); + u16 maxHP = gAiLogicData->switchinCandidate.battleMon.maxHP, item = gAiLogicData->switchinCandidate.battleMon.item, heldItemEffect = GetItemHoldEffect(item); u8 weatherDuration = gWishFutureKnock.weatherDuration, holdEffectParam = GetItemHoldEffectParam(item); u32 opposingBattler = GetOppositeBattler(battler); - u32 opposingAbility = gBattleMons[opposingBattler].ability, ability = AI_DATA->switchinCandidate.battleMon.ability; + u32 opposingAbility = gBattleMons[opposingBattler].ability, ability = gAiLogicData->switchinCandidate.battleMon.ability; bool32 usedSingleUseHealingItem = FALSE, opponentCanBreakMold = IsMoldBreakerTypeAbility(opposingBattler, opposingAbility); s32 currentHP = startingHP; @@ -1696,7 +1826,7 @@ static u32 GetSwitchinHitsToKO(s32 damageTaken, u32 battler) currentHP = currentHP - weatherImpact; // Check if we're at a single use healing item threshold - if (AI_DATA->switchinCandidate.battleMon.ability != ABILITY_KLUTZ && usedSingleUseHealingItem == FALSE + if (gAiLogicData->switchinCandidate.battleMon.ability != ABILITY_KLUTZ && usedSingleUseHealingItem == FALSE && !(opposingAbility == ABILITY_UNNERVE && GetPocketByItemId(item) == POCKET_BERRIES)) { switch (heldItemEffect) @@ -1743,7 +1873,7 @@ static u32 GetSwitchinHitsToKO(s32 damageTaken, u32 battler) currentHP = currentHP + recurringHealing - recurringDamage - statusDamage; // Recalculate toxic damage if needed - if (AI_DATA->switchinCandidate.battleMon.status1 & STATUS1_TOXIC_POISON) + if (gAiLogicData->switchinCandidate.battleMon.status1 & STATUS1_TOXIC_POISON) statusDamage = GetSwitchinStatusDamage(battler); // Reduce weather duration @@ -1754,14 +1884,14 @@ static u32 GetSwitchinHitsToKO(s32 damageTaken, u32 battler) } // Disguise will always add an extra hit to KO - if (opponentCanBreakMold && AI_DATA->switchinCandidate.battleMon.species == SPECIES_MIMIKYU_DISGUISED) + if (opponentCanBreakMold && gAiLogicData->switchinCandidate.battleMon.species == SPECIES_MIMIKYU_DISGUISED) hitsToKO++; // If mon had a hypothetical status from TSpikes, clear it - if (AI_DATA->switchinCandidate.hypotheticalStatus == TRUE) + if (gAiLogicData->switchinCandidate.hypotheticalStatus == TRUE) { - AI_DATA->switchinCandidate.battleMon.status1 = 0; - AI_DATA->switchinCandidate.hypotheticalStatus = FALSE; + gAiLogicData->switchinCandidate.battleMon.status1 = 0; + gAiLogicData->switchinCandidate.hypotheticalStatus = FALSE; } return hitsToKO; } @@ -1818,7 +1948,9 @@ static s32 GetMaxDamagePlayerCouldDealToSwitchin(u32 battler, u32 opposingBattle playerMove = gBattleMons[opposingBattler].moves[i]; if (playerMove != MOVE_NONE && !IsBattleMoveStatus(playerMove) && GetMoveEffect(playerMove) != EFFECT_FOCUS_PUNCH) { - damageTaken = AI_CalcPartyMonDamage(playerMove, opposingBattler, battler, battleMon, FALSE, DMG_ROLL_HIGHEST); + damageTaken = AI_CalcPartyMonDamage(playerMove, opposingBattler, battler, battleMon, AI_DEFENDING); + if (playerMove == gBattleStruct->choicedMove[opposingBattler]) // If player is choiced, only care about the choice locked move + return damageTaken; if (damageTaken > maxDamageTaken) maxDamageTaken = damageTaken; } @@ -1832,7 +1964,7 @@ static bool32 CanAbilityTrapOpponent(u16 ability, u32 opponent) 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 + if (B_SHADOW_TAG_ESCAPE >= GEN_4 && gAiLogicData->abilities[opponent] == ABILITY_SHADOW_TAG) // Check if ability exists in species return FALSE; else return TRUE; @@ -1854,9 +1986,9 @@ static inline bool32 IsFreeSwitch(enum SwitchType switchType, u32 battlerSwitchi { if (IsSwitchOutEffect(GetMoveEffect(gCurrentMove)) && movedSecond) return TRUE; - if (AI_DATA->ejectButtonSwitch) + if (gAiLogicData->ejectButtonSwitch) return TRUE; - if (AI_DATA->ejectPackSwitch) + if (gAiLogicData->ejectPackSwitch) { u32 opposingAbility = AI_GetBattlerAbility(opposingBattler); // If faster, not a free switch; likely lowered own stats @@ -1926,40 +2058,27 @@ static u32 GetBestMonIntegrated(struct Pokemon *party, int firstId, int lastId, InitializeSwitchinCandidate(&party[i]); // 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)) + if (gAiLogicData->switchinCandidate.battleMon.ability == ABILITY_TRUANT && IsTruantMonVulnerable(battler, opposingBattler)) continue; // Get max number of hits for player to KO AI mon and type matchup for defensive switching - hitsToKOAI = GetSwitchinHitsToKO(GetMaxDamagePlayerCouldDealToSwitchin(battler, opposingBattler, AI_DATA->switchinCandidate.battleMon), battler); - typeMatchup = GetSwitchinTypeMatchup(opposingBattler, AI_DATA->switchinCandidate.battleMon); - - // Track max hits to KO and set defensive mon - if(hitsToKOAI > maxHitsToKO) - { - maxHitsToKO = hitsToKOAI; - if(maxHitsToKO > defensiveMonHitKOThreshold) - defensiveMonId = i; - } + hitsToKOAI = GetSwitchinHitsToKO(GetMaxDamagePlayerCouldDealToSwitchin(battler, opposingBattler, gAiLogicData->switchinCandidate.battleMon), battler); + typeMatchup = GetSwitchinTypeMatchup(opposingBattler, gAiLogicData->switchinCandidate.battleMon); // Check through current mon's moves for (j = 0; j < MAX_MON_MOVES; j++) { - aiMove = AI_DATA->switchinCandidate.battleMon.moves[j]; + aiMove = gAiLogicData->switchinCandidate.battleMon.moves[j]; if (aiMove != MOVE_NONE && !IsBattleMoveStatus(aiMove)) - { - if (AI_THINKING_STRUCT->aiFlags[GetThinkingBattler(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); - } + damageDealt = AI_CalcPartyMonDamage(aiMove, battler, opposingBattler, gAiLogicData->switchinCandidate.battleMon, AI_ATTACKING); // Offensive switchin decisions are based on which whether switchin moves first and whether it can win a 1v1 - isSwitchinFirst = AI_WhoStrikesFirstPartyMon(battler, opposingBattler, AI_DATA->switchinCandidate.battleMon, aiMove); + isSwitchinFirst = AI_WhoStrikesFirstPartyMon(battler, opposingBattler, gAiLogicData->switchinCandidate.battleMon, aiMove); canSwitchinWin1v1 = CanSwitchinWin1v1(hitsToKOAI, GetNoOfHitsToKOBattlerDmg(damageDealt, opposingBattler), isSwitchinFirst, isFreeSwitch); // 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) + if (GetMoveEffect(aiMove) == EFFECT_BATON_PASS) { if ((isSwitchinFirst && hitsToKOAI > 1) || hitsToKOAI > 2) // Need to take an extra hit if slower bits |= 1u << i; @@ -1975,6 +2094,14 @@ static u32 GetBestMonIntegrated(struct Pokemon *party, int firstId, int lastId, } } + // Track max hits to KO and set defensive mon + if(hitsToKOAI > maxHitsToKO && (canSwitchinWin1v1 || gAiThinkingStruct->aiFlags[battler] & AI_FLAG_STALL)) + { + maxHitsToKO = hitsToKOAI; + if(maxHitsToKO > defensiveMonHitKOThreshold) + defensiveMonId = i; + } + // Check for mon with resistance and super effective move for best type matchup mon with effective move if (aiMove != MOVE_NONE && !IsBattleMoveStatus(aiMove)) { @@ -2030,8 +2157,8 @@ static u32 GetBestMonIntegrated(struct Pokemon *party, int firstId, int lastId, } // If mon can trap - if ((CanAbilityTrapOpponent(AI_DATA->switchinCandidate.battleMon.ability, opposingBattler) - || (CanAbilityTrapOpponent(AI_GetBattlerAbility(opposingBattler), opposingBattler) && AI_DATA->switchinCandidate.battleMon.ability == ABILITY_TRACE)) + if ((CanAbilityTrapOpponent(gAiLogicData->switchinCandidate.battleMon.ability, opposingBattler) + || (CanAbilityTrapOpponent(AI_GetBattlerAbility(opposingBattler), opposingBattler) && gAiLogicData->switchinCandidate.battleMon.ability == ABILITY_TRACE)) && CountUsablePartyMons(opposingBattler) > 0 && canSwitchinWin1v1) trapperId = i; @@ -2066,7 +2193,7 @@ static u32 GetBestMonIntegrated(struct Pokemon *party, int firstId, int lastId, } // If ace mon is the last available Pokemon and U-Turn/Volt Switch or Eject Pack/Button was used - switch to the mon. if (aceMonId != PARTY_SIZE && CountUsablePartyMons(battler) <= aceMonCount - && (IsSwitchOutEffect(GetMoveEffect(gCurrentMove)) || AI_DATA->ejectButtonSwitch || AI_DATA->ejectPackSwitch)) + && (IsSwitchOutEffect(GetMoveEffect(gCurrentMove)) || gAiLogicData->ejectButtonSwitch || gAiLogicData->ejectPackSwitch)) return aceMonId; return PARTY_SIZE; @@ -2128,14 +2255,14 @@ u32 GetMostSuitableMonToSwitchInto(u32 battler, enum SwitchType switchType) GetAIPartyIndexes(battler, &firstId, &lastId); party = GetBattlerParty(battler); - if (AI_THINKING_STRUCT->aiFlags[GetThinkingBattler(battler)] & AI_FLAG_SEQUENCE_SWITCHING) + if (gAiThinkingStruct->aiFlags[GetThinkingBattler(battler)] & AI_FLAG_SEQUENCE_SWITCHING) { bestMonId = GetNextMonInParty(party, firstId, lastId, battlerIn1, battlerIn2); return bestMonId; } // Only use better mon selection if AI_FLAG_SMART_MON_CHOICES is set for the trainer. - if (AI_THINKING_STRUCT->aiFlags[GetThinkingBattler(battler)] & AI_FLAG_SMART_MON_CHOICES && !IsDoubleBattle()) // Double Battles aren't included in AI_FLAG_SMART_MON_CHOICE. Defaults to regular switch in logic + if (gAiThinkingStruct->aiFlags[GetThinkingBattler(battler)] & AI_FLAG_SMART_MON_CHOICES && !IsDoubleBattle()) // Double Battles aren't included in AI_FLAG_SMART_MON_CHOICE. Defaults to regular switch in logic { bestMonId = GetBestMonIntegrated(party, firstId, lastId, battler, opposingBattler, battlerIn1, battlerIn2, switchType); return bestMonId; @@ -2183,7 +2310,7 @@ u32 GetMostSuitableMonToSwitchInto(u32 battler, enum SwitchType switchType) // If ace mon is the last available Pokemon and U-Turn/Volt Switch or Eject Pack/Button was used - switch to the mon. if (aceMonId != PARTY_SIZE && CountUsablePartyMons(battler) <= aceMonCount - && (IsSwitchOutEffect(GetMoveEffect(gCurrentMove)) || AI_DATA->ejectButtonSwitch || AI_DATA->ejectPackSwitch)) + && (IsSwitchOutEffect(GetMoveEffect(gCurrentMove)) || gAiLogicData->ejectButtonSwitch || gAiLogicData->ejectPackSwitch)) return aceMonId; return PARTY_SIZE; @@ -2192,13 +2319,13 @@ u32 GetMostSuitableMonToSwitchInto(u32 battler, enum SwitchType switchType) static bool32 AiExpectsToFaintPlayer(u32 battler) { - u8 target = gBattleStruct->aiChosenTarget[battler]; + u8 target = gAiBattleData->chosenTarget[battler]; - if (gBattleStruct->aiMoveOrAction[battler] > 3) + if (gAiBattleData->actionFlee || gAiBattleData->choiceWatch) return FALSE; // AI not planning to use move - if (GetBattlerSide(target) != GetBattlerSide(battler) - && CanIndexMoveFaintTarget(battler, target, gBattleStruct->aiMoveOrAction[battler], 0) + if (!IsBattlerAlly(target, battler) + && CanIndexMoveFaintTarget(battler, target, gAiBattleData->chosenMoveIndex[battler], AI_ATTACKING) && AI_IsFaster(battler, target, GetAIChosenMove(battler))) { // We expect to faint the target and move first -> dont use an item @@ -2214,6 +2341,7 @@ static bool32 ShouldUseItem(u32 battler) s32 i; u8 validMons = 0; bool32 shouldUse = FALSE; + u32 healAmount = 0; if (IsAiVsAiBattle()) return FALSE; @@ -2245,7 +2373,7 @@ static bool32 ShouldUseItem(u32 battler) const u8 *itemEffects; u8 battlerSide; - item = gBattleResources->battleHistory->trainerItems[i]; + item = gBattleHistory->trainerItems[i]; if (item == ITEM_NONE) continue; itemEffects = GetItemEffect(item); @@ -2255,10 +2383,12 @@ static bool32 ShouldUseItem(u32 battler) switch (GetItemBattleUsage(item)) { case EFFECT_ITEM_HEAL_AND_CURE_STATUS: - shouldUse = AI_ShouldHeal(battler, 0); + healAmount = GetHPHealAmount(itemEffects[GetItemEffectParamOffset(battler, item, 4, ITEM4_HEAL_HP)], GetBattlerMon(battler)); + shouldUse = AI_ShouldHeal(battler, healAmount); break; case EFFECT_ITEM_RESTORE_HP: - shouldUse = AI_ShouldHeal(battler, itemEffects[GetItemEffectParamOffset(battler, item, 4, ITEM4_HEAL_HP)]); + healAmount = GetHPHealAmount(itemEffects[GetItemEffectParamOffset(battler, item, 4, ITEM4_HEAL_HP)], GetBattlerMon(battler)); + shouldUse = AI_ShouldHeal(battler, healAmount); break; case EFFECT_ITEM_CURE_STATUS: if (itemEffects[3] & ITEM3_SLEEP && gBattleMons[battler].status1 & STATUS1_SLEEP) @@ -2313,7 +2443,7 @@ static bool32 ShouldUseItem(u32 battler) gBattleStruct->itemPartyIndex[battler] = gBattlerPartyIndexes[battler]; BtlController_EmitTwoReturnValues(battler, B_COMM_TO_ENGINE, B_ACTION_USE_ITEM, 0); gBattleStruct->chosenItem[battler] = item; - gBattleResources->battleHistory->trainerItems[i] = 0; + gBattleHistory->trainerItems[i] = 0; return shouldUse; } } @@ -2324,6 +2454,9 @@ static bool32 ShouldUseItem(u32 battler) static bool32 AI_ShouldHeal(u32 battler, u32 healAmount) { bool32 shouldHeal = FALSE; + u8 opponent; + u32 maxDamage = 0; + u32 dmg = 0; if (gBattleMons[battler].hp < gBattleMons[battler].maxHP / 4 || gBattleMons[battler].hp == 0 @@ -2333,6 +2466,30 @@ static bool32 AI_ShouldHeal(u32 battler, u32 healAmount) shouldHeal = !AI_OpponentCanFaintAiWithMod(battler, healAmount); // if target can kill us even after we heal, why bother } + //calculate max expected damage from the opponent + for (opponent = 0; opponent < gBattlersCount; opponent++) + { + if (IsOnPlayerSide(opponent)) + { + dmg = GetBestDmgFromBattler(opponent, battler, AI_DEFENDING); + + if (dmg > maxDamage) + maxDamage = dmg; + } + } + + // also heal if a 2HKO is outhealed + if (AI_OpponentCanFaintAiWithMod(battler, 0) + && !AI_OpponentCanFaintAiWithMod(battler, healAmount) + && healAmount > 2*maxDamage) + return TRUE; + + // also heal, if the expected damage is outhealed and it's the last remaining mon + if (AI_OpponentCanFaintAiWithMod(battler, 0) + && !AI_OpponentCanFaintAiWithMod(battler, healAmount) + && CountUsablePartyMons(battler) == 0) + return TRUE; + return shouldHeal; } @@ -2342,7 +2499,7 @@ static bool32 AI_OpponentCanFaintAiWithMod(u32 battler, u32 healAmount) // Check special cases to NOT heal for (i = 0; i < gBattlersCount; i++) { - if (GetBattlerSide(i) == B_SIDE_PLAYER && CanTargetFaintAiWithMod(i, battler, healAmount, 0)) + if (IsOnPlayerSide(i) && CanTargetFaintAiWithMod(i, battler, healAmount, 0)) { // Target is expected to faint us return TRUE; @@ -2350,3 +2507,28 @@ static bool32 AI_OpponentCanFaintAiWithMod(u32 battler, u32 healAmount) } return FALSE; } + +static u32 GetHPHealAmount(u8 itemEffectParam, struct Pokemon *mon) +{ + switch (itemEffectParam) + { + case ITEM6_HEAL_HP_FULL: + itemEffectParam = GetMonData(mon, MON_DATA_MAX_HP, NULL) - GetMonData(mon, MON_DATA_HP, NULL); + break; + case ITEM6_HEAL_HP_HALF: + itemEffectParam = GetMonData(mon, MON_DATA_MAX_HP, NULL) / 2; + if (itemEffectParam == 0) + itemEffectParam = 1; + break; + case ITEM6_HEAL_HP_LVL_UP: + itemEffectParam = gBattleScripting.levelUpHP; + break; + case ITEM6_HEAL_HP_QUARTER: + itemEffectParam = GetMonData(mon, MON_DATA_MAX_HP, NULL) / 4; + if (itemEffectParam == 0) + itemEffectParam = 1; + break; + } + + return itemEffectParam; +} diff --git a/src/battle_ai_util.c b/src/battle_ai_util.c index 13e438a5d4..e71f11c70f 100644 --- a/src/battle_ai_util.c +++ b/src/battle_ai_util.c @@ -24,14 +24,55 @@ #include "constants/items.h" // Functions -u32 GetDmgRollType(u32 battlerAtk) +static bool32 AI_IsDoubleSpreadMove(u32 battlerAtk, u32 move) { - if (AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_RISKY) - return DMG_ROLL_HIGHEST; - if (AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_CONSERVATIVE) - return DMG_ROLL_LOWEST; + u32 numOfTargets = 0; + u32 moveTargetType = GetBattlerMoveTargetType(battlerAtk, move); - return DMG_ROLL_DEFAULT; + if (!IsSpreadMove(moveTargetType)) + return FALSE; + + for (u32 battlerDef = 0; battlerDef < MAX_BATTLERS_COUNT; battlerDef++) + { + if (battlerAtk == battlerDef) + continue; + + if (moveTargetType == MOVE_TARGET_BOTH && battlerAtk == BATTLE_PARTNER(battlerDef)) + continue; + + if (IsBattlerAlive(battlerDef) && !IsSemiInvulnerable(battlerDef, move)) + numOfTargets++; + } + + if (numOfTargets > 1) + return TRUE; + + return FALSE; +} + +u32 AI_GetDamage(u32 battlerAtk, u32 battlerDef, u32 moveIndex, enum DamageCalcContext calcContext, struct AiLogicData *aiData) +{ + if (calcContext == AI_ATTACKING && BattlerHasAi(battlerAtk)) + { + + if ((gAiThinkingStruct->aiFlags[battlerAtk] & AI_FLAG_RISKY) && !(gAiThinkingStruct->aiFlags[battlerAtk] & AI_FLAG_CONSERVATIVE)) // Risky assumes it deals max damage + return aiData->simulatedDmg[battlerAtk][battlerDef][moveIndex].maximum; + if ((gAiThinkingStruct->aiFlags[battlerAtk] & AI_FLAG_CONSERVATIVE) && !(gAiThinkingStruct->aiFlags[battlerAtk] & AI_FLAG_RISKY)) // Conservative assumes it deals min damage + return aiData->simulatedDmg[battlerAtk][battlerDef][moveIndex].minimum; + return aiData->simulatedDmg[battlerAtk][battlerDef][moveIndex].median; // Default assumes it deals median damage + } + else if (calcContext == AI_DEFENDING && BattlerHasAi(battlerDef)) + { + if ((gAiThinkingStruct->aiFlags[battlerAtk] & AI_FLAG_RISKY) && !(gAiThinkingStruct->aiFlags[battlerAtk] & AI_FLAG_CONSERVATIVE)) // Risky assumes it takes min damage + return aiData->simulatedDmg[battlerAtk][battlerDef][moveIndex].minimum; + if ((gAiThinkingStruct->aiFlags[battlerAtk] & AI_FLAG_CONSERVATIVE) && !(gAiThinkingStruct->aiFlags[battlerAtk] & AI_FLAG_RISKY)) // Conservative assumes it takes max damage + return aiData->simulatedDmg[battlerAtk][battlerDef][moveIndex].maximum; + return aiData->simulatedDmg[battlerAtk][battlerDef][moveIndex].median; // Default assumes it takes median damage + } + else + { + return aiData->simulatedDmg[battlerAtk][battlerDef][moveIndex].median; + } } bool32 AI_IsFaster(u32 battlerAi, u32 battlerDef, u32 move) @@ -46,7 +87,7 @@ bool32 AI_IsSlower(u32 battlerAi, u32 battlerDef, u32 move) u32 GetAIChosenMove(u32 battlerId) { - return (gBattleMons[battlerId].moves[gBattleStruct->aiMoveOrAction[battlerId]]); + return (gBattleMons[battlerId].moves[gAiBattleData->chosenMoveIndex[battlerId]]); } bool32 AI_RandLessThan(u32 val) @@ -84,8 +125,8 @@ bool32 BattlerHasAi(u32 battlerId) bool32 IsAiBattlerAware(u32 battlerId) { - if (AI_THINKING_STRUCT->aiFlags[B_POSITION_OPPONENT_LEFT] & AI_FLAG_OMNISCIENT - || AI_THINKING_STRUCT->aiFlags[B_POSITION_OPPONENT_RIGHT] & AI_FLAG_OMNISCIENT) + if (gAiThinkingStruct->aiFlags[B_POSITION_OPPONENT_LEFT] & AI_FLAG_OMNISCIENT + || gAiThinkingStruct->aiFlags[B_POSITION_OPPONENT_RIGHT] & AI_FLAG_OMNISCIENT) return TRUE; return BattlerHasAi(battlerId); @@ -93,8 +134,8 @@ bool32 IsAiBattlerAware(u32 battlerId) bool32 IsAiBattlerPredictingAbility(u32 battlerId) { - if (AI_THINKING_STRUCT->aiFlags[B_POSITION_OPPONENT_LEFT] & AI_FLAG_WEIGH_ABILITY_PREDICTION - || AI_THINKING_STRUCT->aiFlags[B_POSITION_OPPONENT_RIGHT] & AI_FLAG_WEIGH_ABILITY_PREDICTION) + if (gAiThinkingStruct->aiFlags[B_POSITION_OPPONENT_LEFT] & AI_FLAG_WEIGH_ABILITY_PREDICTION + || gAiThinkingStruct->aiFlags[B_POSITION_OPPONENT_RIGHT] & AI_FLAG_WEIGH_ABILITY_PREDICTION) return TRUE; return BattlerHasAi(battlerId); @@ -103,29 +144,38 @@ bool32 IsAiBattlerPredictingAbility(u32 battlerId) bool32 IsBattlerPredictedToSwitch(u32 battler) { // Check for prediction flag on AI, whether they're using those predictions this turn, and whether the AI thinks the player should switch - if (AI_THINKING_STRUCT->aiFlags[AI_DATA->battlerDoingPrediction] & AI_FLAG_PREDICT_SWITCH - || AI_THINKING_STRUCT->aiFlags[AI_DATA->battlerDoingPrediction] & AI_FLAG_PREDICT_SWITCH) - { - if (AI_DATA->predictingSwitch && AI_DATA->shouldSwitch & (1u << battler)) + if (gAiThinkingStruct->aiFlags[gAiLogicData->battlerDoingPrediction] & AI_FLAG_PREDICT_SWITCH + || gAiThinkingStruct->aiFlags[gAiLogicData->battlerDoingPrediction] & AI_FLAG_PREDICT_SWITCH) + { + if (gAiLogicData->predictingSwitch && gAiLogicData->shouldSwitch & (1u << battler)) return TRUE; - } + } return FALSE; } +// Either a predicted move or the last used move from an opposing battler +u32 GetIncomingMove(u32 battler, u32 opposingBattler, struct AiLogicData *aiData) +{ + if (gAiThinkingStruct->aiFlags[battler] & AI_FLAG_PREDICT_MOVE && aiData->predictingMove) + return aiData->predictedMove[opposingBattler]; + + return aiData->lastUsedMove[opposingBattler]; +} + void ClearBattlerMoveHistory(u32 battlerId) { - memset(BATTLE_HISTORY->usedMoves[battlerId], 0, sizeof(BATTLE_HISTORY->usedMoves[battlerId])); - memset(BATTLE_HISTORY->moveHistory[battlerId], 0, sizeof(BATTLE_HISTORY->moveHistory[battlerId])); - BATTLE_HISTORY->moveHistoryIndex[battlerId] = 0; + memset(gBattleHistory->usedMoves[battlerId], 0, sizeof(gBattleHistory->usedMoves[battlerId])); + memset(gBattleHistory->moveHistory[battlerId], 0, sizeof(gBattleHistory->moveHistory[battlerId])); + gBattleHistory->moveHistoryIndex[battlerId] = 0; } void RecordLastUsedMoveBy(u32 battlerId, u32 move) { - u8 *index = &BATTLE_HISTORY->moveHistoryIndex[battlerId]; + u8 *index = &gBattleHistory->moveHistoryIndex[battlerId]; if (++(*index) >= AI_MOVE_HISTORY_COUNT) *index = 0; - BATTLE_HISTORY->moveHistory[battlerId][*index] = move; + gBattleHistory->moveHistory[battlerId][*index] = move; } void RecordKnownMove(u32 battler, u32 move) @@ -138,56 +188,56 @@ void RecordKnownMove(u32 battler, u32 move) break; } - if (moveIndex < MAX_MON_MOVES && BATTLE_HISTORY->usedMoves[battler][moveIndex] == MOVE_NONE) + if (moveIndex < MAX_MON_MOVES && gBattleHistory->usedMoves[battler][moveIndex] == MOVE_NONE) { - BATTLE_HISTORY->usedMoves[battler][moveIndex] = move; - AI_PARTY->mons[GetBattlerSide(battler)][gBattlerPartyIndexes[battler]].moves[moveIndex] = move; + gBattleHistory->usedMoves[battler][moveIndex] = move; + gAiPartyData->mons[GetBattlerSide(battler)][gBattlerPartyIndexes[battler]].moves[moveIndex] = move; } } void RecordAllMoves(u32 battler) { - memcpy(AI_PARTY->mons[GetBattlerSide(battler)][gBattlerPartyIndexes[battler]].moves, gBattleMons[battler].moves, MAX_MON_MOVES * sizeof(u16)); + memcpy(gAiPartyData->mons[GetBattlerSide(battler)][gBattlerPartyIndexes[battler]].moves, gBattleMons[battler].moves, MAX_MON_MOVES * sizeof(u16)); } void RecordAbilityBattle(u32 battlerId, u32 abilityId) { - BATTLE_HISTORY->abilities[battlerId] = abilityId; - AI_PARTY->mons[GetBattlerSide(battlerId)][gBattlerPartyIndexes[battlerId]].ability = abilityId; + gBattleHistory->abilities[battlerId] = abilityId; + gAiPartyData->mons[GetBattlerSide(battlerId)][gBattlerPartyIndexes[battlerId]].ability = abilityId; } void ClearBattlerAbilityHistory(u32 battlerId) { - BATTLE_HISTORY->abilities[battlerId] = ABILITY_NONE; + gBattleHistory->abilities[battlerId] = ABILITY_NONE; } void RecordItemEffectBattle(u32 battlerId, u32 itemEffect) { - BATTLE_HISTORY->itemEffects[battlerId] = itemEffect; - AI_PARTY->mons[GetBattlerSide(battlerId)][gBattlerPartyIndexes[battlerId]].heldEffect = itemEffect; + gBattleHistory->itemEffects[battlerId] = itemEffect; + gAiPartyData->mons[GetBattlerSide(battlerId)][gBattlerPartyIndexes[battlerId]].heldEffect = itemEffect; } void ClearBattlerItemEffectHistory(u32 battlerId) { - BATTLE_HISTORY->itemEffects[battlerId] = 0; + gBattleHistory->itemEffects[battlerId] = 0; } void SaveBattlerData(u32 battlerId) { - if (!BattlerHasAi(battlerId) && !AI_THINKING_STRUCT->saved[battlerId].saved) + if (!BattlerHasAi(battlerId) && !gAiThinkingStruct->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; + gAiThinkingStruct->saved[battlerId].saved = TRUE; + gAiThinkingStruct->saved[battlerId].ability = gBattleMons[battlerId].ability; + gAiThinkingStruct->saved[battlerId].heldItem = gBattleMons[battlerId].item; + gAiThinkingStruct->saved[battlerId].species = gBattleMons[battlerId].species; for (i = 0; i < 4; i++) - AI_THINKING_STRUCT->saved[battlerId].moves[i] = gBattleMons[battlerId].moves[i]; + gAiThinkingStruct->saved[battlerId].moves[i] = gBattleMons[battlerId].moves[i]; } // Save and restore types even for AI controlled battlers in case it gets changed during move evaluation process. - AI_THINKING_STRUCT->saved[battlerId].types[0] = gBattleMons[battlerId].types[0]; - AI_THINKING_STRUCT->saved[battlerId].types[1] = gBattleMons[battlerId].types[1]; + gAiThinkingStruct->saved[battlerId].types[0] = gBattleMons[battlerId].types[0]; + gAiThinkingStruct->saved[battlerId].types[1] = gBattleMons[battlerId].types[1]; } static bool32 ShouldFailForIllusion(u32 illusionSpecies, u32 battlerId) @@ -195,13 +245,13 @@ static bool32 ShouldFailForIllusion(u32 illusionSpecies, u32 battlerId) u32 i, j; const struct LevelUpMove *learnset; - if (BATTLE_HISTORY->abilities[battlerId] == ABILITY_ILLUSION) + if (gBattleHistory->abilities[battlerId] == ABILITY_ILLUSION) return FALSE; // Don't fall for Illusion if the mon used a move it cannot know. for (i = 0; i < MAX_MON_MOVES; i++) { - u32 move = BATTLE_HISTORY->usedMoves[battlerId][i]; + u32 move = gBattleHistory->usedMoves[battlerId][i]; if (move == MOVE_NONE) continue; @@ -228,7 +278,7 @@ static bool32 ShouldFailForIllusion(u32 illusionSpecies, u32 battlerId) void SetBattlerData(u32 battlerId) { - if (!BattlerHasAi(battlerId) && AI_THINKING_STRUCT->saved[battlerId].saved) + if (!BattlerHasAi(battlerId) && gAiThinkingStruct->saved[battlerId].saved) { u32 i, species, illusionSpecies, side; side = GetBattlerSide(battlerId); @@ -249,8 +299,8 @@ void SetBattlerData(u32 battlerId) } // Use the known battler's ability. - if (AI_PARTY->mons[side][gBattlerPartyIndexes[battlerId]].ability != ABILITY_NONE) - gBattleMons[battlerId].ability = AI_PARTY->mons[side][gBattlerPartyIndexes[battlerId]].ability; + if (gAiPartyData->mons[side][gBattlerPartyIndexes[battlerId]].ability != ABILITY_NONE) + gBattleMons[battlerId].ability = gAiPartyData->mons[side][gBattlerPartyIndexes[battlerId]].ability; // Check if mon can only have one ability. else if (gSpeciesInfo[species].abilities[1] == ABILITY_NONE || gSpeciesInfo[species].abilities[1] == gSpeciesInfo[species].abilities[0]) @@ -259,12 +309,12 @@ void SetBattlerData(u32 battlerId) else gBattleMons[battlerId].ability = ABILITY_NONE; - if (AI_PARTY->mons[side][gBattlerPartyIndexes[battlerId]].heldEffect == 0) + if (gAiPartyData->mons[side][gBattlerPartyIndexes[battlerId]].heldEffect == 0) gBattleMons[battlerId].item = 0; for (i = 0; i < MAX_MON_MOVES; i++) { - if (AI_PARTY->mons[side][gBattlerPartyIndexes[battlerId]].moves[i] == 0) + if (gAiPartyData->mons[side][gBattlerPartyIndexes[battlerId]].moves[i] == 0) gBattleMons[battlerId].moves[i] = 0; } } @@ -272,19 +322,19 @@ void SetBattlerData(u32 battlerId) void RestoreBattlerData(u32 battlerId) { - if (!BattlerHasAi(battlerId) && AI_THINKING_STRUCT->saved[battlerId].saved) + if (!BattlerHasAi(battlerId) && gAiThinkingStruct->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; + gAiThinkingStruct->saved[battlerId].saved = FALSE; + gBattleMons[battlerId].ability = gAiThinkingStruct->saved[battlerId].ability; + gBattleMons[battlerId].item = gAiThinkingStruct->saved[battlerId].heldItem; + gBattleMons[battlerId].species = gAiThinkingStruct->saved[battlerId].species; for (i = 0; i < 4; i++) - gBattleMons[battlerId].moves[i] = AI_THINKING_STRUCT->saved[battlerId].moves[i]; + gBattleMons[battlerId].moves[i] = gAiThinkingStruct->saved[battlerId].moves[i]; } - gBattleMons[battlerId].types[0] = AI_THINKING_STRUCT->saved[battlerId].types[0]; - gBattleMons[battlerId].types[1] = AI_THINKING_STRUCT->saved[battlerId].types[1]; + gBattleMons[battlerId].types[0] = gAiThinkingStruct->saved[battlerId].types[0]; + gBattleMons[battlerId].types[1] = gAiThinkingStruct->saved[battlerId].types[1]; } u32 GetHealthPercentage(u32 battlerId) @@ -294,30 +344,40 @@ u32 GetHealthPercentage(u32 battlerId) bool32 AI_BattlerAtMaxHp(u32 battlerId) { - if (AI_DATA->hpPercents[battlerId] == 100) + if (gAiLogicData->hpPercents[battlerId] == 100) return TRUE; return FALSE; } -bool32 IsBattlerTrapped(u32 battler, bool32 checkSwitch) + +bool32 AI_CanBattlerEscape(u32 battler) { - u32 holdEffect = AI_DATA->holdEffects[battler]; + enum ItemHoldEffect holdEffect = gAiLogicData->holdEffects[battler]; if (B_GHOSTS_ESCAPE >= GEN_6 && IS_BATTLER_OF_TYPE(battler, TYPE_GHOST)) - return FALSE; - if (checkSwitch && holdEffect == HOLD_EFFECT_SHED_SHELL) - return FALSE; - else if (!checkSwitch && AI_DATA->abilities[battler] == ABILITY_RUN_AWAY) - return FALSE; - else if (!checkSwitch && holdEffect == HOLD_EFFECT_CAN_ALWAYS_RUN) - return FALSE; - else if (gBattleMons[battler].status2 & (STATUS2_ESCAPE_PREVENTION | STATUS2_WRAPPED)) return TRUE; - else if (gStatuses3[battler] & (STATUS3_ROOTED | STATUS3_SKY_DROPPED)) + if (holdEffect == HOLD_EFFECT_SHED_SHELL) return TRUE; - else if (gFieldStatuses & STATUS_FIELD_FAIRY_LOCK) + + return FALSE; +} + +bool32 IsBattlerTrapped(u32 battlerAtk, u32 battlerDef) +{ + if (gBattleMons[battlerDef].status2 & (STATUS2_ESCAPE_PREVENTION | STATUS2_WRAPPED)) return TRUE; - else if (IsAbilityPreventingEscape(battler)) + if (gStatuses3[battlerDef] & (STATUS3_ROOTED | STATUS3_SKY_DROPPED)) + return TRUE; + if (gFieldStatuses & STATUS_FIELD_FAIRY_LOCK) + return TRUE; + if (AI_IsAbilityOnSide(battlerAtk, ABILITY_SHADOW_TAG) + && (B_SHADOW_TAG_ESCAPE >= GEN_4 && gAiLogicData->abilities[battlerDef] != ABILITY_SHADOW_TAG)) + return TRUE; + if (AI_IsAbilityOnSide(battlerAtk, ABILITY_ARENA_TRAP) + && IsBattlerGrounded(battlerAtk)) + return TRUE; + if (AI_IsAbilityOnSide(battlerAtk, ABILITY_MAGNET_PULL) + && IS_BATTLER_OF_TYPE(battlerAtk, TYPE_STEEL)) return TRUE; return FALSE; @@ -339,8 +399,8 @@ bool32 IsTruantMonVulnerable(u32 battlerAI, u32 opposingBattler) for (i = 0; i < MAX_MON_MOVES; i++) { - u32 move = gBattleResources->battleHistory->usedMoves[opposingBattler][i]; - u32 effect = GetMoveEffect(move); + u32 move = gBattleHistory->usedMoves[opposingBattler][i]; + enum BattleMoveEffects effect = GetMoveEffect(move); if (effect == EFFECT_PROTECT && move != MOVE_ENDURE) return TRUE; if (effect == EFFECT_SEMI_INVULNERABLE && AI_IsSlower(battlerAI, opposingBattler, GetAIChosenMove(battlerAI))) @@ -350,7 +410,7 @@ bool32 IsTruantMonVulnerable(u32 battlerAI, u32 opposingBattler) } // move checks -bool32 IsAffectedByPowder(u32 battler, u32 ability, u32 holdEffect) +bool32 IsAffectedByPowder(u32 battler, u32 ability, enum ItemHoldEffect holdEffect) { if (ability == ABILITY_OVERCOAT || (B_POWDER_GRASS >= GEN_6 && IS_BATTLER_OF_TYPE(battler, TYPE_GRASS)) @@ -365,19 +425,19 @@ bool32 MovesWithCategoryUnusable(u32 attacker, u32 target, u32 category) { s32 i, moveType; u32 usable = 0; - u32 unusable = AI_DATA->moveLimitations[attacker]; u16 *moves = GetMovesArray(attacker); + u32 moveLimitations = gAiLogicData->moveLimitations[attacker]; for (i = 0; i < MAX_MON_MOVES; i++) { - if (moves[i] != MOVE_NONE - && moves[i] != MOVE_UNAVAILABLE - && GetBattleMoveCategory(moves[i]) == category - && !(unusable & (1u << i))) + if (IsMoveUnusable(i, moves[i], moveLimitations)) + continue; + + if (GetBattleMoveCategory(moves[i]) == category) { SetTypeBeforeUsingMove(moves[i], attacker); moveType = GetBattleMoveType(moves[i]); - if (CalcTypeEffectivenessMultiplier(moves[i], moveType, attacker, target, AI_DATA->abilities[target], FALSE) != 0) + if (CalcTypeEffectivenessMultiplier(moves[i], moveType, attacker, target, gAiLogicData->abilities[target], FALSE) != 0) usable |= 1u << i; } } @@ -386,7 +446,7 @@ 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. -struct SimulatedDamage AI_CalcDamageSaveBattlers(u32 move, u32 battlerAtk, u32 battlerDef, uq4_12_t *typeEffectiveness, bool32 considerZPower, enum DamageRollType rollType) +struct SimulatedDamage AI_CalcDamageSaveBattlers(u32 move, u32 battlerAtk, u32 battlerDef, uq4_12_t *typeEffectiveness, bool32 considerZPower) { struct SimulatedDamage dmg; @@ -394,7 +454,7 @@ struct SimulatedDamage AI_CalcDamageSaveBattlers(u32 move, u32 battlerAtk, u32 b SaveBattlerData(battlerDef); SetBattlerData(battlerAtk); SetBattlerData(battlerDef); - dmg = AI_CalcDamage(move, battlerAtk, battlerDef, typeEffectiveness, considerZPower, AI_GetWeather(), rollType); + dmg = AI_CalcDamage(move, battlerAtk, battlerDef, typeEffectiveness, considerZPower, AI_GetWeather()); RestoreBattlerData(battlerAtk); RestoreBattlerData(battlerDef); return dmg; @@ -425,7 +485,7 @@ bool32 IsDamageMoveUnusable(u32 battlerAtk, u32 battlerDef, u32 move, u32 moveTy { u32 battlerDefAbility; u32 partnerDefAbility; - struct AiLogicData *aiData = AI_DATA; + struct AiLogicData *aiData = gAiLogicData; if (effectiveness == UQ_4_12(0.0)) return TRUE; @@ -444,7 +504,7 @@ bool32 IsDamageMoveUnusable(u32 battlerAtk, u32 battlerDef, u32 move, u32 moveTy partnerDefAbility = aiData->abilities[BATTLE_PARTNER(battlerDef)]; } - if (CanAbilityBlockMove(battlerAtk, battlerDef, move, battlerDefAbility, ABILITY_CHECK_TRIGGER)) + if (CanAbilityBlockMove(battlerAtk, battlerDef, aiData->abilities[battlerAtk], battlerDefAbility, move, ABILITY_CHECK_TRIGGER)) return TRUE; if (CanAbilityAbsorbMove(battlerAtk, battlerDef, battlerDefAbility, move, moveType, ABILITY_CHECK_TRIGGER)) @@ -493,7 +553,7 @@ bool32 IsDamageMoveUnusable(u32 battlerAtk, u32 battlerDef, u32 move, u32 moveTy return TRUE; break; case EFFECT_POLTERGEIST: - if (AI_DATA->items[battlerDef] == ITEM_NONE || !IsBattlerItemEnabled(battlerDef)) + if (gAiLogicData->items[battlerDef] == ITEM_NONE || !IsBattlerItemEnabled(battlerDef)) return TRUE; break; case EFFECT_FIRST_TURN_ONLY: @@ -505,6 +565,8 @@ bool32 IsDamageMoveUnusable(u32 battlerAtk, u32 battlerDef, u32 move, u32 moveTy if (battlerDefAbility == ABILITY_DAMP || partnerDefAbility == ABILITY_DAMP) return TRUE; break; + default: + break; } return FALSE; @@ -520,28 +582,6 @@ static inline s32 GetDamageByRollType(s32 dmg, enum DamageRollType rollType) return DmgRoll(dmg); } -static inline void SetMoveDamageCategory(u32 battlerAtk, u32 battlerDef, u32 move) -{ - switch (GetMoveEffect(move)) - { - case EFFECT_PHOTON_GEYSER: - gBattleStruct->swapDamageCategory = (GetCategoryBasedOnStats(battlerAtk) == DAMAGE_CATEGORY_PHYSICAL); - break; - case EFFECT_SHELL_SIDE_ARM: - if (gBattleStruct->shellSideArmCategory[battlerAtk][battlerDef] == DAMAGE_CATEGORY_PHYSICAL) - gBattleStruct->swapDamageCategory = TRUE; - break; - case EFFECT_TERA_BLAST: - if (GetActiveGimmick(battlerAtk) == GIMMICK_TERA) - gBattleStruct->swapDamageCategory = GetCategoryBasedOnStats(battlerAtk) == DAMAGE_CATEGORY_PHYSICAL; - break; - case EFFECT_TERA_STARSTORM: - if (GetActiveGimmick(battlerAtk) == GIMMICK_TERA && GET_BASE_SPECIES_ID(GetMonData(GetPartyBattlerData(battlerAtk), MON_DATA_SPECIES)) == SPECIES_TERAPAGOS) - gBattleStruct->swapDamageCategory = GetCategoryBasedOnStats(battlerAtk) == DAMAGE_CATEGORY_PHYSICAL; - break; - } -} - static inline s32 SetFixedMoveBasePower(u32 battlerAtk, u32 move) { s32 fixedBasePower = 0, n = 0; @@ -575,58 +615,49 @@ static inline void AI_RestoreBattlerTypes(u32 battlerAtk, u32 *types) gBattleMons[battlerAtk].types[2] = types[2]; } -static inline void CalcDynamicMoveDamage(struct DamageCalculationData *damageCalcData, s32 *expectedDamage, s32 *minimumDamage, u32 holdEffectAtk, u32 abilityAtk) +static inline void CalcDynamicMoveDamage(struct DamageCalculationData *damageCalcData, u16 *medianDamage, u16 *minimumDamage, u16 *maximumDamage, enum ItemHoldEffect holdEffectAtk, u32 abilityAtk) { u32 move = damageCalcData->move; - u32 effect = GetMoveEffect(move); - s32 expected = *expectedDamage; - s32 minimum = *minimumDamage; + enum BattleMoveEffects effect = GetMoveEffect(move); + u16 median = *medianDamage; + u16 minimum = *minimumDamage; + u16 maximum = *maximumDamage; switch (effect) { - case EFFECT_LEVEL_DAMAGE: - expected = minimum = gBattleMons[damageCalcData->battlerAtk].level * (abilityAtk == ABILITY_PARENTAL_BOND ? 2 : 1); - break; - case EFFECT_PSYWAVE: - expected = minimum = gBattleMons[damageCalcData->battlerAtk].level * (abilityAtk == ABILITY_PARENTAL_BOND ? 2 : 1); - break; - case EFFECT_FIXED_DAMAGE_ARG: - expected = minimum = GetMoveFixedDamage(move) * (abilityAtk == ABILITY_PARENTAL_BOND ? 2 : 1); - break; case EFFECT_MULTI_HIT: if (move == MOVE_WATER_SHURIKEN && gBattleMons[damageCalcData->battlerAtk].species == SPECIES_GRENINJA_ASH) { - expected *= 3; + median *= 3; minimum *= 3; + maximum *= 3; } else if (abilityAtk == ABILITY_SKILL_LINK) { - expected *= 5; + median *= 5; minimum *= 5; + maximum *= 5; } else if (holdEffectAtk == HOLD_EFFECT_LOADED_DICE) { - expected *= 9; - expected /= 2; + median *= 9; + median /= 2; minimum *= 4; + maximum *= 5; } else { - expected *= 3; + median *= 3; minimum *= 2; + maximum *= 5; } break; case EFFECT_ENDEAVOR: // If target has less HP than user, Endeavor does no damage - expected = minimum = max(0, gBattleMons[damageCalcData->battlerDef].hp - gBattleMons[damageCalcData->battlerAtk].hp); - break; - case EFFECT_SUPER_FANG: - expected = minimum = (abilityAtk == ABILITY_PARENTAL_BOND - ? max(2, gBattleMons[damageCalcData->battlerDef].hp * 3 / 4) - : max(1, gBattleMons[damageCalcData->battlerDef].hp / 2)); + median = maximum = minimum = max(0, gBattleMons[damageCalcData->battlerDef].hp - gBattleMons[damageCalcData->battlerAtk].hp); break; case EFFECT_FINAL_GAMBIT: - expected = minimum = gBattleMons[damageCalcData->battlerAtk].hp; + median = maximum = minimum = gBattleMons[damageCalcData->battlerAtk].hp; break; case EFFECT_BEAT_UP: if (B_BEAT_UP >= GEN_5) @@ -635,42 +666,82 @@ static inline void CalcDynamicMoveDamage(struct DamageCalculationData *damageCal u32 i; gBattleStruct->beatUpSlot = 0; damageCalcData->isCrit = FALSE; - expected = 0; + median = 0; for (i = 0; i < partyCount; i++) - expected += CalculateMoveDamage(damageCalcData, 0); - minimum = expected; + median += CalculateMoveDamage(damageCalcData, 0); + maximum = minimum = median; gBattleStruct->beatUpSlot = 0; } break; + default: + break; } // Handle other multi-strike moves u32 strikeCount = GetMoveStrikeCount(move); if (strikeCount > 1 && effect != EFFECT_TRIPLE_KICK) { - expected *= strikeCount; + median *= strikeCount; minimum *= strikeCount; + maximum *= strikeCount; } - if (expected == 0) - expected = 1; + if (abilityAtk == ABILITY_PARENTAL_BOND + && !strikeCount + && effect != EFFECT_TRIPLE_KICK + && effect != EFFECT_MULTI_HIT + && !AI_IsDoubleSpreadMove(damageCalcData->battlerAtk, move)) + { + median += median / (B_PARENTAL_BOND_DMG >= GEN_7 ? 4 : 2); + minimum += minimum / (B_PARENTAL_BOND_DMG >= GEN_7 ? 4 : 2); + maximum += maximum / (B_PARENTAL_BOND_DMG >= GEN_7 ? 4 : 2); + } + + if (median == 0) + median = 1; if (minimum == 0) minimum = 1; + if (maximum == 0) + maximum = 1; - *expectedDamage = expected; + *medianDamage = median; *minimumDamage = minimum; + *maximumDamage = maximum; } -struct SimulatedDamage AI_CalcDamage(u32 move, u32 battlerAtk, u32 battlerDef, uq4_12_t *typeEffectiveness, bool32 considerZPower, u32 weather, enum DamageRollType rollType) +static inline bool32 ShouldCalcCritDamage(u32 battlerAtk, u32 battlerDef, u32 move, struct AiLogicData *aiData) +{ + s32 critChanceIndex = 0; + + // Get crit chance + if (GetGenConfig(GEN_CONFIG_CRIT_CHANCE) == GEN_1) + critChanceIndex = CalcCritChanceStageGen1(battlerAtk, battlerDef, move, FALSE, aiData->abilities[battlerAtk], aiData->abilities[battlerDef], aiData->holdEffects[battlerAtk]); + else + critChanceIndex = CalcCritChanceStage(battlerAtk, battlerDef, move, FALSE, aiData->abilities[battlerAtk], aiData->abilities[battlerDef], aiData->holdEffects[battlerAtk]); + + if (critChanceIndex == CRITICAL_HIT_ALWAYS) + return TRUE; + if (critChanceIndex >= RISKY_AI_CRIT_STAGE_THRESHOLD // Not guaranteed but above Risky threshold + && (gAiThinkingStruct->aiFlags[battlerAtk] & AI_FLAG_RISKY) + && GetGenConfig(GEN_CONFIG_CRIT_CHANCE) != GEN_1) + return TRUE; + if (critChanceIndex >= RISKY_AI_CRIT_THRESHOLD_GEN_1 // Not guaranteed but above Risky threshold + && (gAiThinkingStruct->aiFlags[battlerAtk] & AI_FLAG_RISKY) + && GetGenConfig(GEN_CONFIG_CRIT_CHANCE) == GEN_1) + return TRUE; + return FALSE; +} + +struct SimulatedDamage AI_CalcDamage(u32 move, u32 battlerAtk, u32 battlerDef, uq4_12_t *typeEffectiveness, bool32 considerZPower, u32 weather) { struct SimulatedDamage simDamage; s32 moveType; - u32 moveEffect = GetMoveEffect(move); + enum BattleMoveEffects moveEffect = GetMoveEffect(move); uq4_12_t effectivenessMultiplier; bool32 isDamageMoveUnusable = FALSE; bool32 toggledGimmick = FALSE; - struct AiLogicData *aiData = AI_DATA; - AI_DATA->aiCalcInProgress = TRUE; + struct AiLogicData *aiData = gAiLogicData; + gAiLogicData->aiCalcInProgress = TRUE; if (moveEffect == EFFECT_NATURE_POWER) move = GetNaturePowerMove(battlerAtk); @@ -687,7 +758,7 @@ struct SimulatedDamage AI_CalcDamage(u32 move, u32 battlerAtk, u32 battlerDef, u SetActiveGimmick(battlerAtk, gBattleStruct->gimmick.usableGimmick[battlerAtk]); } - SetMoveDamageCategory(battlerAtk, battlerDef, move); + SetDynamicMoveCategory(battlerAtk, battlerDef, move); SetTypeBeforeUsingMove(move, battlerAtk); moveType = GetBattleMoveType(move); effectivenessMultiplier = CalcTypeEffectivenessMultiplier(move, moveType, battlerAtk, battlerDef, aiData->abilities[battlerDef], FALSE); @@ -698,85 +769,77 @@ struct SimulatedDamage AI_CalcDamage(u32 move, u32 battlerAtk, u32 battlerDef, u if (movePower && !isDamageMoveUnusable) { - s32 critChanceIndex, fixedBasePower; - u32 types[3]; AI_StoreBattlerTypes(battlerAtk, types); ProteanTryChangeType(battlerAtk, aiData->abilities[battlerAtk], move, moveType); - fixedBasePower = SetFixedMoveBasePower(battlerAtk, move); + s32 fixedBasePower = SetFixedMoveBasePower(battlerAtk, move); struct DamageCalculationData damageCalcData; damageCalcData.battlerAtk = battlerAtk; damageCalcData.battlerDef = battlerDef; damageCalcData.move = move; damageCalcData.moveType = moveType; - damageCalcData.isCrit = FALSE; + damageCalcData.isCrit = ShouldCalcCritDamage(battlerAtk, battlerDef, move, aiData); damageCalcData.randomFactor = FALSE; damageCalcData.updateFlags = FALSE; - critChanceIndex = CalcCritChanceStage(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 + if (moveEffect == EFFECT_TRIPLE_KICK) { - damageCalcData.isCrit = FALSE; - s32 nonCritDmg = CalculateMoveDamageVars(&damageCalcData, fixedBasePower, - effectivenessMultiplier, weather, - aiData->holdEffects[battlerAtk], aiData->holdEffects[battlerDef], - aiData->abilities[battlerAtk], aiData->abilities[battlerDef]); - damageCalcData.isCrit = TRUE; - s32 critDmg = CalculateMoveDamageVars(&damageCalcData, fixedBasePower, - effectivenessMultiplier, weather, - aiData->holdEffects[battlerAtk], aiData->holdEffects[battlerDef], - aiData->abilities[battlerAtk], aiData->abilities[battlerDef]); + for (gMultiHitCounter = GetMoveStrikeCount(move); gMultiHitCounter > 0; gMultiHitCounter--) // The global is used to simulate actual damage done + { + s32 damageByRollType = 0; - u32 critOdds = GetCritHitOdds(critChanceIndex); - // With critOdds getting closer to 1, dmg gets closer to critDmg. - 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 - { - damageCalcData.isCrit = TRUE; - s32 critDmg = CalculateMoveDamageVars(&damageCalcData, fixedBasePower, - effectivenessMultiplier, weather, - aiData->holdEffects[battlerAtk], aiData->holdEffects[battlerDef], - aiData->abilities[battlerAtk], aiData->abilities[battlerDef]); + s32 oneTripleKickHit = CalculateMoveDamageVars(&damageCalcData, fixedBasePower, + effectivenessMultiplier, weather, + aiData->holdEffects[battlerAtk], aiData->holdEffects[battlerDef], + aiData->abilities[battlerAtk], aiData->abilities[battlerDef]); - simDamage.expected = GetDamageByRollType(critDmg, rollType); - simDamage.minimum = LowestRollDmg(critDmg); + damageByRollType = GetDamageByRollType(oneTripleKickHit, DMG_ROLL_LOWEST); + simDamage.minimum += ApplyModifiersAfterDmgRoll(damageByRollType, &damageCalcData, effectivenessMultiplier, + aiData->holdEffects[battlerAtk], aiData->holdEffects[battlerDef], + aiData->abilities[battlerAtk], aiData->abilities[battlerDef]); + + damageByRollType = GetDamageByRollType(oneTripleKickHit, DMG_ROLL_DEFAULT); + simDamage.median += ApplyModifiersAfterDmgRoll(damageByRollType, &damageCalcData, effectivenessMultiplier, + aiData->holdEffects[battlerAtk], aiData->holdEffects[battlerDef], + aiData->abilities[battlerAtk], aiData->abilities[battlerDef]); + + damageByRollType = GetDamageByRollType(oneTripleKickHit, DMG_ROLL_HIGHEST); + simDamage.maximum += ApplyModifiersAfterDmgRoll(damageByRollType, &damageCalcData, effectivenessMultiplier, + aiData->holdEffects[battlerAtk], aiData->holdEffects[battlerDef], + aiData->abilities[battlerAtk], aiData->abilities[battlerDef]); + } } else { - s32 nonCritDmg = 0; - if (moveEffect == EFFECT_TRIPLE_KICK) - { - for (gMultiHitCounter = GetMoveStrikeCount(move); gMultiHitCounter > 0; gMultiHitCounter--) // The global is used to simulate actual damage done - { - nonCritDmg += CalculateMoveDamageVars(&damageCalcData, fixedBasePower, - effectivenessMultiplier, weather, + u32 damage = CalculateMoveDamageVars(&damageCalcData, fixedBasePower, + effectivenessMultiplier, weather, + aiData->holdEffects[battlerAtk], aiData->holdEffects[battlerDef], + aiData->abilities[battlerAtk], aiData->abilities[battlerDef]); + + simDamage.minimum = GetDamageByRollType(damage, DMG_ROLL_LOWEST); + simDamage.minimum = ApplyModifiersAfterDmgRoll(simDamage.minimum, &damageCalcData, effectivenessMultiplier, + aiData->holdEffects[battlerAtk], aiData->holdEffects[battlerDef], + aiData->abilities[battlerAtk], aiData->abilities[battlerDef]); + + simDamage.median = GetDamageByRollType(damage, DMG_ROLL_DEFAULT); + simDamage.median = ApplyModifiersAfterDmgRoll(simDamage.median, &damageCalcData, effectivenessMultiplier, aiData->holdEffects[battlerAtk], aiData->holdEffects[battlerDef], aiData->abilities[battlerAtk], aiData->abilities[battlerDef]); - } - } - else - { - nonCritDmg = CalculateMoveDamageVars(&damageCalcData, fixedBasePower, - effectivenessMultiplier, weather, - aiData->holdEffects[battlerAtk], aiData->holdEffects[battlerDef], - aiData->abilities[battlerAtk], aiData->abilities[battlerDef]); - } - simDamage.expected = GetDamageByRollType(nonCritDmg, rollType); - simDamage.minimum = LowestRollDmg(nonCritDmg); + + simDamage.maximum = GetDamageByRollType(damage, DMG_ROLL_HIGHEST); + simDamage.maximum = ApplyModifiersAfterDmgRoll(simDamage.maximum, &damageCalcData, effectivenessMultiplier, + aiData->holdEffects[battlerAtk], aiData->holdEffects[battlerDef], + aiData->abilities[battlerAtk], aiData->abilities[battlerDef]); } if (GetActiveGimmick(battlerAtk) != GIMMICK_Z_MOVE) { CalcDynamicMoveDamage(&damageCalcData, - &simDamage.expected, + &simDamage.median, &simDamage.minimum, + &simDamage.maximum, aiData->holdEffects[battlerAtk], aiData->abilities[battlerAtk]); } @@ -785,8 +848,9 @@ struct SimulatedDamage AI_CalcDamage(u32 move, u32 battlerAtk, u32 battlerDef, u } else { - simDamage.expected = 0; simDamage.minimum = 0; + simDamage.median = 0; + simDamage.maximum = 0; } // convert multiper to AI_EFFECTIVENESS_xX @@ -798,13 +862,13 @@ struct SimulatedDamage AI_CalcDamage(u32 move, u32 battlerAtk, u32 battlerDef, u gBattleStruct->zmove.baseMoves[battlerAtk] = MOVE_NONE; if (toggledGimmick) SetActiveGimmick(battlerAtk, GIMMICK_NONE); - AI_DATA->aiCalcInProgress = FALSE; + gAiLogicData->aiCalcInProgress = FALSE; return simDamage; } bool32 AI_IsDamagedByRecoil(u32 battler) { - u32 ability = AI_DATA->abilities[battler]; + u32 ability = gAiLogicData->abilities[battler]; if (ability == ABILITY_MAGIC_GUARD || ability == ABILITY_ROCK_HEAD) return FALSE; return TRUE; @@ -814,13 +878,13 @@ bool32 AI_IsDamagedByRecoil(u32 battler) static bool32 AI_IsMoveEffectInPlus(u32 battlerAtk, u32 battlerDef, u32 move, s32 noOfHitsToKo) { u32 i; - u32 abilityDef = AI_DATA->abilities[battlerDef]; - u32 abilityAtk = AI_DATA->abilities[battlerAtk]; + u32 abilityDef = gAiLogicData->abilities[battlerDef]; + u32 abilityAtk = gAiLogicData->abilities[battlerAtk]; switch (GetMoveEffect(move)) { case EFFECT_HIT_ESCAPE: - if (CountUsablePartyMons(battlerAtk) != 0 && ShouldPivot(battlerAtk, battlerDef, abilityDef, move, AI_THINKING_STRUCT->movesetIndex)) + if (CountUsablePartyMons(battlerAtk) != 0 && ShouldPivot(battlerAtk, battlerDef, abilityDef, move, gAiThinkingStruct->movesetIndex)) return TRUE; break; case EFFECT_FELL_STINGER: @@ -831,6 +895,8 @@ static bool32 AI_IsMoveEffectInPlus(u32 battlerAtk, u32 battlerDef, u32 move, s3 if(noOfHitsToKo == 1) return TRUE; break; + default: + break; } // check ADDITIONAL_EFFECTS @@ -896,7 +962,7 @@ static bool32 AI_IsMoveEffectInPlus(u32 battlerAtk, u32 battlerDef, u32 move, s3 return TRUE; break; case MOVE_EFFECT_FREEZE_OR_FROSTBITE: - if (AI_CanGetFrostbite(battlerDef, abilityDef)) + if (CanBeFrozen(battlerAtk, battlerDef, abilityDef)) return TRUE; break; case MOVE_EFFECT_PARALYSIS: @@ -940,14 +1006,10 @@ static bool32 AI_IsMoveEffectInPlus(u32 battlerAtk, u32 battlerDef, u32 move, s3 static bool32 AI_IsMoveEffectInMinus(u32 battlerAtk, u32 battlerDef, u32 move, s32 noOfHitsToKo) { - u32 abilityAtk = AI_DATA->abilities[battlerAtk]; - u32 abilityDef = AI_DATA->abilities[battlerDef]; + u32 abilityAtk = gAiLogicData->abilities[battlerAtk]; + u32 abilityDef = gAiLogicData->abilities[battlerDef]; u8 i; - // recoil - if (GetMoveRecoil(move) > 0 && AI_IsDamagedByRecoil(battlerAtk)) - return TRUE; - switch (GetMoveEffect(move)) { case EFFECT_MAX_HP_50_RECOIL: @@ -955,6 +1017,7 @@ static bool32 AI_IsMoveEffectInMinus(u32 battlerAtk, u32 battlerDef, u32 move, s case EFFECT_EXPLOSION: case EFFECT_FINAL_GAMBIT: return TRUE; + case EFFECT_RECOIL: case EFFECT_RECOIL_IF_MISS: if (AI_IsDamagedByRecoil(battlerAtk)) return TRUE; @@ -1021,12 +1084,12 @@ static bool32 AI_IsMoveEffectInMinus(u32 battlerAtk, u32 battlerDef, u32 move, s s32 AI_WhichMoveBetter(u32 move1, u32 move2, u32 battlerAtk, u32 battlerDef, s32 noOfHitsToKo) { bool32 effect1, effect2; - u32 defAbility = AI_DATA->abilities[battlerDef]; - u32 atkAbility = AI_DATA->abilities[battlerAtk]; + u32 defAbility = gAiLogicData->abilities[battlerDef]; + u32 atkAbility = gAiLogicData->abilities[battlerAtk]; // Check if physical moves hurt. - if (AI_DATA->holdEffects[battlerAtk] != HOLD_EFFECT_PROTECTIVE_PADS && atkAbility != ABILITY_LONG_REACH - && (AI_DATA->holdEffects[battlerDef] == HOLD_EFFECT_ROCKY_HELMET + if (gAiLogicData->holdEffects[battlerAtk] != HOLD_EFFECT_PROTECTIVE_PADS && atkAbility != ABILITY_LONG_REACH + && (gAiLogicData->holdEffects[battlerDef] == HOLD_EFFECT_ROCKY_HELMET || defAbility == ABILITY_IRON_BARBS || defAbility == ABILITY_ROUGH_SKIN)) { bool32 moveContact1 = MoveMakesContact(move1); @@ -1067,14 +1130,14 @@ u32 GetNoOfHitsToKOBattlerDmg(u32 dmg, u32 battlerDef) return GetNoOfHitsToKO(dmg, gBattleMons[battlerDef].hp); } -u32 GetNoOfHitsToKOBattler(u32 battlerAtk, u32 battlerDef, u32 moveIndex) +u32 GetNoOfHitsToKOBattler(u32 battlerAtk, u32 battlerDef, u32 moveIndex, enum DamageCalcContext calcContext) { - return GetNoOfHitsToKOBattlerDmg(AI_DATA->simulatedDmg[battlerAtk][battlerDef][moveIndex].expected, battlerDef); + return GetNoOfHitsToKOBattlerDmg(AI_GetDamage(battlerAtk, battlerDef, moveIndex, calcContext, gAiLogicData), battlerDef); } -u32 GetCurrDamageHpPercent(u32 battlerAtk, u32 battlerDef) +u32 GetCurrDamageHpPercent(u32 battlerAtk, u32 battlerDef, enum DamageCalcContext calcContext) { - int bestDmg = AI_DATA->simulatedDmg[battlerAtk][battlerDef][AI_THINKING_STRUCT->movesetIndex].expected; + int bestDmg = AI_GetDamage(battlerAtk, battlerDef, gAiThinkingStruct->movesetIndex, calcContext, gAiLogicData); return (bestDmg * 100) / gBattleMons[battlerDef].maxHP; } @@ -1093,7 +1156,7 @@ uq4_12_t AI_GetMoveEffectiveness(u32 move, u32 battlerAtk, u32 battlerDef) gBattleStruct->dynamicMoveType = 0; SetTypeBeforeUsingMove(move, battlerAtk); moveType = GetBattleMoveType(move); - typeEffectiveness = CalcTypeEffectivenessMultiplier(move, moveType, battlerAtk, battlerDef, AI_DATA->abilities[battlerDef], FALSE); + typeEffectiveness = CalcTypeEffectivenessMultiplier(move, moveType, battlerAtk, battlerDef, gAiLogicData->abilities[battlerDef], FALSE); RestoreBattlerData(battlerAtk); RestoreBattlerData(battlerDef); @@ -1110,15 +1173,15 @@ uq4_12_t AI_GetMoveEffectiveness(u32 move, u32 battlerAtk, u32 battlerDef) s32 AI_WhoStrikesFirst(u32 battlerAI, u32 battler, u32 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]; + enum ItemHoldEffect holdEffectAI = gAiLogicData->holdEffects[battlerAI]; + enum ItemHoldEffect holdEffectPlayer = gAiLogicData->holdEffects[battler]; + u32 abilityAI = gAiLogicData->abilities[battlerAI]; + u32 abilityPlayer = gAiLogicData->abilities[battler]; - u32 predictedMove = AI_DATA->lastUsedMove[battler]; // TODO update for move prediction + u32 predictedMove = GetIncomingMove(battlerAI, battler, gAiLogicData); - s8 aiPriority = GetBattleMovePriority(battlerAI, moveConsidered); - s8 playerPriority = GetBattleMovePriority(battler, predictedMove); + s8 aiPriority = GetBattleMovePriority(battlerAI, abilityAI, moveConsidered); + s8 playerPriority = GetBattleMovePriority(battler, abilityPlayer, predictedMove); if (aiPriority > playerPriority) return AI_IS_FASTER; @@ -1162,17 +1225,17 @@ s32 AI_WhoStrikesFirst(u32 battlerAI, u32 battler, u32 moveConsidered) static bool32 CanEndureHit(u32 battler, u32 battlerTarget, u32 move) { - u32 effect = GetMoveEffect(move); + enum BattleMoveEffects effect = GetMoveEffect(move); if (!AI_BattlerAtMaxHp(battlerTarget) || effect == EFFECT_MULTI_HIT) return FALSE; if (GetMoveStrikeCount(move) > 1 && !(effect == EFFECT_DRAGON_DARTS && IsValidDoubleBattle(battlerTarget))) return FALSE; - if (AI_DATA->holdEffects[battlerTarget] == HOLD_EFFECT_FOCUS_SASH) + if (gAiLogicData->holdEffects[battlerTarget] == HOLD_EFFECT_FOCUS_SASH) return TRUE; - if (!DoesBattlerIgnoreAbilityChecks(battler, AI_DATA->abilities[battler], move)) + if (!DoesBattlerIgnoreAbilityChecks(battler, gAiLogicData->abilities[battler], move)) { - if (B_STURDY >= GEN_5 && AI_DATA->abilities[battlerTarget] == ABILITY_STURDY) + if (B_STURDY >= GEN_5 && gAiLogicData->abilities[battlerTarget] == ABILITY_STURDY) return TRUE; if (gBattleMons[battlerTarget].species == SPECIES_MIMIKYU_DISGUISED) return TRUE; @@ -1184,18 +1247,19 @@ static bool32 CanEndureHit(u32 battler, u32 battlerTarget, u32 move) // Check if target has means to faint ai mon. bool32 CanTargetFaintAi(u32 battlerDef, u32 battlerAtk) { - s32 i; - u32 unusable = AI_DATA->moveLimitations[battlerDef]; + struct AiLogicData *aiData = gAiLogicData; + s32 moveIndex; u16 *moves = GetMovesArray(battlerDef); + u32 moveLimitations = aiData->moveLimitations[battlerDef]; - for (i = 0; i < MAX_MON_MOVES; i++) + for (moveIndex = 0; moveIndex < MAX_MON_MOVES; moveIndex++) { - if (moves[i] != MOVE_NONE && moves[i] != MOVE_UNAVAILABLE && !(unusable & (1u << i)) - && AI_DATA->simulatedDmg[battlerDef][battlerAtk][i].expected >= gBattleMons[battlerAtk].hp - && !CanEndureHit(battlerDef, battlerAtk, moves[i])) - { + if (IsMoveUnusable(moveIndex, moves[moveIndex], moveLimitations)) + continue; + + if (AI_GetDamage(battlerDef, battlerAtk, moveIndex, AI_DEFENDING, aiData) >= gBattleMons[battlerAtk].hp + && !CanEndureHit(battlerDef, battlerAtk, moves[moveIndex])) return TRUE; - } } return FALSE; @@ -1209,7 +1273,7 @@ u32 NoOfHitsForTargetToFaintAI(u32 battlerDef, u32 battlerAtk) for (i = 0; i < MAX_MON_MOVES; i++) { - currNumberOfHits = GetNoOfHitsToKOBattler(battlerDef, battlerAtk, i); + currNumberOfHits = GetNoOfHitsToKOBattler(battlerDef, battlerAtk, i, AI_DEFENDING); if (currNumberOfHits != 0) { if (currNumberOfHits < leastNumberOfHits) @@ -1219,42 +1283,45 @@ u32 NoOfHitsForTargetToFaintAI(u32 battlerDef, u32 battlerAtk) return leastNumberOfHits; } -u32 GetBestDmgMoveFromBattler(u32 battlerAtk, u32 battlerDef) +u32 GetBestDmgMoveFromBattler(u32 battlerAtk, u32 battlerDef, enum DamageCalcContext calcContext) { - u32 i; + struct AiLogicData *aiData = gAiLogicData; + u32 moveIndex; u32 move = 0; u32 bestDmg = 0; - u32 unusable = AI_DATA->moveLimitations[battlerAtk]; u16 *moves = GetMovesArray(battlerAtk); + u32 moveLimitations = aiData->moveLimitations[battlerAtk]; - for (i = 0; i < MAX_MON_MOVES; i++) + for (moveIndex = 0; moveIndex < MAX_MON_MOVES; moveIndex++) { - if (moves[i] != MOVE_NONE && moves[i] != MOVE_UNAVAILABLE && !(unusable & (1u << i)) - && bestDmg < AI_DATA->simulatedDmg[battlerAtk][battlerDef][i].expected) + if (IsMoveUnusable(moveIndex, moves[moveIndex], moveLimitations)) + continue; + + if (bestDmg < AI_GetDamage(battlerAtk, battlerDef, moveIndex, calcContext, aiData)) { - bestDmg = AI_DATA->simulatedDmg[battlerAtk][battlerDef][i].expected; - move = moves[i]; + bestDmg = AI_GetDamage(battlerAtk, battlerDef, moveIndex, calcContext, aiData); + move = moves[moveIndex]; } } return move; } -u32 GetBestDmgFromBattler(u32 battler, u32 battlerTarget) +u32 GetBestDmgFromBattler(u32 battler, u32 battlerTarget, enum DamageCalcContext calcContext) { - u32 i; + struct AiLogicData *aiData = gAiLogicData; + u32 moveIndex; u32 bestDmg = 0; - u32 unusable = AI_DATA->moveLimitations[battler]; u16 *moves = GetMovesArray(battler); + u32 moveLimitations = aiData->moveLimitations[battler]; - for (i = 0; i < MAX_MON_MOVES; i++) + for (moveIndex = 0; moveIndex < MAX_MON_MOVES; moveIndex++) { - if (moves[i] != MOVE_NONE - && moves[i] != MOVE_UNAVAILABLE - && !(unusable & (1u << i)) - && bestDmg < AI_DATA->simulatedDmg[battler][battlerTarget][i].expected) - { - bestDmg = AI_DATA->simulatedDmg[battler][battlerTarget][i].expected; - } + if (IsMoveUnusable(moveIndex, moves[moveIndex], moveLimitations)) + continue; + + u32 damage = AI_GetDamage(battler, battlerTarget, moveIndex, calcContext, aiData); + if (bestDmg < damage) + bestDmg = damage; } return bestDmg; @@ -1264,28 +1331,28 @@ u32 GetBestDmgFromBattler(u32 battler, u32 battlerTarget) // 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) { - s32 i, dmg; - u32 moveLimitations = AI_DATA->moveLimitations[battlerAtk]; + struct AiLogicData *aiData = gAiLogicData; + s32 moveIndex, dmg; u16 *moves = gBattleMons[battlerAtk].moves; + u32 moveLimitations = aiData->moveLimitations[battlerAtk]; - for (i = 0; i < MAX_MON_MOVES; i++) + for (moveIndex = 0; moveIndex < MAX_MON_MOVES; moveIndex++) { - if (moves[i] != MOVE_NONE && moves[i] != MOVE_UNAVAILABLE && !(moveLimitations & (1u << i))) + if (IsMoveUnusable(moveIndex, moves[moveIndex], moveLimitations)) + continue; + + dmg = AI_GetDamage(battlerAtk, battlerDef, moveIndex, AI_ATTACKING, aiData); + + if (numHits) + dmg *= numHits; + + if (gBattleMons[battlerDef].hp <= dmg) { - // Use the pre-calculated value in simulatedDmg instead of re-calculating it - dmg = AI_DATA->simulatedDmg[battlerAtk][battlerDef][i].expected; + if (numHits > 1) + return TRUE; - if (numHits) - dmg *= numHits; - - if (gBattleMons[battlerDef].hp <= dmg) - { - if (numHits > 1) - return TRUE; - - if (!CanEndureHit(battlerAtk, battlerDef, moves[i])) - return TRUE; - } + if (!CanEndureHit(battlerAtk, battlerDef, moves[moveIndex])) + return TRUE; } } @@ -1297,7 +1364,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].expected, gBattleMons[battlerAtk].hp) <= nHits) + if (GetNoOfHitsToKO(AI_GetDamage(battlerDef, battlerAtk, indexSlot, AI_DEFENDING, gAiLogicData), gBattleMons[battlerAtk].hp) <= nHits) return TRUE; } return FALSE; @@ -1306,25 +1373,28 @@ bool32 CanTargetMoveFaintAi(u32 move, u32 battlerDef, u32 battlerAtk, u32 nHits) // Check if target has means to faint ai mon after modding hp/dmg bool32 CanTargetFaintAiWithMod(u32 battlerDef, u32 battlerAtk, s32 hpMod, s32 dmgMod) { - u32 i; - u32 unusable = AI_DATA->moveLimitations[battlerDef]; + struct AiLogicData *aiData = gAiLogicData; + u32 moveIndex; s32 dmg; - u16 *moves = gBattleResources->battleHistory->usedMoves[battlerDef]; + u16 *moves = GetMovesArray(battlerDef); u32 hpCheck = gBattleMons[battlerAtk].hp + hpMod; + u32 moveLimitations = aiData->moveLimitations[battlerAtk]; if (hpCheck > gBattleMons[battlerAtk].maxHP) hpCheck = gBattleMons[battlerAtk].maxHP; - for (i = 0; i < MAX_MON_MOVES; i++) + for (moveIndex = 0; moveIndex < MAX_MON_MOVES; moveIndex++) { - dmg = AI_DATA->simulatedDmg[battlerAtk][battlerDef][i].expected; + if (IsMoveUnusable(moveIndex, moves[moveIndex], moveLimitations)) + continue; + + dmg = AI_GetDamage(battlerDef, battlerAtk, moveIndex, AI_DEFENDING, aiData); + if (dmgMod) dmg *= dmgMod; - if (moves[i] != MOVE_NONE && moves[i] != MOVE_UNAVAILABLE && !(unusable & (1u << i)) && dmg >= hpCheck) - { + if (dmg >= hpCheck) return TRUE; - } } return FALSE; @@ -1332,9 +1402,9 @@ bool32 CanTargetFaintAiWithMod(u32 battlerDef, u32 battlerAtk, s32 hpMod, s32 dm bool32 AI_IsAbilityOnSide(u32 battlerId, u32 ability) { - if (IsBattlerAlive(battlerId) && AI_DATA->abilities[battlerId] == ability) + if (IsBattlerAlive(battlerId) && gAiLogicData->abilities[battlerId] == ability) return TRUE; - else if (IsBattlerAlive(BATTLE_PARTNER(battlerId)) && AI_DATA->abilities[BATTLE_PARTNER(battlerId)] == ability) + else if (IsBattlerAlive(BATTLE_PARTNER(battlerId)) && gAiLogicData->abilities[BATTLE_PARTNER(battlerId)] == ability) return TRUE; else return FALSE; @@ -1365,7 +1435,7 @@ s32 AI_DecideKnownAbilityForTurn(u32 battlerId) u32 indexAbility; u32 abilityAiRatings[NUM_ABILITY_SLOTS] = {0}; - // We've had ability overwritten by e.g. Worry Seed. It is not part of AI_PARTY in case of switching + // We've had ability overwritten by e.g. Worry Seed. It is not part of gAiPartyData in case of switching if (gDisableStructs[battlerId].overwrittenAbility) return gDisableStructs[battlerId].overwrittenAbility; @@ -1377,8 +1447,8 @@ s32 AI_DecideKnownAbilityForTurn(u32 battlerId) if (knownAbility == ABILITY_NONE) return knownAbility; - if (AI_PARTY->mons[GetBattlerSide(battlerId)][gBattlerPartyIndexes[battlerId]].ability != ABILITY_NONE) - return AI_PARTY->mons[GetBattlerSide(battlerId)][gBattlerPartyIndexes[battlerId]].ability; + if (gAiPartyData->mons[GetBattlerSide(battlerId)][gBattlerPartyIndexes[battlerId]].ability != ABILITY_NONE) + return gAiPartyData->mons[GetBattlerSide(battlerId)][gBattlerPartyIndexes[battlerId]].ability; // Abilities that prevent fleeing - treat as always known if (knownAbility == ABILITY_SHADOW_TAG || knownAbility == ABILITY_MAGNET_PULL || knownAbility == ABILITY_ARENA_TRAP) @@ -1403,23 +1473,23 @@ s32 AI_DecideKnownAbilityForTurn(u32 battlerId) return ABILITY_NONE; // Unknown. } -u32 AI_DecideHoldEffectForTurn(u32 battlerId) +enum ItemHoldEffect AI_DecideHoldEffectForTurn(u32 battlerId) { - u32 holdEffect; + enum ItemHoldEffect holdEffect; if (!IsAiBattlerAware(battlerId)) - holdEffect = AI_PARTY->mons[GetBattlerSide(battlerId)][gBattlerPartyIndexes[battlerId]].heldEffect; + holdEffect = gAiPartyData->mons[GetBattlerSide(battlerId)][gBattlerPartyIndexes[battlerId]].heldEffect; else holdEffect = GetBattlerHoldEffect(battlerId, FALSE); - if (AI_THINKING_STRUCT->aiFlags[battlerId] & AI_FLAG_NEGATE_UNAWARE) + if (gAiThinkingStruct->aiFlags[battlerId] & AI_FLAG_NEGATE_UNAWARE) return holdEffect; if (gStatuses3[battlerId] & STATUS3_EMBARGO) return HOLD_EFFECT_NONE; if (gFieldStatuses & STATUS_FIELD_MAGIC_ROOM) return HOLD_EFFECT_NONE; - if (AI_DATA->abilities[battlerId] == ABILITY_KLUTZ && !(gStatuses3[battlerId] & STATUS3_GASTRO_ACID)) + if (gAiLogicData->abilities[battlerId] == ABILITY_KLUTZ && !(gStatuses3[battlerId] & STATUS3_GASTRO_ACID)) return HOLD_EFFECT_NONE; return holdEffect; @@ -1427,7 +1497,7 @@ u32 AI_DecideHoldEffectForTurn(u32 battlerId) bool32 DoesBattlerIgnoreAbilityChecks(u32 battlerAtk, u32 atkAbility, u32 move) { - if (AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_NEGATE_UNAWARE) + if (gAiThinkingStruct->aiFlags[battlerAtk] & AI_FLAG_NEGATE_UNAWARE) return FALSE; // AI handicap flag: doesn't understand ability suppression concept if (IsMoldBreakerTypeAbility(battlerAtk, atkAbility) || MoveIgnoresTargetAbility(move)) @@ -1438,11 +1508,11 @@ bool32 DoesBattlerIgnoreAbilityChecks(u32 battlerAtk, u32 atkAbility, u32 move) static inline bool32 AI_WeatherHasEffect(void) { - if (AI_THINKING_STRUCT->aiFlags[B_POSITION_OPPONENT_LEFT] & AI_FLAG_NEGATE_UNAWARE - || AI_THINKING_STRUCT->aiFlags[B_POSITION_OPPONENT_RIGHT] & AI_FLAG_NEGATE_UNAWARE) + if (gAiThinkingStruct->aiFlags[B_POSITION_OPPONENT_LEFT] & AI_FLAG_NEGATE_UNAWARE + || gAiThinkingStruct->aiFlags[B_POSITION_OPPONENT_RIGHT] & AI_FLAG_NEGATE_UNAWARE) return TRUE; // AI doesn't understand weather supression (handicap) - return AI_DATA->weatherHasEffect; // weather damping abilities are announced + return gAiLogicData->weatherHasEffect; // weather damping abilities are announced } u32 AI_GetWeather(void) @@ -1474,7 +1544,7 @@ enum WeatherState IsWeatherActive(u32 flags) return state; } -bool32 IsAromaVeilProtectedEffect(u32 moveEffect) +bool32 IsAromaVeilProtectedEffect(enum BattleMoveEffects moveEffect) { switch (moveEffect) { @@ -1490,23 +1560,12 @@ bool32 IsAromaVeilProtectedEffect(u32 moveEffect) } } -bool32 IsNonVolatileStatusMoveEffect(u32 moveEffect) +bool32 IsNonVolatileStatusMove(u32 move) { - switch (moveEffect) - { - case EFFECT_SLEEP: - case EFFECT_TOXIC: - case EFFECT_POISON: - case EFFECT_PARALYZE: - case EFFECT_WILL_O_WISP: - case EFFECT_YAWN: - return TRUE; - default: - return FALSE; - } + return GetMoveNonVolatileStatus(move) != MOVE_EFFECT_NONE; } -bool32 IsConfusionMoveEffect(u32 moveEffect) +bool32 IsConfusionMoveEffect(enum BattleMoveEffects moveEffect) { switch (moveEffect) { @@ -1574,12 +1633,57 @@ bool32 IsHazardClearingMove(u32 move) return FALSE; } +bool32 IsAllyProtectingFromMove(u32 battlerAtk, u32 attackerMove, u32 allyMove) +{ + enum BattleMoveEffects effect = GetMoveEffect(allyMove); + + if (effect != EFFECT_PROTECT) + { + return FALSE; + } + else + { + enum ProtectMethod protectMethod = GetMoveProtectMethod(allyMove); + + if (protectMethod == PROTECT_QUICK_GUARD) + { + u32 priority = GetBattleMovePriority(battlerAtk, gAiLogicData->abilities[battlerAtk], attackerMove); + return (priority > 0); + } + + if (IsBattleMoveStatus(attackerMove)) + { + switch (protectMethod) + { + case PROTECT_NORMAL: + case PROTECT_CRAFTY_SHIELD: + case PROTECT_MAX_GUARD: + case PROTECT_WIDE_GUARD: + return TRUE; + + default: + return FALSE; + } + } + else + { + switch (protectMethod) + { + case PROTECT_CRAFTY_SHIELD: + return FALSE; + default: + return TRUE; + } + } + } +} + bool32 IsMoveRedirectionPrevented(u32 battlerAtk, u32 move, u32 atkAbility) { - if (AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_NEGATE_UNAWARE) + if (gAiThinkingStruct->aiFlags[battlerAtk] & AI_FLAG_NEGATE_UNAWARE) return FALSE; - u32 effect = GetMoveEffect(move); + enum BattleMoveEffects effect = GetMoveEffect(move); if (effect == EFFECT_SKY_DROP || effect == EFFECT_SNIPE_SHOT || atkAbility == ABILITY_PROPELLER_TAIL @@ -1616,22 +1720,23 @@ bool32 IsMoveEncouragedToHit(u32 battlerAtk, u32 battlerDef, u32 move) if (gStatuses3[battlerDef] & STATUS3_ALWAYS_HITS || gDisableStructs[battlerDef].battlerWithSureHit == battlerAtk) return TRUE; - if (AI_DATA->abilities[battlerDef] == ABILITY_NO_GUARD || AI_DATA->abilities[battlerAtk] == ABILITY_NO_GUARD) + if (gAiLogicData->abilities[battlerDef] == ABILITY_NO_GUARD || gAiLogicData->abilities[battlerAtk] == ABILITY_NO_GUARD) return TRUE; - u32 effect = GetMoveEffect(move); - if (B_TOXIC_NEVER_MISS >= GEN_6 && effect == EFFECT_TOXIC && IS_BATTLER_OF_TYPE(battlerAtk, TYPE_POISON)) + u32 nonVolatileStatus = GetMoveNonVolatileStatus(move); + if (B_TOXIC_NEVER_MISS >= GEN_6 + && nonVolatileStatus == MOVE_EFFECT_TOXIC + && IS_BATTLER_OF_TYPE(battlerAtk, TYPE_POISON)) return TRUE; // discouraged from hitting weather = AI_GetWeather(); - if ((weather & B_WEATHER_SUN) && effect == EFFECT_THUNDER) + if ((weather & B_WEATHER_SUN) && MoveHas50AccuracyInSun(move)) return FALSE; - // increased accuracy but don't always hit - if ((weather & B_WEATHER_RAIN) && effect == EFFECT_THUNDER) + if ((weather & B_WEATHER_RAIN) && MoveAlwaysHitsInRain(move)) return TRUE; - if ((weather & (B_WEATHER_HAIL | B_WEATHER_SNOW)) && effect == EFFECT_BLIZZARD) + if ((weather & (B_WEATHER_HAIL | B_WEATHER_SNOW)) && MoveAlwaysHitsInHailSnow(move)) return TRUE; if (B_MINIMIZE_DMG_ACC >= GEN_6 && (gStatuses3[battlerDef] & STATUS3_MINIMIZED) && MoveIncreasesPowerToMinimizedTargets(move)) return TRUE; @@ -1643,11 +1748,11 @@ bool32 IsMoveEncouragedToHit(u32 battlerAtk, u32 battlerDef, u32 move) bool32 ShouldTryOHKO(u32 battlerAtk, u32 battlerDef, u32 atkAbility, u32 defAbility, u32 move) { - u32 holdEffect = AI_DATA->holdEffects[battlerDef]; - u32 accuracy = AI_DATA->moveAccuracy[battlerAtk][battlerDef][AI_THINKING_STRUCT->movesetIndex]; + enum ItemHoldEffect holdEffect = gAiLogicData->holdEffects[battlerDef]; + u32 accuracy = gAiLogicData->moveAccuracy[battlerAtk][battlerDef][gAiThinkingStruct->movesetIndex]; gPotentialItemEffectBattler = battlerDef; - if (holdEffect == HOLD_EFFECT_FOCUS_BAND && (Random() % 100) < AI_DATA->holdEffectParams[battlerDef]) + if (holdEffect == HOLD_EFFECT_FOCUS_BAND && (Random() % 100) < gAiLogicData->holdEffectParams[battlerDef]) return FALSE; //probabilistically speaking, focus band should activate so dont OHKO else if (holdEffect == HOLD_EFFECT_FOCUS_SASH && AI_BattlerAtMaxHp(battlerDef)) return FALSE; @@ -1673,7 +1778,7 @@ bool32 ShouldTryOHKO(u32 battlerAtk, u32 battlerDef, u32 atkAbility, u32 defAbil return FALSE; } -bool32 ShouldSetSandstorm(u32 battler, u32 ability, u32 holdEffect) +bool32 ShouldSetSandstorm(u32 battler, u32 ability, enum ItemHoldEffect holdEffect) { if (IsWeatherActive(B_WEATHER_SANDSTORM | B_WEATHER_PRIMAL_ANY) != WEATHER_INACTIVE) return FALSE; @@ -1685,15 +1790,15 @@ bool32 ShouldSetSandstorm(u32 battler, u32 ability, u32 holdEffect) || ability == ABILITY_MAGIC_GUARD || holdEffect == HOLD_EFFECT_SAFETY_GOGGLES || IS_BATTLER_ANY_TYPE(battler, TYPE_ROCK, TYPE_GROUND, TYPE_STEEL) - || HasMoveEffect(battler, EFFECT_SHORE_UP) - || HasMoveEffect(battler, EFFECT_WEATHER_BALL)) + || HasMoveWithEffect(battler, EFFECT_SHORE_UP) + || HasMoveWithEffect(battler, EFFECT_WEATHER_BALL)) { return TRUE; } return FALSE; } -bool32 ShouldSetHail(u32 battler, u32 ability, u32 holdEffect) +bool32 ShouldSetHail(u32 battler, u32 ability, enum ItemHoldEffect holdEffect) { if (IsWeatherActive(B_WEATHER_HAIL | B_WEATHER_SNOW | B_WEATHER_PRIMAL_ANY) != WEATHER_INACTIVE) return FALSE; @@ -1706,16 +1811,16 @@ bool32 ShouldSetHail(u32 battler, u32 ability, u32 holdEffect) || ability == ABILITY_OVERCOAT || holdEffect == HOLD_EFFECT_SAFETY_GOGGLES || IS_BATTLER_OF_TYPE(battler, TYPE_ICE) - || HasMoveEffect(battler, EFFECT_BLIZZARD) - || HasMoveEffect(battler, EFFECT_AURORA_VEIL) - || HasMoveEffect(battler, EFFECT_WEATHER_BALL)) + || HasMoveWithFlag(battler, MoveAlwaysHitsInHailSnow) + || HasMoveWithEffect(battler, EFFECT_AURORA_VEIL) + || HasMoveWithEffect(battler, EFFECT_WEATHER_BALL)) { return TRUE; } return FALSE; } -bool32 ShouldSetRain(u32 battlerAtk, u32 atkAbility, u32 holdEffect) +bool32 ShouldSetRain(u32 battlerAtk, u32 atkAbility, enum ItemHoldEffect holdEffect) { if (IsWeatherActive(B_WEATHER_RAIN | B_WEATHER_PRIMAL_ANY) != WEATHER_INACTIVE) return FALSE; @@ -1726,8 +1831,8 @@ bool32 ShouldSetRain(u32 battlerAtk, u32 atkAbility, u32 holdEffect) || atkAbility == ABILITY_HYDRATION || atkAbility == ABILITY_RAIN_DISH || atkAbility == ABILITY_DRY_SKIN - || HasMoveEffect(battlerAtk, EFFECT_THUNDER) - || HasMoveEffect(battlerAtk, EFFECT_WEATHER_BALL) + || HasMoveWithFlag(battlerAtk, MoveAlwaysHitsInRain) + || HasMoveWithEffect(battlerAtk, EFFECT_WEATHER_BALL) || HasMoveWithType(battlerAtk, TYPE_WATER))) { return TRUE; @@ -1735,7 +1840,7 @@ bool32 ShouldSetRain(u32 battlerAtk, u32 atkAbility, u32 holdEffect) return FALSE; } -bool32 ShouldSetSun(u32 battlerAtk, u32 atkAbility, u32 holdEffect) +bool32 ShouldSetSun(u32 battlerAtk, u32 atkAbility, enum ItemHoldEffect holdEffect) { if (IsWeatherActive(B_WEATHER_SUN | B_WEATHER_PRIMAL_ANY) != WEATHER_INACTIVE) return FALSE; @@ -1747,12 +1852,12 @@ bool32 ShouldSetSun(u32 battlerAtk, u32 atkAbility, u32 holdEffect) || atkAbility == ABILITY_LEAF_GUARD || atkAbility == ABILITY_SOLAR_POWER || atkAbility == ABILITY_HARVEST - || HasMoveEffect(battlerAtk, EFFECT_SOLAR_BEAM) - || HasMoveEffect(battlerAtk, EFFECT_MORNING_SUN) - || HasMoveEffect(battlerAtk, EFFECT_SYNTHESIS) - || HasMoveEffect(battlerAtk, EFFECT_MOONLIGHT) - || HasMoveEffect(battlerAtk, EFFECT_WEATHER_BALL) - || HasMoveEffect(battlerAtk, EFFECT_GROWTH) + || HasMoveWithEffect(battlerAtk, EFFECT_SOLAR_BEAM) + || HasMoveWithEffect(battlerAtk, EFFECT_MORNING_SUN) + || HasMoveWithEffect(battlerAtk, EFFECT_SYNTHESIS) + || HasMoveWithEffect(battlerAtk, EFFECT_MOONLIGHT) + || HasMoveWithEffect(battlerAtk, EFFECT_WEATHER_BALL) + || HasMoveWithEffect(battlerAtk, EFFECT_GROWTH) || HasMoveWithType(battlerAtk, TYPE_FIRE))) { return TRUE; @@ -1760,7 +1865,7 @@ bool32 ShouldSetSun(u32 battlerAtk, u32 atkAbility, u32 holdEffect) return FALSE; } -bool32 ShouldSetSnow(u32 battler, u32 ability, u32 holdEffect) +bool32 ShouldSetSnow(u32 battler, u32 ability, enum ItemHoldEffect holdEffect) { if (IsWeatherActive(B_WEATHER_SNOW | B_WEATHER_HAIL | B_WEATHER_PRIMAL_ANY) != WEATHER_INACTIVE) return FALSE; @@ -1770,9 +1875,9 @@ bool32 ShouldSetSnow(u32 battler, u32 ability, u32 holdEffect) || ability == ABILITY_FORECAST || ability == ABILITY_SLUSH_RUSH || IS_BATTLER_OF_TYPE(battler, TYPE_ICE) - || HasMoveEffect(battler, EFFECT_BLIZZARD) - || HasMoveEffect(battler, EFFECT_AURORA_VEIL) - || HasMoveEffect(battler, EFFECT_WEATHER_BALL)) + || HasMoveWithFlag(battler, MoveAlwaysHitsInHailSnow) + || HasMoveWithEffect(battler, EFFECT_AURORA_VEIL) + || HasMoveWithEffect(battler, EFFECT_WEATHER_BALL)) { return TRUE; } @@ -1819,34 +1924,53 @@ void ProtectChecks(u32 battlerAtk, u32 battlerDef, u32 move, u32 predictedMove, } // stat stages -bool32 ShouldLowerStat(u32 battlerAtk, u32 battlerDef, u32 battlerAbility, u32 stat) +bool32 ShouldLowerStat(u32 battlerAtk, u32 battlerDef, u32 abilityDef, u32 stat) { - if (gBattleMons[battlerDef].statStages[stat] > MIN_STAT_STAGE && battlerAbility != ABILITY_CONTRARY) - { - if (AI_DATA->holdEffects[battlerDef] == HOLD_EFFECT_CLEAR_AMULET - || battlerAbility == ABILITY_CLEAR_BODY - || battlerAbility == ABILITY_WHITE_SMOKE - || battlerAbility == ABILITY_FULL_METAL_BODY) - return FALSE; + if (gBattleMons[battlerDef].statStages[stat] == MIN_STAT_STAGE) + return FALSE; - switch (stat) - { - case STAT_ATK: - return !(battlerAbility == ABILITY_HYPER_CUTTER); - case STAT_DEF: - 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_IsFaster(battlerAtk, battlerDef, AI_THINKING_STRUCT->moveConsidered) - && CountUsablePartyMons(battlerAtk) == 0 - && !HasMoveEffect(battlerAtk, EFFECT_ELECTRO_BALL)); - case STAT_ACC: - return !(battlerAbility == ABILITY_KEEN_EYE || (B_ILLUMINATE_EFFECT >= GEN_9 && battlerAbility == ABILITY_ILLUMINATE)); - } - return TRUE; + if (gAiLogicData->holdEffects[battlerDef] == HOLD_EFFECT_CLEAR_AMULET) + return FALSE; + + switch (abilityDef) + { + case ABILITY_SPEED_BOOST: + if (stat == STAT_SPEED) + return FALSE; + case ABILITY_HYPER_CUTTER: + if (stat == STAT_ATK) + return FALSE; + case ABILITY_BIG_PECKS: + if (stat == STAT_DEF) + return FALSE; + case ABILITY_ILLUMINATE: + if (B_ILLUMINATE_EFFECT < GEN_9) + break; + case ABILITY_KEEN_EYE: + case ABILITY_MINDS_EYE: + if (stat == STAT_ACC) + return FALSE; + case ABILITY_FLOWER_VEIL: + if (IS_BATTLER_OF_TYPE(battlerDef, TYPE_GRASS)) + return FALSE; + break; + case ABILITY_CONTRARY: + case ABILITY_CLEAR_BODY: + case ABILITY_WHITE_SMOKE: + case ABILITY_FULL_METAL_BODY: + return FALSE; } - return FALSE; + // This should be a viability check + if (stat == STAT_SPEED) + { + // If AI is faster and doesn't have any mons left, lowering speed doesn't give any + return !(AI_IsFaster(battlerAtk, battlerDef, gAiThinkingStruct->moveConsidered) + && CountUsablePartyMons(battlerAtk) == 0 + && !HasMoveWithEffect(battlerAtk, EFFECT_ELECTRO_BALL)); + } + + return TRUE; } bool32 BattlerStatCanRise(u32 battler, u32 battlerAbility, u32 stat) @@ -1906,8 +2030,8 @@ u32 CountNegativeStatStages(u32 battlerId) bool32 ShouldLowerAttack(u32 battlerAtk, u32 battlerDef, u32 defAbility) { - if (AI_IsFaster(battlerAtk, battlerDef, AI_THINKING_STRUCT->moveConsidered) - && (AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_TRY_TO_FAINT) + if (AI_IsFaster(battlerAtk, battlerDef, gAiThinkingStruct->moveConsidered) + && (gAiThinkingStruct->aiFlags[battlerAtk] & AI_FLAG_TRY_TO_FAINT) && CanAIFaintTarget(battlerAtk, battlerDef, 0)) return FALSE; // Don't bother lowering stats if can kill enemy. @@ -1918,15 +2042,15 @@ bool32 ShouldLowerAttack(u32 battlerAtk, u32 battlerDef, u32 defAbility) && defAbility != ABILITY_WHITE_SMOKE && defAbility != ABILITY_FULL_METAL_BODY && defAbility != ABILITY_HYPER_CUTTER - && AI_DATA->holdEffects[battlerDef] != HOLD_EFFECT_CLEAR_AMULET) + && gAiLogicData->holdEffects[battlerDef] != HOLD_EFFECT_CLEAR_AMULET) return TRUE; return FALSE; } bool32 ShouldLowerDefense(u32 battlerAtk, u32 battlerDef, u32 defAbility) { - if (AI_IsFaster(battlerAtk, battlerDef, AI_THINKING_STRUCT->moveConsidered) - && (AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_TRY_TO_FAINT) + if (AI_IsFaster(battlerAtk, battlerDef, gAiThinkingStruct->moveConsidered) + && (gAiThinkingStruct->aiFlags[battlerAtk] & AI_FLAG_TRY_TO_FAINT) && CanAIFaintTarget(battlerAtk, battlerDef, 0)) return FALSE; // Don't bother lowering stats if can kill enemy. @@ -1937,7 +2061,7 @@ bool32 ShouldLowerDefense(u32 battlerAtk, u32 battlerDef, u32 defAbility) && defAbility != ABILITY_WHITE_SMOKE && defAbility != ABILITY_FULL_METAL_BODY && defAbility != ABILITY_BIG_PECKS - && AI_DATA->holdEffects[battlerDef] != HOLD_EFFECT_CLEAR_AMULET) + && gAiLogicData->holdEffects[battlerDef] != HOLD_EFFECT_CLEAR_AMULET) return TRUE; return FALSE; } @@ -1948,16 +2072,16 @@ bool32 ShouldLowerSpeed(u32 battlerAtk, u32 battlerDef, u32 defAbility) || defAbility == ABILITY_CLEAR_BODY || defAbility == ABILITY_FULL_METAL_BODY || defAbility == ABILITY_WHITE_SMOKE - || AI_DATA->holdEffects[battlerDef] == HOLD_EFFECT_CLEAR_AMULET) + || gAiLogicData->holdEffects[battlerDef] == HOLD_EFFECT_CLEAR_AMULET) return FALSE; - return (AI_IsSlower(battlerAtk, battlerDef, AI_THINKING_STRUCT->moveConsidered)); + return (AI_IsSlower(battlerAtk, battlerDef, gAiThinkingStruct->moveConsidered)); } bool32 ShouldLowerSpAtk(u32 battlerAtk, u32 battlerDef, u32 defAbility) { - if (AI_IsFaster(battlerAtk, battlerDef, AI_THINKING_STRUCT->moveConsidered) - && (AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_TRY_TO_FAINT) + if (AI_IsFaster(battlerAtk, battlerDef, gAiThinkingStruct->moveConsidered) + && (gAiThinkingStruct->aiFlags[battlerAtk] & AI_FLAG_TRY_TO_FAINT) && CanAIFaintTarget(battlerAtk, battlerDef, 0)) return FALSE; // Don't bother lowering stats if can kill enemy. @@ -1967,15 +2091,15 @@ bool32 ShouldLowerSpAtk(u32 battlerAtk, u32 battlerDef, u32 defAbility) && defAbility != ABILITY_CLEAR_BODY && defAbility != ABILITY_FULL_METAL_BODY && defAbility != ABILITY_WHITE_SMOKE - && AI_DATA->holdEffects[battlerDef] != HOLD_EFFECT_CLEAR_AMULET) + && gAiLogicData->holdEffects[battlerDef] != HOLD_EFFECT_CLEAR_AMULET) return TRUE; return FALSE; } bool32 ShouldLowerSpDef(u32 battlerAtk, u32 battlerDef, u32 defAbility) { - if (AI_IsFaster(battlerAtk, battlerDef, AI_THINKING_STRUCT->moveConsidered) - && (AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_TRY_TO_FAINT) + if (AI_IsFaster(battlerAtk, battlerDef, gAiThinkingStruct->moveConsidered) + && (gAiThinkingStruct->aiFlags[battlerAtk] & AI_FLAG_TRY_TO_FAINT) && CanAIFaintTarget(battlerAtk, battlerDef, 0)) return FALSE; // Don't bother lowering stats if can kill enemy. @@ -1985,15 +2109,15 @@ bool32 ShouldLowerSpDef(u32 battlerAtk, u32 battlerDef, u32 defAbility) && defAbility != ABILITY_CLEAR_BODY && defAbility != ABILITY_FULL_METAL_BODY && defAbility != ABILITY_WHITE_SMOKE - && AI_DATA->holdEffects[battlerDef] != HOLD_EFFECT_CLEAR_AMULET) + && gAiLogicData->holdEffects[battlerDef] != HOLD_EFFECT_CLEAR_AMULET) return TRUE; return FALSE; } bool32 ShouldLowerAccuracy(u32 battlerAtk, u32 battlerDef, u32 defAbility) { - if (AI_IsFaster(battlerAtk, battlerDef, AI_THINKING_STRUCT->moveConsidered) - && (AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_TRY_TO_FAINT) + if (AI_IsFaster(battlerAtk, battlerDef, gAiThinkingStruct->moveConsidered) + && (gAiThinkingStruct->aiFlags[battlerAtk] & AI_FLAG_TRY_TO_FAINT) && CanAIFaintTarget(battlerAtk, battlerDef, 0)) return FALSE; // Don't bother lowering stats if can kill enemy. @@ -2004,15 +2128,15 @@ bool32 ShouldLowerAccuracy(u32 battlerAtk, u32 battlerDef, u32 defAbility) && defAbility != ABILITY_KEEN_EYE && defAbility != ABILITY_MINDS_EYE && (B_ILLUMINATE_EFFECT >= GEN_9 && defAbility != ABILITY_ILLUMINATE) - && AI_DATA->holdEffects[battlerDef] != HOLD_EFFECT_CLEAR_AMULET) + && gAiLogicData->holdEffects[battlerDef] != HOLD_EFFECT_CLEAR_AMULET) return TRUE; return FALSE; } bool32 ShouldLowerEvasion(u32 battlerAtk, u32 battlerDef, u32 defAbility) { - if (AI_IsFaster(battlerAtk, battlerDef, AI_THINKING_STRUCT->moveConsidered) - && (AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_TRY_TO_FAINT) + if (AI_IsFaster(battlerAtk, battlerDef, gAiThinkingStruct->moveConsidered) + && (gAiThinkingStruct->aiFlags[battlerAtk] & AI_FLAG_TRY_TO_FAINT) && CanAIFaintTarget(battlerAtk, battlerDef, 0)) return FALSE; // Don't bother lowering stats if can kill enemy. @@ -2021,22 +2145,34 @@ bool32 ShouldLowerEvasion(u32 battlerAtk, u32 battlerDef, u32 defAbility) && defAbility != ABILITY_CLEAR_BODY && defAbility != ABILITY_FULL_METAL_BODY && defAbility != ABILITY_WHITE_SMOKE - && AI_DATA->holdEffects[battlerDef] != HOLD_EFFECT_CLEAR_AMULET) + && gAiLogicData->holdEffects[battlerDef] != HOLD_EFFECT_CLEAR_AMULET) return TRUE; return FALSE; } -bool32 CanIndexMoveFaintTarget(u32 battlerAtk, u32 battlerDef, u32 index, u32 numHits) +bool32 CanIndexMoveFaintTarget(u32 battlerAtk, u32 battlerDef, u32 moveIndex, enum DamageCalcContext calcContext) { s32 dmg; u16 *moves = gBattleMons[battlerAtk].moves; - if (numHits) - dmg = AI_DATA->simulatedDmg[battlerAtk][battlerDef][index].expected * numHits; + if (IsDoubleBattle() && battlerDef == BATTLE_PARTNER(battlerAtk)) + dmg = gAiLogicData->simulatedDmg[battlerAtk][battlerDef][moveIndex].maximum; // Attacking partner, be careful else - dmg = AI_DATA->simulatedDmg[battlerAtk][battlerDef][index].minimum; + dmg = AI_GetDamage(battlerAtk, battlerDef, moveIndex, calcContext, gAiLogicData); - if (gBattleMons[battlerDef].hp <= dmg && !CanEndureHit(battlerAtk, battlerDef, moves[index])) + if (gBattleMons[battlerDef].hp <= dmg && !CanEndureHit(battlerAtk, battlerDef, moves[moveIndex])) + return TRUE; + return FALSE; +} + +bool32 CanIndexMoveGuaranteeFaintTarget(u32 battlerAtk, u32 battlerDef, u32 moveIndex) +{ + s32 dmg; + u16 *moves = gBattleMons[battlerAtk].moves; + + dmg = gAiLogicData->simulatedDmg[battlerAtk][battlerDef][moveIndex].minimum; // Explictly care about guaranteed KOs universally + + if (gBattleMons[battlerDef].hp <= dmg && !CanEndureHit(battlerAtk, battlerDef, moves[moveIndex])) return TRUE; return FALSE; } @@ -2046,7 +2182,7 @@ u16 *GetMovesArray(u32 battler) if (IsAiBattlerAware(battler) || IsAiBattlerAware(BATTLE_PARTNER(battler))) return gBattleMons[battler].moves; else - return gBattleResources->battleHistory->usedMoves[battler]; + return gBattleHistory->usedMoves[battler]; } bool32 HasOnlyMovesWithCategory(u32 battlerId, u32 category, bool32 onlyOffensive) @@ -2092,7 +2228,7 @@ bool32 HasMoveWithType(u32 battler, u32 type) return FALSE; } -bool32 HasMoveEffect(u32 battlerId, u32 effect) +bool32 HasMoveWithEffect(u32 battlerId, enum BattleMoveEffects effect) { s32 i; u16 *moves = GetMovesArray(battlerId); @@ -2107,7 +2243,46 @@ bool32 HasMoveEffect(u32 battlerId, u32 effect) return FALSE; } -bool32 IsPowerBasedOnStatus(u32 battlerId, u32 effect, u32 argument) +bool32 HasBattlerSideMoveWithEffect(u32 battler, u32 effect) +{ + if (HasMoveWithEffect(battler, effect)) + return TRUE; + if (IsDoubleBattle() && HasMoveWithEffect(BATTLE_OPPOSITE(battler), effect)) + return TRUE; + return FALSE; +} + +// HasBattlerSideMoveWithEffect checks if the AI knows a side has a move effect, +// while HasBattlerSideUsedMoveWithEffect checks if the side has ever used a move effect. +// The former acts the same way as the latter if AI_FLAG_OMNISCIENT isn't used. +bool32 HasBattlerSideUsedMoveWithEffect(u32 battler, u32 effect) +{ + u32 i; + for (i = 0; i < MAX_MON_MOVES; i++) + { + if (GetMoveEffect(gBattleHistory->usedMoves[battler][i]) == effect) + return TRUE; + if (IsDoubleBattle() && GetMoveEffect(gBattleHistory->usedMoves[BATTLE_OPPOSITE(battler)][i]) == effect) + return TRUE; + } + return FALSE; +} + +bool32 HasNonVolatileMoveEffect(u32 battlerId, u32 effect) +{ + s32 i; + u16 *moves = GetMovesArray(battlerId); + + for (i = 0; i < MAX_MON_MOVES; i++) + { + if (GetMoveNonVolatileStatus(moves[i]) == effect) + return TRUE; + } + + return FALSE; +} + +bool32 IsPowerBasedOnStatus(u32 battlerId, enum BattleMoveEffects effect, u32 argument) { s32 i; u16 *moves = GetMovesArray(battlerId); @@ -2138,6 +2313,31 @@ bool32 HasMoveWithAdditionalEffect(u32 battlerId, u32 moveEffect) return FALSE; } +bool32 HasBattlerSideMoveWithAdditionalEffect(u32 battler, u32 moveEffect) +{ + if (HasMoveWithAdditionalEffect(battler, moveEffect)) + return TRUE; + if (IsDoubleBattle() && HasMoveWithAdditionalEffect(BATTLE_OPPOSITE(battler), moveEffect)) + return TRUE; + return FALSE; +} + +// HasBattlerSideMoveWithAdditionalEffect checks if the AI knows a side has a move effect, +// while HasBattlerSideUsedMoveWithAdditionalEffect checks if the side has ever used a move effect. +// The former acts the same way as the latter if AI_FLAG_OMNISCIENT isn't used. +bool32 HasBattlerSideUsedMoveWithAdditionalEffect(u32 battler, u32 moveEffect) +{ + u32 i; + for (i = 0; i < MAX_MON_MOVES; i++) + { + if (MoveHasAdditionalEffect(gBattleHistory->usedMoves[battler][i], moveEffect)) + return TRUE; + if (IsDoubleBattle() && MoveHasAdditionalEffect(gBattleHistory->usedMoves[BATTLE_OPPOSITE(battler)][i], moveEffect)) + return TRUE; + } + return FALSE; +} + bool32 HasMoveWithCriticalHitChance(u32 battlerId) { s32 i; @@ -2153,7 +2353,7 @@ bool32 HasMoveWithCriticalHitChance(u32 battlerId) return FALSE; } -bool32 HasMoveWithMoveEffectExcept(u32 battlerId, u32 moveEffect, u32 exception) +bool32 HasMoveWithMoveEffectExcept(u32 battlerId, u32 moveEffect, enum BattleMoveEffects exception) { s32 i; u16 *moves = GetMovesArray(battlerId); @@ -2223,24 +2423,21 @@ bool32 HasMoveWithLowAccuracy(u32 battlerAtk, u32 battlerDef, u32 accCheck, bool { s32 i; u16 *moves = GetMovesArray(battlerAtk); - u32 moveLimitations = AI_DATA->moveLimitations[battlerAtk]; + u32 moveLimitations = gAiLogicData->moveLimitations[battlerAtk]; for (i = 0; i < MAX_MON_MOVES; i++) { - if (moves[i] == MOVE_NONE || moves[i] == MOVE_UNAVAILABLE) + if (IsMoveUnusable(i, moves[i], moveLimitations)) continue; - if (!((1u << i) & moveLimitations)) - { - if (ignoreStatus && IsBattleMoveStatus(moves[i])) - continue; - else if ((!IsBattleMoveStatus(moves[i]) && GetMoveAccuracy(moves[i]) == 0) - || GetBattlerMoveTargetType(battlerAtk, moves[i]) & (MOVE_TARGET_USER | MOVE_TARGET_OPPONENTS_FIELD)) - continue; + if (ignoreStatus && IsBattleMoveStatus(moves[i])) + continue; + else if ((!IsBattleMoveStatus(moves[i]) && GetMoveAccuracy(moves[i]) == 0) + || GetBattlerMoveTargetType(battlerAtk, moves[i]) & (MOVE_TARGET_USER | MOVE_TARGET_OPPONENTS_FIELD)) + continue; - if (AI_DATA->moveAccuracy[battlerAtk][battlerDef][i] <= accCheck) - return TRUE; - } + if (gAiLogicData->moveAccuracy[battlerAtk][battlerDef][i] <= accCheck) + return TRUE; } return FALSE; @@ -2248,20 +2445,18 @@ bool32 HasMoveWithLowAccuracy(u32 battlerAtk, u32 battlerDef, u32 accCheck, bool bool32 HasSleepMoveWithLowAccuracy(u32 battlerAtk, u32 battlerDef) { - u32 moveLimitations = AI_DATA->moveLimitations[battlerAtk]; u32 i; u16 *moves = GetMovesArray(battlerAtk); + u32 moveLimitations = gAiLogicData->moveLimitations[battlerAtk]; for (i = 0; i < MAX_MON_MOVES; i++) { - if (moves[i] == MOVE_NONE) - break; - if (!((1u << i) & moveLimitations)) - { - if (GetMoveEffect(moves[i]) == EFFECT_SLEEP - && AI_DATA->moveAccuracy[battlerAtk][battlerDef][i] < 85) - return TRUE; - } + if (IsMoveUnusable(i, moves[i], moveLimitations)) + continue; + + if (GetMoveNonVolatileStatus(moves[i]) == MOVE_EFFECT_SLEEP + && gAiLogicData->moveAccuracy[battlerAtk][battlerDef][i] < 85) + return TRUE; } return FALSE; } @@ -2320,7 +2515,7 @@ bool32 HasThawingMove(u32 battler) return FALSE; } -bool32 IsUngroundingEffect(u32 effect) +bool32 IsUngroundingEffect(enum BattleMoveEffects effect) { switch (effect) { @@ -2332,7 +2527,7 @@ bool32 IsUngroundingEffect(u32 effect) } // for anger point -bool32 IsAttackBoostMoveEffect(u32 effect) +bool32 IsAttackBoostMoveEffect(enum BattleMoveEffects effect) { switch (effect) { @@ -2352,7 +2547,7 @@ bool32 IsAttackBoostMoveEffect(u32 effect) } } -bool32 IsStatRaisingEffect(u32 effect) +bool32 IsStatRaisingEffect(enum BattleMoveEffects effect) { switch (effect) { @@ -2397,7 +2592,7 @@ bool32 IsStatRaisingEffect(u32 effect) } } -bool32 IsStatLoweringEffect(u32 effect) +bool32 IsStatLoweringEffect(enum BattleMoveEffects effect) { // ignore other potentially-beneficial effects like defog, gravity switch (effect) @@ -2426,7 +2621,7 @@ bool32 IsStatLoweringEffect(u32 effect) } } -bool32 IsSelfStatLoweringEffect(u32 effect) +bool32 IsSelfStatLoweringEffect(enum BattleMoveEffects effect) { // Self stat lowering moves like Overheart, Superpower etc. switch (effect) @@ -2454,7 +2649,7 @@ bool32 IsSelfStatLoweringEffect(u32 effect) } } -bool32 IsSwitchOutEffect(u32 effect) +bool32 IsSwitchOutEffect(enum BattleMoveEffects effect) { // Switch out effects like U-Turn, Volt Switch, etc. switch (effect) @@ -2473,7 +2668,7 @@ bool32 IsSwitchOutEffect(u32 effect) } } -bool32 IsSubstituteEffect(u32 effect) +bool32 IsSubstituteEffect(enum BattleMoveEffects effect) { // Substitute effects like Substitute, Shed Tail, etc. switch (effect) @@ -2486,7 +2681,7 @@ bool32 IsSubstituteEffect(u32 effect) } } -bool32 IsChaseEffect(u32 effect) +bool32 IsChaseEffect(enum BattleMoveEffects effect) { // Effects that hit switching out mons like Pursuit switch (effect) @@ -2500,15 +2695,22 @@ bool32 IsChaseEffect(u32 effect) static inline bool32 IsMoveSleepClauseTrigger(u32 move) { - u32 i, effect = GetMoveEffect(move); + u32 i; + enum BattleMoveEffects effect = GetMoveEffect(move); // Sleeping effects like Sleep Powder, Yawn, Dark Void, etc. switch (effect) { - case EFFECT_SLEEP: case EFFECT_YAWN: case EFFECT_DARK_VOID: return TRUE; + default: + break; + } + switch(GetMoveNonVolatileStatus(move)) + { + case MOVE_EFFECT_SLEEP: + return TRUE; } // Sleeping effects like G-Max Befuddle, G-Max Snooze, etc. @@ -2556,51 +2758,17 @@ bool32 HasDamagingMoveOfType(u32 battlerId, u32 type) return FALSE; } -bool32 HasSubstituteIgnoringMove(u32 battler) +bool32 HasMoveWithFlag(u32 battler, MoveFlag getFlag) { - s32 i; u16 *moves = GetMovesArray(battler); - for (i = 0; i < MAX_MON_MOVES; i++) + u32 moveLimitations = gAiLogicData->moveLimitations[battler]; + + for (s32 moveIndex = 0; moveIndex < MAX_MON_MOVES; moveIndex++) { - if (moves[i] != MOVE_NONE && moves[i] != MOVE_UNAVAILABLE && MoveIgnoresSubstitute(moves[i])) - return TRUE; - } - return FALSE; -} + if (IsMoveUnusable(moveIndex, moves[moveIndex], moveLimitations)) + continue; -bool32 HasHighCritRatioMove(u32 battler) -{ - s32 i; - u16 *moves = GetMovesArray(battler); - - for (i = 0; i < MAX_MON_MOVES; i++) - { - if (moves[i] != MOVE_NONE && moves[i] != MOVE_UNAVAILABLE && GetMoveCriticalHitStage(moves[i]) > 0) - return TRUE; - } - - return FALSE; -} - -bool32 HasMagicCoatAffectedMove(u32 battler) -{ - s32 i; - u16 *moves = GetMovesArray(battler); - for (i = 0; i < MAX_MON_MOVES; i++) - { - if (moves[i] != MOVE_NONE && moves[i] != MOVE_UNAVAILABLE && MoveCanBeBouncedBack(moves[i])) - return TRUE; - } - return FALSE; -} - -bool32 HasSnatchAffectedMove(u32 battler) -{ - s32 i; - u16 *moves = GetMovesArray(battler); - for (i = 0; i < MAX_MON_MOVES; i++) - { - if (moves[i] != MOVE_NONE && moves[i] != MOVE_UNAVAILABLE && MoveCanBeSnatched(moves[i])) + if (getFlag(moves[moveIndex])) return TRUE; } return FALSE; @@ -2612,7 +2780,7 @@ bool32 IsTwoTurnNotSemiInvulnerableMove(u32 battlerAtk, u32 move) { case EFFECT_SOLAR_BEAM: case EFFECT_TWO_TURNS_ATTACK: - return !(AI_DATA->holdEffects[battlerAtk] == HOLD_EFFECT_POWER_HERB + return !(gAiLogicData->holdEffects[battlerAtk] == HOLD_EFFECT_POWER_HERB || (AI_GetWeather() & GetMoveTwoTurnAttackWeather(move))); default: return FALSE; @@ -2660,7 +2828,7 @@ static u32 GetTrapDamage(u32 battlerId) { // ai has no knowledge about turns remaining u32 damage = 0; - u32 holdEffect = AI_DATA->holdEffects[gBattleStruct->wrappedBy[battlerId]]; + enum ItemHoldEffect holdEffect = gAiLogicData->holdEffects[gBattleStruct->wrappedBy[battlerId]]; if (gBattleMons[battlerId].status2 & STATUS2_WRAPPED) { if (holdEffect == HOLD_EFFECT_BINDING_BAND) @@ -2678,7 +2846,7 @@ static u32 GetPoisonDamage(u32 battlerId) { u32 damage = 0; - if (AI_DATA->abilities[battlerId] == ABILITY_POISON_HEAL) + if (gAiLogicData->abilities[battlerId] == ABILITY_POISON_HEAL) return damage; if (gBattleMons[battlerId].status1 & STATUS1_POISON) @@ -2723,8 +2891,8 @@ static bool32 BattlerAffectedByHail(u32 battlerId, u32 ability) static u32 GetWeatherDamage(u32 battlerId) { - u32 ability = AI_DATA->abilities[battlerId]; - u32 holdEffect = AI_DATA->holdEffects[battlerId]; + u32 ability = gAiLogicData->abilities[battlerId]; + enum ItemHoldEffect holdEffect = gAiLogicData->holdEffects[battlerId]; u32 damage = 0; u32 weather = AI_GetWeather(); if (!weather) @@ -2759,7 +2927,7 @@ u32 GetBattlerSecondaryDamage(u32 battlerId) { u32 secondaryDamage; - if (AI_DATA->abilities[battlerId] == ABILITY_MAGIC_GUARD) + if (gAiLogicData->abilities[battlerId] == ABILITY_MAGIC_GUARD) return FALSE; secondaryDamage = GetLeechSeedDamage(battlerId) @@ -2820,7 +2988,7 @@ static bool32 PartyBattlerShouldAvoidHazards(u32 currBattler, u32 switchBattler) { struct Pokemon *mon = &GetBattlerParty(currBattler)[switchBattler]; u32 ability = GetMonAbility(mon); // we know our own party data - u32 holdEffect; + enum ItemHoldEffect holdEffect; u32 species = GetMonData(mon, MON_DATA_SPECIES); u32 flags = gSideStatuses[GetBattlerSide(currBattler)] & (SIDE_STATUS_SPIKES | SIDE_STATUS_STEALTH_ROCK | SIDE_STATUS_STEELSURGE | SIDE_STATUS_STICKY_WEB | SIDE_STATUS_TOXIC_SPIKES); s32 hazardDamage = 0; @@ -2867,6 +3035,12 @@ enum AIPivot ShouldPivot(u32 battlerAtk, u32 battlerDef, u32 defAbility, u32 mov battlerToSwitch = gBattleStruct->AI_monToSwitchIntoId[battlerAtk]; + // Palafin always wants to activate Zero to Hero + if (gBattleMons[battlerAtk].species == SPECIES_PALAFIN_ZERO + && gBattleMons[battlerAtk].ability == ABILITY_ZERO_TO_HERO + && CountUsablePartyMons(battlerAtk) != 0) + return SHOULD_PIVOT; + if (PartyBattlerShouldAvoidHazards(battlerAtk, battlerToSwitch)) return DONT_PIVOT; @@ -2888,8 +3062,8 @@ enum AIPivot ShouldPivot(u32 battlerAtk, u32 battlerDef, u32 defAbility, u32 mov if (CanTargetFaintAi(battlerDef, battlerAtk)) return SHOULD_PIVOT; // Won't get the two turns, pivot - if (!IsBattleMoveStatus(move) && ((AI_DATA->shouldSwitch & (1u << battlerAtk)) - || (AI_BattlerAtMaxHp(battlerDef) && (AI_DATA->holdEffects[battlerDef] == HOLD_EFFECT_FOCUS_SASH + if (!IsBattleMoveStatus(move) && ((gAiLogicData->shouldSwitch & (1u << battlerAtk)) + || (AI_BattlerAtMaxHp(battlerDef) && (gAiLogicData->holdEffects[battlerDef] == HOLD_EFFECT_FOCUS_SASH || (B_STURDY >= GEN_5 && defAbility == ABILITY_STURDY) || defAbility == ABILITY_MULTISCALE || defAbility == ABILITY_SHADOW_SHIELD)))) @@ -2897,20 +3071,20 @@ enum AIPivot ShouldPivot(u32 battlerAtk, u32 battlerDef, u32 defAbility, u32 mov } else if (!hasStatBoost) { - if (!IsBattleMoveStatus(move) && (AI_BattlerAtMaxHp(battlerDef) && (AI_DATA->holdEffects[battlerDef] == HOLD_EFFECT_FOCUS_SASH + if (!IsBattleMoveStatus(move) && (AI_BattlerAtMaxHp(battlerDef) && (gAiLogicData->holdEffects[battlerDef] == HOLD_EFFECT_FOCUS_SASH || (B_STURDY >= GEN_5 && defAbility == ABILITY_STURDY) || defAbility == ABILITY_MULTISCALE || defAbility == ABILITY_SHADOW_SHIELD))) return SHOULD_PIVOT; // pivot to break sash/sturdy/multiscale - if (AI_DATA->shouldSwitch & (1u << battlerAtk)) + if (gAiLogicData->shouldSwitch & (1u << battlerAtk)) return SHOULD_PIVOT; /* TODO - check if switchable mon unafffected by/will remove hazards if (gSideStatuses[battlerAtk] & SIDE_STATUS_SPIKES && switchScore >= SWITCHING_INCREASE_CAN_REMOVE_HAZARDS) return SHOULD_PIVOT;*/ - /*if (BattlerWillFaintFromSecondaryDamage(battlerAtk, AI_DATA->abilities[battlerAtk]) && switchScore >= SWITCHING_INCREASE_WALLS_FOE) + /*if (BattlerWillFaintFromSecondaryDamage(battlerAtk, gAiLogicData->abilities[battlerAtk]) && switchScore >= SWITCHING_INCREASE_WALLS_FOE) return SHOULD_PIVOT;*/ /*if (IsClassDamager(class) && switchScore >= SWITCHING_INCREASE_HAS_SUPER_EFFECTIVE_MOVE) @@ -2953,7 +3127,7 @@ enum AIPivot ShouldPivot(u32 battlerAtk, u32 battlerDef, u32 defAbility, u32 mov { if (CanAIFaintTarget(battlerAtk, battlerDef, 0)) { - if (!BattlerWillFaintFromSecondaryDamage(battlerAtk, AI_DATA->abilities[battlerAtk])) + if (!BattlerWillFaintFromSecondaryDamage(battlerAtk, gAiLogicData->abilities[battlerAtk])) return CAN_TRY_PIVOT; // Use this move to KO if you must } else // Can't KO the foe @@ -2965,7 +3139,7 @@ enum AIPivot ShouldPivot(u32 battlerAtk, u32 battlerDef, u32 defAbility, u32 mov { if (CanAIFaintTarget(battlerAtk, battlerDef, 0)) { - if (!BattlerWillFaintFromSecondaryDamage(battlerAtk, AI_DATA->abilities[battlerAtk]) // This is the only move that can KO + if (!BattlerWillFaintFromSecondaryDamage(battlerAtk, gAiLogicData->abilities[battlerAtk]) // This is the only move that can KO && !hasStatBoost) //You're not wasting a valuable stat boost { return CAN_TRY_PIVOT; @@ -2974,9 +3148,9 @@ enum AIPivot ShouldPivot(u32 battlerAtk, u32 battlerDef, u32 defAbility, u32 mov else if (CanAIFaintTarget(battlerAtk, battlerDef, 2)) { // can knock out foe in 2 hits - if (IsBattleMoveStatus(move) && ((AI_DATA->shouldSwitch & (1u << battlerAtk)) //Damaging move + if (IsBattleMoveStatus(move) && ((gAiLogicData->shouldSwitch & (1u << battlerAtk)) //Damaging move //&& (switchScore >= SWITCHING_INCREASE_RESIST_ALL_MOVES + SWITCHING_INCREASE_KO_FOE //remove hazards - || (AI_DATA->holdEffects[battlerDef] == HOLD_EFFECT_FOCUS_SASH && AI_BattlerAtMaxHp(battlerDef)))) + || (gAiLogicData->holdEffects[battlerDef] == HOLD_EFFECT_FOCUS_SASH && AI_BattlerAtMaxHp(battlerDef)))) return DONT_PIVOT; // Pivot to break the sash else return CAN_TRY_PIVOT; @@ -3040,10 +3214,10 @@ bool32 CanKnockOffItem(u32 battler, u32 item) | BATTLE_TYPE_RECORDED_LINK | BATTLE_TYPE_SECRET_BASE | (B_TRAINERS_KNOCK_OFF_ITEMS == TRUE ? BATTLE_TYPE_TRAINER : 0) - )) && GetBattlerSide(battler) == B_SIDE_PLAYER) + )) && IsOnPlayerSide(battler)) return FALSE; - if (AI_DATA->abilities[battler] == ABILITY_STICKY_HOLD) + if (gAiLogicData->abilities[battler] == ABILITY_STICKY_HOLD) return FALSE; if (!CanBattlerGetOrLoseItem(battler, item)) @@ -3058,7 +3232,7 @@ bool32 IsBattlerIncapacitated(u32 battler, u32 ability) if ((gBattleMons[battler].status1 & STATUS1_FREEZE) && !HasThawingMove(battler)) return TRUE; // if battler has thawing move we assume they will definitely use it, and thus being frozen should be neglected - if (gBattleMons[battler].status1 & STATUS1_SLEEP && !HasMoveEffect(battler, EFFECT_SLEEP_TALK)) + if (gBattleMons[battler].status1 & STATUS1_SLEEP && !HasMoveWithEffect(battler, EFFECT_SLEEP_TALK)) return TRUE; if (gBattleMons[battler].status2 & STATUS2_RECHARGE || (ability == ABILITY_TRUANT && gDisableStructs[battler].truantCounter != 0)) @@ -3069,48 +3243,129 @@ bool32 IsBattlerIncapacitated(u32 battler, u32 ability) bool32 AI_CanPutToSleep(u32 battlerAtk, u32 battlerDef, u32 defAbility, u32 move, u32 partnerMove) { - if (!CanBeSlept(battlerDef, defAbility, BLOCKED_BY_SLEEP_CLAUSE) + if (!CanBeSlept(battlerAtk, battlerDef, defAbility, BLOCKED_BY_SLEEP_CLAUSE) || DoesSubstituteBlockMove(battlerAtk, battlerDef, move) || PartnerMoveEffectIsStatusSameTarget(BATTLE_PARTNER(battlerAtk), battlerDef, partnerMove)) // shouldn't try to sleep mon that partner is trying to make sleep return FALSE; return TRUE; } -bool32 ShouldPoisonSelf(u32 battler, u32 ability) +static inline bool32 DoesBattlerBenefitFromAllVolatileStatus(u32 battler, u32 ability) { - if (CanBePoisoned(battler, battler, GetBattlerAbility(battler)) && ( - ability == ABILITY_MARVEL_SCALE - || ability == ABILITY_POISON_HEAL - || ability == ABILITY_QUICK_FEET - || ability == ABILITY_MAGIC_GUARD - || (ability == ABILITY_TOXIC_BOOST && HasMoveWithCategory(battler, DAMAGE_CATEGORY_PHYSICAL)) - || (ability == ABILITY_GUTS && HasMoveWithCategory(battler, DAMAGE_CATEGORY_PHYSICAL)) - || HasMoveEffect(battler, EFFECT_FACADE) - || HasMoveEffect(battler, EFFECT_PSYCHO_SHIFT))) - return TRUE; // battler can be poisoned and has move/ability that synergizes with being poisoned + if (ability == ABILITY_MARVEL_SCALE + || ability == ABILITY_QUICK_FEET + || ability == ABILITY_MAGIC_GUARD + || (ability == ABILITY_GUTS && HasMoveWithCategory(battler, DAMAGE_CATEGORY_PHYSICAL)) + || HasMoveWithEffect(battler, EFFECT_FACADE) + || HasMoveWithEffect(battler, EFFECT_PSYCHO_SHIFT)) + return TRUE; return FALSE; } +bool32 ShouldPoison(u32 battlerAtk, u32 battlerDef) +{ + u32 abilityDef = gAiLogicData->abilities[battlerDef]; + // Battler can be poisoned and has move/ability that synergizes with being poisoned + if (CanBePoisoned(battlerAtk, battlerDef, gAiLogicData->abilities[battlerAtk], abilityDef) && ( + DoesBattlerBenefitFromAllVolatileStatus(battlerDef, abilityDef) + || abilityDef == ABILITY_POISON_HEAL + || (abilityDef == ABILITY_TOXIC_BOOST && HasMoveWithCategory(battlerDef, DAMAGE_CATEGORY_PHYSICAL)))) + { + if (battlerAtk == battlerDef) // Targeting self + return TRUE; + else + return FALSE; + } + if (battlerAtk == battlerDef) + return FALSE; + else + return TRUE; +} + +bool32 ShouldBurn(u32 battlerAtk, u32 battlerDef, u32 abilityDef) +{ + // Battler can be burned and has move/ability that synergizes with being burned + if (CanBeBurned(battlerAtk, battlerDef, abilityDef) && ( + DoesBattlerBenefitFromAllVolatileStatus(battlerDef, abilityDef) + || abilityDef == ABILITY_HEATPROOF + || (abilityDef == ABILITY_FLARE_BOOST && HasMoveWithCategory(battlerDef, DAMAGE_CATEGORY_SPECIAL)))) + { + if (battlerAtk == battlerDef) // Targeting self + return TRUE; + else + return FALSE; + } + + if (battlerAtk == battlerDef) + return FALSE; + else + return TRUE; +} + +bool32 ShouldFreezeOrFrostbite(u32 battlerAtk, u32 battlerDef, u32 abilityDef) +{ + if (!B_USE_FROSTBITE) + { + if (CanBeFrozen(battlerAtk, battlerDef, abilityDef)) + { + if (battlerAtk == battlerDef) // Targeting self + return FALSE; + else + return TRUE; + } + return FALSE; + } + else + { + // Battler can be frostbitten and has move/ability that synergizes with being frostbitten + if (CanBeFrozen(battlerAtk, battlerDef, abilityDef) + && DoesBattlerBenefitFromAllVolatileStatus(battlerDef, abilityDef)) + { + if (battlerAtk == battlerDef) // Targeting self + return TRUE; + else + return FALSE; + } + + if (battlerAtk == battlerDef) + return FALSE; + else + return TRUE; + } +} + +bool32 ShouldParalyze(u32 battlerAtk, u32 battlerDef, u32 abilityDef) +{ + // Battler can be paralyzed and has move/ability that synergizes with being paralyzed + if (CanBeParalyzed(battlerAtk, battlerDef, abilityDef) && ( + DoesBattlerBenefitFromAllVolatileStatus(battlerDef, abilityDef))) + { + if (battlerAtk == battlerDef) // Targeting self + return TRUE; + else + return FALSE; + } + if (battlerAtk == battlerDef) + return FALSE; + else + return TRUE; +} + bool32 AI_CanPoison(u32 battlerAtk, u32 battlerDef, u32 defAbility, u32 move, u32 partnerMove) { - if (!CanBePoisoned(battlerAtk, battlerDef, GetBattlerAbility(battlerDef)) - || AI_DATA->effectiveness[battlerAtk][battlerDef][AI_THINKING_STRUCT->movesetIndex] == UQ_4_12(0.0) + if (!CanBePoisoned(battlerAtk, battlerDef, gAiLogicData->abilities[battlerAtk], defAbility) + || gAiLogicData->effectiveness[battlerAtk][battlerDef][gAiThinkingStruct->movesetIndex] == UQ_4_12(0.0) || DoesSubstituteBlockMove(battlerAtk, battlerDef, move) || PartnerMoveEffectIsStatusSameTarget(BATTLE_PARTNER(battlerAtk), battlerDef, partnerMove)) return FALSE; - else if (defAbility != ABILITY_CORROSION && IS_BATTLER_ANY_TYPE(battlerDef, TYPE_POISON, TYPE_STEEL)) - return FALSE; - else if (IsValidDoubleBattle(battlerAtk) && AI_DATA->abilities[BATTLE_PARTNER(battlerDef)] == ABILITY_PASTEL_VEIL) - return FALSE; return TRUE; } bool32 AI_CanParalyze(u32 battlerAtk, u32 battlerDef, u32 defAbility, u32 move, u32 partnerMove) { - if (!CanBeParalyzed(battlerDef, defAbility) - || AI_DATA->effectiveness[battlerAtk][battlerDef][AI_THINKING_STRUCT->movesetIndex] == UQ_4_12(0.0) - || gSideStatuses[GetBattlerSide(battlerDef)] & SIDE_STATUS_SAFEGUARD + if (!CanBeParalyzed(battlerAtk, battlerDef, defAbility) + || gAiLogicData->effectiveness[battlerAtk][battlerDef][gAiThinkingStruct->movesetIndex] == UQ_4_12(0.0) || DoesSubstituteBlockMove(battlerAtk, battlerDef, move) || PartnerMoveEffectIsStatusSameTarget(BATTLE_PARTNER(battlerAtk), battlerDef, partnerMove)) return FALSE; @@ -3120,7 +3375,7 @@ bool32 AI_CanParalyze(u32 battlerAtk, u32 battlerDef, u32 defAbility, u32 move, bool32 AI_CanBeConfused(u32 battlerAtk, u32 battlerDef, u32 move, u32 ability) { if ((gBattleMons[battlerDef].status2 & STATUS2_CONFUSION) - || (ability == ABILITY_OWN_TEMPO && !DoesBattlerIgnoreAbilityChecks(battlerAtk, AI_DATA->abilities[battlerAtk], move)) + || (ability == ABILITY_OWN_TEMPO && !DoesBattlerIgnoreAbilityChecks(battlerAtk, gAiLogicData->abilities[battlerAtk], move)) || IsBattlerTerrainAffected(battlerDef, STATUS_FIELD_MISTY_TERRAIN) || gSideStatuses[GetBattlerSide(battlerDef)] & SIDE_STATUS_SAFEGUARD || DoesSubstituteBlockMove(battlerAtk, battlerDef, move)) @@ -3132,7 +3387,7 @@ bool32 AI_CanConfuse(u32 battlerAtk, u32 battlerDef, u32 defAbility, u32 battler { if (GetBattlerMoveTargetType(battlerAtk, move) == MOVE_TARGET_FOES_AND_ALLY && AI_CanBeConfused(battlerAtk, battlerDef, move, defAbility) - && !AI_CanBeConfused(battlerAtk, BATTLE_PARTNER(battlerDef), move, AI_DATA->abilities[BATTLE_PARTNER(battlerDef)])) + && !AI_CanBeConfused(battlerAtk, BATTLE_PARTNER(battlerDef), move, gAiLogicData->abilities[BATTLE_PARTNER(battlerDef)])) return FALSE; if (!AI_CanBeConfused(battlerAtk, battlerDef, move, defAbility) @@ -3142,36 +3397,10 @@ bool32 AI_CanConfuse(u32 battlerAtk, u32 battlerDef, u32 defAbility, u32 battler return TRUE; } -bool32 AI_CanGetFrostbite(u32 battler, u32 ability) -{ - if (ability == ABILITY_MAGMA_ARMOR - || ability == ABILITY_COMATOSE - || IS_BATTLER_OF_TYPE(battler, TYPE_ICE) - || gBattleMons[battler].status1 & STATUS1_ANY - || IsAbilityStatusProtected(battler, ability) - || gSideStatuses[GetBattlerSide(battler)] & SIDE_STATUS_SAFEGUARD) - return FALSE; - return TRUE; -} - -bool32 ShouldBurnSelf(u32 battler, u32 ability) -{ - if (CanBeBurned(battler, ability) && ( - ability == ABILITY_QUICK_FEET - || ability == ABILITY_HEATPROOF - || ability == ABILITY_MAGIC_GUARD - || (ability == ABILITY_FLARE_BOOST && HasMoveWithCategory(battler, DAMAGE_CATEGORY_SPECIAL)) - || (ability == ABILITY_GUTS && HasMoveWithCategory(battler, DAMAGE_CATEGORY_PHYSICAL)) - || HasMoveEffect(battler, EFFECT_FACADE) - || HasMoveEffect(battler, EFFECT_PSYCHO_SHIFT))) - return TRUE; - return FALSE; -} - bool32 AI_CanBurn(u32 battlerAtk, u32 battlerDef, u32 defAbility, u32 battlerAtkPartner, u32 move, u32 partnerMove) { - if (!CanBeBurned(battlerDef, defAbility) - || AI_DATA->effectiveness[battlerAtk][battlerDef][AI_THINKING_STRUCT->movesetIndex] == UQ_4_12(0.0) + if (!CanBeBurned(battlerAtk, battlerDef, defAbility) + || gAiLogicData->effectiveness[battlerAtk][battlerDef][gAiThinkingStruct->movesetIndex] == UQ_4_12(0.0) || DoesSubstituteBlockMove(battlerAtk, battlerDef, move) || PartnerMoveEffectIsStatusSameTarget(battlerAtkPartner, battlerDef, partnerMove)) { @@ -3182,8 +3411,8 @@ bool32 AI_CanBurn(u32 battlerAtk, u32 battlerDef, u32 defAbility, u32 battlerAtk bool32 AI_CanGiveFrostbite(u32 battlerAtk, u32 battlerDef, u32 defAbility, u32 battlerAtkPartner, u32 move, u32 partnerMove) { - if (!AI_CanGetFrostbite(battlerDef, defAbility) - || AI_DATA->effectiveness[battlerAtk][battlerDef][AI_THINKING_STRUCT->movesetIndex] == UQ_4_12(0.0) + if (!CanBeFrozen(battlerAtk, battlerDef, defAbility) + || gAiLogicData->effectiveness[battlerAtk][battlerDef][gAiThinkingStruct->movesetIndex] == UQ_4_12(0.0) || DoesSubstituteBlockMove(battlerAtk, battlerDef, move) || PartnerMoveEffectIsStatusSameTarget(battlerAtkPartner, battlerDef, partnerMove)) { @@ -3195,7 +3424,7 @@ bool32 AI_CanGiveFrostbite(u32 battlerAtk, u32 battlerDef, u32 defAbility, u32 b bool32 AI_CanBeInfatuated(u32 battlerAtk, u32 battlerDef, u32 defAbility) { if ((gBattleMons[battlerDef].status2 & STATUS2_INFATUATION) - || AI_DATA->effectiveness[battlerAtk][battlerDef][AI_THINKING_STRUCT->movesetIndex] == UQ_4_12(0.0) + || gAiLogicData->effectiveness[battlerAtk][battlerDef][gAiThinkingStruct->movesetIndex] == UQ_4_12(0.0) || defAbility == ABILITY_OBLIVIOUS || !AreBattlersOfOppositeGender(battlerAtk, battlerDef) || AI_IsAbilityOnSide(battlerDef, ABILITY_AROMA_VEIL)) @@ -3205,8 +3434,8 @@ bool32 AI_CanBeInfatuated(u32 battlerAtk, u32 battlerDef, u32 defAbility) u32 ShouldTryToFlinch(u32 battlerAtk, u32 battlerDef, u32 atkAbility, u32 defAbility, u32 move) { - if (((!IsMoldBreakerTypeAbility(battlerAtk, AI_DATA->abilities[battlerAtk]) && (defAbility == ABILITY_SHIELD_DUST || defAbility == ABILITY_INNER_FOCUS)) - || AI_DATA->holdEffects[battlerDef] == HOLD_EFFECT_COVERT_CLOAK + if (((!IsMoldBreakerTypeAbility(battlerAtk, gAiLogicData->abilities[battlerAtk]) && (defAbility == ABILITY_SHIELD_DUST || defAbility == ABILITY_INNER_FOCUS)) + || gAiLogicData->holdEffects[battlerDef] == HOLD_EFFECT_COVERT_CLOAK || DoesSubstituteBlockMove(battlerAtk, battlerDef, move) || AI_IsSlower(battlerAtk, battlerDef, move))) // Opponent goes first { @@ -3226,13 +3455,16 @@ u32 ShouldTryToFlinch(u32 battlerAtk, u32 battlerDef, u32 atkAbility, u32 defAbi bool32 ShouldTrap(u32 battlerAtk, u32 battlerDef, u32 move) { - if (IsBattlerTrapped(battlerDef, TRUE)) + if (AI_CanBattlerEscape(battlerDef)) return FALSE; - if (BattlerWillFaintFromSecondaryDamage(battlerDef, AI_DATA->abilities[battlerDef])) + if (IsBattlerTrapped(battlerAtk, battlerDef)) + return FALSE; + + if (BattlerWillFaintFromSecondaryDamage(battlerDef, gAiLogicData->abilities[battlerDef])) return TRUE; // battler is taking secondary damage with low HP - if (AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_STALL) + if (gAiThinkingStruct->aiFlags[battlerAtk] & AI_FLAG_STALL) { if (!CanTargetFaintAi(battlerDef, battlerAtk)) return TRUE; // attacker goes first and opponent can't kill us @@ -3244,12 +3476,12 @@ bool32 ShouldTrap(u32 battlerAtk, u32 battlerDef, u32 move) bool32 ShouldFakeOut(u32 battlerAtk, u32 battlerDef, u32 move) { if ((!gDisableStructs[battlerAtk].isFirstTurn && MoveHasAdditionalEffectWithChance(move, MOVE_EFFECT_FLINCH, 100)) - || AI_DATA->abilities[battlerAtk] == ABILITY_GORILLA_TACTICS - || AI_DATA->holdEffects[battlerAtk] == HOLD_EFFECT_CHOICE_BAND - || AI_DATA->holdEffects[battlerDef] == HOLD_EFFECT_COVERT_CLOAK + || gAiLogicData->abilities[battlerAtk] == ABILITY_GORILLA_TACTICS + || gAiLogicData->holdEffects[battlerAtk] == HOLD_EFFECT_CHOICE_BAND + || gAiLogicData->holdEffects[battlerDef] == HOLD_EFFECT_COVERT_CLOAK || DoesSubstituteBlockMove(battlerAtk, battlerDef, move) - || (!IsMoldBreakerTypeAbility(battlerAtk, AI_DATA->abilities[battlerAtk]) - && (AI_DATA->abilities[battlerDef] == ABILITY_SHIELD_DUST || AI_DATA->abilities[battlerDef] == ABILITY_INNER_FOCUS))) + || (!IsMoldBreakerTypeAbility(battlerAtk, gAiLogicData->abilities[battlerAtk]) + && (gAiLogicData->abilities[battlerDef] == ABILITY_SHIELD_DUST || gAiLogicData->abilities[battlerDef] == ABILITY_INNER_FOCUS))) return FALSE; return TRUE; @@ -3257,13 +3489,13 @@ bool32 ShouldFakeOut(u32 battlerAtk, u32 battlerDef, u32 move) static u32 FindMoveUsedXTurnsAgo(u32 battlerId, u32 x) { - s32 i, index = BATTLE_HISTORY->moveHistoryIndex[battlerId]; + s32 i, index = gBattleHistory->moveHistoryIndex[battlerId]; for (i = 0; i < x; i++) { if (--index < 0) index = AI_MOVE_HISTORY_COUNT - 1; } - return BATTLE_HISTORY->moveHistory[battlerId][index]; + return gBattleHistory->moveHistory[battlerId][index]; } bool32 IsWakeupTurn(u32 battler) @@ -3288,7 +3520,7 @@ bool32 AnyPartyMemberStatused(u32 battlerId, bool32 checkSoundproof) battlerOnField2 = gBattlerPartyIndexes[GetPartnerBattler(battlerId)]; // Check partner's status if ((GetGenConfig(GEN_CONFIG_HEAL_BELL_SOUNDPROOF) == GEN_5 - || AI_DATA->abilities[BATTLE_PARTNER(battlerId)] != ABILITY_SOUNDPROOF + || gAiLogicData->abilities[BATTLE_PARTNER(battlerId)] != ABILITY_SOUNDPROOF || !checkSoundproof) && GetMonData(&party[battlerOnField2], MON_DATA_STATUS) != STATUS1_NONE) return TRUE; @@ -3302,7 +3534,7 @@ bool32 AnyPartyMemberStatused(u32 battlerId, bool32 checkSoundproof) // Check attacker's status if ((GetGenConfig(GEN_CONFIG_HEAL_BELL_SOUNDPROOF) == GEN_5 || GetGenConfig(GEN_CONFIG_HEAL_BELL_SOUNDPROOF) >= GEN_8 - || AI_DATA->abilities[battlerId] != ABILITY_SOUNDPROOF || !checkSoundproof) + || gAiLogicData->abilities[battlerId] != ABILITY_SOUNDPROOF || !checkSoundproof) && GetMonData(&party[battlerOnField1], MON_DATA_STATUS) != STATUS1_NONE) return TRUE; @@ -3330,13 +3562,13 @@ u32 GetBattlerSideSpeedAverage(u32 battler) if (IsBattlerAlive(battler)) { - speed1 = AI_DATA->speedStats[battler]; + speed1 = gAiLogicData->speedStats[battler]; numBattlersAlive++; } if (IsDoubleBattle() && IsBattlerAlive(BATTLE_PARTNER(battler))) { - speed2 = AI_DATA->speedStats[BATTLE_PARTNER(battler)]; + speed2 = gAiLogicData->speedStats[BATTLE_PARTNER(battler)]; numBattlersAlive++; } @@ -3370,7 +3602,7 @@ bool32 ShouldAbsorb(u32 battlerAtk, u32 battlerDef, u32 move, s32 damage) if (CanTargetFaintAi(battlerDef, battlerAtk) && !CanTargetFaintAiWithMod(battlerDef, battlerAtk, healDmg, 0)) return TRUE; // target can faint attacker unless they heal - else if (!CanTargetFaintAi(battlerDef, battlerAtk) && AI_DATA->hpPercents[battlerAtk] < 60 && (Random() % 3)) + else if (!CanTargetFaintAi(battlerDef, battlerAtk) && gAiLogicData->hpPercents[battlerAtk] < 60 && (Random() % 3)) return TRUE; // target can't faint attacker at all, attacker health is about half, 2/3rds rate of encouraging healing } else @@ -3383,12 +3615,12 @@ bool32 ShouldAbsorb(u32 battlerAtk, u32 battlerDef, u32 move, s32 damage) return FALSE; } -bool32 ShouldRecover(u32 battlerAtk, u32 battlerDef, u32 move, u32 healPercent) +bool32 ShouldRecover(u32 battlerAtk, u32 battlerDef, u32 move, u32 healPercent, enum DamageCalcContext calcContext) { 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].expected; + s32 damage = AI_GetDamage(battlerAtk, battlerDef, gAiThinkingStruct->movesetIndex, calcContext, gAiLogicData); s32 healAmount = (healPercent * damage) / 100; if (gStatuses3[battlerAtk] & STATUS3_HEAL_BLOCK) healAmount = 0; @@ -3396,19 +3628,19 @@ bool32 ShouldRecover(u32 battlerAtk, u32 battlerDef, u32 move, u32 healPercent) if (CanTargetFaintAi(battlerDef, battlerAtk) && !CanTargetFaintAiWithMod(battlerDef, battlerAtk, healAmount, 0)) return TRUE; // target can faint attacker unless they heal - else if (!CanTargetFaintAi(battlerDef, battlerAtk) && AI_DATA->hpPercents[battlerAtk] < 60 && (Random() % 3)) + else if (!CanTargetFaintAi(battlerDef, battlerAtk) && gAiLogicData->hpPercents[battlerAtk] < 60 && (Random() % 3)) return TRUE; // target can't faint attacker at all, attacker health is about half, 2/3rds rate of encouraging healing } return FALSE; } -bool32 ShouldSetScreen(u32 battlerAtk, u32 battlerDef, u32 moveEffect) +bool32 ShouldSetScreen(u32 battlerAtk, u32 battlerDef, enum BattleMoveEffects moveEffect) { u32 atkSide = GetBattlerSide(battlerAtk); // Don't waste a turn if screens will be broken - if (HasMoveEffect(battlerDef, EFFECT_BRICK_BREAK) - || HasMoveEffect(battlerDef, EFFECT_RAGING_BULL)) + if (HasMoveWithEffect(battlerDef, EFFECT_BRICK_BREAK) + || HasMoveWithEffect(battlerDef, EFFECT_RAGING_BULL)) return FALSE; switch (moveEffect) @@ -3431,6 +3663,8 @@ bool32 ShouldSetScreen(u32 battlerAtk, u32 battlerDef, u32 moveEffect) && !(gSideStatuses[atkSide] & SIDE_STATUS_LIGHTSCREEN)) return TRUE; break; + default: + break; } return FALSE; @@ -3490,14 +3724,15 @@ bool32 PartnerMoveEffectIsStatusSameTarget(u32 battlerAtkPartner, u32 battlerDef if (!IsDoubleBattle()) return FALSE; - u32 partnerEffect = GetMoveEffect(partnerMove); + enum BattleMoveEffects partnerEffect = GetMoveEffect(partnerMove); + u32 nonVolatileStatus = GetMoveNonVolatileStatus(partnerMove); if (partnerMove != MOVE_NONE && gBattleStruct->moveTarget[battlerAtkPartner] == battlerDef - && (partnerEffect == EFFECT_SLEEP - || partnerEffect == EFFECT_POISON - || partnerEffect == EFFECT_TOXIC - || partnerEffect == EFFECT_PARALYZE - || partnerEffect == EFFECT_WILL_O_WISP + && (nonVolatileStatus == MOVE_EFFECT_POISON + || nonVolatileStatus == MOVE_EFFECT_TOXIC + || nonVolatileStatus == MOVE_EFFECT_SLEEP + || nonVolatileStatus == MOVE_EFFECT_PARALYSIS + || nonVolatileStatus == MOVE_EFFECT_BURN || partnerEffect == EFFECT_YAWN)) return TRUE; return FALSE; @@ -3505,7 +3740,7 @@ bool32 PartnerMoveEffectIsStatusSameTarget(u32 battlerAtkPartner, u32 battlerDef bool32 IsMoveEffectWeather(u32 move) { - u32 effect = GetMoveEffect(move); + enum BattleMoveEffects effect = GetMoveEffect(move); if (move != MOVE_NONE && (effect == EFFECT_SUNNY_DAY || effect == EFFECT_RAIN_DANCE @@ -3523,7 +3758,7 @@ bool32 PartnerMoveEffectIsTerrain(u32 battlerAtkPartner, u32 partnerMove) if (!IsDoubleBattle()) return FALSE; - u32 partnerEffect = GetMoveEffect(partnerMove); + enum BattleMoveEffects partnerEffect = GetMoveEffect(partnerMove); if (partnerMove != MOVE_NONE && (partnerEffect == EFFECT_GRASSY_TERRAIN || partnerEffect == EFFECT_MISTY_TERRAIN @@ -3535,7 +3770,7 @@ bool32 PartnerMoveEffectIsTerrain(u32 battlerAtkPartner, u32 partnerMove) } //PARTNER_MOVE_EFFECT_IS -bool32 PartnerMoveEffectIs(u32 battlerAtkPartner, u32 partnerMove, u32 effectCheck) +bool32 PartnerMoveEffectIs(u32 battlerAtkPartner, u32 partnerMove, enum BattleMoveEffects effectCheck) { if (!IsDoubleBattle()) return FALSE; @@ -3597,7 +3832,7 @@ bool32 ShouldUseWishAromatherapy(u32 battlerAtk, u32 battlerDef, u32 move) party = GetBattlerParty(battlerAtk); if (CountUsablePartyMons(battlerAtk) == 0 - && (CanTargetFaintAi(battlerDef, battlerAtk) || BattlerWillFaintFromSecondaryDamage(battlerAtk, AI_DATA->abilities[battlerAtk]))) + && (CanTargetFaintAi(battlerDef, battlerAtk) || BattlerWillFaintFromSecondaryDamage(battlerAtk, gAiLogicData->abilities[battlerAtk]))) return FALSE; // Don't heal if last mon and will faint for (i = 0; i < PARTY_SIZE; i++) @@ -3626,6 +3861,9 @@ bool32 ShouldUseWishAromatherapy(u32 battlerAtk, u32 battlerDef, u32 move) case EFFECT_HEAL_BELL: if (hasStatus) return TRUE; + break; + default: + break; } } else @@ -3633,10 +3871,13 @@ bool32 ShouldUseWishAromatherapy(u32 battlerAtk, u32 battlerDef, u32 move) switch (GetMoveEffect(move)) { case EFFECT_WISH: - return ShouldRecover(battlerAtk, battlerDef, move, 50); // Switch recovery isn't good idea in doubles + return ShouldRecover(battlerAtk, battlerDef, move, 50, AI_DEFENDING); // Switch recovery isn't good idea in doubles case EFFECT_HEAL_BELL: if (hasStatus) return TRUE; + break; + default: + break; } } @@ -3659,37 +3900,55 @@ void FreeRestoreBattleMons(struct BattlePokemon *savedBattleMons) } // party logic -s32 AI_CalcPartyMonDamage(u32 move, u32 battlerAtk, u32 battlerDef, struct BattlePokemon switchinCandidate, bool32 isPartyMonAttacker, enum DamageRollType rollType) +s32 AI_CalcPartyMonDamage(u32 move, u32 battlerAtk, u32 battlerDef, struct BattlePokemon switchinCandidate, enum DamageCalcContext calcContext) { struct SimulatedDamage dmg; uq4_12_t effectiveness; struct BattlePokemon *savedBattleMons = AllocSaveBattleMons(); - if (isPartyMonAttacker) + if (calcContext == AI_ATTACKING) { gBattleMons[battlerAtk] = switchinCandidate; - AI_THINKING_STRUCT->saved[battlerDef].saved = TRUE; - SetBattlerAiData(battlerAtk, AI_DATA); // set known opposing battler data - AI_THINKING_STRUCT->saved[battlerDef].saved = FALSE; + gAiThinkingStruct->saved[battlerDef].saved = TRUE; + SetBattlerAiData(battlerAtk, gAiLogicData); // set known opposing battler data + gAiThinkingStruct->saved[battlerDef].saved = FALSE; } - else + else if (calcContext == AI_DEFENDING) { gBattleMons[battlerDef] = switchinCandidate; - AI_THINKING_STRUCT->saved[battlerAtk].saved = TRUE; - SetBattlerAiData(battlerDef, AI_DATA); // set known opposing battler data - AI_THINKING_STRUCT->saved[battlerAtk].saved = FALSE; + gAiThinkingStruct->saved[battlerAtk].saved = TRUE; + SetBattlerAiData(battlerDef, gAiLogicData); // set known opposing battler data + gAiThinkingStruct->saved[battlerAtk].saved = FALSE; } - dmg = AI_CalcDamage(move, battlerAtk, battlerDef, &effectiveness, FALSE, AI_GetWeather(), rollType); + dmg = AI_CalcDamage(move, battlerAtk, battlerDef, &effectiveness, FALSE, AI_GetWeather()); + // restores original gBattleMon struct FreeRestoreBattleMons(savedBattleMons); - if (isPartyMonAttacker) - SetBattlerAiData(battlerAtk, AI_DATA); - else - SetBattlerAiData(battlerDef, AI_DATA); + if (calcContext == AI_ATTACKING) + { + SetBattlerAiData(battlerAtk, gAiLogicData); + if (gAiThinkingStruct->aiFlags[battlerAtk] & AI_FLAG_RISKY && !(gAiThinkingStruct->aiFlags[battlerAtk] & AI_FLAG_CONSERVATIVE)) + return dmg.maximum; + else if (gAiThinkingStruct->aiFlags[battlerAtk] & AI_FLAG_CONSERVATIVE && !(gAiThinkingStruct->aiFlags[battlerAtk] & AI_FLAG_RISKY)) + return dmg.minimum; + else + return dmg.median; + } - return dmg.expected; + else if (calcContext == AI_DEFENDING) + { + SetBattlerAiData(battlerDef, gAiLogicData); + if (gAiThinkingStruct->aiFlags[battlerDef] & AI_FLAG_RISKY && !(gAiThinkingStruct->aiFlags[battlerAtk] & AI_FLAG_CONSERVATIVE)) + return dmg.minimum; + else if (gAiThinkingStruct->aiFlags[battlerDef] & AI_FLAG_CONSERVATIVE && !(gAiThinkingStruct->aiFlags[battlerAtk] & AI_FLAG_RISKY)) + return dmg.maximum; + else + return dmg.median; + } + + return dmg.median; } u32 AI_WhoStrikesFirstPartyMon(u32 battlerAtk, u32 battlerDef, struct BattlePokemon switchinCandidate, u32 moveConsidered) @@ -3697,10 +3956,10 @@ u32 AI_WhoStrikesFirstPartyMon(u32 battlerAtk, u32 battlerDef, struct BattlePoke struct BattlePokemon *savedBattleMons = AllocSaveBattleMons(); gBattleMons[battlerAtk] = switchinCandidate; - SetBattlerAiData(battlerAtk, AI_DATA); + SetBattlerAiData(battlerAtk, gAiLogicData); u32 aiMonFaster = AI_IsFaster(battlerAtk, battlerDef, moveConsidered); FreeRestoreBattleMons(savedBattleMons); - SetBattlerAiData(battlerAtk, AI_DATA); + SetBattlerAiData(battlerAtk, gAiLogicData); return aiMonFaster; } @@ -3881,14 +4140,19 @@ bool32 IsRecycleEncouragedItem(u32 item) return FALSE; } -static u32 IncreaseStatUpScoreInternal(u32 battlerAtk, u32 battlerDef, u32 statId, bool32 considerContrary) +static enum AIScore IncreaseStatUpScoreInternal(u32 battlerAtk, u32 battlerDef, enum StatChange statId, bool32 considerContrary) { - u32 tempScore = NO_INCREASE; + enum AIScore tempScore = NO_INCREASE; u32 noOfHitsToFaint = NoOfHitsForTargetToFaintAI(battlerDef, battlerAtk); u32 aiIsFaster = AI_IsFaster(battlerAtk, battlerDef, TRUE); u32 shouldSetUp = ((noOfHitsToFaint >= 2 && aiIsFaster) || (noOfHitsToFaint >= 3 && !aiIsFaster) || noOfHitsToFaint == UNKNOWN_NO_OF_HITS); + u32 i; - if (considerContrary && AI_DATA->abilities[battlerAtk] == ABILITY_CONTRARY) + if (considerContrary && gAiLogicData->abilities[battlerAtk] == ABILITY_CONTRARY) + return NO_INCREASE; + + // Don't increase stats if opposing battler has Unaware + if (HasBattlerSideAbility(battlerDef, ABILITY_UNAWARE, gAiLogicData)) return NO_INCREASE; // Don't increase stat if AI is at +4 @@ -3896,7 +4160,7 @@ static u32 IncreaseStatUpScoreInternal(u32 battlerAtk, u32 battlerDef, u32 statI 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) + if (gAiLogicData->hpPercents[battlerAtk] < 70 && noOfHitsToFaint == UNKNOWN_NO_OF_HITS) return NO_INCREASE; // Don't set up if AI is dead to residual damage from weather @@ -3904,12 +4168,42 @@ static u32 IncreaseStatUpScoreInternal(u32 battlerAtk, u32 battlerDef, u32 statI return NO_INCREASE; // Don't increase stats if opposing battler has Opportunist - if (AI_DATA->abilities[battlerDef] == ABILITY_OPPORTUNIST) + if (gAiLogicData->abilities[battlerDef] == ABILITY_OPPORTUNIST) return NO_INCREASE; - // If predicting switch, stat increases are great momentum + // Don't increase stats if opposing battler has Encore + if (HasBattlerSideMoveWithEffect(battlerDef, EFFECT_ENCORE)) + return NO_INCREASE; + + // Don't increase stats if opposing battler has used Haze effect + if (HasBattlerSideUsedMoveWithEffect(battlerDef, EFFECT_HAZE) + || HasBattlerSideUsedMoveWithAdditionalEffect(battlerDef, MOVE_EFFECT_CLEAR_SMOG) + || HasBattlerSideUsedMoveWithAdditionalEffect(battlerDef, MOVE_EFFECT_HAZE)) + return NO_INCREASE; + + // Don't increase if AI is at +1 and opponent has Haze effect + if (gBattleMons[battlerAtk].statStages[statId] >= MAX_STAT_STAGE - 5 && (HasBattlerSideMoveWithEffect(battlerDef, EFFECT_HAZE) + || HasBattlerSideMoveWithAdditionalEffect(battlerDef, MOVE_EFFECT_CLEAR_SMOG) + || HasBattlerSideMoveWithAdditionalEffect(battlerDef, MOVE_EFFECT_HAZE))) + return NO_INCREASE; + + // Predicting switch if (IsBattlerPredictedToSwitch(battlerDef)) + { + struct Pokemon *playerParty = GetBattlerParty(battlerDef); + // If expected switchin outspeeds and has Encore, don't increase + for (i = 0; i < MAX_MON_MOVES; i++) + { + if (GetMoveEffect(GetMonData(&playerParty[gAiLogicData->mostSuitableMonId[battlerDef]], MON_DATA_MOVE1 + i, NULL)) == EFFECT_ENCORE + && GetMonData(&playerParty[gAiLogicData->mostSuitableMonId[battlerDef]], MON_DATA_PP1 + i, NULL) > 0); + { + if (GetMonData(&playerParty[gAiLogicData->mostSuitableMonId[battlerDef]], MON_DATA_SPEED, NULL) > gBattleMons[battlerAtk].speed) + return NO_INCREASE; + } + } + // Otherwise if predicting switch, stat increases are great momentum tempScore += WEAK_EFFECT; + } switch (statId) { @@ -3920,7 +4214,7 @@ static u32 IncreaseStatUpScoreInternal(u32 battlerAtk, u32 battlerDef, u32 statI case STAT_CHANGE_DEF: if (HasMoveWithCategory(battlerDef, DAMAGE_CATEGORY_PHYSICAL) || !HasMoveWithCategory(battlerDef, DAMAGE_CATEGORY_SPECIAL)) { - if (AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_STALL) + if (gAiThinkingStruct->aiFlags[battlerAtk] & AI_FLAG_STALL) tempScore += DECENT_EFFECT; else tempScore += WEAK_EFFECT; @@ -3937,7 +4231,7 @@ static u32 IncreaseStatUpScoreInternal(u32 battlerAtk, u32 battlerDef, u32 statI case STAT_CHANGE_SPDEF: if (HasMoveWithCategory(battlerDef, DAMAGE_CATEGORY_SPECIAL) || !HasMoveWithCategory(battlerDef, DAMAGE_CATEGORY_PHYSICAL)) { - if (AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_STALL) + if (gAiThinkingStruct->aiFlags[battlerAtk] & AI_FLAG_STALL) tempScore += DECENT_EFFECT; else tempScore += WEAK_EFFECT; @@ -3950,7 +4244,7 @@ static u32 IncreaseStatUpScoreInternal(u32 battlerAtk, u32 battlerDef, u32 statI 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) + if (gAiThinkingStruct->aiFlags[battlerAtk] & AI_FLAG_STALL) tempScore += GOOD_EFFECT; else tempScore += DECENT_EFFECT; @@ -3967,7 +4261,7 @@ static u32 IncreaseStatUpScoreInternal(u32 battlerAtk, u32 battlerDef, u32 statI 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) + if (gAiThinkingStruct->aiFlags[battlerAtk] & AI_FLAG_STALL) tempScore += GOOD_EFFECT; else tempScore += DECENT_EFFECT; @@ -3988,33 +4282,33 @@ static u32 IncreaseStatUpScoreInternal(u32 battlerAtk, u32 battlerDef, u32 statI return tempScore; } -u32 IncreaseStatUpScore(u32 battlerAtk, u32 battlerDef, u32 statId) +u32 IncreaseStatUpScore(u32 battlerAtk, u32 battlerDef, enum StatChange statId) { return IncreaseStatUpScoreInternal(battlerAtk, battlerDef, statId, TRUE); } -u32 IncreaseStatUpScoreContrary(u32 battlerAtk, u32 battlerDef, u32 statId) +u32 IncreaseStatUpScoreContrary(u32 battlerAtk, u32 battlerDef, enum StatChange statId) { return IncreaseStatUpScoreInternal(battlerAtk, battlerDef, statId, FALSE); } void IncreasePoisonScore(u32 battlerAtk, u32 battlerDef, u32 move, s32 *score) { - if (((AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_TRY_TO_FAINT) && CanAIFaintTarget(battlerAtk, battlerDef, 0)) - || AI_DATA->holdEffects[battlerDef] == HOLD_EFFECT_CURE_PSN || AI_DATA->holdEffects[battlerDef] == HOLD_EFFECT_CURE_STATUS) + if (((gAiThinkingStruct->aiFlags[battlerAtk] & AI_FLAG_TRY_TO_FAINT) && CanAIFaintTarget(battlerAtk, battlerDef, 0)) + || gAiLogicData->holdEffects[battlerDef] == HOLD_EFFECT_CURE_PSN || gAiLogicData->holdEffects[battlerDef] == HOLD_EFFECT_CURE_STATUS) return; - if (AI_CanPoison(battlerAtk, battlerDef, AI_DATA->abilities[battlerDef], move, AI_DATA->partnerMove) && AI_DATA->hpPercents[battlerDef] > 20) + if (AI_CanPoison(battlerAtk, battlerDef, gAiLogicData->abilities[battlerDef], move, gAiLogicData->partnerMove) && gAiLogicData->hpPercents[battlerDef] > 20) { if (!HasDamagingMove(battlerDef)) ADJUST_SCORE_PTR(DECENT_EFFECT); - if (AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_STALL && HasMoveEffect(battlerAtk, EFFECT_PROTECT)) + if (gAiThinkingStruct->aiFlags[battlerAtk] & AI_FLAG_STALL && HasMoveWithEffect(battlerAtk, EFFECT_PROTECT)) ADJUST_SCORE_PTR(WEAK_EFFECT); // stall tactic if (IsPowerBasedOnStatus(battlerAtk, EFFECT_DOUBLE_POWER_ON_ARG_STATUS, STATUS1_PSN_ANY) - || HasMoveEffect(battlerAtk, EFFECT_VENOM_DRENCH) - || AI_DATA->abilities[battlerAtk] == ABILITY_MERCILESS) + || HasMoveWithEffect(battlerAtk, EFFECT_VENOM_DRENCH) + || gAiLogicData->abilities[battlerAtk] == ABILITY_MERCILESS) ADJUST_SCORE_PTR(DECENT_EFFECT); else ADJUST_SCORE_PTR(WEAK_EFFECT); @@ -4023,17 +4317,17 @@ void IncreasePoisonScore(u32 battlerAtk, u32 battlerDef, u32 move, s32 *score) void IncreaseBurnScore(u32 battlerAtk, u32 battlerDef, u32 move, s32 *score) { - if (((AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_TRY_TO_FAINT) && CanAIFaintTarget(battlerAtk, battlerDef, 0)) - || AI_DATA->holdEffects[battlerDef] == HOLD_EFFECT_CURE_BRN || AI_DATA->holdEffects[battlerDef] == HOLD_EFFECT_CURE_STATUS) + if (((gAiThinkingStruct->aiFlags[battlerAtk] & AI_FLAG_TRY_TO_FAINT) && CanAIFaintTarget(battlerAtk, battlerDef, 0)) + || gAiLogicData->holdEffects[battlerDef] == HOLD_EFFECT_CURE_BRN || gAiLogicData->holdEffects[battlerDef] == HOLD_EFFECT_CURE_STATUS) return; - if (AI_CanBurn(battlerAtk, battlerDef, AI_DATA->abilities[battlerDef], BATTLE_PARTNER(battlerAtk), move, AI_DATA->partnerMove)) + if (AI_CanBurn(battlerAtk, battlerDef, gAiLogicData->abilities[battlerDef], BATTLE_PARTNER(battlerAtk), move, gAiLogicData->partnerMove)) { if (HasMoveWithCategory(battlerDef, DAMAGE_CATEGORY_PHYSICAL) - || (!(AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_OMNISCIENT) // Not Omniscient but expects physical attacker + || (!(gAiThinkingStruct->aiFlags[battlerAtk] & AI_FLAG_OMNISCIENT) // Not Omniscient but expects physical attacker && gSpeciesInfo[gBattleMons[battlerDef].species].baseAttack >= gSpeciesInfo[gBattleMons[battlerDef].species].baseSpAttack + 10)) { - if (GetMoveCategory(GetBestDmgMoveFromBattler(battlerDef, battlerAtk)) == DAMAGE_CATEGORY_PHYSICAL) + if (GetMoveCategory(GetBestDmgMoveFromBattler(battlerDef, battlerAtk, AI_DEFENDING)) == DAMAGE_CATEGORY_PHYSICAL) ADJUST_SCORE_PTR(DECENT_EFFECT); else ADJUST_SCORE_PTR(WEAK_EFFECT); @@ -4047,14 +4341,14 @@ void IncreaseBurnScore(u32 battlerAtk, u32 battlerDef, u32 move, s32 *score) void IncreaseParalyzeScore(u32 battlerAtk, u32 battlerDef, u32 move, s32 *score) { - if (((AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_TRY_TO_FAINT) && CanAIFaintTarget(battlerAtk, battlerDef, 0)) - || AI_DATA->holdEffects[battlerDef] == HOLD_EFFECT_CURE_PAR || AI_DATA->holdEffects[battlerDef] == HOLD_EFFECT_CURE_STATUS) + if (((gAiThinkingStruct->aiFlags[battlerAtk] & AI_FLAG_TRY_TO_FAINT) && CanAIFaintTarget(battlerAtk, battlerDef, 0)) + || gAiLogicData->holdEffects[battlerDef] == HOLD_EFFECT_CURE_PAR || gAiLogicData->holdEffects[battlerDef] == HOLD_EFFECT_CURE_STATUS) return; - if (AI_CanParalyze(battlerAtk, battlerDef, AI_DATA->abilities[battlerDef], move, AI_DATA->partnerMove)) + if (AI_CanParalyze(battlerAtk, battlerDef, gAiLogicData->abilities[battlerDef], move, gAiLogicData->partnerMove)) { - u32 atkSpeed = AI_DATA->speedStats[battlerAtk]; - u32 defSpeed = AI_DATA->speedStats[battlerDef]; + u32 atkSpeed = gAiLogicData->speedStats[battlerAtk]; + u32 defSpeed = gAiLogicData->speedStats[battlerDef]; if ((defSpeed >= atkSpeed && defSpeed / 2 < atkSpeed) // You'll go first after paralyzing foe || IsPowerBasedOnStatus(battlerAtk, EFFECT_DOUBLE_POWER_ON_ARG_STATUS, STATUS1_PARALYSIS) @@ -4069,17 +4363,17 @@ void IncreaseParalyzeScore(u32 battlerAtk, u32 battlerDef, u32 move, s32 *score) void IncreaseSleepScore(u32 battlerAtk, u32 battlerDef, u32 move, s32 *score) { - if (((AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_TRY_TO_FAINT) && CanAIFaintTarget(battlerAtk, battlerDef, 0) && GetMoveEffect(GetBestDmgMoveFromBattler(battlerAtk, battlerDef)) != EFFECT_FOCUS_PUNCH) - || AI_DATA->holdEffects[battlerDef] == HOLD_EFFECT_CURE_SLP || AI_DATA->holdEffects[battlerDef] == HOLD_EFFECT_CURE_STATUS) + if (((gAiThinkingStruct->aiFlags[battlerAtk] & AI_FLAG_TRY_TO_FAINT) && CanAIFaintTarget(battlerAtk, battlerDef, 0) && GetMoveEffect(GetBestDmgMoveFromBattler(battlerAtk, battlerDef, AI_ATTACKING)) != EFFECT_FOCUS_PUNCH) + || gAiLogicData->holdEffects[battlerDef] == HOLD_EFFECT_CURE_SLP || gAiLogicData->holdEffects[battlerDef] == HOLD_EFFECT_CURE_STATUS) return; - if (AI_CanPutToSleep(battlerAtk, battlerDef, AI_DATA->abilities[battlerDef], move, AI_DATA->partnerMove)) + if (AI_CanPutToSleep(battlerAtk, battlerDef, gAiLogicData->abilities[battlerDef], move, gAiLogicData->partnerMove)) ADJUST_SCORE_PTR(DECENT_EFFECT); else return; - if ((HasMoveEffect(battlerAtk, EFFECT_DREAM_EATER) || HasMoveEffect(battlerAtk, EFFECT_NIGHTMARE)) - && !(HasMoveEffect(battlerDef, EFFECT_SNORE) || HasMoveEffect(battlerDef, EFFECT_SLEEP_TALK))) + if ((HasMoveWithEffect(battlerAtk, EFFECT_DREAM_EATER) || HasMoveWithEffect(battlerAtk, EFFECT_NIGHTMARE)) + && !(HasMoveWithEffect(battlerDef, EFFECT_SNORE) || HasMoveWithEffect(battlerDef, EFFECT_SLEEP_TALK))) ADJUST_SCORE_PTR(WEAK_EFFECT); if (IsPowerBasedOnStatus(battlerAtk, EFFECT_DOUBLE_POWER_ON_ARG_STATUS, STATUS1_SLEEP) @@ -4089,17 +4383,17 @@ void IncreaseSleepScore(u32 battlerAtk, u32 battlerDef, u32 move, s32 *score) void IncreaseConfusionScore(u32 battlerAtk, u32 battlerDef, u32 move, s32 *score) { - if (((AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_TRY_TO_FAINT) && CanAIFaintTarget(battlerAtk, battlerDef, 0)) - || AI_DATA->holdEffects[battlerDef] == HOLD_EFFECT_CURE_CONFUSION || AI_DATA->holdEffects[battlerDef] == HOLD_EFFECT_CURE_STATUS) + if (((gAiThinkingStruct->aiFlags[battlerAtk] & AI_FLAG_TRY_TO_FAINT) && CanAIFaintTarget(battlerAtk, battlerDef, 0)) + || gAiLogicData->holdEffects[battlerDef] == HOLD_EFFECT_CURE_CONFUSION || gAiLogicData->holdEffects[battlerDef] == HOLD_EFFECT_CURE_STATUS) return; - if (AI_CanConfuse(battlerAtk, battlerDef, AI_DATA->abilities[battlerDef], BATTLE_PARTNER(battlerAtk), move, AI_DATA->partnerMove) - && AI_DATA->holdEffects[battlerDef] != HOLD_EFFECT_CURE_CONFUSION - && AI_DATA->holdEffects[battlerDef] != HOLD_EFFECT_CURE_STATUS) + if (AI_CanConfuse(battlerAtk, battlerDef, gAiLogicData->abilities[battlerDef], BATTLE_PARTNER(battlerAtk), move, gAiLogicData->partnerMove) + && gAiLogicData->holdEffects[battlerDef] != HOLD_EFFECT_CURE_CONFUSION + && gAiLogicData->holdEffects[battlerDef] != HOLD_EFFECT_CURE_STATUS) { if (gBattleMons[battlerDef].status1 & STATUS1_PARALYSIS || gBattleMons[battlerDef].status2 & STATUS2_INFATUATION - || (AI_DATA->abilities[battlerAtk] == ABILITY_SERENE_GRACE && HasMoveWithMoveEffectExcept(battlerAtk, MOVE_EFFECT_FLINCH, EFFECT_FIRST_TURN_ONLY))) + || (gAiLogicData->abilities[battlerAtk] == ABILITY_SERENE_GRACE && HasMoveWithMoveEffectExcept(battlerAtk, MOVE_EFFECT_FLINCH, EFFECT_FIRST_TURN_ONLY))) ADJUST_SCORE_PTR(GOOD_EFFECT); else ADJUST_SCORE_PTR(DECENT_EFFECT); @@ -4108,16 +4402,16 @@ void IncreaseConfusionScore(u32 battlerAtk, u32 battlerDef, u32 move, s32 *score void IncreaseFrostbiteScore(u32 battlerAtk, u32 battlerDef, u32 move, s32 *score) { - if ((AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_TRY_TO_FAINT) && CanAIFaintTarget(battlerAtk, battlerDef, 0)) + if ((gAiThinkingStruct->aiFlags[battlerAtk] & AI_FLAG_TRY_TO_FAINT) && CanAIFaintTarget(battlerAtk, battlerDef, 0)) return; - if (AI_CanGiveFrostbite(battlerAtk, battlerDef, AI_DATA->abilities[battlerDef], BATTLE_PARTNER(battlerAtk), move, AI_DATA->partnerMove)) + if (AI_CanGiveFrostbite(battlerAtk, battlerDef, gAiLogicData->abilities[battlerDef], BATTLE_PARTNER(battlerAtk), move, gAiLogicData->partnerMove)) { if (HasMoveWithCategory(battlerDef, DAMAGE_CATEGORY_SPECIAL) - || (!(AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_OMNISCIENT) // Not Omniscient but expects special attacker + || (!(gAiThinkingStruct->aiFlags[battlerAtk] & AI_FLAG_OMNISCIENT) // Not Omniscient but expects special attacker && gSpeciesInfo[gBattleMons[battlerDef].species].baseSpAttack >= gSpeciesInfo[gBattleMons[battlerDef].species].baseAttack + 10)) { - if (GetMoveCategory(GetBestDmgMoveFromBattler(battlerDef, battlerAtk)) == DAMAGE_CATEGORY_SPECIAL) + if (GetMoveCategory(GetBestDmgMoveFromBattler(battlerDef, battlerAtk, AI_DEFENDING)) == DAMAGE_CATEGORY_SPECIAL) ADJUST_SCORE_PTR(DECENT_EFFECT); else ADJUST_SCORE_PTR(WEAK_EFFECT); @@ -4129,7 +4423,7 @@ void IncreaseFrostbiteScore(u32 battlerAtk, u32 battlerDef, u32 move, s32 *score } } -bool32 AI_MoveMakesContact(u32 ability, u32 holdEffect, u32 move) +bool32 AI_MoveMakesContact(u32 ability, enum ItemHoldEffect holdEffect, u32 move) { if (MoveMakesContact(move) && ability != ABILITY_LONG_REACH @@ -4167,7 +4461,7 @@ bool32 ShouldUseZMove(u32 battlerAtk, u32 battlerDef, u32 chosenMove) else if (!IsBattleMoveStatus(chosenMove) && IsBattleMoveStatus(zMove)) return FALSE; - dmg = AI_CalcDamageSaveBattlers(chosenMove, battlerAtk, battlerDef, &effectiveness, FALSE, DMG_ROLL_DEFAULT); + dmg = AI_CalcDamageSaveBattlers(chosenMove, battlerAtk, battlerDef, &effectiveness, FALSE); if (!IsBattleMoveStatus(chosenMove) && dmg.minimum >= gBattleMons[battlerDef].hp) return FALSE; // don't waste damaging z move if can otherwise faint target @@ -4180,7 +4474,7 @@ bool32 ShouldUseZMove(u32 battlerAtk, u32 battlerDef, u32 chosenMove) bool32 AI_IsBattlerAsleepOrComatose(u32 battlerId) { - return (gBattleMons[battlerId].status1 & STATUS1_SLEEP) || AI_DATA->abilities[battlerId] == ABILITY_COMATOSE; + return (gBattleMons[battlerId].status1 & STATUS1_SLEEP) || gAiLogicData->abilities[battlerId] == ABILITY_COMATOSE; } s32 AI_TryToClearStats(u32 battlerAtk, u32 battlerDef, bool32 isDoubleBattle) @@ -4212,7 +4506,7 @@ bool32 AI_ShouldCopyStatChanges(u32 battlerAtk, u32 battlerDef) return TRUE; case STAT_DEF: case STAT_SPDEF: - return (AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_STALL); + return (gAiThinkingStruct->aiFlags[battlerAtk] & AI_FLAG_STALL); } } } @@ -4225,11 +4519,11 @@ bool32 AI_ShouldSetUpHazards(u32 battlerAtk, u32 battlerDef, struct AiLogicData { if (aiData->abilities[battlerDef] == ABILITY_MAGIC_BOUNCE || CountUsablePartyMons(battlerDef) == 0 - || HasMoveEffect(battlerDef, EFFECT_RAPID_SPIN) - || HasMoveEffect(battlerDef, EFFECT_TIDY_UP) - || HasMoveEffect(battlerDef, EFFECT_DEFOG) + || HasMoveWithEffect(battlerDef, EFFECT_RAPID_SPIN) + || HasMoveWithEffect(battlerDef, EFFECT_TIDY_UP) + || HasMoveWithEffect(battlerDef, EFFECT_DEFOG) || HasMoveWithAdditionalEffect(battlerDef, MOVE_EFFECT_DEFOG) - || HasMoveEffect(battlerDef, EFFECT_MAGIC_COAT)) + || HasMoveWithEffect(battlerDef, EFFECT_MAGIC_COAT)) return FALSE; return TRUE; @@ -4267,8 +4561,8 @@ bool32 AI_ShouldSpicyExtract(u32 battlerAtk, u32 battlerAtkPartner, u32 move, st 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)) + || HasMoveWithEffect(BATTLE_OPPOSITE(battlerAtk), EFFECT_FOUL_PLAY) + || HasMoveWithEffect(BATTLE_OPPOSITE(battlerAtkPartner), EFFECT_FOUL_PLAY)) return FALSE; preventsStatLoss = (partnerAbility == ABILITY_CLEAR_BODY @@ -4285,6 +4579,8 @@ bool32 AI_ShouldSpicyExtract(u32 battlerAtk, u32 battlerAtkPartner, u32 move, st case EFFECT_STOCKPILE: if (!preventsStatLoss) return FALSE; + default: + break; } return (preventsStatLoss @@ -4294,17 +4590,17 @@ bool32 AI_ShouldSpicyExtract(u32 battlerAtk, u32 battlerAtkPartner, u32 move, st u32 IncreaseSubstituteMoveScore(u32 battlerAtk, u32 battlerDef, u32 move) { - u32 effect = GetMoveEffect(move); + enum BattleMoveEffects effect = GetMoveEffect(move); u32 scoreIncrease = 0; if (effect == EFFECT_SUBSTITUTE) // Substitute specific { - if (HasAnyKnownMove(battlerDef) && GetBestDmgFromBattler(battlerDef, battlerAtk) < gBattleMons[battlerAtk].maxHP / 4) + if (HasAnyKnownMove(battlerDef) && GetBestDmgFromBattler(battlerDef, battlerAtk, AI_DEFENDING) < gBattleMons[battlerAtk].maxHP / 4) scoreIncrease += GOOD_EFFECT; } else if (effect == EFFECT_SHED_TAIL) // Shed Tail specific { - if ((ShouldPivot(battlerAtk, battlerDef, AI_DATA->abilities[battlerDef], move, AI_THINKING_STRUCT->movesetIndex)) - && (HasAnyKnownMove(battlerDef) && (GetBestDmgFromBattler(battlerDef, battlerAtk) < gBattleMons[battlerAtk].maxHP / 2))) + if ((ShouldPivot(battlerAtk, battlerDef, gAiLogicData->abilities[battlerDef], move, gAiThinkingStruct->movesetIndex)) + && (HasAnyKnownMove(battlerDef) && (GetBestDmgFromBattler(battlerDef, battlerAtk, AI_DEFENDING) < gBattleMons[battlerAtk].maxHP / 2))) scoreIncrease += BEST_EFFECT; } @@ -4319,16 +4615,15 @@ u32 IncreaseSubstituteMoveScore(u32 battlerAtk, u32 battlerDef, u32 move) if (IsBattlerPredictedToSwitch(battlerDef)) scoreIncrease += DECENT_EFFECT; - if (HasMoveEffect(battlerDef, EFFECT_SLEEP) - || HasMoveEffect(battlerDef, EFFECT_TOXIC) - || HasMoveEffect(battlerDef, EFFECT_POISON) - || HasMoveEffect(battlerDef, EFFECT_PARALYZE) - || HasMoveEffect(battlerDef, EFFECT_WILL_O_WISP) - || HasMoveEffect(battlerDef, EFFECT_CONFUSE) - || HasMoveEffect(battlerDef, EFFECT_LEECH_SEED)) + if (HasNonVolatileMoveEffect(battlerDef, MOVE_EFFECT_SLEEP) + || HasNonVolatileMoveEffect(battlerDef, MOVE_EFFECT_TOXIC) + || HasNonVolatileMoveEffect(battlerDef, MOVE_EFFECT_PARALYSIS) + || HasNonVolatileMoveEffect(battlerDef, MOVE_EFFECT_BURN) + || HasMoveWithEffect(battlerDef, EFFECT_CONFUSE) + || HasMoveWithEffect(battlerDef, EFFECT_LEECH_SEED)) scoreIncrease += GOOD_EFFECT; - if (AI_DATA->hpPercents[battlerAtk] > 70) + if (gAiLogicData->hpPercents[battlerAtk] > 70) scoreIncrease += WEAK_EFFECT; return scoreIncrease; } @@ -4338,7 +4633,7 @@ bool32 HasLowAccuracyMove(u32 battlerAtk, u32 battlerDef) int i; for (i = 0; i < MAX_MON_MOVES; i++) { - if (AI_DATA->moveAccuracy[battlerAtk][battlerDef][i] <= LOW_ACCURACY_THRESHOLD) + if (gAiLogicData->moveAccuracy[battlerAtk][battlerDef][i] <= LOW_ACCURACY_THRESHOLD) return TRUE; } return FALSE; @@ -4346,7 +4641,7 @@ bool32 HasLowAccuracyMove(u32 battlerAtk, u32 battlerDef) bool32 IsBattlerItemEnabled(u32 battler) { - if (AI_THINKING_STRUCT->aiFlags[battler] & AI_FLAG_NEGATE_UNAWARE) + if (gAiThinkingStruct->aiFlags[battler] & AI_FLAG_NEGATE_UNAWARE) return TRUE; if (gFieldStatuses & STATUS_FIELD_MAGIC_ROOM) return FALSE; @@ -4356,3 +4651,91 @@ bool32 IsBattlerItemEnabled(u32 battler) return FALSE; return TRUE; } + +bool32 HasBattlerSideAbility(u32 battler, u32 ability, struct AiLogicData *aiData) +{ + if (aiData->abilities[battler] == ability) + return TRUE; + if (IsDoubleBattle() && gAiLogicData->abilities[BATTLE_PARTNER(battler)] == ability) + return TRUE; + return FALSE; +} + +u32 GetFriendlyFireKOThreshold(u32 battler) +{ + if (gAiThinkingStruct->aiFlags[battler] & AI_FLAG_RISKY) + return FRIENDLY_FIRE_RISKY_THRESHOLD; + if (gAiThinkingStruct->aiFlags[battler] & AI_FLAG_CONSERVATIVE) + return FRIENDLY_FIRE_CONSERVATIVE_THRESHOLD; + + return FRIENDLY_FIRE_NORMAL_THRESHOLD; +} + +bool32 IsMoxieTypeAbility(u32 ability) +{ + switch (ability) + { + case ABILITY_MOXIE: + case ABILITY_BEAST_BOOST: + case ABILITY_CHILLING_NEIGH: + case ABILITY_AS_ONE_ICE_RIDER: + case ABILITY_GRIM_NEIGH: + case ABILITY_AS_ONE_SHADOW_RIDER: + return TRUE; + default: + return FALSE; + } +} + +// Should the AI use a spread move to deliberately activate its partner's ability? +bool32 ShouldTriggerAbility(u32 battler, u32 ability) +{ + switch (ability) + { + case ABILITY_LIGHTNING_ROD: + case ABILITY_STORM_DRAIN: + if (B_REDIRECT_ABILITY_IMMUNITY < GEN_5) + return FALSE; + else + return (BattlerStatCanRise(battler, ability, STAT_SPATK) && HasMoveWithCategory(battler, DAMAGE_CATEGORY_SPECIAL)); + + case ABILITY_DEFIANT: + case ABILITY_JUSTIFIED: + case ABILITY_MOXIE: + case ABILITY_SAP_SIPPER: + case ABILITY_THERMAL_EXCHANGE: + return (BattlerStatCanRise(battler, ability, STAT_ATK) && HasMoveWithCategory(battler, DAMAGE_CATEGORY_PHYSICAL)); + + case ABILITY_COMPETITIVE: + return (BattlerStatCanRise(battler, ability, STAT_SPATK) && HasMoveWithCategory(battler, DAMAGE_CATEGORY_SPECIAL)); + + case ABILITY_CONTRARY: + return TRUE; + + case ABILITY_DRY_SKIN: + case ABILITY_VOLT_ABSORB: + case ABILITY_WATER_ABSORB: + return (gAiThinkingStruct->aiFlags[battler] & AI_FLAG_HP_AWARE); + + case ABILITY_RATTLED: + case ABILITY_STEAM_ENGINE: + return BattlerStatCanRise(battler, ability, STAT_SPEED); + + case ABILITY_FLASH_FIRE: + return (HasMoveWithType(battler, TYPE_FIRE) && !gDisableStructs[battler].flashFireBoosted); + + case ABILITY_WATER_COMPACTION: + case ABILITY_WELL_BAKED_BODY: + return (BattlerStatCanRise(battler, ability, STAT_DEF)); + + default: + return FALSE; + } +} + +u32 GetThinkingBattler(u32 battler) +{ + if (gAiLogicData->aiPredictionInProgress) + return gAiLogicData->battlerDoingPrediction; + return battler; +} diff --git a/src/battle_anim.c b/src/battle_anim.c index 258144bb19..3840c91012 100644 --- a/src/battle_anim.c +++ b/src/battle_anim.c @@ -252,6 +252,7 @@ static const u8* const sBattleAnims_General[NUM_B_ANIMS_GENERAL] = [B_ANIM_TERA_CHARGE] = gBattleAnimGeneral_TeraCharge, [B_ANIM_TERA_ACTIVATE] = gBattleAnimGeneral_TeraActivate, [B_ANIM_SIMPLE_HEAL] = gBattleAnimGeneral_SimpleHeal, + [B_ANIM_POWER_CONSTRUCT] = gBattleAnimGeneral_PowerConstruct, }; static const u8* const sBattleAnims_Special[NUM_B_ANIMS_SPECIAL] = @@ -351,6 +352,7 @@ void LaunchBattleAnimation(u32 animType, u32 animId) case B_ANIM_WISH_HEAL: case B_ANIM_MEGA_EVOLUTION: case B_ANIM_PRIMAL_REVERSION: + case B_ANIM_POWER_CONSTRUCT: case B_ANIM_ULTRA_BURST: case B_ANIM_GULP_MISSILE: case B_ANIM_RAINBOW: @@ -370,7 +372,7 @@ void LaunchBattleAnimation(u32 animType, u32 animId) InitPrioritiesForVisibleBattlers(); UpdateOamPriorityInAllHealthboxes(0, sAnimHideHpBoxes); for (i = 0; i < MAX_BATTLERS_COUNT; i++) - gAnimBattlerSpecies[i] = GetMonData(GetPartyBattlerData(i), MON_DATA_SPECIES); + gAnimBattlerSpecies[i] = GetMonData(GetBattlerMon(i), MON_DATA_SPECIES); } else { @@ -505,7 +507,7 @@ static void Cmd_loadspritegfx(void) sBattleAnimScriptPtr++; index = T1_READ_16(sBattleAnimScriptPtr); LoadCompressedSpriteSheetUsingHeap(&gBattleAnimPicTable[GET_TRUE_SPRITE_INDEX(index)]); - LoadCompressedSpritePaletteUsingHeap(&gBattleAnimPaletteTable[GET_TRUE_SPRITE_INDEX(index)]); + LoadSpritePalette(&gBattleAnimPaletteTable[GET_TRUE_SPRITE_INDEX(index)]); sBattleAnimScriptPtr += 2; AddSpriteIndex(GET_TRUE_SPRITE_INDEX(index)); sAnimFramesToWait = 1; @@ -1517,7 +1519,7 @@ static void Cmd_fadetobgfromset(void) if (IsContest()) gTasks[taskId].tBackgroundId = bg3; - else if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER) + else if (IsOnPlayerSide(gBattleAnimTarget)) gTasks[taskId].tBackgroundId = bg2; else gTasks[taskId].tBackgroundId = bg1; @@ -1573,14 +1575,14 @@ void LoadMoveBg(u16 bgId) RelocateBattleBgPal(GetBattleBgPaletteNum(), decompressionBuffer, 0x100, FALSE); DmaCopy32(3, decompressionBuffer, (void *)BG_SCREEN_ADDR(26), 0x800); LZDecompressVram(gBattleAnimBackgroundTable[bgId].image, (void *)BG_SCREEN_ADDR(4)); - LoadCompressedPalette(gBattleAnimBackgroundTable[bgId].palette, BG_PLTT_ID(GetBattleBgPaletteNum()), PLTT_SIZE_4BPP); + LoadPalette(gBattleAnimBackgroundTable[bgId].palette, BG_PLTT_ID(GetBattleBgPaletteNum()), PLTT_SIZE_4BPP); Free(decompressionBuffer); } else { LZDecompressVram(gBattleAnimBackgroundTable[bgId].tilemap, (void *)BG_SCREEN_ADDR(26)); LZDecompressVram(gBattleAnimBackgroundTable[bgId].image, (void *)BG_CHAR_ADDR(2)); - LoadCompressedPalette(gBattleAnimBackgroundTable[bgId].palette, BG_PLTT_ID(2), PLTT_SIZE_4BPP); + LoadPalette(gBattleAnimBackgroundTable[bgId].palette, BG_PLTT_ID(2), PLTT_SIZE_4BPP); } } @@ -1644,7 +1646,7 @@ s8 BattleAnimAdjustPanning(s8 pan) { if (!IsContest() && gBattleSpritesDataPtr->healthBoxesData[gBattleAnimAttacker].statusAnimActive) { - if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + if (!IsOnPlayerSide(gBattleAnimAttacker)) pan = SOUND_PAN_TARGET; else pan = SOUND_PAN_ATTACKER; @@ -1654,9 +1656,9 @@ s8 BattleAnimAdjustPanning(s8 pan) if (gBattleAnimAttacker != gBattleAnimTarget || gBattleAnimAttacker != 2 || pan != SOUND_PAN_TARGET) pan *= -1; } - else if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) + else if (IsOnPlayerSide(gBattleAnimAttacker)) { - if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER) + if (IsOnPlayerSide(gBattleAnimTarget)) { if (pan == SOUND_PAN_TARGET) pan = SOUND_PAN_ATTACKER; @@ -1664,7 +1666,7 @@ s8 BattleAnimAdjustPanning(s8 pan) pan *= -1; } } - else if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_OPPONENT) + else if (!IsOnPlayerSide(gBattleAnimTarget)) { if (pan == SOUND_PAN_ATTACKER) pan = SOUND_PAN_TARGET; @@ -1686,14 +1688,14 @@ s8 BattleAnimAdjustPanning2(s8 pan) { if (!IsContest() && gBattleSpritesDataPtr->healthBoxesData[gBattleAnimAttacker].statusAnimActive) { - if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + if (!IsOnPlayerSide(gBattleAnimAttacker)) pan = SOUND_PAN_TARGET; else pan = SOUND_PAN_ATTACKER; } else { - if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER || IsContest()) + if (!IsOnPlayerSide(gBattleAnimAttacker) || IsContest()) pan = -pan; } return pan; @@ -2107,7 +2109,7 @@ static void Cmd_splitbgprio_foes(void) sBattleAnimScriptPtr += 2; // Apply only if the attacking the opposing side - if (GetBattlerSide(gBattleAnimAttacker) != GetBattlerSide(gBattleAnimTarget)) + if (!IsBattlerAlly(gBattleAnimAttacker, gBattleAnimTarget)) { if (wantedBattler != ANIM_ATTACKER) battler = gBattleAnimTarget; @@ -2236,7 +2238,7 @@ static void Cmd_createdragondartsprite(void) u8 argVar; u8 argsCount; s16 subpriority; - struct Pokemon *party = GetBattlerParty(gBattleAnimAttacker); + struct Pokemon *mon = GetBattlerMon(gBattleAnimAttacker); sBattleAnimScriptPtr++; @@ -2253,15 +2255,15 @@ static void Cmd_createdragondartsprite(void) subpriority = GetSubpriorityForMoveAnim(argVar); - if (GetMonData(&party[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_SPECIES) == SPECIES_DRAGAPULT) + if (GetMonData(mon, MON_DATA_SPECIES) == SPECIES_DRAGAPULT) { template.tileTag = ANIM_TAG_DREEPY; - if (IsMonShiny(&party[gBattlerPartyIndexes[gBattleAnimAttacker]]) == TRUE) + if (IsMonShiny(mon) == 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) + if (!IsOnPlayerSide(gBattleAnimAttacker)) template.anims = gAnims_DreepyMissileOpponent; else template.anims = gAnims_DreepyMissilePlayer; @@ -2271,7 +2273,7 @@ static void Cmd_createdragondartsprite(void) template.tileTag = ANIM_TAG_AIR_WAVE; template.paletteTag = ANIM_TAG_DREEPY; template.oam = &gOamData_AffineOff_ObjNormal_32x16; - if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_OPPONENT) + if (!IsOnPlayerSide(gBattleAnimAttacker)) template.anims = gAnims_DreepyMissileOpponentNotDrag; else template.anims = gAnims_DreepyMissilePlayer; diff --git a/src/battle_anim_bug.c b/src/battle_anim_bug.c index 19e201a45e..4dc72e7859 100644 --- a/src/battle_anim_bug.c +++ b/src/battle_anim_bug.c @@ -198,7 +198,7 @@ static void AnimMegahornHorn(struct Sprite *sprite) gBattleAnimArgs[2] = -gBattleAnimArgs[2]; gBattleAnimArgs[0] = -gBattleAnimArgs[0]; } - else if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER) + else if (IsOnPlayerSide(gBattleAnimTarget)) { StartSpriteAffineAnim(sprite, 1); gBattleAnimArgs[1] = -gBattleAnimArgs[1]; @@ -225,7 +225,7 @@ static void AnimLeechLifeNeedle(struct Sprite *sprite) gBattleAnimArgs[0] = -gBattleAnimArgs[0]; StartSpriteAffineAnim(sprite, 2); } - else if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER) + else if (IsOnPlayerSide(gBattleAnimTarget)) { gBattleAnimArgs[1] = -gBattleAnimArgs[1]; gBattleAnimArgs[0] = -gBattleAnimArgs[0]; @@ -290,13 +290,13 @@ static void AnimTranslateWebThread_Step(struct Sprite *sprite) static void AnimStringWrap(struct Sprite *sprite) { SetAverageBattlerPositions(gBattleAnimTarget, FALSE, &sprite->x, &sprite->y); - if (GetBattlerSide(gBattleAnimAttacker)) + if (!IsOnPlayerSide(gBattleAnimAttacker)) sprite->x -= gBattleAnimArgs[0]; else sprite->x += gBattleAnimArgs[0]; sprite->y += gBattleAnimArgs[1]; - if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER) + if (IsOnPlayerSide(gBattleAnimTarget)) sprite->y += 8; sprite->callback = AnimStringWrap_Step; @@ -327,7 +327,7 @@ void AnimSpiderWeb(struct Sprite *sprite) if (gBattleAnimArgs[2]) SetAverageBattlerPositions(gBattleAnimTarget, FALSE, &sprite->x, &sprite->y); - if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_OPPONENT) + if (!IsOnPlayerSide(gBattleAnimAttacker)) sprite->x -= gBattleAnimArgs[0]; else sprite->x += gBattleAnimArgs[0]; @@ -381,7 +381,7 @@ void AnimTranslateStinger(struct Sprite *sprite) } else { - if (GetBattlerSide(gBattleAnimAttacker)) + if (!IsOnPlayerSide(gBattleAnimAttacker)) { gBattleAnimArgs[2] = -gBattleAnimArgs[2]; gBattleAnimArgs[1] = -gBattleAnimArgs[1]; @@ -426,7 +426,7 @@ void AnimMissileArc(struct Sprite *sprite) { InitSpritePosToAnimAttacker(sprite, TRUE); - if (GetBattlerSide(gBattleAnimAttacker)) + if (!IsOnPlayerSide(gBattleAnimAttacker)) gBattleAnimArgs[2] = -gBattleAnimArgs[2]; sprite->data[0] = gBattleAnimArgs[4]; diff --git a/src/battle_anim_dark.c b/src/battle_anim_dark.c index 1cada8f825..12a75efa31 100644 --- a/src/battle_anim_dark.c +++ b/src/battle_anim_dark.c @@ -501,7 +501,7 @@ void AnimTask_MoveAttackerMementoShadow(u8 taskId) task->data[14] = pos - 32; task->data[15] = pos + 32; - if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) + if (IsOnPlayerSide(gBattleAnimAttacker)) task->data[8] = -12; else task->data[8] = -64; @@ -671,7 +671,7 @@ void AnimTask_MoveTargetMementoShadow(u8 taskId) task->data[14] = x - 4; task->data[15] = x + 4; - if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER) + if (IsOnPlayerSide(gBattleAnimTarget)) task->data[8] = -12; else task->data[8] = -64; @@ -934,7 +934,7 @@ void AnimTask_MetallicShine(u8 taskId) if (IsContest()) species = gContestResources->moveAnim->species; else - species = GetMonData(GetPartyBattlerData(gBattleAnimAttacker), MON_DATA_SPECIES); + species = GetMonData(GetBattlerMon(gBattleAnimAttacker), MON_DATA_SPECIES); spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER); newSpriteId = CreateInvisibleSpriteCopy(gBattleAnimAttacker, spriteId, species); @@ -942,7 +942,7 @@ void AnimTask_MetallicShine(u8 taskId) GetBattleAnimBg1Data(&animBg); AnimLoadCompressedBgTilemap(animBg.bgId, gMetalShineTilemap); AnimLoadCompressedBgGfx(animBg.bgId, gMetalShineGfx, animBg.tilesOffset); - LoadCompressedPalette(gMetalShinePalette, BG_PLTT_ID(animBg.paletteId), PLTT_SIZE_4BPP); + LoadPalette(gMetalShinePalette, BG_PLTT_ID(animBg.paletteId), PLTT_SIZE_4BPP); gBattle_BG1_X = -gSprites[spriteId].x + 96; gBattle_BG1_Y = -gSprites[spriteId].y + 32; diff --git a/src/battle_anim_dragon.c b/src/battle_anim_dragon.c index bf5c4d823c..79595695e2 100644 --- a/src/battle_anim_dragon.c +++ b/src/battle_anim_dragon.c @@ -335,7 +335,7 @@ const struct SpriteTemplate gDragonPulseSpriteTemplate = // arg 1: initial y pixel offset static void AnimDragonRush(struct Sprite *sprite) { - if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER) + if (IsOnPlayerSide(gBattleAnimTarget)) { sprite->x -= gBattleAnimArgs[0]; sprite->y += gBattleAnimArgs[1]; @@ -363,7 +363,7 @@ static void AnimDragonRush(struct Sprite *sprite) static void AnimDragonRushStep(struct Sprite *sprite) { // These two cases are identical. - if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER) + if (IsOnPlayerSide(gBattleAnimTarget)) { sprite->data[1] += sprite->data[0]; sprite->data[1] &= 0xFF; @@ -406,7 +406,7 @@ void AnimOutrageFlame(struct Sprite *sprite) { sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); - if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + if (!IsOnPlayerSide(gBattleAnimAttacker)) { sprite->x -= gBattleAnimArgs[0]; gBattleAnimArgs[3] = -gBattleAnimArgs[3]; @@ -432,7 +432,7 @@ static void StartDragonFireTranslation(struct Sprite *sprite) SetSpriteCoordsToAnimAttackerCoords(sprite); sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); - if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + if (!IsOnPlayerSide(gBattleAnimAttacker)) { sprite->x -= gBattleAnimArgs[1]; sprite->y += gBattleAnimArgs[1]; @@ -478,7 +478,7 @@ void AnimDragonRageFirePlume(struct Sprite *sprite) // For Dragon Breath and Dragon Rage void AnimDragonFireToTarget(struct Sprite *sprite) { - if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + if (!IsOnPlayerSide(gBattleAnimAttacker)) StartSpriteAffineAnim(sprite, 1); StartDragonFireTranslation(sprite); @@ -656,7 +656,7 @@ static void AnimOverheatFlame_Step(struct Sprite *sprite) void AnimDracoMeteorRock(struct Sprite *sprite) { - if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER) + if (IsOnPlayerSide(gBattleAnimTarget)) { sprite->data[0] = sprite->x - gBattleAnimArgs[0]; sprite->data[2] = sprite->x - gBattleAnimArgs[2]; diff --git a/src/battle_anim_effects_1.c b/src/battle_anim_effects_1.c index 96e0aad14a..d7dbfa36b2 100644 --- a/src/battle_anim_effects_1.c +++ b/src/battle_anim_effects_1.c @@ -15,6 +15,7 @@ #include "trig.h" #include "util.h" #include "constants/abilities.h" +#include "constants/battle_move_effects.h" #include "constants/rgb.h" #include "constants/songs.h" #include "constants/moves.h" @@ -3129,7 +3130,7 @@ static void AnimGrassKnot(struct Sprite *sprite) InitSpritePosToAnimTarget(sprite, TRUE); - if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + if (!IsOnPlayerSide(gBattleAnimAttacker)) gBattleAnimArgs[2] = -gBattleAnimArgs[2]; sprite->data[0] = gBattleAnimArgs[3]; @@ -3162,7 +3163,7 @@ static void AnimGrassKnotStep(struct Sprite *sprite) static void AnimWoodHammerBig(struct Sprite *sprite) { - if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_OPPONENT) + if (!IsOnPlayerSide(gBattleAnimAttacker)) StartSpriteAffineAnim(sprite, 1); TranslateAnimSpriteToTargetMonLocation(sprite); @@ -3173,7 +3174,7 @@ static void AnimWoodHammerSmall(struct Sprite *sprite) StartSpriteAnim(sprite, gBattleAnimArgs[5]); AnimateSprite(sprite); - if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + if (!IsOnPlayerSide(gBattleAnimAttacker)) sprite->x -= gBattleAnimArgs[0]; else sprite->x += gBattleAnimArgs[0]; @@ -3199,7 +3200,7 @@ static void AnimWoodHammerSmall(struct Sprite *sprite) static void AnimWoodHammerHammer(struct Sprite *sprite) { - if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + if (!IsOnPlayerSide(gBattleAnimAttacker)) { sprite->x += HAMMER_X_OFFSET; StartSpriteAffineAnim(sprite, 1); @@ -3231,7 +3232,7 @@ static void AnimWoodHammerHammer_WaitForPunch(struct Sprite *sprite) return; } - if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + if (!IsOnPlayerSide(gBattleAnimAttacker)) { StartSpriteAffineAnim(sprite, 3); } @@ -3268,7 +3269,7 @@ void AnimMovePowderParticle(struct Sprite *sprite) sprite->data[0] = gBattleAnimArgs[2]; sprite->data[1] = gBattleAnimArgs[3]; - if (GetBattlerSide(gBattleAnimAttacker)) + if (!IsOnPlayerSide(gBattleAnimAttacker)) { sprite->data[3] = -gBattleAnimArgs[4]; } @@ -3427,7 +3428,7 @@ void AnimHyperBeamOrb(struct Sprite *sprite) StartSpriteAnim(sprite, animNum % 8); sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); - if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + if (!IsOnPlayerSide(gBattleAnimAttacker)) sprite->x -= 20; else sprite->x += 20; @@ -3584,7 +3585,7 @@ static void AnimMoveFeintSwipeStep(struct Sprite *sprite) static void AnimMoveFeintSwipe(struct Sprite *sprite) { - if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + if (!IsOnPlayerSide(gBattleAnimAttacker)) { gBattleAnimArgs[0] = -gBattleAnimArgs[0]; } @@ -3623,7 +3624,7 @@ static void AnimMoveTrumpCardArc(struct Sprite *sprite) static void AnimMoveTrumpCard(struct Sprite *sprite) { - if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + if (!IsOnPlayerSide(gBattleAnimAttacker)) { gBattleAnimArgs[0] = -gBattleAnimArgs[0]; } @@ -3672,7 +3673,7 @@ static void AnimMoveTrumpCardParticleAlive(struct Sprite *sprite) static void AnimMoveTrumpCardParticle(struct Sprite *sprite) { - if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + if (!IsOnPlayerSide(gBattleAnimAttacker)) { gBattleAnimArgs[0] = -gBattleAnimArgs[0]; } @@ -3771,7 +3772,7 @@ static void AnimMoveWringOut(struct Sprite *sprite) static void AnimLeechSeed(struct Sprite *sprite) { InitSpritePosToAnimAttacker(sprite, TRUE); - if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + if (!IsOnPlayerSide(gBattleAnimAttacker)) gBattleAnimArgs[2] = -gBattleAnimArgs[2]; sprite->data[0] = gBattleAnimArgs[4]; @@ -3983,7 +3984,7 @@ static void AnimRazorLeafParticle_Step1(struct Sprite *sprite) static void AnimRazorLeafParticle_Step2(struct Sprite *sprite) { - if (GetBattlerSide(gBattleAnimAttacker)) + if (!IsOnPlayerSide(gBattleAnimAttacker)) sprite->x2 = -Sin(sprite->data[0], 25); else sprite->x2 = Sin(sprite->data[0], 25); @@ -4106,7 +4107,7 @@ void AnimTeraStarstormStars(struct Sprite *sprite) if (gBattleAnimArgs[5] == 1) { u32 targetPartner; - if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER) + if (IsOnPlayerSide(gBattleAnimTarget)) { if (gBattleAnimTarget == 0) targetPartner = 2; @@ -4158,7 +4159,7 @@ static void AnimTeraStarstormStars_Step(struct Sprite *sprite) void AnimTranslateLinearSingleSineWave(struct Sprite *sprite) { InitSpritePosToAnimAttacker(sprite, TRUE); - if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + if (!IsOnPlayerSide(gBattleAnimAttacker)) gBattleAnimArgs[2] = -gBattleAnimArgs[2]; sprite->data[0] = gBattleAnimArgs[4]; @@ -4342,7 +4343,7 @@ static void AnimTask_DuplicateAndShrinkToPos_Step1(u8 taskId) u8 spriteId = GetAnimBattlerSpriteId(ANIM_TARGET); gTasks[taskId].data[10] += gTasks[taskId].data[0]; gSprites[spriteId].x2 = gTasks[taskId].data[10] >> 8; - if (GetBattlerSide(gBattleAnimTarget) != B_SIDE_PLAYER) + if (!IsOnPlayerSide(gBattleAnimTarget)) gSprites[spriteId].x2 = -gSprites[spriteId].x2; gTasks[taskId].data[11] += 16; @@ -4391,7 +4392,7 @@ void AnimMimicOrb(struct Sprite *sprite) switch (sprite->data[0]) { case 0: - if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER) + if (IsOnPlayerSide(gBattleAnimTarget)) gBattleAnimArgs[0] *= -1; sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X) + gBattleAnimArgs[0]; @@ -4615,7 +4616,7 @@ static void AnimKnockOffOpponentsItem(struct Sprite *sprite) static void AnimKnockOffItem(struct Sprite *sprite) { s16 targetY = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y); - if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER) + if (IsOnPlayerSide(gBattleAnimTarget)) { sprite->data[6] = 0; sprite->data[7] = targetY + 10; @@ -4825,7 +4826,7 @@ void AnimTask_LeafBlade(u8 taskId) task->data[7] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); task->data[10] = GetBattlerSpriteCoordAttr(gBattleAnimTarget, BATTLER_COORD_ATTR_WIDTH); task->data[11] = GetBattlerSpriteCoordAttr(gBattleAnimTarget, BATTLER_COORD_ATTR_HEIGHT); - task->data[5] = (GetBattlerSide(gBattleAnimTarget) == B_SIDE_OPPONENT) ? 1 : -1; + task->data[5] = (!IsOnPlayerSide(gBattleAnimTarget)) ? 1 : -1; task->data[9] = 56 - (task->data[5] * 64); task->data[8] = task->data[7] - task->data[9] + task->data[6]; task->data[2] = CreateSprite(&gLeafBladeSpriteTemplate, task->data[8], task->data[9], task->data[4]); @@ -5086,7 +5087,7 @@ static void AnimFlyingParticle(struct Sprite *sprite) else battler = gBattleAnimTarget; - if (GetBattlerSide(battler) != B_SIDE_PLAYER) + if (!IsOnPlayerSide(battler)) { sprite->data[4] = 0; sprite->data[2] = gBattleAnimArgs[3]; @@ -5271,7 +5272,7 @@ static void AnimWhipHit_WaitEnd(struct Sprite *sprite) static void AnimSlidingHit(struct Sprite *sprite) { - if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + if (!IsOnPlayerSide(gBattleAnimAttacker)) { sprite->x -= gBattleAnimArgs[0]; sprite->y += gBattleAnimArgs[1]; @@ -5288,7 +5289,7 @@ static void AnimSlidingHit(struct Sprite *sprite) static void AnimWhipHit(struct Sprite *sprite) { - if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) + if (IsOnPlayerSide(gBattleAnimAttacker)) StartSpriteAnim(sprite, 1); sprite->callback = AnimWhipHit_WaitEnd; @@ -5318,7 +5319,7 @@ void AnimCuttingSlice(struct Sprite *sprite) { sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X); sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y); - if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER) + if (IsOnPlayerSide(gBattleAnimTarget)) sprite->y += 8; sprite->callback = AnimSlice_Step; @@ -5367,7 +5368,7 @@ static void AnimAirCutterSlice(struct Sprite *sprite) sprite->x = x; sprite->y = y; - if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER) + if (IsOnPlayerSide(gBattleAnimTarget)) sprite->y += 8; sprite->callback = AnimSlice_Step; @@ -5446,7 +5447,7 @@ static void UNUSED UnusedFlickerAnim(struct Sprite *sprite) static void AnimCirclingMusicNote(struct Sprite *sprite) { sprite->data[0] = gBattleAnimArgs[2]; - if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + if (!IsOnPlayerSide(gBattleAnimAttacker)) sprite->x -= gBattleAnimArgs[0]; else sprite->x += gBattleAnimArgs[0]; @@ -5483,7 +5484,7 @@ static void AnimProtect(struct Sprite *sprite) sprite->x = GetBattlerSpriteCoord2(gBattleAnimAttacker, BATTLER_COORD_X) + gBattleAnimArgs[0]; sprite->y = GetBattlerSpriteCoord2(gBattleAnimAttacker, BATTLER_COORD_Y) + gBattleAnimArgs[1]; - if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER || IsContest()) + if (IsOnPlayerSide(gBattleAnimAttacker) || IsContest()) sprite->oam.priority = GetBattlerSpriteBGPriority(gBattleAnimAttacker) + 1; else sprite->oam.priority = GetBattlerSpriteBGPriority(gBattleAnimAttacker); @@ -5705,7 +5706,7 @@ static void AnimSparklingStars(struct Sprite *sprite) static void AnimBubbleBurst(struct Sprite *sprite) { SetSpriteCoordsToAnimAttackerCoords(sprite); - if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) + if (IsOnPlayerSide(gBattleAnimAttacker)) { sprite->x += gBattleAnimArgs[0]; sprite->y += gBattleAnimArgs[1]; @@ -5736,7 +5737,7 @@ static void AnimBubbleBurst_Step(struct Sprite *sprite) static void AnimSleepLetterZ(struct Sprite *sprite) { SetSpriteCoordsToAnimAttackerCoords(sprite); - if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) + if (IsOnPlayerSide(gBattleAnimAttacker)) { sprite->x += gBattleAnimArgs[0]; sprite->y += gBattleAnimArgs[1]; @@ -5965,7 +5966,7 @@ static void AnimBowMon(struct Sprite *sprite) static void AnimBowMon_Step1(struct Sprite *sprite) { sprite->data[0] = 6; - sprite->data[1] = (GetBattlerSide(gBattleAnimAttacker)) ? 2 : -2; + sprite->data[1] = (!IsOnPlayerSide(gBattleAnimAttacker)) ? 2 : -2; sprite->data[2] = 0; sprite->data[3] = gBattlerSpriteIds[gBattleAnimAttacker]; StoreSpriteCallbackInData6(sprite, AnimBowMon_Step1_Callback); @@ -5978,7 +5979,7 @@ static void AnimBowMon_Step1_Callback(struct Sprite *sprite) { sprite->data[3] = gBattlerSpriteIds[gBattleAnimAttacker]; PrepareBattlerSpriteForRotScale(sprite->data[3], ST_OAM_OBJ_NORMAL); - sprite->data[4] = (sprite->data[6] = GetBattlerSide(gBattleAnimAttacker)) ? 768 : -768; + sprite->data[4] = (sprite->data[6] = !IsOnPlayerSide(gBattleAnimAttacker)) ? 768 : -768; sprite->data[5] = 0; } @@ -5995,7 +5996,7 @@ static void AnimBowMon_Step1_Callback(struct Sprite *sprite) static void AnimBowMon_Step2(struct Sprite *sprite) { sprite->data[0] = 4; - sprite->data[1] = (GetBattlerSide(gBattleAnimAttacker)) ? -3 : 3; + sprite->data[1] = (!IsOnPlayerSide(gBattleAnimAttacker)) ? -3 : 3; sprite->data[2] = 0; sprite->data[3] = gBattlerSpriteIds[gBattleAnimAttacker]; StoreSpriteCallbackInData6(sprite, AnimBowMon_Step4); @@ -6017,7 +6018,7 @@ static void AnimBowMon_Step3_Callback(struct Sprite *sprite) { sprite->data[3] = gBattlerSpriteIds[gBattleAnimAttacker]; sprite->data[6] = GetBattlerSide(gBattleAnimAttacker); - if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + if (!IsOnPlayerSide(gBattleAnimAttacker)) { sprite->data[4] = 0xFC00; sprite->data[5] = 0xC00; @@ -6058,7 +6059,7 @@ static void AnimTipMon_Step(struct Sprite *sprite) sprite->data[1] = 0; sprite->data[2] = gBattlerSpriteIds[gBattleAnimAttacker]; sprite->data[3] = GetBattlerSide(gBattleAnimAttacker); - sprite->data[4] = (sprite->data[3] != B_SIDE_PLAYER) ? 0x200 : -0x200; + sprite->data[4] = !IsOnPlayerSide(gBattleAnimAttacker) ? 0x200 : -0x200; sprite->data[5] = 0; PrepareBattlerSpriteForRotScale(sprite->data[2], ST_OAM_OBJ_NORMAL); sprite->data[0]++; @@ -6089,11 +6090,8 @@ static void AnimTipMon_Step(struct Sprite *sprite) void AnimTask_SkullBashPosition(u8 taskId) { - u8 side; - gTasks[taskId].data[0] = gBattlerSpriteIds[gBattleAnimAttacker]; - side = GetBattlerSide(gBattleAnimAttacker); - gTasks[taskId].data[1] = side; + gTasks[taskId].data[1] = GetBattlerSide(gBattleAnimAttacker); gTasks[taskId].data[2] = 0; switch (gBattleAnimArgs[0]) { @@ -6105,7 +6103,7 @@ void AnimTask_SkullBashPosition(u8 taskId) gTasks[taskId].data[3] = 8; gTasks[taskId].data[4] = 0; gTasks[taskId].data[5] = 3; - if (side == B_SIDE_PLAYER) + if (IsOnPlayerSide(gBattleAnimAttacker)) gTasks[taskId].data[5] *= -1; gTasks[taskId].func = AnimTask_SkullBashPositionSet; @@ -6114,7 +6112,7 @@ void AnimTask_SkullBashPosition(u8 taskId) gTasks[taskId].data[3] = 8; gTasks[taskId].data[4] = 0x600; gTasks[taskId].data[5] = 0xC0; - if (side == B_SIDE_PLAYER) + if (IsOnPlayerSide(gBattleAnimAttacker)) { gTasks[taskId].data[4] = -gTasks[taskId].data[4]; gTasks[taskId].data[5] = -gTasks[taskId].data[5]; @@ -6450,10 +6448,10 @@ static void UNUSED AnimTask_HideBattlersHealthbox(u8 taskId) u8 i; for (i = 0; i < gBattlersCount; i++) { - if (gBattleAnimArgs[0] == TRUE && GetBattlerSide(i) == B_SIDE_PLAYER) + if (gBattleAnimArgs[0] == TRUE && IsOnPlayerSide(i)) SetHealthboxSpriteInvisible(gHealthboxSpriteIds[i]); - if (gBattleAnimArgs[1] == TRUE && GetBattlerSide(i) == B_SIDE_OPPONENT) + if (gBattleAnimArgs[1] == TRUE && !IsOnPlayerSide(i)) SetHealthboxSpriteInvisible(gHealthboxSpriteIds[i]); } @@ -6653,7 +6651,7 @@ static void AnimHornHit(struct Sprite *sprite) sprite->data[4] = sprite->y << 7; sprite->data[5] = -0xA00 / sprite->data[1]; } - else if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) + else if (IsOnPlayerSide(gBattleAnimAttacker)) { sprite->x -= 40; sprite->y += 20; @@ -6740,7 +6738,7 @@ void PrepareDoubleTeamAnim(u32 taskId, u32 animBattler, bool32 forAllySwitch) gSprites[spriteId].sBattlerFlank = (animBattler == ANIM_ATTACKER); // correct direction on opponent side - if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_OPPONENT) + if (!IsOnPlayerSide(gBattleAnimAttacker)) gSprites[spriteId].sBattlerFlank ^= 1; gSprites[spriteId].callback = AnimDoubleTeam; @@ -6828,18 +6826,8 @@ static void TrySwapSkyDropTargets(u32 battlerAtk, u32 battlerPartner) static void TrySwapStickyWebBattlerId(u32 battlerAtk, u32 battlerPartner) { - u32 atkSide = GetBattlerSide(battlerAtk); u32 oppSide = GetBattlerSide(BATTLE_OPPOSITE(battlerAtk)); - // not all of these are needed to be swapped, but are done so to be robust to anything in the future that might care about them - TRY_SIDE_TIMER_BATTLER_ID_SWAP(battlerAtk, battlerPartner, atkSide, reflectBattlerId); - TRY_SIDE_TIMER_BATTLER_ID_SWAP(battlerAtk, battlerPartner, atkSide, lightscreenBattlerId); - TRY_SIDE_TIMER_BATTLER_ID_SWAP(battlerAtk, battlerPartner, atkSide, mistBattlerId); - TRY_SIDE_TIMER_BATTLER_ID_SWAP(battlerAtk, battlerPartner, atkSide, safeguardBattlerId); - TRY_SIDE_TIMER_BATTLER_ID_SWAP(battlerAtk, battlerPartner, atkSide, auroraVeilBattlerId); - TRY_SIDE_TIMER_BATTLER_ID_SWAP(battlerAtk, battlerPartner, atkSide, tailwindBattlerId); - TRY_SIDE_TIMER_BATTLER_ID_SWAP(battlerAtk, battlerPartner, atkSide, luckyChantBattlerId); - // if we've set sticky web on the opposing side, need to swap stickyWebBattlerId for mirror armor TRY_SIDE_TIMER_BATTLER_ID_SWAP(battlerAtk, battlerPartner, oppSide, stickyWebBattlerId); } @@ -6853,10 +6841,9 @@ static void TrySwapWishBattlerIds(u32 battlerAtk, u32 battlerPartner) // if used future sight on opposing side, properly track who used it if (gSideStatuses[oppSide] & SIDE_STATUS_FUTUREATTACK) { - u32 battlerAtkSide = GetBattlerSide(battlerAtk); for (i = 0; i < gBattlersCount; i++) { - if (battlerAtkSide == GetBattlerSide(i)) + if (IsBattlerAlly(i, battlerAtk)) continue; // only on opposing side if (gWishFutureKnock.futureSightBattlerIndex[i] == battlerAtk) @@ -6945,7 +6932,7 @@ static void AnimTask_AllySwitchDataSwap(u8 taskId) if (!IsBattlerAlly(gBattleStruct->moveTarget[i], battlerAtk)) continue; - if (gChosenMoveByBattler[i] == MOVE_SNIPE_SHOT || ability == ABILITY_PROPELLER_TAIL || ability == ABILITY_STALWART) + if (GetMoveEffect(gChosenMoveByBattler[i]) == EFFECT_SNIPE_SHOT || ability == ABILITY_PROPELLER_TAIL || ability == ABILITY_STALWART) gBattleStruct->moveTarget[i] ^= BIT_FLANK; } @@ -7185,7 +7172,7 @@ static void AnimWavyMusicNotes_Step(struct Sprite *sprite) static void AnimFlyingMusicNotes(struct Sprite *sprite) { - if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_OPPONENT) + if (!IsOnPlayerSide(gBattleAnimAttacker)) gBattleAnimArgs[1] *= -1; sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2) + gBattleAnimArgs[1]; @@ -7282,7 +7269,7 @@ static void AnimSlowFlyingMusicNotes_Step(struct Sprite *sprite) void SetSpriteNextToMonHead(u8 battler, struct Sprite *sprite) { - if (GetBattlerSide(battler) == B_SIDE_PLAYER) + if (IsOnPlayerSide(battler)) sprite->x = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_RIGHT) + 8; else sprite->x = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_LEFT) - 8; @@ -7300,7 +7287,7 @@ void AnimThoughtBubble(struct Sprite *sprite) battler = gBattleAnimTarget; SetSpriteNextToMonHead(battler, sprite); - animNum = (GetBattlerSide(battler) == B_SIDE_PLAYER) ? 0 : 1; + animNum = (IsOnPlayerSide(battler)) ? 0 : 1; sprite->data[0] = gBattleAnimArgs[1]; sprite->data[1] = animNum + 2; StartSpriteAnim(sprite, animNum); @@ -7409,7 +7396,7 @@ static void AnimTauntFinger(struct Sprite *sprite) battler = gBattleAnimTarget; SetSpriteNextToMonHead(battler, sprite); - if (GetBattlerSide(battler) == B_SIDE_PLAYER) + if (IsOnPlayerSide(battler)) { StartSpriteAnim(sprite, 0); sprite->data[0] = 2; diff --git a/src/battle_anim_effects_2.c b/src/battle_anim_effects_2.c index c4d0a33fac..e0583c7cf8 100755 --- a/src/battle_anim_effects_2.c +++ b/src/battle_anim_effects_2.c @@ -953,7 +953,7 @@ const struct SpriteTemplate gRedHeartRisingSpriteTemplate = .callback = AnimRedHeartRising, }; -// New struct that's just a copy of 'gMagentaHeartSpriteTemplate', without need to make new anim tags +// New struct that's just a copy of 'gMagentaHeartSpriteTemplate', without need to make new anim tags const struct SpriteTemplate gRedHeartCharmSpriteTemplate = { .tileTag = ANIM_TAG_RED_HEART, @@ -1399,7 +1399,7 @@ static void AnimVibrateBattlerBack(struct Sprite *sprite) sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); spriteId = gBattlerSpriteIds[gBattleAnimTarget]; - if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + if (!IsOnPlayerSide(gBattleAnimAttacker)) sprite->x -= gBattleAnimArgs[0]; else sprite->x += gBattleAnimArgs[0]; @@ -1451,7 +1451,7 @@ static void AnimTask_Withdraw_Step(u8 taskId) { u8 spriteId = gBattlerSpriteIds[gBattleAnimAttacker]; s16 rotation; - if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) + if (IsOnPlayerSide(gBattleAnimAttacker)) rotation = -gTasks[taskId].data[0]; else rotation = gTasks[taskId].data[0]; @@ -1499,13 +1499,13 @@ static void AnimTask_Withdraw_Step(u8 taskId) static void AnimKinesisZapEnergy(struct Sprite *sprite) { SetSpriteCoordsToAnimAttackerCoords(sprite); - if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + if (!IsOnPlayerSide(gBattleAnimAttacker)) sprite->x -= gBattleAnimArgs[0]; else sprite->x += gBattleAnimArgs[0]; sprite->y += gBattleAnimArgs[1]; - if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + if (!IsOnPlayerSide(gBattleAnimAttacker)) { sprite->hFlip = 1; if (gBattleAnimArgs[2]) @@ -1557,7 +1557,7 @@ void AnimSonicBoomProjectile(struct Sprite *sprite) { gBattleAnimArgs[2] = -gBattleAnimArgs[2]; } - else if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + else if (!IsOnPlayerSide(gBattleAnimAttacker)) { gBattleAnimArgs[2] = -gBattleAnimArgs[2]; gBattleAnimArgs[1] = -gBattleAnimArgs[1]; @@ -1724,7 +1724,7 @@ void AnimTask_AirCutterProjectile(u8 taskId) } else { - if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER) + if (IsOnPlayerSide(gBattleAnimTarget)) { gTasks[taskId].data[4] = 1; gBattleAnimArgs[0] = -gBattleAnimArgs[0]; @@ -1841,7 +1841,7 @@ static void AnimCoinThrow(struct Sprite *sprite) InitSpritePosToAnimAttacker(sprite, TRUE); r6 = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); r7 = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[3]; - if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + if (!IsOnPlayerSide(gBattleAnimAttacker)) gBattleAnimArgs[2] = -gBattleAnimArgs[2]; r6 += gBattleAnimArgs[2]; @@ -1866,7 +1866,7 @@ static void AnimFallingCoin_Step(struct Sprite *sprite) { sprite->data[0] += 0x80; sprite->x2 = sprite->data[0] >> 8; - if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) + if (IsOnPlayerSide(gBattleAnimAttacker)) sprite->x2 = -sprite->x2; sprite->y2 = Sin(sprite->data[1], sprite->data[2]); @@ -1942,7 +1942,7 @@ static void AnimBulletSeed_Step2(struct Sprite *sprite) static void AnimRazorWindTornado(struct Sprite *sprite) { InitSpritePosToAnimAttacker(sprite, FALSE); - if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) + if (IsOnPlayerSide(gBattleAnimAttacker)) sprite->y += 16; sprite->data[0] = gBattleAnimArgs[4]; @@ -2321,7 +2321,7 @@ void AnimTask_ShrinkAndGrow(u8 taskId) // No args. static void AnimBreathPuff(struct Sprite *sprite) { - if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) + if (IsOnPlayerSide(gBattleAnimAttacker)) { StartSpriteAnim(sprite, 0); sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2) + 32; @@ -2355,7 +2355,7 @@ void AnimAngerMark(struct Sprite *sprite) else battler = gBattleAnimTarget; - if (GetBattlerSide(battler) == B_SIDE_OPPONENT) + if (!IsOnPlayerSide(battler)) gBattleAnimArgs[1] *= -1; sprite->x = GetBattlerSpriteCoord(battler, BATTLER_COORD_X_2) + gBattleAnimArgs[1]; @@ -2399,7 +2399,7 @@ void AnimTask_ThrashMoveMonVertical(u8 taskId) task->data[7] = 0; task->data[8] = 0; task->data[9] = 2; - if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_OPPONENT) + if (!IsOnPlayerSide(gBattleAnimAttacker)) task->data[2] *= -1; task->func = AnimTask_ThrashMoveMonVertical_Step; @@ -2638,7 +2638,7 @@ static void AnimBlendThinRing(struct Sprite *sprite) else r4 = GetBattlerSpriteCoord(battler, BATTLER_COORD_X_2); - if (GetBattlerSide(battler) != B_SIDE_PLAYER) + if (!IsOnPlayerSide(battler)) gBattleAnimArgs[0] -= (x - r4) - gBattleAnimArgs[0]; // This is weird. else gBattleAnimArgs[0] = x - r4; @@ -2690,7 +2690,7 @@ void AnimHyperVoiceRing(struct Sprite *sprite) yCoordType = BATTLER_COORD_Y_PIC_OFFSET; } - if (GetBattlerSide(battler1) != B_SIDE_PLAYER) + if (!IsOnPlayerSide(battler1)) { startX = GetBattlerSpriteCoord(battler1, xCoordType) + gBattleAnimArgs[0]; if (IsBattlerSpriteVisible(BATTLE_PARTNER(battler2))) @@ -2726,7 +2726,7 @@ void AnimHyperVoiceRing(struct Sprite *sprite) y = GetBattlerSpriteCoord(battler2, yCoordType); } - if (GetBattlerSide(battler2)) + if (!IsOnPlayerSide(battler2)) x += gBattleAnimArgs[3]; else x -= gBattleAnimArgs[3]; @@ -2759,7 +2759,7 @@ static void AnimSoftBoiledEgg(struct Sprite *sprite) { s16 r1; InitSpritePosToAnimAttacker(sprite, FALSE); - r1 = GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER ? -160 : 160; + r1 = !IsOnPlayerSide(gBattleAnimAttacker) ? -160 : 160; sprite->data[0] = 0x380; sprite->data[1] = r1; sprite->data[7] = gBattleAnimArgs[2]; @@ -2772,7 +2772,7 @@ static void AnimSoftBoiledEgg_Step1(struct Sprite *sprite) sprite->y2 -= (sprite->data[0] >> 8); sprite->x2 = sprite->data[1] >> 8; sprite->data[0] -= 32; - add = GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER ? -160 : 160; + add = !IsOnPlayerSide(gBattleAnimAttacker) ? -160 : 160; sprite->data[1] += add; if (sprite->y2 > 0) { @@ -2886,7 +2886,7 @@ void AnimTask_ExtremeSpeedImpact(u8 taskId) task->data[2] = 0; task->data[3] = 0; task->data[12] = 3; - if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER) + if (IsOnPlayerSide(gBattleAnimTarget)) { task->data[13] = 0xFFFF; task->data[14] = 8; @@ -3094,12 +3094,9 @@ void AnimTask_LoadMusicNotesPals(u8 taskId) for (i = 1; i < NUM_MUSIC_NOTE_PAL_TAGS; i++) paletteNums[i] = AllocSpritePalette(ANIM_SPRITES_START - i); - gMonSpritesGfxPtr->buffer = AllocZeroed(MON_PIC_SIZE * MAX_MON_PIC_FRAMES); - LZDecompressWram(gBattleAnimSpritePal_MusicNotes2, gMonSpritesGfxPtr->buffer); for (i = 0; i < NUM_MUSIC_NOTE_PAL_TAGS; i++) - LoadPalette(&gMonSpritesGfxPtr->buffer[i * 32], (u16)(OBJ_PLTT_ID(paletteNums[i])), PLTT_SIZE_4BPP); + LoadPalette(&gBattleAnimSpritePal_MusicNotes2[i * 32], (u16)(OBJ_PLTT_ID(paletteNums[i])), PLTT_SIZE_4BPP); - FREE_AND_SET_NULL(gMonSpritesGfxPtr->buffer); DestroyAnimVisualTask(taskId); } @@ -3122,7 +3119,7 @@ static void SetMusicNotePalette(struct Sprite *sprite, u8 a, u8 b) static void AnimHealBellMusicNote(struct Sprite *sprite) { InitSpritePosToAnimAttacker(sprite, FALSE); - if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + if (!IsOnPlayerSide(gBattleAnimAttacker)) gBattleAnimArgs[2] = -gBattleAnimArgs[2]; sprite->data[0] = gBattleAnimArgs[4]; @@ -3332,7 +3329,7 @@ void AnimTask_HeartsBackground(u8 taskId) GetBattleAnimBg1Data(&animBg); AnimLoadCompressedBgGfx(animBg.bgId, gBattleAnimBgImage_Attract, animBg.tilesOffset); AnimLoadCompressedBgTilemapHandleContest(&animBg, gBattleAnimBgTilemap_Attract, FALSE); - LoadCompressedPalette(gBattleAnimBgPalette_Attract, BG_PLTT_ID(animBg.paletteId), PLTT_SIZE_4BPP); + LoadPalette(gBattleAnimBgPalette_Attract, BG_PLTT_ID(animBg.paletteId), PLTT_SIZE_4BPP); gTasks[taskId].func = AnimTask_HeartsBackground_Step; } @@ -3398,9 +3395,9 @@ void AnimTask_ScaryFace(u8 taskId) bool32 onPlayer; if (gAnimMoveIndex == MOVE_BITTER_MALICE) - onPlayer = GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER; + onPlayer = IsOnPlayerSide(gBattleAnimAttacker); else - onPlayer = GetBattlerSide(gBattleAnimTarget) == B_SIDE_OPPONENT; + onPlayer = !IsOnPlayerSide(gBattleAnimTarget); SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL | BLDCNT_TGT1_BG1 | BLDCNT_EFFECT_BLEND); SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0, 16)); @@ -3422,7 +3419,7 @@ void AnimTask_ScaryFace(u8 taskId) AnimLoadCompressedBgTilemapHandleContest(&animBg, &gBattleAnimBgTilemap_ScaryFaceOpponent, FALSE); AnimLoadCompressedBgGfx(animBg.bgId, gBattleAnimBgImage_ScaryFace, animBg.tilesOffset); - LoadCompressedPalette(gBattleAnimBgPalette_ScaryFace, BG_PLTT_ID(animBg.paletteId), PLTT_SIZE_4BPP); + LoadPalette(gBattleAnimBgPalette_ScaryFace, BG_PLTT_ID(animBg.paletteId), PLTT_SIZE_4BPP); gTasks[taskId].func = AnimTask_ScaryFace_Step; } @@ -3754,7 +3751,7 @@ static void AnimJaggedMusicNote(struct Sprite *sprite) { u8 battler = !gBattleAnimArgs[0] ? gBattleAnimAttacker : gBattleAnimTarget; - if (GetBattlerSide(battler) == B_SIDE_OPPONENT) + if (!IsOnPlayerSide(battler)) gBattleAnimArgs[1] *= -1; sprite->x = GetBattlerSpriteCoord(battler, BATTLER_COORD_X_2) + gBattleAnimArgs[1]; diff --git a/src/battle_anim_effects_3.c b/src/battle_anim_effects_3.c index 6f34f479b9..409244ccac 100644 --- a/src/battle_anim_effects_3.c +++ b/src/battle_anim_effects_3.c @@ -1204,15 +1204,26 @@ const struct SpriteTemplate gMegaParticlesSpriteTemplate = .callback = AnimPowerAbsorptionOrb, }; +const struct SpriteTemplate gMegaSmokeSpriteTemplate = +{ + .tileTag = ANIM_TAG_ELECTRICITY, + .paletteTag = ANIM_TAG_ELECTRICITY, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = gAnims_ElectricPuff, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimParticleInVortex, +}; + const struct SpriteTemplate gMegaSymbolSpriteTemplate = { .tileTag = ANIM_TAG_MEGA_SYMBOL, .paletteTag = ANIM_TAG_MEGA_SYMBOL, - .oam = &gOamData_AffineOff_ObjBlend_32x32, + .oam = &gOamData_AffineDouble_ObjBlend_32x32, .anims = gDummySpriteAnimTable, .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = AnimGhostStatusSprite, + .affineAnims = gSpriteAffineAnimTable_MegaSymbol, + .callback = AnimSpriteOnMonPos, }; const struct SpriteTemplate gAlphaStoneSpriteTemplate = @@ -1241,22 +1252,55 @@ const struct SpriteTemplate gAlphaSymbolSpriteTemplate = { .tileTag = ANIM_TAG_ALPHA_SYMBOL, .paletteTag = ANIM_TAG_ALPHA_SYMBOL, - .oam = &gOamData_AffineOff_ObjBlend_32x32, + .oam = &gOamData_AffineDouble_ObjBlend_32x32, .anims = gDummySpriteAnimTable, .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = AnimGhostStatusSprite, + .affineAnims = gSpriteAffineAnimTable_PrimalSymbol, + .callback = AnimSpriteOnMonPos, }; const struct SpriteTemplate gOmegaSymbolSpriteTemplate = { .tileTag = ANIM_TAG_OMEGA_SYMBOL, .paletteTag = ANIM_TAG_OMEGA_SYMBOL, - .oam = &gOamData_AffineOff_ObjBlend_32x32, + .oam = &gOamData_AffineDouble_ObjBlend_32x32, .anims = gDummySpriteAnimTable, .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = AnimGhostStatusSprite, + .affineAnims = gSpriteAffineAnimTable_PrimalSymbol, + .callback = AnimSpriteOnMonPos, +}; + +const struct SpriteTemplate gPowerConstructSpriteTemplate = +{ + .tileTag = ANIM_TAG_VERTICAL_HEX, + .paletteTag = ANIM_TAG_ZYGARDE_HEXES, + .oam = &gOamData_AffineOff_ObjNormal_16x16, + .anims = gPowerAbsorptionOrbAnimTable, + .images = NULL, + .affineAnims = gPowerAbsorptionOrbAffineAnimTable, + .callback = AnimPowerAbsorptionOrb, +}; + +const struct SpriteTemplate gPowerConstructEmergeSpriteTemplate = +{ + .tileTag = ANIM_TAG_VERTICAL_HEX, + .paletteTag = ANIM_TAG_ZYGARDE_HEXES, + .oam = &gOamData_AffineDouble_ObjBlend_16x16, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gAffineAnims_LusterPurgeCircle, + .callback = AnimSpriteOnMonPos, +}; + +const struct SpriteTemplate gZSymbolSpriteTemplate = +{ + .tileTag = ANIM_TAG_SNORE_Z, + .paletteTag = ANIM_TAG_SNORE_Z, + .oam = &gOamData_AffineDouble_ObjBlend_32x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gSpriteAffineAnimTable_MegaSymbol, + .callback = AnimSpriteOnMonPos, }; const struct SpriteTemplate gTeraCrystalSpriteTemplate = @@ -1575,7 +1619,7 @@ static void AnimSpikes(struct Sprite *sprite) InitSpritePosToAnimAttacker(sprite, TRUE); SetAverageBattlerPositions(gBattleAnimTarget, FALSE, &x, &y); - if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + if (!IsOnPlayerSide(gBattleAnimAttacker)) gBattleAnimArgs[2] = -gBattleAnimArgs[2]; sprite->data[0] = gBattleAnimArgs[4]; @@ -1625,7 +1669,7 @@ static void AnimLetterZ(struct Sprite *sprite) SetAnimSpriteInitialXOffset(sprite, gBattleAnimArgs[0]); if (!IsContest()) { - if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) + if (IsOnPlayerSide(gBattleAnimAttacker)) { sprite->data[1] = gBattleAnimArgs[2]; sprite->data[2] = gBattleAnimArgs[3]; @@ -1662,7 +1706,7 @@ static void AnimFang(struct Sprite *sprite) void AnimTask_IsTargetPlayerSide(u8 taskId) { - if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_OPPONENT) + if (!IsOnPlayerSide(gBattleAnimTarget)) gBattleAnimArgs[ARG_RET_ID] = FALSE; else gBattleAnimArgs[ARG_RET_ID] = TRUE; @@ -2245,7 +2289,7 @@ static void AnimBatonPassPokeball(struct Sprite *sprite) static void AnimWishStar(struct Sprite *sprite) { - if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + if (!IsOnPlayerSide(gBattleAnimAttacker)) sprite->x = -16; else sprite->x = DISPLAY_WIDTH + 16; @@ -2259,7 +2303,7 @@ static void AnimWishStar_Step(struct Sprite *sprite) u32 newX; sprite->data[0] += 72; - if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + if (!IsOnPlayerSide(gBattleAnimAttacker)) sprite->x2 = sprite->data[0] >> 4; else sprite->x2 = -(sprite->data[0] >> 4); @@ -2459,7 +2503,7 @@ void AnimTask_HideSwapSprite(u8 taskId) gSprites[spriteId].x = gTasks[taskId].data[11]; // restores battler position if (!IsContest()) { - if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_OPPONENT) + if (!IsOnPlayerSide(gBattleAnimAttacker)) { if (gTasks[taskId].data[10] == 0) SetBattlerShadowSpriteCallback(gBattleAnimAttacker, gBattleSpritesDataPtr->battlerData[gBattleAnimAttacker].transformSpecies); @@ -2573,7 +2617,7 @@ void AnimTask_TransformMon(u8 taskId) if (!IsContest()) { - if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_OPPONENT) + if (!IsOnPlayerSide(gBattleAnimAttacker)) { if (gTasks[taskId].data[10] == 0) SetBattlerShadowSpriteCallback(gBattleAnimAttacker, gBattleSpritesDataPtr->battlerData[gBattleAnimAttacker].transformSpecies); @@ -2614,7 +2658,7 @@ void AnimTask_MorningSunLightBeam(u8 taskId) } else { - if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + if (!IsOnPlayerSide(gBattleAnimAttacker)) gBattle_BG1_X = -135; else gBattle_BG1_X = -10; @@ -2623,7 +2667,7 @@ void AnimTask_MorningSunLightBeam(u8 taskId) } AnimLoadCompressedBgGfx(animBg.bgId, gBattleAnimMaskImage_LightBeam, animBg.tilesOffset); - LoadCompressedPalette(gBattleAnimMaskPalette_LightBeam, BG_PLTT_ID(animBg.paletteId), PLTT_SIZE_4BPP); + LoadPalette(gBattleAnimMaskPalette_LightBeam, BG_PLTT_ID(animBg.paletteId), PLTT_SIZE_4BPP); gTasks[taskId].data[10] = gBattle_BG1_X; gTasks[taskId].data[11] = gBattle_BG1_Y; @@ -2819,14 +2863,14 @@ void AnimTask_DoomDesireLightBeam(u8 taskId) } AnimLoadCompressedBgGfx(animBg.bgId, gBattleAnimMaskImage_LightBeam, animBg.tilesOffset); - LoadCompressedPalette(gBattleAnimMaskPalette_LightBeam, BG_PLTT_ID(animBg.paletteId), PLTT_SIZE_4BPP); + LoadPalette(gBattleAnimMaskPalette_LightBeam, BG_PLTT_ID(animBg.paletteId), PLTT_SIZE_4BPP); gTasks[taskId].data[10] = gBattle_BG1_X; gTasks[taskId].data[11] = gBattle_BG1_Y; gTasks[taskId].data[0]++; break; case 1: gTasks[taskId].data[3] = 0; - if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_OPPONENT) + if (!IsOnPlayerSide(gBattleAnimTarget)) gBattle_BG1_X = gTasks[taskId].data[10] + gDoomDesireLightBeamCoordTable[gTasks[taskId].data[2]]; else gBattle_BG1_X = gTasks[taskId].data[10] - gDoomDesireLightBeamCoordTable[gTasks[taskId].data[2]]; @@ -2903,7 +2947,7 @@ static void AnimWeakFrustrationAngerMark(struct Sprite *sprite) sprite->data[1] += 160; sprite->data[2] += 128; - if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + if (!IsOnPlayerSide(gBattleAnimAttacker)) sprite->x2 = -(sprite->data[1] >> 8); else sprite->x2 = sprite->data[1] >> 8; @@ -3018,7 +3062,7 @@ static void AnimTask_RockMonBackAndForth_Step(u8 taskId) // arg 2: unused void AnimSweetScentPetal(struct Sprite *sprite) { - if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) + if (IsOnPlayerSide(gBattleAnimAttacker)) { sprite->x = 0; sprite->y = gBattleAnimArgs[0]; @@ -3037,7 +3081,7 @@ void AnimSweetScentPetal(struct Sprite *sprite) static void AnimSweetScentPetal_Step(struct Sprite *sprite) { sprite->data[0] += 3; - if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) + if (IsOnPlayerSide(gBattleAnimAttacker)) { sprite->x += 5; sprite->y -= 1; @@ -3214,13 +3258,13 @@ void AnimTask_PainSplitMovement(u8 taskId) case 1: SetSpriteRotScale(spriteId, 0xD0, 0x130, 0xF00); SetBattlerSpriteYOffsetFromYScale(spriteId); - if (IsContest() || GetBattlerSide(gTasks[taskId].data[11]) == B_SIDE_PLAYER) + if (IsContest() || IsOnPlayerSide(gTasks[taskId].data[11])) gSprites[spriteId].y2 += 16; break; case 2: SetSpriteRotScale(spriteId, 0xD0, 0x130, 0xF100); SetBattlerSpriteYOffsetFromYScale(spriteId); - if (IsContest() || GetBattlerSide(gTasks[taskId].data[11]) == B_SIDE_PLAYER) + if (IsContest() || IsOnPlayerSide(gTasks[taskId].data[11])) gSprites[spriteId].y2 += 16; break; } @@ -3420,8 +3464,8 @@ void AnimTask_RolePlaySilhouette(u8 taskId) } else { - struct Pokemon *mon = GetPartyBattlerData(gBattleAnimTarget); - if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + struct Pokemon *mon = GetBattlerMon(gBattleAnimTarget); + if (!IsOnPlayerSide(gBattleAnimAttacker)) isBackPic = FALSE; else isBackPic = TRUE; @@ -3507,7 +3551,7 @@ void AnimTask_AcidArmor(u8 taskId) task->data[7] = 0; task->data[8] = 24; - if (GetBattlerSide(battler) == B_SIDE_OPPONENT) + if (!IsOnPlayerSide(battler)) task->data[8] *= -1; task->data[13] = GetBattlerYCoordWithElevation(battler) - 34; @@ -3762,7 +3806,7 @@ void AnimSmokeBallEscapeCloud(struct Sprite *sprite) { sprite->data[0] = gBattleAnimArgs[3]; StartSpriteAffineAnim(sprite, gBattleAnimArgs[0]); - if (GetBattlerSide(gBattleAnimTarget) != B_SIDE_PLAYER) + if (!IsOnPlayerSide(gBattleAnimTarget)) gBattleAnimArgs[1] = -gBattleAnimArgs[1]; sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2) + gBattleAnimArgs[1]; @@ -3882,7 +3926,7 @@ void AnimTask_SlideMonForFocusBand(u8 taskId) if (gBattleAnimArgs[3]) gTasks[taskId].data[6] = gTasks[taskId].data[6] | -0x8000; - if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + if (!IsOnPlayerSide(gBattleAnimAttacker)) { gTasks[taskId].data[2] = gBattleAnimArgs[1]; gTasks[taskId].data[3] = gBattleAnimArgs[2]; @@ -4114,7 +4158,7 @@ void AnimTask_StatusClearedEffect(u8 taskId) // arg 2: which direction (0 = upward, 1 = downward, 2 = horizontal) static void AnimRoarNoiseLine(struct Sprite *sprite) { - if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_OPPONENT) + if (!IsOnPlayerSide(gBattleAnimAttacker)) gBattleAnimArgs[0] = -gBattleAnimArgs[0]; sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X) + gBattleAnimArgs[0]; @@ -4136,7 +4180,7 @@ static void AnimRoarNoiseLine(struct Sprite *sprite) sprite->data[0] = 0x280; } - if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + if (!IsOnPlayerSide(gBattleAnimAttacker)) { sprite->data[0] = -sprite->data[0]; sprite->hFlip = 1; @@ -4194,7 +4238,7 @@ void AnimTask_GlareEyeDots(u8 taskId) task->tIsContest = FALSE; } - if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) + if (IsOnPlayerSide(gBattleAnimAttacker)) task->tStartX = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2) + GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_HEIGHT) / 4; else task->tStartX = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2) - GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_HEIGHT) / 4; @@ -4362,7 +4406,7 @@ void AnimTask_BarrageBall(u8 taskId) gSprites[task->data[15]].data[4] = task->data[14]; gSprites[task->data[15]].data[5] = -32; InitAnimArcTranslation(&gSprites[task->data[15]]); - if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_OPPONENT) + if (!IsOnPlayerSide(gBattleAnimAttacker)) StartSpriteAffineAnim(&gSprites[task->data[15]], 1); task->func = AnimTask_BarrageBall_Step; @@ -4702,7 +4746,7 @@ void AnimTask_HelpingHandAttackerMovement(u8 taskId) } else { - if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) + if (IsOnPlayerSide(gBattleAnimAttacker)) task->data[14] = -1; else task->data[14] = 1; @@ -4812,7 +4856,7 @@ static void AnimForesightMagnifyingGlass(struct Sprite *sprite) sprite->data[7] = gBattleAnimTarget; } - if (GetBattlerSide(sprite->data[7]) == B_SIDE_OPPONENT) + if (!IsOnPlayerSide(sprite->data[7])) sprite->oam.matrixNum = ST_OAM_HFLIP; sprite->oam.priority = GetBattlerSpriteBGPriority(sprite->data[7]); @@ -4951,7 +4995,7 @@ static void AnimMeteorMashStar(struct Sprite *sprite) s16 UNUSED y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); s16 UNUSED x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); - if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER || IsContest()) + if (IsOnPlayerSide(gBattleAnimTarget) || IsContest()) { sprite->data[0] = sprite->x - gBattleAnimArgs[0]; sprite->data[2] = sprite->x - gBattleAnimArgs[2]; @@ -5070,7 +5114,7 @@ void AnimBlockX(struct Sprite *sprite) { s16 y; - if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER) + if (IsOnPlayerSide(gBattleAnimTarget)) { sprite->subpriority = GetBattlerSpriteSubpriority(gBattleAnimTarget) - 2; y = -144; @@ -5279,7 +5323,7 @@ void AnimTask_SnatchOpposingMonMove(u8 taskId) case 0: spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER); gTasks[taskId].data[1] += 0x800; - if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) + if (IsOnPlayerSide(gBattleAnimAttacker)) gSprites[spriteId].x2 += (gTasks[taskId].data[1] >> 8); else gSprites[spriteId].x2 -= (gTasks[taskId].data[1] >> 8); @@ -5304,7 +5348,7 @@ void AnimTask_SnatchOpposingMonMove(u8 taskId) } else { - struct Pokemon *mon = GetPartyBattlerData(gBattleAnimAttacker); + struct Pokemon *mon = GetBattlerMon(gBattleAnimAttacker); personality = GetMonData(mon, MON_DATA_PERSONALITY); isShiny = GetMonData(mon, MON_DATA_IS_SHINY); if (gBattleSpritesDataPtr->battlerData[gBattleAnimAttacker].transformSpecies == SPECIES_NONE) @@ -5312,7 +5356,7 @@ void AnimTask_SnatchOpposingMonMove(u8 taskId) else species = gBattleSpritesDataPtr->battlerData[gBattleAnimAttacker].transformSpecies; - if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) + if (IsOnPlayerSide(gBattleAnimAttacker)) { subpriority = gSprites[GetAnimBattlerSpriteId(ANIM_TARGET)].subpriority + 1; isBackPic = FALSE; @@ -5336,7 +5380,7 @@ void AnimTask_SnatchOpposingMonMove(u8 taskId) case 2: spriteId2 = gTasks[taskId].data[15]; gTasks[taskId].data[1] += 0x800; - if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) + if (IsOnPlayerSide(gBattleAnimAttacker)) gSprites[spriteId2].x2 -= (gTasks[taskId].data[1] >> 8); else gSprites[spriteId2].x2 += (gTasks[taskId].data[1] >> 8); @@ -5345,7 +5389,7 @@ void AnimTask_SnatchOpposingMonMove(u8 taskId) x = gSprites[spriteId2].x + gSprites[spriteId2].x2; if (gTasks[taskId].data[14] == 0) { - if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) + if (IsOnPlayerSide(gBattleAnimAttacker)) { if (x < GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X)) { @@ -5373,7 +5417,7 @@ void AnimTask_SnatchOpposingMonMove(u8 taskId) spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER); spriteId2 = gTasks[taskId].data[15]; DestroySpriteAndFreeResources_(&gSprites[spriteId2]); - if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) + if (IsOnPlayerSide(gBattleAnimAttacker)) gSprites[spriteId].x2 = -gSprites[spriteId].x - 32; else gSprites[spriteId].x2 = DISPLAY_WIDTH + 32 - gSprites[spriteId].x; @@ -5383,7 +5427,7 @@ void AnimTask_SnatchOpposingMonMove(u8 taskId) case 4: spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER); gTasks[taskId].data[1] += 0x800; - if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) + if (IsOnPlayerSide(gBattleAnimAttacker)) { gSprites[spriteId].x2 += (gTasks[taskId].data[1] >> 8); if (gSprites[spriteId].x2 + gSprites[spriteId].x >= GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X)) @@ -5415,7 +5459,7 @@ static void AnimUnusedItemBagSteal(struct Sprite *sprite) sprite->data[0] = -32; sprite->data[7]++; sprite->invisible = FALSE; - if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_OPPONENT && !IsContest()) + if (!IsOnPlayerSide(gBattleAnimAttacker) && !IsContest()) sprite->subpriority = gSprites[GetAnimBattlerSpriteId(ANIM_TARGET)].subpriority - 1; } else @@ -5434,7 +5478,7 @@ static void AnimUnusedItemBagSteal(struct Sprite *sprite) } sprite->data[2] += 0x100; - if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) + if (IsOnPlayerSide(gBattleAnimAttacker)) sprite->x2 -= (sprite->data[2] >> 8); else sprite->x2 += (sprite->data[2] >> 8); @@ -5513,7 +5557,7 @@ void AnimTask_TeeterDanceMovement(u8 taskId) { struct Task *task = &gTasks[taskId]; task->data[3] = GetAnimBattlerSpriteId(ANIM_ATTACKER); - task->data[4] = GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER ? 1 : -1; + task->data[4] = IsOnPlayerSide(gBattleAnimAttacker) ? 1 : -1; task->data[6] = gSprites[task->data[3]].y; task->data[5] = gSprites[task->data[3]].x; task->data[9] = 0; @@ -5560,7 +5604,7 @@ static void AnimTask_TeeterDanceMovement_Step(u8 taskId) void AnimKnockOffStrike_Step(struct Sprite *sprite) { // These two cases are identical. - if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER) + if (IsOnPlayerSide(gBattleAnimTarget)) { sprite->data[1] += sprite->data[0]; sprite->data[1] &= 0xFF; @@ -5584,7 +5628,7 @@ void AnimKnockOffStrike_Step(struct Sprite *sprite) // arg 1: initial y pixel offset static void AnimKnockOffStrike(struct Sprite *sprite) { - if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER) + if (IsOnPlayerSide(gBattleAnimTarget)) { sprite->x -= gBattleAnimArgs[0]; sprite->y += gBattleAnimArgs[1]; diff --git a/src/battle_anim_electric.c b/src/battle_anim_electric.c index bd010797a1..bc8d321458 100644 --- a/src/battle_anim_electric.c +++ b/src/battle_anim_electric.c @@ -603,7 +603,7 @@ const struct SpriteTemplate gVoltSwitchSpriteTemplate = // functions static void AnimLightning(struct Sprite *sprite) { - if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + if (!IsOnPlayerSide(gBattleAnimAttacker)) sprite->x -= gBattleAnimArgs[0]; else sprite->x += gBattleAnimArgs[0]; @@ -620,7 +620,7 @@ static void AnimLightning_Step(struct Sprite *sprite) static void AnimUnusedSpinningFist(struct Sprite *sprite) { - if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + if (!IsOnPlayerSide(gBattleAnimAttacker)) sprite->x -= gBattleAnimArgs[0]; else sprite->x += gBattleAnimArgs[0]; @@ -639,7 +639,7 @@ static void AnimUnusedCirclingShock(struct Sprite *sprite) sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); - if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + if (!IsOnPlayerSide(gBattleAnimAttacker)) { sprite->x -= gBattleAnimArgs[0]; sprite->y -= gBattleAnimArgs[1]; @@ -767,7 +767,7 @@ static void AnimThunderboltOrb_Step(struct Sprite *sprite) static void AnimThunderboltOrb(struct Sprite *sprite) { - if (IsContest() || GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER) + if (IsContest() || IsOnPlayerSide(gBattleAnimTarget)) gBattleAnimArgs[1] = -gBattleAnimArgs[1]; sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + gBattleAnimArgs[1]; @@ -788,7 +788,7 @@ void AnimSparkElectricityFlashing(struct Sprite *sprite) else battler = gBattleAnimAttacker; - if (IsContest() || GetBattlerSide(battler) == B_SIDE_PLAYER) + if (IsContest() || IsOnPlayerSide(battler)) gBattleAnimArgs[0] = -gBattleAnimArgs[0]; sprite->x = GetBattlerSpriteCoord(battler, BATTLER_COORD_X_2) + gBattleAnimArgs[0]; @@ -1099,7 +1099,7 @@ static void AnimVoltTackleOrbSlide(struct Sprite *sprite) sprite->data[6] = GetAnimBattlerSpriteId(ANIM_ATTACKER); sprite->data[7] = 16; - if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_OPPONENT) + if (!IsOnPlayerSide(gBattleAnimAttacker)) sprite->data[7] *= -1; sprite->callback = AnimVoltTackleOrbSlide_Step; @@ -1130,7 +1130,7 @@ void AnimTask_VoltTackleAttackerReappear(u8 taskId) case 0: task->data[15] = GetAnimBattlerSpriteId(ANIM_ATTACKER); task->data[14] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); - if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) + if (IsOnPlayerSide(gBattleAnimAttacker)) { task->data[14] = -32; task->data[13] = 2; @@ -1186,7 +1186,7 @@ void AnimTask_VoltTackleBolt(u8 taskId) switch(task->data[0]) { case 0: - task->data[1] = GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER ? 1 : -1; + task->data[1] = IsOnPlayerSide(gBattleAnimAttacker) ? 1 : -1; switch (gBattleAnimArgs[0]) { @@ -1581,9 +1581,9 @@ static void VoltSwitch_Step(struct Sprite* sprite) void AnimTask_VoltSwitch(struct Sprite* sprite) { - InitSpritePosToAnimAttacker(sprite, 0); + InitSpritePosToAnimAttacker(sprite, FALSE); - if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_OPPONENT) + if (!IsOnPlayerSide(gBattleAnimAttacker)) gBattleAnimArgs[2] = -gBattleAnimArgs[2]; else sprite->y += 10; //Move slightly down diff --git a/src/battle_anim_fight.c b/src/battle_anim_fight.c index d26c6507e1..63500ab701 100644 --- a/src/battle_anim_fight.c +++ b/src/battle_anim_fight.c @@ -492,7 +492,7 @@ static void AnimUnusedHumanoidFoot(struct Sprite *sprite) static void AnimSlideHandOrFootToTarget(struct Sprite *sprite) { - if (gBattleAnimArgs[7] == 1 && GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + if (gBattleAnimArgs[7] == 1 && !IsOnPlayerSide(gBattleAnimAttacker)) { gBattleAnimArgs[1] = -gBattleAnimArgs[1]; gBattleAnimArgs[3] = -gBattleAnimArgs[3]; @@ -564,7 +564,7 @@ static void AnimFistOrFootRandomPos(struct Sprite *sprite) if (Random2() & 1) y *= -1; - if (GetBattlerSide(battler) == B_SIDE_PLAYER) + if (IsOnPlayerSide(battler)) y -= 16; sprite->x += x; @@ -644,7 +644,7 @@ static void AnimSlidingKick(struct Sprite *sprite) InitSpritePosToAnimTarget(sprite, TRUE); - if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + if (!IsOnPlayerSide(gBattleAnimAttacker)) gBattleAnimArgs[2] = -gBattleAnimArgs[2]; sprite->data[0] = gBattleAnimArgs[3]; @@ -984,7 +984,7 @@ void AnimSuperpowerFireball(struct Sprite *sprite) if (IsContest()) sprite->oam.matrixNum |= ST_OAM_HFLIP; - else if (GetBattlerSide(battler) == B_SIDE_PLAYER) + else if (IsOnPlayerSide(battler)) sprite->oam.matrixNum |= (ST_OAM_HFLIP | ST_OAM_VFLIP); sprite->data[0] = 16; @@ -1018,7 +1018,7 @@ static void AnimArmThrustHit(struct Sprite *sprite) sprite->data[4] = gBattleAnimArgs[2]; turn = gAnimMoveTurn; - if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER) + if (IsOnPlayerSide(gBattleAnimTarget)) turn++; if (turn & 1) @@ -1044,7 +1044,7 @@ void AnimRevengeScratch(struct Sprite *sprite) { StartSpriteAnim(sprite, 2); } - else if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + else if (!IsOnPlayerSide(gBattleAnimAttacker)) { StartSpriteAnim(sprite, 1); } @@ -1088,7 +1088,7 @@ void AnimTask_MoveSkyUppercutBg(u8 taskId) task->data[10] += 2816; - if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER) + if (IsOnPlayerSide(gBattleAnimTarget)) gBattle_BG3_X += task->data[9] >> 8; else gBattle_BG3_X -= task->data[9] >> 8; diff --git a/src/battle_anim_fire.c b/src/battle_anim_fire.c index 7f89fb7d1d..276b8c8c07 100644 --- a/src/battle_anim_fire.c +++ b/src/battle_anim_fire.c @@ -541,8 +541,8 @@ const struct SpriteTemplate gTwisterEmberSpriteTemplate = static void AnimLavaPlumeOrbitScatter(struct Sprite *sprite) { - sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2); - sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3); + sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); + sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); sprite->data[0] = Sin(gBattleAnimArgs[0], 10); sprite->data[1] = Cos(gBattleAnimArgs[0], 7); sprite->callback = AnimLavaPlumeOrbitScatterStep; @@ -594,7 +594,7 @@ void AnimFirePlume(struct Sprite *sprite) { SetSpriteCoordsToAnimAttackerCoords(sprite); - if (GetBattlerSide(gBattleAnimAttacker)) + if (!IsOnPlayerSide(gBattleAnimAttacker)) { sprite->x -= gBattleAnimArgs[0]; sprite->y += gBattleAnimArgs[1]; @@ -616,7 +616,7 @@ void AnimFirePlume(struct Sprite *sprite) static void AnimLargeFlame(struct Sprite *sprite) { - if (GetBattlerSide(gBattleAnimAttacker)) + if (!IsOnPlayerSide(gBattleAnimAttacker)) { sprite->x -= gBattleAnimArgs[0]; sprite->y += gBattleAnimArgs[1]; @@ -652,7 +652,7 @@ static void AnimUnusedSmallEmber(struct Sprite *sprite) { SetSpriteCoordsToAnimAttackerCoords(sprite); - if (GetBattlerSide(gBattleAnimAttacker)) + if (!IsOnPlayerSide(gBattleAnimAttacker)) { sprite->x -= gBattleAnimArgs[0]; } @@ -1026,7 +1026,7 @@ static void CreateEruptionLaunchRocks(u8 spriteId, u8 taskId, u8 activeSpritesId u16 y = GetEruptionLaunchRockInitialYPos(spriteId); u16 x = gSprites[spriteId].x; - if(GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) + if(IsOnPlayerSide(gBattleAnimAttacker)) { x -= 12; sign = 1; @@ -1072,7 +1072,7 @@ static u16 GetEruptionLaunchRockInitialYPos(u8 spriteId) { s16 y = gSprites[spriteId].y + gSprites[spriteId].y2 + gSprites[spriteId].centerToCornerVecY; - if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) + if (IsOnPlayerSide(gBattleAnimAttacker)) y += 74; else y += 44; @@ -1206,7 +1206,7 @@ void AnimWillOWispOrb(struct Sprite *sprite) StartSpriteAnim(sprite, gBattleAnimArgs[2]); sprite->data[7] = gBattleAnimArgs[2]; - if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + if (!IsOnPlayerSide(gBattleAnimAttacker)) { sprite->data[4] = 4; } @@ -1220,7 +1220,7 @@ void AnimWillOWispOrb(struct Sprite *sprite) break; case 1: sprite->data[1] += 192; - if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + if (!IsOnPlayerSide(gBattleAnimAttacker)) { sprite->y2 = -(sprite->data[1] >> 8); } @@ -1327,7 +1327,7 @@ void AnimTask_MoveHeatWaveTargets(u8 taskId) { struct Task *task = &gTasks[taskId]; - task->data[12] = GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER ? 1 : -1; + task->data[12] = IsOnPlayerSide(gBattleAnimAttacker) ? 1 : -1; task->data[13] = IsBattlerSpriteVisible(BATTLE_PARTNER(gBattleAnimTarget)) + 1; task->data[14] = GetAnimBattlerSpriteId(ANIM_TARGET); task->data[15] = GetAnimBattlerSpriteId(ANIM_DEF_PARTNER); diff --git a/src/battle_anim_flying.c b/src/battle_anim_flying.c index ca7b370654..2a346bb2ee 100644 --- a/src/battle_anim_flying.c +++ b/src/battle_anim_flying.c @@ -427,7 +427,7 @@ static void AnimTask_AnimateGustTornadoPalette_Step(u8 taskId) static void AnimGustToTarget(struct Sprite *sprite) { InitSpritePosToAnimAttacker(sprite, TRUE); - if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + if (!IsOnPlayerSide(gBattleAnimAttacker)) gBattleAnimArgs[2] = -gBattleAnimArgs[2]; sprite->data[0] = gBattleAnimArgs[4]; @@ -448,7 +448,7 @@ static void AnimGustToTarget_Step(struct Sprite *sprite) void AnimAirWaveCrescent(struct Sprite *sprite) { - if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + if (!IsOnPlayerSide(gBattleAnimAttacker)) { gBattleAnimArgs[0] = -gBattleAnimArgs[0]; gBattleAnimArgs[1] = -gBattleAnimArgs[1]; @@ -513,7 +513,7 @@ void AnimFlyBallUp_Step(struct Sprite *sprite) void AnimFlyBallAttack(struct Sprite *sprite) { - if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + if (!IsOnPlayerSide(gBattleAnimAttacker)) { sprite->x = DISPLAY_WIDTH + 32; sprite->y = -32; @@ -601,7 +601,7 @@ static void AnimFallingFeather(struct Sprite *sprite) else battler = gBattleAnimTarget; - if (GetBattlerSide(battler) == B_SIDE_PLAYER) + if (IsOnPlayerSide(battler)) gBattleAnimArgs[0] = -gBattleAnimArgs[0]; sprite->x = GetBattlerSpriteCoord(battler, BATTLER_COORD_ATTR_HEIGHT) + gBattleAnimArgs[0]; @@ -930,8 +930,8 @@ static void AnimWhirlwindLine(struct Sprite *sprite) else InitSpritePosToAnimTarget(sprite, FALSE); - if ((gBattleAnimArgs[2] == ANIM_ATTACKER && GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) - || (gBattleAnimArgs[2] == ANIM_TARGET && GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER)) + if ((gBattleAnimArgs[2] == ANIM_ATTACKER && IsOnPlayerSide(gBattleAnimAttacker)) + || (gBattleAnimArgs[2] == ANIM_TARGET && IsOnPlayerSide(gBattleAnimTarget))) { sprite->x += 8; } @@ -1282,9 +1282,9 @@ void AnimTask_LoadWindstormBackground(u8 taskId) GetBattleAnimBg1Data(&animBg); AnimLoadCompressedBgGfx(animBg.bgId, gBattleAnimBgImage_Sandstorm, animBg.tilesOffset); AnimLoadCompressedBgTilemapHandleContest(&animBg, gBattleAnimBgTilemap_Sandstorm, 0); - LoadCompressedPalette(gBattleAnimSpritePal_Windstorm, animBg.paletteId * 16, 32); + LoadPalette(gBattleAnimSpritePal_Windstorm, animBg.paletteId * 16, 32); - if (gBattleAnimArgs[0] && GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + if (gBattleAnimArgs[0] && !IsOnPlayerSide(gBattleAnimAttacker)) var0 = 1; gTasks[taskId].data[0] = var0; diff --git a/src/battle_anim_ghost.c b/src/battle_anim_ghost.c index f848cd794a..4a7c5f4874 100644 --- a/src/battle_anim_ghost.c +++ b/src/battle_anim_ghost.c @@ -597,7 +597,7 @@ void AnimTask_NightmareClone(u8 taskId) SetGpuReg(REG_OFFSET_BLDCNT, (BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL)); SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(task->data[2], task->data[3])); gSprites[task->data[0]].data[0] = 80; - if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER) + if (IsOnPlayerSide(gBattleAnimTarget)) { gSprites[task->data[0]].data[1] = -144; gSprites[task->data[0]].data[2] = 112; @@ -1031,7 +1031,7 @@ void AnimTask_CurseStretchingBlackBg(u8 taskId) SetGpuReg(REG_OFFSET_BLDCNT, (BLDCNT_TGT1_BG3 | BLDCNT_EFFECT_DARKEN)); SetGpuReg(REG_OFFSET_BLDY, 16); - if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER || IsContest()) + if (!IsOnPlayerSide(gBattleAnimAttacker) || IsContest()) startX = 40; else startX = 200; @@ -1114,7 +1114,7 @@ static void AnimCurseNail(struct Sprite *sprite) s16 xDelta2; InitSpritePosToAnimAttacker(sprite, TRUE); - if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) + if (IsOnPlayerSide(gBattleAnimAttacker)) { xDelta = 24; xDelta2 = -2; @@ -1205,7 +1205,7 @@ void AnimGhostStatusSprite(struct Sprite *sprite) u16 coeffA; sprite->x2 = Sin(sprite->data[0], 12); - if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + if (!IsOnPlayerSide(gBattleAnimAttacker)) sprite->x2 = -sprite->x2; sprite->data[0] = (sprite->data[0] + 6) & 0xFF; @@ -1283,7 +1283,7 @@ void AnimTask_GrudgeFlames_Step(u8 taskId) if (spriteId != MAX_SPRITES) { gSprites[spriteId].data[0] = taskId; - gSprites[spriteId].data[1] = GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER; + gSprites[spriteId].data[1] = IsOnPlayerSide(gBattleAnimAttacker); gSprites[spriteId].data[2] = (i * 42) & 0xFF; gSprites[spriteId].data[3] = task->data[11]; @@ -1465,14 +1465,14 @@ void AnimTask_PulverizingPancakeWhiteShadow(u8 taskId) task->data[9] = 16; task->data[10] = gBattleAnimArgs[0]; - baseX = GetBattlerSpriteCoord(gBattleAnimAttacker, 2); + baseX = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); baseY = GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_BOTTOM); if (!IsContest()) { spriteId = CreateSprite(&gDestinyBondWhiteShadowSpriteTemplate, baseX, baseY, 55); if (spriteId != MAX_SPRITES) { - x = GetBattlerSpriteCoord(gBattleAnimTarget, 2); + x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); y = GetBattlerSpriteCoordAttr(gBattleAnimTarget, BATTLER_COORD_ATTR_BOTTOM); gSprites[spriteId].data[0] = baseX << 4; gSprites[spriteId].data[1] = baseY << 4; diff --git a/src/battle_anim_ground.c b/src/battle_anim_ground.c index 10303ffe2e..eb96414b55 100644 --- a/src/battle_anim_ground.c +++ b/src/battle_anim_ground.c @@ -202,7 +202,7 @@ static void AnimBonemerangProjectile_End(struct Sprite *sprite) static void AnimBoneHitProjectile(struct Sprite *sprite) { InitSpritePosToAnimTarget(sprite, TRUE); - if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + if (!IsOnPlayerSide(gBattleAnimAttacker)) gBattleAnimArgs[2] = -gBattleAnimArgs[2]; sprite->data[0] = gBattleAnimArgs[4]; @@ -524,7 +524,7 @@ void AnimDirtPlumeParticle(struct Sprite *sprite) s8 battler; s16 xOffset; - if (gBattleAnimArgs[0] == 0) + if (gBattleAnimArgs[0] == ANIM_ATTACKER) battler = gBattleAnimAttacker; else battler = gBattleAnimTarget; diff --git a/src/battle_anim_ice.c b/src/battle_anim_ice.c index 8b818790e8..8aa4ae2563 100644 --- a/src/battle_anim_ice.c +++ b/src/battle_anim_ice.c @@ -708,7 +708,7 @@ static void AnimIceBeamParticle(struct Sprite *sprite) InitSpritePosToAnimAttacker(sprite, TRUE); sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); - if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + if (!IsOnPlayerSide(gBattleAnimAttacker)) sprite->data[2] -= gBattleAnimArgs[2]; else sprite->data[2] += gBattleAnimArgs[2]; @@ -733,7 +733,7 @@ void AnimIceEffectParticle(struct Sprite *sprite) else { SetAverageBattlerPositions(gBattleAnimTarget, TRUE, &sprite->x, &sprite->y); - if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + if (!IsOnPlayerSide(gBattleAnimAttacker)) gBattleAnimArgs[0] = -gBattleAnimArgs[0]; sprite->x += gBattleAnimArgs[0]; @@ -780,7 +780,7 @@ static void AnimSwirlingSnowball(struct Sprite *sprite) SetAverageBattlerPositions(gBattleAnimTarget, TRUE, &sprite->data[2], &sprite->data[4]); } - if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + if (!IsOnPlayerSide(gBattleAnimAttacker)) sprite->data[2] -= gBattleAnimArgs[2]; else sprite->data[2] += gBattleAnimArgs[2]; @@ -826,7 +826,7 @@ void AnimSwirlingSnowball_Step1(struct Sprite *sprite) sprite->x2 = 0; sprite->data[0] = 128; - tempVar = GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER ? 20 : -20; + tempVar = !IsOnPlayerSide(gBattleAnimAttacker) ? 20 : -20; sprite->data[3] = Sin(sprite->data[0], tempVar); sprite->data[4] = Cos(sprite->data[0], 0xF); @@ -838,7 +838,7 @@ void AnimSwirlingSnowball_Step1(struct Sprite *sprite) static void AnimSwirlingSnowball_Step2(struct Sprite *sprite) { s16 tempVar; - tempVar = GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER ? 20 : -20; + tempVar = !IsOnPlayerSide(gBattleAnimAttacker) ? 20 : -20; if (sprite->data[5] <= 31) { @@ -902,7 +902,7 @@ void AnimMoveParticleBeyondTarget(struct Sprite *sprite) SetAverageBattlerPositions(gBattleAnimTarget, TRUE, &sprite->data[2], &sprite->data[4]); } - if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + if (!IsOnPlayerSide(gBattleAnimAttacker)) sprite->data[2] -= gBattleAnimArgs[2]; else sprite->data[2] += gBattleAnimArgs[2]; @@ -974,7 +974,7 @@ static void AnimWaveFromCenterOfTarget(struct Sprite *sprite) { SetAverageBattlerPositions(gBattleAnimTarget, FALSE, &sprite->x, &sprite->y); - if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + if (!IsOnPlayerSide(gBattleAnimAttacker)) gBattleAnimArgs[0] = -gBattleAnimArgs[0]; sprite->x += gBattleAnimArgs[0]; @@ -1011,7 +1011,7 @@ static void InitSwirlingFogAnim(struct Sprite *sprite) else { SetAverageBattlerPositions(gBattleAnimAttacker, FALSE, &sprite->x, &sprite->y); - if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + if (!IsOnPlayerSide(gBattleAnimAttacker)) sprite->x -= gBattleAnimArgs[0]; else sprite->x += gBattleAnimArgs[0]; @@ -1030,7 +1030,7 @@ static void InitSwirlingFogAnim(struct Sprite *sprite) else { SetAverageBattlerPositions(gBattleAnimTarget, FALSE, &sprite->x, &sprite->y); - if (GetBattlerSide(gBattleAnimTarget) != B_SIDE_PLAYER) + if (!IsOnPlayerSide(gBattleAnimTarget)) sprite->x -= gBattleAnimArgs[0]; else sprite->x += gBattleAnimArgs[0]; @@ -1048,7 +1048,7 @@ static void InitSwirlingFogAnim(struct Sprite *sprite) tempVar = 0x40; sprite->data[6] = tempVar; - if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER) + if (IsOnPlayerSide(gBattleAnimTarget)) sprite->y += 8; sprite->data[0] = gBattleAnimArgs[3]; @@ -1294,12 +1294,12 @@ static void InitPoisonGasCloudAnim(struct Sprite *sprite) if (GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2) < GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2)) sprite->data[7] = 0x8000; - if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER) + if (IsOnPlayerSide(gBattleAnimTarget)) { gBattleAnimArgs[1] = -gBattleAnimArgs[1]; gBattleAnimArgs[3] = -gBattleAnimArgs[3]; - if ((sprite->data[7] & 0x8000) && GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) + if ((sprite->data[7] & 0x8000) && IsOnPlayerSide(gBattleAnimAttacker)) sprite->subpriority = gSprites[GetAnimBattlerSpriteId(ANIM_TARGET)].subpriority + 1; sprite->data[6] = 1; @@ -1378,7 +1378,7 @@ static void MovePoisonGasCloud(struct Sprite *sprite) sprite->data[7]++; if (IsContest()) sprite->data[5] = 80; - else if (GetBattlerSide(gBattleAnimTarget) != B_SIDE_PLAYER) + else if (!IsOnPlayerSide(gBattleAnimTarget)) sprite->data[5] = 204; else sprite->data[5] = 80; @@ -1424,7 +1424,7 @@ static void MovePoisonGasCloud(struct Sprite *sprite) sprite->data[4] = sprite->y + 4; if (IsContest()) sprite->data[2] = -16; - else if (GetBattlerSide(gBattleAnimTarget) != B_SIDE_PLAYER) + else if (!IsOnPlayerSide(gBattleAnimTarget)) sprite->data[2] = DISPLAY_WIDTH + 16; else sprite->data[2] = -16; @@ -1660,7 +1660,7 @@ static void InitIceBallAnim(struct Sprite *sprite) sprite->data[0] = gBattleAnimArgs[4]; - if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + if (!IsOnPlayerSide(gBattleAnimAttacker)) gBattleAnimArgs[2] = -gBattleAnimArgs[2]; sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + gBattleAnimArgs[2]; diff --git a/src/battle_anim_mon_movement.c b/src/battle_anim_mon_movement.c index db39c6aadb..a44e0caf6a 100644 --- a/src/battle_anim_mon_movement.c +++ b/src/battle_anim_mon_movement.c @@ -443,7 +443,7 @@ static void AnimTask_TranslateMonElliptical_Step(u8 taskId) // arg 4: speed (valid values are 0-5) void AnimTask_TranslateMonEllipticalRespectSide(u8 taskId) { - if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + if (!IsOnPlayerSide(gBattleAnimAttacker)) gBattleAnimArgs[1] = -gBattleAnimArgs[1]; AnimTask_TranslateMonElliptical(taskId); @@ -456,7 +456,7 @@ void AnimTask_TranslateMonEllipticalRespectSide(u8 taskId) static void DoHorizontalLunge(struct Sprite *sprite) { sprite->invisible = TRUE; - if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + if (!IsOnPlayerSide(gBattleAnimAttacker)) sprite->data[1] = -gBattleAnimArgs[1]; else sprite->data[1] = gBattleAnimArgs[1]; @@ -616,7 +616,7 @@ static void SlideMonToOffset(struct Sprite *sprite) battler = gBattleAnimTarget; monSpriteId = gBattlerSpriteIds[battler]; - if (GetBattlerSide(battler) != B_SIDE_PLAYER) + if (!IsOnPlayerSide(battler)) { gBattleAnimArgs[1] = -gBattleAnimArgs[1]; if (gBattleAnimArgs[3] == 1) @@ -649,7 +649,7 @@ static void SlideMonToOffsetPartner(struct Sprite *sprite) battler = BATTLE_PARTNER(gBattleAnimTarget); monSpriteId = gBattlerSpriteIds[battler]; - if (GetBattlerSide(battler) != B_SIDE_PLAYER) + if (!IsOnPlayerSide(battler)) { gBattleAnimArgs[1] = -gBattleAnimArgs[1]; if (gBattleAnimArgs[3] == 1) @@ -684,7 +684,7 @@ static void SlideMonToOffsetAndBack(struct Sprite *sprite) battler = gBattleAnimTarget; spriteId = gBattlerSpriteIds[battler]; - if (GetBattlerSide(battler)) + if (!IsOnPlayerSide(battler)) { gBattleAnimArgs[1] = -gBattleAnimArgs[1]; if (gBattleAnimArgs[3] == 1) @@ -734,7 +734,7 @@ static void SlideMonToOffsetAndBack_End(struct Sprite *sprite) void AnimTask_WindUpLunge(u8 taskId) { s16 wavePeriod = 0x8000 / gBattleAnimArgs[3]; - if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + if (!IsOnPlayerSide(gBattleAnimAttacker)) { gBattleAnimArgs[1] = -gBattleAnimArgs[1]; gBattleAnimArgs[5] = -gBattleAnimArgs[5]; @@ -798,7 +798,7 @@ static void AnimTask_WindUpLunge_Step2(u8 taskId) void AnimTask_DuckDownHop(u8 taskId) { s16 wavePeriod = 0x8000 / gBattleAnimArgs[3]; - if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + if (!IsOnPlayerSide(gBattleAnimAttacker)) { gBattleAnimArgs[1] = -gBattleAnimArgs[1]; } @@ -879,7 +879,7 @@ void AnimTask_SlideOffScreen(u8 taskId) return; } gTasks[taskId].data[0] = spriteId; - if (GetBattlerSide(gBattleAnimTarget) != B_SIDE_PLAYER) + if (!IsOnPlayerSide(gBattleAnimTarget)) { gTasks[taskId].data[1] = gBattleAnimArgs[1]; } @@ -912,7 +912,7 @@ static void AnimTask_SlideOffScreen_Step(u8 taskId) void AnimTask_SwayMon(u8 taskId) { u8 spriteId; - if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + if (!IsOnPlayerSide(gBattleAnimAttacker)) gBattleAnimArgs[1] = -gBattleAnimArgs[1]; spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[4]); @@ -955,7 +955,7 @@ static void AnimTask_SwayMonStep(u8 taskId) } else { - if (GetBattlerSide(gTasks[taskId].data[5]) == B_SIDE_PLAYER) + if (IsOnPlayerSide(gTasks[taskId].data[5])) { gSprites[spriteId].y2 = (sineValue >= 0) ? sineValue : -sineValue; } @@ -1051,11 +1051,11 @@ void AnimTask_RotateMonSpriteToSide(u8 taskId) { if (gBattleAnimArgs[2] == ANIM_ATTACKER) { - gTasks[taskId].data[7] = GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER; + gTasks[taskId].data[7] = IsOnPlayerSide(gBattleAnimAttacker); } else { - gTasks[taskId].data[7] = GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER; + gTasks[taskId].data[7] = IsOnPlayerSide(gBattleAnimTarget); } } if (gTasks[taskId].data[7]) @@ -1078,14 +1078,14 @@ void AnimTask_RotateMonToSideAndRestore(u8 taskId) gTasks[taskId].data[2] = gBattleAnimArgs[0]; if (gBattleAnimArgs[2] == ANIM_ATTACKER) { - if (GetBattlerSide(gBattleAnimAttacker)) + if (!IsOnPlayerSide(gBattleAnimAttacker)) { gBattleAnimArgs[1] = -gBattleAnimArgs[1]; } } else { - if (GetBattlerSide(gBattleAnimTarget)) + if (!IsOnPlayerSide(gBattleAnimTarget)) { gBattleAnimArgs[1] = -gBattleAnimArgs[1]; } @@ -1176,7 +1176,7 @@ void SetupShakeBattlerBasedOnMovePowerOrDmg(u8 taskId, u8 animBattlerId) // args[0] - 0 if scale on move power, 1 if scale on move damage // args[1] - delay before starting anim // args[2] - duration of anim (after anim starts from above counter) -// args[3] - 1 if do horizontal shake +// args[3] - 1 if do horizontal shake // args[4] - 1 if do vertical shake void AnimTask_ShakeTargetPartnerBasedOnMovePowerOrDmg(u8 taskId) { @@ -1244,7 +1244,7 @@ void AnimTask_RotateVertically(u8 taskId) PrepareBattlerSpriteForRotScale(spriteId, ST_OAM_OBJ_NORMAL); gTasks[taskId].tSpriteId = spriteId; gTasks[taskId].tRotCurr = 0; - gTasks[taskId].tPlayerSide = ((GetBattlerSide(GetAnimBattlerId(gBattleAnimArgs[0]))) == B_SIDE_PLAYER); + gTasks[taskId].tPlayerSide = IsOnPlayerSide(GetAnimBattlerId(gBattleAnimArgs[0])); gTasks[taskId].tRotMax = gTasks[taskId].tPlayerSide ? 0x1FFF : 0x7FFE; gTasks[taskId].tRotSpeed = gBattleAnimArgs[1]; gTasks[taskId].func = AnimTask_RotateVerticallyStep; diff --git a/src/battle_anim_mons.c b/src/battle_anim_mons.c index 9cb8bfe6e3..f7c98bef56 100644 --- a/src/battle_anim_mons.c +++ b/src/battle_anim_mons.c @@ -34,19 +34,21 @@ static void CreateBattlerTrace(struct Task *task, u8 taskId); EWRAM_DATA static union AffineAnimCmd *sAnimTaskAffineAnim = NULL; -const struct UCoords8 sBattlerCoords[][MAX_BATTLERS_COUNT] = +const struct UCoords8 sBattlerCoords[BATTLE_COORDS_COUNT][MAX_BATTLERS_COUNT] = { - { // Single battle - { 72, 80 }, - { 176, 40 }, - { 48, 40 }, - { 112, 80 }, + [BATTLE_COORDS_SINGLES] = + { + [B_POSITION_PLAYER_LEFT] = { 72, 80 }, + [B_POSITION_OPPONENT_LEFT] = { 176, 40 }, + [B_POSITION_PLAYER_RIGHT] = { 48, 40 }, + [B_POSITION_OPPONENT_RIGHT] = { 112, 80 }, }, - { // Double battle - { 32, 80 }, - { 200, 40 }, - { 90, 88 }, - { 152, 32 }, + [BATTLE_COORDS_DOUBLES] = + { + [B_POSITION_PLAYER_LEFT] = { 32, 80 }, + [B_POSITION_OPPONENT_LEFT] = { 200, 40 }, + [B_POSITION_PLAYER_RIGHT] = { 90, 84 }, + [B_POSITION_OPPONENT_RIGHT] = { 152, 32 }, }, }; @@ -99,10 +101,10 @@ u8 GetBattlerSpriteCoord(u8 battler, u8 coordType) { case BATTLER_COORD_X: case BATTLER_COORD_X_2: - retVal = sBattlerCoords[WhichBattleCoords(battler)][GetBattlerPosition(battler)].x; + retVal = sBattlerCoords[GetBattlerCoordsIndex(battler)][GetBattlerPosition(battler)].x; break; case BATTLER_COORD_Y: - retVal = sBattlerCoords[WhichBattleCoords(battler)][GetBattlerPosition(battler)].y; + retVal = sBattlerCoords[GetBattlerCoordsIndex(battler)][GetBattlerPosition(battler)].y; break; case BATTLER_COORD_Y_PIC_OFFSET: case BATTLER_COORD_Y_PIC_OFFSET_DEFAULT: @@ -116,7 +118,7 @@ u8 GetBattlerSpriteCoord(u8 battler, u8 coordType) } else { - mon = GetPartyBattlerData(battler); + mon = GetBattlerMon(battler); illusionMon = GetIllusionMonPtr(battler); if (illusionMon != NULL) mon = illusionMon; @@ -160,14 +162,14 @@ u8 GetBattlerYDelta(u8 battler, u16 species) { spriteInfo = gBattleSpritesDataPtr->battlerData; if (!spriteInfo[battler].transformSpecies) - personality = GetMonData(GetPartyBattlerData(battler), MON_DATA_PERSONALITY); + personality = GetMonData(GetBattlerMon(battler), MON_DATA_PERSONALITY); else personality = gTransformedPersonalities[battler]; species = GetUnownSpeciesId(personality); } } - if (GetBattlerSide(battler) == B_SIDE_PLAYER || IsContest()) + if (IsOnPlayerSide(battler) || IsContest()) ret = gSpeciesInfo[species].backPicYOffset; else ret = gSpeciesInfo[species].frontPicYOffset; @@ -177,7 +179,7 @@ u8 GetBattlerYDelta(u8 battler, u16 species) u8 GetBattlerElevation(u8 battler, u16 species) { u8 ret = 0; - if (GetBattlerSide(battler) == B_SIDE_OPPONENT) + if (!IsOnPlayerSide(battler)) { if (!IsContest()) { @@ -193,7 +195,7 @@ u8 GetBattlerSpriteFinal_Y(u8 battler, u16 species, bool8 a3) u16 offset; u8 y; - if (GetBattlerSide(battler) == B_SIDE_PLAYER || IsContest()) + if (IsOnPlayerSide(battler) || IsContest()) { offset = GetBattlerYDelta(battler, species); } @@ -202,10 +204,10 @@ u8 GetBattlerSpriteFinal_Y(u8 battler, u16 species, bool8 a3) offset = GetBattlerYDelta(battler, species); offset -= GetBattlerElevation(battler, species); } - y = offset + sBattlerCoords[WhichBattleCoords(battler)][GetBattlerPosition(battler)].y; + y = offset + sBattlerCoords[GetBattlerCoordsIndex(battler)][GetBattlerPosition(battler)].y; if (a3) { - if (GetBattlerSide(battler) == B_SIDE_PLAYER) + if (IsOnPlayerSide(battler)) y += 8; if (y > DISPLAY_HEIGHT - MON_PIC_HEIGHT + 8) y = DISPLAY_HEIGHT - MON_PIC_HEIGHT + 8; @@ -254,7 +256,7 @@ u8 GetBattlerSpriteDefault_Y(u8 battler) u8 GetSubstituteSpriteDefault_Y(u8 battler) { u16 y; - if (GetBattlerSide(battler) != B_SIDE_PLAYER) + if (!IsOnPlayerSide(battler)) y = GetBattlerSpriteCoord(battler, BATTLER_COORD_Y) + 16; else y = GetBattlerSpriteCoord(battler, BATTLER_COORD_Y) + 17; @@ -273,11 +275,11 @@ u8 GetBattlerYCoordWithElevation(u8 battler) spriteInfo = gBattleSpritesDataPtr->battlerData; if (!spriteInfo[battler].transformSpecies) - species = GetMonData(GetPartyBattlerData(battler), MON_DATA_SPECIES); + species = GetMonData(GetBattlerMon(battler), MON_DATA_SPECIES); else species = spriteInfo[battler].transformSpecies; - if (GetBattlerSide(battler) != B_SIDE_PLAYER) + if (!IsOnPlayerSide(battler)) y -= GetBattlerElevation(battler, species); } return y; @@ -688,7 +690,7 @@ void SetAnimSpriteInitialXOffset(struct Sprite *sprite, s16 xOffset) } else { - if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + if (!IsOnPlayerSide(gBattleAnimAttacker)) sprite->x -= xOffset; else sprite->x += xOffset; @@ -777,8 +779,8 @@ void InitSpritePosToAnimAttackerPartner(struct Sprite *sprite, bool8 respectMonP bool32 InitSpritePosToAnimBattler(u32 animBattlerId, struct Sprite *sprite, bool8 respectMonPicOffsets) { - u32 battlerId = GetAnimBattlerId(animBattlerId); - if (GetAnimBattlerSpriteId(animBattlerId) == 0xFF || !IsBattlerSpriteVisible(battlerId)) + u32 battler = GetAnimBattlerId(animBattlerId); + if (GetAnimBattlerSpriteId(animBattlerId) == 0xFF || !IsBattlerSpriteVisible(battler)) { DestroyAnimSprite(sprite); return FALSE; @@ -786,13 +788,13 @@ bool32 InitSpritePosToAnimBattler(u32 animBattlerId, struct Sprite *sprite, bool if (!respectMonPicOffsets) { - sprite->x = GetBattlerSpriteCoord2(battlerId, BATTLER_COORD_X); - sprite->y = GetBattlerSpriteCoord2(battlerId, BATTLER_COORD_Y); + sprite->x = GetBattlerSpriteCoord2(battler, BATTLER_COORD_X); + sprite->y = GetBattlerSpriteCoord2(battler, BATTLER_COORD_Y); } else if (animBattlerId != ANIM_TARGET) { - sprite->x = GetBattlerSpriteCoord2(battlerId, BATTLER_COORD_X_2); - sprite->y = GetBattlerSpriteCoord2(battlerId, BATTLER_COORD_Y_PIC_OFFSET); + sprite->x = GetBattlerSpriteCoord2(battler, BATTLER_COORD_X_2); + sprite->y = GetBattlerSpriteCoord2(battler, BATTLER_COORD_Y_PIC_OFFSET); } SetAnimSpriteInitialXOffset(sprite, gBattleAnimArgs[0]); sprite->y += gBattleAnimArgs[1]; @@ -815,7 +817,7 @@ bool8 IsBattlerSpritePresent(u8 battler) if (GetBattlerPosition(battler) == 0xff) return FALSE; - if (!gBattleStruct->spriteIgnore0Hp && GetMonData(GetPartyBattlerData(battler), MON_DATA_HP) == 0) + if (!gBattleStruct->spriteIgnore0Hp && GetMonData(GetBattlerMon(battler), MON_DATA_HP) == 0) return FALSE; return TRUE; } @@ -1483,7 +1485,7 @@ void TranslateAnimSpriteToTargetMonLocation(struct Sprite *sprite) coordType = BATTLER_COORD_Y; InitSpritePosToAnimAttacker(sprite, respectMonPicOffsets); - if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + if (!IsOnPlayerSide(gBattleAnimAttacker)) gBattleAnimArgs[2] = -gBattleAnimArgs[2]; sprite->data[0] = gBattleAnimArgs[4]; @@ -1502,7 +1504,7 @@ void TranslateAnimSpriteToTargetMonLocation(struct Sprite *sprite) void AnimThrowProjectile(struct Sprite *sprite) { InitSpritePosToAnimAttacker(sprite, TRUE); - if (GetBattlerSide(gBattleAnimAttacker)) + if (!IsOnPlayerSide(gBattleAnimAttacker)) gBattleAnimArgs[2] = -gBattleAnimArgs[2]; sprite->data[0] = gBattleAnimArgs[4]; sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + gBattleAnimArgs[2]; @@ -1520,32 +1522,32 @@ static void AnimThrowProjectile_Step(struct Sprite *sprite) void AnimTravelDiagonally(struct Sprite *sprite) { - bool8 respectMonPicOffsets; + bool8 respectOffsets; u8 battler, coordType; if (!gBattleAnimArgs[6]) { - respectMonPicOffsets = TRUE; + respectOffsets = TRUE; coordType = BATTLER_COORD_Y_PIC_OFFSET; } else { - respectMonPicOffsets = FALSE; + respectOffsets = FALSE; coordType = BATTLER_COORD_Y; } if (gBattleAnimArgs[5] == ANIM_ATTACKER) { - InitSpritePosToAnimAttacker(sprite, respectMonPicOffsets); + InitSpritePosToAnimAttacker(sprite, respectOffsets); battler = gBattleAnimAttacker; } else { - InitSpritePosToAnimTarget(sprite, respectMonPicOffsets); + InitSpritePosToAnimTarget(sprite, respectOffsets); battler = gBattleAnimTarget; } - if (GetBattlerSide(gBattleAnimAttacker)) + if (!IsOnPlayerSide(gBattleAnimAttacker)) gBattleAnimArgs[2] = -gBattleAnimArgs[2]; - InitSpritePosToAnimTarget(sprite, respectMonPicOffsets); + InitSpritePosToAnimTarget(sprite, respectOffsets); sprite->data[0] = gBattleAnimArgs[4]; sprite->data[2] = GetBattlerSpriteCoord(battler, BATTLER_COORD_X_2) + gBattleAnimArgs[2]; sprite->data[4] = GetBattlerSpriteCoord(battler, coordType) + gBattleAnimArgs[3]; @@ -1849,11 +1851,11 @@ static u16 GetBattlerYDeltaFromSpriteId(u8 spriteId) { spriteInfo = gBattleSpritesDataPtr->battlerData; if (!spriteInfo[battler].transformSpecies) - species = GetMonData(GetPartyBattlerData(i), MON_DATA_SPECIES); + species = GetMonData(GetBattlerMon(i), MON_DATA_SPECIES); else species = spriteInfo[battler].transformSpecies; - if (GetBattlerSide(i) == B_SIDE_PLAYER) + if (IsOnPlayerSide(i)) return gSpeciesInfo[species].backPicYOffset; else return gSpeciesInfo[species].frontPicYOffset; @@ -2015,7 +2017,7 @@ u8 CreateAdditionalMonSpriteForMoveAnim(u16 species, bool8 isBackpic, u8 id, s16 gMonSpritesGfxPtr->buffer = AllocZeroed(MON_PIC_SIZE * MAX_MON_PIC_FRAMES); if (!isBackpic) { - LoadCompressedPalette(GetMonSpritePalFromSpeciesAndPersonality(species, isShiny, personality), OBJ_PLTT_ID(palette), PLTT_SIZE_4BPP); + LoadPalette(GetMonSpritePalFromSpeciesAndPersonality(species, isShiny, personality), OBJ_PLTT_ID(palette), PLTT_SIZE_4BPP); LoadSpecialPokePic(gMonSpritesGfxPtr->buffer, species, personality, @@ -2023,7 +2025,7 @@ u8 CreateAdditionalMonSpriteForMoveAnim(u16 species, bool8 isBackpic, u8 id, s16 } else { - LoadCompressedPalette(GetMonSpritePalFromSpeciesAndPersonality(species, isShiny, personality), OBJ_PLTT_ID(palette), PLTT_SIZE_4BPP); + LoadPalette(GetMonSpritePalFromSpeciesAndPersonality(species, isShiny, personality), OBJ_PLTT_ID(palette), PLTT_SIZE_4BPP); LoadSpecialPokePic(gMonSpritesGfxPtr->buffer, species, personality, @@ -2080,7 +2082,7 @@ s16 GetBattlerSpriteCoordAttr(u8 battler, u8 attr) } else { - struct Pokemon *mon = GetPartyBattlerData(battler); + struct Pokemon *mon = GetBattlerMon(battler); spriteInfo = gBattleSpritesDataPtr->battlerData; if (!spriteInfo[battler].transformSpecies) @@ -2098,7 +2100,7 @@ s16 GetBattlerSpriteCoordAttr(u8 battler, u8 attr) if (species == SPECIES_UNOWN) species = GetUnownSpeciesId(personality); - if (GetBattlerSide(battler) == B_SIDE_PLAYER) + if (IsOnPlayerSide(battler)) { #if P_GENDER_DIFFERENCES if (gSpeciesInfo[species].backPicFemale != NULL && IsPersonalityFemale(species, personality)) @@ -2193,7 +2195,7 @@ u8 CreateInvisibleSpriteCopy(int battler, u8 spriteId, int species) void AnimTranslateLinearAndFlicker_Flipped(struct Sprite *sprite) { SetSpriteCoordsToAnimAttackerCoords(sprite); - if (GetBattlerSide(gBattleAnimAttacker)) + if (!IsOnPlayerSide(gBattleAnimAttacker)) { sprite->x -= gBattleAnimArgs[0]; gBattleAnimArgs[3] = -gBattleAnimArgs[3]; @@ -2215,7 +2217,7 @@ void AnimTranslateLinearAndFlicker_Flipped(struct Sprite *sprite) // Used by three different unused battle anim sprite templates. void AnimTranslateLinearAndFlicker(struct Sprite *sprite) { - if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + if (!IsOnPlayerSide(gBattleAnimAttacker)) { sprite->x -= gBattleAnimArgs[0]; gBattleAnimArgs[3] *= -1; @@ -2238,7 +2240,7 @@ void AnimTranslateLinearAndFlicker(struct Sprite *sprite) void AnimSpinningSparkle(struct Sprite *sprite) { SetSpriteCoordsToAnimAttackerCoords(sprite); - if (GetBattlerSide(gBattleAnimAttacker)) + if (!IsOnPlayerSide(gBattleAnimAttacker)) sprite->x -= gBattleAnimArgs[0]; else sprite->x += gBattleAnimArgs[0]; @@ -2270,7 +2272,7 @@ void AnimTask_AttackerPunchWithTrace(u8 taskId) struct Task *task = &gTasks[taskId]; task->tBattlerSpriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER); - task->tMoveSpeed = (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) ? -8 : 8; + task->tMoveSpeed = (!IsOnPlayerSide(gBattleAnimAttacker)) ? -8 : 8; task->tState = 0; task->tCounter = 0; gSprites[task->tBattlerSpriteId].x2 -= task->tBattlerSpriteId; @@ -2369,7 +2371,7 @@ void AnimWeatherBallUp(struct Sprite *sprite) { sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); - if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) + if (IsOnPlayerSide(gBattleAnimAttacker)) sprite->data[0] = 5; else sprite->data[0] = -10; @@ -2395,7 +2397,7 @@ void AnimWeatherBallDown(struct Sprite *sprite) sprite->data[0] = gBattleAnimArgs[2]; sprite->data[2] = sprite->x + gBattleAnimArgs[4]; sprite->data[4] = sprite->y + gBattleAnimArgs[5]; - if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER) + if (IsOnPlayerSide(gBattleAnimTarget)) { x = (u16)gBattleAnimArgs[4] + 30; sprite->x += x; diff --git a/src/battle_anim_new.c b/src/battle_anim_new.c index edb555c4bc..40d3602e6c 100644 --- a/src/battle_anim_new.c +++ b/src/battle_anim_new.c @@ -7279,6 +7279,28 @@ const struct SpriteTemplate gMoonUpSpriteTemplate = .callback = AnimWeatherBallUp, }; +const struct SpriteTemplate gAlphaGeyserSpriteTemplate = +{ + .tileTag = ANIM_TAG_HYDRO_PUMP, + .paletteTag = ANIM_TAG_HYDRO_PUMP, + .oam = &gOamData_AffineOff_ObjBlend_16x16, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gSpriteAffineAnimTable_PrimalSymbol, + .callback = SpriteCB_Geyser, +}; + +const struct SpriteTemplate gOmegaGeyserSpriteTemplate = +{ + .tileTag = ANIM_TAG_SMALL_EMBER, + .paletteTag = ANIM_TAG_SMALL_EMBER, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = gAnims_BasicFire, + .images = NULL, + .affineAnims = gSpriteAffineAnimTable_PrimalSymbol, + .callback = SpriteCB_Geyser, +}; + const union AnimCmd gSproutAnimCmds[] = { ANIMCMD_FRAME(96, 5), @@ -7505,7 +7527,7 @@ static void SetSpriteCoordsToAnimTargetCoords(struct Sprite *sprite) static void AnimBlastBurnTargetPlume(struct Sprite *sprite) { SetSpriteCoordsToAnimTargetCoords(sprite); - if (GetBattlerSide(gBattleAnimTarget)) + if (!IsOnPlayerSide(gBattleAnimTarget)) { sprite->x -= gBattleAnimArgs[0]; sprite->y += gBattleAnimArgs[1]; @@ -7538,28 +7560,28 @@ static void AnimBlastBurnTargetPlume_Step1(struct Sprite *sprite) static void SpriteCB_SpriteToCentreOfSide(struct Sprite *sprite) { - bool8 var; + bool8 respectMonPicOffsets; if (!sprite->data[0]) { if (!gBattleAnimArgs[3]) - var = TRUE; + respectMonPicOffsets = TRUE; else - var = FALSE; + respectMonPicOffsets = FALSE; if (gBattleAnimArgs[2] == 0) //Attacker { if (IsDoubleBattle()) - InitSpritePosToAnimAttackersCentre(sprite, var); + InitSpritePosToAnimAttackersCentre(sprite, respectMonPicOffsets); else - InitSpritePosToAnimAttacker(sprite, var); + InitSpritePosToAnimAttacker(sprite, respectMonPicOffsets); } else { if (IsDoubleBattle()) - InitSpritePosToAnimTargetsCentre(sprite, var); + InitSpritePosToAnimTargetsCentre(sprite, respectMonPicOffsets); else - InitSpritePosToAnimTarget(sprite, var); + InitSpritePosToAnimTarget(sprite, respectMonPicOffsets); } sprite->data[0]++; @@ -7580,8 +7602,8 @@ static void SpriteCB_SpriteOnMonForDuration(struct Sprite *sprite) } else { - sprite->x = GetBattlerSpriteCoord(target, 0); - sprite->y = GetBattlerSpriteCoord(target, 1); + sprite->x = GetBattlerSpriteCoord(target, BATTLER_COORD_X); + sprite->y = GetBattlerSpriteCoord(target, BATTLER_COORD_Y); sprite->x += gBattleAnimArgs[1]; sprite->y += gBattleAnimArgs[2]; sprite->data[0] = 0; @@ -7594,13 +7616,13 @@ static void SpriteCB_SpriteOnMonForDuration(struct Sprite *sprite) static void SpriteCB_ToxicThreadWrap(struct Sprite *sprite) { - if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + if (!IsOnPlayerSide(gBattleAnimAttacker)) sprite->x -= gBattleAnimArgs[0]; else sprite->x += gBattleAnimArgs[0]; sprite->y += gBattleAnimArgs[1]; - if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER) + if (IsOnPlayerSide(gBattleAnimTarget)) sprite->y += 8; sprite->callback = AnimStringWrap_Step; @@ -7613,8 +7635,8 @@ static void SpriteCB_GrowingSuperpower(struct Sprite *sprite) if (gBattleAnimArgs[0] == 0) { - sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2); - sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3); + sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); + sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); battler = gBattleAnimTarget; sprite->oam.priority = GetBattlerSpriteBGPriority(gBattleAnimAttacker); } @@ -7624,14 +7646,14 @@ static void SpriteCB_GrowingSuperpower(struct Sprite *sprite) sprite->oam.priority = GetBattlerSpriteBGPriority(gBattleAnimTarget); } - if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_OPPONENT) + if (!IsOnPlayerSide(gBattleAnimAttacker)) StartSpriteAffineAnim(sprite, 1); sprite->data[0] = 16; sprite->data[1] = sprite->x; - sprite->data[2] = GetBattlerSpriteCoord(battler, 2); + sprite->data[2] = GetBattlerSpriteCoord(battler, BATTLER_COORD_X_2); sprite->data[3] = sprite->y; - sprite->data[4] = GetBattlerSpriteCoord(battler, 3); + sprite->data[4] = GetBattlerSpriteCoord(battler, BATTLER_COORD_Y_PIC_OFFSET); InitAnimLinearTranslation(sprite); StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); @@ -7698,22 +7720,22 @@ static void SpriteCB_CoreEnforcerBeam(struct Sprite *sprite) static void SpriteCB_TranslateAnimSpriteToTargetMonLocationDoubles(struct Sprite *sprite) { - bool8 v1; + bool8 respectMonPicOffsets; u8 target; u8 coordType; if (!(gBattleAnimArgs[5] & 0xff00)) - v1 = TRUE; + respectMonPicOffsets = TRUE; else - v1 = FALSE; + respectMonPicOffsets = FALSE; if (!(gBattleAnimArgs[5] & 0xff)) coordType = BATTLER_COORD_Y_PIC_OFFSET; else coordType = BATTLER_COORD_Y; - InitSpritePosToAnimAttacker(sprite, v1); - if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + InitSpritePosToAnimAttacker(sprite, respectMonPicOffsets); + if (!IsOnPlayerSide(gBattleAnimAttacker)) gBattleAnimArgs[2] = -gBattleAnimArgs[2]; target = LoadBattleAnimTarget(6); @@ -7750,7 +7772,7 @@ static void SpriteCB_FallingObject(struct Sprite *sprite) sprite->y = gBattleAnimArgs[1]; sprite->y2 = -gBattleAnimArgs[1]; - if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER) + if (IsOnPlayerSide(gBattleAnimTarget)) { sprite->y += 45; sprite->y2 -= 45; @@ -7786,7 +7808,7 @@ static void SpriteCB_FallingObjectStep(struct Sprite *sprite) static void SpriteCB_SunsteelStrikeRings(struct Sprite *sprite) { - if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + if (!IsOnPlayerSide(gBattleAnimAttacker)) { sprite->x = 272; sprite->y = -32; @@ -7836,8 +7858,8 @@ static void SpriteCB_MindBlownBall(struct Sprite *sprite) { s16 oldPosX = sprite->x; s16 oldPosY = sprite->y; - sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2); - sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3); + sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); + sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); sprite->data[0] = 0; sprite->data[1] = gBattleAnimArgs[0]; sprite->data[2] = gBattleAnimArgs[1]; @@ -8068,10 +8090,10 @@ static void SpriteCB_PyroBallRockBounceStep(struct Sprite *sprite) static void InitSpritePositionForPyroBall(struct Sprite *sprite) { - InitSpritePosToAnimAttacker(sprite, 0); + InitSpritePosToAnimAttacker(sprite, FALSE); sprite->y += 20; //Move closer to attacker's feet - if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) + if (IsOnPlayerSide(gBattleAnimAttacker)) sprite->y += 20; //Move below the text box } @@ -8096,7 +8118,7 @@ static void SpriteCB_PyroBallLaunch(struct Sprite *sprite) { InitSpritePositionForPyroBall(sprite); - if (GetBattlerSide(gBattleAnimAttacker)) + if (!IsOnPlayerSide(gBattleAnimAttacker)) gBattleAnimArgs[2] = -gBattleAnimArgs[2]; sprite->data[0] = gBattleAnimArgs[4]; @@ -8119,7 +8141,7 @@ static void SpriteCB_AcidLaunchSingleTarget(struct Sprite *sprite) InitSpritePosToAnimTarget(sprite, TRUE); l1 = sprite->x; l2 = sprite->y; InitSpritePosToAnimAttacker(sprite, TRUE); - if (GetBattlerSide(gBattleAnimAttacker)) + if (!IsOnPlayerSide(gBattleAnimAttacker)) gBattleAnimArgs[4] = -gBattleAnimArgs[4]; sprite->data[0] = gBattleAnimArgs[2]; @@ -8133,7 +8155,7 @@ static void SpriteCB_AcidLaunchSingleTarget(struct Sprite *sprite) //Causes acid to drip down a single target. static void SpriteCB_AcidDripSingleTarget(struct Sprite *sprite) { - if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + if (!IsOnPlayerSide(gBattleAnimAttacker)) gBattleAnimArgs[0] = -gBattleAnimArgs[0]; sprite->x += gBattleAnimArgs[0]; @@ -8212,8 +8234,8 @@ static void SpriteCB_AnimSpriteOnSelectedMonPos(struct Sprite *sprite) static void SpriteCB_SurroundingRing(struct Sprite *sprite) { - sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0); - sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1) + 40; + sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X); + sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y) + 40; sprite->data[0] = 13; sprite->data[2] = sprite->x; @@ -8327,8 +8349,8 @@ static void AnimHappyHourCoinShower(struct Sprite *sprite) //arg 2: initial y pixel offset static void SpriteCB_Geyser(struct Sprite *sprite) { - sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) + gBattleAnimArgs[1]; - sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + gBattleAnimArgs[2]; + sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2) + gBattleAnimArgs[1]; + sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[2]; sprite->data[0] = gBattleAnimArgs[1] > 0 ? 1 : -1; sprite->callback = AnimMudSportDirtRising; @@ -8340,8 +8362,8 @@ static void SpriteCB_Geyser(struct Sprite *sprite) //arg 2: initial y pixel offset static void SpriteCB_GeyserTarget(struct Sprite *sprite) { - sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + gBattleAnimArgs[1]; - sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + gBattleAnimArgs[2]; + sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + gBattleAnimArgs[1]; + sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[2]; sprite->data[0] = gBattleAnimArgs[1] > 0 ? 1 : -1; sprite->callback = AnimMudSportDirtRising; @@ -8350,7 +8372,7 @@ static void SpriteCB_GeyserTarget(struct Sprite *sprite) //// Anim Tasks Functions void AnimTask_IsAttackerPlayerSide(u8 taskId) { - if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_OPPONENT) + if (!IsOnPlayerSide(gBattleAnimAttacker)) gBattleAnimArgs[7] = 0; else gBattleAnimArgs[7] = 1; @@ -8574,12 +8596,12 @@ void AnimTask_GetTimeOfDay(u8 taskId) void AnimTask_GetLycanrocForm(u8 taskId) { - if (GetMonData(GetIllusionMonPtr(gBattleAnimAttacker), MON_DATA_SPECIES) == SPECIES_LYCANROC_MIDNIGHT) - gBattleAnimArgs[0] = 1; - else - gBattleAnimArgs[0] = 0; - gBattleAnimArgs[0] = 0; + if (gBattleMons[gBattleAnimAttacker].species == SPECIES_LYCANROC_MIDNIGHT) + gBattleAnimArgs[0] = 1; + else if (gBattleMons[gBattleAnimAttacker].species == SPECIES_LYCANROC_DUSK) + gBattleAnimArgs[0] = 2; + DestroyAnimVisualTask(taskId); } @@ -8781,7 +8803,7 @@ static void SpriteCB_PowerShiftBall(struct Sprite* sprite) { InitSpritePosToAnimAttacker(sprite, TRUE); - if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_OPPONENT) + if (!IsOnPlayerSide(gBattleAnimAttacker)) gBattleAnimArgs[2] *= -1; //Flip X sprite->data[0] = gBattleAnimArgs[4]; //Duration @@ -8837,7 +8859,7 @@ void SpriteCB_HorizontalSliceStep(struct Sprite *sprite) //arg 2: flip static void SpriteCB_LashOutStrike(struct Sprite* sprite) { - bool8 flip = GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER; + bool8 flip = IsOnPlayerSide(gBattleAnimTarget); if (gBattleAnimArgs[2]) flip ^= 1; @@ -8965,13 +8987,13 @@ static void SpriteCB_MoveSpriteUpwardsForDuration(struct Sprite* sprite) { if (gBattleAnimArgs[0] == ANIM_ATTACKER) { - sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0) + gBattleAnimArgs[1]; - sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1) + gBattleAnimArgs[2]; + sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X) + gBattleAnimArgs[1]; + sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y) + gBattleAnimArgs[2]; } else { - sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, 0) + gBattleAnimArgs[1]; - sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 1) + gBattleAnimArgs[2]; + sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X) + gBattleAnimArgs[1]; + sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y) + gBattleAnimArgs[2]; } sprite->data[0] = 0; @@ -9088,7 +9110,7 @@ static void SpriteCB_DragonEnergyShot(struct Sprite* sprite) y /= 2; } - if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_OPPONENT) + if (!IsOnPlayerSide(gBattleAnimTarget)) { startingX = 0; finishingX = 255; @@ -9202,7 +9224,7 @@ static void SpriteCB_GlacialLance_Step2(struct Sprite* sprite) { if (sprite->data[7]++ >= sprite->data[6]) { - if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER) + if (IsOnPlayerSide(gBattleAnimTarget)) StartSpriteAffineAnim(sprite, 2); else StartSpriteAffineAnim(sprite, 1); @@ -9281,8 +9303,8 @@ void AnimTask_GetWeatherToSet(u8 taskId) void AnimTask_SyrupBomb(u8 taskId) { - struct Pokemon *party = GetBattlerParty(gBattleAnimAttacker); - gBattleAnimArgs[0] = IsMonShiny(&party[gBattlerPartyIndexes[gBattleAnimAttacker]]); + struct Pokemon *mon = GetBattlerMon(gBattleAnimAttacker); + gBattleAnimArgs[0] = IsMonShiny(mon); DestroyAnimVisualTask(taskId); } @@ -9301,3 +9323,50 @@ void AnimTask_RandomBool(u8 taskId) DestroyAnimVisualTask(taskId); } + +// Credit to Skeli +#define PRIMAL_PULSE_SCALE_SIZE 16 +#define PRIMAL_PULSE_FRAME_COUNT 4 +static const union AffineAnimCmd sSpriteAffineAnim_PrimalSymbol[] = +{ + AFFINEANIMCMD_FRAME(16, 16, 0, 0), + AFFINEANIMCMD_FRAME(32, 32, 0, 15), + AFFINEANIMCMD_FRAME(0, 0, 0, 2), + AFFINEANIMCMD_FRAME(-PRIMAL_PULSE_SCALE_SIZE, -PRIMAL_PULSE_SCALE_SIZE, 0, PRIMAL_PULSE_FRAME_COUNT), + AFFINEANIMCMD_FRAME( PRIMAL_PULSE_SCALE_SIZE, PRIMAL_PULSE_SCALE_SIZE, 0, PRIMAL_PULSE_FRAME_COUNT), + AFFINEANIMCMD_FRAME(-PRIMAL_PULSE_SCALE_SIZE, -PRIMAL_PULSE_SCALE_SIZE, 0, PRIMAL_PULSE_FRAME_COUNT), + AFFINEANIMCMD_FRAME( PRIMAL_PULSE_SCALE_SIZE, PRIMAL_PULSE_SCALE_SIZE, 0, PRIMAL_PULSE_FRAME_COUNT), + AFFINEANIMCMD_FRAME(-PRIMAL_PULSE_SCALE_SIZE, -PRIMAL_PULSE_SCALE_SIZE, 0, PRIMAL_PULSE_FRAME_COUNT), + AFFINEANIMCMD_FRAME( PRIMAL_PULSE_SCALE_SIZE, PRIMAL_PULSE_SCALE_SIZE, 0, PRIMAL_PULSE_FRAME_COUNT), + AFFINEANIMCMD_FRAME(-PRIMAL_PULSE_SCALE_SIZE, -PRIMAL_PULSE_SCALE_SIZE, 0, PRIMAL_PULSE_FRAME_COUNT), + AFFINEANIMCMD_FRAME( PRIMAL_PULSE_SCALE_SIZE, PRIMAL_PULSE_SCALE_SIZE, 0, PRIMAL_PULSE_FRAME_COUNT), + AFFINEANIMCMD_FRAME(-32, -32, 0, 15), //Shrink down again + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd *const gSpriteAffineAnimTable_PrimalSymbol[] = +{ + sSpriteAffineAnim_PrimalSymbol, +}; + +static const union AffineAnimCmd sSpriteAffineAnim_MegaSymbol[] = +{ + AFFINEANIMCMD_FRAME(16, 16, 0, 0), //Start small + AFFINEANIMCMD_FRAME(32, 32, 0, 15), //Grow sprite + AFFINEANIMCMD_FRAME(0, 0, 0, 2), //Pause + + //Pulsate + AFFINEANIMCMD_FRAME(-PRIMAL_PULSE_SCALE_SIZE, -PRIMAL_PULSE_SCALE_SIZE, 0, PRIMAL_PULSE_FRAME_COUNT), + AFFINEANIMCMD_FRAME( PRIMAL_PULSE_SCALE_SIZE, PRIMAL_PULSE_SCALE_SIZE, 0, PRIMAL_PULSE_FRAME_COUNT), + AFFINEANIMCMD_FRAME(-PRIMAL_PULSE_SCALE_SIZE, -PRIMAL_PULSE_SCALE_SIZE, 0, PRIMAL_PULSE_FRAME_COUNT), + AFFINEANIMCMD_FRAME( PRIMAL_PULSE_SCALE_SIZE, PRIMAL_PULSE_SCALE_SIZE, 0, PRIMAL_PULSE_FRAME_COUNT), + AFFINEANIMCMD_FRAME(-PRIMAL_PULSE_SCALE_SIZE, -PRIMAL_PULSE_SCALE_SIZE, 0, PRIMAL_PULSE_FRAME_COUNT), + AFFINEANIMCMD_FRAME( PRIMAL_PULSE_SCALE_SIZE, PRIMAL_PULSE_SCALE_SIZE, 0, PRIMAL_PULSE_FRAME_COUNT), + AFFINEANIMCMD_FRAME(-32, -32, 0, 15), //Shrink down again + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd* const gSpriteAffineAnimTable_MegaSymbol[] = +{ + sSpriteAffineAnim_MegaSymbol, +}; diff --git a/src/battle_anim_normal.c b/src/battle_anim_normal.c index f825c717a5..cc55e63b0d 100644 --- a/src/battle_anim_normal.c +++ b/src/battle_anim_normal.c @@ -349,7 +349,7 @@ static void AnimConfusionDuck(struct Sprite *sprite) sprite->x += gBattleAnimArgs[0]; sprite->y += gBattleAnimArgs[1]; sprite->data[0] = gBattleAnimArgs[2]; - if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + if (!IsOnPlayerSide(gBattleAnimAttacker)) { sprite->data[1] = -gBattleAnimArgs[3]; sprite->data[4] = 1; @@ -1079,7 +1079,7 @@ static void AnimHitSplatPersistent(struct Sprite *sprite) // Used by Twineedle and Spike Cannon static void AnimHitSplatHandleInvert(struct Sprite *sprite) { - if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER && !IsContest()) + if (!IsOnPlayerSide(gBattleAnimAttacker) && !IsContest()) gBattleAnimArgs[1] = -gBattleAnimArgs[1]; AnimHitSplatBasic(sprite); diff --git a/src/battle_anim_poison.c b/src/battle_anim_poison.c index a75ce87087..39f30708c4 100644 --- a/src/battle_anim_poison.c +++ b/src/battle_anim_poison.c @@ -442,9 +442,9 @@ static void AnimGunkShotParticles(struct Sprite *sprite) InitSpritePosToAnimAttacker(sprite, TRUE); sprite->data[0] = 30; sprite->data[1] = sprite->x; - sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2); + sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); sprite->data[3] = sprite->y; - sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3); + sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); InitAnimLinearTranslation(sprite); sprite->data[5] = 0xD200 / sprite->data[0]; sprite->data[7] = gBattleAnimArgs[3]; @@ -485,7 +485,7 @@ static void AnimSuckerPunch(struct Sprite *sprite) InitSpritePosToAnimTarget(sprite, TRUE); - if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + if (!IsOnPlayerSide(gBattleAnimAttacker)) gBattleAnimArgs[2] = -gBattleAnimArgs[2]; sprite->data[0] = gBattleAnimArgs[3]; @@ -551,7 +551,7 @@ static void AnimAcidPoisonBubble(struct Sprite *sprite) else l1 = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2), l2 = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); - if (GetBattlerSide(gBattleAnimAttacker)) + if (!IsOnPlayerSide(gBattleAnimAttacker)) gBattleAnimArgs[4] = -gBattleAnimArgs[4]; sprite->data[0] = gBattleAnimArgs[2]; @@ -602,7 +602,7 @@ static void AnimAcidPoisonDroplet(struct Sprite *sprite) if (gBattleAnimArgs[5]) SetAverageBattlerPositions(gBattleAnimTarget, TRUE, &sprite->x, &sprite->y); - if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + if (!IsOnPlayerSide(gBattleAnimAttacker)) gBattleAnimArgs[0] = -gBattleAnimArgs[0]; sprite->x += gBattleAnimArgs[0]; @@ -632,7 +632,7 @@ void AnimBubbleEffect(struct Sprite *sprite) { SetAverageBattlerPositions(gBattleAnimTarget, TRUE, &sprite->x, &sprite->y); - if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + if (!IsOnPlayerSide(gBattleAnimAttacker)) gBattleAnimArgs[0] = -gBattleAnimArgs[0]; sprite->x += gBattleAnimArgs[0]; diff --git a/src/battle_anim_psychic.c b/src/battle_anim_psychic.c index b7e023c9ad..141bbb1168 100644 --- a/src/battle_anim_psychic.c +++ b/src/battle_anim_psychic.c @@ -493,7 +493,7 @@ static void AnimPsychoCut(struct Sprite *sprite) } else { - if (GetBattlerSide(gBattleAnimAttacker)) + if (!IsOnPlayerSide(gBattleAnimAttacker)) { gBattleAnimArgs[2] = -gBattleAnimArgs[2]; gBattleAnimArgs[1] = -gBattleAnimArgs[1]; @@ -516,10 +516,10 @@ static void AnimPsychoCut(struct Sprite *sprite) } } - InitSpritePosToAnimAttacker(sprite, 1); + InitSpritePosToAnimAttacker(sprite, TRUE); - lVarX = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + gBattleAnimArgs[2]; - lVarY = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + gBattleAnimArgs[3]; + lVarX = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + gBattleAnimArgs[2]; + lVarY = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[3]; rot = ArcTan2Neg(lVarX - sprite->x, lVarY - sprite->y); rot += 0xC000; TrySetSpriteRotScale(sprite, FALSE, 0x100, 0x100, rot); @@ -536,13 +536,13 @@ static void AnimateZenHeadbutt(struct Sprite *sprite) { if (gBattleAnimArgs[0] == 0) { - sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2); - sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + 18; + sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); + sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET) + 18; } else { - sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, 2); - sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + 18; + sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); + sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + 18; } StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix); @@ -554,7 +554,7 @@ static void AnimDefensiveWall(struct Sprite *sprite) { u8 isContest = IsContest(); - if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER || isContest) + if (IsOnPlayerSide(gBattleAnimAttacker) || isContest) { sprite->oam.priority = 2; sprite->subpriority = 200; @@ -578,7 +578,7 @@ static void AnimDefensiveWall(struct Sprite *sprite) if (!isContest && IsDoubleBattle()) { - if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) + if (IsOnPlayerSide(gBattleAnimAttacker)) { sprite->x = 72; sprite->y = 80; @@ -591,7 +591,7 @@ static void AnimDefensiveWall(struct Sprite *sprite) } else { - if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + if (!IsOnPlayerSide(gBattleAnimAttacker)) gBattleAnimArgs[0] = -gBattleAnimArgs[0]; sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X) + gBattleAnimArgs[0]; @@ -720,7 +720,7 @@ static void AnimWallSparkle(struct Sprite *sprite) if (!IsContest() && IsDoubleBattle()) { - if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) + if (IsOnPlayerSide(gBattleAnimAttacker)) { sprite->x = 72 - gBattleAnimArgs[0]; sprite->y = gBattleAnimArgs[1] + 80; @@ -753,7 +753,7 @@ static void AnimBentSpoon(struct Sprite *sprite) sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); - if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + if (!IsOnPlayerSide(gBattleAnimAttacker)) { StartSpriteAnim(sprite, 1); sprite->x -= 40; @@ -777,7 +777,7 @@ static void AnimQuestionMark(struct Sprite *sprite) s16 x = GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_WIDTH) / 2; s16 y = GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_HEIGHT) / -2; - if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_OPPONENT) + if (!IsOnPlayerSide(gBattleAnimAttacker)) x = -x; sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2) + x; @@ -841,7 +841,7 @@ void AnimTask_Teleport(u8 taskId) task->data[0] = spriteId; task->data[1] = 0; task->data[2] = 0; - task->data[3] = GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER ? 4 : 8; + task->data[3] = !IsOnPlayerSide(gBattleAnimAttacker) ? 4 : 8; PrepareAffineAnimInTaskData(task, task->data[0], sAffineAnim_Teleport); task->func = AnimTask_Teleport_Step; diff --git a/src/battle_anim_rock.c b/src/battle_anim_rock.c index 13f05567f0..4ac83e4446 100644 --- a/src/battle_anim_rock.c +++ b/src/battle_anim_rock.c @@ -378,7 +378,7 @@ static void AnimStealthRock(struct Sprite *sprite) InitSpritePosToAnimAttacker(sprite, TRUE); SetAverageBattlerPositions(gBattleAnimTarget, FALSE, &x, &y); - if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + if (!IsOnPlayerSide(gBattleAnimAttacker)) gBattleAnimArgs[2] = -gBattleAnimArgs[2]; sprite->data[0] = gBattleAnimArgs[4]; @@ -454,7 +454,7 @@ void AnimRockFragment(struct Sprite *sprite) StartSpriteAnim(sprite, gBattleAnimArgs[5]); AnimateSprite(sprite); - if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + if (!IsOnPlayerSide(gBattleAnimAttacker)) sprite->x -= gBattleAnimArgs[0]; else sprite->x += gBattleAnimArgs[0]; @@ -485,11 +485,7 @@ void AnimRockFragment(struct Sprite *sprite) // args[6] - attacker or target void AnimParticleInVortex(struct Sprite *sprite) { - if (IsDoubleBattle() - && (gAnimMoveIndex == MOVE_BLEAKWIND_STORM - || gAnimMoveIndex == MOVE_SANDSEAR_STORM - || gAnimMoveIndex == MOVE_SPRINGTIDE_STORM - || gAnimMoveIndex == MOVE_WILDBOLT_STORM)) + if (IsDoubleBattle() && GetMoveTarget(gAnimMoveIndex) == MOVE_TARGET_BOTH) InitSpritePosToAnimTargetsCentre(sprite, FALSE); else InitSpritePosToAnimBattler(gBattleAnimArgs[6], sprite, FALSE); @@ -542,9 +538,9 @@ void AnimTask_LoadSandstormBackground(u8 taskId) GetBattleAnimBg1Data(&animBg); AnimLoadCompressedBgGfx(animBg.bgId, gBattleAnimBgImage_Sandstorm, animBg.tilesOffset); AnimLoadCompressedBgTilemapHandleContest(&animBg, gBattleAnimBgTilemap_Sandstorm, FALSE); - LoadCompressedPalette(gBattleAnimSpritePal_FlyingDirt, BG_PLTT_ID(animBg.paletteId), PLTT_SIZE_4BPP); + LoadPalette(gBattleAnimSpritePal_FlyingDirt, BG_PLTT_ID(animBg.paletteId), PLTT_SIZE_4BPP); - if (gBattleAnimArgs[0] && GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + if (gBattleAnimArgs[0] && !IsOnPlayerSide(gBattleAnimAttacker)) var0 = 1; gTasks[taskId].data[0] = var0; @@ -641,7 +637,7 @@ void AnimFlyingSandCrescent(struct Sprite *sprite) { if (sprite->sState == 0) { - if (gBattleAnimArgs[3] != 0 && GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + if (gBattleAnimArgs[3] != 0 && !IsOnPlayerSide(gBattleAnimAttacker)) { sprite->x = DISPLAY_WIDTH + 64; gBattleAnimArgs[1] = -gBattleAnimArgs[1]; @@ -764,10 +760,10 @@ void AnimTask_TectonicRageRollout(u8 taskId) task = &gTasks[taskId]; - var0 = GetBattlerSpriteCoord(gBattleAnimAttacker, 2); - var1 = GetBattlerSpriteCoord(gBattleAnimAttacker, 1) + 24; - var2 = GetBattlerSpriteCoord(gBattleAnimTarget, 2); - var3 = GetBattlerSpriteCoord(gBattleAnimTarget, 1) + 24; + var0 = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); + var1 = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y) + 24; + var2 = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); + var3 = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y) + 24; if (BATTLE_PARTNER(gBattleAnimAttacker) == gBattleAnimTarget) var3 = var1; @@ -974,7 +970,7 @@ static void AnimRockTomb_Step(struct Sprite *sprite) void AnimRockBlastRock(struct Sprite *sprite) { - if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_OPPONENT) + if (!IsOnPlayerSide(gBattleAnimAttacker)) StartSpriteAffineAnim(sprite, 1); TranslateAnimSpriteToTargetMonLocation(sprite); diff --git a/src/battle_anim_smokescreen.c b/src/battle_anim_smokescreen.c index 12fe97b993..8272b4b010 100644 --- a/src/battle_anim_smokescreen.c +++ b/src/battle_anim_smokescreen.c @@ -19,7 +19,7 @@ static const struct CompressedSpriteSheet sSmokescreenImpactSpriteSheet = .data = gSmokescreenImpactTiles, .size = 0x180, .tag = TAG_SMOKESCREEN }; -static const struct CompressedSpritePalette sSmokescreenImpactSpritePalette = +static const struct SpritePalette sSmokescreenImpactSpritePalette = { .data = gSmokescreenImpactPalette, .tag = TAG_SMOKESCREEN }; @@ -106,7 +106,7 @@ u8 SmokescreenImpact(s16 x, s16 y, bool8 persist) if (GetSpriteTileStartByTag(sSmokescreenImpactSpriteSheet.tag) == 0xFFFF) { LoadCompressedSpriteSheetUsingHeap(&sSmokescreenImpactSpriteSheet); - LoadCompressedSpritePaletteUsingHeap(&sSmokescreenImpactSpritePalette); + LoadSpritePalette(&sSmokescreenImpactSpritePalette); } mainSpriteId = CreateInvisibleSpriteWithCallback(SpriteCB_SmokescreenImpactMain); diff --git a/src/battle_anim_status_effects.c b/src/battle_anim_status_effects.c index 5df7b24980..b70f481d6c 100644 --- a/src/battle_anim_status_effects.c +++ b/src/battle_anim_status_effects.c @@ -12,7 +12,7 @@ #include "constants/rgb.h" extern const struct CompressedSpriteSheet gBattleAnimPicTable[]; -extern const struct CompressedSpritePalette gBattleAnimPaletteTable[]; +extern const struct SpritePalette gBattleAnimPaletteTable[]; extern const struct OamData gOamData_AffineOff_ObjNormal_8x8; extern const struct OamData gOamData_AffineOff_ObjBlend_64x64; @@ -277,7 +277,7 @@ static u8 UNUSED Task_FlashingCircleImpacts(u8 battler, bool8 red) u8 i; LoadCompressedSpriteSheetUsingHeap(&gBattleAnimPicTable[GET_TRUE_SPRITE_INDEX(ANIM_TAG_CIRCLE_IMPACT)]); - LoadCompressedSpritePaletteUsingHeap(&gBattleAnimPaletteTable[GET_TRUE_SPRITE_INDEX(ANIM_TAG_CIRCLE_IMPACT)]); + LoadSpritePalette(&gBattleAnimPaletteTable[GET_TRUE_SPRITE_INDEX(ANIM_TAG_CIRCLE_IMPACT)]); gTasks[taskId].data[0] = battler; if (red) { diff --git a/src/battle_anim_throw.c b/src/battle_anim_throw.c index 0ede51954a..fe27b7138a 100644 --- a/src/battle_anim_throw.c +++ b/src/battle_anim_throw.c @@ -189,7 +189,7 @@ static const struct CompressedSpriteSheet sBallParticleSpriteSheets[] = [BALL_CHERISH] = {gBattleAnimSpriteGfx_Particles2, 0x100, TAG_PARTICLES_CHERISHBALL}, }; -static const struct CompressedSpritePalette sBallParticlePalettes[] = +static const struct SpritePalette sBallParticlePalettes[] = { [BALL_STRANGE] = {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_STRANGEBALL}, [BALL_POKE] = {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_POKEBALL}, @@ -704,7 +704,7 @@ void AnimTask_UnusedLevelUpHealthBox(u8 taskId) GetBattleAnimBg1Data(&animBgData); AnimLoadCompressedBgTilemap(animBgData.bgId, UnusedLevelupAnimationTilemap); AnimLoadCompressedBgGfx(animBgData.bgId, UnusedLevelupAnimationGfx, animBgData.tilesOffset); - LoadCompressedPalette(gCureBubblesPal, BG_PLTT_ID(animBgData.paletteId), PLTT_SIZE_4BPP); + LoadPalette(gCureBubblesPal, BG_PLTT_ID(animBgData.paletteId), PLTT_SIZE_4BPP); gBattle_BG1_X = -gSprites[spriteId3].x + 32; gBattle_BG1_Y = -gSprites[spriteId3].y - 32; @@ -908,7 +908,7 @@ void AnimTask_SwitchOutBallEffect(u8 taskId) u32 selectedPalettes; spriteId = gBattlerSpriteIds[gBattleAnimAttacker]; - ballId = GetMonData(GetPartyBattlerData(gBattleAnimAttacker), MON_DATA_POKEBALL); + ballId = GetMonData(GetBattlerMon(gBattleAnimAttacker), MON_DATA_POKEBALL); switch (gTasks[taskId].data[0]) { @@ -1768,7 +1768,7 @@ static void LoadBallParticleGfx(u8 ballId) if (GetSpriteTileStartByTag(sBallParticleSpriteSheets[ballId].tag) == 0xFFFF) { LoadCompressedSpriteSheetUsingHeap(&sBallParticleSpriteSheets[ballId]); - LoadCompressedSpritePaletteUsingHeap(&sBallParticlePalettes[ballId]); + LoadSpritePalette(&sBallParticlePalettes[ballId]); } } @@ -2320,7 +2320,7 @@ void AnimTask_SwapMonSpriteToFromSubstitute(u8 taskId) case 0: gTasks[taskId].data[11] = gBattleAnimArgs[0]; gTasks[taskId].data[0] += 0x500; - if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + if (!IsOnPlayerSide(gBattleAnimAttacker)) gSprites[spriteId].x2 += gTasks[taskId].data[0] >> 8; else gSprites[spriteId].x2 -= gTasks[taskId].data[0] >> 8; @@ -2336,13 +2336,13 @@ void AnimTask_SwapMonSpriteToFromSubstitute(u8 taskId) break; case 2: gTasks[taskId].data[0] += 0x500; - if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + if (!IsOnPlayerSide(gBattleAnimAttacker)) gSprites[spriteId].x2 -= gTasks[taskId].data[0] >> 8; else gSprites[spriteId].x2 += gTasks[taskId].data[0] >> 8; gTasks[taskId].data[0] &= 0xFF; - if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + if (!IsOnPlayerSide(gBattleAnimAttacker)) { if (gSprites[spriteId].x2 <= 0) { @@ -2442,7 +2442,7 @@ void TryShinyAnimation(u8 battler, struct Pokemon *mon) if (GetSpriteTileStartByTag(ANIM_TAG_GOLD_STARS) == 0xFFFF) { LoadCompressedSpriteSheetUsingHeap(&gBattleAnimPicTable[ANIM_TAG_GOLD_STARS - ANIM_SPRITES_START]); - LoadCompressedSpritePaletteUsingHeap(&gBattleAnimPaletteTable[ANIM_TAG_GOLD_STARS - ANIM_SPRITES_START]); + LoadSpritePalette(&gBattleAnimPaletteTable[ANIM_TAG_GOLD_STARS - ANIM_SPRITES_START]); } taskCirc = CreateTask(Task_ShinyStars, 10); @@ -2513,7 +2513,7 @@ static void Task_ShinyStars(u8 taskId) gSprites[spriteId].invisible = TRUE; if (gTasks[taskId].tStarIdx == 0) { - if (GetBattlerSide(battler) == B_SIDE_PLAYER) + if (IsOnPlayerSide(battler)) pan = -64; else pan = 63; @@ -2597,7 +2597,7 @@ void AnimTask_LoadPokeblockGfx(u8 taskId) u8 UNUSED paletteIndex; LoadCompressedSpriteSheetUsingHeap(&gBattleAnimPicTable[ANIM_TAG_POKEBLOCK - ANIM_SPRITES_START]); - LoadCompressedSpritePaletteUsingHeap(&gBattleAnimPaletteTable[ANIM_TAG_POKEBLOCK - ANIM_SPRITES_START]); + LoadSpritePalette(&gBattleAnimPaletteTable[ANIM_TAG_POKEBLOCK - ANIM_SPRITES_START]); paletteIndex = IndexOfSpritePaletteTag(ANIM_TAG_POKEBLOCK); DestroyAnimVisualTask(taskId); } diff --git a/src/battle_anim_utility_funcs.c b/src/battle_anim_utility_funcs.c index 10b8a14cf9..54b9f949ba 100644 --- a/src/battle_anim_utility_funcs.c +++ b/src/battle_anim_utility_funcs.c @@ -318,7 +318,7 @@ void AnimTask_DrawFallingWhiteLinesOnAttacker(u8 taskId) if (IsContest()) species = gContestResources->moveAnim->species; else - species = GetMonData(GetPartyBattlerData(gBattleAnimAttacker), MON_DATA_SPECIES); + species = GetMonData(GetBattlerMon(gBattleAnimAttacker), MON_DATA_SPECIES); spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER); newSpriteId = CreateInvisibleSpriteCopy(gBattleAnimAttacker, spriteId, species); @@ -453,7 +453,7 @@ static void StatsChangeAnimation_Step1(u8 taskId) if (IsContest()) sAnimStatsChangeData->species = gContestResources->moveAnim->species; else - sAnimStatsChangeData->species = GetMonData(GetPartyBattlerData(sAnimStatsChangeData->battler1), MON_DATA_SPECIES); + sAnimStatsChangeData->species = GetMonData(GetBattlerMon(sAnimStatsChangeData->battler1), MON_DATA_SPECIES); gTasks[taskId].func = StatsChangeAnimation_Step2; } @@ -483,29 +483,29 @@ static void StatsChangeAnimation_Step2(u8 taskId) switch (sAnimStatsChangeData->aAnimStatId) { case STAT_ANIM_PAL_ATK: - LoadCompressedPalette(gStatAnim_Attack_Pal, BG_PLTT_ID(animBgData.paletteId), PLTT_SIZE_4BPP); + LoadPalette(gStatAnim_Attack_Pal, BG_PLTT_ID(animBgData.paletteId), PLTT_SIZE_4BPP); break; case STAT_ANIM_PAL_DEF: - LoadCompressedPalette(gStatAnim_Defense_Pal, BG_PLTT_ID(animBgData.paletteId), PLTT_SIZE_4BPP); + LoadPalette(gStatAnim_Defense_Pal, BG_PLTT_ID(animBgData.paletteId), PLTT_SIZE_4BPP); break; case STAT_ANIM_PAL_ACC: - LoadCompressedPalette(gStatAnim_Accuracy_Pal, BG_PLTT_ID(animBgData.paletteId), PLTT_SIZE_4BPP); + LoadPalette(gStatAnim_Accuracy_Pal, BG_PLTT_ID(animBgData.paletteId), PLTT_SIZE_4BPP); break; case STAT_ANIM_PAL_SPEED: - LoadCompressedPalette(gStatAnim_Speed_Pal, BG_PLTT_ID(animBgData.paletteId), PLTT_SIZE_4BPP); + LoadPalette(gStatAnim_Speed_Pal, BG_PLTT_ID(animBgData.paletteId), PLTT_SIZE_4BPP); break; case STAT_ANIM_PAL_EVASION: - LoadCompressedPalette(gStatAnim_Evasion_Pal, BG_PLTT_ID(animBgData.paletteId), PLTT_SIZE_4BPP); + LoadPalette(gStatAnim_Evasion_Pal, BG_PLTT_ID(animBgData.paletteId), PLTT_SIZE_4BPP); break; case STAT_ANIM_PAL_SPATK: - LoadCompressedPalette(gStatAnim_SpAttack_Pal, BG_PLTT_ID(animBgData.paletteId), PLTT_SIZE_4BPP); + LoadPalette(gStatAnim_SpAttack_Pal, BG_PLTT_ID(animBgData.paletteId), PLTT_SIZE_4BPP); break; case STAT_ANIM_PAL_SPDEF: - LoadCompressedPalette(gStatAnim_SpDefense_Pal, BG_PLTT_ID(animBgData.paletteId), PLTT_SIZE_4BPP); + LoadPalette(gStatAnim_SpDefense_Pal, BG_PLTT_ID(animBgData.paletteId), PLTT_SIZE_4BPP); break; default: // case STAT_ANIM_PAL_MULTIPLE: - LoadCompressedPalette(gStatAnim_Multiple_Pal, BG_PLTT_ID(animBgData.paletteId), PLTT_SIZE_4BPP); + LoadPalette(gStatAnim_Multiple_Pal, BG_PLTT_ID(animBgData.paletteId), PLTT_SIZE_4BPP); break; } @@ -732,7 +732,7 @@ void AnimTask_StartSlidingBg(u8 taskId) UpdateAnimBg3ScreenSize(FALSE); newTaskId = CreateTask(AnimTask_UpdateSlidingBg, 5); - if (gBattleAnimArgs[2] && GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + if (gBattleAnimArgs[2] && !IsOnPlayerSide(gBattleAnimAttacker)) { gBattleAnimArgs[0] = -gBattleAnimArgs[0]; gBattleAnimArgs[1] = -gBattleAnimArgs[1]; @@ -795,7 +795,7 @@ void AnimTask_SetAllNonAttackersInvisiblity(u8 taskId) DestroyAnimVisualTask(taskId); } -void StartMonScrollingBgMask(u8 taskId, int UNUSED unused, u16 scrollSpeed, u8 battler, bool8 includePartner, u8 numFadeSteps, u8 fadeStepDelay, u8 duration, const u32 *gfx, const u32 *tilemap, const u32 *palette) +void StartMonScrollingBgMask(u8 taskId, int UNUSED unused, u16 scrollSpeed, u8 battler, bool8 includePartner, u8 numFadeSteps, u8 fadeStepDelay, u8 duration, const u32 *gfx, const u32 *tilemap, const u16 *palette) { u16 species; u8 spriteId, spriteId2; @@ -832,7 +832,7 @@ void StartMonScrollingBgMask(u8 taskId, int UNUSED unused, u16 scrollSpeed, u8 b if (IsContest()) species = gContestResources->moveAnim->species; else - species = GetMonData(GetPartyBattlerData(battler), MON_DATA_SPECIES); + species = GetMonData(GetBattlerMon(battler), MON_DATA_SPECIES); spriteId = CreateInvisibleSpriteCopy(battler, gBattlerSpriteIds[battler], species); if (includePartner) @@ -841,7 +841,7 @@ void StartMonScrollingBgMask(u8 taskId, int UNUSED unused, u16 scrollSpeed, u8 b GetBattleAnimBg1Data(&animBgData); AnimLoadCompressedBgTilemapHandleContest(&animBgData, tilemap, FALSE); AnimLoadCompressedBgGfx(animBgData.bgId, gfx, animBgData.tilesOffset); - LoadCompressedPalette(palette, BG_PLTT_ID(animBgData.paletteId), PLTT_SIZE_4BPP); + LoadPalette(palette, BG_PLTT_ID(animBgData.paletteId), PLTT_SIZE_4BPP); gBattle_BG1_X = 0; gBattle_BG1_Y = 0; diff --git a/src/battle_anim_water.c b/src/battle_anim_water.c index eac5b4e3f2..490136d116 100644 --- a/src/battle_anim_water.c +++ b/src/battle_anim_water.c @@ -614,7 +614,7 @@ static void AnimAquaTail(struct Sprite *sprite) { StartSpriteAffineAnim(sprite, gBattleAnimArgs[3]); if (gBattleAnimArgs[2] == 0) - InitSpritePosToAnimAttacker(sprite, 1); + InitSpritePosToAnimAttacker(sprite, TRUE); else InitSpritePosToAnimTarget(sprite, TRUE); @@ -626,7 +626,7 @@ static void AnimAquaTail(struct Sprite *sprite) // args[1] - initial y delta static void AnimKnockOffAquaTail(struct Sprite *sprite) { - if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER) + if (IsOnPlayerSide(gBattleAnimTarget)) { sprite->x -= gBattleAnimArgs[0]; sprite->y += gBattleAnimArgs[1]; @@ -698,7 +698,7 @@ static void AnimRainDrop_Step(struct Sprite *sprite) if (++sprite->data[0] <= 13) { // - // Make the raindrop fall, but only until it reaches the + // Make the raindrop fall, but only until it reaches the // impact/splash frames of its animation. // sprite->x2++; @@ -713,7 +713,7 @@ static void AnimWaterBubbleProjectile(struct Sprite *sprite) { u8 spriteId; - if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + if (!IsOnPlayerSide(gBattleAnimAttacker)) { sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2) - gBattleAnimArgs[0]; sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[1]; @@ -725,7 +725,7 @@ static void AnimWaterBubbleProjectile(struct Sprite *sprite) sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[1]; sprite->animPaused = TRUE; } - if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + if (!IsOnPlayerSide(gBattleAnimAttacker)) gBattleAnimArgs[2] = -gBattleAnimArgs[2]; sprite->data[0] = gBattleAnimArgs[6]; sprite->data[1] = sprite->x; @@ -787,7 +787,7 @@ static void AnimAuroraBeamRings(struct Sprite *sprite) s16 unkArg; InitSpritePosToAnimAttacker(sprite, TRUE); - if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + if (!IsOnPlayerSide(gBattleAnimAttacker)) unkArg = -gBattleAnimArgs[2]; else unkArg = gBattleAnimArgs[2]; @@ -931,7 +931,7 @@ static void AnimHydroCannonCharge(struct Sprite *sprite) priority = GetBattlerSpriteSubpriority(gBattleAnimAttacker); if (!IsContest()) { - if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) + if (IsOnPlayerSide(gBattleAnimAttacker)) { sprite->x2 = 10; sprite->subpriority = priority + 2; @@ -976,7 +976,7 @@ static void AnimHydroCannonBeam(struct Sprite *sprite) else coordType = BATTLER_COORD_Y; InitSpritePosToAnimAttacker(sprite, respectMonPicOffsets); - if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + if (!IsOnPlayerSide(gBattleAnimAttacker)) gBattleAnimArgs[2] = -gBattleAnimArgs[2]; sprite->data[0] = gBattleAnimArgs[4]; sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + gBattleAnimArgs[2]; @@ -1038,7 +1038,7 @@ void AnimTask_CreateSurfWave(u8 taskId) if (!IsContest()) { SetAnimBgAttribute(1, BG_ANIM_CHAR_BASE_BLOCK, 1); - if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_OPPONENT) + if (!IsOnPlayerSide(gBattleAnimAttacker)) AnimLoadCompressedBgTilemap(animBg.bgId, gBattleAnimBgTilemap_SurfOpponent); else AnimLoadCompressedBgTilemap(animBg.bgId, gBattleAnimBgTilemap_SurfPlayer); @@ -1053,15 +1053,15 @@ void AnimTask_CreateSurfWave(u8 taskId) case ANIM_SURF_PAL_SURF: default: if (B_NEW_SURF_PARTICLE_PALETTE == TRUE) - LoadCompressedPalette(gBattleAnimSpritePal_NewSurf, BG_PLTT_ID(animBg.paletteId), PLTT_SIZE_4BPP); + LoadPalette(gBattleAnimSpritePal_NewSurf, BG_PLTT_ID(animBg.paletteId), PLTT_SIZE_4BPP); else - LoadCompressedPalette(gBattleAnimBgPalette_Surf, BG_PLTT_ID(animBg.paletteId), PLTT_SIZE_4BPP); + LoadPalette(gBattleAnimBgPalette_Surf, BG_PLTT_ID(animBg.paletteId), PLTT_SIZE_4BPP); break; case ANIM_SURF_PAL_MUDDY_WATER: - LoadCompressedPalette(gBattleAnimBackgroundImageMuddyWater_Pal, BG_PLTT_ID(animBg.paletteId), PLTT_SIZE_4BPP); + LoadPalette(gBattleAnimBackgroundImageMuddyWater_Pal, BG_PLTT_ID(animBg.paletteId), PLTT_SIZE_4BPP); break; case ANIM_SURF_PAL_SLUDGE_WAVE: - LoadCompressedPalette(gBattleAnimBgPalette_SludgeWave, BG_PLTT_ID(animBg.paletteId), PLTT_SIZE_4BPP); + LoadPalette(gBattleAnimBgPalette_SludgeWave, BG_PLTT_ID(animBg.paletteId), PLTT_SIZE_4BPP); break; } @@ -1078,7 +1078,7 @@ void AnimTask_CreateSurfWave(u8 taskId) gTasks[taskId].data[1] = 1; gTasks[taskId2].data[3] = 0; } - else if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_OPPONENT) + else if (!IsOnPlayerSide(gBattleAnimAttacker)) { *x = -224; *y = 256; @@ -1374,7 +1374,7 @@ static u8 GetWaterSpoutPowerForAnim(void) u8 i; u16 hp; u16 maxhp; - struct Pokemon *slot = GetPartyBattlerData(gBattleAnimAttacker); + struct Pokemon *slot = GetBattlerMon(gBattleAnimAttacker); maxhp = GetMonData(slot, MON_DATA_MAX_HP); hp = GetMonData(slot, MON_DATA_HP); @@ -1447,7 +1447,7 @@ void AnimTask_WaterSpoutRain(u8 taskId) struct Task *task = &gTasks[taskId]; task->data[1] = GetWaterSpoutPowerForAnim(); - if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) + if (IsOnPlayerSide(gBattleAnimAttacker)) { task->data[4] = 136; task->data[6] = 40; @@ -1566,7 +1566,7 @@ void AnimTask_WaterSport(u8 taskId) task->data[3] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); task->data[4] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); - task->data[7] = (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) ? 1 : -1; + task->data[7] = IsOnPlayerSide(gBattleAnimAttacker) ? 1 : -1; if (IsContest()) task->data[7] *= -1; task->data[5] = task->data[3] + task->data[7] * 8; diff --git a/src/battle_arena.c b/src/battle_arena.c index b54ba2838d..8474595b0d 100644 --- a/src/battle_arena.c +++ b/src/battle_arena.c @@ -165,7 +165,7 @@ u8 BattleArena_ShowJudgmentWindow(u8 *state) BeginNormalPaletteFade(0x7FFFFF1C, 4, 0, 8, RGB_BLACK); SetGpuReg(REG_OFFSET_WININ, (WININ_WIN0_ALL & ~WININ_WIN0_BG0) | WININ_WIN1_ALL); LoadCompressedSpriteSheet(sBattleArenaJudgmentSymbolsSpriteSheet); - LoadCompressedPalette(gBattleArenaJudgmentSymbolsPalette, OBJ_PLTT_ID(15), PLTT_SIZE_4BPP); + LoadPalette(gBattleArenaJudgmentSymbolsPalette, OBJ_PLTT_ID(15), PLTT_SIZE_4BPP); gBattle_WIN0H = 0xFF; gBattle_WIN0V = 0x70; (*state)++; @@ -362,7 +362,7 @@ void BattleArena_AddMindPoints(u8 battler) // - Fake Out subtracts 1 point // All status moves give 0 points, with the following exceptions: // - Protect, Detect, and Endure subtract 1 point - u32 effect = GetMoveEffect(gCurrentMove); + enum BattleMoveEffects effect = GetMoveEffect(gCurrentMove); if (effect == EFFECT_FIRST_TURN_ONLY || effect == EFFECT_PROTECT @@ -415,7 +415,7 @@ void BattleArena_AddSkillPoints(u8 battler) } } -void BattleArena_DeductSkillPoints(u8 battler, u16 stringId) +void BattleArena_DeductSkillPoints(u8 battler, enum StringID stringId) { s8 *skillPoints = gBattleStruct->arenaSkillPoints; @@ -442,6 +442,8 @@ void BattleArena_DeductSkillPoints(u8 battler, u16 stringId) case STRINGID_PKMNSTAYEDAWAKEUSING: skillPoints[battler] -= 3; break; + default: + break; } } diff --git a/src/battle_bg.c b/src/battle_bg.c index 4caf180fb3..a0df9017c7 100644 --- a/src/battle_bg.c +++ b/src/battle_bg.c @@ -738,7 +738,7 @@ void LoadBattleMenuWindowGfx(void) { LoadUserWindowBorderGfx(2, 0x12, BG_PLTT_ID(1)); LoadUserWindowBorderGfx(2, 0x22, BG_PLTT_ID(1)); - LoadCompressedPalette(gBattleWindowTextPalette, BG_PLTT_ID(5), PLTT_SIZE_4BPP); + LoadPalette(gBattleWindowTextPalette, BG_PLTT_ID(5), PLTT_SIZE_4BPP); if (gBattleTypeFlags & BATTLE_TYPE_ARENA) { @@ -756,7 +756,7 @@ void DrawMainBattleBackground(void) { LZDecompressVram(gBattleEnvironmentTiles_Building, (void *)(BG_CHAR_ADDR(2))); LZDecompressVram(gBattleEnvironmentTilemap_Building, (void *)(BG_SCREEN_ADDR(26))); - LoadCompressedPalette(gBattleEnvironmentPalette_Frontier, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); + LoadPalette(gBattleEnvironmentPalette_Frontier, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); } else if (gBattleTypeFlags & BATTLE_TYPE_LEGENDARY) { @@ -765,22 +765,22 @@ void DrawMainBattleBackground(void) case SPECIES_GROUDON: LZDecompressVram(gBattleEnvironmentTiles_Cave, (void*)(BG_CHAR_ADDR(2))); LZDecompressVram(gBattleEnvironmentTilemap_Cave, (void*)(BG_SCREEN_ADDR(26))); - LoadCompressedPalette(gBattleEnvironmentPalette_Groudon, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); + LoadPalette(gBattleEnvironmentPalette_Groudon, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); break; case SPECIES_KYOGRE: LZDecompressVram(gBattleEnvironmentTiles_Water, (void*)(BG_CHAR_ADDR(2))); LZDecompressVram(gBattleEnvironmentTilemap_Water, (void*)(BG_SCREEN_ADDR(26))); - LoadCompressedPalette(gBattleEnvironmentPalette_Kyogre, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); + LoadPalette(gBattleEnvironmentPalette_Kyogre, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); break; case SPECIES_RAYQUAZA: LZDecompressVram(gBattleEnvironmentTiles_Rayquaza, (void*)(BG_CHAR_ADDR(2))); LZDecompressVram(gBattleEnvironmentTilemap_Rayquaza, (void*)(BG_SCREEN_ADDR(26))); - LoadCompressedPalette(gBattleEnvironmentPalette_Rayquaza, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); + LoadPalette(gBattleEnvironmentPalette_Rayquaza, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); break; default: LZDecompressVram(sBattleEnvironmentTable[gBattleEnvironment].tileset, (void *)(BG_CHAR_ADDR(2))); LZDecompressVram(sBattleEnvironmentTable[gBattleEnvironment].tilemap, (void *)(BG_SCREEN_ADDR(26))); - LoadCompressedPalette(sBattleEnvironmentTable[gBattleEnvironment].palette, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); + LoadPalette(sBattleEnvironmentTable[gBattleEnvironment].palette, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); break; } } @@ -793,14 +793,14 @@ void DrawMainBattleBackground(void) { LZDecompressVram(gBattleEnvironmentTiles_Building, (void *)(BG_CHAR_ADDR(2))); LZDecompressVram(gBattleEnvironmentTilemap_Building, (void *)(BG_SCREEN_ADDR(26))); - LoadCompressedPalette(gBattleEnvironmentPalette_BuildingLeader, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); + LoadPalette(gBattleEnvironmentPalette_BuildingLeader, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); return; } else if (trainerClass == TRAINER_CLASS_CHAMPION) { LZDecompressVram(gBattleEnvironmentTiles_Stadium, (void *)(BG_CHAR_ADDR(2))); LZDecompressVram(gBattleEnvironmentTilemap_Stadium, (void *)(BG_SCREEN_ADDR(26))); - LoadCompressedPalette(gBattleEnvironmentPalette_StadiumWallace, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); + LoadPalette(gBattleEnvironmentPalette_StadiumWallace, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); return; } } @@ -811,47 +811,47 @@ void DrawMainBattleBackground(void) case MAP_BATTLE_SCENE_NORMAL: LZDecompressVram(sBattleEnvironmentTable[gBattleEnvironment].tileset, (void *)(BG_CHAR_ADDR(2))); LZDecompressVram(sBattleEnvironmentTable[gBattleEnvironment].tilemap, (void *)(BG_SCREEN_ADDR(26))); - LoadCompressedPalette(sBattleEnvironmentTable[gBattleEnvironment].palette, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); + LoadPalette(sBattleEnvironmentTable[gBattleEnvironment].palette, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); break; case MAP_BATTLE_SCENE_GYM: LZDecompressVram(gBattleEnvironmentTiles_Building, (void *)(BG_CHAR_ADDR(2))); LZDecompressVram(gBattleEnvironmentTilemap_Building, (void *)(BG_SCREEN_ADDR(26))); - LoadCompressedPalette(gBattleEnvironmentPalette_BuildingGym, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); + LoadPalette(gBattleEnvironmentPalette_BuildingGym, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); break; case MAP_BATTLE_SCENE_MAGMA: LZDecompressVram(gBattleEnvironmentTiles_Stadium, (void *)(BG_CHAR_ADDR(2))); LZDecompressVram(gBattleEnvironmentTilemap_Stadium, (void *)(BG_SCREEN_ADDR(26))); - LoadCompressedPalette(gBattleEnvironmentPalette_StadiumMagma, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); + LoadPalette(gBattleEnvironmentPalette_StadiumMagma, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); break; case MAP_BATTLE_SCENE_AQUA: LZDecompressVram(gBattleEnvironmentTiles_Stadium, (void *)(BG_CHAR_ADDR(2))); LZDecompressVram(gBattleEnvironmentTilemap_Stadium, (void *)(BG_SCREEN_ADDR(26))); - LoadCompressedPalette(gBattleEnvironmentPalette_StadiumAqua, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); + LoadPalette(gBattleEnvironmentPalette_StadiumAqua, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); break; case MAP_BATTLE_SCENE_SIDNEY: LZDecompressVram(gBattleEnvironmentTiles_Stadium, (void *)(BG_CHAR_ADDR(2))); LZDecompressVram(gBattleEnvironmentTilemap_Stadium, (void *)(BG_SCREEN_ADDR(26))); - LoadCompressedPalette(gBattleEnvironmentPalette_StadiumSidney, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); + LoadPalette(gBattleEnvironmentPalette_StadiumSidney, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); break; case MAP_BATTLE_SCENE_PHOEBE: LZDecompressVram(gBattleEnvironmentTiles_Stadium, (void *)(BG_CHAR_ADDR(2))); LZDecompressVram(gBattleEnvironmentTilemap_Stadium, (void *)(BG_SCREEN_ADDR(26))); - LoadCompressedPalette(gBattleEnvironmentPalette_StadiumPhoebe, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); + LoadPalette(gBattleEnvironmentPalette_StadiumPhoebe, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); break; case MAP_BATTLE_SCENE_GLACIA: LZDecompressVram(gBattleEnvironmentTiles_Stadium, (void *)(BG_CHAR_ADDR(2))); LZDecompressVram(gBattleEnvironmentTilemap_Stadium, (void *)(BG_SCREEN_ADDR(26))); - LoadCompressedPalette(gBattleEnvironmentPalette_StadiumGlacia, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); + LoadPalette(gBattleEnvironmentPalette_StadiumGlacia, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); break; case MAP_BATTLE_SCENE_DRAKE: LZDecompressVram(gBattleEnvironmentTiles_Stadium, (void *)(BG_CHAR_ADDR(2))); LZDecompressVram(gBattleEnvironmentTilemap_Stadium, (void *)(BG_SCREEN_ADDR(26))); - LoadCompressedPalette(gBattleEnvironmentPalette_StadiumDrake, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); + LoadPalette(gBattleEnvironmentPalette_StadiumDrake, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); break; case MAP_BATTLE_SCENE_FRONTIER: LZDecompressVram(gBattleEnvironmentTiles_Building, (void *)(BG_CHAR_ADDR(2))); LZDecompressVram(gBattleEnvironmentTilemap_Building, (void *)(BG_SCREEN_ADDR(26))); - LoadCompressedPalette(gBattleEnvironmentPalette_Frontier, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); + LoadPalette(gBattleEnvironmentPalette_Frontier, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); break; } } @@ -862,7 +862,7 @@ void LoadBattleTextboxAndBackground(void) LZDecompressVram(gBattleTextboxTiles, (void *)(BG_CHAR_ADDR(0))); CopyToBgTilemapBuffer(0, gBattleTextboxTilemap, 0, 0); CopyBgTilemapBufferToVram(0); - LoadCompressedPalette(gBattleTextboxPalette, BG_PLTT_ID(0), 2 * PLTT_SIZE_4BPP); + LoadPalette(gBattleTextboxPalette, BG_PLTT_ID(0), 2 * PLTT_SIZE_4BPP); LoadBattleMenuWindowGfx(); if (B_TERRAIN_BG_CHANGE == TRUE) DrawTerrainTypeBattleBackground(); @@ -1131,7 +1131,7 @@ void DrawBattleEntryBackground(void) { LZDecompressVram(gBattleVSFrame_Gfx, (void *)(BG_CHAR_ADDR(1))); LZDecompressVram(gVsLettersGfx, (void *)OBJ_VRAM0); - LoadCompressedPalette(gBattleVSFrame_Pal, BG_PLTT_ID(6), PLTT_SIZE_4BPP); + LoadPalette(gBattleVSFrame_Pal, BG_PLTT_ID(6), PLTT_SIZE_4BPP); SetBgAttribute(1, BG_ATTR_SCREENSIZE, 1); SetGpuReg(REG_OFFSET_BG1CNT, 0x5C04); CopyToBgTilemapBuffer(1, gBattleVSFrame_Tilemap, 0, 0); @@ -1231,7 +1231,7 @@ bool8 LoadChosenBattleElement(u8 caseId) CopyBgTilemapBufferToVram(0); break; case 2: - LoadCompressedPalette(gBattleTextboxPalette, BG_PLTT_ID(0), 2 * PLTT_SIZE_4BPP); + LoadPalette(gBattleTextboxPalette, BG_PLTT_ID(0), 2 * PLTT_SIZE_4BPP); break; case 3: if (gBattleTypeFlags & (BATTLE_TYPE_FRONTIER | BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED_LINK | BATTLE_TYPE_EREADER_TRAINER)) @@ -1365,14 +1365,14 @@ bool8 LoadChosenBattleElement(u8 caseId) case 5: if (gBattleTypeFlags & (BATTLE_TYPE_FRONTIER | BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED_LINK | BATTLE_TYPE_EREADER_TRAINER)) { - LoadCompressedPalette(gBattleEnvironmentPalette_Frontier, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); + LoadPalette(gBattleEnvironmentPalette_Frontier, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); } else if (gBattleTypeFlags & BATTLE_TYPE_LEGENDARY) { if (GetMonData(&gEnemyParty[0], MON_DATA_SPECIES, NULL) == SPECIES_GROUDON) - LoadCompressedPalette(gBattleEnvironmentPalette_Groudon, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); + LoadPalette(gBattleEnvironmentPalette_Groudon, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); else - LoadCompressedPalette(gBattleEnvironmentPalette_Kyogre, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); + LoadPalette(gBattleEnvironmentPalette_Kyogre, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); } else { @@ -1381,12 +1381,12 @@ bool8 LoadChosenBattleElement(u8 caseId) u32 trainerClass = GetTrainerClassFromId(TRAINER_BATTLE_PARAM.opponentA); if (trainerClass == TRAINER_CLASS_LEADER) { - LoadCompressedPalette(gBattleEnvironmentPalette_BuildingLeader, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); + LoadPalette(gBattleEnvironmentPalette_BuildingLeader, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); break; } else if (trainerClass == TRAINER_CLASS_CHAMPION) { - LoadCompressedPalette(gBattleEnvironmentPalette_StadiumWallace, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); + LoadPalette(gBattleEnvironmentPalette_StadiumWallace, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); break; } } @@ -1395,31 +1395,31 @@ bool8 LoadChosenBattleElement(u8 caseId) { default: case MAP_BATTLE_SCENE_NORMAL: - LoadCompressedPalette(sBattleEnvironmentTable[gBattleEnvironment].palette, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); + LoadPalette(sBattleEnvironmentTable[gBattleEnvironment].palette, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); break; case MAP_BATTLE_SCENE_GYM: - LoadCompressedPalette(gBattleEnvironmentPalette_BuildingGym, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); + LoadPalette(gBattleEnvironmentPalette_BuildingGym, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); break; case MAP_BATTLE_SCENE_MAGMA: - LoadCompressedPalette(gBattleEnvironmentPalette_StadiumMagma, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); + LoadPalette(gBattleEnvironmentPalette_StadiumMagma, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); break; case MAP_BATTLE_SCENE_AQUA: - LoadCompressedPalette(gBattleEnvironmentPalette_StadiumAqua, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); + LoadPalette(gBattleEnvironmentPalette_StadiumAqua, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); break; case MAP_BATTLE_SCENE_SIDNEY: - LoadCompressedPalette(gBattleEnvironmentPalette_StadiumSidney, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); + LoadPalette(gBattleEnvironmentPalette_StadiumSidney, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); break; case MAP_BATTLE_SCENE_PHOEBE: - LoadCompressedPalette(gBattleEnvironmentPalette_StadiumPhoebe, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); + LoadPalette(gBattleEnvironmentPalette_StadiumPhoebe, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); break; case MAP_BATTLE_SCENE_GLACIA: - LoadCompressedPalette(gBattleEnvironmentPalette_StadiumGlacia, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); + LoadPalette(gBattleEnvironmentPalette_StadiumGlacia, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); break; case MAP_BATTLE_SCENE_DRAKE: - LoadCompressedPalette(gBattleEnvironmentPalette_StadiumDrake, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); + LoadPalette(gBattleEnvironmentPalette_StadiumDrake, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); break; case MAP_BATTLE_SCENE_FRONTIER: - LoadCompressedPalette(gBattleEnvironmentPalette_Frontier, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); + LoadPalette(gBattleEnvironmentPalette_Frontier, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); break; } } diff --git a/src/battle_controller_link_opponent.c b/src/battle_controller_link_opponent.c index 4fc44d97f2..c79588695d 100644 --- a/src/battle_controller_link_opponent.c +++ b/src/battle_controller_link_opponent.c @@ -198,14 +198,14 @@ static void Intro_TryShinyAnimShowHealthbox(u32 battler) && !gBattleSpritesDataPtr->healthBoxesData[battler].triedShinyMonAnim && !gBattleSpritesDataPtr->healthBoxesData[battler].finishedShinyMonAnim) { - TryShinyAnimation(battler, &gEnemyParty[gBattlerPartyIndexes[battler]]); + TryShinyAnimation(battler, GetBattlerMon(battler)); } if (!(gBattleTypeFlags & BATTLE_TYPE_MULTI) && !gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(battler)].ballAnimActive && !gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(battler)].triedShinyMonAnim && !gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(battler)].finishedShinyMonAnim) { - TryShinyAnimation(BATTLE_PARTNER(battler), &gEnemyParty[gBattlerPartyIndexes[BATTLE_PARTNER(battler)]]); + TryShinyAnimation(BATTLE_PARTNER(battler), GetBattlerMon(BATTLE_PARTNER(battler))); } if (!gBattleSpritesDataPtr->healthBoxesData[battler].ballAnimActive && !gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(battler)].ballAnimActive) @@ -214,11 +214,11 @@ static void Intro_TryShinyAnimShowHealthbox(u32 battler) { if (IsDoubleBattle() && !(gBattleTypeFlags & BATTLE_TYPE_MULTI)) { - UpdateHealthboxAttribute(gHealthboxSpriteIds[BATTLE_PARTNER(battler)], &gEnemyParty[gBattlerPartyIndexes[BATTLE_PARTNER(battler)]], HEALTHBOX_ALL); + UpdateHealthboxAttribute(gHealthboxSpriteIds[BATTLE_PARTNER(battler)], GetBattlerMon(BATTLE_PARTNER(battler)), HEALTHBOX_ALL); StartHealthboxSlideIn(BATTLE_PARTNER(battler)); SetHealthboxSpriteVisible(gHealthboxSpriteIds[BATTLE_PARTNER(battler)]); } - UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], &gEnemyParty[gBattlerPartyIndexes[battler]], HEALTHBOX_ALL); + UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], GetBattlerMon(battler), HEALTHBOX_ALL); StartHealthboxSlideIn(battler); SetHealthboxSpriteVisible(gHealthboxSpriteIds[battler]); } @@ -262,12 +262,12 @@ static void Intro_TryShinyAnimShowHealthbox(u32 battler) if (IsDoubleBattle() && !(gBattleTypeFlags & BATTLE_TYPE_MULTI)) { DestroySprite(&gSprites[gBattleControllerData[BATTLE_PARTNER(battler)]]); - SetBattlerShadowSpriteCallback(BATTLE_PARTNER(battler), GetMonData(&gEnemyParty[gBattlerPartyIndexes[BATTLE_PARTNER(battler)]], MON_DATA_SPECIES)); + SetBattlerShadowSpriteCallback(BATTLE_PARTNER(battler), GetMonData(GetBattlerMon(BATTLE_PARTNER(battler)), MON_DATA_SPECIES)); } DestroySprite(&gSprites[gBattleControllerData[battler]]); - SetBattlerShadowSpriteCallback(battler, GetMonData(&gEnemyParty[gBattlerPartyIndexes[battler]], MON_DATA_SPECIES)); + SetBattlerShadowSpriteCallback(battler, GetMonData(GetBattlerMon(battler), MON_DATA_SPECIES)); gBattleSpritesDataPtr->animationData->introAnimActive = FALSE; gBattleSpritesDataPtr->healthBoxesData[battler].bgmRestored = FALSE; @@ -280,84 +280,32 @@ static void Intro_TryShinyAnimShowHealthbox(u32 battler) static void TryShinyAnimAfterMonAnim(u32 battler) { - if (gSprites[gBattlerSpriteIds[battler]].callback == SpriteCallbackDummy - && gSprites[gBattlerSpriteIds[battler]].x2 == 0) - { - if (!gBattleSpritesDataPtr->healthBoxesData[battler].triedShinyMonAnim) - { - TryShinyAnimation(battler, &gEnemyParty[gBattlerPartyIndexes[battler]]); - } - else if (gBattleSpritesDataPtr->healthBoxesData[battler].finishedShinyMonAnim) - { - gBattleSpritesDataPtr->healthBoxesData[battler].triedShinyMonAnim = FALSE; - gBattleSpritesDataPtr->healthBoxesData[battler].finishedShinyMonAnim = FALSE; - FreeSpriteTilesByTag(ANIM_TAG_GOLD_STARS); - FreeSpritePaletteByTag(ANIM_TAG_GOLD_STARS); - LinkOpponentBufferExecCompleted(battler); - } - } + if (TryShinyAnimAfterMonAnimUtil(battler)) + LinkOpponentBufferExecCompleted(battler); } static void SwitchIn_ShowSubstitute(u32 battler) { - if (gSprites[gHealthboxSpriteIds[battler]].callback == SpriteCallbackDummy) - { - if (gBattleSpritesDataPtr->battlerData[battler].behindSubstitute) - InitAndLaunchSpecialAnimation(battler, battler, battler, B_ANIM_MON_TO_SUBSTITUTE); - + if (SwitchIn_ShowSubstituteUtil(battler)) gBattlerControllerFuncs[battler] = SwitchIn_HandleSoundAndEnd; - } } static void SwitchIn_HandleSoundAndEnd(u32 battler) { - if (!gBattleSpritesDataPtr->healthBoxesData[battler].specialAnimActive && !IsCryPlayingOrClearCrySongs()) - { - if (gSprites[gBattlerSpriteIds[battler]].callback == SpriteCallbackDummy - || gSprites[gBattlerSpriteIds[battler]].callback == SpriteCallbackDummy_2) - { - m4aMPlayVolumeControl(&gMPlayInfo_BGM, TRACKS_ALL, 0x100); - LinkOpponentBufferExecCompleted(battler); - } - } + if (SwitchIn_HandleSoundAndEndUtil(battler)) + LinkOpponentBufferExecCompleted(battler); } static void SwitchIn_ShowHealthbox(u32 battler) { - if (gBattleSpritesDataPtr->healthBoxesData[battler].finishedShinyMonAnim - && gSprites[gBattlerSpriteIds[battler]].callback == SpriteCallbackDummy) - { - gBattleSpritesDataPtr->healthBoxesData[battler].triedShinyMonAnim = FALSE; - gBattleSpritesDataPtr->healthBoxesData[battler].finishedShinyMonAnim = FALSE; - - FreeSpriteTilesByTag(ANIM_TAG_GOLD_STARS); - FreeSpritePaletteByTag(ANIM_TAG_GOLD_STARS); - - StartSpriteAnim(&gSprites[gBattlerSpriteIds[battler]], 0); - - UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], &gEnemyParty[gBattlerPartyIndexes[battler]], HEALTHBOX_ALL); - StartHealthboxSlideIn(battler); - SetHealthboxSpriteVisible(gHealthboxSpriteIds[battler]); - CopyBattleSpriteInvisibility(battler); + if (SwitchIn_ShowHealthboxUtil(battler)) gBattlerControllerFuncs[battler] = SwitchIn_ShowSubstitute; - } } static void SwitchIn_TryShinyAnim(u32 battler) { - if (!gBattleSpritesDataPtr->healthBoxesData[battler].ballAnimActive - && !gBattleSpritesDataPtr->healthBoxesData[battler].triedShinyMonAnim) - { - TryShinyAnimation(battler, &gEnemyParty[gBattlerPartyIndexes[battler]]); - } - - if (gSprites[gBattleControllerData[battler]].callback == SpriteCallbackDummy - && !gBattleSpritesDataPtr->healthBoxesData[battler].ballAnimActive) - { - DestroySprite(&gSprites[gBattleControllerData[battler]]); - SetBattlerShadowSpriteCallback(battler, GetMonData(&gEnemyParty[gBattlerPartyIndexes[battler]], MON_DATA_SPECIES)); + if (SwitchIn_TryShinyAnimUtil(battler)) gBattlerControllerFuncs[battler] = SwitchIn_ShowHealthbox; - } } static void LinkOpponentBufferExecCompleted(u32 battler) diff --git a/src/battle_controller_link_partner.c b/src/battle_controller_link_partner.c index a50f64d41f..f54ee0d220 100644 --- a/src/battle_controller_link_partner.c +++ b/src/battle_controller_link_partner.c @@ -130,60 +130,26 @@ static void WaitForMonAnimAfterLoad(u32 battler) static void SwitchIn_ShowSubstitute(u32 battler) { - if (gSprites[gHealthboxSpriteIds[battler]].callback == SpriteCallbackDummy) - { - CopyBattleSpriteInvisibility(battler); - if (gBattleSpritesDataPtr->battlerData[battler].behindSubstitute) - InitAndLaunchSpecialAnimation(battler, battler, battler, B_ANIM_MON_TO_SUBSTITUTE); - + if (SwitchIn_ShowSubstituteUtil(battler)) gBattlerControllerFuncs[battler] = SwitchIn_WaitAndEnd; - } } static void SwitchIn_WaitAndEnd(u32 battler) { - if (!gBattleSpritesDataPtr->healthBoxesData[battler].specialAnimActive - && gSprites[gBattlerSpriteIds[battler]].callback == SpriteCallbackDummy) - { + if (SwitchIn_WaitAndEndUtil(battler)) LinkPartnerBufferExecCompleted(battler); - } } static void SwitchIn_ShowHealthbox(u32 battler) { - if (gBattleSpritesDataPtr->healthBoxesData[battler].finishedShinyMonAnim) - { - gBattleSpritesDataPtr->healthBoxesData[battler].triedShinyMonAnim = FALSE; - gBattleSpritesDataPtr->healthBoxesData[battler].finishedShinyMonAnim = FALSE; - - FreeSpriteTilesByTag(ANIM_TAG_GOLD_STARS); - FreeSpritePaletteByTag(ANIM_TAG_GOLD_STARS); - - CreateTask(Task_PlayerController_RestoreBgmAfterCry, 10); - HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[battler]], battler); - StartSpriteAnim(&gSprites[gBattlerSpriteIds[battler]], 0); - UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], &gPlayerParty[gBattlerPartyIndexes[battler]], HEALTHBOX_ALL); - StartHealthboxSlideIn(battler); - SetHealthboxSpriteVisible(gHealthboxSpriteIds[battler]); - + if (SwitchIn_ShowHealthboxUtil(battler)) gBattlerControllerFuncs[battler] = SwitchIn_ShowSubstitute; - } } static void SwitchIn_TryShinyAnim(u32 battler) { - if (!gBattleSpritesDataPtr->healthBoxesData[battler].triedShinyMonAnim - && !gBattleSpritesDataPtr->healthBoxesData[battler].ballAnimActive) - { - TryShinyAnimation(battler, &gPlayerParty[gBattlerPartyIndexes[battler]]); - } - - if (gSprites[gBattleControllerData[battler]].callback == SpriteCallbackDummy - && !gBattleSpritesDataPtr->healthBoxesData[battler].ballAnimActive) - { - DestroySprite(&gSprites[gBattleControllerData[battler]]); + if (SwitchIn_TryShinyAnimUtil(battler)) gBattlerControllerFuncs[battler] = SwitchIn_ShowHealthbox; - } } static void LinkPartnerBufferExecCompleted(u32 battler) @@ -258,7 +224,7 @@ static void LinkPartnerHandleHealthBarUpdate(u32 battler) static void LinkPartnerHandleIntroTrainerBallThrow(u32 battler) { u32 trainerPicId = LinkPlayerGetTrainerPicId(GetBattlerMultiplayerId(battler)); - const u32 *trainerPal = gTrainerBacksprites[trainerPicId].palette.data; + const u16 *trainerPal = gTrainerBacksprites[trainerPicId].palette.data; // Link partner uses the same intro sequence as the player partner. BtlController_HandleIntroTrainerBallThrow(battler, 0xD6F9, trainerPal, 24, Controller_PlayerPartnerShowIntroHealthbox); } diff --git a/src/battle_controller_opponent.c b/src/battle_controller_opponent.c index a01f23a56f..03c78fb9e9 100644 --- a/src/battle_controller_opponent.c +++ b/src/battle_controller_opponent.c @@ -212,19 +212,6 @@ static void Intro_WaitForShinyAnimAndHealthbox(u32 battler) } } -static void TrySetBattlerShadowSpriteCallback(u32 battler) -{ - if (gSprites[gBattleSpritesDataPtr->healthBoxesData[battler].shadowSpriteIdPrimary].callback == SpriteCallbackDummy) - { - if (B_ENEMY_MON_SHADOW_STYLE <= GEN_3 - || P_GBA_STYLE_SPECIES_GFX == TRUE - || gSprites[gBattleSpritesDataPtr->healthBoxesData[battler].shadowSpriteIdSecondary].callback == SpriteCallbackDummy) - { - SetBattlerShadowSpriteCallback(battler, GetMonData(&gEnemyParty[gBattlerPartyIndexes[battler]], MON_DATA_SPECIES)); - } - } -} - static void Intro_TryShinyAnimShowHealthbox(u32 battler) { bool32 bgmRestored = FALSE; @@ -234,7 +221,7 @@ static void Intro_TryShinyAnimShowHealthbox(u32 battler) if (!gBattleSpritesDataPtr->healthBoxesData[battler].triedShinyMonAnim && !gBattleSpritesDataPtr->healthBoxesData[battler].ballAnimActive && !gBattleSpritesDataPtr->healthBoxesData[battler].finishedShinyMonAnim) - TryShinyAnimation(battler, &gEnemyParty[gBattlerPartyIndexes[battler]]); + TryShinyAnimation(battler, GetBattlerMon(battler)); twoMons = TwoOpponentIntroMons(battler); if (!(gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS) @@ -243,7 +230,7 @@ static void Intro_TryShinyAnimShowHealthbox(u32 battler) && !gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(battler)].triedShinyMonAnim && !gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(battler)].ballAnimActive && !gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(battler)].finishedShinyMonAnim) - TryShinyAnimation(BATTLE_PARTNER(battler), &gEnemyParty[gBattlerPartyIndexes[BATTLE_PARTNER(battler)]]); + TryShinyAnimation(BATTLE_PARTNER(battler), GetBattlerMon(BATTLE_PARTNER(battler))); if (!gBattleSpritesDataPtr->healthBoxesData[battler].ballAnimActive && !gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(battler)].ballAnimActive) { @@ -251,11 +238,11 @@ static void Intro_TryShinyAnimShowHealthbox(u32 battler) { if (twoMons && (!(gBattleTypeFlags & BATTLE_TYPE_MULTI) || BATTLE_TWO_VS_ONE_OPPONENT)) { - UpdateHealthboxAttribute(gHealthboxSpriteIds[BATTLE_PARTNER(battler)], &gEnemyParty[gBattlerPartyIndexes[BATTLE_PARTNER(battler)]], HEALTHBOX_ALL); + UpdateHealthboxAttribute(gHealthboxSpriteIds[BATTLE_PARTNER(battler)], GetBattlerMon(BATTLE_PARTNER(battler)), HEALTHBOX_ALL); StartHealthboxSlideIn(BATTLE_PARTNER(battler)); SetHealthboxSpriteVisible(gHealthboxSpriteIds[BATTLE_PARTNER(battler)]); } - UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], &gEnemyParty[gBattlerPartyIndexes[battler]], HEALTHBOX_ALL); + UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], GetBattlerMon(battler), HEALTHBOX_ALL); StartHealthboxSlideIn(battler); SetHealthboxSpriteVisible(gHealthboxSpriteIds[battler]); } @@ -328,7 +315,7 @@ static void TryShinyAnimAfterMonAnim(u32 battler) if (gSprites[gBattlerSpriteIds[battler]].x2 == 0 && !gBattleSpritesDataPtr->healthBoxesData[battler].triedShinyMonAnim && !gBattleSpritesDataPtr->healthBoxesData[battler].finishedShinyMonAnim) - TryShinyAnimation(battler, &gEnemyParty[gBattlerPartyIndexes[battler]]); + TryShinyAnimation(battler, GetBattlerMon(battler)); if (gSprites[gBattlerSpriteIds[battler]].callback == SpriteCallbackDummy && gBattleSpritesDataPtr->healthBoxesData[battler].finishedShinyMonAnim) @@ -343,58 +330,26 @@ static void TryShinyAnimAfterMonAnim(u32 battler) static void SwitchIn_ShowSubstitute(u32 battler) { - if (gSprites[gHealthboxSpriteIds[battler]].callback == SpriteCallbackDummy) - { - if (gBattleSpritesDataPtr->battlerData[battler].behindSubstitute) - InitAndLaunchSpecialAnimation(battler, battler, battler, B_ANIM_MON_TO_SUBSTITUTE); + if (SwitchIn_ShowSubstituteUtil(battler)) gBattlerControllerFuncs[battler] = SwitchIn_HandleSoundAndEnd; - } } static void SwitchIn_HandleSoundAndEnd(u32 battler) { - if (!gBattleSpritesDataPtr->healthBoxesData[battler].specialAnimActive && !IsCryPlayingOrClearCrySongs()) - { - if (gSprites[gBattlerSpriteIds[battler]].callback == SpriteCallbackDummy - || gSprites[gBattlerSpriteIds[battler]].callback == SpriteCallbackDummy_2) - { - m4aMPlayVolumeControl(&gMPlayInfo_BGM, TRACKS_ALL, 0x100); - OpponentBufferExecCompleted(battler); - } - } + if (SwitchIn_HandleSoundAndEndUtil(battler)) + OpponentBufferExecCompleted(battler); } static void SwitchIn_ShowHealthbox(u32 battler) { - if (gBattleSpritesDataPtr->healthBoxesData[battler].finishedShinyMonAnim - && gSprites[gBattlerSpriteIds[battler]].callback == SpriteCallbackDummy) - { - gBattleSpritesDataPtr->healthBoxesData[battler].triedShinyMonAnim = FALSE; - gBattleSpritesDataPtr->healthBoxesData[battler].finishedShinyMonAnim = FALSE; - FreeSpriteTilesByTag(ANIM_TAG_GOLD_STARS); - FreeSpritePaletteByTag(ANIM_TAG_GOLD_STARS); - StartSpriteAnim(&gSprites[gBattlerSpriteIds[battler]], 0); - UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], &gEnemyParty[gBattlerPartyIndexes[battler]], HEALTHBOX_ALL); - StartHealthboxSlideIn(battler); - SetHealthboxSpriteVisible(gHealthboxSpriteIds[battler]); - CopyBattleSpriteInvisibility(battler); + if (SwitchIn_ShowHealthboxUtil(battler)) gBattlerControllerFuncs[battler] = SwitchIn_ShowSubstitute; - } } static void SwitchIn_TryShinyAnim(u32 battler) { - if (!gBattleSpritesDataPtr->healthBoxesData[battler].triedShinyMonAnim - && !gBattleSpritesDataPtr->healthBoxesData[battler].ballAnimActive) - TryShinyAnimation(battler, &gEnemyParty[gBattlerPartyIndexes[battler]]); - - if (gSprites[gBattleControllerData[battler]].callback == SpriteCallbackDummy - && !gBattleSpritesDataPtr->healthBoxesData[battler].ballAnimActive) - { - DestroySprite(&gSprites[gBattleControllerData[battler]]); - SetBattlerShadowSpriteCallback(battler, GetMonData(&gEnemyParty[gBattlerPartyIndexes[battler]], MON_DATA_SPECIES)); + if (SwitchIn_TryShinyAnimUtil(battler)) gBattlerControllerFuncs[battler] = SwitchIn_ShowHealthbox; - } } static void OpponentBufferExecCompleted(u32 battler) @@ -532,7 +487,7 @@ static void OpponentHandleChooseAction(u32 battler) static void OpponentHandleChooseMove(u32 battler) { - u8 chosenMoveId; + u32 chosenMoveIndex; struct ChooseMoveStruct *moveInfo = (struct ChooseMoveStruct *)(&gBattleResources->bufferA[battler][4]); if (gBattleTypeFlags & (BATTLE_TYPE_TRAINER | BATTLE_TYPE_FIRST_BATTLE | BATTLE_TYPE_SAFARI | BATTLE_TYPE_ROAMER) @@ -542,61 +497,58 @@ static void OpponentHandleChooseMove(u32 battler) { BtlController_EmitTwoReturnValues(battler, B_COMM_TO_ENGINE, 10, ChooseMoveAndTargetInBattlePalace(battler)); } + else if (gAiBattleData->actionFlee) + { + gAiBattleData->actionFlee = FALSE; + BtlController_EmitTwoReturnValues(battler, B_COMM_TO_ENGINE, B_ACTION_RUN, 0); + } + else if (gAiBattleData->choiceWatch) + { + gAiBattleData->choiceWatch = FALSE; + BtlController_EmitTwoReturnValues(battler, B_COMM_TO_ENGINE, B_ACTION_SAFARI_WATCH_CAREFULLY, 0); + } else { - chosenMoveId = gBattleStruct->aiMoveOrAction[battler]; - gBattlerTarget = gBattleStruct->aiChosenTarget[battler]; - switch (chosenMoveId) + chosenMoveIndex = gAiBattleData->chosenMoveIndex[battler]; + gBattlerTarget = gAiBattleData->chosenTarget[battler]; + + u32 chosenMove = moveInfo->moves[chosenMoveIndex]; + if (GetBattlerMoveTargetType(battler, chosenMove) & MOVE_TARGET_USER) + gBattlerTarget = battler; + if (GetBattlerMoveTargetType(battler, chosenMove) & MOVE_TARGET_BOTH) { - case AI_CHOICE_WATCH: - BtlController_EmitTwoReturnValues(battler, B_COMM_TO_ENGINE, B_ACTION_SAFARI_WATCH_CAREFULLY, 0); - break; - case AI_CHOICE_FLEE: - BtlController_EmitTwoReturnValues(battler, B_COMM_TO_ENGINE, B_ACTION_RUN, 0); - break; - case 6: - BtlController_EmitTwoReturnValues(battler, B_COMM_TO_ENGINE, 15, gBattlerTarget); - break; - default: - { - u16 chosenMove = moveInfo->moves[chosenMoveId]; - if (GetBattlerMoveTargetType(battler, chosenMove) & MOVE_TARGET_USER) - gBattlerTarget = battler; - if (GetBattlerMoveTargetType(battler, chosenMove) & MOVE_TARGET_BOTH) - { - gBattlerTarget = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT); - if (gAbsentBattlerFlags & (1u << gBattlerTarget)) - gBattlerTarget = GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT); - } - // 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, B_COMM_TO_ENGINE, 10, (chosenMoveId) | (RET_GIMMICK) | (gBattlerTarget << 8)); - } - else - { - BtlController_EmitTwoReturnValues(battler, B_COMM_TO_ENGINE, 10, (chosenMoveId) | (gBattlerTarget << 8)); - } - } - break; + gBattlerTarget = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT); + if (gAbsentBattlerFlags & (1u << gBattlerTarget)) + gBattlerTarget = GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT); + } + // 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[chosenMoveIndex]))) + { + BtlController_EmitTwoReturnValues(battler, B_COMM_TO_ENGINE, 10, (chosenMoveIndex) | (RET_GIMMICK) | (gBattlerTarget << 8)); + } + else + { + BtlController_EmitTwoReturnValues(battler, B_COMM_TO_ENGINE, 10, (chosenMoveIndex) | (gBattlerTarget << 8)); } } OpponentBufferExecCompleted(battler); } else // Wild pokemon - use random move { - u16 move; - u8 target; + u32 move; + u32 target; do { - chosenMoveId = Random() & 3; - move = moveInfo->moves[chosenMoveId]; + chosenMoveIndex = Random() & (MAX_MON_MOVES - 1); + move = moveInfo->moves[chosenMoveIndex]; } while (move == MOVE_NONE); if (GetBattlerMoveTargetType(battler, move) & MOVE_TARGET_USER) - BtlController_EmitTwoReturnValues(battler, B_COMM_TO_ENGINE, 10, (chosenMoveId) | (battler << 8)); + { + BtlController_EmitTwoReturnValues(battler, B_COMM_TO_ENGINE, 10, (chosenMoveIndex) | (battler << 8)); + } else if (IsDoubleBattle()) { do { @@ -629,17 +581,17 @@ static void OpponentHandleChooseMove(u32 battler) } } if (isPartnerEnemy && CanTargetBattler(battler, target, move)) - BtlController_EmitTwoReturnValues(battler, B_COMM_TO_ENGINE, 10, (chosenMoveId) | (GetBattlerAtPosition(BATTLE_PARTNER(battler)) << 8)); + BtlController_EmitTwoReturnValues(battler, B_COMM_TO_ENGINE, 10, (chosenMoveIndex) | (GetBattlerAtPosition(BATTLE_PARTNER(battler)) << 8)); else - BtlController_EmitTwoReturnValues(battler, B_COMM_TO_ENGINE, 10, (chosenMoveId) | (target << 8)); + BtlController_EmitTwoReturnValues(battler, B_COMM_TO_ENGINE, 10, (chosenMoveIndex) | (target << 8)); } else { - BtlController_EmitTwoReturnValues(battler, B_COMM_TO_ENGINE, 10, (chosenMoveId) | (target << 8)); + BtlController_EmitTwoReturnValues(battler, B_COMM_TO_ENGINE, 10, (chosenMoveIndex) | (target << 8)); } } else - BtlController_EmitTwoReturnValues(battler, B_COMM_TO_ENGINE, 10, (chosenMoveId) | (GetBattlerAtPosition(B_POSITION_PLAYER_LEFT) << 8)); + BtlController_EmitTwoReturnValues(battler, B_COMM_TO_ENGINE, 10, (chosenMoveIndex) | (GetBattlerAtPosition(B_POSITION_PLAYER_LEFT) << 8)); OpponentBufferExecCompleted(battler); } @@ -653,14 +605,14 @@ static void OpponentHandleChooseItem(u32 battler) static inline bool32 IsAcePokemon(u32 chosenMonId, u32 pokemonInBattle, u32 battler) { - return AI_THINKING_STRUCT->aiFlags[battler] & AI_FLAG_ACE_POKEMON + return gAiThinkingStruct->aiFlags[battler] & AI_FLAG_ACE_POKEMON && (chosenMonId == CalculateEnemyPartyCountInSide(battler) - 1) && CountAIAliveNonEggMonsExcept(PARTY_SIZE) != pokemonInBattle; } static inline bool32 IsDoubleAcePokemon(u32 chosenMonId, u32 pokemonInBattle, u32 battler) { - return AI_THINKING_STRUCT->aiFlags[battler] & AI_FLAG_DOUBLE_ACE_POKEMON + return gAiThinkingStruct->aiFlags[battler] & AI_FLAG_DOUBLE_ACE_POKEMON && (chosenMonId == CalculateEnemyPartyCountInSide(battler) - 1) && (chosenMonId == CalculateEnemyPartyCountInSide(battler) - 2) && CountAIAliveNonEggMonsExcept(PARTY_SIZE) != pokemonInBattle diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c index dd1a5aa72b..f374345206 100644 --- a/src/battle_controller_player.c +++ b/src/battle_controller_player.c @@ -46,6 +46,7 @@ #include "menu.h" #include "pokemon_summary_screen.h" #include "type_icons.h" +#include "pokedex.h" static void PlayerBufferExecCompleted(u32 battler); static void PlayerHandleLoadMonSprite(u32 battler); @@ -99,6 +100,9 @@ static void Task_UpdateLvlInHealthbox(u8); static void PrintLinkStandbyMsg(void); static void ReloadMoveNames(u32 battler); +static u32 CheckTypeEffectiveness(u32 targetId, u32 battler); +static u32 CheckTargetTypeEffectiveness(u32 battler); +static void MoveSelectionDisplayMoveEffectiveness(u32 foeEffectiveness, u32 battler); static void (*const sPlayerBufferCommands[CONTROLLER_CMDS_COUNT])(u32 battler) = { @@ -425,7 +429,7 @@ void HandleInputChooseTarget(u32 battler) { s32 i; static const u8 identities[MAX_BATTLERS_COUNT] = {B_POSITION_PLAYER_LEFT, B_POSITION_PLAYER_RIGHT, B_POSITION_OPPONENT_RIGHT, B_POSITION_OPPONENT_LEFT}; - u16 move = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battler]], MON_DATA_MOVE1 + gMoveSelectionCursor[battler]); + u16 move = GetMonData(GetBattlerMon(battler), MON_DATA_MOVE1 + gMoveSelectionCursor[battler]); u16 moveTarget = GetBattlerMoveTargetType(battler, move); DoBounceEffect(gMultiUsePlayerCursor, BOUNCE_HEALTHBOX, 15, 1); @@ -502,10 +506,12 @@ void HandleInputChooseTarget(u32 battler) i++; break; } + if (B_SHOW_EFFECTIVENESS) + MoveSelectionDisplayMoveEffectiveness(CheckTypeEffectiveness(GetBattlerPosition(gMultiUsePlayerCursor), battler), battler); if (gAbsentBattlerFlags & (1u << gMultiUsePlayerCursor) || !CanTargetBattler(battler, gMultiUsePlayerCursor, move) - || (moveTarget & MOVE_TARGET_OPPONENT && GetBattlerSide(gMultiUsePlayerCursor) == B_SIDE_PLAYER)) + || (moveTarget & MOVE_TARGET_OPPONENT && IsOnPlayerSide(gMultiUsePlayerCursor))) i = 0; } while (i == 0); } @@ -551,10 +557,12 @@ void HandleInputChooseTarget(u32 battler) i++; break; } + if (B_SHOW_EFFECTIVENESS) + MoveSelectionDisplayMoveEffectiveness(CheckTypeEffectiveness(GetBattlerPosition(gMultiUsePlayerCursor), battler), battler); if (gAbsentBattlerFlags & (1u << gMultiUsePlayerCursor) || !CanTargetBattler(battler, gMultiUsePlayerCursor, move) - || (moveTarget & MOVE_TARGET_OPPONENT && GetBattlerSide(gMultiUsePlayerCursor) == B_SIDE_PLAYER)) + || (moveTarget & MOVE_TARGET_OPPONENT && IsOnPlayerSide(gMultiUsePlayerCursor))) i = 0; } while (i == 0); } @@ -749,6 +757,8 @@ void HandleInputChooseMove(u32 battler) gMultiUsePlayerCursor = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT); else gMultiUsePlayerCursor = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT); + if (B_SHOW_EFFECTIVENESS) + MoveSelectionDisplayMoveEffectiveness(CheckTypeEffectiveness(GetBattlerPosition(gMultiUsePlayerCursor), battler), battler); gSprites[gBattlerSpriteIds[gMultiUsePlayerCursor]].callback = SpriteCB_ShowAsMoveTarget; break; @@ -785,6 +795,8 @@ void HandleInputChooseMove(u32 battler) gMoveSelectionCursor[battler] ^= 1; PlaySE(SE_SELECT); MoveSelectionCreateCursorAt(gMoveSelectionCursor[battler], 0); + if (B_SHOW_EFFECTIVENESS) + MoveSelectionDisplayMoveEffectiveness(CheckTargetTypeEffectiveness(battler), battler); MoveSelectionDisplayPpNumber(battler); MoveSelectionDisplayMoveType(battler); TryMoveSelectionDisplayMoveDescription(battler); @@ -800,6 +812,8 @@ void HandleInputChooseMove(u32 battler) gMoveSelectionCursor[battler] ^= 1; PlaySE(SE_SELECT); MoveSelectionCreateCursorAt(gMoveSelectionCursor[battler], 0); + if (B_SHOW_EFFECTIVENESS) + MoveSelectionDisplayMoveEffectiveness(CheckTargetTypeEffectiveness(battler), battler); MoveSelectionDisplayPpNumber(battler); MoveSelectionDisplayMoveType(battler); TryMoveSelectionDisplayMoveDescription(battler); @@ -814,6 +828,8 @@ void HandleInputChooseMove(u32 battler) gMoveSelectionCursor[battler] ^= 2; PlaySE(SE_SELECT); MoveSelectionCreateCursorAt(gMoveSelectionCursor[battler], 0); + if (B_SHOW_EFFECTIVENESS) + MoveSelectionDisplayMoveEffectiveness(CheckTargetTypeEffectiveness(battler), battler); MoveSelectionDisplayPpNumber(battler); MoveSelectionDisplayMoveType(battler); TryMoveSelectionDisplayMoveDescription(battler); @@ -829,6 +845,8 @@ void HandleInputChooseMove(u32 battler) gMoveSelectionCursor[battler] ^= 2; PlaySE(SE_SELECT); MoveSelectionCreateCursorAt(gMoveSelectionCursor[battler], 0); + if (B_SHOW_EFFECTIVENESS) + MoveSelectionDisplayMoveEffectiveness(CheckTargetTypeEffectiveness(battler), battler); MoveSelectionDisplayPpNumber(battler); MoveSelectionDisplayMoveType(battler); TryMoveSelectionDisplayMoveDescription(battler); @@ -866,6 +884,8 @@ void HandleInputChooseMove(u32 battler) ClearStdWindowAndFrame(B_WIN_MOVE_DESCRIPTION, FALSE); CopyWindowToVram(B_WIN_MOVE_DESCRIPTION, COPYWIN_GFX); PlaySE(SE_SELECT); + if (B_SHOW_EFFECTIVENESS) + MoveSelectionDisplayMoveEffectiveness(CheckTargetTypeEffectiveness(battler), battler); MoveSelectionDisplayPpNumber(battler); MoveSelectionDisplayMoveType(battler); } @@ -900,6 +920,8 @@ static void ReloadMoveNames(u32 battler) MoveSelectionDestroyCursorAt(battler); MoveSelectionDisplayMoveNames(battler); MoveSelectionCreateCursorAt(gMoveSelectionCursor[battler], 0); + if (B_SHOW_EFFECTIVENESS) + MoveSelectionDisplayMoveEffectiveness(CheckTargetTypeEffectiveness(battler), battler); MoveSelectionDisplayPpNumber(battler); MoveSelectionDisplayMoveType(battler); } @@ -1015,11 +1037,11 @@ void HandleMoveSwitching(u32 battler) { for (i = 0; i < MAX_MON_MOVES; i++) { - moveStruct.moves[i] = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battler]], MON_DATA_MOVE1 + i); - moveStruct.currentPp[i] = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battler]], MON_DATA_PP1 + i); + moveStruct.moves[i] = GetMonData(GetBattlerMon(battler), MON_DATA_MOVE1 + i); + moveStruct.currentPp[i] = GetMonData(GetBattlerMon(battler), MON_DATA_PP1 + i); } - totalPPBonuses = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battler]], MON_DATA_PP_BONUSES); + totalPPBonuses = GetMonData(GetBattlerMon(battler), MON_DATA_PP_BONUSES); for (i = 0; i < MAX_MON_MOVES; i++) perMovePPBonuses[i] = (totalPPBonuses & (3 << (i * 2))) >> (i * 2); @@ -1041,18 +1063,21 @@ void HandleMoveSwitching(u32 battler) for (i = 0; i < MAX_MON_MOVES; i++) { - SetMonData(&gPlayerParty[gBattlerPartyIndexes[battler]], MON_DATA_MOVE1 + i, &moveStruct.moves[i]); - SetMonData(&gPlayerParty[gBattlerPartyIndexes[battler]], MON_DATA_PP1 + i, &moveStruct.currentPp[i]); + SetMonData(GetBattlerMon(battler), MON_DATA_MOVE1 + i, &moveStruct.moves[i]); + SetMonData(GetBattlerMon(battler), MON_DATA_PP1 + i, &moveStruct.currentPp[i]); } - SetMonData(&gPlayerParty[gBattlerPartyIndexes[battler]], MON_DATA_PP_BONUSES, &totalPPBonuses); + SetMonData(GetBattlerMon(battler), MON_DATA_PP_BONUSES, &totalPPBonuses); } } gBattlerControllerFuncs[battler] = HandleInputChooseMove; gMoveSelectionCursor[battler] = gMultiUsePlayerCursor; MoveSelectionCreateCursorAt(gMoveSelectionCursor[battler], 0); - MoveSelectionDisplayPpString(battler); + if (B_SHOW_EFFECTIVENESS) + MoveSelectionDisplayMoveEffectiveness(CheckTargetTypeEffectiveness(battler), battler); + else + MoveSelectionDisplayPpString(battler); MoveSelectionDisplayPpNumber(battler); MoveSelectionDisplayMoveType(battler); AssignUsableZMoves(battler, moveInfo->moves); @@ -1063,7 +1088,10 @@ void HandleMoveSwitching(u32 battler) MoveSelectionDestroyCursorAt(gMultiUsePlayerCursor); MoveSelectionCreateCursorAt(gMoveSelectionCursor[battler], 0); gBattlerControllerFuncs[battler] = HandleInputChooseMove; - MoveSelectionDisplayPpString(battler); + if (B_SHOW_EFFECTIVENESS) + MoveSelectionDisplayMoveEffectiveness(CheckTargetTypeEffectiveness(battler), battler); + else + MoveSelectionDisplayPpString(battler); MoveSelectionDisplayPpNumber(battler); MoveSelectionDisplayMoveType(battler); } @@ -1236,10 +1264,10 @@ static void Intro_WaitForShinyAnimAndHealthbox(u32 battler) FreeSpriteTilesByTag(ANIM_TAG_GOLD_STARS); FreeSpritePaletteByTag(ANIM_TAG_GOLD_STARS); - HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[battler]], battler); + HandleLowHpMusicChange(GetBattlerMon(battler), battler); if (TwoPlayerIntroMons(battler)) - HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[BATTLE_PARTNER(battler)]], BATTLE_PARTNER(battler)); + HandleLowHpMusicChange(GetBattlerMon(BATTLE_PARTNER(battler)), BATTLE_PARTNER(battler)); gBattleSpritesDataPtr->healthBoxesData[battler].introEndDelay = 3; gBattlerControllerFuncs[battler] = Intro_DelayAndEnd; @@ -1254,12 +1282,12 @@ static void Intro_TryShinyAnimShowHealthbox(u32 battler) // Start shiny animation if applicable for 1st Pokémon if (!gBattleSpritesDataPtr->healthBoxesData[battler].triedShinyMonAnim && !gBattleSpritesDataPtr->healthBoxesData[battler].ballAnimActive) - TryShinyAnimation(battler, &gPlayerParty[gBattlerPartyIndexes[battler]]); + TryShinyAnimation(battler, GetBattlerMon(battler)); // Start shiny animation if applicable for 2nd Pokémon if (!gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(battler)].triedShinyMonAnim && !gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(battler)].ballAnimActive) - TryShinyAnimation(BATTLE_PARTNER(battler), &gPlayerParty[gBattlerPartyIndexes[BATTLE_PARTNER(battler)]]); + TryShinyAnimation(BATTLE_PARTNER(battler), GetBattlerMon(BATTLE_PARTNER(battler))); // Show healthbox after ball anim if (!gBattleSpritesDataPtr->healthBoxesData[battler].ballAnimActive @@ -1269,11 +1297,11 @@ static void Intro_TryShinyAnimShowHealthbox(u32 battler) { if (TwoPlayerIntroMons(battler) && !(gBattleTypeFlags & BATTLE_TYPE_MULTI)) { - UpdateHealthboxAttribute(gHealthboxSpriteIds[BATTLE_PARTNER(battler)], &gPlayerParty[gBattlerPartyIndexes[BATTLE_PARTNER(battler)]], HEALTHBOX_ALL); + UpdateHealthboxAttribute(gHealthboxSpriteIds[BATTLE_PARTNER(battler)], GetBattlerMon(BATTLE_PARTNER(battler)), HEALTHBOX_ALL); StartHealthboxSlideIn(BATTLE_PARTNER(battler)); SetHealthboxSpriteVisible(gHealthboxSpriteIds[BATTLE_PARTNER(battler)]); } - UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], &gPlayerParty[gBattlerPartyIndexes[battler]], HEALTHBOX_ALL); + UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], GetBattlerMon(battler), HEALTHBOX_ALL); StartHealthboxSlideIn(battler); SetHealthboxSpriteVisible(gHealthboxSpriteIds[battler]); } @@ -1356,28 +1384,18 @@ static void SwitchIn_CleanShinyAnimShowSubstitute(u32 battler) static void SwitchIn_HandleSoundAndEnd(u32 battler) { - if (!gBattleSpritesDataPtr->healthBoxesData[battler].specialAnimActive - && !IsCryPlayingOrClearCrySongs()) + if (SwitchIn_HandleSoundAndEndUtil(battler)) { - m4aMPlayVolumeControl(&gMPlayInfo_BGM, TRACKS_ALL, 0x100); - HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[battler]], battler); + HandleLowHpMusicChange(GetBattlerMon(battler), battler); PlayerBufferExecCompleted(battler); } } static void SwitchIn_TryShinyAnimShowHealthbox(u32 battler) { - // Start shiny animation if applicable - if (!gBattleSpritesDataPtr->healthBoxesData[battler].triedShinyMonAnim - && !gBattleSpritesDataPtr->healthBoxesData[battler].ballAnimActive) - TryShinyAnimation(battler, &gPlayerParty[gBattlerPartyIndexes[battler]]); - - // Wait for ball anim, then show healthbox - if (gSprites[gBattleControllerData[battler]].callback == SpriteCallbackDummy - && !gBattleSpritesDataPtr->healthBoxesData[battler].ballAnimActive) + if (SwitchIn_TryShinyAnimUtil(battler)) { - DestroySprite(&gSprites[gBattleControllerData[battler]]); - UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], &gPlayerParty[gBattlerPartyIndexes[battler]], HEALTHBOX_ALL); + UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], GetBattlerMon(battler), HEALTHBOX_ALL); StartHealthboxSlideIn(battler); SetHealthboxSpriteVisible(gHealthboxSpriteIds[battler]); gBattlerControllerFuncs[battler] = SwitchIn_CleanShinyAnimShowSubstitute; @@ -1418,18 +1436,20 @@ static void Task_GiveExpToMon(u8 taskId) u8 battler = gTasks[taskId].tExpTask_battler; s32 gainedExp = GetTaskExpValue(taskId); - if (WhichBattleCoords(battler) == 1 || monId != gBattlerPartyIndexes[battler]) // Give exp without moving the expbar. + if (GetBattlerCoordsIndex(battler) == BATTLE_COORDS_DOUBLES || monId != gBattlerPartyIndexes[battler]) // Give exp without moving the expbar. { struct Pokemon *mon = &gPlayerParty[monId]; u16 species = GetMonData(mon, MON_DATA_SPECIES); u8 level = GetMonData(mon, MON_DATA_LEVEL); u32 currExp = GetMonData(mon, MON_DATA_EXP); u32 nextLvlExp = gExperienceTables[gSpeciesInfo[species].growthRate][level + 1]; + u32 expAfterGain = currExp + gainedExp; u32 oldMaxHP = GetMonData(mon, MON_DATA_MAX_HP); - if (currExp + gainedExp >= nextLvlExp) + if (expAfterGain >= nextLvlExp) { - SetMonData(mon, MON_DATA_EXP, &nextLvlExp); + SetMonData(mon, MON_DATA_EXP, (B_LEVEL_UP_NOTIFICATION >= GEN_9) ? &expAfterGain : &nextLvlExp); + CalculateMonStats(mon); // Reapply Dynamax HP multiplier after stats are recalculated. @@ -1437,7 +1457,7 @@ static void Task_GiveExpToMon(u8 taskId) DynamaxModifyHPLevelUp(mon, battler, oldMaxHP); gainedExp -= nextLvlExp - currExp; - BtlController_EmitTwoReturnValues(battler, B_COMM_TO_ENGINE, RET_VALUE_LEVELED_UP, gainedExp); + BtlController_EmitTwoReturnValues(battler, B_COMM_TO_ENGINE, RET_VALUE_LEVELED_UP, (B_LEVEL_UP_NOTIFICATION >= GEN_9) ? 0 : gainedExp); if (IsDoubleBattle() == TRUE && (monId == gBattlerPartyIndexes[battler] || monId == gBattlerPartyIndexes[BATTLE_PARTNER(battler)])) @@ -1481,7 +1501,7 @@ static void Task_PrepareToGiveExpWithExpBar(u8 taskId) static void Task_GiveExpWithExpBar(u8 taskId) { - u8 level; + u32 level, expAfterGain; u16 species; u32 oldMaxHP; s32 currExp, expOnNextLvl, newExpPoints; @@ -1508,9 +1528,14 @@ static void Task_GiveExpWithExpBar(u8 taskId) oldMaxHP = GetMonData(mon, MON_DATA_MAX_HP); expOnNextLvl = gExperienceTables[gSpeciesInfo[species].growthRate][level + 1]; - if (currExp + gainedExp >= expOnNextLvl) + expAfterGain = currExp + gainedExp; + if (expAfterGain >= expOnNextLvl) { - SetMonData(mon, MON_DATA_EXP, &expOnNextLvl); + if (B_LEVEL_UP_NOTIFICATION >= GEN_9) + SetMonData(mon, MON_DATA_EXP, &expAfterGain); + else + SetMonData(mon, MON_DATA_EXP, &expOnNextLvl); + CalculateMonStats(mon); // Reapply Dynamax HP multiplier after stats are recalculated. @@ -1518,7 +1543,7 @@ static void Task_GiveExpWithExpBar(u8 taskId) DynamaxModifyHPLevelUp(mon, battler, oldMaxHP); gainedExp -= expOnNextLvl - currExp; - BtlController_EmitTwoReturnValues(battler, B_COMM_TO_ENGINE, RET_VALUE_LEVELED_UP, gainedExp); + BtlController_EmitTwoReturnValues(battler, B_COMM_TO_ENGINE, RET_VALUE_LEVELED_UP, (B_LEVEL_UP_NOTIFICATION >= GEN_9) ? 0 : gainedExp); gTasks[taskId].func = Task_LaunchLvlUpAnim; } else @@ -1705,7 +1730,7 @@ static void MoveSelectionDisplayMoveType(u32 battler) txtPtr = StringCopy(gDisplayedStringBattle, gText_MoveInterfaceType); u32 move = moveInfo->moves[gMoveSelectionCursor[battler]]; u32 type = GetMoveType(move); - u32 effect = GetMoveEffect(move); + enum BattleMoveEffects effect = GetMoveEffect(move); if (effect == EFFECT_TERA_BLAST) { @@ -1732,7 +1757,7 @@ static void MoveSelectionDisplayMoveType(u32 battler) } else if (P_SHOW_DYNAMIC_TYPES) // Non-vanilla changes to battle UI showing dynamic types { - struct Pokemon *mon = &gPlayerParty[gBattlerPartyIndexes[battler]]; + struct Pokemon *mon = GetBattlerMon(battler); type = CheckDynamicMoveType(mon, move, battler, MON_IN_BATTLE); } end = StringCopy(txtPtr, gTypesInfo[type].name); @@ -1856,7 +1881,7 @@ static void PrintLinkStandbyMsg(void) static void PlayerHandleLoadMonSprite(u32 battler) { - BattleLoadMonSpriteGfx(&gPlayerParty[gBattlerPartyIndexes[battler]], battler); + BattleLoadMonSpriteGfx(GetBattlerMon(battler), battler); gSprites[gBattlerSpriteIds[battler]].oam.paletteNum = battler; gBattlerControllerFuncs[battler] = CompleteOnBattlerSpritePosX_0; } @@ -1994,7 +2019,7 @@ static void PlayerHandlePrintString(u32 battler) static void PlayerHandlePrintSelectionString(u32 battler) { - if (GetBattlerSide(battler) == B_SIDE_PLAYER) + if (IsOnPlayerSide(battler)) PlayerHandlePrintString(battler); else PlayerBufferExecCompleted(battler); @@ -2051,13 +2076,13 @@ static void PlayerHandleChooseAction(u32 battler) u32 moveTarget = GetBattlerMoveTargetType(B_POSITION_PLAYER_RIGHT, move); if (moveTarget == MOVE_TARGET_SELECTED) { - if (gBattleStruct->aiChosenTarget[B_POSITION_PLAYER_RIGHT] == B_POSITION_OPPONENT_LEFT) + if (gAiBattleData->chosenTarget[B_POSITION_PLAYER_RIGHT] == B_POSITION_OPPONENT_LEFT) StringAppend(gStringVar1, COMPOUND_STRING(" -{UP_ARROW}")); - else if (gBattleStruct->aiChosenTarget[B_POSITION_PLAYER_RIGHT] == B_POSITION_OPPONENT_RIGHT) + else if (gAiBattleData->chosenTarget[B_POSITION_PLAYER_RIGHT] == B_POSITION_OPPONENT_RIGHT) StringAppend(gStringVar1, COMPOUND_STRING(" {UP_ARROW}-")); - else if (gBattleStruct->aiChosenTarget[B_POSITION_PLAYER_RIGHT] == B_POSITION_PLAYER_LEFT) + else if (gAiBattleData->chosenTarget[B_POSITION_PLAYER_RIGHT] == B_POSITION_PLAYER_LEFT) StringAppend(gStringVar1, COMPOUND_STRING(" {DOWN_ARROW}-")); - else if (gBattleStruct->aiChosenTarget[B_POSITION_PLAYER_RIGHT] == B_POSITION_PLAYER_RIGHT) + else if (gAiBattleData->chosenTarget[B_POSITION_PLAYER_RIGHT] == B_POSITION_PLAYER_RIGHT) StringAppend(gStringVar1, COMPOUND_STRING(" {DOWN_ARROW}-")); } else if (moveTarget == MOVE_TARGET_BOTH) @@ -2082,7 +2107,7 @@ static void PlayerHandleChooseAction(u32 battler) static void PlayerHandleYesNoBox(u32 battler) { - if (GetBattlerSide(battler) == B_SIDE_PLAYER) + if (IsOnPlayerSide(battler)) { HandleBattleWindow(YESNOBOX_X_Y, 0); BattlePutTextOnWindow(gText_BattleYesNoChoice, B_WIN_YESNO); @@ -2151,7 +2176,10 @@ void InitMoveSelectionsVarsAndStrings(u32 battler) MoveSelectionDisplayMoveNames(battler); gMultiUsePlayerCursor = 0xFF; MoveSelectionCreateCursorAt(gMoveSelectionCursor[battler], 0); - MoveSelectionDisplayPpString(battler); + if (B_SHOW_EFFECTIVENESS) + MoveSelectionDisplayMoveEffectiveness(CheckTargetTypeEffectiveness(battler), battler); + else + MoveSelectionDisplayPpString(battler); MoveSelectionDisplayPpNumber(battler); MoveSelectionDisplayMoveType(battler); } @@ -2237,9 +2265,9 @@ void PlayerHandleExpUpdate(u32 battler) static void PlayerHandleStatusXor(u32 battler) { - u32 val = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battler]], MON_DATA_STATUS) ^ gBattleResources->bufferA[battler][1]; + u32 val = GetMonData(GetBattlerMon(battler), MON_DATA_STATUS) ^ gBattleResources->bufferA[battler][1]; - SetMonData(&gPlayerParty[gBattlerPartyIndexes[battler]], MON_DATA_STATUS, &val); + SetMonData(GetBattlerMon(battler), MON_DATA_STATUS, &val); PlayerBufferExecCompleted(battler); } @@ -2302,7 +2330,7 @@ static void PlayerHandleOneReturnValue_Duplicate(u32 battler) static void PlayerHandleIntroTrainerBallThrow(u32 battler) { - const u32 *trainerPal = gTrainerBacksprites[gSaveBlock2Ptr->playerGender].palette.data; + const u16 *trainerPal = gTrainerBacksprites[gSaveBlock2Ptr->playerGender].palette.data; BtlController_HandleIntroTrainerBallThrow(battler, 0xD6F8, trainerPal, 31, Intro_TryShinyAnimShowHealthbox); } @@ -2385,3 +2413,100 @@ static void PlayerHandleBattleDebug(u32 battler) SetMainCallback2(CB2_BattleDebugMenu); gBattlerControllerFuncs[battler] = Controller_WaitForDebug; } + +// Order based numerically, with EFFECTIVENESS_CANNOT_VIEW at 0 to always prioritize any other effectiveness during comparison +enum +{ + EFFECTIVENESS_CANNOT_VIEW, + EFFECTIVENESS_NO_EFFECT, + EFFECTIVENESS_NOT_VERY_EFFECTIVE, + EFFECTIVENESS_NORMAL, + EFFECTIVENESS_SUPER_EFFECTIVE, +}; + +static bool32 ShouldShowTypeEffectiveness(u32 targetId) +{ + if (B_SHOW_EFFECTIVENESS == SHOW_EFFECTIVENESS_CAUGHT) + return GetSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[targetId].species), FLAG_GET_CAUGHT); + + if (B_SHOW_EFFECTIVENESS == SHOW_EFFECTIVENESS_SEEN) + return GetSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[targetId].species), FLAG_GET_SEEN); + + return TRUE; +} + +static u32 CheckTypeEffectiveness(u32 targetId, u32 battler) +{ + struct ChooseMoveStruct *moveInfo = (struct ChooseMoveStruct *)(&gBattleResources->bufferA[battler][4]); + struct Pokemon *mon = GetBattlerMon(battler); + u32 move = moveInfo->moves[gMoveSelectionCursor[battler]]; + u32 moveType = CheckDynamicMoveType(mon, move, battler, MON_IN_BATTLE); + uq4_12_t modifier = CalcTypeEffectivenessMultiplier(move, moveType, battler, targetId, GetBattlerAbility(targetId), FALSE); + + if (!ShouldShowTypeEffectiveness(targetId)) + return EFFECTIVENESS_CANNOT_VIEW; + + if (modifier == UQ_4_12(0.0)) + return EFFECTIVENESS_NO_EFFECT; // No effect + else if (modifier <= UQ_4_12(0.5)) + return EFFECTIVENESS_NOT_VERY_EFFECTIVE; // Not very effective + else if (modifier >= UQ_4_12(2.0)) + return EFFECTIVENESS_SUPER_EFFECTIVE; // Super effective + return EFFECTIVENESS_NORMAL; // Normal effectiveness +} + +static u32 CheckTargetTypeEffectiveness(u32 battler) +{ + u32 battlerFoe = BATTLE_OPPOSITE(GetBattlerPosition(battler)); + u32 foeEffectiveness = CheckTypeEffectiveness(battlerFoe, battler); + + if (IsDoubleBattle()) + { + u32 partnerFoe = BATTLE_PARTNER(battlerFoe); + u32 partnerFoeEffectiveness = CheckTypeEffectiveness(partnerFoe, battler); + if (!IsBattlerAlive(battlerFoe)) + return partnerFoeEffectiveness; + if (IsBattlerAlive(battlerFoe) && IsBattlerAlive(partnerFoe) + && partnerFoeEffectiveness > foeEffectiveness) + return partnerFoeEffectiveness; + } + return foeEffectiveness; // fallthrough for any other circumstance +} + +static void MoveSelectionDisplayMoveEffectiveness(u32 foeEffectiveness, u32 battler) +{ + static const u8 noIcon[] = _(""); + static const u8 effectiveIcon[] = _("{CIRCLE_HOLLOW}"); + static const u8 superEffectiveIcon[] = _("{CIRCLE_DOT}"); + static const u8 notVeryEffectiveIcon[] = _("{TRIANGLE}"); + static const u8 immuneIcon[] = _("{BIG_MULT_X}"); + struct ChooseMoveStruct *moveInfo = (struct ChooseMoveStruct *)(&gBattleResources->bufferA[battler][4]); + u8 *txtPtr; + + txtPtr = StringCopy(gDisplayedStringBattle, gText_MoveInterfacePP); + + if (!IsBattleMoveStatus(moveInfo->moves[gMoveSelectionCursor[battler]])) + { + switch (foeEffectiveness) + { + case EFFECTIVENESS_SUPER_EFFECTIVE: + StringCopy(txtPtr, superEffectiveIcon); + break; + case EFFECTIVENESS_NOT_VERY_EFFECTIVE: + StringCopy(txtPtr, notVeryEffectiveIcon); + break; + case EFFECTIVENESS_NO_EFFECT: + StringCopy(txtPtr, immuneIcon); + break; + case EFFECTIVENESS_NORMAL: + StringCopy(txtPtr, effectiveIcon); + break; + default: + case EFFECTIVENESS_CANNOT_VIEW: + StringCopy(txtPtr, noIcon); + break; + } + } + + BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_PP); +} diff --git a/src/battle_controller_player_partner.c b/src/battle_controller_player_partner.c index e4254023ca..ad5aa15312 100644 --- a/src/battle_controller_player_partner.c +++ b/src/battle_controller_player_partner.c @@ -173,18 +173,18 @@ void Controller_PlayerPartnerShowIntroHealthbox(u32 battler) && ++gBattleSpritesDataPtr->healthBoxesData[battler].introEndDelay != 1) { gBattleSpritesDataPtr->healthBoxesData[battler].introEndDelay = 0; - TryShinyAnimation(battler, &gPlayerParty[gBattlerPartyIndexes[battler]]); + TryShinyAnimation(battler, GetBattlerMon(battler)); if (IsDoubleBattle() && !(gBattleTypeFlags & BATTLE_TYPE_MULTI)) { DestroySprite(&gSprites[gBattleControllerData[BATTLE_PARTNER(battler)]]); - UpdateHealthboxAttribute(gHealthboxSpriteIds[BATTLE_PARTNER(battler)], &gPlayerParty[gBattlerPartyIndexes[BATTLE_PARTNER(battler)]], HEALTHBOX_ALL); + UpdateHealthboxAttribute(gHealthboxSpriteIds[BATTLE_PARTNER(battler)], GetBattlerMon(BATTLE_PARTNER(battler)), HEALTHBOX_ALL); StartHealthboxSlideIn(BATTLE_PARTNER(battler)); SetHealthboxSpriteVisible(gHealthboxSpriteIds[BATTLE_PARTNER(battler)]); } DestroySprite(&gSprites[gBattleControllerData[battler]]); - UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], &gPlayerParty[gBattlerPartyIndexes[battler]], HEALTHBOX_ALL); + UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], GetBattlerMon(battler), HEALTHBOX_ALL); StartHealthboxSlideIn(battler); SetHealthboxSpriteVisible(gHealthboxSpriteIds[battler]); @@ -202,60 +202,26 @@ static void WaitForMonAnimAfterLoad(u32 battler) static void SwitchIn_ShowSubstitute(u32 battler) { - if (gSprites[gHealthboxSpriteIds[battler]].callback == SpriteCallbackDummy) - { - CopyBattleSpriteInvisibility(battler); - if (gBattleSpritesDataPtr->battlerData[battler].behindSubstitute) - InitAndLaunchSpecialAnimation(battler, battler, battler, B_ANIM_MON_TO_SUBSTITUTE); - + if (SwitchIn_ShowSubstituteUtil(battler)) gBattlerControllerFuncs[battler] = SwitchIn_WaitAndEnd; - } } static void SwitchIn_WaitAndEnd(u32 battler) { - if (!gBattleSpritesDataPtr->healthBoxesData[battler].specialAnimActive - && gSprites[gBattlerSpriteIds[battler]].callback == SpriteCallbackDummy) - { + if (SwitchIn_WaitAndEndUtil(battler)) PlayerPartnerBufferExecCompleted(battler); - } } static void SwitchIn_ShowHealthbox(u32 battler) { - if (gBattleSpritesDataPtr->healthBoxesData[battler].finishedShinyMonAnim) - { - gBattleSpritesDataPtr->healthBoxesData[battler].triedShinyMonAnim = FALSE; - gBattleSpritesDataPtr->healthBoxesData[battler].finishedShinyMonAnim = FALSE; - - FreeSpriteTilesByTag(ANIM_TAG_GOLD_STARS); - FreeSpritePaletteByTag(ANIM_TAG_GOLD_STARS); - - CreateTask(Task_PlayerController_RestoreBgmAfterCry, 10); - HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[battler]], battler); - StartSpriteAnim(&gSprites[gBattlerSpriteIds[battler]], 0); - UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], &gPlayerParty[gBattlerPartyIndexes[battler]], HEALTHBOX_ALL); - StartHealthboxSlideIn(battler); - SetHealthboxSpriteVisible(gHealthboxSpriteIds[battler]); - + if (SwitchIn_ShowHealthboxUtil(battler)) gBattlerControllerFuncs[battler] = SwitchIn_ShowSubstitute; - } } static void SwitchIn_TryShinyAnim(u32 battler) { - if (!gBattleSpritesDataPtr->healthBoxesData[battler].triedShinyMonAnim - && !gBattleSpritesDataPtr->healthBoxesData[battler].ballAnimActive) - { - TryShinyAnimation(battler, &gPlayerParty[gBattlerPartyIndexes[battler]]); - } - - if (gSprites[gBattleControllerData[battler]].callback == SpriteCallbackDummy - && !gBattleSpritesDataPtr->healthBoxesData[battler].ballAnimActive) - { - DestroySprite(&gSprites[gBattleControllerData[battler]]); + if (SwitchIn_TryShinyAnimUtil(battler)) gBattlerControllerFuncs[battler] = SwitchIn_ShowHealthbox; - } } static void PlayerPartnerBufferExecCompleted(u32 battler) @@ -346,12 +312,12 @@ static void PlayerPartnerHandleChooseAction(u32 battler) static void PlayerPartnerHandleChooseMove(u32 battler) { - u8 chosenMoveId; + u32 chosenMoveIndex; struct ChooseMoveStruct *moveInfo = (struct ChooseMoveStruct *)(&gBattleResources->bufferA[battler][4]); - chosenMoveId = gBattleStruct->aiMoveOrAction[battler]; - gBattlerTarget = gBattleStruct->aiChosenTarget[battler]; - u32 moveTarget = GetBattlerMoveTargetType(battler, moveInfo->moves[chosenMoveId]); + chosenMoveIndex = gAiBattleData->chosenMoveIndex[battler]; + gBattlerTarget = gAiBattleData->chosenTarget[battler]; + u32 moveTarget = GetBattlerMoveTargetType(battler, moveInfo->moves[chosenMoveIndex]); if (moveTarget & MOVE_TARGET_USER) gBattlerTarget = battler; @@ -364,13 +330,13 @@ static void PlayerPartnerHandleChooseMove(u32 battler) // 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]))) + && !ShouldUseZMove(battler, gBattlerTarget, moveInfo->moves[chosenMoveIndex]))) { - BtlController_EmitTwoReturnValues(battler, B_COMM_TO_ENGINE, 10, (chosenMoveId) | (RET_GIMMICK) | (gBattlerTarget << 8)); + BtlController_EmitTwoReturnValues(battler, B_COMM_TO_ENGINE, 10, (chosenMoveIndex) | (RET_GIMMICK) | (gBattlerTarget << 8)); } else { - BtlController_EmitTwoReturnValues(battler, B_COMM_TO_ENGINE, 10, (chosenMoveId) | (gBattlerTarget << 8)); + BtlController_EmitTwoReturnValues(battler, B_COMM_TO_ENGINE, 10, (chosenMoveIndex) | (gBattlerTarget << 8)); } PlayerPartnerBufferExecCompleted(battler); @@ -424,7 +390,7 @@ static void PlayerPartnerHandleHealthBarUpdate(u32 battler) static void PlayerPartnerHandleIntroTrainerBallThrow(u32 battler) { - const u32 *trainerPal; + const u16 *trainerPal; enum DifficultyLevel difficulty = GetBattlePartnerDifficultyLevel(gPartnerTrainerId); if (gPartnerTrainerId > TRAINER_PARTNER(PARTNER_NONE)) diff --git a/src/battle_controller_recorded_opponent.c b/src/battle_controller_recorded_opponent.c index 0c970a8aac..1e471044d5 100644 --- a/src/battle_controller_recorded_opponent.c +++ b/src/battle_controller_recorded_opponent.c @@ -196,20 +196,6 @@ static void Intro_WaitForShinyAnimAndHealthbox(u32 battler) } } -static void TrySetBattlerShadowSpriteCallback(u32 battler) -{ - - if (gSprites[gBattleSpritesDataPtr->healthBoxesData[battler].shadowSpriteIdPrimary].callback == SpriteCallbackDummy) - { - if (B_ENEMY_MON_SHADOW_STYLE <= GEN_3 - || P_GBA_STYLE_SPECIES_GFX == TRUE - || gSprites[gBattleSpritesDataPtr->healthBoxesData[battler].shadowSpriteIdSecondary].callback == SpriteCallbackDummy) - { - SetBattlerShadowSpriteCallback(battler, GetMonData(&gEnemyParty[gBattlerPartyIndexes[battler]], MON_DATA_SPECIES)); - } - } -} - static void Intro_TryShinyAnimShowHealthbox(u32 battler) { bool32 bgmRestored = FALSE; @@ -217,11 +203,11 @@ static void Intro_TryShinyAnimShowHealthbox(u32 battler) if (!gBattleSpritesDataPtr->healthBoxesData[battler].triedShinyMonAnim && !gBattleSpritesDataPtr->healthBoxesData[battler].ballAnimActive) - TryShinyAnimation(battler, &gEnemyParty[gBattlerPartyIndexes[battler]]); + TryShinyAnimation(battler, GetBattlerMon(battler)); if (!gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(battler)].triedShinyMonAnim && !gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(battler)].ballAnimActive) - TryShinyAnimation(BATTLE_PARTNER(battler), &gEnemyParty[gBattlerPartyIndexes[BATTLE_PARTNER(battler)]]); + TryShinyAnimation(BATTLE_PARTNER(battler), GetBattlerMon(BATTLE_PARTNER(battler))); if (!gBattleSpritesDataPtr->healthBoxesData[battler].ballAnimActive && !gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(battler)].ballAnimActive) { @@ -229,11 +215,11 @@ static void Intro_TryShinyAnimShowHealthbox(u32 battler) { if (IsDoubleBattle() && !(gBattleTypeFlags & BATTLE_TYPE_MULTI)) { - UpdateHealthboxAttribute(gHealthboxSpriteIds[BATTLE_PARTNER(battler)], &gEnemyParty[gBattlerPartyIndexes[BATTLE_PARTNER(battler)]], HEALTHBOX_ALL); + UpdateHealthboxAttribute(gHealthboxSpriteIds[BATTLE_PARTNER(battler)], GetBattlerMon(BATTLE_PARTNER(battler)), HEALTHBOX_ALL); StartHealthboxSlideIn(BATTLE_PARTNER(battler)); SetHealthboxSpriteVisible(gHealthboxSpriteIds[BATTLE_PARTNER(battler)]); } - UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], &gEnemyParty[gBattlerPartyIndexes[battler]], HEALTHBOX_ALL); + UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], GetBattlerMon(battler), HEALTHBOX_ALL); StartHealthboxSlideIn(battler); SetHealthboxSpriteVisible(gHealthboxSpriteIds[battler]); } @@ -302,86 +288,32 @@ static void Intro_TryShinyAnimShowHealthbox(u32 battler) static void TryShinyAnimAfterMonAnim(u32 battler) { - if (gSprites[gBattlerSpriteIds[battler]].callback == SpriteCallbackDummy - && gSprites[gBattlerSpriteIds[battler]].x2 == 0) - { - if (!gBattleSpritesDataPtr->healthBoxesData[battler].triedShinyMonAnim) - { - TryShinyAnimation(battler, &gEnemyParty[gBattlerPartyIndexes[battler]]); - } - else - { - if (gBattleSpritesDataPtr->healthBoxesData[battler].finishedShinyMonAnim) - { - gBattleSpritesDataPtr->healthBoxesData[battler].triedShinyMonAnim = FALSE; - gBattleSpritesDataPtr->healthBoxesData[battler].finishedShinyMonAnim = FALSE; - FreeSpriteTilesByTag(ANIM_TAG_GOLD_STARS); - FreeSpritePaletteByTag(ANIM_TAG_GOLD_STARS); - RecordedOpponentBufferExecCompleted(battler); - } - } - } + if (TryShinyAnimAfterMonAnimUtil(battler)) + RecordedOpponentBufferExecCompleted(battler); } static void SwitchIn_ShowSubstitute(u32 battler) { - if (gSprites[gHealthboxSpriteIds[battler]].callback == SpriteCallbackDummy) - { - if (gBattleSpritesDataPtr->battlerData[battler].behindSubstitute) - InitAndLaunchSpecialAnimation(battler, battler, battler, B_ANIM_MON_TO_SUBSTITUTE); - + if (SwitchIn_ShowSubstituteUtil(battler)) gBattlerControllerFuncs[battler] = SwitchIn_HandleSoundAndEnd; - } } static void SwitchIn_HandleSoundAndEnd(u32 battler) { - if (!gBattleSpritesDataPtr->healthBoxesData[battler].specialAnimActive - && !IsCryPlayingOrClearCrySongs()) - { - if (gSprites[gBattlerSpriteIds[battler]].callback == SpriteCallbackDummy - || gSprites[gBattlerSpriteIds[battler]].callback == SpriteCallbackDummy_2) - { - m4aMPlayVolumeControl(&gMPlayInfo_BGM, TRACKS_ALL, 0x100); - RecordedOpponentBufferExecCompleted(battler); - } - } + if (SwitchIn_HandleSoundAndEndUtil(battler)) + RecordedOpponentBufferExecCompleted(battler); } static void SwitchIn_ShowHealthbox(u32 battler) { - if (gBattleSpritesDataPtr->healthBoxesData[battler].finishedShinyMonAnim - && gSprites[gBattlerSpriteIds[battler]].callback == SpriteCallbackDummy) - { - gBattleSpritesDataPtr->healthBoxesData[battler].triedShinyMonAnim = FALSE; - gBattleSpritesDataPtr->healthBoxesData[battler].finishedShinyMonAnim = FALSE; - - FreeSpriteTilesByTag(ANIM_TAG_GOLD_STARS); - FreeSpritePaletteByTag(ANIM_TAG_GOLD_STARS); - - StartSpriteAnim(&gSprites[gBattlerSpriteIds[battler]], 0); - - UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], &gEnemyParty[gBattlerPartyIndexes[battler]], HEALTHBOX_ALL); - StartHealthboxSlideIn(battler); - SetHealthboxSpriteVisible(gHealthboxSpriteIds[battler]); - CopyBattleSpriteInvisibility(battler); + if (SwitchIn_ShowHealthboxUtil(battler)) gBattlerControllerFuncs[battler] = SwitchIn_ShowSubstitute; - } } static void SwitchIn_TryShinyAnim(u32 battler) { - if (!gBattleSpritesDataPtr->healthBoxesData[battler].ballAnimActive - && !gBattleSpritesDataPtr->healthBoxesData[battler].triedShinyMonAnim) - TryShinyAnimation(battler, &gEnemyParty[gBattlerPartyIndexes[battler]]); - - if (gSprites[gBattleControllerData[battler]].callback == SpriteCallbackDummy - && !gBattleSpritesDataPtr->healthBoxesData[battler].ballAnimActive) - { - DestroySprite(&gSprites[gBattleControllerData[battler]]); - SetBattlerShadowSpriteCallback(battler, GetMonData(&gEnemyParty[gBattlerPartyIndexes[battler]], MON_DATA_SPECIES)); + if (SwitchIn_TryShinyAnimUtil(battler)) gBattlerControllerFuncs[battler] = SwitchIn_ShowHealthbox; - } } static void RecordedOpponentHandleLoadMonSprite(u32 battler) @@ -501,7 +433,7 @@ static void RecordedOpponentHandleStatusIconUpdate(u32 battler) { DoStatusIconUpdate(battler); if (gTestRunnerEnabled) - TestRunner_Battle_RecordStatus1(battler, GetMonData(&gEnemyParty[gBattlerPartyIndexes[battler]], MON_DATA_STATUS)); + TestRunner_Battle_RecordStatus1(battler, GetMonData(GetBattlerMon(battler), MON_DATA_STATUS)); } } diff --git a/src/battle_controller_recorded_player.c b/src/battle_controller_recorded_player.c index f65eb1dc73..2476929282 100644 --- a/src/battle_controller_recorded_player.c +++ b/src/battle_controller_recorded_player.c @@ -167,9 +167,9 @@ static void Intro_WaitForShinyAnimAndHealthbox(u32 battler) FreeSpriteTilesByTag(ANIM_TAG_GOLD_STARS); FreeSpritePaletteByTag(ANIM_TAG_GOLD_STARS); - HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[battler]], battler); + HandleLowHpMusicChange(GetBattlerMon(battler), battler); if (IsDoubleBattle()) - HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[BATTLE_PARTNER(battler)]], BATTLE_PARTNER(battler)); + HandleLowHpMusicChange(GetBattlerMon(BATTLE_PARTNER(battler)), BATTLE_PARTNER(battler)); gBattleSpritesDataPtr->healthBoxesData[battler].introEndDelay = 3; gBattlerControllerFuncs[battler] = Intro_DelayAndEnd; @@ -210,11 +210,11 @@ static void Intro_TryShinyAnimShowHealthbox(u32 battler) { if (!gBattleSpritesDataPtr->healthBoxesData[battler].triedShinyMonAnim && !gBattleSpritesDataPtr->healthBoxesData[battler].ballAnimActive) - TryShinyAnimation(battler, &gPlayerParty[gBattlerPartyIndexes[battler]]); + TryShinyAnimation(battler, GetBattlerMon(battler)); if (!gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(battler)].triedShinyMonAnim && !gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(battler)].ballAnimActive) - TryShinyAnimation(BATTLE_PARTNER(battler), &gPlayerParty[gBattlerPartyIndexes[BATTLE_PARTNER(battler)]]); + TryShinyAnimation(BATTLE_PARTNER(battler), GetBattlerMon(BATTLE_PARTNER(battler))); } if (!gBattleSpritesDataPtr->healthBoxesData[battler].ballAnimActive @@ -224,11 +224,11 @@ static void Intro_TryShinyAnimShowHealthbox(u32 battler) { if (IsDoubleBattle() && !(gBattleTypeFlags & BATTLE_TYPE_MULTI)) { - UpdateHealthboxAttribute(gHealthboxSpriteIds[BATTLE_PARTNER(battler)], &gPlayerParty[gBattlerPartyIndexes[BATTLE_PARTNER(battler)]], HEALTHBOX_ALL); + UpdateHealthboxAttribute(gHealthboxSpriteIds[BATTLE_PARTNER(battler)], GetBattlerMon(BATTLE_PARTNER(battler)), HEALTHBOX_ALL); StartHealthboxSlideIn(BATTLE_PARTNER(battler)); SetHealthboxSpriteVisible(gHealthboxSpriteIds[BATTLE_PARTNER(battler)]); } - UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], &gPlayerParty[gBattlerPartyIndexes[battler]], HEALTHBOX_ALL); + UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], GetBattlerMon(battler), HEALTHBOX_ALL); StartHealthboxSlideIn(battler); SetHealthboxSpriteVisible(gHealthboxSpriteIds[battler]); } @@ -279,60 +279,26 @@ static void WaitForMonAnimAfterLoad(u32 battler) static void SwitchIn_ShowSubstitute(u32 battler) { - if (gSprites[gHealthboxSpriteIds[battler]].callback == SpriteCallbackDummy) - { - CopyBattleSpriteInvisibility(battler); - if (gBattleSpritesDataPtr->battlerData[battler].behindSubstitute) - InitAndLaunchSpecialAnimation(battler, battler, battler, B_ANIM_MON_TO_SUBSTITUTE); - + if (SwitchIn_ShowSubstituteUtil(battler)) gBattlerControllerFuncs[battler] = SwitchIn_WaitAndEnd; - } } static void SwitchIn_WaitAndEnd(u32 battler) { - if (!gBattleSpritesDataPtr->healthBoxesData[battler].specialAnimActive - && gSprites[gBattlerSpriteIds[battler]].callback == SpriteCallbackDummy) - { + if (SwitchIn_WaitAndEndUtil(battler)) RecordedPlayerBufferExecCompleted(battler); - } } static void SwitchIn_ShowHealthbox(u32 battler) { - if (gBattleSpritesDataPtr->healthBoxesData[battler].finishedShinyMonAnim) - { - gBattleSpritesDataPtr->healthBoxesData[battler].triedShinyMonAnim = FALSE; - gBattleSpritesDataPtr->healthBoxesData[battler].finishedShinyMonAnim = FALSE; - - FreeSpriteTilesByTag(ANIM_TAG_GOLD_STARS); - FreeSpritePaletteByTag(ANIM_TAG_GOLD_STARS); - - CreateTask(Task_PlayerController_RestoreBgmAfterCry, 10); - HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[battler]], battler); - StartSpriteAnim(&gSprites[gBattlerSpriteIds[battler]], 0); - UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], &gPlayerParty[gBattlerPartyIndexes[battler]], HEALTHBOX_ALL); - StartHealthboxSlideIn(battler); - SetHealthboxSpriteVisible(gHealthboxSpriteIds[battler]); - + if (SwitchIn_ShowHealthboxUtil(battler)) gBattlerControllerFuncs[battler] = SwitchIn_ShowSubstitute; - } } static void SwitchIn_TryShinyAnim(u32 battler) { - if (!gBattleSpritesDataPtr->healthBoxesData[battler].triedShinyMonAnim - && !gBattleSpritesDataPtr->healthBoxesData[battler].ballAnimActive) - { - TryShinyAnimation(battler, &gPlayerParty[gBattlerPartyIndexes[battler]]); - } - - if (gSprites[gBattleControllerData[battler]].callback == SpriteCallbackDummy - && !gBattleSpritesDataPtr->healthBoxesData[battler].ballAnimActive) - { - DestroySprite(&gSprites[gBattleControllerData[battler]]); + if (SwitchIn_TryShinyAnimUtil(battler)) gBattlerControllerFuncs[battler] = SwitchIn_ShowHealthbox; - } } static void RecordedPlayerBufferExecCompleted(u32 battler) @@ -494,7 +460,7 @@ static void RecordedPlayerHandleStatusIconUpdate(u32 battler) { DoStatusIconUpdate(battler); if (gTestRunnerEnabled) - TestRunner_Battle_RecordStatus1(battler, GetMonData(&gPlayerParty[gBattlerPartyIndexes[battler]], MON_DATA_STATUS)); + TestRunner_Battle_RecordStatus1(battler, GetMonData(GetBattlerMon(battler), MON_DATA_STATUS)); } } @@ -506,7 +472,7 @@ static void RecordedPlayerHandleStatusAnimation(u32 battler) static void RecordedPlayerHandleIntroTrainerBallThrow(u32 battler) { u32 trainerPicId; - const u32 *trainerPal; + const u16 *trainerPal; if (gBattleTypeFlags & BATTLE_TYPE_RECORDED_LINK) trainerPicId = gLinkPlayers[GetBattlerMultiplayerId(battler)].gender + TRAINER_BACK_PIC_BRENDAN; diff --git a/src/battle_controller_safari.c b/src/battle_controller_safari.c index 7c2542b603..560a95cc5f 100644 --- a/src/battle_controller_safari.c +++ b/src/battle_controller_safari.c @@ -267,7 +267,7 @@ static void SafariHandlePrintString(u32 battler) static void SafariHandlePrintSelectionString(u32 battler) { - if (GetBattlerSide(battler) == B_SIDE_PLAYER) + if (IsOnPlayerSide(battler)) SafariHandlePrintString(battler); else SafariBufferExecCompleted(battler); @@ -307,7 +307,7 @@ static void SafariHandleChooseItem(u32 battler) static void SafariHandleStatusIconUpdate(u32 battler) { - UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], &gPlayerParty[gBattlerPartyIndexes[battler]], HEALTHBOX_SAFARI_BALLS_TEXT); + UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], GetBattlerMon(battler), HEALTHBOX_SAFARI_BALLS_TEXT); SafariBufferExecCompleted(battler); } @@ -315,7 +315,7 @@ static void SafariHandleStatusIconUpdate(u32 battler) // Player is not a pokemon, so it can't really faint in the Safari anyway. static void SafariHandleFaintingCry(u32 battler) { - u16 species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battler]], MON_DATA_SPECIES); + u16 species = GetMonData(GetBattlerMon(battler), MON_DATA_SPECIES); PlayCry_Normal(species, 25); SafariBufferExecCompleted(battler); @@ -324,7 +324,7 @@ static void SafariHandleFaintingCry(u32 battler) static void SafariHandleIntroTrainerBallThrow(u32 battler) { - UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], &gPlayerParty[gBattlerPartyIndexes[battler]], HEALTHBOX_SAFARI_ALL_TEXT); + UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], GetBattlerMon(battler), HEALTHBOX_SAFARI_ALL_TEXT); StartHealthboxSlideIn(battler); SetHealthboxSpriteVisible(gHealthboxSpriteIds[battler]); gBattlerControllerFuncs[battler] = Controller_WaitForHealthbox; diff --git a/src/battle_controller_wally.c b/src/battle_controller_wally.c index f4de1f9c27..3381e5a5bd 100644 --- a/src/battle_controller_wally.c +++ b/src/battle_controller_wally.c @@ -218,11 +218,11 @@ static void Intro_TryShinyAnimShowHealthbox(u32 battler) { if (!gBattleSpritesDataPtr->healthBoxesData[battler].triedShinyMonAnim && !gBattleSpritesDataPtr->healthBoxesData[battler].ballAnimActive) - TryShinyAnimation(battler, &gPlayerParty[gBattlerPartyIndexes[battler]]); + TryShinyAnimation(battler, GetBattlerMon(battler)); if (!gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(battler)].triedShinyMonAnim && !gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(battler)].ballAnimActive) - TryShinyAnimation(BATTLE_PARTNER(battler), &gPlayerParty[gBattlerPartyIndexes[BATTLE_PARTNER(battler)]]); + TryShinyAnimation(BATTLE_PARTNER(battler), GetBattlerMon(BATTLE_PARTNER(battler))); if (!gBattleSpritesDataPtr->healthBoxesData[battler].ballAnimActive && !gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(battler)].ballAnimActive @@ -232,12 +232,12 @@ static void Intro_TryShinyAnimShowHealthbox(u32 battler) if (IsDoubleBattle() && !(gBattleTypeFlags & BATTLE_TYPE_MULTI)) { DestroySprite(&gSprites[gBattleControllerData[BATTLE_PARTNER(battler)]]); - UpdateHealthboxAttribute(gHealthboxSpriteIds[BATTLE_PARTNER(battler)], &gPlayerParty[gBattlerPartyIndexes[BATTLE_PARTNER(battler)]], HEALTHBOX_ALL); + UpdateHealthboxAttribute(gHealthboxSpriteIds[BATTLE_PARTNER(battler)], GetBattlerMon(BATTLE_PARTNER(battler)), HEALTHBOX_ALL); StartHealthboxSlideIn(BATTLE_PARTNER(battler)); SetHealthboxSpriteVisible(gHealthboxSpriteIds[BATTLE_PARTNER(battler)]); } DestroySprite(&gSprites[gBattleControllerData[battler]]); - UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], &gPlayerParty[gBattlerPartyIndexes[battler]], HEALTHBOX_ALL); + UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], GetBattlerMon(battler), HEALTHBOX_ALL); StartHealthboxSlideIn(battler); SetHealthboxSpriteVisible(gHealthboxSpriteIds[battler]); @@ -266,7 +266,7 @@ static void Intro_WaitForShinyAnimAndHealthbox(u32 battler) FreeSpritePaletteByTag(ANIM_TAG_GOLD_STARS); CreateTask(Task_PlayerController_RestoreBgmAfterCry, 10); - HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[battler]], battler); + HandleLowHpMusicChange(GetBattlerMon(battler), battler); WallyBufferExecCompleted(battler); } @@ -326,7 +326,7 @@ static void WallyHandlePrintString(u32 battler) static void WallyHandlePrintSelectionString(u32 battler) { - if (GetBattlerSide(battler) == B_SIDE_PLAYER) + if (IsOnPlayerSide(battler)) WallyHandlePrintString(battler); else WallyBufferExecCompleted(battler); @@ -408,7 +408,7 @@ static void WallyHandlePlaySE(u32 battler) // Wally's Pokémon during the tutorial is never intended to faint, so that's probably why it's different here. static void WallyHandleFaintingCry(u32 battler) { - u16 species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battler]], MON_DATA_SPECIES); + u16 species = GetMonData(GetBattlerMon(battler), MON_DATA_SPECIES); PlayCry_Normal(species, 25); WallyBufferExecCompleted(battler); @@ -416,7 +416,7 @@ static void WallyHandleFaintingCry(u32 battler) static void WallyHandleIntroTrainerBallThrow(u32 battler) { - const u32 *trainerPal = gTrainerBacksprites[TRAINER_BACK_PIC_WALLY].palette.data; + const u16 *trainerPal = gTrainerBacksprites[TRAINER_BACK_PIC_WALLY].palette.data; BtlController_HandleIntroTrainerBallThrow(battler, 0xD6F8, trainerPal, 31, Intro_TryShinyAnimShowHealthbox); } diff --git a/src/battle_controllers.c b/src/battle_controllers.c index 88f8b1f7c3..9b6a74fc6e 100644 --- a/src/battle_controllers.c +++ b/src/battle_controllers.c @@ -14,6 +14,7 @@ #include "event_object_movement.h" #include "link.h" #include "link_rfu.h" +#include "m4a.h" #include "palette.h" #include "party_menu.h" #include "recorded_battle.h" @@ -25,6 +26,7 @@ #include "text.h" #include "constants/abilities.h" #include "constants/songs.h" +#include "pokemon_animation.h" static EWRAM_DATA u8 sLinkSendTaskId = 0; static EWRAM_DATA u8 sLinkReceiveTaskId = 0; @@ -42,6 +44,9 @@ static void Task_HandleCopyReceivedLinkBuffersData(u8 taskId); static void Task_StartSendOutAnim(u8 taskId); static void SpriteCB_FreePlayerSpriteLoadMonSprite(struct Sprite *sprite); static void SpriteCB_FreeOpponentSprite(struct Sprite *sprite); +static u32 ReturnAnimIdForBattler(bool32 isPlayerSide, u32 specificBattler); +static void LaunchKOAnimation(u32 battlerId, u16 animId, bool32 isFront); +static void AnimateMonAfterKnockout(u32 battler); void HandleLinkBattleSetup(void) { @@ -627,7 +632,7 @@ static void SetBattlePartyIds(void) { if (i < 2) { - if (GetBattlerSide(i) == B_SIDE_PLAYER) + if (IsOnPlayerSide(i)) { if (IsValidForBattle(&gPlayerParty[j])) { @@ -646,7 +651,7 @@ static void SetBattlePartyIds(void) } else { - if (GetBattlerSide(i) == B_SIDE_PLAYER) + if (IsOnPlayerSide(i)) { if (IsValidForBattle(&gPlayerParty[j]) && gBattlerPartyIndexes[i - 2] != j) { @@ -1156,15 +1161,15 @@ void BtlController_EmitMoveAnimation(u32 battler, u32 bufferId, u16 move, u8 tur PrepareBufferDataTransfer(battler, bufferId, gBattleResources->transferBuffer, 16 + sizeof(struct DisableStruct)); } -void BtlController_EmitPrintString(u32 battler, u32 bufferId, u16 stringId) +void BtlController_EmitPrintString(u32 battler, u32 bufferId, enum StringID stringID) { s32 i; struct BattleMsgData *stringInfo; gBattleResources->transferBuffer[0] = CONTROLLER_PRINTSTRING; gBattleResources->transferBuffer[1] = gBattleOutcome; - gBattleResources->transferBuffer[2] = stringId; - gBattleResources->transferBuffer[3] = (stringId & 0xFF00) >> 8; + gBattleResources->transferBuffer[2] = stringID; + gBattleResources->transferBuffer[3] = (stringID & 0xFF00) >> 8; stringInfo = (struct BattleMsgData *)(&gBattleResources->transferBuffer[4]); stringInfo->currentMove = gCurrentMove; @@ -1188,15 +1193,15 @@ void BtlController_EmitPrintString(u32 battler, u32 bufferId, u16 stringId) PrepareBufferDataTransfer(battler, bufferId, gBattleResources->transferBuffer, sizeof(struct BattleMsgData) + 4); } -void BtlController_EmitPrintSelectionString(u32 battler, u32 bufferId, u16 stringId) +void BtlController_EmitPrintSelectionString(u32 battler, u32 bufferId, enum StringID stringID) { s32 i; struct BattleMsgData *stringInfo; gBattleResources->transferBuffer[0] = CONTROLLER_PRINTSTRINGPLAYERONLY; gBattleResources->transferBuffer[1] = CONTROLLER_PRINTSTRINGPLAYERONLY; - gBattleResources->transferBuffer[2] = stringId; - gBattleResources->transferBuffer[3] = (stringId & 0xFF00) >> 8; + gBattleResources->transferBuffer[2] = stringID; + gBattleResources->transferBuffer[3] = (stringID & 0xFF00) >> 8; stringInfo = (struct BattleMsgData *)(&gBattleResources->transferBuffer[4]); stringInfo->currentMove = gCurrentMove; @@ -2120,40 +2125,57 @@ static void SetBattlerMonData(u32 battler, struct Pokemon *party, u32 monId) break; } - if (GetBattlerSide(battler) == B_SIDE_PLAYER) + if (IsOnPlayerSide(battler)) HandleLowHpMusicChange(&party[gBattlerPartyIndexes[battler]], battler); } -// In normal singles, if follower pokemon is out, have it slide in instead of being thrown -static bool8 ShouldDoSlideInAnim(void) +// In normal singles, if follower Pokémon exists, and the Pokémon following is being sent out, have it slide in instead of being thrown +static bool8 ShouldDoSlideInAnim(u32 battler) { 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; + + if (GetFirstLiveMon() != GetBattlerMon(battler)) + return FALSE; + return TRUE; } void StartSendOutAnim(u32 battler, bool32 dontClearTransform, bool32 dontClearSubstituteBit, bool32 doSlideIn) { u16 species; - u32 side = GetBattlerSide(battler); - struct Pokemon *party = GetBattlerParty(battler); + struct Pokemon *mon = GetBattlerMon(battler); + u32 sendoutType; + + if (IsOnPlayerSide(battler)) + { + if (doSlideIn) + sendoutType = POKEBALL_PLAYER_SLIDEIN; + else + sendoutType = POKEBALL_PLAYER_SENDOUT; + } + else + { + sendoutType = POKEBALL_OPPONENT_SENDOUT; + } ClearTemporarySpeciesSpriteData(battler, dontClearTransform, dontClearSubstituteBit); gBattlerPartyIndexes[battler] = gBattleResources->bufferA[battler][1]; species = GetIllusionMonSpecies(battler); if (species == SPECIES_NONE) - species = GetMonData(&party[gBattlerPartyIndexes[battler]], MON_DATA_SPECIES); + species = GetMonData(mon, MON_DATA_SPECIES); gBattleControllerData[battler] = CreateInvisibleSpriteWithCallback(SpriteCB_WaitForBattlerBallReleaseAnim); // Load sprite for opponent only, player sprite is expected to be already loaded. - if (side == B_SIDE_OPPONENT) - BattleLoadMonSpriteGfx(&party[gBattlerPartyIndexes[battler]], battler); + if (!IsOnPlayerSide(battler)) + BattleLoadMonSpriteGfx(mon, battler); SetMultiuseSpriteTemplateToPokemon(species, GetBattlerPosition(battler)); gBattlerSpriteIds[battler] = CreateSprite(&gMultiuseSpriteTemplate, @@ -2170,14 +2192,14 @@ void StartSendOutAnim(u32 battler, bool32 dontClearTransform, bool32 dontClearSu 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 : (doSlideIn ? POKEBALL_PLAYER_SLIDEIN : POKEBALL_PLAYER_SENDOUT)); + gSprites[gBattleControllerData[battler]].data[0] = DoPokeballSendOutAnimation(battler, 0, sendoutType); } static void FreeMonSprite(u32 battler) { FreeSpriteOamMatrix(&gSprites[gBattlerSpriteIds[battler]]); DestroySprite(&gSprites[gBattlerSpriteIds[battler]]); - if (GetBattlerSide(battler) == B_SIDE_OPPONENT) + if (!IsOnPlayerSide(battler)) HideBattlerShadowSprite(battler); SetHealthboxSpriteInvisible(gHealthboxSpriteIds[battler]); } @@ -2205,7 +2227,7 @@ static void Controller_ReturnMonToBall(u32 battler) if (!gBattleSpritesDataPtr->healthBoxesData[battler].specialAnimActive) { gBattleSpritesDataPtr->healthBoxesData[battler].animationState = 0; - InitAndLaunchSpecialAnimation(battler, battler, battler, (GetBattlerSide(battler) == B_SIDE_OPPONENT) ? B_ANIM_SWITCH_OUT_OPPONENT_MON : B_ANIM_SWITCH_OUT_PLAYER_MON); + InitAndLaunchSpecialAnimation(battler, battler, battler, !IsOnPlayerSide(battler) ? B_ANIM_SWITCH_OUT_OPPONENT_MON : B_ANIM_SWITCH_OUT_PLAYER_MON); gBattlerControllerFuncs[battler] = Controller_ReturnMonToBall2; } break; @@ -2217,7 +2239,7 @@ static void Controller_FaintPlayerMon(u32 battler) u32 spriteId = gBattlerSpriteIds[battler]; if (gSprites[spriteId].y + gSprites[spriteId].y2 > DISPLAY_HEIGHT) { - BattleGfxSfxDummy2(GetMonData(&gPlayerParty[gBattlerPartyIndexes[battler]], MON_DATA_SPECIES)); + BattleGfxSfxDummy2(GetMonData(GetBattlerMon(battler), MON_DATA_SPECIES)); FreeOamMatrix(gSprites[spriteId].oam.matrixNum); DestroySprite(&gSprites[spriteId]); SetHealthboxSpriteInvisible(gHealthboxSpriteIds[battler]); @@ -2288,7 +2310,7 @@ static void Controller_HandleTrainerSlideBack(u32 battler) { if (gSprites[gBattleStruct->trainerSlideSpriteIds[battler]].callback == SpriteCallbackDummy) { - if (GetBattlerSide(battler) == B_SIDE_OPPONENT) + if (!IsOnPlayerSide(battler)) FreeTrainerFrontPicPalette(gSprites[gBattleStruct->trainerSlideSpriteIds[battler]].oam.affineParam); FreeSpriteOamMatrix(&gSprites[gBattleStruct->trainerSlideSpriteIds[battler]]); DestroySprite(&gSprites[gBattleStruct->trainerSlideSpriteIds[battler]]); @@ -2307,8 +2329,8 @@ void Controller_WaitForHealthBar(u32 battler) } else { - if (GetBattlerSide(battler) == B_SIDE_PLAYER) - HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[battler]], battler); + if (IsOnPlayerSide(battler)) + HandleLowHpMusicChange(GetBattlerMon(battler), battler); BattleControllerComplete(battler); } } @@ -2416,9 +2438,9 @@ void BtlController_HandleGetMonData(u32 battler) void BtlController_HandleGetRawMonData(u32 battler) { struct BattlePokemon battleMon; - struct Pokemon *party = GetBattlerParty(battler); + struct Pokemon *mon = GetBattlerMon(battler); - u8 *src = (u8 *)&party[gBattlerPartyIndexes[battler]] + gBattleResources->bufferA[battler][1]; + u8 *src = (u8 *)mon + gBattleResources->bufferA[battler][1]; u8 *dst = (u8 *)&battleMon + gBattleResources->bufferA[battler][1]; u8 i; @@ -2454,8 +2476,7 @@ void BtlController_HandleSetMonData(u32 battler) void BtlController_HandleSetRawMonData(u32 battler) { u32 i; - struct Pokemon *party = GetBattlerParty(battler); - u8 *dst = (u8 *)&party[gBattlerPartyIndexes[battler]] + gBattleResources->bufferA[battler][1]; + u8 *dst = (u8 *)GetBattlerMon(battler) + gBattleResources->bufferA[battler][1]; for (i = 0; i < gBattleResources->bufferA[battler][2]; i++) dst[i] = gBattleResources->bufferA[battler][3 + i]; @@ -2465,10 +2486,10 @@ void BtlController_HandleSetRawMonData(u32 battler) void BtlController_HandleLoadMonSprite(u32 battler, void (*controllerCallback)(u32 battler)) { - struct Pokemon *party = GetBattlerParty(battler); - u16 species = GetMonData(&party[gBattlerPartyIndexes[battler]], MON_DATA_SPECIES); + struct Pokemon *mon = GetBattlerMon(battler); + u16 species = GetMonData(mon, MON_DATA_SPECIES); - BattleLoadMonSpriteGfx(&party[gBattlerPartyIndexes[battler]], battler); + BattleLoadMonSpriteGfx(mon, battler); SetMultiuseSpriteTemplateToPokemon(species, GetBattlerPosition(battler)); gBattlerSpriteIds[battler] = CreateSprite(&gMultiuseSpriteTemplate, @@ -2493,7 +2514,7 @@ void BtlController_HandleSwitchInAnim(u32 battler, bool32 isPlayerSide, void (*c ClearTemporarySpeciesSpriteData(battler, gBattleResources->bufferA[battler][2], gBattleResources->bufferA[battler][3]); gBattlerPartyIndexes[battler] = gBattleResources->bufferA[battler][1]; if (isPlayerSide) - BattleLoadMonSpriteGfx(&gPlayerParty[gBattlerPartyIndexes[battler]], battler); + BattleLoadMonSpriteGfx(GetBattlerMon(battler), battler); StartSendOutAnim(battler, gBattleResources->bufferA[battler][2], gBattleResources->bufferA[battler][3], FALSE); gBattlerControllerFuncs[battler] = controllerCallback; } @@ -2520,7 +2541,7 @@ void BtlController_HandleReturnMonToBall(u32 battler) void BtlController_HandleDrawTrainerPic(u32 battler, u32 trainerPicId, bool32 isFrontPic, s16 xPos, s16 yPos, s32 subpriority) { - if (GetBattlerSide(battler) == B_SIDE_OPPONENT) // Always the front sprite for the opponent. + if (!IsOnPlayerSide(battler)) // Always the front sprite for the opponent. { DecompressTrainerFrontPic(trainerPicId, battler); SetMultiuseSpriteTemplateToTrainerFront(trainerPicId, GetBattlerPosition(battler)); @@ -2582,7 +2603,7 @@ void BtlController_HandleDrawTrainerPic(u32 battler, u32 trainerPicId, bool32 is void BtlController_HandleTrainerSlide(u32 battler, u32 trainerPicId) { - if (GetBattlerSide(battler) == B_SIDE_PLAYER) + if (IsOnPlayerSide(battler)) { DecompressTrainerBackPic(trainerPicId, battler); SetMultiuseSpriteTemplateToTrainerBack(trainerPicId, GetBattlerPosition(battler)); @@ -2616,11 +2637,9 @@ void BtlController_HandleTrainerSlide(u32 battler, u32 trainerPicId) void BtlController_HandleTrainerSlideBack(u32 battler, s16 data0, bool32 startAnim) { - u32 side = GetBattlerSide(battler); - SetSpritePrimaryCoordsFromSecondaryCoords(&gSprites[gBattleStruct->trainerSlideSpriteIds[battler]]); gSprites[gBattleStruct->trainerSlideSpriteIds[battler]].data[0] = data0; - gSprites[gBattleStruct->trainerSlideSpriteIds[battler]].data[2] = (side == B_SIDE_PLAYER) ? -40 : 280; + gSprites[gBattleStruct->trainerSlideSpriteIds[battler]].data[2] = IsOnPlayerSide(battler) ? -40 : 280; gSprites[gBattleStruct->trainerSlideSpriteIds[battler]].data[4] = gSprites[gBattleStruct->trainerSlideSpriteIds[battler]].y; gSprites[gBattleStruct->trainerSlideSpriteIds[battler]].callback = StartAnimLinearTranslation; StoreSpriteCallbackInData6(&gSprites[gBattleStruct->trainerSlideSpriteIds[battler]], SpriteCallbackDummy); @@ -2634,6 +2653,7 @@ void BtlController_HandleTrainerSlideBack(u32 battler, s16 data0, bool32 startAn void BtlController_HandleFaintAnimation(u32 battler) { + SetHealthboxSpriteInvisible(gHealthboxSpriteIds[battler]); if (gBattleSpritesDataPtr->healthBoxesData[battler].animationState == 0) { if (gBattleSpritesDataPtr->battlerData[battler].behindSubstitute) @@ -2645,9 +2665,9 @@ void BtlController_HandleFaintAnimation(u32 battler) if (!gBattleSpritesDataPtr->healthBoxesData[battler].specialAnimActive) { gBattleSpritesDataPtr->healthBoxesData[battler].animationState = 0; - if (GetBattlerSide(battler) == B_SIDE_PLAYER) + if (IsOnPlayerSide(battler)) { - HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[battler]], battler); + HandleLowHpMusicChange(GetBattlerMon(battler), battler); gSprites[gBattlerSpriteIds[battler]].sSpeedX = 0; gSprites[gBattlerSpriteIds[battler]].sSpeedY = 5; PlaySE12WithPanning(SE_FAINT, SOUND_PAN_ATTACKER); @@ -2664,6 +2684,7 @@ void BtlController_HandleFaintAnimation(u32 battler) // The player's sprite is removed in Controller_FaintPlayerMon. Controller_FaintOpponentMon only removes the healthbox once the sprite is removed by SpriteCB_FaintOpponentMon. } } + AnimateMonAfterKnockout(battler); } #undef sSpeedX @@ -2743,12 +2764,12 @@ void BtlController_HandleHealthBarUpdate(u32 battler, bool32 updateHpText) { s32 maxHP, curHP; s16 hpVal; - struct Pokemon *party = GetBattlerParty(battler); + struct Pokemon *mon = GetBattlerMon(battler); LoadBattleBarGfx(0); hpVal = gBattleResources->bufferA[battler][2] | (gBattleResources->bufferA[battler][3] << 8); - maxHP = GetMonData(&party[gBattlerPartyIndexes[battler]], MON_DATA_MAX_HP); - curHP = GetMonData(&party[gBattlerPartyIndexes[battler]], MON_DATA_HP); + maxHP = GetMonData(mon, MON_DATA_MAX_HP); + curHP = GetMonData(mon, MON_DATA_HP); if (hpVal != INSTANT_HP_BAR_DROP) { @@ -2768,9 +2789,9 @@ void BtlController_HandleHealthBarUpdate(u32 battler, bool32 updateHpText) void DoStatusIconUpdate(u32 battler) { - struct Pokemon *party = GetBattlerParty(battler); + struct Pokemon *mon = GetBattlerMon(battler); - UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], &party[gBattlerPartyIndexes[battler]], HEALTHBOX_STATUS_ICON); + UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], mon, HEALTHBOX_STATUS_ICON); gBattleSpritesDataPtr->healthBoxesData[battler].statusAnimActive = 0; gBattlerControllerFuncs[battler] = Controller_WaitForStatusAnimation; } @@ -2810,7 +2831,7 @@ void BtlController_HandleHitAnimation(u32 battler) void BtlController_HandlePlaySE(u32 battler) { - s8 pan = (GetBattlerSide(battler) == B_SIDE_PLAYER) ? SOUND_PAN_ATTACKER : SOUND_PAN_TARGET; + s32 pan = IsOnPlayerSide(battler) ? SOUND_PAN_ATTACKER : SOUND_PAN_TARGET; PlaySE12WithPanning(gBattleResources->bufferA[battler][1] | (gBattleResources->bufferA[battler][2] << 8), pan); BattleControllerComplete(battler); @@ -2836,7 +2857,7 @@ void BtlController_HandleFaintingCry(u32 battler) struct Pokemon *party; s8 pan; - if (GetBattlerSide(battler) == B_SIDE_PLAYER) + if (IsOnPlayerSide(battler)) { party = gPlayerParty; pan = -25; @@ -2870,14 +2891,14 @@ void BtlController_HandleSpriteInvisibility(u32 battler) bool32 TwoPlayerIntroMons(u32 battler) // Double battle with both player pokemon active. { - return (IsDoubleBattle() && IsValidForBattle(&gPlayerParty[gBattlerPartyIndexes[battler ^ BIT_FLANK]])); + return (IsDoubleBattle() && IsValidForBattle(GetBattlerMon(battler ^ BIT_FLANK))); } bool32 TwoOpponentIntroMons(u32 battler) // Double battle with both opponent pokemon active. { return (IsDoubleBattle() - && IsValidForBattle(&gEnemyParty[gBattlerPartyIndexes[battler]]) - && IsValidForBattle(&gEnemyParty[gBattlerPartyIndexes[BATTLE_PARTNER(battler)]])); + && IsValidForBattle(GetBattlerMon(battler)) + && IsValidForBattle(GetBattlerMon(BATTLE_PARTNER(battler)))); } // Task data for Task_StartSendOutAnim @@ -2890,7 +2911,7 @@ bool32 TwoOpponentIntroMons(u32 battler) // Double battle with both opponent pok // Sprite data for SpriteCB_FreePlayerSpriteLoadMonSprite #define sBattlerId data[5] -void BtlController_HandleIntroTrainerBallThrow(u32 battler, u16 tagTrainerPal, const u32 *trainerPal, s16 framesToWait, void (*controllerCallback)(u32 battler)) +void BtlController_HandleIntroTrainerBallThrow(u32 battler, u16 tagTrainerPal, const u16 *trainerPal, s16 framesToWait, void (*controllerCallback)(u32 battler)) { u8 paletteNum, taskId; u32 side = GetBattlerSide(battler); @@ -2914,10 +2935,10 @@ void BtlController_HandleIntroTrainerBallThrow(u32 battler, u16 tagTrainerPal, c if (side == B_SIDE_PLAYER) { StoreSpriteCallbackInData6(&gSprites[gBattleStruct->trainerSlideSpriteIds[battler]], SpriteCB_FreePlayerSpriteLoadMonSprite); - StartSpriteAnim(&gSprites[gBattleStruct->trainerSlideSpriteIds[battler]], ShouldDoSlideInAnim() ? 2 : 1); + StartSpriteAnim(&gSprites[gBattleStruct->trainerSlideSpriteIds[battler]], ShouldDoSlideInAnim(battler) ? 2 : 1); paletteNum = AllocSpritePalette(tagTrainerPal); - LoadCompressedPalette(trainerPal, OBJ_PLTT_ID(paletteNum), PLTT_SIZE_4BPP); + LoadPalette(trainerPal, OBJ_PLTT_ID(paletteNum), PLTT_SIZE_4BPP); gSprites[gBattleStruct->trainerSlideSpriteIds[battler]].oam.paletteNum = paletteNum; } else @@ -2939,7 +2960,7 @@ void BtlController_HandleIntroTrainerBallThrow(u32 battler, u16 tagTrainerPal, c static bool32 TwoMonsAtSendOut(u32 battler) { - if (GetBattlerSide(battler) == B_SIDE_PLAYER) + if (IsOnPlayerSide(battler)) { if (TwoPlayerIntroMons(battler) && !(gBattleTypeFlags & BATTLE_TYPE_MULTI)) return TRUE; @@ -2973,17 +2994,17 @@ static void Task_StartSendOutAnim(u8 taskId) if (TwoMonsAtSendOut(battler)) { gBattleResources->bufferA[battler][1] = gBattlerPartyIndexes[battler]; - StartSendOutAnim(battler, FALSE, FALSE, ShouldDoSlideInAnim()); + StartSendOutAnim(battler, FALSE, FALSE, ShouldDoSlideInAnim(battler)); battlerPartner = battler ^ BIT_FLANK; gBattleResources->bufferA[battlerPartner][1] = gBattlerPartyIndexes[battlerPartner]; - BattleLoadMonSpriteGfx(&gPlayerParty[gBattlerPartyIndexes[battlerPartner]], battlerPartner); - StartSendOutAnim(battlerPartner, FALSE, FALSE, ShouldDoSlideInAnim()); + BattleLoadMonSpriteGfx(GetBattlerMon(battlerPartner), battlerPartner); + StartSendOutAnim(battlerPartner, FALSE, FALSE, ShouldDoSlideInAnim(battler)); } else { gBattleResources->bufferA[battler][1] = gBattlerPartyIndexes[battler]; - StartSendOutAnim(battler, FALSE, FALSE, ShouldDoSlideInAnim()); + StartSendOutAnim(battler, FALSE, FALSE, ShouldDoSlideInAnim(battler)); } gBattlerControllerFuncs[battler] = (void*)(GetWordTaskArg(taskId, tControllerFunc_1)); DestroyTask(taskId); @@ -3006,7 +3027,7 @@ static void SpriteCB_FreePlayerSpriteLoadMonSprite(struct Sprite *sprite) DestroySprite(sprite); // Load mon sprite - BattleLoadMonSpriteGfx(&gPlayerParty[gBattlerPartyIndexes[battler]], battler); + BattleLoadMonSpriteGfx(GetBattlerMon(battler), battler); StartSpriteAnim(&gSprites[gBattlerSpriteIds[battler]], 0); } @@ -3021,7 +3042,7 @@ static void SpriteCB_FreeOpponentSprite(struct Sprite *sprite) void BtlController_HandleDrawPartyStatusSummary(u32 battler, u32 side, bool32 considerDelay) { - if (gBattleResources->bufferA[battler][1] != 0 && GetBattlerSide(battler) == B_SIDE_PLAYER) + if (gBattleResources->bufferA[battler][1] != 0 && IsOnPlayerSide(battler)) { BattleControllerComplete(battler); } @@ -3078,3 +3099,161 @@ void BtlController_HandleBattleAnimation(u32 battler, bool32 ignoreSE, bool32 up BattleTv_SetDataBasedOnAnimation(animationId); } } + +static void AnimateMonAfterKnockout(u32 battler) +{ + if (B_ANIMATE_MON_AFTER_KO == FALSE) + return; + + u32 oppositeBattler = BATTLE_OPPOSITE(battler); + u32 partnerBattler = BATTLE_PARTNER(oppositeBattler); + bool32 wasPlayerSideKnockedOut = (IsOnPlayerSide(battler)); + + if (IsBattlerAlive(oppositeBattler)) + LaunchKOAnimation(oppositeBattler, ReturnAnimIdForBattler(wasPlayerSideKnockedOut, oppositeBattler), wasPlayerSideKnockedOut); + + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && IsBattlerAlive(partnerBattler)) + LaunchKOAnimation(partnerBattler, ReturnAnimIdForBattler(wasPlayerSideKnockedOut, partnerBattler), wasPlayerSideKnockedOut); +} + +static void LaunchKOAnimation(u32 battlerId, u16 animId, bool32 isFront) +{ + u32 species = GetBattlerVisualSpecies(battlerId); + u32 spriteId = gBattlerSpriteIds[battlerId]; + + if (isFront) + { + LaunchAnimationTaskForFrontSprite(&gSprites[spriteId], animId); + + if (HasTwoFramesAnimation(species)) + StartSpriteAnim(&gSprites[spriteId], 1); + } + else + { + LaunchAnimationTaskForBackSprite(&gSprites[spriteId], animId); + } + + PlayCry_Normal(species, CRY_PRIORITY_NORMAL); +} + +static u32 ReturnAnimIdForBattler(bool32 wasPlayerSideKnockedOut, u32 specificBattler) +{ + u32 species = GetBattlerVisualSpecies(specificBattler); + if (wasPlayerSideKnockedOut) + return gSpeciesInfo[species].frontAnimId; + else + return GetSpeciesBackAnimSet(species); +} + +void TrySetBattlerShadowSpriteCallback(u32 battler) +{ + if (gSprites[gBattleSpritesDataPtr->healthBoxesData[battler].shadowSpriteIdPrimary].callback == SpriteCallbackDummy + && (B_ENEMY_MON_SHADOW_STYLE <= GEN_3 || P_GBA_STYLE_SPECIES_GFX == TRUE + || gSprites[gBattleSpritesDataPtr->healthBoxesData[battler].shadowSpriteIdSecondary].callback == SpriteCallbackDummy)) + SetBattlerShadowSpriteCallback(battler, GetMonData(GetBattlerMon(battler), MON_DATA_SPECIES)); +} + +bool32 TryShinyAnimAfterMonAnimUtil(u32 battler) +{ + if (gSprites[gBattlerSpriteIds[battler]].callback != SpriteCallbackDummy + || gSprites[gBattlerSpriteIds[battler]].x2 != 0) + return FALSE; + + if (!gBattleSpritesDataPtr->healthBoxesData[battler].triedShinyMonAnim) + { + TryShinyAnimation(battler, GetBattlerMon(battler)); + return FALSE; + } + + if (!gBattleSpritesDataPtr->healthBoxesData[battler].finishedShinyMonAnim) + return FALSE; + + gBattleSpritesDataPtr->healthBoxesData[battler].triedShinyMonAnim = FALSE; + gBattleSpritesDataPtr->healthBoxesData[battler].finishedShinyMonAnim = FALSE; + FreeSpriteTilesByTag(ANIM_TAG_GOLD_STARS); + FreeSpritePaletteByTag(ANIM_TAG_GOLD_STARS); + + return TRUE; +} + +bool32 SwitchIn_ShowSubstituteUtil(u32 battler) +{ + if (gSprites[gHealthboxSpriteIds[battler]].callback != SpriteCallbackDummy) + return FALSE; + + if (GetBattlerSide(battler) == B_SIDE_PLAYER) + CopyBattleSpriteInvisibility(battler); + + if (gBattleSpritesDataPtr->battlerData[battler].behindSubstitute) + InitAndLaunchSpecialAnimation(battler, battler, battler, B_ANIM_MON_TO_SUBSTITUTE); + + return TRUE; +} + +bool32 SwitchIn_WaitAndEndUtil(u32 battler) +{ + return !gBattleSpritesDataPtr->healthBoxesData[battler].specialAnimActive + && gSprites[gBattlerSpriteIds[battler]].callback == SpriteCallbackDummy; +} + +bool32 SwitchIn_HandleSoundAndEndUtil(u32 battler) +{ + if (gBattleSpritesDataPtr->healthBoxesData[battler].specialAnimActive || IsCryPlayingOrClearCrySongs()) + return FALSE; + + if (gSprites[gBattlerSpriteIds[battler]].callback != SpriteCallbackDummy + && gSprites[gBattlerSpriteIds[battler]].callback != SpriteCallbackDummy_2 + && GetBattlerSide(battler) == B_SIDE_OPPONENT) + return FALSE; + + m4aMPlayVolumeControl(&gMPlayInfo_BGM, TRACKS_ALL, 0x100); + return TRUE; +} + +bool32 SwitchIn_ShowHealthboxUtil(u32 battler) +{ + u32 side = GetBattlerSide(battler); + + if (!gBattleSpritesDataPtr->healthBoxesData[battler].finishedShinyMonAnim + || (side == B_SIDE_OPPONENT && gSprites[gBattlerSpriteIds[battler]].callback != SpriteCallbackDummy)) + return FALSE; + + gBattleSpritesDataPtr->healthBoxesData[battler].triedShinyMonAnim = FALSE; + gBattleSpritesDataPtr->healthBoxesData[battler].finishedShinyMonAnim = FALSE; + FreeSpriteTilesByTag(ANIM_TAG_GOLD_STARS); + FreeSpritePaletteByTag(ANIM_TAG_GOLD_STARS); + + if (side == B_SIDE_PLAYER) + { + CreateTask(Task_PlayerController_RestoreBgmAfterCry, 10); + HandleLowHpMusicChange(GetBattlerMon(battler), battler); + } + + StartSpriteAnim(&gSprites[gBattlerSpriteIds[battler]], 0); + UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], GetBattlerMon(battler), HEALTHBOX_ALL); + StartHealthboxSlideIn(battler); + SetHealthboxSpriteVisible(gHealthboxSpriteIds[battler]); + + if (side == B_SIDE_OPPONENT) + CopyBattleSpriteInvisibility(battler); + + return TRUE; +} + +bool32 SwitchIn_TryShinyAnimUtil(u32 battler) +{ + if (!gBattleSpritesDataPtr->healthBoxesData[battler].ballAnimActive + && !gBattleSpritesDataPtr->healthBoxesData[battler].triedShinyMonAnim) + TryShinyAnimation(battler, GetBattlerMon(battler)); + + if (gSprites[gBattleControllerData[battler]].callback != SpriteCallbackDummy + || gBattleSpritesDataPtr->healthBoxesData[battler].ballAnimActive) + return FALSE; + + DestroySprite(&gSprites[gBattleControllerData[battler]]); + + if (GetBattlerSide(battler) == B_SIDE_OPPONENT) + SetBattlerShadowSpriteCallback(battler, GetMonData(GetBattlerMon(battler), MON_DATA_SPECIES)); + + return TRUE; +} diff --git a/src/battle_debug.c b/src/battle_debug.c index c41ea7d409..ffe1b76cea 100644 --- a/src/battle_debug.c +++ b/src/battle_debug.c @@ -278,7 +278,7 @@ enum }; // Static Declarations -static const u8 *GetHoldEffectName(u16 holdEffect); +static const u8 *GetHoldEffectName(enum ItemHoldEffect holdEffect); // const rom data static const u8 sText_Moves[] = _("Moves"); @@ -967,12 +967,12 @@ static void PutMovesPointsText(struct BattleDebugMenu *data) continue; battlerDef = gSprites[data->spriteIds.aiIconSpriteIds[j]].data[0]; ConvertIntToDecimalStringN(text, - gBattleStruct->aiFinalScore[data->aiBattlerId][battlerDef][i], + gAiBattleData->finalScore[data->aiBattlerId][battlerDef][i], STR_CONV_MODE_RIGHT_ALIGN, 3); AddTextPrinterParameterized(data->aiMovesWindowId, FONT_NORMAL, text, 83 + count * 54, i * 15, 0, NULL); ConvertIntToDecimalStringN(text, - AI_DATA->simulatedDmg[data->aiBattlerId][battlerDef][i].expected, + AI_GetDamage(data->aiBattlerId, battlerDef, i, AI_ATTACKING, gAiLogicData), STR_CONV_MODE_RIGHT_ALIGN, 3); AddTextPrinterParameterized(data->aiMovesWindowId, FONT_NORMAL, text, 110 + count * 54, i * 15, 0, NULL); @@ -980,9 +980,9 @@ static void PutMovesPointsText(struct BattleDebugMenu *data) } } - if (AI_DATA->shouldSwitch & (1u << data->aiBattlerId)) + if (gAiLogicData->shouldSwitch & (1u << data->aiBattlerId)) { - u32 switchMon = GetMonData(&gEnemyParty[AI_DATA->mostSuitableMonId[data->aiBattlerId]], MON_DATA_SPECIES); + u32 switchMon = GetMonData(&gEnemyParty[gAiLogicData->mostSuitableMonId[data->aiBattlerId]], MON_DATA_SPECIES); AddTextPrinterParameterized(data->aiMovesWindowId, FONT_NORMAL, sText_IsSwitching, 74, 64, 0, NULL); AddTextPrinterParameterized(data->aiMovesWindowId, FONT_NORMAL, gSpeciesInfo[switchMon].speciesName, 74 + 68, 64, 0, NULL); @@ -1046,8 +1046,7 @@ static void Task_ShowAiPoints(u8 taskId) data->spriteIds.aiIconSpriteIds[i] = 0xFF; } } - - mon = &GetBattlerParty(data->aiBattlerId)[gBattlerPartyIndexes[data->aiBattlerId]]; + mon = GetBattlerMon(data->aiBattlerId); data->aiMonSpriteId = CreateMonPicSprite(gBattleMons[data->aiBattlerId].species, GetMonData(mon, MON_DATA_IS_SHINY), @@ -1127,11 +1126,11 @@ static void PutAiInfoText(struct BattleDebugMenu *data) // items info for (i = 0; i < gBattlersCount; i++) { - if (GetBattlerSide(i) == B_SIDE_PLAYER && IsBattlerAlive(i)) + if (IsOnPlayerSide(i) && IsBattlerAlive(i)) { - u16 ability = AI_DATA->abilities[i]; - u16 holdEffect = AI_DATA->holdEffects[i]; - u16 item = AI_DATA->items[i]; + u16 ability = gAiLogicData->abilities[i]; + enum ItemHoldEffect holdEffect = gAiLogicData->holdEffects[i]; + u16 item = gAiLogicData->items[i]; u8 x = (i == B_POSITION_PLAYER_LEFT) ? 83 + (i) * 75 : 83 + (i-1) * 75; AddTextPrinterParameterized(data->aiMovesWindowId, FONT_SMALL, gAbilitiesInfo[ability].name, x, 0, 0, NULL); AddTextPrinterParameterized(data->aiMovesWindowId, FONT_SMALL, GetItemName(item), x, 15, 0, NULL); @@ -1147,10 +1146,10 @@ static void PutAiPartyText(struct BattleDebugMenu *data) { u32 i, j, count; u8 *text = Alloc(0x50), *txtPtr; - struct AiPartyMon *aiMons = AI_PARTY->mons[GetBattlerSide(data->aiBattlerId)]; + struct AiPartyMon *aiMons = gAiPartyData->mons[GetBattlerSide(data->aiBattlerId)]; FillWindowPixelBuffer(data->aiMovesWindowId, 0x11); - count = AI_PARTY->count[GetBattlerSide(data->aiBattlerId)]; + count = gAiPartyData->count[GetBattlerSide(data->aiBattlerId)]; for (i = 0; i < count; i++) { if (aiMons[i].wasSentInBattle) @@ -1214,7 +1213,7 @@ static void Task_ShowAiKnowledge(u8 taskId) LoadMonIconPalettes(); for (count = 0, i = 0; i < MAX_BATTLERS_COUNT; i++) { - if (GetBattlerSide(i) == B_SIDE_PLAYER && IsBattlerAlive(i)) + if (IsOnPlayerSide(i) && IsBattlerAlive(i)) { data->spriteIds.aiIconSpriteIds[i] = CreateMonIcon(gBattleMons[i].species, SpriteCallbackDummy, @@ -1228,7 +1227,7 @@ static void Task_ShowAiKnowledge(u8 taskId) } } - mon = &GetBattlerParty(data->aiBattlerId)[gBattlerPartyIndexes[data->aiBattlerId]]; + mon = GetBattlerMon(data->aiBattlerId); data->aiMonSpriteId = CreateMonPicSprite(gBattleMons[data->aiBattlerId].species, GetMonData(mon, MON_DATA_IS_SHINY), @@ -1276,8 +1275,8 @@ static void Task_ShowAiParty(u8 taskId) LoadMonIconPalettes(); LoadPartyMenuAilmentGfx(); data->aiBattlerId = data->battlerId; - aiMons = AI_PARTY->mons[GetBattlerSide(data->aiBattlerId)]; - for (i = 0; i < AI_PARTY->count[GetBattlerSide(data->aiBattlerId)]; i++) + aiMons = gAiPartyData->mons[GetBattlerSide(data->aiBattlerId)]; + for (i = 0; i < gAiPartyData->count[GetBattlerSide(data->aiBattlerId)]; i++) { u16 species = SPECIES_NONE; // Question mark if (aiMons[i].wasSentInBattle && aiMons[i].species) @@ -1899,7 +1898,6 @@ static u16 *GetSideStatusValue(struct BattleDebugMenu *data, bool32 changeStatus *(u32 *)(data->modifyArrows.modifiedValPtr) |= SIDE_STATUS_REFLECT; else *(u32 *)(data->modifyArrows.modifiedValPtr) &= ~SIDE_STATUS_REFLECT; - sideTimer->reflectBattlerId = data->battlerId; } return &sideTimer->reflectTimer; case LIST_SIDE_LIGHTSCREEN: @@ -1909,7 +1907,6 @@ static u16 *GetSideStatusValue(struct BattleDebugMenu *data, bool32 changeStatus *(u32 *)(data->modifyArrows.modifiedValPtr) |= SIDE_STATUS_LIGHTSCREEN; else *(u32 *)(data->modifyArrows.modifiedValPtr) &= ~SIDE_STATUS_LIGHTSCREEN; - sideTimer->lightscreenBattlerId = data->battlerId; } return &sideTimer->lightscreenTimer; case LIST_SIDE_STICKY_WEB: @@ -1939,7 +1936,6 @@ static u16 *GetSideStatusValue(struct BattleDebugMenu *data, bool32 changeStatus *(u32 *)(data->modifyArrows.modifiedValPtr) |= SIDE_STATUS_SAFEGUARD; else *(u32 *)(data->modifyArrows.modifiedValPtr) &= ~SIDE_STATUS_SAFEGUARD; - sideTimer->safeguardBattlerId = data->battlerId; } return &sideTimer->safeguardTimer; case LIST_SIDE_MIST: @@ -1949,7 +1945,6 @@ static u16 *GetSideStatusValue(struct BattleDebugMenu *data, bool32 changeStatus *(u32 *)(data->modifyArrows.modifiedValPtr) |= SIDE_STATUS_MIST; else *(u32 *)(data->modifyArrows.modifiedValPtr) &= ~SIDE_STATUS_MIST; - sideTimer->mistBattlerId = data->battlerId; } return &sideTimer->mistTimer; case LIST_SIDE_TAILWIND: @@ -1959,7 +1954,6 @@ static u16 *GetSideStatusValue(struct BattleDebugMenu *data, bool32 changeStatus *(u32 *)(data->modifyArrows.modifiedValPtr) |= SIDE_STATUS_TAILWIND; else *(u32 *)(data->modifyArrows.modifiedValPtr) &= ~SIDE_STATUS_TAILWIND; - sideTimer->tailwindBattlerId = data->battlerId; } return &sideTimer->tailwindTimer; case LIST_SIDE_AURORA_VEIL: @@ -1969,7 +1963,6 @@ static u16 *GetSideStatusValue(struct BattleDebugMenu *data, bool32 changeStatus *(u32 *)(data->modifyArrows.modifiedValPtr) |= SIDE_STATUS_AURORA_VEIL; else *(u32 *)(data->modifyArrows.modifiedValPtr) &= ~SIDE_STATUS_AURORA_VEIL; - sideTimer->auroraVeilBattlerId = data->battlerId; } return &sideTimer->auroraVeilTimer; case LIST_SIDE_LUCKY_CHANT: @@ -1979,7 +1972,6 @@ static u16 *GetSideStatusValue(struct BattleDebugMenu *data, bool32 changeStatus *(u32 *)(data->modifyArrows.modifiedValPtr) |= SIDE_STATUS_LUCKY_CHANT; else *(u32 *)(data->modifyArrows.modifiedValPtr) &= ~SIDE_STATUS_LUCKY_CHANT; - sideTimer->luckyChantBattlerId = data->battlerId; } return &sideTimer->luckyChantTimer; case LIST_SIDE_TOXIC_SPIKES: @@ -2199,8 +2191,8 @@ static void SetUpModifyArrows(struct BattleDebugMenu *data) data->modifyArrows.typeOfVal = VAL_BITFIELD_32; goto CASE_ITEM_STATUS; case LIST_ITEM_AI: - data->modifyArrows.modifiedValPtr = &gBattleResources->ai->aiFlags[data->battlerId]; - data->modifyArrows.currValue = GetBitfieldValue(gBattleResources->ai->aiFlags[data->battlerId], data->bitfield[data->currentSecondaryListItemId].currBit, data->bitfield[data->currentSecondaryListItemId].bitsCount); + data->modifyArrows.modifiedValPtr = &gAiThinkingStruct->aiFlags[data->battlerId]; + data->modifyArrows.currValue = GetBitfieldValue(gAiThinkingStruct->aiFlags[data->battlerId], data->bitfield[data->currentSecondaryListItemId].currBit, data->bitfield[data->currentSecondaryListItemId].bitsCount); data->modifyArrows.typeOfVal = VAL_BITFIELD_32; goto CASE_ITEM_STATUS; CASE_ITEM_STATUS: @@ -2303,7 +2295,7 @@ static void UpdateMonData(struct BattleDebugMenu *data) { if (data->battlerWasChanged[i]) { - struct Pokemon *mon = GetPartyBattlerData(i); + struct Pokemon *mon = GetBattlerMon(i); struct BattlePokemon *battleMon = &gBattleMons[i]; SetMonData(mon, MON_DATA_HELD_ITEM, &battleMon->item); @@ -2347,7 +2339,6 @@ static const u8 sText_HoldEffectFriendshipUp[] = _("Friendship Up"); static const u8 sText_HoldEffectMentalHerb[] = _("Mental Herb"); static const u8 sText_HoldEffectChoiceBand[] = _("Choice Band"); static const u8 sText_HoldEffectFlinch[] = _("Flinch"); -static const u8 sText_HoldEffectBugPower[] = _("Bug Power"); static const u8 sText_HoldEffectDoublePrize[] = _("Double Prize"); static const u8 sText_HoldEffectRepel[] = _("Repel"); static const u8 sText_HoldEffectSoulDew[] = _("Soul Dew"); @@ -2358,25 +2349,10 @@ static const u8 sText_HoldEffectPreventEvolve[] = _("Prevent Evolve"); static const u8 sText_HoldEffectFocusBand[] = _("Focus Band"); static const u8 sText_HoldEffectLuckyEgg[] = _("Lucky Egg"); static const u8 sText_HoldEffectScopeLens[] = _("Scope Lens"); -static const u8 sText_HoldEffectSteelPower[] = _("Steel Power"); static const u8 sText_HoldEffectLeftovers[] = _("Leftovers"); static const u8 sText_HoldEffectDragonScale[] = _("Dragon Scale"); static const u8 sText_HoldEffectLightBall[] = _("Light Ball"); -static const u8 sText_HoldEffectGroundPower[] = _("Ground Power"); -static const u8 sText_HoldEffectRockPower[] = _("Rock Power"); -static const u8 sText_HoldEffectGrassPower[] = _("Grass Power"); -static const u8 sText_HoldEffectDarkPower[] = _("Dark Power"); -static const u8 sText_HoldEffectFightingPower[] = _("Fighting Power"); -static const u8 sText_HoldEffectElectricPower[] = _("Electric Power"); -static const u8 sText_HoldEffectWaterPower[] = _("Water Power"); -static const u8 sText_HoldEffectFlyingPower[] = _("Flying Power"); -static const u8 sText_HoldEffectPoisonPower[] = _("Poison Power"); -static const u8 sText_HoldEffectIcePower[] = _("Ice Power"); -static const u8 sText_HoldEffectGhostPower[] = _("Ghost Power"); -static const u8 sText_HoldEffectPsychicPower[] = _("Psychic Power"); -static const u8 sText_HoldEffectFirePower[] = _("Fire Power"); -static const u8 sText_HoldEffectDragonPower[] = _("Dragon Power"); -static const u8 sText_HoldEffectNormalPower[] = _("Normal Power"); +static const u8 sText_HoldEffectTypePower[] = _("Type Power"); static const u8 sText_HoldEffectUpgrade[] = _("Upgrade"); static const u8 sText_HoldEffectShellBell[] = _("Shell Bell"); static const u8 sText_HoldEffectLuckyPunch[] = _("Lucky Punch"); @@ -2436,7 +2412,6 @@ static const u8 sText_HoldEffectBindingBand[] = _("Binding Band"); static const u8 sText_HoldEffectEjectButton[] = _("Eject Button"); static const u8 sText_HoldEffectAbsorbBulb[] = _("Absorb Bulb"); static const u8 sText_HoldEffectCellBattery[] = _("Cell Battery"); -static const u8 sText_HoldEffectFairyPower[] = _("Fairy Power"); static const u8 sText_HoldEffectMegaStone[] = _("Mega Stone"); static const u8 sText_HoldEffectSafetyGoggles[] = _("Safety Goggles"); static const u8 sText_HoldEffectLuminousMoss[] = _("Luminous Moss"); @@ -2490,7 +2465,7 @@ static const u8 *const sHoldEffectNames[] = [HOLD_EFFECT_CRITICAL_UP] = sText_HoldEffectCriticalUp, [HOLD_EFFECT_RANDOM_STAT_UP] = sText_HoldEffectRandomStatUp, [HOLD_EFFECT_EVASION_UP] = sText_HoldEffectEvasionUp, - [HOLD_EFFECT_RESTORE_STATS] = sText_HoldEffectRestoreStats, + [HOLD_EFFECT_WHITE_HERB] = sText_HoldEffectRestoreStats, [HOLD_EFFECT_MACHO_BRACE] = sText_HoldEffectMachoBrace, [HOLD_EFFECT_EXP_SHARE] = sText_HoldEffectExpShare, [HOLD_EFFECT_QUICK_CLAW] = sText_HoldEffectQuickClaw, @@ -2498,7 +2473,6 @@ static const u8 *const sHoldEffectNames[] = [HOLD_EFFECT_MENTAL_HERB] = sText_HoldEffectMentalHerb, [HOLD_EFFECT_CHOICE_BAND] = sText_HoldEffectChoiceBand, [HOLD_EFFECT_FLINCH] = sText_HoldEffectFlinch, - [HOLD_EFFECT_BUG_POWER] = sText_HoldEffectBugPower, [HOLD_EFFECT_DOUBLE_PRIZE] = sText_HoldEffectDoublePrize, [HOLD_EFFECT_REPEL] = sText_HoldEffectRepel, [HOLD_EFFECT_SOUL_DEW] = sText_HoldEffectSoulDew, @@ -2509,25 +2483,10 @@ static const u8 *const sHoldEffectNames[] = [HOLD_EFFECT_FOCUS_BAND] = sText_HoldEffectFocusBand, [HOLD_EFFECT_LUCKY_EGG] = sText_HoldEffectLuckyEgg, [HOLD_EFFECT_SCOPE_LENS] = sText_HoldEffectScopeLens, - [HOLD_EFFECT_STEEL_POWER] = sText_HoldEffectSteelPower, [HOLD_EFFECT_LEFTOVERS] = sText_HoldEffectLeftovers, [HOLD_EFFECT_DRAGON_SCALE] = sText_HoldEffectDragonScale, [HOLD_EFFECT_LIGHT_BALL] = sText_HoldEffectLightBall, - [HOLD_EFFECT_GROUND_POWER] = sText_HoldEffectGroundPower, - [HOLD_EFFECT_ROCK_POWER] = sText_HoldEffectRockPower, - [HOLD_EFFECT_GRASS_POWER] = sText_HoldEffectGrassPower, - [HOLD_EFFECT_DARK_POWER] = sText_HoldEffectDarkPower, - [HOLD_EFFECT_FIGHTING_POWER] = sText_HoldEffectFightingPower, - [HOLD_EFFECT_ELECTRIC_POWER] = sText_HoldEffectElectricPower, - [HOLD_EFFECT_WATER_POWER] = sText_HoldEffectWaterPower, - [HOLD_EFFECT_FLYING_POWER] = sText_HoldEffectFlyingPower, - [HOLD_EFFECT_POISON_POWER] = sText_HoldEffectPoisonPower, - [HOLD_EFFECT_ICE_POWER] = sText_HoldEffectIcePower, - [HOLD_EFFECT_GHOST_POWER] = sText_HoldEffectGhostPower, - [HOLD_EFFECT_PSYCHIC_POWER] = sText_HoldEffectPsychicPower, - [HOLD_EFFECT_FIRE_POWER] = sText_HoldEffectFirePower, - [HOLD_EFFECT_DRAGON_POWER] = sText_HoldEffectDragonPower, - [HOLD_EFFECT_NORMAL_POWER] = sText_HoldEffectNormalPower, + [HOLD_EFFECT_TYPE_POWER] = sText_HoldEffectTypePower, [HOLD_EFFECT_UPGRADE] = sText_HoldEffectUpgrade, [HOLD_EFFECT_SHELL_BELL] = sText_HoldEffectShellBell, [HOLD_EFFECT_LUCKY_PUNCH] = sText_HoldEffectLuckyPunch, @@ -2588,7 +2547,6 @@ static const u8 *const sHoldEffectNames[] = [HOLD_EFFECT_EJECT_BUTTON] = sText_HoldEffectEjectButton, [HOLD_EFFECT_ABSORB_BULB] = sText_HoldEffectAbsorbBulb, [HOLD_EFFECT_CELL_BATTERY] = sText_HoldEffectCellBattery, - [HOLD_EFFECT_FAIRY_POWER] = sText_HoldEffectFairyPower, [HOLD_EFFECT_MEGA_STONE] = sText_HoldEffectMegaStone, [HOLD_EFFECT_SAFETY_GOGGLES] = sText_HoldEffectSafetyGoggles, [HOLD_EFFECT_LUMINOUS_MOSS] = sText_HoldEffectLuminousMoss, @@ -2617,7 +2575,7 @@ static const u8 *const sHoldEffectNames[] = [HOLD_EFFECT_OGERPON_MASK] = sText_HoldEffectOgerponMask, [HOLD_EFFECT_BERSERK_GENE] = sText_HoldEffectBerserkGene, }; -static const u8 *GetHoldEffectName(u16 holdEffect) +static const u8 *GetHoldEffectName(enum ItemHoldEffect holdEffect) { if (holdEffect > ARRAY_COUNT(sHoldEffectNames)) return sHoldEffectNames[0]; diff --git a/src/battle_dome.c b/src/battle_dome.c index b503a81184..28de62c07a 100644 --- a/src/battle_dome.c +++ b/src/battle_dome.c @@ -536,7 +536,7 @@ static const struct CompressedSpriteSheet sTourneyTreeButtonsSpriteSheet[] = }; // Unused -static const struct CompressedSpritePalette sTourneyTreeButtonsSpritePal[] = +static const struct SpritePalette sTourneyTreeButtonsSpritePal[] = { {.data = gDomeTourneyTreeButtons_Pal, .tag = TAG_BUTTONS}, {}, @@ -2680,11 +2680,11 @@ static void Task_ShowTourneyInfoCard(u8 taskId) DecompressAndLoadBgGfxUsingHeap(2, gDomeTourneyInfoCard_Tilemap, 0x2000, 0, 1); DecompressAndLoadBgGfxUsingHeap(3, gDomeTourneyInfoCardBg_Tilemap, 0x800, 0, 1); LoadCompressedSpriteSheet(sTourneyTreeButtonsSpriteSheet); - LoadCompressedPalette(gDomeTourneyTree_Pal, BG_PLTT_OFFSET, BG_PLTT_SIZE); - LoadCompressedPalette(gDomeTourneyTreeButtons_Pal, OBJ_PLTT_OFFSET, OBJ_PLTT_SIZE); - LoadCompressedPalette(gBattleWindowTextPalette, BG_PLTT_ID(15), PLTT_SIZE_4BPP); + LoadPalette(gDomeTourneyTree_Pal, BG_PLTT_OFFSET, BG_PLTT_SIZE); + LoadPalette(gDomeTourneyTreeButtons_Pal, OBJ_PLTT_OFFSET, OBJ_PLTT_SIZE); + LoadPalette(gBattleWindowTextPalette, BG_PLTT_ID(15), PLTT_SIZE_4BPP); if (mode == INFOCARD_MATCH) - LoadCompressedPalette(gDomeTourneyMatchCardBg_Pal, BG_PLTT_ID(5), PLTT_SIZE_4BPP); // Changes the moving info card bg to orange when in match card mode + LoadPalette(gDomeTourneyMatchCardBg_Pal, BG_PLTT_ID(5), PLTT_SIZE_4BPP); // Changes the moving info card bg to orange when in match card mode CpuFill32(0, gPlttBufferFaded, PLTT_SIZE); ShowBg(0); ShowBg(1); @@ -3901,7 +3901,7 @@ static bool32 IsDomeHealingMove(u32 move) } } -static bool32 IsDomeDefensiveMoveEffect(u32 effect) +static bool32 IsDomeDefensiveMoveEffect(enum BattleMoveEffects effect) { switch(effect) { @@ -3933,7 +3933,7 @@ static bool32 IsDomeDefensiveMoveEffect(u32 effect) } } -static bool32 IsDomeRiskyMoveEffect(u32 effect) +static bool32 IsDomeRiskyMoveEffect(enum BattleMoveEffects effect) { switch(effect) { @@ -4002,25 +4002,26 @@ static bool32 IsDomeStatusMoveEffect(u32 move) { switch(GetMoveEffect(move)) { - case EFFECT_SLEEP: case EFFECT_CONFUSE: case EFFECT_DISABLE: - case EFFECT_POISON: - case EFFECT_PARALYZE: - case EFFECT_TOXIC: case EFFECT_LEECH_SEED: case EFFECT_TAUNT: case EFFECT_TORMENT: - case EFFECT_WILL_O_WISP: case EFFECT_ENCORE: case EFFECT_ATTRACT: case EFFECT_NIGHTMARE: - case EFFECT_YAWN: case EFFECT_CURSE: return TRUE; default: - return MoveHasAdditionalEffect(move, MOVE_EFFECT_WRAP); + break; } + + if (GetMoveNonVolatileStatus(move) != MOVE_EFFECT_NONE) + return TRUE; + if (MoveHasAdditionalEffect(move, MOVE_EFFECT_WRAP)) + return TRUE; + + return FALSE; } static bool32 IsDomeRareMove(u32 move) @@ -4044,8 +4045,9 @@ static bool32 IsDomeRareMove(u32 move) return TRUE; } -static bool32 IsDomeComboMoveEffect(u32 effect) +static bool32 IsDomeComboMove(u32 move) { + enum BattleMoveEffects effect = GetMoveEffect(move); switch(effect) { // Weather moves @@ -4064,8 +4066,6 @@ static bool32 IsDomeComboMoveEffect(u32 effect) case EFFECT_MORNING_SUN: case EFFECT_MOONLIGHT: case EFFECT_SHORE_UP: - case EFFECT_THUNDER: - case EFFECT_BLIZZARD: case EFFECT_SOLAR_BEAM: case EFFECT_GROWTH: case EFFECT_AURORA_VEIL: @@ -4086,8 +4086,6 @@ static bool32 IsDomeComboMoveEffect(u32 effect) case EFFECT_TOXIC_SPIKES: case EFFECT_STEALTH_ROCK: case EFFECT_STICKY_WEB: - // Inflicting sleep & related effects - case EFFECT_SLEEP: case EFFECT_YAWN: case EFFECT_DREAM_EATER: case EFFECT_NIGHTMARE: @@ -4118,9 +4116,26 @@ static bool32 IsDomeComboMoveEffect(u32 effect) case EFFECT_LEECH_SEED: case EFFECT_ROAR: return TRUE; + default: + break; + } + + // Move flags + if (MoveAlwaysHitsInRain(move)) + return TRUE; + else if (MoveAlwaysHitsInHailSnow(move)) + return TRUE; + + // Inflicting sleep & related effects + switch(GetMoveNonVolatileStatus(move)) + { + case MOVE_EFFECT_SLEEP: + return TRUE; default: return FALSE; } + + return FALSE; } // allocatedArray below needs to be large enough to hold stat totals for each mon, or totals of each type of move points @@ -4301,13 +4316,13 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTourneyId) move = gSaveBlock2Ptr->frontier.domePlayerPartyData[i].moves[j]; else move = gFacilityTrainerMons[DOME_MONS[trainerTourneyId][i]].moves[j]; - u32 effect = GetMoveEffect(move); + enum BattleMoveEffects effect = GetMoveEffect(move); u32 accuracy = GetMoveAccuracy(move); switch (k) { case MOVE_POINTS_COMBO: - allocatedArray[k] = IsDomeComboMoveEffect(effect) ? 1 : 0; + allocatedArray[k] = IsDomeComboMove(move) ? 1 : 0; break; case MOVE_POINTS_STAT_RAISE: allocatedArray[k] = IsStatRaisingEffect(effect) ? 1 : 0; @@ -5252,9 +5267,9 @@ static void Task_ShowTourneyTree(u8 taskId) DecompressAndLoadBgGfxUsingHeap(2, gDomeTourneyLine_Gfx, 0x2000, 0, 0); DecompressAndLoadBgGfxUsingHeap(2, gDomeTourneyLineDown_Tilemap, 0x2000, 0, 1); DecompressAndLoadBgGfxUsingHeap(3, gDomeTourneyLineUp_Tilemap, 0x2000, 0, 1); - LoadCompressedPalette(gDomeTourneyTree_Pal, BG_PLTT_OFFSET, BG_PLTT_SIZE); - LoadCompressedPalette(gDomeTourneyTreeButtons_Pal, OBJ_PLTT_OFFSET, OBJ_PLTT_SIZE); - LoadCompressedPalette(gBattleWindowTextPalette, BG_PLTT_ID(15), PLTT_SIZE_4BPP); + LoadPalette(gDomeTourneyTree_Pal, BG_PLTT_OFFSET, BG_PLTT_SIZE); + LoadPalette(gDomeTourneyTreeButtons_Pal, OBJ_PLTT_OFFSET, OBJ_PLTT_SIZE); + LoadPalette(gBattleWindowTextPalette, BG_PLTT_ID(15), PLTT_SIZE_4BPP); CpuFill32(0, gPlttBufferFaded, PLTT_SIZE); ShowBg(0); ShowBg(1); diff --git a/src/battle_dynamax.c b/src/battle_dynamax.c index fecadd887d..93642f4c93 100644 --- a/src/battle_dynamax.c +++ b/src/battle_dynamax.c @@ -73,11 +73,11 @@ static const struct GMaxMove sGMaxMoveTable[] = // Returns whether a battler can Dynamax. bool32 CanDynamax(u32 battler) { - u16 species = gBattleMons[battler].species; - u16 holdEffect = GetBattlerHoldEffect(battler, FALSE); + u16 species = GetBattlerVisualSpecies(battler); + enum ItemHoldEffect holdEffect = GetBattlerHoldEffect(battler, FALSE); // Prevents Zigzagoon from dynamaxing in vanilla. - if (gBattleTypeFlags & BATTLE_TYPE_FIRST_BATTLE && GetBattlerSide(battler) == B_SIDE_OPPONENT) + if (gBattleTypeFlags & BATTLE_TYPE_FIRST_BATTLE && !IsOnPlayerSide(battler)) return FALSE; // Check if Player has a Dynamax Band. @@ -123,7 +123,7 @@ bool32 CanDynamax(u32 battler) // Returns whether a battler is transformed into a Gigantamax form. bool32 IsGigantamaxed(u32 battler) { - struct Pokemon *mon = GetPartyBattlerData(battler); + struct Pokemon *mon = GetBattlerMon(battler); if ((gSpeciesInfo[gBattleMons[battler].species].isGigantamax) && GetMonData(mon, MON_DATA_GIGANTAMAX_FACTOR)) return TRUE; return FALSE; @@ -151,7 +151,7 @@ u16 GetNonDynamaxHP(u32 battler) return gBattleMons[battler].hp; else { - struct Pokemon *mon = GetPartyBattlerData(battler); + struct Pokemon *mon = GetBattlerMon(battler); uq4_12_t mult = GetDynamaxLevelHPMultiplier(GetMonData(mon, MON_DATA_DYNAMAX_LEVEL), TRUE); u32 hp = UQ_4_12_TO_INT((gBattleMons[battler].hp * mult) + UQ_4_12_ROUND); return hp; @@ -165,7 +165,7 @@ u16 GetNonDynamaxMaxHP(u32 battler) return gBattleMons[battler].maxHP; else { - struct Pokemon *mon = GetPartyBattlerData(battler); + struct Pokemon *mon = GetBattlerMon(battler); uq4_12_t mult = GetDynamaxLevelHPMultiplier(GetMonData(mon, MON_DATA_DYNAMAX_LEVEL), TRUE); u32 maxHP = UQ_4_12_TO_INT((gBattleMons[battler].maxHP * mult) + UQ_4_12_ROUND); return maxHP; @@ -178,7 +178,7 @@ void ActivateDynamax(u32 battler) // Set appropriate use flags. SetActiveGimmick(battler, GIMMICK_DYNAMAX); SetGimmickAsActivated(battler, GIMMICK_DYNAMAX); - gBattleStruct->dynamax.dynamaxTurns[battler] = DYNAMAX_TURNS_COUNT; + gBattleStruct->dynamax.dynamaxTurns[battler] = gBattleTurnCounter + DYNAMAX_TURNS_COUNT; // Substitute is removed upon Dynamaxing. gBattleMons[battler].status2 &= ~STATUS2_SUBSTITUTE; @@ -200,7 +200,7 @@ void UndoDynamax(u32 battler) // Revert HP if battler is still Dynamaxed. if (GetActiveGimmick(battler) == GIMMICK_DYNAMAX) { - struct Pokemon *mon = GetPartyBattlerData(battler); + struct Pokemon *mon = GetBattlerMon(battler); uq4_12_t mult = GetDynamaxLevelHPMultiplier(GetMonData(mon, MON_DATA_DYNAMAX_LEVEL), TRUE); 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); @@ -209,7 +209,6 @@ void UndoDynamax(u32 battler) // Makes sure there are no Dynamax flags set, including on switch / faint. SetActiveGimmick(battler, GIMMICK_NONE); - gBattleStruct->dynamax.dynamaxTurns[battler] = 0; // Undo form change if needed. if (IsGigantamaxed(battler)) @@ -244,6 +243,8 @@ bool32 IsMoveBlockedByDynamax(u32 move) case EFFECT_HEAT_CRASH: case EFFECT_LOW_KICK: return TRUE; + default: + break; } return FALSE; } @@ -427,6 +428,8 @@ static u32 GetMaxPowerTier(u32 move) default: case 21 ... 25: return MAX_POWER_TIER_5; } + default: + break; } switch (GetMovePower(move)) @@ -473,7 +476,7 @@ void BS_UpdateDynamax(void) { NATIVE_ARGS(); u32 battler = gBattleScripting.battler; - struct Pokemon *mon = GetPartyBattlerData(battler); + struct Pokemon *mon = GetBattlerMon(battler); if (!IsGigantamaxed(battler)) // RecalcBattlerStats will get called on form change. RecalcBattlerStats(battler, mon, GetActiveGimmick(battler) == GIMMICK_DYNAMAX); diff --git a/src/battle_end_turn.c b/src/battle_end_turn.c new file mode 100644 index 0000000000..7e9f8b15f5 --- /dev/null +++ b/src/battle_end_turn.c @@ -0,0 +1,1606 @@ +#include "global.h" +#include "battle.h" +#include "battle_util.h" +#include "battle_controllers.h" +#include "battle_ai_util.h" +#include "battle_gimmick.h" +#include "battle_scripts.h" +#include "constants/battle.h" +#include "constants/battle_string_ids.h" +#include "constants/hold_effects.h" +#include "constants/abilities.h" +#include "constants/items.h" +#include "constants/moves.h" + +// General End Turn Effects based on research from smogon from vanilla games: +// https://www.smogon.com/forums/threads/sword-shield-battle-mechanics-research.3655528/page-64#post-9244179 +enum EndTurnResolutionOrder +{ + ENDTURN_ORDER, + ENDTURN_VARIOUS, + ENDTURN_WEATHER, + ENDTURN_WEATHER_DAMAGE, + ENDTURN_GEN_3_BERRY_ACTIVATION, + ENDTURN_EMERGENCY_EXIT_1, + ENDTURN_AFFECTION, + ENDTURN_FUTURE_SIGHT, + ENDTURN_WISH, + ENDTURN_FIRST_EVENT_BLOCK, + ENDTURN_EMERGENCY_EXIT_2, + ENDTURN_AQUA_RING, + ENDTURN_INGRAIN, + ENDTURN_LEECH_SEED, + ENDTURN_POISON, + ENDTURN_BURN, + ENDTURN_FROSTBITE, + ENDTURN_NIGHTMARE, + ENDTURN_CURSE, + ENDTURN_WRAP, + ENDTURN_SALT_CURE, + ENDTURN_OCTOLOCK, + ENDTURN_SYRUP_BOMB, + ENDTURN_TAUNT, + ENDTURN_TORMENT, + ENDTURN_ENCORE, + ENDTURN_DISABLE, + ENDTURN_MAGNET_RISE, + ENDTURN_TELEKINESIS, + ENDTURN_HEAL_BLOCK, + ENDTURN_EMBARGO, + ENDTURN_YAWN, + ENDTURN_PERISH_SONG, + ENDTURN_ROOST, + ENDTURN_EMERGENCY_EXIT_3, + ENDTURN_SECOND_EVENT_BLOCK, + ENDTURN_TRICK_ROOM, + ENDTURN_GRAVITY, + ENDTURN_WATER_SPORT, + ENDTURN_MUD_SPORT, + ENDTURN_WONDER_ROOM, + ENDTURN_MAGIC_ROOM, + ENDTURN_TERRAIN, + ENDTURN_THIRD_EVENT_BLOCK, + ENDTURN_EMERGENCY_EXIT_4, + ENDTURN_ABILITIES, + ENDTURN_FOURTH_EVENT_BLOCK, + ENDTURN_DYNAMAX, + ENDTURN_COUNT, +}; + +// Block that handles effects for each individual battler on the field (eg residual damage) +enum FirstEventBlock +{ + FIRST_EVENT_BLOCK_GMAX_MOVE_RESIDUAL, // Needs to be split + FIRST_EVENT_BLOCK_SEA_OF_FIRE_DAMAGE, + FIRST_EVENT_BLOCK_THRASH, // Thrash isn't handled here in vanilla but for now it is that best place for it. + FIRST_EVENT_BLOCK_GRASSY_TERRAIN_HEAL, + FIRST_EVENT_BLOCK_ABILITIES, + FIRST_EVENT_BLOCK_HEAL_ITEMS, +}; + +// Block that tries to remove side statuses +enum SecondEventBlock +{ + SECOND_EVENT_BLOCK_REFLECT, + SECOND_EVENT_BLOCK_LIGHT_SCREEN, + SECOND_EVENT_BLOCK_SAFEGUARD, + SECOND_EVENT_BLOCK_MIST, + SECOND_EVENT_BLOCK_TAILWIND, + SECOND_EVENT_BLOCK_LUCKY_CHANT, + SECOND_EVENT_BLOCK_RAINBOW, + SECOND_EVENT_BLOCK_SEA_OF_FIRE, + SECOND_EVENT_BLOCK_SWAMP, + SECOND_EVENT_BLOCK_AURORA_VEIL, +}; + +// Block that handles Uproar, items and non-form changing abilities +enum ThirdEventBlock +{ + THIRD_EVENT_BLOCK_UPROAR, + THIRD_EVENT_BLOCK_ABILITIES, + THIRD_EVENT_BLOCK_ITEMS, +}; + +// Form changing abilities and Eject Pack +enum FourthEventBlock +{ + FOURTH_EVENT_BLOCK_HUNGER_SWITCH, + FOURTH_EVENT_BLOCK_EJECT_PACK, +}; + +static inline bool32 IsBattlerProtectedByMagicGuard(u32 battler, u32 ability) +{ + if (ability != ABILITY_MAGIC_GUARD) + return FALSE; + + RecordAbilityBattle(battler, ability); + return TRUE; +} + +static u32 GetBattlerSideForMessage(u32 side) +{ + u32 battler = 0; + + for (battler = 0; battler < gBattlersCount; battler++) + { + if (GetBattlerSide(battler) == side) + break; + } + + return battler; +} + +static bool32 HandleEndTurnOrder(u32 battler) +{ + bool32 effect = FALSE; + + gBattleTurnCounter++; + gBattleStruct->endTurnEventsCounter++; + + u32 i, j; + for (i = 0; i < gBattlersCount; i++) + { + gBattlerByTurnOrder[i] = i; + } + for (i = 0; i < gBattlersCount - 1; i++) + { + for (j = i + 1; j < gBattlersCount; j++) + { + if (GetWhichBattlerFaster(gBattlerByTurnOrder[i], gBattlerByTurnOrder[j], FALSE) == -1) + SwapTurnOrder(i, j); + } + } + + return effect; +} + +static bool32 HandleEndTurnVarious(u32 battler) +{ + u32 i; + bool32 effect = FALSE; + + gBattleStruct->endTurnEventsCounter++; + + if (gFieldStatuses & STATUS_FIELD_FAIRY_LOCK && gFieldTimers.fairyLockTimer == gBattleTurnCounter) + gFieldStatuses &= ~STATUS_FIELD_FAIRY_LOCK; + + for (i = 0; i < NUM_BATTLE_SIDES; i++) + { + if (gSideStatuses[i] & SIDE_STATUS_DAMAGE_NON_TYPES && gSideTimers[i].damageNonTypesTimer == gBattleTurnCounter) + gSideStatuses[i] &= ~SIDE_STATUS_DAMAGE_NON_TYPES; + } + + for (i = 0; i < gBattlersCount; i++) + { + if (gStatuses3[i] & STATUS3_ALWAYS_HITS) + gStatuses3[i] -= STATUS3_ALWAYS_HITS_TURN(1); + + if (gDisableStructs[i].chargeTimer && --gDisableStructs[i].chargeTimer == 0) + gStatuses3[i] &= ~STATUS3_CHARGED_UP; + + if (gStatuses3[i] & STATUS3_LASER_FOCUS && gDisableStructs[i].laserFocusTimer == gBattleTurnCounter) + gStatuses3[i] &= ~STATUS3_LASER_FOCUS; + + gBattleStruct->hpBefore[i] = gBattleMons[i].hp; + } + + return effect; +} + +static bool32 HandleEndTurnWeather(u32 battler) +{ + gBattleStruct->endTurnEventsCounter++; + return EndOrContinueWeather(); +} + +static bool32 HandleEndTurnWeatherDamage(u32 battler) +{ + bool32 effect = FALSE; + + u32 ability = GetBattlerAbility(battler); + u32 currBattleWeather = GetCurrentBattleWeather(); + + if (currBattleWeather == 0xFF) + { + // If there is no weather on the field, no need to check other battlers so go to next state + gBattleStruct->turnEffectsBattlerId = 0; + gBattleStruct->endTurnEventsCounter++; + return effect; + } + + gBattleStruct->turnEffectsBattlerId++; + + if (!IsBattlerAlive(battler) || !HasWeatherEffect()) + return effect; + + + switch (currBattleWeather) + { + case BATTLE_WEATHER_FOG: + case BATTLE_WEATHER_STRONG_WINDS: + break; + case BATTLE_WEATHER_RAIN: + case BATTLE_WEATHER_RAIN_PRIMAL: + case BATTLE_WEATHER_RAIN_DOWNPOUR: + if (ability == ABILITY_DRY_SKIN || ability == ABILITY_RAIN_DISH) + { + if (AbilityBattleEffects(ABILITYEFFECT_ENDTURN, battler, ability, 0, MOVE_NONE)) + effect = TRUE; + } + break; + case BATTLE_WEATHER_SUN: + case BATTLE_WEATHER_SUN_PRIMAL: + if (ability == ABILITY_DRY_SKIN || ability == ABILITY_SOLAR_POWER) + { + if (AbilityBattleEffects(ABILITYEFFECT_ENDTURN, battler, ability, 0, MOVE_NONE)) + effect = TRUE; + } + break; + case BATTLE_WEATHER_SANDSTORM: + if (ability != ABILITY_SAND_VEIL + && ability != ABILITY_SAND_FORCE + && ability != ABILITY_SAND_RUSH + && ability != ABILITY_OVERCOAT + && !IS_BATTLER_ANY_TYPE(gBattlerAttacker, TYPE_ROCK, TYPE_GROUND, TYPE_STEEL) + && !(gStatuses3[gBattlerAttacker] & (STATUS3_UNDERGROUND | STATUS3_UNDERWATER)) + && GetBattlerHoldEffect(gBattlerAttacker, TRUE) != HOLD_EFFECT_SAFETY_GOGGLES + && !IsBattlerProtectedByMagicGuard(battler, ability)) + { + gBattleStruct->moveDamage[battler] = GetNonDynamaxMaxHP(battler) / 16; + if (gBattleStruct->moveDamage[battler] == 0) + gBattleStruct->moveDamage[battler] = 1; + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_SANDSTORM; + BattleScriptExecute(BattleScript_DamagingWeather); + effect = TRUE; + } + break; + case BATTLE_WEATHER_HAIL: + case BATTLE_WEATHER_SNOW: + if (ability == ABILITY_ICE_BODY) + { + if (AbilityBattleEffects(ABILITYEFFECT_ENDTURN, battler, ability, 0, MOVE_NONE)) + effect = TRUE; + } + else if (currBattleWeather == BATTLE_WEATHER_HAIL) + { + if (ability != ABILITY_SNOW_CLOAK + && ability != ABILITY_OVERCOAT + && !IS_BATTLER_OF_TYPE(battler, TYPE_ICE) + && !(gStatuses3[battler] & (STATUS3_UNDERGROUND | STATUS3_UNDERWATER)) + && GetBattlerHoldEffect(battler, TRUE) != HOLD_EFFECT_SAFETY_GOGGLES + && !IsBattlerProtectedByMagicGuard(battler, ability)) + { + gBattleStruct->moveDamage[battler] = GetNonDynamaxMaxHP(battler) / 16; + if (gBattleStruct->moveDamage[battler] == 0) + gBattleStruct->moveDamage[battler] = 1; + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_HAIL; + BattleScriptExecute(BattleScript_DamagingWeather); + effect = TRUE; + } + } + break; + } + + return effect; +} + +static bool32 HandleEndTurnGenThreeBerryActivation(u32 battler) +{ + bool32 effect = FALSE; + + if (B_HP_BERRIES >= GEN_4) // Skip handler for > Gen3 + { + gBattleStruct->endTurnEventsCounter++; + return effect; + } + gBattleStruct->turnEffectsBattlerId++; + effect = TryRestoreHPBerries(battler, ITEMEFFECT_NORMAL); + return effect; +} + +static bool32 HandleEndTurnEmergencyExit(u32 battler) +{ + bool32 effect = FALSE; + u32 ability = GetBattlerAbility(battler); + + gBattleStruct->turnEffectsBattlerId++; + + if (ability == ABILITY_EMERGENCY_EXIT || ability == ABILITY_WIMP_OUT) + { + u32 cutoff = gBattleMons[battler].maxHP / 2; + bool32 HadMoreThanHalfHpNowDoesnt = gBattleStruct->hpBefore[battler] > cutoff && gBattleMons[battler].hp <= cutoff; + + if (HadMoreThanHalfHpNowDoesnt + && IsBattlerAlive(battler) + && (CanBattlerSwitch(battler) || !(gBattleTypeFlags & BATTLE_TYPE_TRAINER)) + && !(gBattleTypeFlags & BATTLE_TYPE_ARENA) + && CountUsablePartyMons(battler) > 0 + && !(gStatuses3[battler] & STATUS3_SKY_DROPPED)) // Not currently held by Sky Drop + { + gBattlerAbility = battler; + gLastUsedAbility = ability; + + if (gBattleTypeFlags & BATTLE_TYPE_TRAINER || IsOnPlayerSide(battler)) + BattleScriptExecute(BattleScript_EmergencyExitEnd2); + else + BattleScriptExecute(BattleScript_EmergencyExitWildEnd2); + + effect = TRUE; + } + } + + return effect; +} + +static bool32 HandleEndTurnAffection(u32 battler) +{ + bool32 effect = FALSE; + + gBattleStruct->turnEffectsBattlerId++; + + if (!B_AFFECTION_MECHANICS + || !IsBattlerAlive(battler) + || !IsOnPlayerSide(battler)) + return effect; + + if (GetBattlerAffectionHearts(gBattlerAttacker) >= AFFECTION_FOUR_HEARTS && (Random() % 100 < 20)) + { + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + BattleScriptExecute(BattleScript_AffectionBasedStatusHeal); + effect = TRUE; + } + + return effect; +} + +// Note: Technically Future Sight, Doom Desire and Wish need a queue but +// I think we should accept this slight inconsistency so custom moves don't have to touch this code +static bool32 HandleEndTurnFutureSight(u32 battler) +{ + bool32 effect = FALSE; + + gBattleStruct->turnEffectsBattlerId++; + + if (gWishFutureKnock.futureSightCounter[battler] == gBattleTurnCounter) + { + if (gWishFutureKnock.futureSightCounter[battler] == gBattleTurnCounter + && gWishFutureKnock.futureSightCounter[BATTLE_PARTNER(battler)] <= gBattleTurnCounter) + { + gSideStatuses[GetBattlerSide(battler)] &= ~SIDE_STATUS_FUTUREATTACK; + } + + if (!IsBattlerAlive(battler)) + return effect; + + if (gWishFutureKnock.futureSightMove[battler] == MOVE_FUTURE_SIGHT) + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_FUTURE_SIGHT; + else + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_DOOM_DESIRE; + + PREPARE_MOVE_BUFFER(gBattleTextBuff1, gWishFutureKnock.futureSightMove[battler]); + + gBattlerTarget = battler; + gBattlerAttacker = gWishFutureKnock.futureSightBattlerIndex[battler]; + gCurrentMove = gWishFutureKnock.futureSightMove[battler]; + + if (!IsFutureSightAttackerInParty(gBattlerAttacker, gBattlerTarget, gCurrentMove)) + SetTypeBeforeUsingMove(gCurrentMove, gBattlerAttacker); + + BattleScriptExecute(BattleScript_MonTookFutureAttack); + effect = TRUE; + } + + return effect; +} + +static bool32 HandleEndTurnWish(u32 battler) +{ + bool32 effect = FALSE; + + gBattleStruct->turnEffectsBattlerId++; + + if (gWishFutureKnock.wishCounter[battler] == gBattleTurnCounter && IsBattlerAlive(battler)) + { + gBattlerTarget = battler; + PREPARE_MON_NICK_WITH_PREFIX_BUFFER(gBattleTextBuff1, battler, gWishFutureKnock.wishPartyId[battler]) + if (B_WISH_HP_SOURCE >= GEN_5) + { + if (IsOnPlayerSide(battler)) + gBattleStruct->moveDamage[battler] = max(1, GetMonData(&gPlayerParty[gWishFutureKnock.wishPartyId[battler]], MON_DATA_MAX_HP) / 2); + else + gBattleStruct->moveDamage[battler] = max(1, GetMonData(&gEnemyParty[gWishFutureKnock.wishPartyId[battler]], MON_DATA_MAX_HP) / 2); + } + else + { + gBattleStruct->moveDamage[battler] = max(1, GetNonDynamaxMaxHP(battler) / 2); + } + + gBattleStruct->moveDamage[battler] *= -1; + if (gStatuses3[battler] & STATUS3_HEAL_BLOCK) + BattleScriptExecute(BattleScript_WishButHealBlocked); + else if (gBattleMons[battler].hp == gBattleMons[battler].maxHP) + BattleScriptExecute(BattleScript_WishButFullHp); + else + BattleScriptExecute(BattleScript_WishComesTrue); + + effect = TRUE; + } + + return effect; +} + +static bool32 HandleEndTurnFirstEventBlock(u32 battler) +{ + bool32 effect = FALSE; + + u32 side; + + switch (gBattleStruct->eventBlockCounter) + { + case FIRST_EVENT_BLOCK_GMAX_MOVE_RESIDUAL: // TODO: Has to be split into 3 statuses and needs a queue + side = GetBattlerSide(battler); + if (gSideStatuses[side] & SIDE_STATUS_DAMAGE_NON_TYPES) + { + if (IsBattlerAlive(battler) + && !IS_BATTLER_OF_TYPE(battler, gSideTimers[side].damageNonTypesType) + && !IsBattlerProtectedByMagicGuard(battler, GetBattlerAbility(battler))) + { + gBattlerAttacker = battler; + gBattleStruct->moveDamage[battler] = GetNonDynamaxMaxHP(battler) / 6; + ChooseDamageNonTypesString(gSideTimers[side].damageNonTypesType); + BattleScriptExecute(BattleScript_DamageNonTypesContinues); + effect = TRUE; + } + } + gBattleStruct->eventBlockCounter++; + break; + case FIRST_EVENT_BLOCK_SEA_OF_FIRE_DAMAGE: + if (gSideStatuses[GetBattlerSide(battler)] & SIDE_STATUS_SEA_OF_FIRE && IsBattlerAlive(battler)) + { + gBattlerAttacker = battler; + gBattleStruct->moveDamage[battler] = GetNonDynamaxMaxHP(battler) / 8; + BtlController_EmitStatusAnimation(battler, B_COMM_TO_CONTROLLER, FALSE, STATUS1_BURN); + MarkBattlerForControllerExec(battler); + BattleScriptExecute(BattleScript_HurtByTheSeaOfFire); + effect = TRUE; + } + gBattleStruct->eventBlockCounter++; + break; + case FIRST_EVENT_BLOCK_THRASH: + if (gBattleMons[battler].status2 & STATUS2_LOCK_CONFUSE && !(gStatuses3[battler] & STATUS3_SKY_DROPPED)) + { + gBattleMons[battler].status2 -= STATUS2_LOCK_CONFUSE_TURN(1); + if (WasUnableToUseMove(battler)) + { + CancelMultiTurnMoves(battler, SKY_DROP_IGNORE); + } + else if (!(gBattleMons[battler].status2 & STATUS2_LOCK_CONFUSE) && (gBattleMons[battler].status2 & STATUS2_MULTIPLETURNS)) + { + gBattleMons[battler].status2 &= ~STATUS2_MULTIPLETURNS; + if (!(gBattleMons[battler].status2 & STATUS2_CONFUSION)) + { + gBattleScripting.moveEffect = MOVE_EFFECT_CONFUSION | MOVE_EFFECT_AFFECTS_USER; + SetMoveEffect(TRUE, FALSE); + if (gBattleMons[battler].status2 & STATUS2_CONFUSION) + BattleScriptExecute(BattleScript_ThrashConfuses); + effect = TRUE; + } + } + } + gBattleStruct->eventBlockCounter++; + break; + case FIRST_EVENT_BLOCK_GRASSY_TERRAIN_HEAL: + if (gFieldStatuses & STATUS_FIELD_GRASSY_TERRAIN && IsBattlerAlive(battler) && !IsBattlerAtMaxHp(battler)) + { + gBattlerAttacker = battler; + gBattleStruct->moveDamage[battler] = -(GetNonDynamaxMaxHP(battler) / 16); + BattleScriptExecute(BattleScript_GrassyTerrainHeals); + effect = TRUE; + } + gBattleStruct->eventBlockCounter++; + break; + case FIRST_EVENT_BLOCK_ABILITIES: + { + u32 ability = GetBattlerAbility(battler); + switch (ability) + { + case ABILITY_HEALER: + case ABILITY_HYDRATION: + case ABILITY_SHED_SKIN: + if (AbilityBattleEffects(ABILITYEFFECT_ENDTURN, battler, ability, 0, MOVE_NONE)) + effect = TRUE; + break; + } + gBattleStruct->eventBlockCounter++; + break; + } + case FIRST_EVENT_BLOCK_HEAL_ITEMS: + { + enum ItemHoldEffect holdEffect = GetBattlerHoldEffect(battler, TRUE); + switch (holdEffect) + { + case HOLD_EFFECT_LEFTOVERS: + case HOLD_EFFECT_BLACK_SLUDGE: + if (ItemBattleEffects(ITEMEFFECT_NORMAL, battler, FALSE)) + effect = TRUE; + break; + default: + break; + } + gBattleStruct->eventBlockCounter = 0; + gBattleStruct->turnEffectsBattlerId++; + break; + } + } + + return effect; +} + +static bool32 HandleEndTurnAquaRing(u32 battler) +{ + bool32 effect = FALSE; + + gBattleStruct->turnEffectsBattlerId++; + + if (gStatuses3[battler] & STATUS3_AQUA_RING + && !(gStatuses3[battler] & STATUS3_HEAL_BLOCK) + && !IsBattlerAtMaxHp(battler) + && IsBattlerAlive(battler)) + { + gBattleStruct->moveDamage[battler] = GetDrainedBigRootHp(battler, GetNonDynamaxMaxHP(battler) / 16); + BattleScriptExecute(BattleScript_AquaRingHeal); + effect = TRUE; + } + + return effect; +} + +static bool32 HandleEndTurnIngrain(u32 battler) +{ + bool32 effect = FALSE; + + gBattleStruct->turnEffectsBattlerId++; + + if (gStatuses3[battler] & STATUS3_ROOTED + && !(gStatuses3[battler] & STATUS3_HEAL_BLOCK) + && !IsBattlerAtMaxHp(battler) + && IsBattlerAlive(battler)) + { + gBattleStruct->moveDamage[battler] = GetDrainedBigRootHp(battler, GetNonDynamaxMaxHP(battler) / 16); + BattleScriptExecute(BattleScript_IngrainTurnHeal); + effect = TRUE; + } + + return effect; +} + +static bool32 HandleEndTurnLeechSeed(u32 battler) +{ + bool32 effect = FALSE; + + gBattleStruct->turnEffectsBattlerId++; + + if (gStatuses3[battler] & STATUS3_LEECHSEED + && IsBattlerAlive(gStatuses3[battler] & STATUS3_LEECHSEED_BATTLER) + && IsBattlerAlive(battler) + && !IsBattlerProtectedByMagicGuard(battler, GetBattlerAbility(battler))) + { + gBattlerTarget = gStatuses3[battler] & STATUS3_LEECHSEED_BATTLER; // Notice gBattlerTarget is actually the HP receiver. + gBattleScripting.animArg1 = gBattlerTarget; + gBattleScripting.animArg2 = gBattlerAttacker; + gBattleStruct->moveDamage[gBattlerAttacker] = max(1, GetNonDynamaxMaxHP(battler) / 8); + gBattleStruct->moveDamage[gBattlerTarget] = GetDrainedBigRootHp(gBattlerTarget, gBattleStruct->moveDamage[gBattlerAttacker]); + gHitMarker |= HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_PASSIVE_DAMAGE; + if (GetBattlerAbility(battler) == ABILITY_LIQUID_OOZE) + { + gBattleStruct->moveDamage[gBattlerTarget] = gBattleStruct->moveDamage[gBattlerTarget] * -1; + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_LEECH_SEED_OOZE; + BattleScriptExecute(BattleScript_LeechSeedTurnDrainLiquidOoze); + } + else if (gStatuses3[gBattlerTarget] & STATUS3_HEAL_BLOCK) + { + BattleScriptExecute(BattleScript_LeechSeedTurnDrainHealBlock); + } + else + { + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_LEECH_SEED_DRAIN; + BattleScriptExecute(BattleScript_LeechSeedTurnDrainRecovery); + } + effect = TRUE; + } + + return effect; +} + +static bool32 HandleEndTurnPoison(u32 battler) +{ + bool32 effect = FALSE; + + u32 ability = GetBattlerAbility(battler); + + gBattleStruct->turnEffectsBattlerId++; + + if ((gBattleMons[battler].status1 & STATUS1_POISON || gBattleMons[battler].status1 & STATUS1_TOXIC_POISON) + && IsBattlerAlive(battler) + && !IsBattlerProtectedByMagicGuard(battler, ability)) + { + if (ability == ABILITY_POISON_HEAL) + { + if (!IsBattlerAtMaxHp(battler) && !(gStatuses3[battler] & STATUS3_HEAL_BLOCK)) + { + gBattleStruct->moveDamage[battler] = GetNonDynamaxMaxHP(battler) / 8; + if (gBattleStruct->moveDamage[battler] == 0) + gBattleStruct->moveDamage[battler] = 1; + gBattleStruct->moveDamage[battler] *= -1; + BattleScriptExecute(BattleScript_PoisonHealActivates); + effect = TRUE; + } + } + else if (gBattleMons[battler].status1 & STATUS1_TOXIC_POISON) + { + gBattleStruct->moveDamage[battler] = GetNonDynamaxMaxHP(battler) / 16; + if (gBattleStruct->moveDamage[battler] == 0) + gBattleStruct->moveDamage[battler] = 1; + if ((gBattleMons[battler].status1 & STATUS1_TOXIC_COUNTER) != STATUS1_TOXIC_TURN(15)) // not 16 turns + gBattleMons[battler].status1 += STATUS1_TOXIC_TURN(1); + gBattleStruct->moveDamage[battler] *= (gBattleMons[battler].status1 & STATUS1_TOXIC_COUNTER) >> 8; + BattleScriptExecute(BattleScript_PoisonTurnDmg); + effect = TRUE; + } + else + { + gBattleStruct->moveDamage[battler] = GetNonDynamaxMaxHP(battler) / 8; + if (gBattleStruct->moveDamage[battler] == 0) + gBattleStruct->moveDamage[battler] = 1; + BattleScriptExecute(BattleScript_PoisonTurnDmg); + effect = TRUE; + } + } + + return effect; +} + +static bool32 HandleEndTurnBurn(u32 battler) +{ + bool32 effect = FALSE; + + u32 ability = GetBattlerAbility(battler); + + gBattleStruct->turnEffectsBattlerId++; + + if (gBattleMons[battler].status1 & STATUS1_BURN + && IsBattlerAlive(battler) + && !IsBattlerProtectedByMagicGuard(battler, ability)) + { + gBattleStruct->moveDamage[battler] = GetNonDynamaxMaxHP(battler) / (B_BURN_DAMAGE >= GEN_7 ? 16 : 8); + if (ability == ABILITY_HEATPROOF) + { + if (gBattleStruct->moveDamage[battler] > (gBattleStruct->moveDamage[battler] / 2) + 1) // Record ability if the burn takes less damage than it normally would. + RecordAbilityBattle(battler, ABILITY_HEATPROOF); + gBattleStruct->moveDamage[battler] /= 2; + } + if (gBattleStruct->moveDamage[battler] == 0) + gBattleStruct->moveDamage[battler] = 1; + BattleScriptExecute(BattleScript_BurnTurnDmg); + effect = TRUE; + } + + return effect; +} + +static bool32 HandleEndTurnFrostbite(u32 battler) +{ + bool32 effect = FALSE; + + gBattleStruct->turnEffectsBattlerId++; + + if (gBattleMons[battler].status1 & STATUS1_FROSTBITE + && IsBattlerAlive(battler) + && !IsBattlerProtectedByMagicGuard(battler, GetBattlerAbility(battler))) + { + gBattleStruct->moveDamage[battler] = GetNonDynamaxMaxHP(battler) / (B_BURN_DAMAGE >= GEN_7 ? 16 : 8); + if (gBattleStruct->moveDamage[battler] == 0) + gBattleStruct->moveDamage[battler] = 1; + BattleScriptExecute(BattleScript_FrostbiteTurnDmg); + effect = TRUE; + } + + return effect; +} + +static bool32 HandleEndTurnNightmare(u32 battler) +{ + bool32 effect = FALSE; + + gBattleStruct->turnEffectsBattlerId++; + + if (gBattleMons[battler].status2 & STATUS2_NIGHTMARE + && IsBattlerAlive(battler) + && !IsBattlerProtectedByMagicGuard(battler, GetBattlerAbility(battler))) + { + if (gBattleMons[battler].status1 & STATUS1_SLEEP) + { + gBattleStruct->moveDamage[battler] = GetNonDynamaxMaxHP(battler) / 4; + if (gBattleStruct->moveDamage[battler] == 0) + gBattleStruct->moveDamage[battler] = 1; + BattleScriptExecute(BattleScript_NightmareTurnDmg); + effect = TRUE; + } + else + { + gBattleMons[battler].status2 &= ~STATUS2_NIGHTMARE; + } + } + + return effect; +} + +static bool32 HandleEndTurnCurse(u32 battler) +{ + bool32 effect = FALSE; + + gBattleStruct->turnEffectsBattlerId++; + + if (gBattleMons[battler].status2 & STATUS2_CURSED + && IsBattlerAlive(battler) + && !IsBattlerProtectedByMagicGuard(battler, GetBattlerAbility(battler))) + { + gBattleStruct->moveDamage[battler] = GetNonDynamaxMaxHP(battler) / 4; + if (gBattleStruct->moveDamage[battler] == 0) + gBattleStruct->moveDamage[battler] = 1; + BattleScriptExecute(BattleScript_CurseTurnDmg); + effect = TRUE; + } + + return effect; +} + +static bool32 HandleEndTurnWrap(u32 battler) +{ + bool32 effect = FALSE; + + gBattleStruct->turnEffectsBattlerId++; + + if (gBattleMons[battler].status2 & STATUS2_WRAPPED && IsBattlerAlive(battler)) + { + if (--gDisableStructs[battler].wrapTurns != 0) + { + if (IsBattlerProtectedByMagicGuard(battler, GetBattlerAbility(battler))) + return effect; + + gBattleScripting.animArg1 = gBattleStruct->wrappedMove[battler]; + gBattleScripting.animArg2 = gBattleStruct->wrappedMove[battler] >> 8; + PREPARE_MOVE_BUFFER(gBattleTextBuff1, gBattleStruct->wrappedMove[battler]); + BattleScriptExecute(BattleScript_WrapTurnDmg); + if (GetBattlerHoldEffect(gBattleStruct->wrappedBy[battler], TRUE) == HOLD_EFFECT_BINDING_BAND) + gBattleStruct->moveDamage[battler] = GetNonDynamaxMaxHP(battler) / (B_BINDING_DAMAGE >= GEN_6 ? 6 : 8); + else + gBattleStruct->moveDamage[battler] = GetNonDynamaxMaxHP(battler) / (B_BINDING_DAMAGE >= GEN_6 ? 8 : 16); + + if (gBattleStruct->moveDamage[battler] == 0) + gBattleStruct->moveDamage[battler] = 1; + } + else // broke free + { + gBattleMons[battler].status2 &= ~STATUS2_WRAPPED; + PREPARE_MOVE_BUFFER(gBattleTextBuff1, gBattleStruct->wrappedMove[battler]); + BattleScriptExecute(BattleScript_WrapEnds); + } + effect = TRUE; + } + + return effect; +} + +static bool32 HandleEndTurnSaltCure(u32 battler) +{ + bool32 effect = FALSE; + + gBattleStruct->turnEffectsBattlerId++; + + if (gStatuses4[battler] & STATUS4_SALT_CURE + && IsBattlerAlive(battler) + && !IsBattlerProtectedByMagicGuard(battler, GetBattlerAbility(battler))) + { + if (IS_BATTLER_ANY_TYPE(battler, TYPE_STEEL, TYPE_WATER)) + gBattleStruct->moveDamage[battler] = gBattleMons[battler].maxHP / 4; + else + gBattleStruct->moveDamage[battler] = gBattleMons[battler].maxHP / 8; + if (gBattleStruct->moveDamage[battler] == 0) + gBattleStruct->moveDamage[battler] = 1; + PREPARE_MOVE_BUFFER(gBattleTextBuff1, MOVE_SALT_CURE); + BattleScriptExecute(BattleScript_SaltCureExtraDamage); + effect = TRUE; + } + + return effect; +} + +static bool32 HandleEndTurnOctolock(u32 battler) +{ + bool32 effect = FALSE; + + gBattleStruct->turnEffectsBattlerId++; + + if (gDisableStructs[battler].octolock) + { + gBattlerTarget = battler; + gBattlerAttacker = gDisableStructs[battler].battlerPreventingEscape; + BattleScriptExecute(BattleScript_OctolockEndTurn); + effect = TRUE; + } + + return effect; +} + +static bool32 HandleEndTurnSyrupBomb(u32 battler) +{ + bool32 effect = FALSE; + + gBattleStruct->turnEffectsBattlerId++; + + if ((gStatuses4[battler] & STATUS4_SYRUP_BOMB) && (IsBattlerAlive(battler))) + { + if (gDisableStructs[battler].syrupBombTimer > 0 && --gDisableStructs[battler].syrupBombTimer == 0) + gStatuses4[battler] &= ~STATUS4_SYRUP_BOMB; + PREPARE_MOVE_BUFFER(gBattleTextBuff1, MOVE_SYRUP_BOMB); + gBattlescriptCurrInstr = BattleScript_SyrupBombEndTurn; + BattleScriptExecute(gBattlescriptCurrInstr); + effect = TRUE; + } + + return effect; +} + +static bool32 HandleEndTurnTaunt(u32 battler) +{ + bool32 effect = FALSE; + + gBattleStruct->turnEffectsBattlerId++; + + if (gDisableStructs[battler].tauntTimer && --gDisableStructs[battler].tauntTimer == 0) + { + BattleScriptExecute(BattleScript_BufferEndTurn); + PREPARE_MOVE_BUFFER(gBattleTextBuff1, MOVE_TAUNT); + effect = TRUE; + } + + return effect; +} + +static bool32 HandleEndTurnTorment(u32 battler) +{ + bool32 effect = FALSE; + + gBattleStruct->turnEffectsBattlerId++; + + if (gDisableStructs[battler].tormentTimer == gBattleTurnCounter) + { + gBattleMons[battler].status2 &= ~STATUS2_TORMENT; + BattleScriptExecute(BattleScript_TormentEnds); + effect = TRUE; + } + + return effect; +} + +static bool32 HandleEndTurnEncore(u32 battler) +{ + bool32 effect = FALSE; + + gBattleStruct->turnEffectsBattlerId++; + + if (gDisableStructs[battler].encoreTimer != 0) + { + if (gBattleMons[battler].moves[gDisableStructs[battler].encoredMovePos] != gDisableStructs[battler].encoredMove) // Pokémon does not have the encored move anymore + { + gDisableStructs[battler].encoredMove = 0; + gDisableStructs[battler].encoreTimer = 0; + } + else if (--gDisableStructs[battler].encoreTimer == 0 + || gBattleMons[battler].pp[gDisableStructs[battler].encoredMovePos] == 0) + { + gDisableStructs[battler].encoredMove = 0; + gDisableStructs[battler].encoreTimer = 0; + BattleScriptExecute(BattleScript_EncoredNoMore); + effect = TRUE; + } + } + + return effect; +} + +static bool32 HandleEndTurnDisable(u32 battler) +{ + bool32 effect = FALSE; + + u32 moveIndex = 0; + gBattleStruct->turnEffectsBattlerId++; + + if (gDisableStructs[battler].disableTimer != 0) + { + for (moveIndex = 0; moveIndex < MAX_MON_MOVES; moveIndex++) + { + if (gDisableStructs[battler].disabledMove == gBattleMons[battler].moves[moveIndex]) + break; + } + if (moveIndex == MAX_MON_MOVES) // Pokémon does not have the disabled move anymore + { + gDisableStructs[battler].disabledMove = 0; + gDisableStructs[battler].disableTimer = 0; + } + else if (--gDisableStructs[battler].disableTimer == 0) // disable ends + { + gDisableStructs[battler].disabledMove = 0; + BattleScriptExecute(BattleScript_DisabledNoMore); + effect = TRUE; + } + } + + return effect; +} + +static bool32 HandleEndTurnMagnetRise(u32 battler) +{ + bool32 effect = FALSE; + + gBattleStruct->turnEffectsBattlerId++; + + if (gStatuses3[battler] & STATUS3_MAGNET_RISE && gDisableStructs[battler].magnetRiseTimer == gBattleTurnCounter) + { + gStatuses3[battler] &= ~STATUS3_MAGNET_RISE; + BattleScriptExecute(BattleScript_BufferEndTurn); + PREPARE_STRING_BUFFER(gBattleTextBuff1, STRINGID_ELECTROMAGNETISM); + effect = TRUE; + } + + return effect; +} + +static bool32 HandleEndTurnTelekinesis(u32 battler) +{ + bool32 effect = FALSE; + + gBattleStruct->turnEffectsBattlerId++; + + if (gStatuses3[battler] & STATUS3_TELEKINESIS && gDisableStructs[battler].telekinesisTimer == gBattleTurnCounter) + { + gStatuses3[battler] &= ~STATUS3_TELEKINESIS; + BattleScriptExecute(BattleScript_TelekinesisEndTurn); + effect = TRUE; + } + + return effect; +} + +static bool32 HandleEndTurnHealBlock(u32 battler) +{ + bool32 effect = FALSE; + + gBattleStruct->turnEffectsBattlerId++; + + if (gStatuses3[battler] & STATUS3_HEAL_BLOCK && gDisableStructs[battler].healBlockTimer == gBattleTurnCounter) + { + gStatuses3[battler] &= ~STATUS3_HEAL_BLOCK; + BattleScriptExecute(BattleScript_BufferEndTurn); + PREPARE_MOVE_BUFFER(gBattleTextBuff1, MOVE_HEAL_BLOCK); + effect = TRUE; + } + + return effect; +} + +static bool32 HandleEndTurnEmbargo(u32 battler) +{ + bool32 effect = FALSE; + + gBattleStruct->turnEffectsBattlerId++; + + if (gStatuses3[battler] & STATUS3_EMBARGO && gDisableStructs[battler].embargoTimer == gBattleTurnCounter) + { + gStatuses3[battler] &= ~STATUS3_EMBARGO; + BattleScriptExecute(BattleScript_EmbargoEndTurn); + effect = TRUE; + } + + return effect; +} + +static bool32 HandleEndTurnYawn(u32 battler) +{ + bool32 effect = FALSE; + + u32 ability = GetBattlerAbility(battler); + + gBattleStruct->turnEffectsBattlerId++; + + if (gStatuses3[battler] & STATUS3_YAWN) + { + gStatuses3[battler] -= STATUS3_YAWN_TURN(1); + if (!(gStatuses3[battler] & STATUS3_YAWN) && !(gBattleMons[battler].status1 & STATUS1_ANY) + && ability != ABILITY_VITAL_SPIRIT + && ability != ABILITY_INSOMNIA + && !UproarWakeUpCheck(battler) + && !IsLeafGuardProtected(battler, ability)) + { + CancelMultiTurnMoves(battler, SKY_DROP_STATUS_YAWN); + gEffectBattler = gBattlerTarget = battler; + if (IsBattlerTerrainAffected(battler, STATUS_FIELD_ELECTRIC_TERRAIN)) + { + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_TERRAINPREVENTS_ELECTRIC; + BattleScriptExecute(BattleScript_TerrainPreventsEnd2); + } + else if (IsBattlerTerrainAffected(battler, STATUS_FIELD_MISTY_TERRAIN)) + { + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_TERRAINPREVENTS_MISTY; + BattleScriptExecute(BattleScript_TerrainPreventsEnd2); + } + else if (IsSleepClauseActiveForSide(GetBattlerSide(battler))) + { + BattleScriptExecute(BattleScript_SleepClausePreventsEnd); + } + else + { + if (B_SLEEP_TURNS >= GEN_5) + gBattleMons[battler].status1 |= ((Random() % 3) + 2); + else + gBattleMons[battler].status1 |= ((Random() % 4) + 3); + + TryActivateSleepClause(battler, gBattlerPartyIndexes[battler]); + BtlController_EmitSetMonData(battler, B_COMM_TO_CONTROLLER, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[battler].status1); + MarkBattlerForControllerExec(battler); + BattleScriptExecute(BattleScript_YawnMakesAsleep); + } + effect = TRUE; + } + } + + return effect; +} + +static bool32 HandleEndTurnPerishSong(u32 battler) +{ + bool32 effect = FALSE; + + gBattleStruct->turnEffectsBattlerId++; + + if (IsBattlerAlive(battler) && gStatuses3[battler] & STATUS3_PERISH_SONG) + { + PREPARE_BYTE_NUMBER_BUFFER(gBattleTextBuff1, 1, gDisableStructs[battler].perishSongTimer); + if (gDisableStructs[battler].perishSongTimer == 0) + { + gStatuses3[battler] &= ~STATUS3_PERISH_SONG; + gBattleStruct->moveDamage[battler] = gBattleMons[battler].hp; + BattleScriptExecute(BattleScript_PerishSongTakesLife); + } + else + { + gDisableStructs[battler].perishSongTimer--; + BattleScriptExecute(BattleScript_PerishSongCountGoesDown); + } + effect = TRUE; + } + + return effect; +} + +static bool32 HandleEndTurnRoost(u32 battler) +{ + bool32 effect = FALSE; + + gBattleStruct->turnEffectsBattlerId++; + + if (gDisableStructs[battler].roostActive) + gDisableStructs[battler].roostActive = FALSE; + + return effect; +} + +static bool32 HandleEndTurnSecondEventBlock(u32 battler) +{ + bool32 effect = FALSE; + + u32 side = gBattleStruct->turnSideTracker; + + switch (gBattleStruct->eventBlockCounter) + { + case SECOND_EVENT_BLOCK_REFLECT: + if (gSideStatuses[side] & SIDE_STATUS_REFLECT && gSideTimers[side].reflectTimer == gBattleTurnCounter) + { + gBattlerAttacker = GetBattlerSideForMessage(side); + gSideStatuses[side] &= ~SIDE_STATUS_REFLECT; + BattleScriptExecute(BattleScript_SideStatusWoreOff); + gBattleCommunication[MULTISTRING_CHOOSER] = side; + PREPARE_MOVE_BUFFER(gBattleTextBuff1, MOVE_REFLECT); + effect = TRUE; + } + gBattleStruct->eventBlockCounter++; + break; + case SECOND_EVENT_BLOCK_LIGHT_SCREEN: + if (gSideStatuses[side] & SIDE_STATUS_LIGHTSCREEN && gSideTimers[side].lightscreenTimer == gBattleTurnCounter) + { + gBattlerAttacker = GetBattlerSideForMessage(side); + gSideStatuses[side] &= ~SIDE_STATUS_LIGHTSCREEN; + BattleScriptExecute(BattleScript_SideStatusWoreOff); + gBattleCommunication[MULTISTRING_CHOOSER] = side; + PREPARE_MOVE_BUFFER(gBattleTextBuff1, MOVE_LIGHT_SCREEN); + effect = TRUE; + } + gBattleStruct->eventBlockCounter++; + break; + case SECOND_EVENT_BLOCK_SAFEGUARD: + if (gSideStatuses[side] & SIDE_STATUS_SAFEGUARD && gSideTimers[side].safeguardTimer == gBattleTurnCounter) + { + gBattlerAttacker = GetBattlerSideForMessage(side); + gSideStatuses[side] &= ~SIDE_STATUS_SAFEGUARD; + BattleScriptExecute(BattleScript_SafeguardEnds); + effect = TRUE; + } + gBattleStruct->eventBlockCounter++; + break; + case SECOND_EVENT_BLOCK_MIST: + if (gSideTimers[side].mistTimer != 0 && gSideTimers[side].mistTimer == gBattleTurnCounter) + { + gBattlerAttacker = GetBattlerSideForMessage(side); + gSideStatuses[side] &= ~SIDE_STATUS_MIST; + BattleScriptExecute(BattleScript_SideStatusWoreOff); + gBattleCommunication[MULTISTRING_CHOOSER] = side; + PREPARE_MOVE_BUFFER(gBattleTextBuff1, MOVE_MIST); + effect = TRUE; + } + gBattleStruct->eventBlockCounter++; + break; + case SECOND_EVENT_BLOCK_TAILWIND: + if (gSideStatuses[side] & SIDE_STATUS_TAILWIND && gSideTimers[side].tailwindTimer == gBattleTurnCounter) + { + gBattlerAttacker = GetBattlerSideForMessage(side); + gSideStatuses[side] &= ~SIDE_STATUS_TAILWIND; + BattleScriptExecute(BattleScript_TailwindEnds); + effect = TRUE; + } + gBattleStruct->eventBlockCounter++; + break; + case SECOND_EVENT_BLOCK_LUCKY_CHANT: + if (gSideStatuses[side] & SIDE_STATUS_LUCKY_CHANT && gSideTimers[side].luckyChantTimer == gBattleTurnCounter) + { + gBattlerAttacker = GetBattlerSideForMessage(side); + gSideStatuses[side] &= ~SIDE_STATUS_LUCKY_CHANT; + BattleScriptExecute(BattleScript_LuckyChantEnds); + effect = TRUE; + } + gBattleStruct->eventBlockCounter++; + break; + case SECOND_EVENT_BLOCK_RAINBOW: + gBattlerAttacker = GetBattlerSideForMessage(side); + if (gSideStatuses[side] & SIDE_STATUS_RAINBOW && gSideTimers[side].rainbowTimer == gBattleTurnCounter) + { + gSideStatuses[side] &= ~SIDE_STATUS_RAINBOW; + BattleScriptExecute(BattleScript_TheRainbowDisappeared); + effect = TRUE; + } + gBattleStruct->eventBlockCounter++; + break; + case SECOND_EVENT_BLOCK_SEA_OF_FIRE: + if (gSideStatuses[side] & SIDE_STATUS_SEA_OF_FIRE && gSideTimers[side].seaOfFireTimer == gBattleTurnCounter) + { + gSideStatuses[side] &= ~SIDE_STATUS_SEA_OF_FIRE; + BattleScriptExecute(BattleScript_TheSeaOfFireDisappeared); + effect = TRUE; + } + gBattleStruct->eventBlockCounter++; + break; + case SECOND_EVENT_BLOCK_SWAMP: + gBattlerAttacker = GetBattlerSideForMessage(side); + if (gSideStatuses[side] & SIDE_STATUS_SWAMP && gSideTimers[side].swampTimer == gBattleTurnCounter) + { + gSideStatuses[side] &= ~SIDE_STATUS_SWAMP; + BattleScriptExecute(BattleScript_TheSwampDisappeared); + effect = TRUE; + } + gBattleStruct->eventBlockCounter++; + break; + case SECOND_EVENT_BLOCK_AURORA_VEIL: + if (gSideStatuses[side] & SIDE_STATUS_AURORA_VEIL && gSideTimers[side].auroraVeilTimer == gBattleTurnCounter) + { + gBattlerAttacker = GetBattlerSideForMessage(side); + gSideStatuses[side] &= ~SIDE_STATUS_AURORA_VEIL; + BattleScriptExecute(BattleScript_SideStatusWoreOff); + gBattleCommunication[MULTISTRING_CHOOSER] = side; + PREPARE_MOVE_BUFFER(gBattleTextBuff1, MOVE_AURORA_VEIL); + effect = TRUE; + } + gBattleStruct->turnSideTracker++; + gBattleStruct->eventBlockCounter = 0; + break; + } + + return effect; +} + +static bool32 HandleEndTurnTrickRoom(u32 battler) +{ + bool32 effect = FALSE; + + gBattleStruct->endTurnEventsCounter++; + + if (gFieldStatuses & STATUS_FIELD_TRICK_ROOM && gFieldTimers.trickRoomTimer == gBattleTurnCounter) + { + gFieldStatuses &= ~STATUS_FIELD_TRICK_ROOM; + BattleScriptExecute(BattleScript_TrickRoomEnds); + effect = TRUE; + } + + return effect; +} + +static bool32 HandleEndTurnGravity(u32 battler) +{ + bool32 effect = FALSE; + + gBattleStruct->endTurnEventsCounter++; + + if (gFieldStatuses & STATUS_FIELD_GRAVITY && gFieldTimers.gravityTimer == gBattleTurnCounter) + { + gFieldStatuses &= ~STATUS_FIELD_GRAVITY; + BattleScriptExecute(BattleScript_GravityEnds); + effect = TRUE; + } + + return effect; +} + +static bool32 HandleEndTurnWaterSport(u32 battler) +{ + bool32 effect = FALSE; + + gBattleStruct->endTurnEventsCounter++; + + if (gFieldStatuses & STATUS_FIELD_WATERSPORT && gFieldTimers.waterSportTimer == gBattleTurnCounter) + { + gFieldStatuses &= ~STATUS_FIELD_WATERSPORT; + BattleScriptExecute(BattleScript_WaterSportEnds); + effect = TRUE; + } + + return effect; +} + +static bool32 HandleEndTurnMudSport(u32 battler) +{ + bool32 effect = FALSE; + + gBattleStruct->endTurnEventsCounter++; + + if (gFieldStatuses & STATUS_FIELD_MUDSPORT && gFieldTimers.mudSportTimer == gBattleTurnCounter) + { + gFieldStatuses &= ~STATUS_FIELD_MUDSPORT; + BattleScriptExecute(BattleScript_MudSportEnds); + effect = TRUE; + } + + return effect; +} + +static bool32 HandleEndTurnWonderRoom(u32 battler) +{ + bool32 effect = FALSE; + + gBattleStruct->endTurnEventsCounter++; + + if (gFieldStatuses & STATUS_FIELD_WONDER_ROOM && gFieldTimers.wonderRoomTimer == gBattleTurnCounter) + { + gFieldStatuses &= ~STATUS_FIELD_WONDER_ROOM; + BattleScriptExecute(BattleScript_WonderRoomEnds); + effect = TRUE; + } + + return effect; +} + +static bool32 HandleEndTurnMagicRoom(u32 battler) +{ + bool32 effect = FALSE; + + gBattleStruct->endTurnEventsCounter++; + + if (gFieldStatuses & STATUS_FIELD_MAGIC_ROOM && gFieldTimers.magicRoomTimer == gBattleTurnCounter) + { + gFieldStatuses &= ~STATUS_FIELD_MAGIC_ROOM; + BattleScriptExecute(BattleScript_MagicRoomEnds); + effect = TRUE; + } + + return effect; +} + +static bool32 EndTurnTerrain(u32 terrainFlag, u32 stringTableId) +{ + if (gFieldStatuses & terrainFlag && gFieldTimers.terrainTimer == gBattleTurnCounter) + { + gFieldStatuses &= ~terrainFlag; + TryToRevertMimicryAndFlags(); + gBattleCommunication[MULTISTRING_CHOOSER] = stringTableId; + BattleScriptExecute(BattleScript_TerrainEnds); + return TRUE; + } + + return FALSE; +} + +static bool32 HandleEndTurnTerrain(u32 battler) +{ + bool32 effect = FALSE; + + gBattleStruct->endTurnEventsCounter++; + + if (gFieldStatuses & STATUS_FIELD_ELECTRIC_TERRAIN) + effect = EndTurnTerrain(STATUS_FIELD_ELECTRIC_TERRAIN, B_MSG_TERRAIN_END_ELECTRIC); + else if (gFieldStatuses & STATUS_FIELD_MISTY_TERRAIN) + effect = EndTurnTerrain(STATUS_FIELD_MISTY_TERRAIN, B_MSG_TERRAIN_END_MISTY); + else if (gFieldStatuses & STATUS_FIELD_GRASSY_TERRAIN) + effect = EndTurnTerrain(STATUS_FIELD_GRASSY_TERRAIN, B_MSG_TERRAIN_END_GRASSY); + else if (gFieldStatuses & STATUS_FIELD_PSYCHIC_TERRAIN) + effect = EndTurnTerrain(STATUS_FIELD_PSYCHIC_TERRAIN, B_MSG_TERRAIN_END_PSYCHIC); + + return effect; +} + +static bool32 HandleEndTurnThirdEventBlock(u32 battler) +{ + bool32 effect = FALSE; + + if (!IsBattlerAlive(battler)) + { + gBattleStruct->turnEffectsBattlerId++; + return effect; + } + + switch (gBattleStruct->eventBlockCounter) + { + case THIRD_EVENT_BLOCK_UPROAR: + if (gBattleMons[battler].status2 & STATUS2_UPROAR) + { + for (gBattlerAttacker = 0; gBattlerAttacker < gBattlersCount; gBattlerAttacker++) + { + if ((gBattleMons[gBattlerAttacker].status1 & STATUS1_SLEEP) + && GetBattlerAbility(gBattlerAttacker) != ABILITY_SOUNDPROOF) + { + gBattleMons[gBattlerAttacker].status1 &= ~STATUS1_SLEEP; + gBattleMons[gBattlerAttacker].status2 &= ~STATUS2_NIGHTMARE; + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + BattleScriptExecute(BattleScript_MonWokeUpInUproar); + BtlController_EmitSetMonData(gBattlerAttacker, B_COMM_TO_CONTROLLER, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gBattlerAttacker].status1); + MarkBattlerForControllerExec(gBattlerAttacker); + break; + } + } + if (gBattlerAttacker != gBattlersCount) + { + break; + } + else + { + gBattlerAttacker = battler; + gBattleMons[battler].status2 -= STATUS2_UPROAR_TURN(1); // uproar timer goes down + if (WasUnableToUseMove(battler)) + { + CancelMultiTurnMoves(battler, SKY_DROP_IGNORE); + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_UPROAR_ENDS; + } + else if (gBattleMons[battler].status2 & STATUS2_UPROAR) + { + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_UPROAR_CONTINUES; + gBattleMons[battler].status2 |= STATUS2_MULTIPLETURNS; + } + else + { + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_UPROAR_ENDS; + CancelMultiTurnMoves(battler, SKY_DROP_IGNORE); + } + BattleScriptExecute(BattleScript_PrintUproarOverTurns); + effect = TRUE; + } + } + gBattleStruct->eventBlockCounter++; + break; + case THIRD_EVENT_BLOCK_ABILITIES: + { + u32 ability = GetBattlerAbility(battler); + switch (ability) + { + case ABILITY_TRUANT: // Not fully accurate but it has to be handled somehow. TODO: Find a better way. + case ABILITY_CUD_CHEW: + case ABILITY_SLOW_START: + case ABILITY_BAD_DREAMS: + case ABILITY_BALL_FETCH: + case ABILITY_HARVEST: + case ABILITY_MOODY: + case ABILITY_PICKUP: + case ABILITY_SPEED_BOOST: + if (AbilityBattleEffects(ABILITYEFFECT_ENDTURN, battler, ability, 0, MOVE_NONE)) + effect = TRUE; + break; + } + gBattleStruct->eventBlockCounter++; + break; + } + case THIRD_EVENT_BLOCK_ITEMS: + { + enum ItemHoldEffect holdEffect = GetBattlerHoldEffect(battler, TRUE); + switch (holdEffect) + { + case HOLD_EFFECT_FLAME_ORB: + case HOLD_EFFECT_STICKY_BARB: + case HOLD_EFFECT_TOXIC_ORB: + if (ItemBattleEffects(ITEMEFFECT_ORBS, battler, FALSE)) + effect = TRUE; + break; + case HOLD_EFFECT_WHITE_HERB: + if (ItemBattleEffects(ITEMEFFECT_NORMAL, battler, FALSE)) + effect = TRUE; + break; + default: + break; + } + gBattleStruct->eventBlockCounter = 0; + gBattleStruct->turnEffectsBattlerId++; + break; + } + } + + return effect; +} + +static bool32 HandleEndTurnAbilities(u32 battler) +{ + bool32 effect = FALSE; + + u32 ability = GetBattlerAbility(battler); + + gBattleStruct->turnEffectsBattlerId++; + + switch (ability) + { + case ABILITY_POWER_CONSTRUCT: + case ABILITY_SCHOOLING: + case ABILITY_SHIELDS_DOWN: + case ABILITY_ZEN_MODE: + if (AbilityBattleEffects(ABILITYEFFECT_ENDTURN, battler, ability, 0, MOVE_NONE)) + effect = TRUE; + } + + return effect; +} + +static bool32 HandleEndTurnFourthEventBlock(u32 battler) +{ + bool32 effect = FALSE; + + switch (gBattleStruct->eventBlockCounter) + { + case FOURTH_EVENT_BLOCK_HUNGER_SWITCH: + { + u32 ability = GetBattlerAbility(battler); + if (ability == ABILITY_HUNGER_SWITCH) + { + if (AbilityBattleEffects(ABILITYEFFECT_ENDTURN, battler, ability, 0, MOVE_NONE)) + effect = TRUE; + } + gBattleStruct->eventBlockCounter++; + break; + } + case FOURTH_EVENT_BLOCK_EJECT_PACK: + { + enum ItemHoldEffect holdEffect = GetBattlerHoldEffect(battler, TRUE); + if (holdEffect == HOLD_EFFECT_EJECT_PACK) + { + if (ItemBattleEffects(ITEMEFFECT_NORMAL, battler, FALSE)) + effect = TRUE; + } + gBattleStruct->eventBlockCounter = 0; + gBattleStruct->turnEffectsBattlerId++; + break; + } + } + + return effect; +} + +static bool32 HandleEndTurnDynamax(u32 battler) +{ + bool32 effect = FALSE; + + gBattleStruct->turnEffectsBattlerId++; + + if (GetActiveGimmick(battler) == GIMMICK_DYNAMAX && gBattleStruct->dynamax.dynamaxTurns[battler] == gBattleTurnCounter) + { + gBattleScripting.battler = battler; + UndoDynamax(battler); + BattleScriptExecute(BattleScript_DynamaxEnds); + effect = TRUE; + } + + return effect; +} + +static bool32 (*const sEndTurnEffectHandlers[])(u32 battler) = +{ + [ENDTURN_ORDER] = HandleEndTurnOrder, + [ENDTURN_VARIOUS] = HandleEndTurnVarious, + [ENDTURN_WEATHER] = HandleEndTurnWeather, + [ENDTURN_WEATHER_DAMAGE] = HandleEndTurnWeatherDamage, + [ENDTURN_GEN_3_BERRY_ACTIVATION] = HandleEndTurnGenThreeBerryActivation, + [ENDTURN_EMERGENCY_EXIT_1] = HandleEndTurnEmergencyExit, + [ENDTURN_AFFECTION] = HandleEndTurnAffection, + [ENDTURN_FUTURE_SIGHT] = HandleEndTurnFutureSight, + [ENDTURN_WISH] = HandleEndTurnWish, + [ENDTURN_FIRST_EVENT_BLOCK] = HandleEndTurnFirstEventBlock, + [ENDTURN_EMERGENCY_EXIT_2] = HandleEndTurnEmergencyExit, + [ENDTURN_AQUA_RING] = HandleEndTurnAquaRing, + [ENDTURN_INGRAIN] = HandleEndTurnIngrain, + [ENDTURN_LEECH_SEED] = HandleEndTurnLeechSeed, + [ENDTURN_POISON] = HandleEndTurnPoison, + [ENDTURN_BURN] = HandleEndTurnBurn, + [ENDTURN_FROSTBITE] = HandleEndTurnFrostbite, + [ENDTURN_NIGHTMARE] = HandleEndTurnNightmare, + [ENDTURN_CURSE] = HandleEndTurnCurse, + [ENDTURN_WRAP] = HandleEndTurnWrap, + [ENDTURN_SALT_CURE] = HandleEndTurnSaltCure, + [ENDTURN_OCTOLOCK] = HandleEndTurnOctolock, + [ENDTURN_SYRUP_BOMB] = HandleEndTurnSyrupBomb, + [ENDTURN_TAUNT] = HandleEndTurnTaunt, + [ENDTURN_TORMENT] = HandleEndTurnTorment, + [ENDTURN_ENCORE] = HandleEndTurnEncore, + [ENDTURN_DISABLE] = HandleEndTurnDisable, + [ENDTURN_MAGNET_RISE] = HandleEndTurnMagnetRise, + [ENDTURN_TELEKINESIS] = HandleEndTurnTelekinesis, + [ENDTURN_HEAL_BLOCK] = HandleEndTurnHealBlock, + [ENDTURN_EMBARGO] = HandleEndTurnEmbargo, + [ENDTURN_YAWN] = HandleEndTurnYawn, + [ENDTURN_PERISH_SONG] = HandleEndTurnPerishSong, + [ENDTURN_ROOST] = HandleEndTurnRoost, + [ENDTURN_EMERGENCY_EXIT_3] = HandleEndTurnEmergencyExit, + [ENDTURN_SECOND_EVENT_BLOCK] = HandleEndTurnSecondEventBlock, + [ENDTURN_TRICK_ROOM] = HandleEndTurnTrickRoom, + [ENDTURN_GRAVITY] = HandleEndTurnGravity, + [ENDTURN_WATER_SPORT] = HandleEndTurnWaterSport, + [ENDTURN_MUD_SPORT] = HandleEndTurnMudSport, + [ENDTURN_WONDER_ROOM] = HandleEndTurnWonderRoom, + [ENDTURN_MAGIC_ROOM] = HandleEndTurnMagicRoom, + [ENDTURN_TERRAIN] = HandleEndTurnTerrain, + [ENDTURN_THIRD_EVENT_BLOCK] = HandleEndTurnThirdEventBlock, + [ENDTURN_EMERGENCY_EXIT_4] = HandleEndTurnEmergencyExit, + [ENDTURN_ABILITIES] = HandleEndTurnAbilities, + [ENDTURN_FOURTH_EVENT_BLOCK] = HandleEndTurnFourthEventBlock, + [ENDTURN_DYNAMAX] = HandleEndTurnDynamax, +}; + +u32 DoEndTurnEffects(void) +{ + u32 battler = MAX_BATTLERS_COUNT; + gHitMarker |= (HITMARKER_GRUDGE | HITMARKER_IGNORE_BIDE); + + for (;;) + { + // If either turnEffectsBattlerId or turnSideTracker are at max count, reest values and go to the next state + if (gBattleStruct->turnEffectsBattlerId == gBattlersCount || gBattleStruct->turnSideTracker == NUM_BATTLE_SIDES) + { + gBattleStruct->turnEffectsBattlerId = 0; + gBattleStruct->turnSideTracker = 0; + gBattleStruct->eventBlockCounter = 0; + gBattleStruct->endTurnEventsCounter++; + } + + // Jump out if possible after endTurnEventsCounter was increased in the above code block + if (gBattleStruct->endTurnEventsCounter == ENDTURN_COUNT) + { + gHitMarker &= ~(HITMARKER_GRUDGE | HITMARKER_IGNORE_BIDE); + return FALSE; + } + + battler = gBattlerAttacker = gBattlerByTurnOrder[gBattleStruct->turnEffectsBattlerId]; + + if (sEndTurnEffectHandlers[gBattleStruct->endTurnEventsCounter](battler)) + return TRUE; + } +} diff --git a/src/battle_factory.c b/src/battle_factory.c index d1f24f7227..5a9ab56127 100644 --- a/src/battle_factory.c +++ b/src/battle_factory.c @@ -817,7 +817,7 @@ u8 GetNumPastRentalsRank(u8 battleMode, u8 lvlMode) return ret; } -u32 GetAiScriptsInBattleFactory(void) +u64 GetAiScriptsInBattleFactory(void) { int lvlMode = gSaveBlock2Ptr->frontier.lvlMode; diff --git a/src/battle_gfx_sfx_util.c b/src/battle_gfx_sfx_util.c index 1f4fedd0d5..3d8d2f48be 100644 --- a/src/battle_gfx_sfx_util.c +++ b/src/battle_gfx_sfx_util.c @@ -146,7 +146,7 @@ void FreeBattleSpritesData(void) u16 ChooseMoveAndTargetInBattlePalace(u32 battler) { s32 i, var1, var2; - s32 chosenMoveId = -1; + s32 chosenMoveIndex = -1; struct ChooseMoveStruct *moveInfo = (struct ChooseMoveStruct *)(&gBattleResources->bufferA[battler][4]); u8 unusableMovesBits = CheckMoveLimitations(battler, 0, MOVE_LIMITATIONS_ALL); s32 percent = Random() % 100; @@ -199,15 +199,15 @@ u16 ChooseMoveAndTargetInBattlePalace(u32 battler) gBattleStruct->palaceFlags &= (1 << MAX_BATTLERS_COUNT) - 1; gBattleStruct->palaceFlags |= (selectedMoves << MAX_BATTLERS_COUNT); BattleAI_SetupAIData(selectedMoves, battler); - chosenMoveId = BattleAI_ChooseMoveOrAction(battler); + chosenMoveIndex = BattleAI_ChooseMoveIndex(battler); } // If no moves matched the selected group, pick a new move from groups the Pokémon has // In this case the AI is not checked again, so the choice may be worse // If a move is chosen this way, there's a 50% chance that it will be unable to use it anyway - if (chosenMoveId == -1 || chosenMoveId >= MAX_MON_MOVES) + if (chosenMoveIndex == -1 || chosenMoveIndex >= MAX_MON_MOVES) { - chosenMoveId = -1; + chosenMoveIndex = -1; if (unusableMovesBits != ALL_MOVES_MASK) { numMovesPerGroup = 0, numMultipleMoveGroups = 0; @@ -254,8 +254,8 @@ u16 ChooseMoveAndTargetInBattlePalace(u32 battler) { i = Random() % MAX_MON_MOVES; if (!((1u << i) & unusableMovesBits)) - chosenMoveId = i; - } while (chosenMoveId == -1); + chosenMoveIndex = i; + } while (chosenMoveIndex == -1); } else { @@ -280,8 +280,8 @@ u16 ChooseMoveAndTargetInBattlePalace(u32 battler) { i = Random() % MAX_MON_MOVES; if (!((1u << i) & unusableMovesBits) && randSelectGroup == GetBattlePalaceMoveGroup(battler, moveInfo->moves[i])) - chosenMoveId = i; - } while (chosenMoveId == -1); + chosenMoveIndex = i; + } while (chosenMoveIndex == -1); } // Because the selected move was not from the Nature-chosen move group there's a 50% chance @@ -300,16 +300,16 @@ u16 ChooseMoveAndTargetInBattlePalace(u32 battler) } } - moveTarget = GetBattlerMoveTargetType(battler, moveInfo->moves[chosenMoveId]); + moveTarget = GetBattlerMoveTargetType(battler, moveInfo->moves[chosenMoveIndex]); if (moveTarget & MOVE_TARGET_USER) - chosenMoveId |= (battler << 8); + chosenMoveIndex |= (battler << 8); else if (moveTarget == MOVE_TARGET_SELECTED) - chosenMoveId |= GetBattlePalaceTarget(battler); + chosenMoveIndex |= GetBattlePalaceTarget(battler); else - chosenMoveId |= (GetBattlerAtPosition(BATTLE_OPPOSITE(GetBattlerSide(battler))) << 8); + chosenMoveIndex |= (GetBattlerAtPosition(BATTLE_OPPOSITE(GetBattlerSide(battler))) << 8); - return chosenMoveId; + return chosenMoveIndex; } #undef maxGroupNum @@ -351,7 +351,7 @@ static u16 GetBattlePalaceTarget(u32 battler) { u8 opposing1, opposing2; - if (GetBattlerSide(battler) == B_SIDE_PLAYER) + if (IsOnPlayerSide(battler)) { opposing1 = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT); opposing2 = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT); @@ -512,10 +512,7 @@ bool8 TryHandleLaunchBattleTableAnimation(u8 activeBattler, u8 atkBattler, u8 de } if (tableId == B_ANIM_ILLUSION_OFF) - { - gBattleStruct->illusion[activeBattler].broken = 1; - gBattleStruct->illusion[activeBattler].on = 0; - } + gBattleStruct->illusion[activeBattler].state = ILLUSION_OFF; gBattleAnimAttacker = atkBattler; gBattleAnimTarget = defBattler; @@ -611,7 +608,7 @@ bool8 IsBattleSEPlaying(u8 battler) void BattleLoadMonSpriteGfx(struct Pokemon *mon, u32 battler) { u32 personalityValue, isShiny, species, paletteOffset, position; - const void *lzPaletteData; + const u16 *paletteData; struct Pokemon *illusionMon = GetIllusionMonPtr(battler); if (illusionMon != NULL) mon = illusionMon; @@ -645,21 +642,19 @@ void BattleLoadMonSpriteGfx(struct Pokemon *mon, u32 battler) } position = GetBattlerPosition(battler); - HandleLoadSpecialPokePic((GetBattlerSide(battler) == B_SIDE_OPPONENT), + HandleLoadSpecialPokePic(!IsOnPlayerSide(battler), gMonSpritesGfxPtr->spritesGfx[position], species, personalityValue); paletteOffset = OBJ_PLTT_ID(battler); if (gBattleSpritesDataPtr->battlerData[battler].transformSpecies == SPECIES_NONE) - lzPaletteData = GetMonFrontSpritePal(mon); + paletteData = GetMonFrontSpritePal(mon); else - lzPaletteData = GetMonSpritePalFromSpeciesAndPersonality(species, isShiny, personalityValue); + paletteData = GetMonSpritePalFromSpeciesAndPersonality(species, isShiny, personalityValue); - void *buffer = malloc_and_decompress(lzPaletteData, NULL); - LoadPalette(buffer, paletteOffset, PLTT_SIZE_4BPP); - LoadPalette(buffer, BG_PLTT_ID(8) + BG_PLTT_ID(battler), PLTT_SIZE_4BPP); - Free(buffer); + LoadPalette(paletteData, paletteOffset, PLTT_SIZE_4BPP); + LoadPalette(paletteData, BG_PLTT_ID(8) + BG_PLTT_ID(battler), PLTT_SIZE_4BPP); // transform's pink color if (gBattleSpritesDataPtr->battlerData[battler].transformSpecies != SPECIES_NONE) @@ -696,7 +691,7 @@ void DecompressTrainerFrontPic(u16 frontPicId, u8 battler) u8 position = GetBattlerPosition(battler); DecompressPicFromTable(&gTrainerSprites[frontPicId].frontPic, gMonSpritesGfxPtr->spritesGfx[position]); - LoadCompressedSpritePalette(&gTrainerSprites[frontPicId].palette); + LoadSpritePalette(&gTrainerSprites[frontPicId].palette); } void DecompressTrainerBackPic(u16 backPicId, u8 battler) @@ -704,7 +699,7 @@ void DecompressTrainerBackPic(u16 backPicId, u8 battler) u8 position = GetBattlerPosition(battler); DecompressPicFromTable(&gTrainerBacksprites[backPicId].backPic, gMonSpritesGfxPtr->spritesGfx[position]); - LoadCompressedPalette(gTrainerBacksprites[backPicId].palette.data, + LoadPalette(gTrainerBacksprites[backPicId].palette.data, OBJ_PLTT_ID(battler), PLTT_SIZE_4BPP); } @@ -782,10 +777,15 @@ bool8 BattleLoadAllHealthBoxesGfx(u8 state) { if (state == 2) { - if (WhichBattleCoords(0)) + switch (GetBattlerCoordsIndex(B_POSITION_PLAYER_LEFT)) + { + default: LoadCompressedSpriteSheet(&sSpriteSheets_DoublesPlayerHealthbox[0]); - else + break; + case BATTLE_COORDS_SINGLES: LoadCompressedSpriteSheet(&sSpriteSheet_SinglesPlayerHealthbox); + break; + } } else if (state == 3) LoadCompressedSpriteSheet(&sSpriteSheets_DoublesPlayerHealthbox[1]); @@ -866,14 +866,14 @@ bool8 BattleInitAllSprites(u8 *state1, u8 *battler) } break; case 5: - if (GetBattlerSide(*battler) == B_SIDE_PLAYER) + if (IsOnPlayerSide(*battler)) { if (!(gBattleTypeFlags & BATTLE_TYPE_SAFARI)) - UpdateHealthboxAttribute(gHealthboxSpriteIds[*battler], &gPlayerParty[gBattlerPartyIndexes[*battler]], HEALTHBOX_ALL); + UpdateHealthboxAttribute(gHealthboxSpriteIds[*battler], GetBattlerMon(*battler), HEALTHBOX_ALL); } else { - UpdateHealthboxAttribute(gHealthboxSpriteIds[*battler], &gEnemyParty[gBattlerPartyIndexes[*battler]], HEALTHBOX_ALL); + UpdateHealthboxAttribute(gHealthboxSpriteIds[*battler], GetBattlerMon(*battler), HEALTHBOX_ALL); } SetHealthboxSpriteInvisible(gHealthboxSpriteIds[*battler]); (*battler)++; @@ -922,9 +922,10 @@ void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, bool32 megaEvo, bo { u32 personalityValue, position, paletteOffset, targetSpecies; bool32 isShiny; - const void *lzPaletteData, *src; - struct Pokemon *monAtk = GetPartyBattlerData(battlerAtk); - struct Pokemon *monDef = GetPartyBattlerData(battlerDef); + const void *src; + const u16 *paletteData; + struct Pokemon *monAtk = GetBattlerMon(battlerAtk); + struct Pokemon *monDef = GetBattlerMon(battlerDef); void *dst; if (IsContest()) @@ -947,6 +948,8 @@ void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, bool32 megaEvo, bo // Get base form if its currently Gigantamax if (IsGigantamaxed(battlerDef)) targetSpecies = gBattleStruct->changedSpecies[GetBattlerSide(battlerDef)][gBattlerPartyIndexes[battlerDef]]; + else if (gBattleStruct->illusion[battlerDef].state == ILLUSION_ON) + targetSpecies = GetIllusionMonSpecies(battlerDef); else targetSpecies = GetMonData(monDef, MON_DATA_SPECIES); personalityValue = GetMonData(monAtk, MON_DATA_PERSONALITY); @@ -967,7 +970,7 @@ void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, bool32 megaEvo, bo } } - HandleLoadSpecialPokePic((GetBattlerSide(battlerAtk) != B_SIDE_PLAYER), + HandleLoadSpecialPokePic(!IsOnPlayerSide(battlerAtk), gMonSpritesGfxPtr->spritesGfx[position], targetSpecies, personalityValue); @@ -976,10 +979,8 @@ void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, bool32 megaEvo, bo dst = (void *)(OBJ_VRAM0 + gSprites[gBattlerSpriteIds[battlerAtk]].oam.tileNum * 32); DmaCopy32(3, src, dst, MON_PIC_SIZE); paletteOffset = OBJ_PLTT_ID(battlerAtk); - lzPaletteData = GetMonSpritePalFromSpeciesAndPersonality(targetSpecies, isShiny, personalityValue); - void *buffer = malloc_and_decompress(lzPaletteData, NULL); - LoadPalette(buffer, paletteOffset, PLTT_SIZE_4BPP); - Free(buffer); + paletteData = GetMonSpritePalFromSpeciesAndPersonality(targetSpecies, isShiny, personalityValue); + LoadPalette(paletteData, paletteOffset, PLTT_SIZE_4BPP); if (!megaEvo) { @@ -1026,7 +1027,7 @@ void BattleLoadSubstituteOrMonSpriteGfx(u8 battler, bool8 loadMonSprite) if (IsContest()) LZDecompressVram(gBattleAnimSpriteGfx_SubstituteBack, gMonSpritesGfxPtr->spritesGfx[position]); - else if (GetBattlerSide(battler) != B_SIDE_PLAYER) + else if (!IsOnPlayerSide(battler)) LZDecompressVram(gBattleAnimSpriteGfx_Substitute, gMonSpritesGfxPtr->spritesGfx[position]); else LZDecompressVram(gBattleAnimSpriteGfx_SubstituteBack, gMonSpritesGfxPtr->spritesGfx[position]); @@ -1037,12 +1038,12 @@ void BattleLoadSubstituteOrMonSpriteGfx(u8 battler, bool8 loadMonSprite) } palOffset = OBJ_PLTT_ID(battler); - LoadCompressedPalette(gBattleAnimSpritePal_Substitute, palOffset, PLTT_SIZE_4BPP); + LoadPalette(gBattleAnimSpritePal_Substitute, palOffset, PLTT_SIZE_4BPP); } else { if (!IsContest()) - BattleLoadMonSpriteGfx(&GetBattlerParty(battler)[gBattlerPartyIndexes[battler]], battler); + BattleLoadMonSpriteGfx(GetBattlerMon(battler), battler); } } @@ -1059,7 +1060,7 @@ void LoadBattleMonGfxAndAnimate(u8 battler, bool8 loadMonSprite, u8 spriteId) void TrySetBehindSubstituteSpriteBit(u8 battler, u16 move) { - u32 effect = GetMoveEffect(move); + enum BattleMoveEffects effect = GetMoveEffect(move); if (effect == EFFECT_SUBSTITUTE || effect == EFFECT_SHED_TAIL) gBattleSpritesDataPtr->battlerData[battler].behindSubstitute = 1; } @@ -1312,7 +1313,7 @@ void SetBattlerShadowSpriteCallback(u8 battler, u16 species) { if (B_ENEMY_MON_SHADOW_STYLE >= GEN_4 && P_GBA_STYLE_SPECIES_GFX == FALSE) { - if (GetBattlerSide(battler) == B_SIDE_PLAYER || gBattleScripting.monCaught) + if (IsOnPlayerSide(battler) || gBattleScripting.monCaught) { gSprites[gBattleSpritesDataPtr->healthBoxesData[battler].shadowSpriteIdPrimary].callback = SpriteCB_SetInvisible; gSprites[gBattleSpritesDataPtr->healthBoxesData[battler].shadowSpriteIdSecondary].callback = SpriteCB_SetInvisible; @@ -1339,7 +1340,7 @@ void SetBattlerShadowSpriteCallback(u8 battler, u16 species) } else { - if (GetBattlerSide(battler) == B_SIDE_PLAYER || gBattleScripting.monCaught) + if (IsOnPlayerSide(battler) || gBattleScripting.monCaught) { gSprites[gBattleSpritesDataPtr->healthBoxesData[battler].shadowSpriteIdPrimary].callback = SpriteCB_SetInvisible; return; diff --git a/src/battle_gimmick.c b/src/battle_gimmick.c index 4cdc754ea4..76ea80a4f6 100644 --- a/src/battle_gimmick.c +++ b/src/battle_gimmick.c @@ -71,7 +71,7 @@ bool32 ShouldTrainerBattlerUseGimmick(u32 battler, enum Gimmick gimmick) 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 + else if (IsOnPlayerSide(battler) && !((gBattleTypeFlags & BATTLE_TYPE_MULTI) && battler == B_POSITION_PLAYER_RIGHT)) { return TRUE; @@ -138,7 +138,7 @@ 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 + if (!IsOnPlayerSide(battler) || gBattleStruct->gimmick.usableGimmick[battler] == GIMMICK_NONE || gimmick->triggerSheet == NULL || HasTrainerUsedGimmick(battler, gBattleStruct->gimmick.usableGimmick[battler])) diff --git a/src/battle_interface.c b/src/battle_interface.c index 6b61683dbc..80c85bb141 100644 --- a/src/battle_interface.c +++ b/src/battle_interface.c @@ -634,18 +634,16 @@ static const struct WindowTemplate sHealthboxWindowTemplate = { // This function is here to cover a specific case - one player's mon in a 2 vs 1 double battle. In this scenario - display singles layout. // The same goes for a 2 vs 1 where opponent has only one pokemon. -u32 WhichBattleCoords(u32 battler) // 0 - singles, 1 - doubles +enum BattleCoordTypes GetBattlerCoordsIndex(u32 battler) { - if (GetBattlerPosition(battler) == B_POSITION_PLAYER_LEFT - && gPlayerPartyCount == 1 - && !(gBattleTypeFlags & BATTLE_TYPE_MULTI)) - return 0; - else if (GetBattlerPosition(battler) == B_POSITION_OPPONENT_LEFT - && gEnemyPartyCount == 1 - && !(gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS)) - return 0; + if (GetBattlerPosition(battler) == B_POSITION_PLAYER_LEFT && gPlayerPartyCount == 1 && !(gBattleTypeFlags & BATTLE_TYPE_MULTI)) + return BATTLE_COORDS_SINGLES; + else if (GetBattlerPosition(battler) == B_POSITION_OPPONENT_LEFT && gEnemyPartyCount == 1 && !(gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS)) + return BATTLE_COORDS_SINGLES; + else if (IsDoubleBattle()) + return BATTLE_COORDS_DOUBLES; else - return IsDoubleBattle(); + return BATTLE_COORDS_SINGLES; } u8 CreateBattlerHealthboxSprites(u8 battler) @@ -655,9 +653,12 @@ u8 CreateBattlerHealthboxSprites(u8 battler) u8 healthbarSpriteId; struct Sprite *healthBarSpritePtr; - if (WhichBattleCoords(battler) == 0) // Singles + switch (GetBattlerCoordsIndex(battler)) { - if (GetBattlerSide(battler) == B_SIDE_PLAYER) + default: + case BATTLE_COORDS_SINGLES: + { + if (IsOnPlayerSide(battler)) { healthboxLeftSpriteId = CreateSprite(&sHealthboxPlayerSpriteTemplates[0], DISPLAY_WIDTH, DISPLAY_HEIGHT, 1); healthboxRightSpriteId = CreateSpriteAtEnd(&sHealthboxPlayerSpriteTemplates[0], DISPLAY_WIDTH, DISPLAY_HEIGHT, 1); @@ -680,35 +681,29 @@ u8 CreateBattlerHealthboxSprites(u8 battler) gSprites[healthboxRightSpriteId].hOther_HealthBoxSpriteId = healthboxLeftSpriteId; gSprites[healthboxRightSpriteId].callback = SpriteCB_HealthBoxOther; + break; } - else + case BATTLE_COORDS_DOUBLES: { - if (GetBattlerSide(battler) == B_SIDE_PLAYER) + if (IsOnPlayerSide(battler)) { healthboxLeftSpriteId = CreateSprite(&sHealthboxPlayerSpriteTemplates[GetBattlerPosition(battler) / 2], DISPLAY_WIDTH, DISPLAY_HEIGHT, 1); healthboxRightSpriteId = CreateSpriteAtEnd(&sHealthboxPlayerSpriteTemplates[GetBattlerPosition(battler) / 2], DISPLAY_WIDTH, DISPLAY_HEIGHT, 1); - - gSprites[healthboxLeftSpriteId].oam.affineParam = healthboxRightSpriteId; - - gSprites[healthboxRightSpriteId].hOther_HealthBoxSpriteId = healthboxLeftSpriteId; - gSprites[healthboxRightSpriteId].oam.tileNum += 32; - gSprites[healthboxRightSpriteId].callback = SpriteCB_HealthBoxOther; - data6 = 1; } else { healthboxLeftSpriteId = CreateSprite(&sHealthboxOpponentSpriteTemplates[GetBattlerPosition(battler) / 2], DISPLAY_WIDTH, DISPLAY_HEIGHT, 1); healthboxRightSpriteId = CreateSpriteAtEnd(&sHealthboxOpponentSpriteTemplates[GetBattlerPosition(battler) / 2], DISPLAY_WIDTH, DISPLAY_HEIGHT, 1); - - gSprites[healthboxLeftSpriteId].oam.affineParam = healthboxRightSpriteId; - - gSprites[healthboxRightSpriteId].hOther_HealthBoxSpriteId = healthboxLeftSpriteId; - gSprites[healthboxRightSpriteId].oam.tileNum += 32; - gSprites[healthboxRightSpriteId].callback = SpriteCB_HealthBoxOther; - data6 = 2; } + gSprites[healthboxLeftSpriteId].oam.affineParam = healthboxRightSpriteId; + + gSprites[healthboxRightSpriteId].hOther_HealthBoxSpriteId = healthboxLeftSpriteId; + gSprites[healthboxRightSpriteId].oam.tileNum += 32; + gSprites[healthboxRightSpriteId].callback = SpriteCB_HealthBoxOther; + break; + } } healthbarSpriteId = CreateSpriteAtEnd(&sHealthbarSpriteTemplates[gBattlerPositions[battler]], 140, 60, 0); @@ -873,35 +868,29 @@ void UpdateOamPriorityInAllHealthboxes(u8 priority, bool32 hideHPBoxes) } } +static const s16 sBattlerHealthboxCoords[BATTLE_COORDS_COUNT][MAX_BATTLERS_COUNT][2] = +{ + [BATTLE_COORDS_SINGLES] = + { + [B_POSITION_PLAYER_LEFT] = { 158, 88 }, + [B_POSITION_OPPONENT_LEFT] = { 44, 30 }, + }, + [BATTLE_COORDS_DOUBLES] = + { + [B_POSITION_PLAYER_LEFT] = { 159, 76 }, + [B_POSITION_PLAYER_RIGHT] = { 171, 101 }, + [B_POSITION_OPPONENT_LEFT] = { 44, 19 }, + [B_POSITION_OPPONENT_RIGHT] = { 32, 44 }, + }, +}; + void GetBattlerHealthboxCoords(u8 battler, s16 *x, s16 *y) { - *x = 0, *y = 0; + u8 position = GetBattlerPosition(battler); + enum BattleCoordTypes index = GetBattlerCoordsIndex(battler); - if (!WhichBattleCoords(battler)) - { - if (GetBattlerSide(battler) != B_SIDE_PLAYER) - *x = 44, *y = 30; - else - *x = 158, *y = 88; - } - else - { - switch (GetBattlerPosition(battler)) - { - case B_POSITION_PLAYER_LEFT: - *x = 159, *y = 76; - break; - case B_POSITION_PLAYER_RIGHT: - *x = 171, *y = 101; - break; - case B_POSITION_OPPONENT_LEFT: - *x = 44, *y = 19; - break; - case B_POSITION_OPPONENT_RIGHT: - *x = 32, *y = 44; - break; - } - } + *x = sBattlerHealthboxCoords[index][position][0]; + *y = sBattlerHealthboxCoords[index][position][1]; } void InitBattlerHealthboxCoords(u8 battler) @@ -942,13 +931,18 @@ static void UpdateLvlInHealthbox(u8 healthboxSpriteId, u8 lvl) windowTileData = AddTextPrinterAndCreateWindowOnHealthbox(text, xPos, 3, 2, &windowId); spriteTileNum = gSprites[healthboxSpriteId].oam.tileNum * TILE_SIZE_4BPP; - if (GetBattlerSide(battler) == B_SIDE_PLAYER) + if (IsOnPlayerSide(battler)) { objVram = (void *)(OBJ_VRAM0); - if (!WhichBattleCoords(battler)) + switch (GetBattlerCoordsIndex(battler)) + { + case BATTLE_COORDS_SINGLES: objVram += spriteTileNum + 0x820; - else + break; + default: objVram += spriteTileNum + 0x420; + break; + } } else { @@ -992,9 +986,9 @@ static void UpdateOpponentHpTextDoubles(u32 healthboxSpriteId, u32 barSpriteId, { u8 text[32], *txtPtr; u32 i, var; - u32 battlerId = gSprites[healthboxSpriteId].hMain_Battler; + u32 battler = gSprites[healthboxSpriteId].hMain_Battler; - if (gBattleSpritesDataPtr->battlerData[battlerId].hpNumbersNoBars) // don't print text if only bars are visible + if (gBattleSpritesDataPtr->battlerData[battler].hpNumbersNoBars) // don't print text if only bars are visible { memcpy(text, sEmptyWhiteText_TransparentHighlight, sizeof(sEmptyWhiteText_TransparentHighlight)); if (maxOrCurrent == HP_CURRENT) @@ -1063,13 +1057,16 @@ static void UpdateOpponentHpTextSingles(u32 healthboxSpriteId, s16 value, u32 ma void UpdateHpTextInHealthbox(u32 healthboxSpriteId, u32 maxOrCurrent, s16 currHp, s16 maxHp) { u32 battler = gSprites[healthboxSpriteId].hMain_Battler; - if (WhichBattleCoords(battler)) + switch (GetBattlerCoordsIndex(battler)) + { + default: { UpdateHpTextInHealthboxInDoubles(healthboxSpriteId, maxOrCurrent, currHp, maxHp); + break; } - else // Single Battle + case BATTLE_COORDS_SINGLES: { - if (GetBattlerSide(battler) == B_SIDE_PLAYER) // Player + if (IsOnPlayerSide(battler)) // Player { PrintHpOnHealthbox(healthboxSpriteId, currHp, maxHp, 2, 0xB00, 0x3A0); } @@ -1078,6 +1075,8 @@ void UpdateHpTextInHealthbox(u32 healthboxSpriteId, u32 maxOrCurrent, s16 currHp UpdateOpponentHpTextSingles(healthboxSpriteId, currHp, HP_CURRENT); UpdateOpponentHpTextSingles(healthboxSpriteId, maxHp, HP_MAX); } + break; + } } } @@ -1085,7 +1084,7 @@ static void UpdateHpTextInHealthboxInDoubles(u32 healthboxSpriteId, u32 maxOrCur { u32 barSpriteId = gSprites[healthboxSpriteId].data[5]; - if (GetBattlerSide(gSprites[healthboxSpriteId].hMain_Battler) == B_SIDE_PLAYER) + if (IsOnPlayerSide(gSprites[healthboxSpriteId].hMain_Battler)) { if (gBattleSpritesDataPtr->battlerData[gSprites[healthboxSpriteId].data[6]].hpNumbersNoBars) // don't print text if only bars are visible { @@ -1177,18 +1176,18 @@ void SwapHpBarsWithHpText(void) for (i = 0; i < gBattlersCount; i++) { if (gSprites[gHealthboxSpriteIds[i]].callback == SpriteCallbackDummy - && GetBattlerSide(i) != B_SIDE_OPPONENT - && (WhichBattleCoords(i) || GetBattlerSide(i) != B_SIDE_PLAYER)) + && IsOnPlayerSide(i) + && (GetBattlerCoordsIndex(i) != BATTLE_COORDS_SINGLES || !IsOnPlayerSide(i))) { - s32 currHp = GetMonData(&gPlayerParty[gBattlerPartyIndexes[i]], MON_DATA_HP); - s32 maxHp = GetMonData(&gPlayerParty[gBattlerPartyIndexes[i]], MON_DATA_MAX_HP); + s32 currHp = GetMonData(GetBattlerMon(i), MON_DATA_HP); + s32 maxHp = GetMonData(GetBattlerMon(i), MON_DATA_MAX_HP); bool8 noBars; gBattleSpritesDataPtr->battlerData[i].hpNumbersNoBars ^= 1; noBars = gBattleSpritesDataPtr->battlerData[i].hpNumbersNoBars; - if (GetBattlerSide(i) == B_SIDE_PLAYER) + if (IsOnPlayerSide(i)) { - if (!WhichBattleCoords(i)) + if (GetBattlerCoordsIndex(i) == BATTLE_COORDS_SINGLES) continue; if (gBattleTypeFlags & BATTLE_TYPE_SAFARI) continue; @@ -1203,7 +1202,7 @@ void SwapHpBarsWithHpText(void) else // text to bars { UpdateStatusIconInHealthbox(gHealthboxSpriteIds[i]); - UpdateHealthboxAttribute(gHealthboxSpriteIds[i], &gPlayerParty[gBattlerPartyIndexes[i]], HEALTHBOX_HEALTH_BAR); + UpdateHealthboxAttribute(gHealthboxSpriteIds[i], GetBattlerMon(i), HEALTHBOX_HEALTH_BAR); CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_FRAME_END_BAR), (void *)(OBJ_VRAM0 + 0x680 + gSprites[gHealthboxSpriteIds[i]].oam.tileNum * TILE_SIZE_4BPP), 32); } } @@ -1214,7 +1213,7 @@ void SwapHpBarsWithHpText(void) if (gBattleTypeFlags & BATTLE_TYPE_SAFARI) { // Most likely a debug function. - PrintSafariMonInfo(gHealthboxSpriteIds[i], &gEnemyParty[gBattlerPartyIndexes[i]]); + PrintSafariMonInfo(gHealthboxSpriteIds[i], GetBattlerMon(i)); } else { @@ -1227,9 +1226,9 @@ void SwapHpBarsWithHpText(void) else // text to bars { UpdateStatusIconInHealthbox(gHealthboxSpriteIds[i]); - UpdateHealthboxAttribute(gHealthboxSpriteIds[i], &gEnemyParty[gBattlerPartyIndexes[i]], HEALTHBOX_HEALTH_BAR); + UpdateHealthboxAttribute(gHealthboxSpriteIds[i], GetBattlerMon(i), HEALTHBOX_HEALTH_BAR); if (gBattleTypeFlags & BATTLE_TYPE_SAFARI) - UpdateHealthboxAttribute(gHealthboxSpriteIds[i], &gEnemyParty[gBattlerPartyIndexes[i]], HEALTHBOX_NICK); + UpdateHealthboxAttribute(gHealthboxSpriteIds[i], GetBattlerMon(i), HEALTHBOX_NICK); } } gSprites[gHealthboxSpriteIds[i]].hMain_Data7 ^= 1; @@ -1259,7 +1258,7 @@ u8 CreatePartyStatusSummarySprites(u8 battler, struct HpAndStatus *partyInfo, bo if (!skipPlayer || GetBattlerPosition(battler) != B_POSITION_OPPONENT_RIGHT) { - if (GetBattlerSide(battler) == B_SIDE_PLAYER) + if (IsOnPlayerSide(battler)) { isOpponent = FALSE; bar_X = 136, bar_Y = 96; @@ -1270,7 +1269,7 @@ u8 CreatePartyStatusSummarySprites(u8 battler, struct HpAndStatus *partyInfo, bo { isOpponent = TRUE; - if (!skipPlayer || !WhichBattleCoords(battler)) + if (!skipPlayer || GetBattlerCoordsIndex(battler) == BATTLE_COORDS_SINGLES) bar_X = 104, bar_Y = 40; else bar_X = 104, bar_Y = 16; @@ -1338,7 +1337,7 @@ u8 CreatePartyStatusSummarySprites(u8 battler, struct HpAndStatus *partyInfo, bo gSprites[ballIconSpritesIds[i]].data[2] = isOpponent; } - if (GetBattlerSide(battler) == B_SIDE_PLAYER) + if (IsOnPlayerSide(battler)) { if (gBattleTypeFlags & BATTLE_TYPE_MULTI) { @@ -1498,7 +1497,7 @@ void Task_HidePartyStatusSummary(u8 taskId) { for (i = 0; i < PARTY_SIZE; i++) { - if (GetBattlerSide(battler) != B_SIDE_PLAYER) + if (!IsOnPlayerSide(battler)) { gSprites[ballIconSpriteIds[PARTY_SIZE - 1 - i]].data[1] = 7 * i; gSprites[ballIconSpriteIds[PARTY_SIZE - 1 - i]].data[3] = 0; @@ -1749,14 +1748,19 @@ static void UpdateNickInHealthbox(u8 healthboxSpriteId, struct Pokemon *mon) spriteTileNum = gSprites[healthboxSpriteId].oam.tileNum * TILE_SIZE_4BPP; - if (GetBattlerSide(gSprites[healthboxSpriteId].data[6]) == B_SIDE_PLAYER) + if (IsOnPlayerSide(gSprites[healthboxSpriteId].data[6])) { TextIntoHealthboxObject((void *)(OBJ_VRAM0 + 0x40 + spriteTileNum), windowTileData, 6); ptr = (void *)(OBJ_VRAM0); - if (!WhichBattleCoords(gSprites[healthboxSpriteId].data[6])) + switch (GetBattlerCoordsIndex(gSprites[healthboxSpriteId].data[6])) + { + case BATTLE_COORDS_SINGLES: ptr += spriteTileNum + 0x800; - else + break; + default: ptr += spriteTileNum + 0x400; + break; + } TextIntoHealthboxObject(ptr, windowTileData + 0xC0, 1); } else @@ -1777,9 +1781,9 @@ static void TryAddPokeballIconToHealthbox(u8 healthboxSpriteId, bool8 noStatus) return; battler = gSprites[healthboxSpriteId].hMain_Battler; - if (GetBattlerSide(battler) == B_SIDE_PLAYER) + if (IsOnPlayerSide(battler)) return; - if (!GetSetPokedexFlag(SpeciesToNationalPokedexNum(GetMonData(&gEnemyParty[gBattlerPartyIndexes[battler]], MON_DATA_SPECIES)), FLAG_GET_CAUGHT)) + if (!GetSetPokedexFlag(SpeciesToNationalPokedexNum(GetMonData(GetBattlerMon(battler), MON_DATA_SPECIES)), FLAG_GET_CAUGHT)) return; healthBarSpriteId = gSprites[healthboxSpriteId].hMain_HealthBarSpriteId; @@ -1801,17 +1805,22 @@ static void UpdateStatusIconInHealthbox(u8 healthboxSpriteId) battler = gSprites[healthboxSpriteId].hMain_Battler; healthBarSpriteId = gSprites[healthboxSpriteId].hMain_HealthBarSpriteId; - if (GetBattlerSide(battler) == B_SIDE_PLAYER) + if (IsOnPlayerSide(battler)) { - status = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battler]], MON_DATA_STATUS); - if (!WhichBattleCoords(battler)) + status = GetMonData(GetBattlerMon(battler), MON_DATA_STATUS); + switch (GetBattlerCoordsIndex(battler)) + { + case BATTLE_COORDS_SINGLES: tileNumAdder = 0x1A; - else + break; + default: tileNumAdder = 0x12; + break; + } } else { - status = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battler]], MON_DATA_STATUS); + status = GetMonData(GetBattlerMon(battler), MON_DATA_STATUS); tileNumAdder = 0x11; } @@ -1865,7 +1874,7 @@ static void UpdateStatusIconInHealthbox(u8 healthboxSpriteId) FillPalette(sStatusIconColors[statusPalId], OBJ_PLTT_OFFSET + pltAdder, PLTT_SIZEOF(1)); CpuCopy16(&gPlttBufferUnfaded[OBJ_PLTT_OFFSET + pltAdder], (u16 *)OBJ_PLTT + pltAdder, PLTT_SIZEOF(1)); CpuCopy32(statusGfxPtr, (void *)(OBJ_VRAM0 + (gSprites[healthboxSpriteId].oam.tileNum + tileNumAdder) * TILE_SIZE_4BPP), 96); - if (WhichBattleCoords(battler) == 1 || GetBattlerSide(battler) == B_SIDE_OPPONENT) + if (GetBattlerCoordsIndex(battler) == BATTLE_COORDS_DOUBLES || !IsOnPlayerSide(battler)) { if (!gBattleSpritesDataPtr->battlerData[battler].hpNumbersNoBars) { @@ -1981,9 +1990,9 @@ void UpdateHealthboxAttribute(u8 healthboxSpriteId, struct Pokemon *mon, u8 elem s32 maxHp = GetMonData(mon, MON_DATA_MAX_HP); s32 currHp = GetMonData(mon, MON_DATA_HP); - if (GetBattlerSide(battler) == B_SIDE_PLAYER) + if (IsOnPlayerSide(battler)) { - u8 isDoubles = WhichBattleCoords(battler); + u8 isDoubles = GetBattlerCoordsIndex(battler) == BATTLE_COORDS_DOUBLES; if (elementId == HEALTHBOX_LEVEL || elementId == HEALTHBOX_ALL) UpdateLvlInHealthbox(healthboxSpriteId, GetMonData(mon, MON_DATA_LEVEL)); @@ -2135,7 +2144,7 @@ static void MoveBattleBarGraphically(u8 battler, u8 whichBar) gBattleSpritesDataPtr->battleBars[battler].receivedValue, &gBattleSpritesDataPtr->battleBars[battler].currValue, array, B_EXPBAR_PIXELS / 8); - level = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battler]], MON_DATA_LEVEL); + level = GetMonData(GetBattlerMon(battler), MON_DATA_LEVEL); if (level >= MAX_LEVEL) { for (i = 0; i < 8; i++) @@ -2531,26 +2540,29 @@ static void ClearAbilityName(u8 spriteId1, u8 spriteId2) 7, 9, 1); } -static void PrintBattlerOnAbilityPopUp(u8 battlerId, u8 spriteId1, u8 spriteId2) +static void PrintBattlerOnAbilityPopUp(u8 battler, u8 spriteId1, u8 spriteId2) { int i; u8 lastChar; u8* textPtr; u8 monName[POKEMON_NAME_LENGTH + 3] = {0}; - u8* nick = gBattleMons[battlerId].nickname; // This needs to be updated for Illusion support + struct Pokemon *illusionMon = GetIllusionMonPtr(battler); + u8 nick[POKEMON_NAME_LENGTH + 1] = {0}; + + if (illusionMon != NULL) + GetMonData(illusionMon, MON_DATA_NICKNAME, nick); + else + GetMonData(GetBattlerMon(battler), MON_DATA_NICKNAME, nick); for (i = 0; i < POKEMON_NAME_LENGTH; ++i) { - monName[i] = nick[i]; - - if (nick[i] == EOS || i + 1 == POKEMON_NAME_LENGTH) // End of string + if (nick[i] == EOS) // End of string break; + + monName[i] = nick[i]; } - textPtr = monName + i + 1; - - if (*(textPtr - 1) == EOS) - textPtr--; + textPtr = monName + i; lastChar = *(textPtr - 1); @@ -2708,7 +2720,7 @@ static inline bool32 IsAnyAbilityPopUpActive(void) return FALSE; } -void CreateAbilityPopUp(u8 battlerId, u32 ability, bool32 isDoubleBattle) +void CreateAbilityPopUp(u8 battler, u32 ability, bool32 isDoubleBattle) { const s16 (*coords)[2]; u8 spriteId1, spriteId2, battlerPosition, taskId; @@ -2721,7 +2733,7 @@ void CreateAbilityPopUp(u8 battlerId, u32 ability, bool32 isDoubleBattle) if (gTestRunnerEnabled) { - TestRunner_Battle_RecordAbilityPopUp(battlerId, ability); + TestRunner_Battle_RecordAbilityPopUp(battler, ability); if (gTestRunnerHeadless) return; } @@ -2732,8 +2744,8 @@ void CreateAbilityPopUp(u8 battlerId, u32 ability, bool32 isDoubleBattle) LoadSpritePalette(&sSpritePalette_AbilityPopUp); } - gBattleStruct->battlerState[battlerId].activeAbilityPopUps = TRUE; - battlerPosition = GetBattlerPosition(battlerId); + gBattleStruct->battlerState[battler].activeAbilityPopUps = TRUE; + battlerPosition = GetBattlerPosition(battler); if (isDoubleBattle) coords = sAbilityPopUpCoordsDoubles; @@ -2769,30 +2781,30 @@ void CreateAbilityPopUp(u8 battlerId, u32 ability, bool32 isDoubleBattle) gSprites[spriteId2].tOriginalX = coords[battlerPosition][0] + ABILITY_POP_UP_POS_X_DIFF; gSprites[spriteId2].oam.tileNum += (8 * 4); //Second half of pop up - gBattleStruct->abilityPopUpSpriteIds[battlerId][0] = spriteId1; - gBattleStruct->abilityPopUpSpriteIds[battlerId][1] = spriteId2; + gBattleStruct->abilityPopUpSpriteIds[battler][0] = spriteId1; + gBattleStruct->abilityPopUpSpriteIds[battler][1] = spriteId2; taskId = CreateTask(Task_FreeAbilityPopUpGfx, 5); gTasks[taskId].tSpriteId1 = spriteId1; gTasks[taskId].tSpriteId2 = spriteId2; gSprites[spriteId1].tIsMain = TRUE; - gSprites[spriteId1].tBattlerId = battlerId; - gSprites[spriteId2].tBattlerId = battlerId; + gSprites[spriteId1].tBattlerId = battler; + gSprites[spriteId2].tBattlerId = battler; StartSpriteAnim(&gSprites[spriteId1], 0); StartSpriteAnim(&gSprites[spriteId2], 0); - PrintBattlerOnAbilityPopUp(battlerId, spriteId1, spriteId2); + PrintBattlerOnAbilityPopUp(battler, spriteId1, spriteId2); PrintAbilityOnAbilityPopUp(ability, spriteId1, spriteId2); RestoreOverwrittenPixels((void*)(OBJ_VRAM0) + (gSprites[spriteId1].oam.tileNum * 32)); } -void UpdateAbilityPopup(u8 battlerId) +void UpdateAbilityPopup(u8 battler) { - u8 spriteId1 = gBattleStruct->abilityPopUpSpriteIds[battlerId][0]; - u8 spriteId2 = gBattleStruct->abilityPopUpSpriteIds[battlerId][1]; - u16 ability = (gBattleScripting.abilityPopupOverwrite != 0) ? gBattleScripting.abilityPopupOverwrite : gBattleMons[battlerId].ability; + u8 spriteId1 = gBattleStruct->abilityPopUpSpriteIds[battler][0]; + u8 spriteId2 = gBattleStruct->abilityPopUpSpriteIds[battler][1]; + u16 ability = (gBattleScripting.abilityPopupOverwrite != 0) ? gBattleScripting.abilityPopupOverwrite : gBattleMons[battler].ability; PrintAbilityOnAbilityPopUp(ability, spriteId1, spriteId2); RestoreOverwrittenPixels((void*)(OBJ_VRAM0) + (gSprites[spriteId1].oam.tileNum * 32)); @@ -2835,12 +2847,12 @@ static void SpriteCb_AbilityPopUp(struct Sprite *sprite) } } -void DestroyAbilityPopUp(u8 battlerId) +void DestroyAbilityPopUp(u8 battler) { - if (gBattleStruct->battlerState[battlerId].activeAbilityPopUps) + if (gBattleStruct->battlerState[battler].activeAbilityPopUps) { - gSprites[gBattleStruct->abilityPopUpSpriteIds[battlerId][0]].tFrames = 0; - gSprites[gBattleStruct->abilityPopUpSpriteIds[battlerId][1]].tFrames = 0; + gSprites[gBattleStruct->abilityPopUpSpriteIds[battler][0]].tFrames = 0; + gSprites[gBattleStruct->abilityPopUpSpriteIds[battler][1]].tFrames = 0; } gBattleScripting.fixedPopup = FALSE; } diff --git a/src/battle_main.c b/src/battle_main.c index 75df189739..5bdf3fb8ec 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -5,6 +5,7 @@ #include "battle_ai_util.h" #include "battle_arena.h" #include "battle_controllers.h" +#include "battle_end_turn.h" #include "battle_interface.h" #include "battle_main.h" #include "battle_message.h" @@ -25,6 +26,7 @@ #include "event_data.h" #include "evolution_scene.h" #include "field_weather.h" +#include "follower_npc.h" #include "graphics.h" #include "gpu_regs.h" #include "international_string_util.h" @@ -207,6 +209,14 @@ EWRAM_DATA u8 gSentPokesToOpponent[2] = {0}; EWRAM_DATA struct BattleEnigmaBerry gEnigmaBerries[MAX_BATTLERS_COUNT] = {0}; EWRAM_DATA struct BattleScripting gBattleScripting = {0}; EWRAM_DATA struct BattleStruct *gBattleStruct = NULL; + +EWRAM_DATA struct AiThinkingStruct *gAiThinkingStruct = NULL; +EWRAM_DATA struct AiLogicData *gAiLogicData = NULL; +EWRAM_DATA struct AiPartyData *gAiPartyData = NULL; +EWRAM_DATA struct BattleHistory *gBattleHistory = NULL; + +EWRAM_DATA struct AiBattleData *gAiBattleData = NULL; + EWRAM_DATA u8 *gLinkBattleSendBuffer = NULL; EWRAM_DATA u8 *gLinkBattleRecvBuffer = NULL; EWRAM_DATA struct BattleResources *gBattleResources = NULL; @@ -424,7 +434,15 @@ void CB2_InitBattle(void) AllocateMonSpritesGfx(); RecordedBattle_ClearFrontierPassFlag(); - if (gBattleTypeFlags & BATTLE_TYPE_MULTI) +#if T_SHOULD_RUN_MOVE_ANIM + gLoadFail = FALSE; +#endif // T_SHOULD_RUN_MOVE_ANIM + +#if T_SHOULD_RUN_MOVE_ANIM + gLoadFail = FALSE; +#endif // T_SHOULD_RUN_MOVE_ANIM + + if (gBattleTypeFlags & BATTLE_TYPE_MULTI && gBattleTypeFlags & BATTLE_TYPE_TRAINER) { if (gBattleTypeFlags & BATTLE_TYPE_RECORDED) { @@ -515,7 +533,14 @@ static void CB2_InitBattleInternal(void) | BATTLE_TYPE_TRAINER_HILL | BATTLE_TYPE_RECORDED))) { - gBattleTypeFlags |= (IsTrainerDoubleBattle(TRAINER_BATTLE_PARAM.opponentA) ? BATTLE_TYPE_DOUBLE : 0); + switch (GetTrainerBattleType(TRAINER_BATTLE_PARAM.opponentA)) + { + case TRAINER_BATTLE_TYPE_SINGLES: + break; + case TRAINER_BATTLE_TYPE_DOUBLES: + gBattleTypeFlags |= BATTLE_TYPE_DOUBLE; + break; + } } InitBattleBgsVideo(); @@ -1405,7 +1430,9 @@ static void CB2_PreInitIngamePlayerPartnerBattle(void) *savedCallback = gMain.savedCallback; *savedBattleTypeFlags = gBattleTypeFlags; gMain.savedCallback = CB2_PreInitIngamePlayerPartnerBattle; - ShowPartyMenuToShowcaseMultiBattleParty(); + if (!PlayerHasFollowerNPC() || !FollowerNPCIsBattlePartner() || (FNPC_NPC_FOLLOWER_PARTY_PREVIEW && FollowerNPCIsBattlePartner())) + ShowPartyMenuToShowcaseMultiBattleParty(); + break; case 1: if (!gPaletteFade.active) @@ -1888,9 +1915,9 @@ u8 CreateNPCTrainerPartyFromTrainer(struct Pokemon *party, const struct Trainer const struct TrainerMon *partyData = trainer->party; u32 otIdType = OT_ID_RANDOM_NO_SHINY; u32 fixedOtId = 0; - u32 ability = 0; + u32 abilityNum = 0; - if (trainer->doubleBattle == TRUE) + if (trainer->battleType != TRAINER_BATTLE_TYPE_SINGLES) personalityValue = 0x80; else if (trainer->encounterMusic_gender & F_TRAINER_FEMALE) personalityValue = 0x78; // Use personality more likely to result in a female Pokémon @@ -1927,25 +1954,25 @@ u8 CreateNPCTrainerPartyFromTrainer(struct Pokemon *party, const struct Trainer if (partyData[monIndex].ability != ABILITY_NONE) { const struct SpeciesInfo *speciesInfo = &gSpeciesInfo[partyData[monIndex].species]; - u32 maxAbilities = ARRAY_COUNT(speciesInfo->abilities); - for (ability = 0; ability < maxAbilities; ++ability) + u32 maxAbilityNum = ARRAY_COUNT(speciesInfo->abilities); + for (abilityNum = 0; abilityNum < maxAbilityNum; ++abilityNum) { - if (speciesInfo->abilities[ability] == partyData[monIndex].ability) + if (speciesInfo->abilities[abilityNum] == partyData[monIndex].ability) break; } - if (ability >= maxAbilities) - ability = 0; + if (abilityNum >= maxAbilityNum) + abilityNum = 0; } else if (B_TRAINER_MON_RANDOM_ABILITY) { const struct SpeciesInfo *speciesInfo = &gSpeciesInfo[partyData[monIndex].species]; - ability = personalityHash % 3; - while (speciesInfo->abilities[ability] == ABILITY_NONE) + abilityNum = personalityHash % 3; + while (speciesInfo->abilities[abilityNum] == ABILITY_NONE) { - ability--; + abilityNum--; } } - SetMonData(&party[i], MON_DATA_ABILITY_NUM, &ability); + SetMonData(&party[i], MON_DATA_ABILITY_NUM, &abilityNum); SetMonData(&party[i], MON_DATA_FRIENDSHIP, &(partyData[monIndex].friendship)); if (partyData[monIndex].ball != ITEM_NONE) { @@ -2158,7 +2185,7 @@ void CB2_InitEndLinkBattle(void) gBattle_BG3_Y = 0; InitBattleBgsVideo(); - LoadCompressedPalette(gBattleTextboxPalette, BG_PLTT_ID(0), 2 * PLTT_SIZE_4BPP); + LoadPalette(gBattleTextboxPalette, BG_PLTT_ID(0), 2 * PLTT_SIZE_4BPP); LoadBattleMenuWindowGfx(); ResetSpriteData(); ResetTasks(); @@ -2656,7 +2683,7 @@ void SpriteCallbackDummy_2(struct Sprite *sprite) void SpriteCB_FaintOpponentMon(struct Sprite *sprite) { u8 battler = sprite->sBattler; - u32 personality = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battler]], MON_DATA_PERSONALITY); + u32 personality = GetMonData(GetBattlerMon(battler), MON_DATA_PERSONALITY); u16 species; u8 yOffset; @@ -3001,7 +3028,7 @@ static void BattleStartClearSetData(void) gBattleStruct->lastTakenMoveFrom[i][2] = MOVE_NONE; gBattleStruct->lastTakenMoveFrom[i][3] = MOVE_NONE; gBattleStruct->AI_monToSwitchIntoId[i] = PARTY_SIZE; - gBattleStruct->skyDropTargets[i] = 0xFF; + gBattleStruct->skyDropTargets[i] = SKY_DROP_NO_TARGET; } gLastUsedMove = 0; @@ -3091,7 +3118,7 @@ static void BattleStartClearSetData(void) void SwitchInClearSetData(u32 battler) { s32 i; - u32 effect = GetMoveEffect(gCurrentMove); + enum BattleMoveEffects effect = GetMoveEffect(gCurrentMove); struct DisableStruct disableStructCopy = gDisableStructs[battler]; ClearIllusionMon(battler); @@ -3119,7 +3146,7 @@ void SwitchInClearSetData(u32 battler) gStatuses4[battler] &= (STATUS4_MUD_SPORT | STATUS4_WATER_SPORT | STATUS4_INFINITE_CONFUSION); for (i = 0; i < gBattlersCount; i++) { - if (GetBattlerSide(battler) != GetBattlerSide(i) + if (!IsBattlerAlly(battler, i) && (gStatuses3[i] & STATUS3_ALWAYS_HITS) != 0 && (gDisableStructs[i].battlerWithSureHit == battler)) { @@ -3185,7 +3212,7 @@ void SwitchInClearSetData(u32 battler) gBattleStruct->lastTakenMoveFrom[battler][3] = 0; gBattleStruct->battlerState[battler].stompingTantrumTimer = 0; gBattleStruct->palaceFlags &= ~(1u << battler); - gBattleStruct->canPickupItem &= ~(1u << battler); + gBattleStruct->battlerState[battler].canPickupItem = FALSE; ClearPursuitValuesIfSet(battler); @@ -3198,7 +3225,7 @@ void SwitchInClearSetData(u32 battler) for (i = 0; i < gBattlersCount; i++) { - if (i != battler && GetBattlerSide(i) != GetBattlerSide(battler)) + if (i != battler && !IsBattlerAlly(i, battler)) gBattleStruct->lastTakenMove[i] = MOVE_NONE; gBattleStruct->lastTakenMoveFrom[i][battler] = 0; @@ -3217,8 +3244,8 @@ void SwitchInClearSetData(u32 battler) gSpecialStatuses[battler].enduredDamage = FALSE; // Reset Eject Button / Eject Pack switch detection - AI_DATA->ejectButtonSwitch = FALSE; - AI_DATA->ejectPackSwitch = FALSE; + gAiLogicData->ejectButtonSwitch = FALSE; + gAiLogicData->ejectPackSwitch = FALSE; // Reset G-Max Chi Strike boosts. gBattleStruct->bonusCritStages[battler] = 0; @@ -3244,7 +3271,6 @@ const u8* FaintClearSetData(u32 battler) { s32 i; const u8 *result = NULL; - u8 battlerSide = GetBattlerSide(battler); for (i = 0; i < NUM_BATTLE_STATS; i++) gBattleMons[battler].statStages[i] = DEFAULT_STAT_STAGE; @@ -3270,14 +3296,10 @@ const u8* FaintClearSetData(u32 battler) memset(&gDisableStructs[battler], 0, sizeof(struct DisableStruct)); - gProtectStructs[battler].protected = FALSE; - gProtectStructs[battler].spikyShielded = FALSE; - gProtectStructs[battler].kingsShielded = FALSE; - gProtectStructs[battler].banefulBunkered = FALSE; + if (GetProtectType(gProtectStructs[battler].protected) == PROTECT_TYPE_SINGLE) // Side type protects expire at the end of the turn + gProtectStructs[battler].protected = PROTECT_NONE; + gProtectStructs[battler].quash = FALSE; - gProtectStructs[battler].obstructed = FALSE; - gProtectStructs[battler].silkTrapped = FALSE; - gProtectStructs[battler].burningBulwarked = FALSE; gProtectStructs[battler].endured = FALSE; gProtectStructs[battler].noValidMoves = FALSE; gProtectStructs[battler].helpingHand = FALSE; @@ -3286,7 +3308,6 @@ const u8* FaintClearSetData(u32 battler) gProtectStructs[battler].nonVolatileStatusImmobility = FALSE; gProtectStructs[battler].unableToUseMove = FALSE; gProtectStructs[battler].confusionSelfDmg = FALSE; - gProtectStructs[battler].targetAffected = FALSE; gProtectStructs[battler].chargingTurn = FALSE; gProtectStructs[battler].fleeType = 0; gProtectStructs[battler].notFirstStrike = FALSE; @@ -3334,7 +3355,7 @@ const u8* FaintClearSetData(u32 battler) for (i = 0; i < gBattlersCount; i++) { - if (i != battler && GetBattlerSide(i) != battlerSide) + if (i != battler && !IsBattlerAlly(i, battler)) gBattleStruct->lastTakenMove[i] = MOVE_NONE; gBattleStruct->lastTakenMoveFrom[i][battler] = 0; @@ -3348,14 +3369,14 @@ const u8* FaintClearSetData(u32 battler) TryBattleFormChange(battler, FORM_CHANGE_FAINT); // If the fainted mon was involved in a Sky Drop - if (gBattleStruct->skyDropTargets[battler] != 0xFF) + if (gBattleStruct->skyDropTargets[battler] != SKY_DROP_NO_TARGET) { // Get battler id of the other Pokemon involved in this Sky Drop u8 otherSkyDropper = gBattleStruct->skyDropTargets[battler]; // Clear Sky Drop data - gBattleStruct->skyDropTargets[battler] = 0xFF; - gBattleStruct->skyDropTargets[otherSkyDropper] = 0xFF; + gBattleStruct->skyDropTargets[battler] = SKY_DROP_NO_TARGET; + gBattleStruct->skyDropTargets[otherSkyDropper] = SKY_DROP_NO_TARGET; // If the other Pokemon involved in this Sky Drop was the target, not the attacker if (gStatuses3[otherSkyDropper] & STATUS3_SKY_DROPPED) @@ -3394,7 +3415,7 @@ static void DoBattleIntro(void) s32 i; u32 battler; - switch (gBattleStruct->introState) + switch ((enum BattleIntroStates)gBattleStruct->introState) { case BATTLE_INTRO_STATE_GET_MON_DATA: battler = gBattleCommunication[1]; @@ -3429,7 +3450,7 @@ static void DoBattleIntro(void) case BATTLE_INTRO_STATE_DRAW_SPRITES: for (battler = 0; battler < gBattlersCount; battler++) { - if ((gBattleTypeFlags & BATTLE_TYPE_SAFARI) && GetBattlerSide(battler) == B_SIDE_PLAYER) + if ((gBattleTypeFlags & BATTLE_TYPE_SAFARI) && IsOnPlayerSide(battler)) { memset(&gBattleMons[battler], 0, sizeof(struct BattlePokemon)); } @@ -3472,7 +3493,7 @@ static void DoBattleIntro(void) { BtlController_EmitLoadMonSprite(battler, B_COMM_TO_CONTROLLER); MarkBattlerForControllerExec(battler); - gBattleResults.lastOpponentSpecies = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battler]], MON_DATA_SPECIES, NULL); + gBattleResults.lastOpponentSpecies = GetMonData(GetBattlerMon(battler), MON_DATA_SPECIES, NULL); } break; case B_POSITION_PLAYER_RIGHT: @@ -3495,7 +3516,7 @@ static void DoBattleIntro(void) { BtlController_EmitLoadMonSprite(battler, B_COMM_TO_CONTROLLER); MarkBattlerForControllerExec(battler); - gBattleResults.lastOpponentSpecies = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battler]], MON_DATA_SPECIES, NULL); + gBattleResults.lastOpponentSpecies = GetMonData(GetBattlerMon(battler), MON_DATA_SPECIES, NULL); } break; } @@ -3687,19 +3708,6 @@ static void DoBattleIntro(void) case BATTLE_INTRO_STATE_SET_DEX_AND_BATTLE_VARS: if (!gBattleControllerExecFlags) { - for (battler = 0; battler < gBattlersCount; battler++) - { - if (GetBattlerSide(battler) == B_SIDE_OPPONENT - && !(gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER - | BATTLE_TYPE_FRONTIER - | BATTLE_TYPE_LINK - | BATTLE_TYPE_RECORDED_LINK - | BATTLE_TYPE_TRAINER_HILL))) - { - HandleSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[battler].species), FLAG_SET_SEEN, gBattleMons[battler].personality); - } - } - gBattleStruct->eventsBeforeFirstTurnState = 0; gBattleStruct->switchInBattlerCounter = 0; gBattleStruct->overworldWeatherDone = FALSE; @@ -3735,7 +3743,7 @@ static void TryDoEventsBeforeFirstTurn(void) if (gBattleControllerExecFlags) return; - switch (gBattleStruct->eventsBeforeFirstTurnState) + switch ((enum FirstTurnEventsStates)gBattleStruct->eventsBeforeFirstTurnState) { case FIRST_TURN_EVENTS_START: // Set invalid mons as absent(for example when starting a double battle with only one pokemon). @@ -3744,8 +3752,7 @@ static void TryDoEventsBeforeFirstTurn(void) for (i = 0; i < gBattlersCount; i++) { gBattleStruct->monToSwitchIntoId[i] = PARTY_SIZE; // Included here because switches can happen before during set ups (eg. eject pack) - struct Pokemon *party = GetBattlerParty(i); - struct Pokemon *mon = &party[gBattlerPartyIndexes[i]]; + struct Pokemon *mon = GetBattlerMon(i); if (!IsBattlerAlive(i) || gBattleMons[i].species == SPECIES_NONE || GetMonData(mon, MON_DATA_IS_EGG)) gAbsentBattlerFlags |= 1u << i; } @@ -3835,6 +3842,8 @@ static void TryDoEventsBeforeFirstTurn(void) return; if (AbilityBattleEffects(ABILITYEFFECT_ON_SWITCHIN, i, 0, 0, 0) != 0) return; + if (TryClearIllusion(i, ABILITYEFFECT_ON_SWITCHIN)) + return; } gBattleStruct->switchInBattlerCounter = 0; gBattleStruct->eventsBeforeFirstTurnState++; @@ -3864,7 +3873,7 @@ static void TryDoEventsBeforeFirstTurn(void) gBattleStruct->monToSwitchIntoId[i] = PARTY_SIZE; gChosenActionByBattler[i] = B_ACTION_NONE; gChosenMoveByBattler[i] = MOVE_NONE; - gBattleStruct->battlerState[i].absentBattlerFlags = (gAbsentBattlerFlags & (1u << i) ? TRUE : FALSE); + gBattleStruct->battlerState[i].absent = (gAbsentBattlerFlags & (1u << i) ? TRUE : FALSE); } TurnValuesCleanUp(FALSE); SpecialStatusesClear(); @@ -3884,17 +3893,15 @@ static void TryDoEventsBeforeFirstTurn(void) gBattleStruct->appearedInBattle |= 1u << gBattlerPartyIndexes[i]; } - *(&gBattleStruct->turnEffectsTracker) = 0; + *(&gBattleStruct->eventBlockCounter) = 0; *(&gBattleStruct->turnEffectsBattlerId) = 0; - *(&gBattleStruct->wishPerishSongState) = 0; - *(&gBattleStruct->wishPerishSongBattlerId) = 0; gBattleScripting.moveendState = 0; gBattleStruct->faintedActionsState = 0; - gBattleStruct->turnCountersTracker = 0; + gBattleStruct->endTurnEventsCounter = 0; memset(gQueuedStatBoosts, 0, sizeof(gQueuedStatBoosts)); SetShellSideArmCategory(); - SetAiLogicDataForTurn(AI_DATA); // get assumed abilities, hold effects, etc of all battlers + SetAiLogicDataForTurn(gAiLogicData); // get assumed abilities, hold effects, etc of all battlers if (gBattleTypeFlags & BATTLE_TYPE_ARENA) { @@ -3922,13 +3929,11 @@ static void HandleEndTurn_ContinueBattle(void) { gBattleMons[i].status2 &= ~STATUS2_FLINCHED; if ((gBattleMons[i].status1 & STATUS1_SLEEP) && (gBattleMons[i].status2 & STATUS2_MULTIPLETURNS)) - CancelMultiTurnMoves(i); + CancelMultiTurnMoves(i, SKY_DROP_IGNORE); } - gBattleStruct->turnEffectsTracker = 0; + gBattleStruct->eventBlockCounter = 0; gBattleStruct->turnEffectsBattlerId = 0; - gBattleStruct->wishPerishSongState = 0; - gBattleStruct->wishPerishSongBattlerId = 0; - gBattleStruct->turnCountersTracker = 0; + gBattleStruct->endTurnEventsCounter = 0; } } @@ -3939,18 +3944,14 @@ void BattleTurnPassed(void) gBattleStruct->speedTieBreaks = RandomUniform(RNG_SPEED_TIE, 0, Factorial(MAX_BATTLERS_COUNT) - 1); TurnValuesCleanUp(TRUE); - if (gBattleOutcome == 0) - { - if (DoFieldEndTurnEffects()) - return; - if (DoBattlerEndTurnEffects()) - return; - if (HandleWishPerishSongOnTurnEnd()) - return; - } + if (gBattleOutcome == 0 && DoEndTurnEffects()) + return; + if (BattleArenaTurnEnd()) + return; if (HandleFaintedMonActions()) return; + gBattleStruct->faintedActionsState = 0; TurnValuesCleanUp(FALSE); @@ -3982,9 +3983,11 @@ void BattleTurnPassed(void) { gChosenActionByBattler[i] = B_ACTION_NONE; gChosenMoveByBattler[i] = MOVE_NONE; - gBattleStruct->battlerState[i].absentBattlerFlags = (gAbsentBattlerFlags & (1u << i) ? TRUE : FALSE); + gBattleStruct->battlerState[i].absent = (gAbsentBattlerFlags & (1u << i) ? TRUE : FALSE); gBattleStruct->monToSwitchIntoId[i] = PARTY_SIZE; gStatuses4[i] &= ~STATUS4_ELECTRIFIED; + gBattleMons[i].status2 &= ~STATUS2_FLINCHED; + gBattleMons[i].status2 &= ~STATUS2_POWDER; if (gBattleStruct->battlerState[i].stompingTantrumTimer > 0) gBattleStruct->battlerState[i].stompingTantrumTimer--; @@ -3996,10 +3999,12 @@ void BattleTurnPassed(void) gSideTimers[i].retaliateTimer--; } + gFieldStatuses &= ~STATUS_FIELD_ION_DELUGE; + BattlePutTextOnWindow(gText_EmptyString3, B_WIN_MSG); AssignUsableGimmicks(); SetShellSideArmCategory(); - SetAiLogicDataForTurn(AI_DATA); // get assumed abilities, hold effects, etc of all battlers + SetAiLogicDataForTurn(gAiLogicData); // get assumed abilities, hold effects, etc of all battlers gBattleMainFunc = HandleTurnActionSelectionState; if (gBattleTypeFlags & BATTLE_TYPE_PALACE) @@ -4024,7 +4029,8 @@ void BattleTurnPassed(void) u8 IsRunningFromBattleImpossible(u32 battler) { - u32 holdEffect, i; + enum ItemHoldEffect holdEffect; + u32 i; if (FlagGet(B_FLAG_NO_RUNNING)) { @@ -4137,32 +4143,6 @@ enum STATE_SELECTION_SCRIPT_MAY_RUN }; -void SetupAISwitchingData(u32 battler, enum SwitchType switchType) -{ - s32 opposingBattler = GetOppositeBattler(battler); - - // AI's predicting data - if ((AI_THINKING_STRUCT->aiFlags[battler] & AI_FLAG_PREDICT_SWITCH)) - { - AI_DATA->aiSwitchPredictionInProgress = TRUE; - AI_DATA->battlerDoingPrediction = battler; - AI_DATA->mostSuitableMonId[opposingBattler] = GetMostSuitableMonToSwitchInto(opposingBattler, switchType); - if (ShouldSwitch(opposingBattler)) - AI_DATA->shouldSwitch |= (1u << opposingBattler); - AI_DATA->aiSwitchPredictionInProgress = FALSE; - gBattleStruct->prevTurnSpecies[opposingBattler] = gBattleMons[opposingBattler].species; - - // Determine whether AI will use predictions this turn - AI_DATA->predictingSwitch = RandomPercentage(RNG_AI_PREDICT_SWITCH, PREDICT_SWITCH_CHANCE); - } - - // AI's data - AI_DATA->mostSuitableMonId[battler] = GetMostSuitableMonToSwitchInto(battler, switchType); - if (ShouldSwitch(battler)) - AI_DATA->shouldSwitch |= (1u << battler); - gBattleStruct->prevTurnSpecies[battler] = gBattleMons[battler].species; -} - static void HandleTurnActionSelectionState(void) { s32 i, battler; @@ -4176,31 +4156,16 @@ static void HandleTurnActionSelectionState(void) case STATE_TURN_START_RECORD: // Recorded battle related action on start of every turn. RecordedBattle_CopyBattlerMoves(battler); gBattleCommunication[battler] = STATE_BEFORE_ACTION_CHOSEN; - enum SwitchType switchType = (AI_THINKING_STRUCT->aiFlags[battler] & AI_FLAG_RISKY) ? SWITCH_AFTER_KO : SWITCH_MID_BATTLE; // Risky AI switches aggressively even mid battle - - // Do AI score computations here so we can use them in AI_TrySwitchOrUseItem - if ((gBattleTypeFlags & BATTLE_TYPE_HAS_AI || IsWildMonSmart()) - && (BattlerHasAi(battler) && !(gBattleTypeFlags & BATTLE_TYPE_PALACE))) - { - AI_DATA->aiCalcInProgress = TRUE; - - // Setup battler data - BattleAI_SetupAIData(0xF, battler); - SetupAISwitchingData(battler, switchType); - - // Do scoring - gBattleStruct->aiMoveOrAction[battler] = BattleAI_ChooseMoveOrAction(battler); - AI_DATA->aiCalcInProgress = FALSE; - } + ComputeBattlerDecisions(battler); // Do AI score computations here so we can use them in AI_TrySwitchOrUseItem // fallthrough case STATE_BEFORE_ACTION_CHOSEN: // Choose an action. gBattleStruct->monToSwitchIntoId[battler] = PARTY_SIZE; if (gBattleTypeFlags & BATTLE_TYPE_MULTI || (position & BIT_FLANK) == B_FLANK_LEFT - || gBattleStruct->battlerState[GetBattlerAtPosition(BATTLE_PARTNER(position))].absentBattlerFlags + || gBattleStruct->battlerState[GetBattlerAtPosition(BATTLE_PARTNER(position))].absent || gBattleCommunication[GetBattlerAtPosition(BATTLE_PARTNER(position))] == STATE_WAIT_ACTION_CONFIRMED) { - if (gBattleStruct->battlerState[battler].absentBattlerFlags || gBattleStruct->battlerState[battler].commandingDondozo) + if (gBattleStruct->battlerState[battler].absent || gBattleStruct->battlerState[battler].commandingDondozo) { gChosenActionByBattler[battler] = B_ACTION_NOTHING_FAINTED; if (!(gBattleTypeFlags & BATTLE_TYPE_MULTI)) @@ -4225,6 +4190,15 @@ static void HandleTurnActionSelectionState(void) gChosenActionByBattler[battler] = B_ACTION_NOTHING_FAINTED; // Not fainted, but it cannot move, because of the throwing ball. gBattleCommunication[battler] = STATE_WAIT_ACTION_CONFIRMED_STANDBY; } + else if (B_RUN_TRAINER_BATTLE + && gBattleTypeFlags & BATTLE_TYPE_DOUBLE + && position == B_POSITION_PLAYER_RIGHT + && gChosenActionByBattler[GetBattlerAtPosition(B_POSITION_PLAYER_LEFT)] == B_ACTION_RUN + && gChosenActionByBattler[GetBattlerAtPosition(B_POSITION_PLAYER_LEFT)] != B_ACTION_NOTHING_FAINTED) + { + gChosenActionByBattler[battler] = B_ACTION_USE_MOVE; + gBattleCommunication[battler] = STATE_WAIT_ACTION_CONFIRMED_STANDBY; + } else { gBattleStruct->itemPartyIndex[battler] = PARTY_SIZE; @@ -4408,9 +4382,17 @@ static void HandleTurnActionSelectionState(void) gBattleStruct->stateIdAfterSelScript[battler] = STATE_BEFORE_ACTION_CHOSEN; return; } + else if (CanPlayerForfeitNormalTrainerBattle() && gBattleResources->bufferB[battler][1] == B_ACTION_RUN) + { + gSelectionBattleScripts[battler] = BattleScript_QuestionForfeitBattle; + gBattleCommunication[battler] = STATE_SELECTION_SCRIPT_MAY_RUN; + gBattleStruct->selectionScriptFinished[battler] = FALSE; + gBattleStruct->stateIdAfterSelScript[battler] = STATE_BEFORE_ACTION_CHOSEN; + return; + } else if (gBattleTypeFlags & BATTLE_TYPE_TRAINER - && !(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED_LINK)) - && gBattleResources->bufferB[battler][1] == B_ACTION_RUN) + && !(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED_LINK)) + && gBattleResources->bufferB[battler][1] == B_ACTION_RUN) { BattleScriptExecute(BattleScript_PrintCantRunFromTrainer); gBattleCommunication[battler] = STATE_BEFORE_ACTION_CHOSEN; @@ -4575,7 +4557,7 @@ static void HandleTurnActionSelectionState(void) if (((gBattleTypeFlags & BATTLE_TYPE_MULTI) || !IsDoubleBattle()) || (position & BIT_FLANK) != B_FLANK_LEFT - || gBattleStruct->battlerState[GetBattlerAtPosition(BATTLE_PARTNER(position))].absentBattlerFlags) + || gBattleStruct->battlerState[GetBattlerAtPosition(BATTLE_PARTNER(position))].absent) { BtlController_EmitLinkStandbyMsg(battler, B_COMM_TO_CONTROLLER, LINK_STANDBY_MSG_STOP_BOUNCE, i); } @@ -4717,7 +4699,7 @@ void SwapTurnOrder(u8 id1, u8 id2) } // For AI, so it doesn't 'cheat' by knowing player's ability -u32 GetBattlerTotalSpeedStatArgs(u32 battler, u32 ability, u32 holdEffect) +u32 GetBattlerTotalSpeedStatArgs(u32 battler, u32 ability, enum ItemHoldEffect holdEffect) { u32 speed = gBattleMons[battler].speed; @@ -4754,8 +4736,8 @@ u32 GetBattlerTotalSpeedStatArgs(u32 battler, u32 ability, u32 holdEffect) // player's badge boost if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED_LINK | BATTLE_TYPE_FRONTIER)) - && ShouldGetStatBadgeBoost(FLAG_BADGE03_GET, battler) - && GetBattlerSide(battler) == B_SIDE_PLAYER) + && ShouldGetStatBadgeBoost(B_FLAG_BADGE_BOOST_SPEED, battler) + && IsOnPlayerSide(battler)) { speed = (speed * 110) / 100; } @@ -4787,27 +4769,26 @@ u32 GetBattlerTotalSpeedStatArgs(u32 battler, u32 ability, u32 holdEffect) u32 GetBattlerTotalSpeedStat(u32 battler) { u32 ability = GetBattlerAbility(battler); - u32 holdEffect = GetBattlerHoldEffect(battler, TRUE); + enum ItemHoldEffect holdEffect = GetBattlerHoldEffect(battler, TRUE); return GetBattlerTotalSpeedStatArgs(battler, ability, holdEffect); } -s8 GetChosenMovePriority(u32 battler) +s32 GetChosenMovePriority(u32 battler, u32 ability) { u16 move; - gProtectStructs[battler].pranksterElevated = 0; + gProtectStructs[battler].pranksterElevated = FALSE; if (gProtectStructs[battler].noValidMoves) move = MOVE_STRUGGLE; else move = gBattleMons[battler].moves[gBattleStruct->chosenMovePositions[battler]]; - return GetBattleMovePriority(battler, move); + return GetBattleMovePriority(battler, ability, move); } -s8 GetBattleMovePriority(u32 battler, u16 move) +s32 GetBattleMovePriority(u32 battler, u32 ability, u32 move) { - s8 priority; - u16 ability = GetBattlerAbility(battler); + s32 priority = 0; if (GetActiveGimmick(battler) == GIMMICK_Z_MOVE && !IsBattleMoveStatus(move)) move = GetUsableZMove(battler, move); @@ -4843,7 +4824,7 @@ s8 GetBattleMovePriority(u32 battler, u16 move) } s32 GetWhichBattlerFasterArgs(u32 battler1, u32 battler2, bool32 ignoreChosenMoves, u32 ability1, u32 ability2, - u32 holdEffectBattler1, u32 holdEffectBattler2, u32 speedBattler1, u32 speedBattler2, s32 priority1, s32 priority2) + enum ItemHoldEffect holdEffectBattler1, enum ItemHoldEffect holdEffectBattler2, u32 speedBattler1, u32 speedBattler2, s32 priority1, s32 priority2) { u32 strikesFirst = 0; @@ -4910,17 +4891,17 @@ s32 GetWhichBattlerFasterOrTies(u32 battler1, u32 battler2, bool32 ignoreChosenM s32 priority1 = 0, priority2 = 0; u32 ability1 = GetBattlerAbility(battler1); u32 speedBattler1 = GetBattlerTotalSpeedStat(battler1); - u32 holdEffectBattler1 = GetBattlerHoldEffect(battler1, TRUE); + enum ItemHoldEffect holdEffectBattler1 = GetBattlerHoldEffect(battler1, TRUE); u32 speedBattler2 = GetBattlerTotalSpeedStat(battler2); - u32 holdEffectBattler2 = GetBattlerHoldEffect(battler2, TRUE); + enum ItemHoldEffect holdEffectBattler2 = GetBattlerHoldEffect(battler2, TRUE); u32 ability2 = GetBattlerAbility(battler2); if (!ignoreChosenMoves) { if (gChosenActionByBattler[battler1] == B_ACTION_USE_MOVE) - priority1 = GetChosenMovePriority(battler1); + priority1 = GetChosenMovePriority(battler1, ability1); if (gChosenActionByBattler[battler2] == B_ACTION_USE_MOVE) - priority2 = GetChosenMovePriority(battler2); + priority2 = GetChosenMovePriority(battler2, ability2); } return GetWhichBattlerFasterArgs( @@ -5097,13 +5078,7 @@ static void TurnValuesCleanUp(bool8 var0) { if (var0) { - gProtectStructs[i].protected = FALSE; - gProtectStructs[i].spikyShielded = FALSE; - gProtectStructs[i].kingsShielded = FALSE; - gProtectStructs[i].banefulBunkered = FALSE; - gProtectStructs[i].obstructed = FALSE; - gProtectStructs[i].silkTrapped = FALSE; - gProtectStructs[i].burningBulwarked = FALSE; + gProtectStructs[i].protected = PROTECT_NONE; gProtectStructs[i].quash = FALSE; gProtectStructs[i].usedCustapBerry = FALSE; gProtectStructs[i].quickDraw = FALSE; @@ -5122,7 +5097,7 @@ static void TurnValuesCleanUp(bool8 var0) if (gDisableStructs[i].rechargeTimer == 0) gBattleMons[i].status2 &= ~STATUS2_RECHARGE; } - gBattleStruct->canPickupItem &= ~(1u << i); + gBattleStruct->battlerState[i].canPickupItem = FALSE; } if (gDisableStructs[i].substituteHP == 0) @@ -5136,8 +5111,6 @@ static void TurnValuesCleanUp(bool8 var0) gProtectStructs[i].lashOutAffected = FALSE; } - gSideStatuses[B_SIDE_PLAYER] &= ~(SIDE_STATUS_QUICK_GUARD | SIDE_STATUS_WIDE_GUARD | SIDE_STATUS_CRAFTY_SHIELD | SIDE_STATUS_MAT_BLOCK); - gSideStatuses[B_SIDE_OPPONENT] &= ~(SIDE_STATUS_QUICK_GUARD | SIDE_STATUS_WIDE_GUARD | SIDE_STATUS_CRAFTY_SHIELD | SIDE_STATUS_MAT_BLOCK); gSideTimers[B_SIDE_PLAYER].followmeTimer = 0; gSideTimers[B_SIDE_OPPONENT].followmeTimer = 0; @@ -5224,6 +5197,8 @@ static bool32 TryDoMoveEffectsBeforeMoves(void) case EFFECT_SHELL_TRAP: BattleScriptExecute(BattleScript_ShellTrapSetUp); return TRUE; + default: + break; } } } @@ -5256,8 +5231,8 @@ static void TryChangeTurnOrder(void) static void TryChangingTurnOrderEffects(u32 battler1, u32 battler2, u32 *quickClawRandom, u32 *quickDrawRandom) { u32 ability1 = GetBattlerAbility(battler1); - u32 holdEffectBattler1 = GetBattlerHoldEffect(battler1, TRUE); - u32 holdEffectBattler2 = GetBattlerHoldEffect(battler2, TRUE); + enum ItemHoldEffect holdEffectBattler1 = GetBattlerHoldEffect(battler1, TRUE); + enum ItemHoldEffect holdEffectBattler2 = GetBattlerHoldEffect(battler2, TRUE); u32 ability2 = GetBattlerAbility(battler2); // Battler 1 @@ -5496,6 +5471,11 @@ static void HandleEndTurn_RanFromBattle(void) gBattlescriptCurrInstr = BattleScript_PrintPlayerForfeited; gBattleOutcome = B_OUTCOME_FORFEITED; } + else if (CanPlayerForfeitNormalTrainerBattle()) + { + gBattlescriptCurrInstr = BattleScript_ForfeitBattleGaveMoney; + gBattleOutcome = B_OUTCOME_FORFEITED; + } else { switch (gProtectStructs[gBattlerAttacker].fleeType) @@ -5541,19 +5521,23 @@ static void HandleEndTurn_FinishBattle(void) { for (battler = 0; battler < gBattlersCount; battler++) { - if (GetBattlerSide(battler) == B_SIDE_PLAYER) + if (IsOnPlayerSide(battler)) { if (gBattleResults.playerMon1Species == SPECIES_NONE) { - gBattleResults.playerMon1Species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battler]], MON_DATA_SPECIES, NULL); - GetMonData(&gPlayerParty[gBattlerPartyIndexes[battler]], MON_DATA_NICKNAME, gBattleResults.playerMon1Name); + gBattleResults.playerMon1Species = GetMonData(GetBattlerMon(battler), MON_DATA_SPECIES, NULL); + GetMonData(GetBattlerMon(battler), MON_DATA_NICKNAME, gBattleResults.playerMon1Name); } else { - gBattleResults.playerMon2Species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battler]], MON_DATA_SPECIES, NULL); - GetMonData(&gPlayerParty[gBattlerPartyIndexes[battler]], MON_DATA_NICKNAME, gBattleResults.playerMon2Name); + gBattleResults.playerMon2Species = GetMonData(GetBattlerMon(battler), MON_DATA_SPECIES, NULL); + GetMonData(GetBattlerMon(battler), MON_DATA_NICKNAME, gBattleResults.playerMon2Name); } } + else if (!IsOnPlayerSide(battler)) + { + HandleSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[battler].species), FLAG_SET_SEEN, gBattleMons[battler].personality); + } } TryPutPokemonTodayOnAir(); } @@ -5682,27 +5666,22 @@ static void TryEvolvePokemon(void) { if (!(sTriedEvolving & (1u << i))) { - u16 species = GetEvolutionTargetSpecies(&gPlayerParty[i], EVO_MODE_BATTLE_SPECIAL, i, NULL); - bool32 evoModeNormal = TRUE; + bool32 canStopEvo = TRUE; + u32 species = GetEvolutionTargetSpecies(&gPlayerParty[i], EVO_MODE_BATTLE_SPECIAL, i, NULL, &canStopEvo, CHECK_EVO); sTriedEvolving |= 1u << i; if (species == SPECIES_NONE && (gLeveledUpInBattle & (1u << i))) { gLeveledUpInBattle &= ~(1u << i); - 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; + species = GetEvolutionTargetSpecies(&gPlayerParty[i], EVO_MODE_BATTLE_ONLY, gLeveledUpInBattle, NULL, &canStopEvo, CHECK_EVO); } if (species != SPECIES_NONE) { FreeAllWindowBuffers(); gBattleMainFunc = WaitForEvoSceneToFinish; - EvolutionScene(&gPlayerParty[i], species, evoModeNormal, i); + GetEvolutionTargetSpecies(&gPlayerParty[i], EVO_MODE_BATTLE_ONLY, gLeveledUpInBattle, NULL, &canStopEvo, DO_EVO); + EvolutionScene(&gPlayerParty[i], species, canStopEvo, i); return; } } @@ -5792,6 +5771,8 @@ u32 TrySetAteType(u32 move, u32 battlerAtk, u32 attackerAbility) case EFFECT_REVELATION_DANCE: case EFFECT_TERRAIN_PULSE: return ateType; + default: + break; } switch (attackerAbility) @@ -5820,8 +5801,9 @@ u32 TrySetAteType(u32 move, u32 battlerAtk, u32 attackerAbility) u32 GetDynamicMoveType(struct Pokemon *mon, u32 move, u32 battler, enum MonState state) { u32 moveType = GetMoveType(move); - u32 moveEffect = GetMoveEffect(move); - u32 species, heldItem, holdEffect, ability, type1, type2, type3; + enum BattleMoveEffects moveEffect = GetMoveEffect(move); + u32 species, heldItem, ability, type1, type2, type3; + enum ItemHoldEffect holdEffect; enum Gimmick gimmick = GetActiveGimmick(battler); if (move == MOVE_STRUGGLE) @@ -6012,6 +5994,8 @@ u32 GetDynamicMoveType(struct Pokemon *mon, u32 move, u32 battler, enum MonState if (species == SPECIES_TERAPAGOS_STELLAR) return TYPE_STELLAR; break; + default: + break; } if (IsSoundMove(move) && ability == ABILITY_LIQUID_VOICE) @@ -6050,13 +6034,13 @@ void SetTypeBeforeUsingMove(u32 move, u32 battler) { u32 moveType; u32 heldItem = gBattleMons[battler].item; - u32 holdEffect = GetBattlerHoldEffect(battler, TRUE); + enum ItemHoldEffect holdEffect = GetBattlerHoldEffect(battler, TRUE); gBattleStruct->dynamicMoveType = 0; gBattleStruct->ateBoost[battler] = FALSE; gSpecialStatuses[battler].gemBoost = FALSE; - moveType = GetDynamicMoveType(&GetBattlerParty(battler)[gBattlerPartyIndexes[battler]], + moveType = GetDynamicMoveType(GetBattlerMon(battler), move, battler, MON_IN_BATTLE); @@ -6065,8 +6049,7 @@ void SetTypeBeforeUsingMove(u32 move, u32 battler) gBattleStruct->dynamicMoveType = moveType | F_DYNAMIC_TYPE_SET; moveType = GetBattleMoveType(move); - if ((gFieldStatuses & STATUS_FIELD_ION_DELUGE && moveType == TYPE_NORMAL) - || gStatuses4[battler] & STATUS4_ELECTRIFIED) + if ((gFieldStatuses & STATUS_FIELD_ION_DELUGE && moveType == TYPE_NORMAL) || gStatuses4[battler] & STATUS4_ELECTRIFIED) gBattleStruct->dynamicMoveType = TYPE_ELECTRIC | F_DYNAMIC_TYPE_SET; // Check if a gem should activate. @@ -6119,3 +6102,25 @@ static s32 Factorial(s32 n) f *= i; return f; } + +bool32 CanPlayerForfeitNormalTrainerBattle(void) +{ + if (!B_RUN_TRAINER_BATTLE) + return FALSE; + + if (gBattleTypeFlags & BATTLE_TYPE_FRONTIER) + return FALSE; + + if (gBattleTypeFlags & BATTLE_TYPE_RECORDED_INVALID) + return FALSE; + + return (gBattleTypeFlags & BATTLE_TYPE_TRAINER); +} + +bool32 DidPlayerForfeitNormalTrainerBattle(void) +{ + if (!CanPlayerForfeitNormalTrainerBattle()) + return FALSE; + + return (gBattleOutcome == B_OUTCOME_FORFEITED); +} diff --git a/src/battle_message.c b/src/battle_message.c index ff887d7f38..d46ead7669 100644 --- a/src/battle_message.c +++ b/src/battle_message.c @@ -169,7 +169,7 @@ const u8 gText_drastically[] = _("drastically "); const u8 gText_severely[] = _("severely "); static const u8 sText_TerrainReturnedToNormal[] = _("The terrain returned to normal!"); // Unused -const u8 *const gBattleStringsTable[BATTLESTRINGS_COUNT] = +const u8 *const gBattleStringsTable[STRINGID_COUNT] = { [STRINGID_TRAINER1LOSETEXT] = COMPOUND_STRING("{B_TRAINER1_LOSE_TEXT}"), [STRINGID_PKMNGAINEDEXP] = COMPOUND_STRING("{B_BUFF1} gained{B_BUFF2} {B_BUFF3} Exp. Points!\p"), @@ -362,9 +362,9 @@ const u8 *const gBattleStringsTable[BATTLESTRINGS_COUNT] = [STRINGID_PKMNPREVENTSUSAGE] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY} prevents {B_ATK_NAME_WITH_PREFIX2} from using {B_CURRENT_MOVE}!"), //I don't see this in SV text [STRINGID_PKMNRESTOREDHPUSING] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX} restored HP using its {B_DEF_ABILITY}!"), //not in gen 5+, ability popup [STRINGID_PKMNCHANGEDTYPEWITH] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY} made it the {B_BUFF1} type!"), //not in gen 5+, ability popup - [STRINGID_PKMNPREVENTSPARALYSISWITH] = COMPOUND_STRING("{B_EFF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY} prevents paralysis!"), //not in gen 5+, ability popup + [STRINGID_PKMNPREVENTSPARALYSISWITH] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}'s {B_LAST_ABILITY} prevents paralysis!"), //not in gen 5+, ability popup [STRINGID_PKMNPREVENTSROMANCEWITH] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY} prevents romance!"), //not in gen 5+, ability popup - [STRINGID_PKMNPREVENTSPOISONINGWITH] = COMPOUND_STRING("{B_EFF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY} prevents poisoning!"), //not in gen 5+, ability popup + [STRINGID_PKMNPREVENTSPOISONINGWITH] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}'s {B_LAST_ABILITY} prevents poisoning!"), //not in gen 5+, ability popup [STRINGID_PKMNPREVENTSCONFUSIONWITH] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY} prevents confusion!"), //not in gen 5+, ability popup [STRINGID_PKMNRAISEDFIREPOWERWITH] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY} raised the power of Fire-type moves!"), //not in gen 5+, ability popup [STRINGID_PKMNANCHORSITSELFWITH] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX} anchors itself with {B_DEF_ABILITY}!"), //not in gen 5+, ability popup @@ -468,7 +468,7 @@ const u8 *const gBattleStringsTable[BATTLESTRINGS_COUNT] = [STRINGID_ITEMALLOWSONLYYMOVE] = COMPOUND_STRING("{B_LAST_ITEM} only allows the use of {B_CURRENT_MOVE}!\p"), [STRINGID_PKMNHUNGONWITHX] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX} hung on using its {B_LAST_ITEM}!"), [STRINGID_EMPTYSTRING3] = gText_EmptyString3, - [STRINGID_PKMNSXPREVENTSBURNS] = COMPOUND_STRING("{B_EFF_NAME_WITH_PREFIX}'s {B_EFF_ABILITY} prevents burns!"), //not in gen 5+, ability popup + [STRINGID_PKMNSXPREVENTSBURNS] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}'s {B_LAST_ABILITY} prevents burns!"), //not in gen 5+, ability popup [STRINGID_PKMNSXBLOCKSY] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY} blocks {B_CURRENT_MOVE}!"), //not in gen 5+, ability popup [STRINGID_PKMNSXRESTOREDHPALITTLE2] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}'s {B_ATK_ABILITY} restored its HP a little!"), //not in gen 5+, ability popup [STRINGID_PKMNSXWHIPPEDUPSANDSTORM] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY} whipped up a sandstorm!"), //not in gen 5+, ability popup @@ -525,7 +525,7 @@ const u8 *const gBattleStringsTable[BATTLESTRINGS_COUNT] = [STRINGID_PKMNOBTAINEDX2] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX} obtained {B_BUFF2}."), [STRINGID_PKMNOBTAINEDXYOBTAINEDZ] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} obtained {B_BUFF1}.\p{B_DEF_NAME_WITH_PREFIX} obtained {B_BUFF2}."), [STRINGID_BUTNOEFFECT] = COMPOUND_STRING("But it had no effect!"), - [STRINGID_PKMNSXHADNOEFFECTONY] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY} had no effect on {B_EFF_NAME_WITH_PREFIX2}!"), //not in gen 5+, ability popup + [STRINGID_PKMNSXHADNOEFFECTONY] = COMPOUND_STRING("Target protected by {B_LAST_ABILITY}!"), //not in gen 5+, ability popup [STRINGID_TWOENEMIESDEFEATED] = sText_TwoInGameTrainersDefeated, [STRINGID_TRAINER2LOSETEXT] = COMPOUND_STRING("{B_TRAINER2_LOSE_TEXT}"), [STRINGID_PKMNINCAPABLEOFPOWER] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} appears incapable of using its power!"), @@ -631,7 +631,6 @@ const u8 *const gBattleStringsTable[BATTLESTRINGS_COUNT] = [STRINGID_FRISKACTIVATES] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} frisked {B_DEF_NAME_WITH_PREFIX2} and found its {B_LAST_ITEM}!"), [STRINGID_UNNERVEENTERS] = COMPOUND_STRING("{B_DEF_TEAM1} team is too nervous to eat Berries!"), [STRINGID_HARVESTBERRY] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} harvested its {B_LAST_ITEM}!"), - [STRINGID_LASTABILITYRAISEDSTAT] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}'s {B_LAST_ABILITY} raised its {B_BUFF1}!"), [STRINGID_MAGICBOUNCEACTIVATES] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX} bounced the {B_ATK_NAME_WITH_PREFIX2} back!"), [STRINGID_PROTEANTYPECHANGE] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}'s {B_ATK_ABILITY} transformed it into the {B_BUFF1} type!"), [STRINGID_SYMBIOSISITEMPASS] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX} passed its {B_LAST_ITEM} to {B_EFF_NAME_WITH_PREFIX2} through {B_LAST_ABILITY}!"), @@ -894,6 +893,14 @@ const u8 *const gBattleStringsTable[BATTLESTRINGS_COUNT] = [STRINGID_ITDOESNTAFFECTTWOFOES] = COMPOUND_STRING("It doesn't affect {B_DEF_NAME_WITH_PREFIX2} and {B_DEF_PARTNER_NAME}…"), [STRINGID_SENDCAUGHTMONPARTYORBOX] = COMPOUND_STRING("Add {B_DEF_NAME} to your party?"), [STRINGID_PKMNSENTTOPCAFTERCATCH] = gText_PkmnSentToPCAfterCatch, + [STRINGID_PKMNDYNAMAXED] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} grew huge into its Dynamax form!"), + [STRINGID_PKMNGIGANTAMAXED] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} grew huge into its Gigantamax form!"), + [STRINGID_TIMETODYNAMAX] = COMPOUND_STRING("Time to Dynamax!"), + [STRINGID_TIMETOGIGANTAMAX] = COMPOUND_STRING("Time to Gigantamax!"), + [STRINGID_QUESTIONFORFEITBATTLE] = COMPOUND_STRING("Would you like to give up on this battle and quit now? Quitting the battle is the same as losing the battle."), + [STRINGID_FORFEITBATTLEGAVEMONEY] = COMPOUND_STRING("You gave ¥{B_BUFF1} to the winner…{PAUSE_UNTIL_PRESS}"), + [STRINGID_POWERCONSTRUCTPRESENCEOFMANY] = COMPOUND_STRING("You sense the presence of many!"), + [STRINGID_POWERCONSTRUCTTRANSFORM] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} transformed into its Complete Forme!"), }; const u16 gTrainerUsedItemStringIds[] = @@ -958,7 +965,8 @@ const u16 gTerrainPreventsStringIds[] = const u16 gHealingWishStringIds[] = { - STRINGID_HEALINGWISHCAMETRUE, STRINGID_LUNARDANCECAMETRUE + STRINGID_HEALINGWISHCAMETRUE, + STRINGID_LUNARDANCECAMETRUE }; const u16 gDmgHazardsStringIds[] = @@ -1328,25 +1336,14 @@ const u16 gBerryEffectStringIds[] = [B_MSG_NORMALIZED_STATUS] = STRINGID_PKMNSITEMNORMALIZEDSTATUS }; -const u16 gBRNPreventionStringIds[] = +const u16 gStatusPreventionStringIds[] = { - [B_MSG_ABILITY_PREVENTS_MOVE_STATUS] = STRINGID_PKMNSXPREVENTSBURNS, + [B_MSG_ABILITY_PREVENTS_MOVE_BURN] = STRINGID_PKMNSXPREVENTSBURNS, + [B_MSG_ABILITY_PREVENTS_MOVE_PARALYSIS] = STRINGID_PKMNPREVENTSPARALYSISWITH, + [B_MSG_ABILITY_PREVENTS_MOVE_POISON] = STRINGID_PKMNPREVENTSPOISONINGWITH, [B_MSG_ABILITY_PREVENTS_ABILITY_STATUS] = STRINGID_PKMNSXPREVENTSYSZ, - [B_MSG_STATUS_HAD_NO_EFFECT] = STRINGID_PKMNSXHADNOEFFECTONY -}; - -const u16 gPRLZPreventionStringIds[] = -{ - [B_MSG_ABILITY_PREVENTS_MOVE_STATUS] = STRINGID_PKMNPREVENTSPARALYSISWITH, - [B_MSG_ABILITY_PREVENTS_ABILITY_STATUS] = STRINGID_PKMNSXPREVENTSYSZ, - [B_MSG_STATUS_HAD_NO_EFFECT] = STRINGID_PKMNSXHADNOEFFECTONY -}; - -const u16 gPSNPreventionStringIds[] = -{ - [B_MSG_ABILITY_PREVENTS_MOVE_STATUS] = STRINGID_PKMNPREVENTSPOISONINGWITH, - [B_MSG_ABILITY_PREVENTS_ABILITY_STATUS] = STRINGID_PKMNSXPREVENTSYSZ, - [B_MSG_STATUS_HAD_NO_EFFECT] = STRINGID_PKMNSXHADNOEFFECTONY + [B_MSG_STATUS_HAD_NO_EFFECT] = STRINGID_PKMNSXHADNOEFFECTONY, + [B_MSG_ABILITY_PASTEL_VEIL] = STRINGID_PASTELVEILPROTECTED }; const u16 gItemSwapStringIds[] = @@ -1631,9 +1628,9 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] = .x = 0, .y = 1, .speed = 0, - .fgColor = 12, + .fgColor = B_SHOW_EFFECTIVENESS != SHOW_EFFECTIVENESS_NEVER ? 13 : 12, .bgColor = 14, - .shadowColor = 11, + .shadowColor = B_SHOW_EFFECTIVENESS != SHOW_EFFECTIVENESS_NEVER ? 15 : 11, }, [B_WIN_DUMMY] = { .fillValue = PIXEL_FILL(0xE), @@ -1883,9 +1880,9 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] = .x = 0, .y = 1, .speed = 0, - .fgColor = 12, + .fgColor = B_SHOW_EFFECTIVENESS != SHOW_EFFECTIVENESS_NEVER ? 13 : 12, .bgColor = 14, - .shadowColor = 11, + .shadowColor = B_SHOW_EFFECTIVENESS != SHOW_EFFECTIVENESS_NEVER ? 15 : 11, }, [B_WIN_DUMMY] = { .fillValue = PIXEL_FILL(0xE), @@ -2058,7 +2055,7 @@ static const struct BattleWindowText *const sBattleTextOnWindowsInfo[] = static const u8 sRecordedBattleTextSpeeds[] = {8, 4, 1, 0}; -void BufferStringBattle(u16 stringID, u32 battler) +void BufferStringBattle(enum StringID stringID, u32 battler) { s32 i; const u8 *stringPtr = NULL; @@ -2127,7 +2124,7 @@ void BufferStringBattle(u16 stringID, u32 battler) { if (gBattleTypeFlags & BATTLE_TYPE_LEGENDARY) stringPtr = sText_LegendaryPkmnAppeared; - else if (IsDoubleBattle() && IsValidForBattle(&gEnemyParty[gBattlerPartyIndexes[GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT)]])) + else if (IsDoubleBattle() && IsValidForBattle(GetBattlerMon(GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT)))) stringPtr = sText_TwoWildPkmnAppeared; else if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL) stringPtr = sText_WildPkmnAppearedPause; @@ -2136,9 +2133,9 @@ void BufferStringBattle(u16 stringID, u32 battler) } break; case STRINGID_INTROSENDOUT: // poke first send-out - if (GetBattlerSide(battler) == B_SIDE_PLAYER) + if (IsOnPlayerSide(battler)) { - if (IsDoubleBattle() && IsValidForBattle(&gPlayerParty[gBattlerPartyIndexes[BATTLE_PARTNER(battler)]])) + if (IsDoubleBattle() && IsValidForBattle(GetBattlerMon(BATTLE_PARTNER(battler)))) { if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER) stringPtr = sText_InGamePartnerSentOutZGoN; @@ -2156,7 +2153,7 @@ void BufferStringBattle(u16 stringID, u32 battler) } else { - if (IsDoubleBattle() && IsValidForBattle(&gEnemyParty[gBattlerPartyIndexes[BATTLE_PARTNER(battler)]])) + if (IsDoubleBattle() && IsValidForBattle(GetBattlerMon(BATTLE_PARTNER(battler)))) { if (BATTLE_TWO_VS_ONE_OPPONENT) stringPtr = sText_Trainer1SentOutTwoPkmn; @@ -2183,7 +2180,7 @@ void BufferStringBattle(u16 stringID, u32 battler) } break; case STRINGID_RETURNMON: // sending poke to ball msg - if (GetBattlerSide(battler) == B_SIDE_PLAYER) + if (IsOnPlayerSide(battler)) { if (*(&gBattleStruct->hpScale) == 0) stringPtr = sText_PkmnThatsEnough; @@ -2210,7 +2207,7 @@ void BufferStringBattle(u16 stringID, u32 battler) } break; case STRINGID_SWITCHINMON: // switch-in msg - if (GetBattlerSide(gBattleScripting.battler) == B_SIDE_PLAYER) + if (IsOnPlayerSide(gBattleScripting.battler)) { if (*(&gBattleStruct->hpScale) == 0 || IsDoubleBattle()) stringPtr = sText_GoPkmn2; @@ -2271,7 +2268,7 @@ void BufferStringBattle(u16 stringID, u32 battler) if (gBattleTextBuff1[0] & B_OUTCOME_LINK_BATTLE_RAN) { gBattleTextBuff1[0] &= ~(B_OUTCOME_LINK_BATTLE_RAN); - if (GetBattlerSide(battler) == B_SIDE_OPPONENT && gBattleTextBuff1[0] != B_OUTCOME_DREW) + if (!IsOnPlayerSide(battler) && gBattleTextBuff1[0] != B_OUTCOME_DREW) gBattleTextBuff1[0] ^= (B_OUTCOME_LOST | B_OUTCOME_WON); if (gBattleTextBuff1[0] == B_OUTCOME_LOST || gBattleTextBuff1[0] == B_OUTCOME_DREW) @@ -2283,7 +2280,7 @@ void BufferStringBattle(u16 stringID, u32 battler) } else { - if (GetBattlerSide(battler) == B_SIDE_OPPONENT && gBattleTextBuff1[0] != B_OUTCOME_DREW) + if (!IsOnPlayerSide(battler) && gBattleTextBuff1[0] != B_OUTCOME_DREW) gBattleTextBuff1[0] ^= (B_OUTCOME_LOST | B_OUTCOME_WON); if (gBattleTypeFlags & BATTLE_TYPE_MULTI) @@ -2340,7 +2337,7 @@ void BufferStringBattle(u16 stringID, u32 battler) stringPtr = gBattleStruct->trainerSlideMsg; break; default: // load a string from the table - if (stringID >= BATTLESTRINGS_COUNT) + if (stringID >= STRINGID_COUNT) { gDisplayedStringBattle[0] = EOS; return; @@ -2405,7 +2402,7 @@ static const u8 *TryGetStatusString(u8 *src) static void GetBattlerNick(u32 battler, u8 *dst) { struct Pokemon *illusionMon = GetIllusionMonPtr(battler); - struct Pokemon *mon = GetPartyBattlerData(battler); + struct Pokemon *mon = GetBattlerMon(battler); if (illusionMon != NULL) mon = illusionMon; @@ -2414,7 +2411,7 @@ static void GetBattlerNick(u32 battler, u8 *dst) } #define HANDLE_NICKNAME_STRING_CASE(battler) \ - if (GetBattlerSide(battler) != B_SIDE_PLAYER) \ + if (!IsOnPlayerSide(battler)) \ { \ if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) \ toCpy = sText_FoePkmnPrefix; \ @@ -2431,7 +2428,7 @@ static void GetBattlerNick(u32 battler, u8 *dst) toCpy = text; #define HANDLE_NICKNAME_STRING_LOWERCASE(battler) \ - if (GetBattlerSide(battler) != B_SIDE_PLAYER) \ + if (!IsOnPlayerSide(battler)) \ { \ if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) \ toCpy = sText_FoePkmnPrefixLower; \ @@ -2558,7 +2555,7 @@ static const u8 *BattleStringGetPlayerName(u8 *text, u8 battler) static const u8 *BattleStringGetTrainerName(u8 *text, u8 multiplayerId, u8 battler) { - if (GetBattlerSide(battler) == B_SIDE_PLAYER) + if (IsOnPlayerSide(battler)) return BattleStringGetPlayerName(text, battler); else return BattleStringGetOpponentName(text, multiplayerId, battler); @@ -2877,7 +2874,7 @@ u32 BattleStringExpandPlaceholders(const u8 *src, u8 *dst, u32 dstSize) } break; case B_TXT_26: // ? - if (GetBattlerSide(gBattleScripting.battler) != B_SIDE_PLAYER) + if (!IsOnPlayerSide(gBattleScripting.battler)) { if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) toCpy = sText_FoePkmnPrefix; @@ -2905,37 +2902,37 @@ u32 BattleStringExpandPlaceholders(const u8 *src, u8 *dst, u32 dstSize) toCpy = sText_Someones; break; case B_TXT_ATK_PREFIX2: - if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER) + if (IsOnPlayerSide(gBattlerAttacker)) toCpy = sText_AllyPkmnPrefix2; else toCpy = sText_FoePkmnPrefix3; break; case B_TXT_DEF_PREFIX2: - if (GetBattlerSide(gBattlerTarget) == B_SIDE_PLAYER) + if (IsOnPlayerSide(gBattlerTarget)) toCpy = sText_AllyPkmnPrefix2; else toCpy = sText_FoePkmnPrefix3; break; case B_TXT_ATK_PREFIX1: - if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER) + if (IsOnPlayerSide(gBattlerAttacker)) toCpy = sText_AllyPkmnPrefix; else toCpy = sText_FoePkmnPrefix2; break; case B_TXT_DEF_PREFIX1: - if (GetBattlerSide(gBattlerTarget) == B_SIDE_PLAYER) + if (IsOnPlayerSide(gBattlerTarget)) toCpy = sText_AllyPkmnPrefix; else toCpy = sText_FoePkmnPrefix2; break; case B_TXT_ATK_PREFIX3: - if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER) + if (IsOnPlayerSide(gBattlerAttacker)) toCpy = sText_AllyPkmnPrefix3; else toCpy = sText_FoePkmnPrefix4; break; case B_TXT_DEF_PREFIX3: - if (GetBattlerSide(gBattlerTarget) == B_SIDE_PLAYER) + if (IsOnPlayerSide(gBattlerTarget)) toCpy = sText_AllyPkmnPrefix3; else toCpy = sText_FoePkmnPrefix4; @@ -3090,37 +3087,37 @@ u32 BattleStringExpandPlaceholders(const u8 *src, u8 *dst, u32 dstSize) } break; case B_TXT_ATK_TEAM1: - if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER) + if (IsOnPlayerSide(gBattlerAttacker)) toCpy = sText_Your1; else toCpy = sText_Opposing1; break; case B_TXT_ATK_TEAM2: - if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER) + if (IsOnPlayerSide(gBattlerAttacker)) toCpy = sText_Your2; else toCpy = sText_Opposing2; break; case B_TXT_DEF_TEAM1: - if (GetBattlerSide(gBattlerTarget) == B_SIDE_PLAYER) + if (IsOnPlayerSide(gBattlerTarget)) toCpy = sText_Your1; else toCpy = sText_Opposing1; break; case B_TXT_DEF_TEAM2: - if (GetBattlerSide(gBattlerTarget) == B_SIDE_PLAYER) + if (IsOnPlayerSide(gBattlerTarget)) toCpy = sText_Your2; else toCpy = sText_Opposing2; break; case B_TXT_SCR_TEAM1: - if (GetBattlerSide(gBattleScripting.battler) == B_SIDE_PLAYER) + if (IsOnPlayerSide(gBattleScripting.battler)) toCpy = sText_Your1; else toCpy = sText_Opposing1; break; case B_TXT_SCR_TEAM2: - if (GetBattlerSide(gBattleScripting.battler) == B_SIDE_PLAYER) + if (IsOnPlayerSide(gBattleScripting.battler)) toCpy = sText_Your2; else toCpy = sText_Opposing2; @@ -3172,40 +3169,31 @@ u32 BattleStringExpandPlaceholders(const u8 *src, u8 *dst, u32 dstSize) dst[dstID] = *src; dstID++; - BreakStringAutomatic(dst, BATTLE_MSG_MAX_WIDTH, BATTLE_MSG_MAX_LINES, fontId); + BreakStringAutomatic(dst, BATTLE_MSG_MAX_WIDTH, BATTLE_MSG_MAX_LINES, fontId, TRUE); return dstID; } static void IllusionNickHack(u32 battler, u32 partyId, u8 *dst) { - s32 id, i; + u32 id = PARTY_SIZE; // we know it's gEnemyParty struct Pokemon *mon = &gEnemyParty[partyId], *partnerMon; if (GetMonAbility(mon) == ABILITY_ILLUSION) { if (IsBattlerAlive(BATTLE_PARTNER(battler))) - partnerMon = &gEnemyParty[gBattlerPartyIndexes[BATTLE_PARTNER(battler)]]; + partnerMon = GetBattlerMon(BATTLE_PARTNER(battler)); else partnerMon = mon; - // Find last alive non-egg pokemon. - for (i = PARTY_SIZE - 1; i >= 0; i--) - { - id = i; - if (GetMonData(&gEnemyParty[id], MON_DATA_SANITY_HAS_SPECIES) - && GetMonData(&gEnemyParty[id], MON_DATA_HP) - && &gEnemyParty[id] != mon - && &gEnemyParty[id] != partnerMon) - { - GetMonData(&gEnemyParty[id], MON_DATA_NICKNAME, dst); - return; - } - } + id = GetIllusionMonPartyId(gEnemyParty, mon, partnerMon); } - GetMonData(mon, MON_DATA_NICKNAME, dst); + if (id != PARTY_SIZE) + GetMonData(&gEnemyParty[id], MON_DATA_NICKNAME, dst); + else + GetMonData(mon, MON_DATA_NICKNAME, dst); } void ExpandBattleTextBuffPlaceholders(const u8 *src, u8 *dst) @@ -3251,7 +3239,7 @@ void ExpandBattleTextBuffPlaceholders(const u8 *src, u8 *dst) break; case B_BUFF_MON_NICK_WITH_PREFIX: // poke nick with prefix case B_BUFF_MON_NICK_WITH_PREFIX_LOWER: // poke nick with lowercase prefix - if (GetBattlerSide(src[srcID + 1]) == B_SIDE_PLAYER) + if (IsOnPlayerSide(src[srcID + 1])) { GetMonData(&gPlayerParty[src[srcID + 2]], MON_DATA_NICKNAME, nickname); } @@ -3299,7 +3287,7 @@ void ExpandBattleTextBuffPlaceholders(const u8 *src, u8 *dst) } else { - if (GetBattlerSide(src[srcID + 1]) == B_SIDE_PLAYER) + if (IsOnPlayerSide(src[srcID + 1])) GetMonData(&gPlayerParty[src[srcID + 2]], MON_DATA_NICKNAME, dst); else GetMonData(&gEnemyParty[src[srcID + 2]], MON_DATA_NICKNAME, dst); diff --git a/src/battle_pyramid.c b/src/battle_pyramid.c index cbc8fd6db8..6e56f4867b 100644 --- a/src/battle_pyramid.c +++ b/src/battle_pyramid.c @@ -1368,9 +1368,7 @@ static bool32 CheckBattlePyramidEvoRequirement(u16 species, const u16 *evoItems, for (j = 0; evolutions[j].method != EVOLUTIONS_END; j++) { if (evolutions[j].targetSpecies == species - && (evolutions[j].method == EVO_ITEM - || evolutions[j].method == EVO_ITEM_MALE - || evolutions[j].method == EVO_ITEM_FEMALE)) + && (evolutions[j].method == EVO_ITEM)) { if (nItems == 0) { diff --git a/src/battle_pyramid_bag.c b/src/battle_pyramid_bag.c index ee9a8e6a5b..5d5c6c1f03 100644 --- a/src/battle_pyramid_bag.c +++ b/src/battle_pyramid_bag.c @@ -578,7 +578,7 @@ static bool8 LoadPyramidBagGfx(void) } break; case 2: - LoadCompressedPalette(gBattlePyramidBagInterface_Pal, BG_PLTT_ID(0), PLTT_SIZE_4BPP); + LoadPalette(gBattlePyramidBagInterface_Pal, BG_PLTT_ID(0), PLTT_SIZE_4BPP); gPyramidBagMenu->state++; break; case 3: @@ -1559,13 +1559,10 @@ static void FreeItemIconSprite(u8 spriteArrId) static void LoadPyramidBagPalette(void) { struct SpritePalette spritePalette; - u16 *palPtr = Alloc(2 * PLTT_SIZE_4BPP); - LZDecompressWram(gBattlePyramidBag_Pal, palPtr); - spritePalette.data = palPtr + PLTT_ID(gSaveBlock2Ptr->frontier.lvlMode); + spritePalette.data = gBattlePyramidBag_Pal + PLTT_ID(gSaveBlock2Ptr->frontier.lvlMode); spritePalette.tag = TAG_PYRAMID_BAG; LoadSpritePalette(&spritePalette); - Free(palPtr); } static void CreatePyramidBagSprite(void) diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 11d9cd376a..88f3cfba54 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -332,7 +332,7 @@ static void DrawLevelUpBannerText(void); static void SpriteCB_MonIconOnLvlUpBanner(struct Sprite *sprite); static bool32 CriticalCapture(u32 odds); static void BestowItem(u32 battlerAtk, u32 battlerDef); -static bool8 IsFinalStrikeEffect(u32 moveEffect); +static bool8 IsFinalStrikeEffect(enum BattleMoveEffects moveEffect); static void TryUpdateRoundTurnOrder(void); static bool32 ChangeOrderTargetAfterAttacker(void); static bool32 SetTargetToNextPursuiter(u32 battlerDef); @@ -340,9 +340,8 @@ void ApplyExperienceMultipliers(s32 *expAmount, u8 expGetterMonId, u8 faintedBat static void RemoveAllWeather(void); static void RemoveAllTerrains(void); static bool32 CanAbilityPreventStatLoss(u32 abilityDef); -static bool8 CanBurnHitThaw(u16 move); static u32 GetNextTarget(u32 moveTarget, bool32 excludeCurrent); -static void TryUpdateEvolutionTracker(u32 evolutionMethod, u32 upAmount, u16 usedMove); +static void TryUpdateEvolutionTracker(u32 evolutionCondition, u32 upAmount, u16 usedMove); static void AccuracyCheck(bool32 recalcDragonDarts, const u8 *nextInstr, const u8 *failInstr, u16 move); static void ResetValuesForCalledMove(void); static void TryRestoreDamageAfterCheeckPouch(u32 battler); @@ -488,14 +487,14 @@ static void Cmd_statbuffchange(void); static void Cmd_normalisebuffs(void); static void Cmd_setbide(void); static void Cmd_twoturnmoveschargestringandanimation(void); -static void Cmd_unused_0x8d(void); +static void Cmd_trynonvolatilestatus(void); static void Cmd_initmultihitstring(void); static void Cmd_forcerandomswitch(void); static void Cmd_tryconversiontypechange(void); static void Cmd_givepaydaymoney(void); static void Cmd_setlightscreen(void); static void Cmd_tryKO(void); -static void Cmd_damagetohalftargethp(void); +static void Cmd_unused_0x94(void); static void Cmd_copybidedmg(void); static void Cmd_unused_96(void); static void Cmd_tryinfatuating(void); @@ -506,8 +505,8 @@ static void Cmd_transformdataexecution(void); static void Cmd_setsubstitute(void); static void Cmd_mimicattackcopy(void); static void Cmd_metronome(void); -static void Cmd_dmgtolevel(void); -static void Cmd_psywavedamageeffect(void); +static void Cmd_unused_0x9f(void); +static void Cmd_unused_0xA0(void); static void Cmd_counterdamagecalculator(void); static void Cmd_mirrorcoatdamagecalculator(void); static void Cmd_disablelastusedattack(void); @@ -534,7 +533,7 @@ static void Cmd_presentdamagecalculation(void); static void Cmd_setsafeguard(void); static void Cmd_magnitudedamagecalculation(void); static void Cmd_jumpifnopursuitswitchdmg(void); -static void Cmd_unused_bb(void); +static void Cmd_tryrestorehpberry(void); static void Cmd_halvehp(void); static void Cmd_copyfoestats(void); static void Cmd_rapidspinfree(void); @@ -600,7 +599,7 @@ static void Cmd_settelekinesis(void); static void Cmd_swapstatstages(void); static void Cmd_averagestats(void); static void Cmd_jumpifcaptivateaffected(void); -static void Cmd_unused(void); +static void Cmd_setnonvolatilestatus(void); static void Cmd_tryworryseed(void); static void Cmd_callnative(void); @@ -747,14 +746,14 @@ void (*const gBattleScriptingCommandsTable[])(void) = Cmd_normalisebuffs, //0x8A Cmd_setbide, //0x8B Cmd_twoturnmoveschargestringandanimation, //0x8C - Cmd_unused_0x8d, //0x8D + Cmd_trynonvolatilestatus, //0x8D Cmd_initmultihitstring, //0x8E Cmd_forcerandomswitch, //0x8F Cmd_tryconversiontypechange, //0x90 Cmd_givepaydaymoney, //0x91 Cmd_setlightscreen, //0x92 Cmd_tryKO, //0x93 - Cmd_damagetohalftargethp, //0x94 + Cmd_unused_0x94, //0x94 Cmd_copybidedmg, //0x95 Cmd_unused_96, //0x96 Cmd_tryinfatuating, //0x97 @@ -765,8 +764,8 @@ void (*const gBattleScriptingCommandsTable[])(void) = Cmd_setsubstitute, //0x9C Cmd_mimicattackcopy, //0x9D Cmd_metronome, //0x9E - Cmd_dmgtolevel, //0x9F - Cmd_psywavedamageeffect, //0xA0 + Cmd_unused_0x9f, //0x9F + Cmd_unused_0xA0, //0xA0 Cmd_counterdamagecalculator, //0xA1 Cmd_mirrorcoatdamagecalculator, //0xA2 Cmd_disablelastusedattack, //0xA3 @@ -793,7 +792,7 @@ void (*const gBattleScriptingCommandsTable[])(void) = Cmd_setsafeguard, //0xB8 Cmd_magnitudedamagecalculation, //0xB9 Cmd_jumpifnopursuitswitchdmg, //0xBA - Cmd_unused_bb, //0xBB + Cmd_tryrestorehpberry, //0xBB Cmd_halvehp, //0xBC Cmd_copyfoestats, //0xBD Cmd_rapidspinfree, //0xBE @@ -859,7 +858,7 @@ void (*const gBattleScriptingCommandsTable[])(void) = Cmd_swapstatstages, //0xFA Cmd_averagestats, //0xFB Cmd_jumpifcaptivateaffected, //0xFC - Cmd_unused, //0xFD + Cmd_setnonvolatilestatus, //0xFD Cmd_tryworryseed, //0xFE Cmd_callnative, //0xFF }; @@ -965,7 +964,6 @@ static const u16 sFinalStrikeOnlyEffects[] = MOVE_EFFECT_BUG_BITE, MOVE_EFFECT_STEAL_ITEM, MOVE_EFFECT_REMOVE_ARG_TYPE, - MOVE_EFFECT_SMACK_DOWN, MOVE_EFFECT_REMOVE_STATUS, MOVE_EFFECT_RECOIL_HP_25, MOVE_EFFECT_PREVENT_ESCAPE, @@ -1154,12 +1152,88 @@ bool32 IsMoveNotAllowedInSkyBattles(u32 move) return (gBattleStruct->isSkyBattle && IsMoveSkyBattleBanned(gCurrentMove)); } +u32 NumAffectedSpreadMoveTargets(void) +{ + u32 targetCount = 0; + + if (!IsDoubleSpreadMove()) + return targetCount; + + for (u32 battler = 0; battler < gBattlersCount; battler++) + { + if (!(gBattleStruct->moveResultFlags[battler] & MOVE_RESULT_NO_EFFECT)) + targetCount++; + } + + return targetCount; +} + +u32 NumFaintedBattlersByAttacker(u32 battlerAtk) +{ + u32 numMonsFainted = 0; + + for (u32 battler = 0; battler < gBattlersCount; battler++) + { + if (battler == battlerAtk) + continue; + + if (IsBattlerTurnDamaged(battler) && !IsBattlerAlive(battler)) + numMonsFainted++; + } + + return numMonsFainted; +} + +bool32 IsMovePowderBlocked(u32 battlerAtk, u32 battlerDef, u32 move) +{ + bool32 effect = FALSE; + + if (IsPowderMove(move) && (battlerAtk != battlerDef)) + { + if (B_POWDER_GRASS >= GEN_6 + && (IS_BATTLER_OF_TYPE(battlerDef, TYPE_GRASS) || GetBattlerAbility(battlerDef) == ABILITY_OVERCOAT)) + { + gBattlerAbility = battlerDef; + RecordAbilityBattle(gBattlerTarget, ABILITY_OVERCOAT); + effect = TRUE; + } + else if (GetBattlerHoldEffect(battlerDef, TRUE) == HOLD_EFFECT_SAFETY_GOGGLES) + { + RecordItemEffectBattle(battlerDef, HOLD_EFFECT_SAFETY_GOGGLES); + gLastUsedItem = gBattleMons[battlerDef].item; + effect = TRUE; + } + + if (effect) + gBattlescriptCurrInstr = BattleScript_PowderMoveNoEffect; + } + + return effect; +} + +bool32 EmergencyExitCanBeTriggered(u32 battler) +{ + u32 ability = GetBattlerAbility(battler); + + if (ability != ABILITY_EMERGENCY_EXIT && ability != ABILITY_WIMP_OUT) + return FALSE; + + if (IsBattlerTurnDamaged(battler) + && IsBattlerAlive(battler) + && HadMoreThanHalfHpNowDoesnt(battler) + && (CanBattlerSwitch(battler) || !(gBattleTypeFlags & BATTLE_TYPE_TRAINER)) + && !(gBattleTypeFlags & BATTLE_TYPE_ARENA) + && CountUsablePartyMons(battler) > 0 + && !(gStatuses3[battler] & STATUS3_SKY_DROPPED)) + return TRUE; + + return FALSE; +} + static void Cmd_attackcanceler(void) { CMD_ARGS(); - s32 i; - if (gBattleStruct->battlerState[gBattlerAttacker].usedEjectItem) { gBattleStruct->battlerState[gBattlerAttacker].usedEjectItem = FALSE; @@ -1173,7 +1247,7 @@ static void Cmd_attackcanceler(void) return; } - u32 effect = GetMoveEffect(gCurrentMove); + enum BattleMoveEffects effect = GetMoveEffect(gCurrentMove); if (!IsBattlerAlive(gBattlerAttacker) && effect != EFFECT_EXPLOSION && !(gHitMarker & HITMARKER_NO_ATTACKSTRING)) { @@ -1196,10 +1270,27 @@ static void Cmd_attackcanceler(void) return; } - if (AbilityBattleEffects(ABILITYEFFECT_MOVES_BLOCK, gBattlerTarget, 0, 0, 0)) - return; - if (GetMoveEffect(gCurrentMove) == EFFECT_PARALYZE && AbilityBattleEffects(ABILITYEFFECT_ABSORBING, gBattlerTarget, 0, 0, gCurrentMove)) + + u32 abilityDef = GetBattlerAbility(gBattlerTarget); + if (CanAbilityBlockMove(gBattlerAttacker, + gBattlerTarget, + GetBattlerAbility(gBattlerAttacker), + abilityDef, + gCurrentMove, + ABILITY_RUN_SCRIPT)) return; + + if (GetMoveNonVolatileStatus(gCurrentMove) == MOVE_EFFECT_PARALYSIS) + { + if (CanAbilityAbsorbMove(gBattlerAttacker, + gBattlerTarget, + abilityDef, + gCurrentMove, + GetBattleMoveType(gCurrentMove), + ABILITY_RUN_SCRIPT)) + return; + } + if (IsMovePowderBlocked(gBattlerAttacker, gBattlerTarget, gCurrentMove)) return; @@ -1227,7 +1318,7 @@ static void Cmd_attackcanceler(void) gBattlescriptCurrInstr = BattleScript_FailedFromAtkString; if (!gBattleMoveEffects[effect].twoTurnEffect || (gBattleMons[gBattlerAttacker].status2 & STATUS2_MULTIPLETURNS)) - CancelMultiTurnMoves(gBattlerAttacker); + CancelMultiTurnMoves(gBattlerAttacker, SKY_DROP_ATTACKCANCELLER_CHECK); return; } @@ -1259,7 +1350,7 @@ static void Cmd_attackcanceler(void) { u32 battler = gBattlerTarget; - if (GetBattlerAbility(gBattlerTarget) == ABILITY_MAGIC_BOUNCE) + if (abilityDef == ABILITY_MAGIC_BOUNCE) { battler = gBattlerTarget; gBattleStruct->bouncedMoveIsUsed = TRUE; @@ -1284,14 +1375,16 @@ static void Cmd_attackcanceler(void) } // Z-moves and Max Moves bypass protection, but deal reduced damage (factored in AccumulateOtherModifiers) - if ((IsZMove(gCurrentMove) || IsMaxMove(gCurrentMove)) && IS_BATTLER_PROTECTED(gBattlerTarget)) + if ((IsZMove(gCurrentMove) || IsMaxMove(gCurrentMove)) + && gProtectStructs[gBattlerTarget].protected != PROTECT_NONE + && gProtectStructs[gBattlerTarget].protected != PROTECT_MAX_GUARD) { BattleScriptPush(cmd->nextInstr); gBattlescriptCurrInstr = BattleScript_CouldntFullyProtect; return; } - for (i = 0; i < gBattlersCount; i++) + for (u32 i = 0; i < gBattlersCount; i++) { if ((gProtectStructs[gBattlerByTurnOrder[i]].stealMove) && MoveCanBeSnatched(gCurrentMove)) { @@ -1329,7 +1422,7 @@ static void Cmd_attackcanceler(void) { if (IsMoveMakingContact(gCurrentMove, gBattlerAttacker)) gProtectStructs[gBattlerAttacker].touchedProtectLike = TRUE; - CancelMultiTurnMoves(gBattlerAttacker); + CancelMultiTurnMoves(gBattlerAttacker, SKY_DROP_ATTACKCANCELLER_CHECK); gBattleStruct->moveResultFlags[gBattlerTarget] |= MOVE_RESULT_MISSED; gLastLandedMoves[gBattlerTarget] = 0; gLastHitByType[gBattlerTarget] = 0; @@ -1354,39 +1447,33 @@ static void Cmd_attackcanceler(void) } } -static bool32 JumpIfMoveFailed(u8 adder, u16 move, const u8 *failInstr) +static void JumpIfMoveFailed(u32 adder, u32 move, u32 moveType, const u8 *failInstr) { if (gBattleStruct->moveResultFlags[gBattlerTarget] & MOVE_RESULT_NO_EFFECT) { gLastLandedMoves[gBattlerTarget] = 0; gLastHitByType[gBattlerTarget] = 0; gBattlescriptCurrInstr = failInstr; - return TRUE; + return; } else { TrySetDestinyBondToHappen(); - if (AbilityBattleEffects(ABILITYEFFECT_ABSORBING, gBattlerTarget, 0, 0, move)) - return TRUE; + + if (CanAbilityAbsorbMove(gBattlerAttacker, + gBattlerTarget, + GetBattlerAbility(gBattlerTarget), + move, + moveType, + ABILITY_RUN_SCRIPT)) + return; } + gBattlescriptCurrInstr += adder; - return FALSE; } static void Cmd_unused5(void) { - CMD_ARGS(const u8 *failInstr); - - if (IsBattlerProtected(gBattlerAttacker, gBattlerTarget, gCurrentMove)) - { - gBattleStruct->moveResultFlags[gBattlerTarget] |= MOVE_RESULT_MISSED; - JumpIfMoveFailed(sizeof(*cmd), MOVE_NONE, cmd->failInstr); - gBattleCommunication[MISS_TYPE] = B_MSG_PROTECTED; - } - else - { - gBattlescriptCurrInstr = cmd->nextInstr; - } } static bool32 JumpIfMoveAffectedByProtect(u32 move, u32 battler, u32 shouldJump, const u8 *failInstr) @@ -1396,19 +1483,22 @@ static bool32 JumpIfMoveAffectedByProtect(u32 move, u32 battler, u32 shouldJump, { gBattleStruct->moveResultFlags[battler] |= MOVE_RESULT_MISSED; if (shouldJump) - JumpIfMoveFailed(7, move, failInstr); + JumpIfMoveFailed(7, move, GetBattleMoveType(move), failInstr); } return affected; } static bool32 AccuracyCalcHelper(u32 move, u32 battler) { - u32 effect = FALSE; + bool32 effect = FALSE; u32 ability = ABILITY_NONE; - u32 moveEffect = GetMoveEffect(move); + enum BattleMoveEffects moveEffect = GetMoveEffect(move); + u32 nonVolatileStatus = GetMoveNonVolatileStatus(move); if ((gStatuses3[battler] & STATUS3_ALWAYS_HITS && gDisableStructs[battler].battlerWithSureHit == gBattlerAttacker) - || (B_TOXIC_NEVER_MISS >= GEN_6 && moveEffect == EFFECT_TOXIC && IS_BATTLER_OF_TYPE(gBattlerAttacker, TYPE_POISON)) + || (B_TOXIC_NEVER_MISS >= GEN_6 + && nonVolatileStatus == MOVE_EFFECT_TOXIC + && IS_BATTLER_OF_TYPE(gBattlerAttacker, TYPE_POISON)) || gStatuses4[battler] & STATUS4_GLAIVE_RUSH) { effect = TRUE; @@ -1416,14 +1506,14 @@ static bool32 AccuracyCalcHelper(u32 move, u32 battler) // If the attacker has the ability No Guard and they aren't targeting a Pokemon involved in a Sky Drop with the move Sky Drop, move hits. else if (GetBattlerAbility(gBattlerAttacker) == ABILITY_NO_GUARD && !(gStatuses3[battler] & STATUS3_COMMANDER) - && (moveEffect != EFFECT_SKY_DROP || gBattleStruct->skyDropTargets[battler] == 0xFF)) + && (moveEffect != EFFECT_SKY_DROP || gBattleStruct->skyDropTargets[battler] == SKY_DROP_NO_TARGET)) { effect = TRUE; ability = ABILITY_NO_GUARD; } // If the target has the ability No Guard and they aren't involved in a Sky Drop or the current move isn't Sky Drop, move hits. else if (GetBattlerAbility(battler) == ABILITY_NO_GUARD - && (moveEffect != EFFECT_SKY_DROP || gBattleStruct->skyDropTargets[battler] == 0xFF)) + && (moveEffect != EFFECT_SKY_DROP || gBattleStruct->skyDropTargets[battler] == SKY_DROP_NO_TARGET)) { effect = TRUE; ability = ABILITY_NO_GUARD; @@ -1452,20 +1542,7 @@ static bool32 AccuracyCalcHelper(u32 move, u32 battler) gBattleStruct->moveResultFlags[battler] |= MOVE_RESULT_MISSED; effect = TRUE; } - - if (HasWeatherEffect()) - { - if ((moveEffect == EFFECT_THUNDER || moveEffect == EFFECT_RAIN_ALWAYS_HIT) - && IsBattlerWeatherAffected(battler, B_WEATHER_RAIN)) - effect = TRUE; - else if ((gBattleWeather & (B_WEATHER_HAIL | B_WEATHER_SNOW)) && moveEffect == EFFECT_BLIZZARD) - effect = TRUE; - - if (effect) - return effect; - } - - if (B_MINIMIZE_DMG_ACC >= GEN_6 + else if (B_MINIMIZE_DMG_ACC >= GEN_6 && (gStatuses3[battler] & STATUS3_MINIMIZED) && MoveIncreasesPowerToMinimizedTargets(move)) { @@ -1476,6 +1553,17 @@ static bool32 AccuracyCalcHelper(u32 move, u32 battler) effect = TRUE; } + if (!effect && HasWeatherEffect()) + { + if (MoveAlwaysHitsInRain(move) && IsBattlerWeatherAffected(battler, B_WEATHER_RAIN)) + effect = TRUE; + else if ((gBattleWeather & (B_WEATHER_HAIL | B_WEATHER_SNOW)) && MoveAlwaysHitsInHailSnow(move)) + effect = TRUE; + + if (effect) + return effect; + } + if (ability != ABILITY_NONE) RecordAbilityBattle(gBattlerAttacker, ABILITY_NO_GUARD); @@ -1514,7 +1602,7 @@ u32 GetTotalAccuracy(u32 battlerAtk, u32 battlerDef, u32 move, u32 atkAbility, u moveAcc = GetMoveAccuracy(move); // Check Thunder and Hurricane on sunny weather. - if (IsBattlerWeatherAffected(battlerDef, B_WEATHER_SUN) && GetMoveEffect(move) == EFFECT_THUNDER) + if (IsBattlerWeatherAffected(battlerDef, B_WEATHER_SUN) && MoveHas50AccuracyInSun(move)) moveAcc = 50; // Check Wonder Skin. if (defAbility == ABILITY_WONDER_SKIN && IsBattleMoveStatus(move) && moveAcc > 50) @@ -1606,16 +1694,12 @@ u32 GetTotalAccuracy(u32 battlerAtk, u32 battlerDef, u32 move, u32 atkAbility, u static void AccuracyCheck(bool32 recalcDragonDarts, const u8 *nextInstr, const u8 *failInstr, u16 move) { - u32 abilityAtk; - u32 holdEffectAtk; - if (move == ACC_CURR_MOVE) move = gCurrentMove; - u32 effect = GetMoveEffect(move); - - abilityAtk = GetBattlerAbility(gBattlerAttacker); - holdEffectAtk = GetBattlerHoldEffect(gBattlerAttacker, TRUE); + enum BattleMoveEffects effect = GetMoveEffect(move); + u32 abilityAtk = GetBattlerAbility(gBattlerAttacker); + enum ItemHoldEffect holdEffectAtk = GetBattlerHoldEffect(gBattlerAttacker, TRUE); if (move == NO_ACC_CALC_CHECK_LOCK_ON) { @@ -1627,10 +1711,15 @@ static void AccuracyCheck(bool32 recalcDragonDarts, const u8 *nextInstr, const u gBattlescriptCurrInstr = nextInstr; if (GetActiveGimmick(gBattlerAttacker) == GIMMICK_DYNAMAX) { - if (gProtectStructs[gBattlerTarget].maxGuarded) + if (gProtectStructs[gBattlerTarget].protected == PROTECT_MAX_GUARD) gBattlescriptCurrInstr = nextInstr; else - AbilityBattleEffects(ABILITYEFFECT_ABSORBING, gBattlerTarget, 0, 0, gCurrentMove); + CanAbilityAbsorbMove(gBattlerAttacker, + gBattlerTarget, + GetBattlerAbility(gBattlerTarget), + gCurrentMove, + GetBattleMoveType(gCurrentMove), + ABILITY_RUN_SCRIPT); } } else if (gSpecialStatuses[gBattlerAttacker].parentalBondState == PARENTAL_BOND_2ND_HIT @@ -1707,7 +1796,7 @@ static void AccuracyCheck(bool32 recalcDragonDarts, const u8 *nextInstr, const u if (calcSpreadMove) gBattleStruct->calculatedSpreadMoveAccuracy = TRUE; - JumpIfMoveFailed(7, move, failInstr); + JumpIfMoveFailed(7, move, moveType, failInstr); } } @@ -1757,7 +1846,7 @@ static void Cmd_ppreduce(void) { for (i = 0; i < gBattlersCount; i++) { - if (GetBattlerSide(i) != GetBattlerSide(gBattlerAttacker) && IsBattlerAlive(i)) + if (!IsBattlerAlly(i, gBattlerAttacker) && IsBattlerAlive(i)) ppToDeduct += (GetBattlerAbility(i) == ABILITY_PRESSURE); } } @@ -1811,7 +1900,7 @@ static inline u32 GetCriticalHitOdds(u32 critChance) return sCriticalHitOdds[critChance]; } -static inline u32 IsBattlerLeekAffected(u32 battler, u32 holdEffect) +static inline u32 IsBattlerLeekAffected(u32 battler, enum ItemHoldEffect holdEffect) { if (holdEffect == HOLD_EFFECT_LEEK) { @@ -1821,7 +1910,7 @@ static inline u32 IsBattlerLeekAffected(u32 battler, u32 holdEffect) return FALSE; } -static inline u32 GetHoldEffectCritChanceIncrease(u32 battler, u32 holdEffect) +static inline u32 GetHoldEffectCritChanceIncrease(u32 battler, enum ItemHoldEffect holdEffect) { u32 critStageIncrease = 0; @@ -1846,9 +1935,7 @@ static inline u32 GetHoldEffectCritChanceIncrease(u32 battler, u32 holdEffect) return critStageIncrease; } -#define CRITICAL_HIT_BLOCKED -1 -#define CRITICAL_HIT_ALWAYS -2 -s32 CalcCritChanceStage(u32 battlerAtk, u32 battlerDef, u32 move, bool32 recordAbility, u32 abilityAtk, u32 abilityDef, u32 holdEffectAtk) +s32 CalcCritChanceStage(u32 battlerAtk, u32 battlerDef, u32 move, bool32 recordAbility, u32 abilityAtk, u32 abilityDef, enum ItemHoldEffect holdEffectAtk) { s32 critChance = 0; @@ -1897,7 +1984,7 @@ s32 CalcCritChanceStage(u32 battlerAtk, u32 battlerDef, u32 move, bool32 recordA // Threshold = Base Speed / 2 // High crit move = 8 * (Base Speed / 2) // Focus Energy = 4 * (Base Speed / 2) -s32 CalcCritChanceStageGen1(u32 battlerAtk, u32 battlerDef, u32 move, bool32 recordAbility, u32 abilityAtk, u32 abilityDef, u32 holdEffectAtk) +s32 CalcCritChanceStageGen1(u32 battlerAtk, u32 battlerDef, u32 move, bool32 recordAbility, u32 abilityAtk, u32 abilityDef, enum ItemHoldEffect holdEffectAtk) { s32 critChance = 0; s32 moveCritStage = GetMoveCriticalHitStage(gCurrentMove); @@ -1956,8 +2043,6 @@ s32 GetCritHitOdds(s32 critChanceIndex) else return GetCriticalHitOdds(critChanceIndex); } -#undef CRITICAL_HIT_BLOCKED -#undef CRITICAL_HIT_ALWAYS static void Cmd_critcalc(void) { @@ -1967,7 +2052,7 @@ static void Cmd_critcalc(void) u32 moveTarget = GetBattlerMoveTargetType(gBattlerAttacker, gCurrentMove); bool32 calcSpreadMoveDamage = IsSpreadMove(moveTarget) && !IsBattleMoveStatus(gCurrentMove); u32 abilityAtk = GetBattlerAbility(gBattlerAttacker); - u32 holdEffectAtk = GetBattlerHoldEffect(gBattlerAttacker, TRUE); + enum ItemHoldEffect holdEffectAtk = GetBattlerHoldEffect(gBattlerAttacker, TRUE); gPotentialItemEffectBattler = gBattlerAttacker; for (u32 battlerDef = 0; battlerDef < gBattlersCount; battlerDef++) @@ -2006,8 +2091,8 @@ static void Cmd_critcalc(void) gSpecialStatuses[battlerDef].criticalHit = RandomChance(RNG_CRITICAL_HIT, 1, GetCriticalHitOdds(gBattleStruct->critChance[battlerDef])); } - // Counter for EVO_CRITICAL_HITS. - if (gSpecialStatuses[battlerDef].criticalHit && GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER + // Counter for IF_CRITICAL_HITS_GE evolution condition. + if (gSpecialStatuses[battlerDef].criticalHit && IsOnPlayerSide(gBattlerAttacker) && !(gBattleTypeFlags & BATTLE_TYPE_MULTI && GetBattlerPosition(gBattlerAttacker) == B_POSITION_PLAYER_LEFT)) gPartyCriticalHits[partySlot]++; } @@ -2017,9 +2102,7 @@ static void Cmd_critcalc(void) static inline void CalculateAndSetMoveDamage(struct DamageCalculationData *damageCalcData, u32 battlerDef) { - if (GetMoveEffect(gCurrentMove) == EFFECT_SHELL_SIDE_ARM) - gBattleStruct->swapDamageCategory = (gBattleStruct->shellSideArmCategory[gBattlerAttacker][battlerDef] != GetMoveCategory(gCurrentMove)); - + SetDynamicMoveCategory(gBattlerAttacker, battlerDef, gCurrentMove); damageCalcData->battlerDef = battlerDef; damageCalcData->isCrit = gSpecialStatuses[battlerDef].criticalHit; gBattleStruct->moveDamage[battlerDef] = CalculateMoveDamage(damageCalcData, 0); @@ -2089,13 +2172,15 @@ static void Cmd_adjustdamage(void) { CMD_ARGS(); - u8 holdEffect, param; + enum ItemHoldEffect holdEffect; + u8 param; u32 battlerDef; u32 rand = Random() % 100; u32 affectionScore = GetBattlerAffectionHearts(gBattlerTarget); u32 moveTarget = GetBattlerMoveTargetType(gBattlerAttacker, gCurrentMove); - u32 moveEffect = GetMoveEffect(gCurrentMove); + enum BattleMoveEffects moveEffect = GetMoveEffect(gCurrentMove); bool32 calcSpreadMoveDamage = IsSpreadMove(moveTarget) && !IsBattleMoveStatus(gCurrentMove); + bool32 enduredHit = FALSE; for (battlerDef = 0; battlerDef < gBattlersCount; battlerDef++) { @@ -2123,6 +2208,7 @@ static void Cmd_adjustdamage(void) // Damage deals typeless 0 HP. gBattleStruct->moveResultFlags[battlerDef] &= ~(MOVE_RESULT_SUPER_EFFECTIVE | MOVE_RESULT_NOT_VERY_EFFECTIVE); gBattleStruct->moveDamage[battlerDef] = 0; + gSpecialStatuses[battlerDef].enduredDamage = TRUE; RecordAbilityBattle(gBattlerTarget, ABILITY_ICE_FACE); gDisableStructs[battlerDef].iceFaceActivationPrevention = TRUE; // Form change will be done after attack animation in Cmd_resultmessage. @@ -2137,65 +2223,58 @@ static void Cmd_adjustdamage(void) gPotentialItemEffectBattler = battlerDef; - if (holdEffect == HOLD_EFFECT_FOCUS_BAND && rand < param) + if (moveEffect == EFFECT_FALSE_SWIPE) { + enduredHit = TRUE; + } + else if (gProtectStructs[battlerDef].endured) + { + enduredHit = TRUE; + gBattleStruct->moveResultFlags[battlerDef] |= MOVE_RESULT_FOE_ENDURED; + } + else if (holdEffect == HOLD_EFFECT_FOCUS_BAND && rand < param) + { + enduredHit = TRUE; RecordItemEffectBattle(battlerDef, holdEffect); - gSpecialStatuses[battlerDef].focusBanded = TRUE; + gLastUsedItem = gBattleMons[battlerDef].item; + gBattleStruct->moveResultFlags[battlerDef] |= MOVE_RESULT_FOE_HUNG_ON; } else if (B_STURDY >= GEN_5 && GetBattlerAbility(battlerDef) == ABILITY_STURDY && IsBattlerAtMaxHp(battlerDef)) { + enduredHit = TRUE; RecordAbilityBattle(battlerDef, ABILITY_STURDY); - gSpecialStatuses[battlerDef].sturdied = TRUE; + gLastUsedAbility = ABILITY_STURDY; + gBattleStruct->moveResultFlags[battlerDef] |= MOVE_RESULT_STURDIED; } else if (holdEffect == HOLD_EFFECT_FOCUS_SASH && IsBattlerAtMaxHp(battlerDef)) { + enduredHit = TRUE; RecordItemEffectBattle(battlerDef, holdEffect); - gSpecialStatuses[battlerDef].focusSashed = TRUE; + gLastUsedItem = gBattleMons[battlerDef].item; + gBattleStruct->moveResultFlags[battlerDef] |= MOVE_RESULT_FOE_HUNG_ON; } - else if (B_AFFECTION_MECHANICS == TRUE && GetBattlerSide(battlerDef) == B_SIDE_PLAYER && affectionScore >= AFFECTION_THREE_HEARTS) + else if (B_AFFECTION_MECHANICS == TRUE && IsOnPlayerSide(battlerDef) && affectionScore >= AFFECTION_THREE_HEARTS) { if ((affectionScore == AFFECTION_FIVE_HEARTS && rand < 20) || (affectionScore == AFFECTION_FOUR_HEARTS && rand < 15) || (affectionScore == AFFECTION_THREE_HEARTS && rand < 10)) - gSpecialStatuses[battlerDef].affectionEndured = TRUE; + { + enduredHit = TRUE; + gBattleStruct->moveResultFlags[battlerDef] |= MOVE_RESULT_FOE_ENDURED_AFFECTION; + } } - if (moveEffect != EFFECT_FALSE_SWIPE - && !gProtectStructs[battlerDef].endured - && !gSpecialStatuses[battlerDef].focusBanded - && !gSpecialStatuses[battlerDef].focusSashed - && (B_AFFECTION_MECHANICS == FALSE || !gSpecialStatuses[battlerDef].affectionEndured) - && !gSpecialStatuses[battlerDef].sturdied) - continue; - // Handle reducing the dmg to 1 hp. - gBattleStruct->moveDamage[battlerDef] = gBattleMons[battlerDef].hp - 1; - gSpecialStatuses[battlerDef].enduredDamage = TRUE; - - if (gProtectStructs[battlerDef].endured) + if (enduredHit) { - gBattleStruct->moveResultFlags[battlerDef] |= MOVE_RESULT_FOE_ENDURED; - } - else if (gSpecialStatuses[battlerDef].focusBanded || gSpecialStatuses[battlerDef].focusSashed) - { - gBattleStruct->moveResultFlags[battlerDef] |= MOVE_RESULT_FOE_HUNG_ON; - gLastUsedItem = gBattleMons[battlerDef].item; - gSpecialStatuses[battlerDef].focusBanded = FALSE; - gSpecialStatuses[battlerDef].focusSashed = FALSE; - } - else if (gSpecialStatuses[battlerDef].sturdied) - { - gBattleStruct->moveResultFlags[battlerDef] |= MOVE_RESULT_STURDIED; - gLastUsedAbility = ABILITY_STURDY; - } - else if (B_AFFECTION_MECHANICS == TRUE && gSpecialStatuses[battlerDef].affectionEndured) - { - gBattleStruct->moveResultFlags[battlerDef] |= MOVE_RESULT_FOE_ENDURED_AFFECTION; + gBattleStruct->moveDamage[battlerDef] = gBattleMons[battlerDef].hp - 1; + gSpecialStatuses[battlerDef].enduredDamage = TRUE; } } if (calcSpreadMoveDamage) gBattleStruct->calculatedDamageDone = TRUE; + gBattlescriptCurrInstr = cmd->nextInstr; if (gSpecialStatuses[gBattlerAttacker].gemBoost @@ -2222,7 +2301,6 @@ static void Cmd_multihitresultmessage(void) if (gBattleStruct->moveResultFlags[gBattlerTarget] & MOVE_RESULT_STURDIED) { gBattleStruct->moveResultFlags[gBattlerTarget] &= ~(MOVE_RESULT_STURDIED | MOVE_RESULT_FOE_HUNG_ON); - gSpecialStatuses[gBattlerTarget].sturdied = FALSE; // Delete this line to make Sturdy last for the duration of the whole move turn. BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_SturdiedMsg; return; @@ -2232,8 +2310,6 @@ static void Cmd_multihitresultmessage(void) gLastUsedItem = gBattleMons[gBattlerTarget].item; gPotentialItemEffectBattler = gBattlerTarget; gBattleStruct->moveResultFlags[gBattlerTarget] &= ~(MOVE_RESULT_STURDIED | MOVE_RESULT_FOE_HUNG_ON); - gSpecialStatuses[gBattlerTarget].focusBanded = FALSE; // Delete this line to make Focus Band last for the duration of the whole move turn. - gSpecialStatuses[gBattlerTarget].focusSashed = FALSE; // Delete this line to make Focus Sash last for the duration of the whole move turn. BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_HangedOnMsg; return; @@ -2331,7 +2407,7 @@ static inline bool32 TryActivateWeakenessBerry(u32 battlerDef) { gBattleScripting.battler = battlerDef; gLastUsedItem = gBattleMons[battlerDef].item; - gBattleStruct->ateBerry[battlerDef & BIT_SIDE] |= 1u << gBattlerPartyIndexes[battlerDef]; + gBattleStruct->partyState[GetBattlerSide(battlerDef)][gBattlerPartyIndexes[battlerDef]].ateBerry = TRUE; BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_BerryReduceDmg; return TRUE; @@ -2404,7 +2480,7 @@ static void Cmd_attackanimation(void) && gCurrentMove != MOVE_SUBSTITUTE && gCurrentMove != MOVE_ALLY_SWITCH // In a wild double battle gotta use the teleport animation if two wild pokemon are alive. - && !(GetMoveEffect(gCurrentMove) == EFFECT_TELEPORT && WILD_DOUBLE_BATTLE && GetBattlerSide(gBattlerAttacker) == B_SIDE_OPPONENT && IsBattlerAlive(BATTLE_PARTNER(gBattlerAttacker)))) + && !(GetMoveEffect(gCurrentMove) == EFFECT_TELEPORT && WILD_DOUBLE_BATTLE && !IsOnPlayerSide(gBattlerAttacker) && IsBattlerAlive(BATTLE_PARTNER(gBattlerAttacker)))) { BattleScriptPush(cmd->nextInstr); gBattlescriptCurrInstr = BattleScript_Pausex20; @@ -2501,7 +2577,7 @@ static void DoublesHPBarReduction(void) BtlController_EmitHealthBarUpdate(battlerDef, B_COMM_TO_CONTROLLER, healthValue); MarkBattlerForControllerExec(battlerDef); - if (GetBattlerSide(battlerDef) == B_SIDE_PLAYER && currDmg > 0) + if (IsOnPlayerSide(battlerDef) && currDmg > 0) gBattleResults.playerMonWasDamaged = TRUE; } @@ -2537,7 +2613,7 @@ static void Cmd_healthbarupdate(void) BtlController_EmitHealthBarUpdate(battler, B_COMM_TO_CONTROLLER, healthValue); MarkBattlerForControllerExec(battler); - if (GetBattlerSide(battler) == B_SIDE_PLAYER && gBattleStruct->moveDamage[battler] > 0) + if (IsOnPlayerSide(battler) && gBattleStruct->moveDamage[battler] > 0) gBattleResults.playerMonWasDamaged = TRUE; } } @@ -2635,7 +2711,7 @@ static void Cmd_datahpupdate(void) gBattleMons[battler].hp = 0; } - u32 effect = GetMoveEffect(gCurrentMove); + enum BattleMoveEffects effect = GetMoveEffect(gCurrentMove); // Note: While physicalDmg/specialDmg below are only distinguished between for Counter/Mirror Coat, they are // used in combination as general damage trackers for other purposes. specialDmg is additionally used @@ -2645,15 +2721,9 @@ static void Cmd_datahpupdate(void) gProtectStructs[battler].physicalDmg = gBattleStruct->moveDamage[battler]; gSpecialStatuses[battler].physicalDmg = gBattleStruct->moveDamage[battler]; if (cmd->battler == BS_TARGET) - { gProtectStructs[battler].physicalBattlerId = gBattlerAttacker; - gSpecialStatuses[battler].physicalBattlerId = gBattlerAttacker; - } else - { gProtectStructs[battler].physicalBattlerId = gBattlerTarget; - gSpecialStatuses[battler].physicalBattlerId = gBattlerTarget; - } } else if (!IsBattleMovePhysical(gCurrentMove) && !(gHitMarker & HITMARKER_PASSIVE_DAMAGE) && effect != EFFECT_PAIN_SPLIT) { @@ -2661,15 +2731,9 @@ static void Cmd_datahpupdate(void) gProtectStructs[battler].specialDmg = gBattleStruct->moveDamage[battler]; gSpecialStatuses[battler].specialDmg = gBattleStruct->moveDamage[battler]; if (cmd->battler == BS_TARGET) - { gProtectStructs[battler].specialBattlerId = gBattlerAttacker; - gSpecialStatuses[battler].specialBattlerId = gBattlerAttacker; - } else - { gProtectStructs[battler].specialBattlerId = gBattlerTarget; - gSpecialStatuses[battler].specialBattlerId = gBattlerTarget; - } } } gHitMarker &= ~HITMARKER_PASSIVE_DAMAGE; @@ -2791,7 +2855,7 @@ static void Cmd_resultmessage(void) { CMD_ARGS(); - u32 stringId = 0; + enum StringID stringId = 0; u16 *moveResultFlags = &gBattleStruct->moveResultFlags[gBattlerTarget]; if (gBattleControllerExecFlags) @@ -2914,7 +2978,6 @@ static void Cmd_resultmessage(void) else if (*moveResultFlags & MOVE_RESULT_STURDIED) { *moveResultFlags &= ~(MOVE_RESULT_STURDIED | MOVE_RESULT_FOE_ENDURED | MOVE_RESULT_FOE_HUNG_ON); - gSpecialStatuses[gBattlerTarget].sturdied = FALSE; BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_SturdiedMsg; return; @@ -2941,7 +3004,6 @@ static void Cmd_resultmessage(void) } else if (B_AFFECTION_MECHANICS == TRUE && (*moveResultFlags & MOVE_RESULT_FOE_ENDURED_AFFECTION)) { - gSpecialStatuses[gBattlerTarget].affectionEndured = FALSE; *moveResultFlags &= ~MOVE_RESULT_FOE_ENDURED_AFFECTION; BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_AffectionBasedEndurance; @@ -3103,7 +3165,6 @@ static inline bool32 TrySetReflect(u32 battler) gSideTimers[side].reflectTimer = gBattleTurnCounter + 8; else gSideTimers[side].reflectTimer = gBattleTurnCounter + 5; - gSideTimers[side].reflectBattlerId = battler; if (IsDoubleBattle() && CountAliveMonsInBattle(BATTLE_ALIVE_SIDE, battler) == 2) gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_SET_REFLECT_DOUBLE; @@ -3125,7 +3186,6 @@ static inline bool32 TrySetLightScreen(u32 battler) gSideTimers[side].lightscreenTimer = gBattleTurnCounter + 8; else gSideTimers[side].lightscreenTimer = gBattleTurnCounter + 5; - gSideTimers[side].lightscreenBattlerId = battler; if (IsDoubleBattle() && CountAliveMonsInBattle(BATTLE_ALIVE_SIDE, battler) == 2) gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_SET_LIGHTSCREEN_DOUBLE; @@ -3137,6 +3197,64 @@ static inline bool32 TrySetLightScreen(u32 battler) return FALSE; } +void SetNonVolatileStatusCondition(u32 effectBattler, enum MoveEffects effect) +{ + if (effect == MOVE_EFFECT_SLEEP + || effect == MOVE_EFFECT_FREEZE) + { + const u8 *cancelMultiTurnMovesResult = NULL; + cancelMultiTurnMovesResult = CancelMultiTurnMoves(effectBattler, SKY_DROP_STATUS_FREEZE_SLEEP); + if (cancelMultiTurnMovesResult) + gBattlescriptCurrInstr = cancelMultiTurnMovesResult; + } + + BattleScriptPush(gBattlescriptCurrInstr + 1); + + if (sStatusFlagsForMoveEffects[effect] == STATUS1_SLEEP) + { + if (B_SLEEP_TURNS >= GEN_5) + gBattleMons[effectBattler].status1 |= STATUS1_SLEEP_TURN(1 + RandomUniform(RNG_SLEEP_TURNS, 1, 3)); + else + gBattleMons[effectBattler].status1 |= STATUS1_SLEEP_TURN(1 + RandomUniform(RNG_SLEEP_TURNS, 2, 5)); + + TryActivateSleepClause(effectBattler, gBattlerPartyIndexes[effectBattler]); + } + else + { + gBattleMons[effectBattler].status1 |= sStatusFlagsForMoveEffects[effect]; + } + + gBattlescriptCurrInstr = sMoveEffectBS_Ptrs[effect]; + + BtlController_EmitSetMonData(effectBattler, B_COMM_TO_CONTROLLER, REQUEST_STATUS_BATTLE, 0, sizeof(gBattleMons[effectBattler].status1), &gBattleMons[effectBattler].status1); + MarkBattlerForControllerExec(effectBattler); + + if (gHitMarker & HITMARKER_STATUS_ABILITY_EFFECT) + { + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_STATUSED_BY_ABILITY; + gHitMarker &= ~HITMARKER_STATUS_ABILITY_EFFECT; + } + else + { + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_STATUSED; + } + + gBattleScripting.moveEffect = MOVE_EFFECT_NONE; + + // for synchronize + if (effect == MOVE_EFFECT_POISON + || effect == MOVE_EFFECT_TOXIC + || effect == MOVE_EFFECT_PARALYSIS + || effect == MOVE_EFFECT_BURN) + { + gBattleStruct->synchronizeMoveEffect = effect; + gHitMarker |= HITMARKER_SYNCHRONIZE_EFFECT; + } + + if (effect == MOVE_EFFECT_POISON || effect == MOVE_EFFECT_TOXIC) + gBattleStruct->poisonPuppeteerConfusion = TRUE; +} + #define INCREMENT_RESET_RETURN \ { \ gBattlescriptCurrInstr++; \ @@ -3144,12 +3262,6 @@ static inline bool32 TrySetLightScreen(u32 battler) return; \ } -#define RESET_RETURN \ -{ \ - gBattleScripting.moveEffect = 0; \ - return; \ -} - void SetMoveEffect(bool32 primary, bool32 certain) { s32 i, affectsUser = 0; @@ -3157,7 +3269,7 @@ void SetMoveEffect(bool32 primary, bool32 certain) bool32 mirrorArmorReflected = (GetBattlerAbility(gBattlerTarget) == ABILITY_MIRROR_ARMOR); u32 flags = 0; u32 battlerAbility; - bool8 activateAfterFaint = FALSE; + bool32 activateAfterFaint = FALSE; // NULL move effect if (gBattleScripting.moveEffect == 0) @@ -3173,18 +3285,11 @@ void SetMoveEffect(bool32 primary, bool32 certain) switch (gBattleScripting.moveEffect) // Set move effects which happen later on { - case MOVE_EFFECT_KNOCK_OFF: - case MOVE_EFFECT_SMACK_DOWN: - case MOVE_EFFECT_REMOVE_STATUS: - case MOVE_EFFECT_STOCKPILE_WORE_OFF: - gBattleStruct->moveEffect2 = gBattleScripting.moveEffect; - gBattlescriptCurrInstr++; - return; case MOVE_EFFECT_STEALTH_ROCK: case MOVE_EFFECT_SPIKES: case MOVE_EFFECT_PAYDAY: - case MOVE_EFFECT_STEAL_ITEM: case MOVE_EFFECT_BUG_BITE: + case MOVE_EFFECT_STEAL_ITEM: activateAfterFaint = TRUE; break; } @@ -3231,287 +3336,24 @@ void SetMoveEffect(bool32 primary, bool32 certain) if (gBattleScripting.moveEffect <= PRIMARY_STATUS_MOVE_EFFECT) // status change { - const u8 *cancelMultiTurnMovesResult = NULL; - switch (sStatusFlagsForMoveEffects[gBattleScripting.moveEffect]) + if (!(gHitMarker & HITMARKER_STATUS_ABILITY_EFFECT)) // Calcs already done { - case STATUS1_SLEEP: - // check active uproar - if (battlerAbility != ABILITY_SOUNDPROOF || B_UPROAR_IGNORE_SOUNDPROOF >= GEN_5) - { - for (i = 0; i < gBattlersCount && !(gBattleMons[i].status2 & STATUS2_UPROAR); i++) - ; - } - else - { - i = gBattlersCount; - } - - if (i != gBattlersCount) - break; - if (!CanBeSlept(gEffectBattler, GetBattlerAbility(gEffectBattler), BLOCKED_BY_SLEEP_CLAUSE) && !gBattleStruct->battlerState[gEffectBattler].sleepClauseEffectExempt) - break; - - cancelMultiTurnMovesResult = CancelMultiTurnMoves(gEffectBattler); - if (cancelMultiTurnMovesResult) - gBattlescriptCurrInstr = cancelMultiTurnMovesResult; - statusChanged = TRUE; - break; - case STATUS1_POISON: - if ((battlerAbility == ABILITY_IMMUNITY || battlerAbility == ABILITY_PASTEL_VEIL) - && (primary == TRUE || certain == TRUE)) - { - gLastUsedAbility = battlerAbility; - RecordAbilityBattle(gEffectBattler, battlerAbility); - - BattleScriptPush(gBattlescriptCurrInstr + 1); - gBattlescriptCurrInstr = BattleScript_PSNPrevention; - - if (gHitMarker & HITMARKER_STATUS_ABILITY_EFFECT) - { - gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_ABILITY_PREVENTS_ABILITY_STATUS; - gHitMarker &= ~HITMARKER_STATUS_ABILITY_EFFECT; - } - else - { - gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_ABILITY_PREVENTS_MOVE_STATUS; - } - RESET_RETURN - } - if (!CanPoisonType(gBattleScripting.battler, gEffectBattler) - && (gHitMarker & HITMARKER_STATUS_ABILITY_EFFECT) - && (primary == TRUE || certain == TRUE)) - { - BattleScriptPush(gBattlescriptCurrInstr + 1); - gBattlescriptCurrInstr = BattleScript_PSNPrevention; - - gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_STATUS_HAD_NO_EFFECT; - RESET_RETURN - } - if (!CanBePoisoned(gBattleScripting.battler, gEffectBattler, GetBattlerAbility(gEffectBattler))) - break; - - statusChanged = TRUE; - break; - case STATUS1_BURN: - if ((battlerAbility == ABILITY_WATER_VEIL || battlerAbility == ABILITY_WATER_BUBBLE) - && (primary == TRUE || certain == TRUE)) - { - gLastUsedAbility = battlerAbility; - RecordAbilityBattle(gEffectBattler, battlerAbility); - - BattleScriptPush(gBattlescriptCurrInstr + 1); - gBattlescriptCurrInstr = BattleScript_BRNPrevention; - if (gHitMarker & HITMARKER_STATUS_ABILITY_EFFECT) - { - gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_ABILITY_PREVENTS_ABILITY_STATUS; - gHitMarker &= ~HITMARKER_STATUS_ABILITY_EFFECT; - } - else - { - gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_ABILITY_PREVENTS_MOVE_STATUS; - } - RESET_RETURN - } - if (IS_BATTLER_OF_TYPE(gEffectBattler, TYPE_FIRE) - && (gHitMarker & HITMARKER_STATUS_ABILITY_EFFECT) - && (primary == TRUE || certain == TRUE)) - { - BattleScriptPush(gBattlescriptCurrInstr + 1); - gBattlescriptCurrInstr = BattleScript_BRNPrevention; - - gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_STATUS_HAD_NO_EFFECT; - RESET_RETURN - } - - if (B_STATUS_TYPE_IMMUNITY == GEN_1) - { - u32 moveType = GetBattleMoveType(gCurrentMove); - if (primary == FALSE && certain == FALSE && IS_BATTLER_OF_TYPE(gEffectBattler, moveType)) - break; - } - - if (!CanBeBurned(gEffectBattler, GetBattlerAbility(gEffectBattler))) - break; - - statusChanged = TRUE; - break; - case STATUS1_FREEZE: - if (B_STATUS_TYPE_IMMUNITY == GEN_1) - { - u32 moveType = GetBattleMoveType(gCurrentMove); - if (primary == FALSE && certain == FALSE && IS_BATTLER_OF_TYPE(gEffectBattler, moveType)) - break; - } - if (!CanBeFrozen(gEffectBattler)) - break; - - cancelMultiTurnMovesResult = CancelMultiTurnMoves(gEffectBattler); - if (cancelMultiTurnMovesResult) - gBattlescriptCurrInstr = cancelMultiTurnMovesResult; - statusChanged = TRUE; - break; - case STATUS1_PARALYSIS: - if (battlerAbility == ABILITY_LIMBER) - { - if (primary == TRUE || certain == TRUE) - { - gLastUsedAbility = ABILITY_LIMBER; - RecordAbilityBattle(gEffectBattler, ABILITY_LIMBER); - - BattleScriptPush(gBattlescriptCurrInstr + 1); - gBattlescriptCurrInstr = BattleScript_PRLZPrevention; - - if (gHitMarker & HITMARKER_STATUS_ABILITY_EFFECT) - { - gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_ABILITY_PREVENTS_ABILITY_STATUS; - gHitMarker &= ~HITMARKER_STATUS_ABILITY_EFFECT; - } - else - { - gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_ABILITY_PREVENTS_MOVE_STATUS; - } - RESET_RETURN - } - else - { - break; - } - } - if (B_STATUS_TYPE_IMMUNITY == GEN_1) - { - u32 moveType = GetBattleMoveType(gCurrentMove); - if (primary == FALSE && certain == FALSE && IS_BATTLER_OF_TYPE(gEffectBattler, moveType)) - break; - } - if (!CanParalyzeType(gBattleScripting.battler, gEffectBattler) - && (gHitMarker & HITMARKER_STATUS_ABILITY_EFFECT) - && (primary == TRUE || certain == TRUE)) - { - BattleScriptPush(gBattlescriptCurrInstr + 1); - gBattlescriptCurrInstr = BattleScript_PRLZPrevention; - - gBattleCommunication[MULTISTRING_CHOOSER] = 2; - RESET_RETURN - } - if (!CanParalyzeType(gBattleScripting.battler, gEffectBattler)) - break; - if (!CanBeParalyzed(gEffectBattler, GetBattlerAbility(gEffectBattler))) - break; - - statusChanged = TRUE; - break; - case STATUS1_TOXIC_POISON: - if ((battlerAbility == ABILITY_IMMUNITY || battlerAbility == ABILITY_PASTEL_VEIL) - && (primary == TRUE || certain == TRUE)) - { - gLastUsedAbility = battlerAbility; - RecordAbilityBattle(gEffectBattler, battlerAbility); - - BattleScriptPush(gBattlescriptCurrInstr + 1); - gBattlescriptCurrInstr = BattleScript_PSNPrevention; - - if (gHitMarker & HITMARKER_STATUS_ABILITY_EFFECT) - { - gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_ABILITY_PREVENTS_ABILITY_STATUS; - gHitMarker &= ~HITMARKER_STATUS_ABILITY_EFFECT; - } - else - { - gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_ABILITY_PREVENTS_MOVE_STATUS; - } - RESET_RETURN - } - if (!CanPoisonType(gBattleScripting.battler, gEffectBattler) - && (gHitMarker & HITMARKER_STATUS_ABILITY_EFFECT) - && (primary == TRUE || certain == TRUE)) - { - BattleScriptPush(gBattlescriptCurrInstr + 1); - gBattlescriptCurrInstr = BattleScript_PSNPrevention; - - gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_STATUS_HAD_NO_EFFECT; - RESET_RETURN - } - if (gBattleMons[gEffectBattler].status1) - break; - if (CanBePoisoned(gBattleScripting.battler, gEffectBattler, GetBattlerAbility(gEffectBattler))) - { - // It's redundant, because at this point we know the status1 value is 0. - gBattleMons[gEffectBattler].status1 &= ~STATUS1_TOXIC_POISON; - gBattleMons[gEffectBattler].status1 &= ~STATUS1_POISON; - statusChanged = TRUE; - break; - } - else - { - gBattleStruct->moveResultFlags[gBattlerTarget] |= MOVE_RESULT_DOESNT_AFFECT_FOE; - } - break; - case STATUS1_FROSTBITE: - if (B_STATUS_TYPE_IMMUNITY == GEN_1) - { - u32 moveType = GetBattleMoveType(gCurrentMove); - if (primary == FALSE && certain == FALSE && IS_BATTLER_OF_TYPE(gEffectBattler, moveType)) - break; - } - if (!CanGetFrostbite(gEffectBattler)) - break; - - statusChanged = TRUE; - break; + statusChanged = CanSetNonVolatileStatus(gBattlerAttacker, + gEffectBattler, + GetBattlerAbility(gBattlerAttacker), + battlerAbility, + gBattleScripting.moveEffect, + STATUS_CHECK_TRIGGER); } - if (statusChanged == TRUE) + + if (statusChanged || gHitMarker & HITMARKER_STATUS_ABILITY_EFFECT) { - BattleScriptPush(gBattlescriptCurrInstr + 1); - - if (sStatusFlagsForMoveEffects[gBattleScripting.moveEffect] == STATUS1_SLEEP) - { - if (B_SLEEP_TURNS >= GEN_5) - gBattleMons[gEffectBattler].status1 |= STATUS1_SLEEP_TURN(1 + RandomUniform(RNG_SLEEP_TURNS, 1, 3)); - else - gBattleMons[gEffectBattler].status1 |= STATUS1_SLEEP_TURN(1 + RandomUniform(RNG_SLEEP_TURNS, 2, 5)); - - TryActivateSleepClause(gEffectBattler, gBattlerPartyIndexes[gEffectBattler]); - } - else - { - gBattleMons[gEffectBattler].status1 |= sStatusFlagsForMoveEffects[gBattleScripting.moveEffect]; - } - - gBattlescriptCurrInstr = sMoveEffectBS_Ptrs[gBattleScripting.moveEffect]; - - BtlController_EmitSetMonData(gEffectBattler, B_COMM_TO_CONTROLLER, REQUEST_STATUS_BATTLE, 0, sizeof(gBattleMons[gEffectBattler].status1), &gBattleMons[gEffectBattler].status1); - MarkBattlerForControllerExec(gEffectBattler); - - if (gHitMarker & HITMARKER_STATUS_ABILITY_EFFECT) - { - gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_STATUSED_BY_ABILITY; - gHitMarker &= ~HITMARKER_STATUS_ABILITY_EFFECT; - } - else - { - gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_STATUSED; - } - - // for synchronize - if (gBattleScripting.moveEffect == MOVE_EFFECT_POISON - || gBattleScripting.moveEffect == MOVE_EFFECT_TOXIC - || gBattleScripting.moveEffect == MOVE_EFFECT_PARALYSIS - || gBattleScripting.moveEffect == MOVE_EFFECT_BURN) - { - gBattleStruct->synchronizeMoveEffect = gBattleScripting.moveEffect; - gHitMarker |= HITMARKER_SYNCHRONISE_EFFECT; - } - - if (gBattleScripting.moveEffect == MOVE_EFFECT_POISON || gBattleScripting.moveEffect == MOVE_EFFECT_TOXIC) - gBattleStruct->poisonPuppeteerConfusion = TRUE; - - return; + SetNonVolatileStatusCondition(gEffectBattler, gBattleScripting.moveEffect); } - else if (statusChanged == FALSE) + else { gBattleScripting.moveEffect = 0; gBattlescriptCurrInstr++; - return; } return; } @@ -3536,7 +3378,7 @@ void SetMoveEffect(bool32 primary, bool32 certain) // If the confusion is activating due to being released from Sky Drop, go to "confused due to fatigue" script. // Otherwise, do normal confusion script. - if (gCurrentMove == MOVE_SKY_DROP) + if (GetMoveEffect(gCurrentMove) == EFFECT_SKY_DROP) { gBattleMons[gEffectBattler].status2 &= ~(STATUS2_LOCK_CONFUSE); gBattlerAttacker = gEffectBattler; @@ -3594,7 +3436,7 @@ void SetMoveEffect(bool32 primary, bool32 certain) break; case MOVE_EFFECT_PAYDAY: // Don't scatter coins on the second hit of Parental Bond - if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER && gSpecialStatuses[gBattlerAttacker].parentalBondState!= PARENTAL_BOND_2ND_HIT) + if (IsOnPlayerSide(gBattlerAttacker) && gSpecialStatuses[gBattlerAttacker].parentalBondState!= PARENTAL_BOND_2ND_HIT) { u16 payday = gPaydayMoney; u16 moveTarget = GetBattlerMoveTargetType(gBattlerAttacker, gCurrentMove); @@ -3618,7 +3460,7 @@ void SetMoveEffect(bool32 primary, bool32 certain) } break; case MOVE_EFFECT_HAPPY_HOUR: - if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER && !gBattleStruct->moneyMultiplierMove) + if (IsOnPlayerSide(gBattlerAttacker) && !gBattleStruct->moneyMultiplierMove) { gBattleStruct->moneyMultiplier *= 2; gBattleStruct->moneyMultiplierMove = 1; @@ -3781,6 +3623,9 @@ void SetMoveEffect(bool32 primary, bool32 certain) } break; case MOVE_EFFECT_RECHARGE: + if (B_SKIP_RECHARGE == GEN_1 && !IsBattlerAlive(gBattlerTarget)) // Skip recharge if gen 1 and foe is KO'd + break; + gBattleMons[gEffectBattler].status2 |= STATUS2_RECHARGE; gDisableStructs[gEffectBattler].rechargeTimer = 2; gLockedMoves[gEffectBattler] = gCurrentMove; @@ -3791,34 +3636,32 @@ void SetMoveEffect(bool32 primary, bool32 certain) gBattlescriptCurrInstr++; break; case MOVE_EFFECT_STEAL_ITEM: + if (!CanStealItem(gBattlerAttacker, gBattlerTarget, gBattleMons[gBattlerTarget].item) + || gBattleMons[gBattlerAttacker].item != ITEM_NONE + || gBattleMons[gBattlerTarget].item == ITEM_NONE) { - if (!CanStealItem(gBattlerAttacker, gBattlerTarget, gBattleMons[gBattlerTarget].item) - || gBattleMons[gBattlerAttacker].item != ITEM_NONE - || gBattleMons[gBattlerTarget].item == ITEM_NONE) - { - gBattlescriptCurrInstr++; - } - else if (GetBattlerAbility(gBattlerTarget) == ABILITY_STICKY_HOLD) - { - BattleScriptPush(gBattlescriptCurrInstr + 1); - gBattlescriptCurrInstr = BattleScript_NoItemSteal; + gBattlescriptCurrInstr++; + } + else if (GetBattlerAbility(gBattlerTarget) == ABILITY_STICKY_HOLD) + { + BattleScriptPush(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_NoItemSteal; - gLastUsedAbility = gBattleMons[gBattlerTarget].ability; - RecordAbilityBattle(gBattlerTarget, gLastUsedAbility); - } - else - { - StealTargetItem(gBattlerAttacker, gBattlerTarget); // Attacker steals target item + gLastUsedAbility = gBattleMons[gBattlerTarget].ability; + RecordAbilityBattle(gBattlerTarget, gLastUsedAbility); + } + else + { + StealTargetItem(gBattlerAttacker, gBattlerTarget); // Attacker steals target item - if (!(B_STEAL_WILD_ITEMS >= GEN_9 - && !(gBattleTypeFlags & (BATTLE_TYPE_TRAINER | BATTLE_TYPE_PALACE)))) - { - gBattleMons[gBattlerAttacker].item = ITEM_NONE; // Item assigned later on with thief (see MOVEEND_CHANGED_ITEMS) - gBattleStruct->changedItems[gBattlerAttacker] = gLastUsedItem; // Stolen item to be assigned later - } - BattleScriptPush(gBattlescriptCurrInstr + 1); - gBattlescriptCurrInstr = BattleScript_ItemSteal; + if (!(B_STEAL_WILD_ITEMS >= GEN_9 + && !(gBattleTypeFlags & (BATTLE_TYPE_TRAINER | BATTLE_TYPE_PALACE)))) + { + gBattleMons[gBattlerAttacker].item = ITEM_NONE; // Item assigned later on with thief (see MOVEEND_CHANGED_ITEMS) + gBattleStruct->changedItems[gBattlerAttacker] = gLastUsedItem; // Stolen item to be assigned later } + BattleScriptPush(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_ItemSteal; } break; case MOVE_EFFECT_PREVENT_ESCAPE: @@ -3902,19 +3745,20 @@ void SetMoveEffect(bool32 primary, bool32 certain) } break; case MOVE_EFFECT_FEINT: - if (IS_BATTLER_PROTECTED(gBattlerTarget) || IsBattlerSideProtected(gBattlerTarget)) + i = FALSE; // Remove Protect if any + if (gProtectStructs[gBattlerTarget].protected != PROTECT_NONE + && gProtectStructs[gBattlerTarget].protected != PROTECT_MAX_GUARD) + { + gProtectStructs[gBattlerTarget].protected = PROTECT_NONE; + i = TRUE; + } + if (GetProtectType(gProtectStructs[BATTLE_PARTNER(gBattlerTarget)].protected) == PROTECT_TYPE_SIDE) + { + gProtectStructs[BATTLE_PARTNER(gBattlerTarget)].protected = PROTECT_NONE; + i = TRUE; + } + if (i) { - gProtectStructs[gBattlerTarget].protected = FALSE; - gSideStatuses[GetBattlerSide(gBattlerTarget)] &= ~SIDE_STATUS_WIDE_GUARD; - gSideStatuses[GetBattlerSide(gBattlerTarget)] &= ~SIDE_STATUS_QUICK_GUARD; - gSideStatuses[GetBattlerSide(gBattlerTarget)] &= ~SIDE_STATUS_CRAFTY_SHIELD; - gSideStatuses[GetBattlerSide(gBattlerTarget)] &= ~SIDE_STATUS_MAT_BLOCK; - gProtectStructs[gBattlerTarget].spikyShielded = FALSE; - gProtectStructs[gBattlerTarget].kingsShielded = FALSE; - gProtectStructs[gBattlerTarget].banefulBunkered = FALSE; - gProtectStructs[gBattlerTarget].obstructed = FALSE; - gProtectStructs[gBattlerTarget].silkTrapped = FALSE; - gProtectStructs[gBattlerTarget].burningBulwarked = FALSE; BattleScriptPush(gBattlescriptCurrInstr + 1); if (gCurrentMove == MOVE_HYPERSPACE_FURY) gBattlescriptCurrInstr = BattleScript_HyperspaceFuryRemoveProtect; @@ -3938,7 +3782,7 @@ void SetMoveEffect(bool32 primary, bool32 certain) } break; case MOVE_EFFECT_THROAT_CHOP: - gDisableStructs[gEffectBattler].throatChopTimer = 2; + gDisableStructs[gEffectBattler].throatChopTimer = gBattleTurnCounter + 2; gBattlescriptCurrInstr++; break; case MOVE_EFFECT_INCINERATE: @@ -4040,11 +3884,11 @@ void SetMoveEffect(bool32 primary, bool32 certain) case MOVE_EFFECT_SYRUP_BOMB: if (!(gStatuses4[gEffectBattler] & STATUS4_SYRUP_BOMB)) { - struct Pokemon *party = GetBattlerParty(gBattlerAttacker); + struct Pokemon *mon = GetBattlerMon(gBattlerAttacker); gStatuses4[gEffectBattler] |= STATUS4_SYRUP_BOMB; gDisableStructs[gEffectBattler].syrupBombTimer = 3; - gDisableStructs[gEffectBattler].syrupBombIsShiny = IsMonShiny(&party[gBattlerPartyIndexes[gBattlerAttacker]]); + gDisableStructs[gEffectBattler].syrupBombIsShiny = IsMonShiny(mon); gBattleStruct->stickySyrupdBy[gEffectBattler] = gBattlerAttacker; BattleScriptPush(gBattlescriptCurrInstr + 1); gBattlescriptCurrInstr = BattleScript_SyrupBombActivates; @@ -4145,7 +3989,7 @@ void SetMoveEffect(bool32 primary, bool32 certain) else if (!(gStatuses3[gEffectBattler] & STATUS3_HEAL_BLOCK)) { gStatuses3[gEffectBattler] |= STATUS3_HEAL_BLOCK; - gDisableStructs[gEffectBattler].healBlockTimer = 2; + gDisableStructs[gEffectBattler].healBlockTimer = gBattleTurnCounter + 2; BattleScriptPush(gBattlescriptCurrInstr + 1); gBattlescriptCurrInstr = BattleScript_EffectPsychicNoise; } @@ -4270,8 +4114,8 @@ void SetMoveEffect(bool32 primary, bool32 certain) MarkBattlerForControllerExec(gBattlerTarget); } - if (gBattleMons[gBattlerTarget].pp[i] == 0 && gBattleStruct->skyDropTargets[gBattlerTarget] == 0xFF) - CancelMultiTurnMoves(gBattlerTarget); + if (gBattleMons[gBattlerTarget].pp[i] == 0 && gBattleStruct->skyDropTargets[gBattlerTarget] == SKY_DROP_NO_TARGET) + CancelMultiTurnMoves(gBattlerTarget, SKY_DROP_IGNORE); BattleScriptPush(gBattlescriptCurrInstr + 1); gBattlescriptCurrInstr = BattleScript_MoveEffectEerieSpell; @@ -4374,8 +4218,16 @@ void SetMoveEffect(bool32 primary, bool32 certain) msg = B_MSG_STARTED_SANDSTORM; break; case MOVE_EFFECT_HAIL: - weather = BATTLE_WEATHER_HAIL; - msg = B_MSG_STARTED_HAIL; + if (B_PREFERRED_ICE_WEATHER == B_ICE_WEATHER_SNOW) + { + weather = BATTLE_WEATHER_SNOW; + msg = B_MSG_STARTED_SNOW; + } + else + { + weather = BATTLE_WEATHER_HAIL; + msg = B_MSG_STARTED_HAIL; + } break; } if (TryChangeBattleWeather(gBattlerAttacker, weather, FALSE)) @@ -4468,7 +4320,6 @@ void SetMoveEffect(bool32 primary, bool32 certain) gSideTimers[GetBattlerSide(gBattlerAttacker)].auroraVeilTimer = gBattleTurnCounter + 8; else gSideTimers[GetBattlerSide(gBattlerAttacker)].auroraVeilTimer = gBattleTurnCounter + 5; - gSideTimers[GetBattlerSide(gBattlerAttacker)].auroraVeilBattlerId = gBattlerAttacker; gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_SET_SAFEGUARD; BattleScriptPush(gBattlescriptCurrInstr + 1); gBattlescriptCurrInstr = BattleScript_EffectAuroraVeilSuccess; @@ -4490,7 +4341,7 @@ void SetMoveEffect(bool32 primary, bool32 certain) u8 battler; for (battler = 0; battler < MAX_BATTLERS_COUNT; ++battler) { - if (GetBattlerSide(battler) != GetBattlerSide(gBattlerTarget)) + if (!IsBattlerAlly(battler, gBattlerTarget)) continue; if (!(gBattleMons[battler].status2 & STATUS2_WRAPPED)) { @@ -4512,7 +4363,7 @@ void SetMoveEffect(bool32 primary, bool32 certain) case MOVE_EFFECT_YAWN_FOE: { if (!(gStatuses3[gBattlerTarget] & STATUS3_YAWN) - && CanBeSlept(gBattlerTarget, GetBattlerAbility(gBattlerTarget), BLOCKED_BY_SLEEP_CLAUSE) + && CanBeSlept(gBattlerTarget, gBattlerTarget, GetBattlerAbility(gBattlerTarget), BLOCKED_BY_SLEEP_CLAUSE) && RandomPercentage(RNG_G_MAX_SNOOZE, 50)) { gStatuses3[gBattlerTarget] |= STATUS3_YAWN_TURN(2); @@ -4594,6 +4445,44 @@ void SetMoveEffect(bool32 primary, bool32 certain) } break; } + case MOVE_EFFECT_REMOVE_STATUS: + { + u32 argStatus = GetMoveEffectArg_Status(gCurrentMove); + if ((gBattleMons[gEffectBattler].status1 & argStatus) + && (NumAffectedSpreadMoveTargets() > 1 || !IsMoveEffectBlockedByTarget(GetBattlerAbility(gEffectBattler)))) + { + gBattleMons[gEffectBattler].status1 &= ~(argStatus); + BtlController_EmitSetMonData(gEffectBattler, 0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gEffectBattler].status1); + MarkBattlerForControllerExec(gEffectBattler); + BattleScriptPush(gBattlescriptCurrInstr + 1); + + switch (argStatus) + { + case STATUS1_PARALYSIS: + gBattlescriptCurrInstr = BattleScript_TargetPRLZHeal; + break; + case STATUS1_SLEEP: + TryDeactivateSleepClause(GetBattlerSide(gEffectBattler), gBattlerPartyIndexes[gBattlerTarget]); + gBattlescriptCurrInstr = BattleScript_TargetWokeUp; + break; + case STATUS1_BURN: + gBattlescriptCurrInstr = BattleScript_TargetBurnHeal; + break; + case STATUS1_FREEZE: + gBattlescriptCurrInstr = BattleScript_DefrostedViaFireMove; + break; + case STATUS1_FROSTBITE: + gBattlescriptCurrInstr = BattleScript_FrostbiteHealedViaFireMove; + break; + case STATUS1_POISON: + case STATUS1_TOXIC_POISON: + case STATUS1_PSN_ANY: + gBattlescriptCurrInstr = BattleScript_TargetPoisonHealed; + break; + } + } + break; + } } } } @@ -4755,7 +4644,7 @@ static void Cmd_tryfaintmon(void) gHitMarker |= HITMARKER_FAINTED(battler); BattleScriptPush(cmd->nextInstr); gBattlescriptCurrInstr = faintScript; - if (GetBattlerSide(battler) == B_SIDE_PLAYER) + if (IsOnPlayerSide(battler)) { gHitMarker |= HITMARKER_PLAYER_FAINTED; if (gBattleResults.playerFaintCounter < 255) @@ -4767,7 +4656,7 @@ static void Cmd_tryfaintmon(void) { if (gBattleResults.opponentFaintCounter < 255) gBattleResults.opponentFaintCounter++; - gBattleResults.lastOpponentSpecies = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battler]], MON_DATA_SPECIES, NULL); + gBattleResults.lastOpponentSpecies = GetMonData(GetBattlerMon(battler), MON_DATA_SPECIES, NULL); gSideTimers[B_SIDE_OPPONENT].retaliateTimer = 2; } if ((gHitMarker & HITMARKER_DESTINYBOND) && IsBattlerAlive(gBattlerAttacker) @@ -4780,7 +4669,7 @@ static void Cmd_tryfaintmon(void) } if ((gStatuses3[gBattlerTarget] & STATUS3_GRUDGE) && !(gHitMarker & HITMARKER_GRUDGE) - && GetBattlerSide(gBattlerAttacker) != GetBattlerSide(gBattlerTarget) + && !IsBattlerAlly(gBattlerAttacker, gBattlerTarget) && IsBattlerAlive(gBattlerAttacker) && gCurrentMove != MOVE_STRUGGLE) { @@ -5022,7 +4911,7 @@ static bool32 BattleTypeAllowsExp(void) static u32 GetMonHoldEffect(struct Pokemon *mon) { - u32 holdEffect; + enum ItemHoldEffect holdEffect; u32 item = GetMonData(mon, MON_DATA_HELD_ITEM); if (item == ITEM_ENIGMA_BERRY_E_READER) @@ -5041,16 +4930,17 @@ static void Cmd_getexp(void) { CMD_ARGS(u8 battler); - u32 holdEffect; + enum ItemHoldEffect holdEffect; s32 i; // also used as stringId u8 *expMonId = &gBattleStruct->expGetterMonId; + u32 currLvl; gBattlerFainted = GetBattlerForBattleScript(cmd->battler); switch (gBattleScripting.getexpState) { case 0: // check if should receive exp at all - if (GetBattlerSide(gBattlerFainted) != B_SIDE_OPPONENT + if (IsOnPlayerSide(gBattlerFainted) || IsAiVsAiBattle() || !BattleTypeAllowsExp()) { @@ -5258,7 +5148,8 @@ static void Cmd_getexp(void) if (gBattleControllerExecFlags == 0) { gBattleResources->bufferB[gBattleStruct->expGetterBattlerId][0] = 0; - if (GetMonData(&gPlayerParty[*expMonId], MON_DATA_HP) && GetMonData(&gPlayerParty[*expMonId], MON_DATA_LEVEL) != MAX_LEVEL) + currLvl = GetMonData(&gPlayerParty[*expMonId], MON_DATA_LEVEL); + if (GetMonData(&gPlayerParty[*expMonId], MON_DATA_HP) && currLvl != MAX_LEVEL) { gBattleResources->beforeLvlUp->stats[STAT_HP] = GetMonData(&gPlayerParty[*expMonId], MON_DATA_MAX_HP); gBattleResources->beforeLvlUp->stats[STAT_ATK] = GetMonData(&gPlayerParty[*expMonId], MON_DATA_ATK); @@ -5266,6 +5157,8 @@ static void Cmd_getexp(void) gBattleResources->beforeLvlUp->stats[STAT_SPEED] = GetMonData(&gPlayerParty[*expMonId], MON_DATA_SPEED); gBattleResources->beforeLvlUp->stats[STAT_SPATK] = GetMonData(&gPlayerParty[*expMonId], MON_DATA_SPATK); gBattleResources->beforeLvlUp->stats[STAT_SPDEF] = GetMonData(&gPlayerParty[*expMonId], MON_DATA_SPDEF); + gBattleResources->beforeLvlUp->level = currLvl; + gBattleResources->beforeLvlUp->learnMultipleMoves = FALSE; BtlController_EmitExpUpdate(gBattleStruct->expGetterBattlerId, B_COMM_TO_CONTROLLER, *expMonId, gBattleStruct->battlerExpReward); MarkBattlerForControllerExec(gBattleStruct->expGetterBattlerId); @@ -5281,7 +5174,7 @@ static void Cmd_getexp(void) { u16 temp, battler = 0xFF; if (gBattleTypeFlags & BATTLE_TYPE_TRAINER && gBattlerPartyIndexes[expBattler] == *expMonId) - HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[expBattler]], expBattler); + HandleLowHpMusicChange(GetBattlerMon(expBattler), expBattler); PREPARE_MON_NICK_WITH_PREFIX_BUFFER(gBattleTextBuff1, expBattler, *expMonId); PREPARE_BYTE_NUMBER_BUFFER(gBattleTextBuff2, 3, GetMonData(&gPlayerParty[*expMonId], MON_DATA_LEVEL)); @@ -5506,7 +5399,7 @@ static void MoveValuesCleanUp(void) gBattleCommunication[MISS_TYPE] = 0; if (!gMultiHitCounter) gHitMarker &= ~HITMARKER_DESTINYBOND; - gHitMarker &= ~HITMARKER_SYNCHRONISE_EFFECT; + gHitMarker &= ~HITMARKER_SYNCHRONIZE_EFFECT; } static void Cmd_movevaluescleanup(void) @@ -5867,7 +5760,7 @@ static void Cmd_absorb(void) BtlController_EmitHealthBarUpdate(battler, B_COMM_TO_CONTROLLER, gBattleStruct->moveDamage[battler]); MarkBattlerForControllerExec(battler); - if (GetBattlerSide(battler) == B_SIDE_PLAYER && gBattleStruct->moveDamage[battler] > 0) + if (IsOnPlayerSide(battler) && gBattleStruct->moveDamage[battler] > 0) gBattleResults.playerMonWasDamaged = TRUE; gBattlescriptCurrInstr = cmd->nextInstr; @@ -6233,13 +6126,13 @@ static u32 GetNextTarget(u32 moveTarget, bool32 excludeCurrent) && !(excludeCurrent && battler == gBattlerTarget) && IsBattlerAlive(battler) && !gBattleStruct->battlerState[gBattlerAttacker].targetsDone[battler] - && (GetBattlerSide(battler) != GetBattlerSide(gBattlerAttacker) || moveTarget == MOVE_TARGET_FOES_AND_ALLY)) + && (!IsBattlerAlly(battler, gBattlerAttacker) || moveTarget == MOVE_TARGET_FOES_AND_ALLY)) break; } return battler; } -static inline bool32 IsProtectivePadsProtected(u32 battler, u32 holdEffect) +static inline bool32 IsProtectivePadsProtected(u32 battler, enum ItemHoldEffect holdEffect) { if (holdEffect != HOLD_EFFECT_PROTECTIVE_PADS) return FALSE; @@ -6250,7 +6143,7 @@ static inline bool32 IsProtectivePadsProtected(u32 battler, u32 holdEffect) static inline bool32 IsProtectEffectAffected(u32 battler, u32 move) { - u32 holdEffect = GetBattlerHoldEffect(gBattlerAttacker, TRUE); + enum ItemHoldEffect holdEffect = GetBattlerHoldEffect(gBattlerAttacker, TRUE); if (IsProtectivePadsProtected(battler, holdEffect)) return TRUE; @@ -6270,7 +6163,7 @@ static inline bool32 IsProtectEffectAffected(u32 battler, u32 move) return FALSE; } -static inline bool32 CanEjectButtonTrigger(u32 battlerAtk, u32 battlerDef, u32 moveEffect) +static inline bool32 CanEjectButtonTrigger(u32 battlerAtk, u32 battlerDef, enum BattleMoveEffects moveEffect) { if (GetBattlerHoldEffect(battlerDef, TRUE) == HOLD_EFFECT_EJECT_BUTTON && battlerAtk != battlerDef @@ -6283,7 +6176,7 @@ static inline bool32 CanEjectButtonTrigger(u32 battlerAtk, u32 battlerDef, u32 m return FALSE; } -static inline bool32 CanEjectPackTrigger(u32 battlerAtk, u32 battlerDef, u32 moveEffect) +static inline bool32 CanEjectPackTrigger(u32 battlerAtk, u32 battlerDef, enum BattleMoveEffects moveEffect) { if (gProtectStructs[battlerDef].statFell && GetBattlerHoldEffect(battlerDef, TRUE) == HOLD_EFFECT_EJECT_PACK @@ -6297,6 +6190,131 @@ static inline bool32 CanEjectPackTrigger(u32 battlerAtk, u32 battlerDef, u32 mov return FALSE; } +static bool32 HandleMoveEndAbilityBlock(u32 battlerAtk, u32 battlerDef, u32 move) +{ + bool32 effect = FALSE; + u32 abilityAtk = GetBattlerAbility(battlerAtk); + + switch (abilityAtk) + { + case ABILITY_MAGICIAN: + if (move != MOVE_FLING && move != MOVE_NATURAL_GIFT + && gBattleMons[battlerAtk].item == ITEM_NONE + && gBattleMons[battlerDef].item != ITEM_NONE + && IsBattlerAlive(battlerAtk) + && IsBattlerTurnDamaged(battlerDef) + && CanStealItem(battlerAtk, battlerDef, gBattleMons[battlerDef].item) + && !gSpecialStatuses[battlerAtk].gemBoost // In base game, gems are consumed after magician would activate. + && !(gWishFutureKnock.knockedOffMons[GetBattlerSide(battlerDef)] & (1u << gBattlerPartyIndexes[battlerDef])) + && !DoesSubstituteBlockMove(battlerAtk, battlerDef, move) + && (GetBattlerAbility(battlerDef) != ABILITY_STICKY_HOLD || !IsBattlerAlive(battlerDef))) + { + StealTargetItem(battlerAtk, battlerDef); + gBattleScripting.battler = gBattlerAbility = battlerAtk; + gEffectBattler = battlerDef; + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_MagicianActivates; + effect = TRUE; + } + break; + case ABILITY_MOXIE: + case ABILITY_CHILLING_NEIGH: + case ABILITY_AS_ONE_ICE_RIDER: + case ABILITY_GRIM_NEIGH: + case ABILITY_AS_ONE_SHADOW_RIDER: + case ABILITY_BEAST_BOOST: + { + if (!IsBattlerAlive(battlerAtk) || NoAliveMonsForEitherParty()) + break; + + u32 stat = STAT_ATK; + u32 numMonsFainted = NumFaintedBattlersByAttacker(battlerAtk); + + if (abilityAtk == ABILITY_BEAST_BOOST) + stat = GetHighestStatId(battlerAtk); + else if (abilityAtk == ABILITY_GRIM_NEIGH || abilityAtk == ABILITY_AS_ONE_SHADOW_RIDER) + stat = STAT_SPATK; + + if (numMonsFainted && CompareStat(battlerAtk, stat, MAX_STAT_STAGE, CMP_LESS_THAN)) + { + gLastUsedAbility = abilityAtk; + if (abilityAtk == ABILITY_AS_ONE_ICE_RIDER) + gBattleScripting.abilityPopupOverwrite = gLastUsedAbility = ABILITY_CHILLING_NEIGH; + else if (abilityAtk == ABILITY_AS_ONE_SHADOW_RIDER) + gBattleScripting.abilityPopupOverwrite = gLastUsedAbility = ABILITY_GRIM_NEIGH; + + SET_STATCHANGER(stat, numMonsFainted, FALSE); + PREPARE_STAT_BUFFER(gBattleTextBuff1, stat); + gBattleScripting.animArg1 = GET_STAT_BUFF_ID(stat) + (numMonsFainted > 1 ? STAT_ANIM_PLUS2 : STAT_ANIM_PLUS1); + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_RaiseStatOnFaintingTarget; + effect = TRUE; + } + } + break; + case ABILITY_BATTLE_BOND: + { + if (!IsBattlerAlive(battlerAtk) + || NoAliveMonsForEitherParty() + || NumFaintedBattlersByAttacker(battlerAtk) == 0) + break; + + u32 side = GetBattlerSide(battlerAtk); + + if (gBattleStruct->partyState[side][gBattlerPartyIndexes[battlerAtk]].battleBondBoost) + break; + + if (GetGenConfig(GEN_CONFIG_BATTLE_BOND) < GEN_9 && gBattleMons[battlerAtk].species == SPECIES_GRENINJA_BATTLE_BOND) + { + // TODO: Convert this to a proper FORM_CHANGE type. + gLastUsedAbility = abilityAtk; + gBattleStruct->partyState[side][gBattlerPartyIndexes[battlerAtk]].battleBondBoost = TRUE; + PREPARE_SPECIES_BUFFER(gBattleTextBuff1, gBattleMons[battlerAtk].species); + gBattleStruct->changedSpecies[side][gBattlerPartyIndexes[battlerAtk]] = gBattleMons[battlerAtk].species; + gBattleMons[battlerAtk].species = SPECIES_GRENINJA_ASH; + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_BattleBondActivatesOnMoveEndAttacker; + effect = TRUE; + } + else + { + u32 numStatBuffs = 0; + if (CompareStat(battlerAtk, STAT_ATK, MAX_STAT_STAGE, CMP_LESS_THAN)) + { + gBattleScripting.animArg1 = GET_STAT_BUFF_ID(STAT_ATK) + STAT_ANIM_PLUS1; + numStatBuffs++; + } + if (CompareStat(battlerAtk, STAT_SPATK, MAX_STAT_STAGE, CMP_LESS_THAN)) + { + gBattleScripting.animArg1 = GET_STAT_BUFF_ID(STAT_SPATK) + STAT_ANIM_PLUS1; + numStatBuffs++; + } + if (CompareStat(battlerAtk, STAT_SPEED, MAX_STAT_STAGE, CMP_LESS_THAN)) + { + gBattleScripting.animArg1 = GET_STAT_BUFF_ID(STAT_SPEED) + STAT_ANIM_PLUS1; + numStatBuffs++; + } + + if (numStatBuffs > 0) + { + if (numStatBuffs > 1) + gBattleScripting.animArg1 = STAT_ANIM_MULTIPLE_PLUS1; + + gLastUsedAbility = abilityAtk; + gBattlerAbility = battlerAtk; + gBattleStruct->partyState[side][gBattlerPartyIndexes[battlerAtk]].battleBondBoost = TRUE; + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_EffectBattleBondStatIncrease; + effect = TRUE; + } + } + } + break; + } + + return effect; +} + static void Cmd_moveend(void) { CMD_ARGS(u8 endMode, u8 endState); @@ -6304,7 +6322,7 @@ static void Cmd_moveend(void) s32 i; bool32 effect = FALSE; u32 moveType = 0; - u32 holdEffectAtk = 0; + enum ItemHoldEffect holdEffectAtk = HOLD_EFFECT_NONE; u32 endMode, endState; u32 originallyUsedMove; @@ -6319,7 +6337,7 @@ static void Cmd_moveend(void) holdEffectAtk = GetBattlerHoldEffect(gBattlerAttacker, TRUE); moveType = GetBattleMoveType(gCurrentMove); - u32 moveEffect = GetMoveEffect(gCurrentMove); + enum BattleMoveEffects moveEffect = GetMoveEffect(gCurrentMove); do { @@ -6332,84 +6350,98 @@ static void Cmd_moveend(void) case MOVEEND_PROTECT_LIKE_EFFECT: if (gProtectStructs[gBattlerAttacker].touchedProtectLike) { - if (gProtectStructs[gBattlerTarget].spikyShielded - && !IsProtectivePadsProtected(gBattlerAttacker, GetBattlerHoldEffect(gBattlerAttacker, TRUE)) - && !IsMagicGuardProtected(gBattlerAttacker, GetBattlerAbility(gBattlerAttacker))) + enum ProtectMethod method = gProtectStructs[gBattlerTarget].protected; + switch (method) { - gProtectStructs[gBattlerAttacker].touchedProtectLike = FALSE; - gBattleStruct->moveDamage[gBattlerAttacker] = GetNonDynamaxMaxHP(gBattlerAttacker) / 8; - if (gBattleStruct->moveDamage[gBattlerAttacker] == 0) - gBattleStruct->moveDamage[gBattlerAttacker] = 1; - PREPARE_MOVE_BUFFER(gBattleTextBuff1, MOVE_SPIKY_SHIELD); - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_SpikyShieldEffect; - effect = 1; - } - else if (gProtectStructs[gBattlerTarget].kingsShielded - && !IsProtectEffectAffected(gBattlerAttacker, gCurrentMove)) - { - gProtectStructs[gBattlerAttacker].touchedProtectLike = FALSE; - i = gBattlerAttacker; - gBattlerAttacker = gBattlerTarget; - gBattlerTarget = i; // gBattlerTarget and gBattlerAttacker are swapped in order to activate Defiant, if applicable - if (B_KINGS_SHIELD_LOWER_ATK >= GEN_8) - gBattleScripting.moveEffect = MOVE_EFFECT_ATK_MINUS_1; - else - gBattleScripting.moveEffect = MOVE_EFFECT_ATK_MINUS_2; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_KingsShieldEffect; - effect = 1; - } - else if (gProtectStructs[gBattlerTarget].banefulBunkered - && !IsProtectivePadsProtected(gBattlerAttacker, GetBattlerHoldEffect(gBattlerAttacker, TRUE))) - { - gProtectStructs[gBattlerAttacker].touchedProtectLike = FALSE; - gBattleScripting.moveEffect = MOVE_EFFECT_POISON | MOVE_EFFECT_AFFECTS_USER; - PREPARE_MOVE_BUFFER(gBattleTextBuff1, MOVE_BANEFUL_BUNKER); - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_BanefulBunkerEffect; - effect = 1; - } - else if (gProtectStructs[gBattlerTarget].obstructed - && moveEffect != EFFECT_SUCKER_PUNCH - && moveEffect != EFFECT_UPPER_HAND - && !IsProtectEffectAffected(gBattlerAttacker, gCurrentMove)) - { - gProtectStructs[gBattlerAttacker].touchedProtectLike = FALSE; - i = gBattlerAttacker; - gBattlerAttacker = gBattlerTarget; - gBattlerTarget = i; // gBattlerTarget and gBattlerAttacker are swapped in order to activate Defiant, if applicable - gBattleScripting.moveEffect = MOVE_EFFECT_DEF_MINUS_2; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_KingsShieldEffect; - effect = 1; - } - else if (gProtectStructs[gBattlerTarget].silkTrapped - && !IsProtectEffectAffected(gBattlerAttacker, gCurrentMove)) - { - gProtectStructs[gBattlerAttacker].touchedProtectLike = FALSE; - i = gBattlerAttacker; - gBattlerAttacker = gBattlerTarget; - gBattlerTarget = i; // gBattlerTarget and gBattlerAttacker are swapped in order to activate Defiant, if applicable - gBattleScripting.moveEffect = MOVE_EFFECT_SPD_MINUS_1; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_KingsShieldEffect; - effect = 1; - } - else if (gProtectStructs[gBattlerTarget].burningBulwarked - && !IsProtectivePadsProtected(gBattlerAttacker, GetBattlerHoldEffect(gBattlerAttacker, TRUE))) - { - gProtectStructs[gBattlerAttacker].touchedProtectLike = FALSE; - gBattleScripting.moveEffect = MOVE_EFFECT_BURN | MOVE_EFFECT_AFFECTS_USER; - PREPARE_MOVE_BUFFER(gBattleTextBuff1, MOVE_BURNING_BULWARK); - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_BanefulBunkerEffect; - effect = 1; + case PROTECT_SPIKY_SHIELD: + if (moveEffect != EFFECT_COUNTER + && !IsProtectivePadsProtected(gBattlerAttacker, GetBattlerHoldEffect(gBattlerAttacker, TRUE)) + && !IsMagicGuardProtected(gBattlerAttacker, GetBattlerAbility(gBattlerAttacker))) + { + gProtectStructs[gBattlerAttacker].touchedProtectLike = FALSE; + gBattleStruct->moveDamage[gBattlerAttacker] = GetNonDynamaxMaxHP(gBattlerAttacker) / 8; + if (gBattleStruct->moveDamage[gBattlerAttacker] == 0) + gBattleStruct->moveDamage[gBattlerAttacker] = 1; + PREPARE_MOVE_BUFFER(gBattleTextBuff1, MOVE_SPIKY_SHIELD); + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_SpikyShieldEffect; + effect = 1; + } + break; + case PROTECT_KINGS_SHIELD: + if (!IsProtectivePadsProtected(gBattlerAttacker, GetBattlerHoldEffect(gBattlerAttacker, TRUE))) + { + gProtectStructs[gBattlerAttacker].touchedProtectLike = FALSE; + i = gBattlerAttacker; + gBattlerAttacker = gBattlerTarget; + gBattlerTarget = i; // gBattlerTarget and gBattlerAttacker are swapped in order to activate Defiant, if applicable + if (B_KINGS_SHIELD_LOWER_ATK >= GEN_8) + gBattleScripting.moveEffect = MOVE_EFFECT_ATK_MINUS_1; + else + gBattleScripting.moveEffect = MOVE_EFFECT_ATK_MINUS_2; + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_KingsShieldEffect; + effect = 1; + } + break; + case PROTECT_BANEFUL_BUNKER: + if (!IsProtectivePadsProtected(gBattlerAttacker, GetBattlerHoldEffect(gBattlerAttacker, TRUE))) + { + gProtectStructs[gBattlerAttacker].touchedProtectLike = FALSE; + gBattleScripting.moveEffect = MOVE_EFFECT_POISON | MOVE_EFFECT_AFFECTS_USER; + PREPARE_MOVE_BUFFER(gBattleTextBuff1, MOVE_BANEFUL_BUNKER); + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_BanefulBunkerEffect; + effect = 1; + } + break; + case PROTECT_BURNING_BULWARK: + if (!IsProtectivePadsProtected(gBattlerAttacker, GetBattlerHoldEffect(gBattlerAttacker, TRUE))) + { + gProtectStructs[gBattlerAttacker].touchedProtectLike = FALSE; + gBattleScripting.moveEffect = MOVE_EFFECT_BURN | MOVE_EFFECT_AFFECTS_USER; + PREPARE_MOVE_BUFFER(gBattleTextBuff1, MOVE_BURNING_BULWARK); + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_BanefulBunkerEffect; + effect = 1; + } + break; + case PROTECT_OBSTRUCT: + if (moveEffect != EFFECT_SUCKER_PUNCH // Why??? + && moveEffect != EFFECT_UPPER_HAND // Why??? + && !IsProtectivePadsProtected(gBattlerAttacker, GetBattlerHoldEffect(gBattlerAttacker, TRUE))) + { + gProtectStructs[gBattlerAttacker].touchedProtectLike = FALSE; + i = gBattlerAttacker; + gBattlerAttacker = gBattlerTarget; + gBattlerTarget = i; // gBattlerTarget and gBattlerAttacker are swapped in order to activate Defiant, if applicable + gBattleScripting.moveEffect = MOVE_EFFECT_DEF_MINUS_2; + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_KingsShieldEffect; + effect = 1; + } + break; + case PROTECT_SILK_TRAP: + if (!IsProtectivePadsProtected(gBattlerAttacker, GetBattlerHoldEffect(gBattlerAttacker, TRUE))) + { + gProtectStructs[gBattlerAttacker].touchedProtectLike = FALSE; + i = gBattlerAttacker; + gBattlerAttacker = gBattlerTarget; + gBattlerTarget = i; // gBattlerTarget and gBattlerAttacker are swapped in order to activate Defiant, if applicable + gBattleScripting.moveEffect = MOVE_EFFECT_SPD_MINUS_1; + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_KingsShieldEffect; + effect = 1; + } + break; + default: + break; } + // Not strictly a protect effect, but works the same way - else if (gProtectStructs[gBattlerTarget].beakBlastCharge - && CanBeBurned(gBattlerAttacker, GetBattlerAbility(gBattlerAttacker)) - && !(gBattleStruct->moveResultFlags[gBattlerTarget] & MOVE_RESULT_NO_EFFECT)) + if (gProtectStructs[gBattlerTarget].beakBlastCharge + && CanBeBurned(gBattlerAttacker, gBattlerTarget, GetBattlerAbility(gBattlerAttacker)) + && !(gBattleStruct->moveResultFlags[gBattlerTarget] & MOVE_RESULT_NO_EFFECT)) { gProtectStructs[gBattlerAttacker].touchedProtectLike = FALSE; gBattleMons[gBattlerAttacker].status1 = STATUS1_BURN; @@ -6425,33 +6457,27 @@ static void Cmd_moveend(void) case MOVEEND_ABSORB: if (moveEffect == EFFECT_ABSORB && !(gHitMarker & HITMARKER_UNABLE_TO_USE_MOVE) + && !(gStatuses3[gBattlerAttacker] & STATUS3_HEAL_BLOCK) + && IsBattlerAlive(gBattlerAttacker) && IsBattlerTurnDamaged(gBattlerTarget)) { - if (gStatuses3[gBattlerAttacker] & STATUS3_HEAL_BLOCK && IsHealingMove(gCurrentMove)) + gBattleStruct->moveDamage[gBattlerAttacker] = max(1, (gBattleStruct->moveDamage[gBattlerTarget] * GetMoveAbsorbPercentage(gCurrentMove) / 100)); + gBattleStruct->moveDamage[gBattlerAttacker] = GetDrainedBigRootHp(gBattlerAttacker, gBattleStruct->moveDamage[gBattlerAttacker]); + gHitMarker |= HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_IGNORE_DISGUISE; + effect = TRUE; + if (GetBattlerAbility(gBattlerTarget) == ABILITY_LIQUID_OOZE) { - gBattleScripting.moveendState++; - break; + gBattleStruct->moveDamage[gBattlerAttacker] *= -1; + gHitMarker |= HITMARKER_PASSIVE_DAMAGE; + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_ABSORB_OOZE; + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_EffectAbsorbLiquidOoze; } - else if (IsBattlerAlive(gBattlerAttacker) && !(gBattleStruct->moveResultFlags[gBattlerTarget] & MOVE_RESULT_NO_EFFECT)) + else { - gBattleStruct->moveDamage[gBattlerAttacker] = max(1, (gBattleStruct->moveDamage[gBattlerTarget] * GetMoveAbsorbPercentage(gCurrentMove) / 100)); - gBattleStruct->moveDamage[gBattlerAttacker] = GetDrainedBigRootHp(gBattlerAttacker, gBattleStruct->moveDamage[gBattlerAttacker]); - gHitMarker |= HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_IGNORE_DISGUISE; - effect = TRUE; - if (GetBattlerAbility(gBattlerTarget) == ABILITY_LIQUID_OOZE) - { - gBattleStruct->moveDamage[gBattlerAttacker] *= -1; - gHitMarker |= HITMARKER_PASSIVE_DAMAGE; - gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_ABSORB_OOZE; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_EffectAbsorbLiquidOoze; - } - else - { - gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_ABSORB; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_EffectAbsorb; - } + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_ABSORB; + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_EffectAbsorb; } } gBattleScripting.moveendState++; @@ -6460,7 +6486,7 @@ static void Cmd_moveend(void) if (gBattleMons[gBattlerTarget].status2 & STATUS2_RAGE && IsBattlerAlive(gBattlerTarget) && gBattlerAttacker != gBattlerTarget - && GetBattlerSide(gBattlerAttacker) != GetBattlerSide(gBattlerTarget) + && !IsBattlerAlly(gBattlerAttacker, gBattlerTarget) && !(gBattleStruct->moveResultFlags[gBattlerTarget] & MOVE_RESULT_NO_EFFECT) && IsBattlerTurnDamaged(gBattlerTarget) && !IsBattleMoveStatus(gCurrentMove) @@ -6473,109 +6499,6 @@ static void Cmd_moveend(void) } gBattleScripting.moveendState++; break; - case MOVEEND_DEFROST: // defrosting check - if (gBattleMons[gBattlerTarget].status1 & STATUS1_FREEZE - && IsBattlerTurnDamaged(gBattlerTarget) - && IsBattlerAlive(gBattlerTarget) - && gBattlerAttacker != gBattlerTarget - && (moveType == TYPE_FIRE || CanBurnHitThaw(gCurrentMove)) - && !(gBattleStruct->moveResultFlags[gBattlerTarget] & MOVE_RESULT_NO_EFFECT)) - { - gBattleMons[gBattlerTarget].status1 &= ~STATUS1_FREEZE; - BtlController_EmitSetMonData(gBattlerTarget, B_COMM_TO_CONTROLLER, REQUEST_STATUS_BATTLE, 0, sizeof(gBattleMons[gBattlerTarget].status1), &gBattleMons[gBattlerTarget].status1); - MarkBattlerForControllerExec(gBattlerTarget); - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_DefrostedViaFireMove; - effect = TRUE; - } - if (gBattleMons[gBattlerTarget].status1 & STATUS1_FROSTBITE - && IsBattlerAlive(gBattlerTarget) - && gBattlerAttacker != gBattlerTarget - && MoveThawsUser(originallyUsedMove) - && !(gBattleStruct->moveResultFlags[gBattlerTarget] & MOVE_RESULT_NO_EFFECT)) - { - gBattleMons[gBattlerTarget].status1 &= ~STATUS1_FROSTBITE; - BtlController_EmitSetMonData(gBattlerTarget, B_COMM_TO_CONTROLLER, REQUEST_STATUS_BATTLE, 0, sizeof(gBattleMons[gBattlerTarget].status1), &gBattleMons[gBattlerTarget].status1); - MarkBattlerForControllerExec(gBattlerTarget); - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_FrostbiteHealedViaFireMove; - effect = TRUE; - } - gBattleScripting.moveendState++; - break; - case MOVEEND_RECOIL: - { - u32 moveRecoil = GetMoveRecoil(gCurrentMove); - if (gHitMarker & HITMARKER_UNABLE_TO_USE_MOVE) - { - gBattleScripting.moveendState++; - break; - } - else if (GetMoveEffect(gCurrentMove) == EFFECT_RECOIL_IF_MISS - && (!IsBattlerTurnDamaged(gBattlerTarget) || gBattleStruct->moveResultFlags[gBattlerTarget] & MOVE_RESULT_NO_EFFECT) - && !gBattleStruct->noTargetPresent - && IsBattlerAlive(gBattlerAttacker)) - { - if (B_RECOIL_IF_MISS_DMG >= GEN_5 || (B_CRASH_IF_TARGET_IMMUNE == GEN_4 && gBattleStruct->moveResultFlags[gBattlerTarget] & MOVE_RESULT_DOESNT_AFFECT_FOE)) - gBattleStruct->moveDamage[gBattlerAttacker] = GetNonDynamaxMaxHP(gBattlerAttacker) / 2; - else if (B_RECOIL_IF_MISS_DMG == GEN_4 && (GetNonDynamaxMaxHP(gBattlerTarget) / 2) < gBattleStruct->moveDamage[gBattlerTarget]) - gBattleStruct->moveDamage[gBattlerAttacker] = GetNonDynamaxMaxHP(gBattlerTarget) / 2; - else // Fallback if B_RECOIL_IF_MISS_DMG is set to gen3 or lower. - gBattleStruct->moveDamage[gBattlerAttacker] = GetNonDynamaxMaxHP(gBattlerTarget) / 2; - - if (gBattleStruct->moveDamage[gBattlerAttacker] == 0) - gBattleStruct->moveDamage[gBattlerAttacker] = 1; - - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_RecoilIfMiss; - effect = TRUE; - } - else if (moveRecoil > 0 - && !(gBattleStruct->moveResultFlags[gBattlerTarget] & MOVE_RESULT_NO_EFFECT) - && IsBattlerAlive(gBattlerAttacker) - && IsBattlerTurnDamaged(gBattlerTarget)) - { - gBattleStruct->moveDamage[gBattlerAttacker] = max(1, gBattleScripting.savedDmg * max(1, moveRecoil) / 100); - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_MoveEffectRecoil; - effect = TRUE; - } - else if (moveEffect == EFFECT_EXPLOSION && !IsAbilityOnField(ABILITY_DAMP)) - { - gBattleStruct->moveDamage[gBattlerAttacker] = 0; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_FaintAttackerForExplosion; - effect = TRUE; - } - else if ((moveEffect == EFFECT_MAX_HP_50_RECOIL || moveEffect == EFFECT_MIND_BLOWN) - && IsBattlerAlive(gBattlerAttacker) - && !(gBattleStruct->moveResultFlags[gBattlerTarget] & MOVE_RESULT_FAILED) - && GetBattlerAbility(gBattlerAttacker) != ABILITY_MAGIC_GUARD) - { - gBattleStruct->moveDamage[gBattlerAttacker] = (GetNonDynamaxMaxHP(gBattlerAttacker) + 1) / 2; // Half of Max HP Rounded UP - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_MaxHp50Recoil; - effect = TRUE; - } - gBattleScripting.moveendState++; - break; - } - case MOVEEND_RAPID_SPIN: - if (GetMoveEffect(gCurrentMove) == EFFECT_RAPID_SPIN - && !(gHitMarker & HITMARKER_UNABLE_TO_USE_MOVE) - && IsBattlerTurnDamaged(gBattlerTarget)) - { - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_RapidSpinAway; - effect = TRUE; - } - gBattleScripting.moveendState++; - break; - case MOVEEND_ITEM_EFFECTS_ATTACKER: - if (ItemBattleEffects(ITEMEFFECT_MOVE_END, gBattlerAttacker, FALSE)) - effect = TRUE; - gBattleScripting.moveendState++; - break; case MOVEEND_SYNCHRONIZE_TARGET: // target synchronize if (AbilityBattleEffects(ABILITYEFFECT_SYNCHRONIZE, gBattlerTarget, 0, 0, 0)) effect = TRUE; @@ -6584,6 +6507,8 @@ static void Cmd_moveend(void) case MOVEEND_ABILITIES: // Such as abilities activating on contact(Poison Spore, Rough Skin, etc.). if (AbilityBattleEffects(ABILITYEFFECT_MOVE_END, gBattlerTarget, 0, 0, 0)) effect = TRUE; + else if (TryClearIllusion(gBattlerTarget, ABILITYEFFECT_MOVE_END)) + effect = TRUE; gBattleScripting.moveendState++; break; case MOVEEND_ABILITIES_ATTACKER: // Poison Touch, possibly other in the future @@ -6591,12 +6516,6 @@ static void Cmd_moveend(void) effect = TRUE; gBattleScripting.moveendState++; break; - case MOVEEND_OPPORTUNIST: - if (AbilityBattleEffects(ABILITYEFFECT_OPPORTUNIST, 0, 0, 0, 0)) - effect = TRUE; // it loops through all battlers, so we increment after its done with all battlers - else - gBattleScripting.moveendState++; - break; case MOVEEND_STATUS_IMMUNITY_ABILITIES: // status immunities if (AbilityBattleEffects(ABILITYEFFECT_IMMUNITY, 0, 0, 0, 0)) effect = TRUE; // it loops through all battlers, so we increment after its done with all battlers @@ -6637,42 +6556,61 @@ static void Cmd_moveend(void) gBattleScripting.moveendState++; break; } - case MOVEEND_CHANGED_ITEMS: // changed held items - for (i = 0; i < gBattlersCount; i++) - { - if (gBattleStruct->changedItems[i] != ITEM_NONE) - { - gBattleMons[i].item = gBattleStruct->changedItems[i]; - gBattleStruct->changedItems[i] = ITEM_NONE; - } - } - gBattleScripting.moveendState++; - break; case MOVEEND_ITEM_EFFECTS_TARGET: if (ItemBattleEffects(ITEMEFFECT_TARGET, gBattlerTarget, FALSE)) effect = TRUE; gBattleScripting.moveendState++; break; - case MOVEEND_MOVE_EFFECTS2: // For effects which should happen after target items, for example Knock Off after damage from Rocky Helmet. - { - switch (gBattleStruct->moveEffect2) + case MOVEEND_FIRST_MOVE_BLOCK: + if ((gSpecialStatuses[gBattlerAttacker].parentalBondState == PARENTAL_BOND_1ST_HIT && IsBattlerAlive(gBattlerTarget)) + || gBattleStruct->moveResultFlags[gBattlerTarget] & MOVE_RESULT_NO_EFFECT + || gHitMarker & HITMARKER_UNABLE_TO_USE_MOVE) { - case MOVE_EFFECT_KNOCK_OFF: + gBattleScripting.moveendState++; + break; + } + + switch (moveEffect) + { + case EFFECT_KNOCK_OFF: if (!DoesSubstituteBlockMove(gBattlerAttacker, gBattlerTarget, gCurrentMove)) - { effect = TryKnockOffBattleScript(gBattlerTarget); - } break; - case MOVE_EFFECT_STOCKPILE_WORE_OFF: - if (gDisableStructs[gBattlerAttacker].stockpileCounter != 0) + case EFFECT_HIT_SWITCH_TARGET: + if (IsBattlerTurnDamaged(gBattlerTarget) + && IsBattlerAlive(gBattlerTarget) + && IsBattlerAlive(gBattlerAttacker) + && !(gStatuses3[BATTLE_PARTNER(gBattlerTarget)] & STATUS3_COMMANDER)) { - gDisableStructs[gBattlerAttacker].stockpileCounter = 0; + u32 targetAbility = GetBattlerAbility(gBattlerTarget); + if (targetAbility == ABILITY_GUARD_DOG) + { + gBattleScripting.moveendState++; + break; + } + effect = TRUE; - BattleScriptPush(gBattlescriptCurrInstr); - gBattlescriptCurrInstr = BattleScript_MoveEffectStockpileWoreOff; + BattleScriptPushCursor(); + if (targetAbility == ABILITY_SUCTION_CUPS) + { + gBattlescriptCurrInstr = BattleScript_AbilityPreventsPhasingOutRet; + } + else if (gStatuses3[gBattlerTarget] & STATUS3_ROOTED) + { + gBattlescriptCurrInstr = BattleScript_PrintMonIsRootedRet; + } + else if (GetActiveGimmick(gBattlerTarget) == GIMMICK_DYNAMAX) + { + gBattlescriptCurrInstr = BattleScript_HitSwitchTargetDynamaxed; + } + else + { + gBattleScripting.switchCase = B_SWITCH_HIT; + gBattlescriptCurrInstr = BattleScript_TryHitSwitchTarget; + } } break; - case MOVE_EFFECT_SMACK_DOWN: + case EFFECT_SMACK_DOWN: if (!IsBattlerGrounded(gBattlerTarget) && IsBattlerAlive(gBattlerTarget) && !DoesSubstituteBlockMove(gBattlerAttacker, gBattlerTarget, gCurrentMove)) @@ -6684,97 +6622,17 @@ static void Cmd_moveend(void) gBattlescriptCurrInstr = BattleScript_MoveEffectSmackDown; } break; - case MOVE_EFFECT_REMOVE_STATUS: // Smelling salts, Wake-Up Slap, Sparkling Aria - { - u32 argStatus = GetMoveEffectArg_Status(gCurrentMove); - if ((gBattleMons[gBattlerTarget].status1 & argStatus) - && IsBattlerAlive(gBattlerTarget) - && !DoesSubstituteBlockMove(gBattlerAttacker, gBattlerTarget, gCurrentMove) - && (NumAffectedSpreadMoveTargets() > 1 || !IsMoveEffectBlockedByTarget(GetBattlerAbility(gBattlerTarget)))) - { - gBattleMons[gBattlerTarget].status1 &= ~(argStatus); - - BtlController_EmitSetMonData(gBattlerTarget, 0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gBattlerTarget].status1); - MarkBattlerForControllerExec(gBattlerTarget); - effect = TRUE; - BattleScriptPush(gBattlescriptCurrInstr); - - switch (argStatus) - { - case STATUS1_PARALYSIS: - gBattlescriptCurrInstr = BattleScript_TargetPRLZHeal; - break; - case STATUS1_SLEEP: - TryDeactivateSleepClause(GetBattlerSide(gBattlerTarget), gBattlerPartyIndexes[gBattlerTarget]); - gBattlescriptCurrInstr = BattleScript_TargetWokeUp; - break; - case STATUS1_BURN: - gBattlescriptCurrInstr = BattleScript_TargetBurnHeal; - break; - case STATUS1_FREEZE: - gBattlescriptCurrInstr = BattleScript_DefrostedViaFireMove; - break; - case STATUS1_FROSTBITE: - gBattlescriptCurrInstr = BattleScript_FrostbiteHealedViaFireMove; - break; - case STATUS1_POISON: - case STATUS1_TOXIC_POISON: - case STATUS1_PSN_ANY: - gBattlescriptCurrInstr = BattleScript_TargetPoisonHealed; - break; - } - } - break; // MOVE_EFFECT_REMOVE_STATUS + default: + break; } - } - gBattleStruct->moveEffect2 = 0; gBattleScripting.moveendState++; - break; // MOVEEND_MOVE_EFFECTS2 - } + break; case MOVEEND_ITEM_EFFECTS_ALL: // item effects for all battlers if (ItemBattleEffects(ITEMEFFECT_MOVE_END, 0, FALSE)) effect = TRUE; else gBattleScripting.moveendState++; break; - case MOVEEND_HIT_SWITCH_TARGET: - if (GetMoveEffect(gCurrentMove) == EFFECT_HIT_SWITCH_TARGET - && !(gHitMarker & HITMARKER_UNABLE_TO_USE_MOVE) - && IsBattlerTurnDamaged(gBattlerTarget) - && IsBattlerAlive(gBattlerTarget) - && IsBattlerAlive(gBattlerAttacker) - && !(gStatuses3[BATTLE_PARTNER(gBattlerTarget)] & STATUS3_COMMANDER) - && gSpecialStatuses[gBattlerAttacker].parentalBondState != PARENTAL_BOND_1ST_HIT) - { - u32 targetAbility = GetBattlerAbility(gBattlerTarget); - if (targetAbility == ABILITY_GUARD_DOG) - { - gBattleScripting.moveendState++; - break; - } - - effect = TRUE; - BattleScriptPushCursor(); - if (targetAbility == ABILITY_SUCTION_CUPS) - { - gBattlescriptCurrInstr = BattleScript_AbilityPreventsPhasingOutRet; - } - else if (gStatuses3[gBattlerTarget] & STATUS3_ROOTED) - { - gBattlescriptCurrInstr = BattleScript_PrintMonIsRootedRet; - } - else if (GetActiveGimmick(gBattlerTarget) == GIMMICK_DYNAMAX) - { - gBattlescriptCurrInstr = BattleScript_HitSwitchTargetDynamaxed; - } - else - { - gBattleScripting.switchCase = B_SWITCH_HIT; - gBattlescriptCurrInstr = BattleScript_TryHitSwitchTarget; - } - } - gBattleScripting.moveendState++; - break; case MOVEEND_KINGSROCK: // King's rock // These effects will occur at each hit in a multi-strike move if (ItemBattleEffects(ITEMEFFECT_KINGSROCK, 0, FALSE)) @@ -6818,7 +6676,7 @@ static void Cmd_moveend(void) } gBattleScripting.moveendState++; break; - case MOVEEND_SUBSTITUTE: // update substitute + case MOVEEND_SUBSTITUTE: for (i = 0; i < gBattlersCount; i++) { if (gDisableStructs[i].substituteHP == 0) @@ -6829,7 +6687,7 @@ static void Cmd_moveend(void) case MOVEEND_SKY_DROP_CONFUSE: // If a Pokemon was released from Sky Drop and was in LOCK_CONFUSE, go to "confused due to fatigue" scripts and clear Sky Drop data. for (i = 0; i < gBattlersCount; i++) { - if (gBattleStruct->skyDropTargets[i] == 0xFE) + if (gBattleStruct->skyDropTargets[i] == SKY_DROP_RELEASED_TARGET) { u8 targetId; // Find the battler id of the Pokemon that was held by Sky Drop @@ -6846,14 +6704,16 @@ static void Cmd_moveend(void) gBattlescriptCurrInstr = BattleScript_ThrashConfuses; // Clear skyDropTargets data - gBattleStruct->skyDropTargets[i] = 0xFF; - gBattleStruct->skyDropTargets[targetId] = 0xFF; + gBattleStruct->skyDropTargets[i] = SKY_DROP_NO_TARGET; + gBattleStruct->skyDropTargets[targetId] = SKY_DROP_NO_TARGET; return; } } gBattleScripting.moveendState++; break; case MOVEEND_UPDATE_LAST_MOVES: + if (!IsOnPlayerSide(gBattlerAttacker)) + UpdateStallMons(); if ((gBattleStruct->moveResultFlags[gBattlerTarget] & (MOVE_RESULT_FAILED | MOVE_RESULT_DOESNT_AFFECT_FOE)) || (gBattleMons[gBattlerAttacker].status2 & (STATUS2_FLINCHED)) || gProtectStructs[gBattlerAttacker].nonVolatileStatusImmobility) @@ -6862,7 +6722,7 @@ static void Cmd_moveend(void) // Set ShellTrap to activate after the attacker's turn if target was hit by a physical move. if (GetMoveEffect(gChosenMoveByBattler[gBattlerTarget]) == EFFECT_SHELL_TRAP && gBattlerTarget != gBattlerAttacker - && GetBattlerSide(gBattlerTarget) != GetBattlerSide(gBattlerAttacker) + && !IsBattlerAlly(gBattlerTarget, gBattlerAttacker) && gProtectStructs[gBattlerTarget].physicalDmg && gProtectStructs[gBattlerTarget].physicalBattlerId == gBattlerAttacker && !TestIfSheerForceAffected(gBattlerAttacker, gCurrentMove)) @@ -6894,9 +6754,9 @@ static void Cmd_moveend(void) gBattleStruct->dynamax.lastUsedBaseMove = gBattleStruct->dynamax.baseMoves[gBattlerAttacker]; } } - u32 originalEffect = GetMoveEffect(originallyUsedMove); + enum BattleMoveEffects originalEffect = GetMoveEffect(originallyUsedMove); if (!(gAbsentBattlerFlags & (1u << gBattlerAttacker)) - && !gBattleStruct->battlerState[gBattlerAttacker].absentBattlerFlags + && !gBattleStruct->battlerState[gBattlerAttacker].absent && originalEffect != EFFECT_BATON_PASS && originalEffect != EFFECT_HEALING_WISH) { if (gHitMarker & HITMARKER_OBEYS) @@ -6940,7 +6800,7 @@ static void Cmd_moveend(void) break; case MOVEEND_MIRROR_MOVE: // mirror move if (!(gAbsentBattlerFlags & (1u << gBattlerAttacker)) - && !gBattleStruct->battlerState[gBattlerAttacker].absentBattlerFlags + && !gBattleStruct->battlerState[gBattlerAttacker].absent && !IsMoveMirrorMoveBanned(originallyUsedMove) && gHitMarker & HITMARKER_OBEYS && gBattlerAttacker != gBattlerTarget @@ -6955,10 +6815,6 @@ static void Cmd_moveend(void) case MOVEEND_NEXT_TARGET: // For moves hitting two opposing Pokemon. { u16 moveTarget = GetBattlerMoveTargetType(gBattlerAttacker, gCurrentMove); - // Set a flag if move hits either target (for throat spray that can't check damage) - if (!(gHitMarker & HITMARKER_UNABLE_TO_USE_MOVE) - && !(gBattleStruct->moveResultFlags[gBattlerTarget] & MOVE_RESULT_NO_EFFECT)) - gProtectStructs[gBattlerAttacker].targetAffected = TRUE; gBattleStruct->battlerState[gBattlerAttacker].targetsDone[gBattlerTarget] = TRUE; if (!(gHitMarker & HITMARKER_UNABLE_TO_USE_MOVE) @@ -7046,9 +6902,11 @@ static void Cmd_moveend(void) && !TargetFullyImmuneToCurrMove(gBattlerAttacker, BATTLE_PARTNER(gBattlerTarget))) gBattlerTarget = BATTLE_PARTNER(gBattlerTarget); // Target the partner in doubles for second hit. + enum BattleMoveEffects chosenEffect = GetMoveEffect(gChosenMove); + if (gBattleMons[gBattlerAttacker].hp && gBattleMons[gBattlerTarget].hp - && (gChosenMove == MOVE_SLEEP_TALK || (gChosenMove == MOVE_SNORE) || !(gBattleMons[gBattlerAttacker].status1 & STATUS1_SLEEP)) + && (chosenEffect == EFFECT_SLEEP_TALK || chosenEffect == EFFECT_SNORE || !(gBattleMons[gBattlerAttacker].status1 & STATUS1_SLEEP)) && !(gBattleMons[gBattlerAttacker].status1 & STATUS1_FREEZE)) { if (gSpecialStatuses[gBattlerAttacker].parentalBondState) @@ -7057,9 +6915,6 @@ static void Cmd_moveend(void) gHitMarker |= (HITMARKER_NO_PPDEDUCT | HITMARKER_NO_ATTACKSTRING); gBattleScripting.animTargetsHit = 0; gBattleScripting.moveendState = 0; - gSpecialStatuses[gBattlerTarget].sturdied = 0; - gSpecialStatuses[gBattlerTarget].focusBanded = 0; // Delete this line to make Focus Band last for the duration of the whole move turn. - gSpecialStatuses[gBattlerTarget].focusSashed = 0; // Delete this line to make Focus Sash last for the duration of the whole move turn. gSpecialStatuses[gBattlerAttacker].multiHitOn = TRUE; MoveValuesCleanUp(); BattleScriptPush(GetMoveBattleScript(gCurrentMove)); @@ -7080,26 +6935,129 @@ static void Cmd_moveend(void) gBattleScripting.moveendState++; break; } - case MOVEEND_MAGICIAN: - if (GetBattlerAbility(gBattlerAttacker) == ABILITY_MAGICIAN - && gCurrentMove != MOVE_FLING && gCurrentMove != MOVE_NATURAL_GIFT - && gBattleMons[gBattlerAttacker].item == ITEM_NONE - && gBattleMons[gBattlerTarget].item != ITEM_NONE - && IsBattlerAlive(gBattlerAttacker) - && IsBattlerTurnDamaged(gBattlerTarget) - && CanStealItem(gBattlerAttacker, gBattlerTarget, gBattleMons[gBattlerTarget].item) - && !gSpecialStatuses[gBattlerAttacker].gemBoost // In base game, gems are consumed after magician would activate. - && !(gWishFutureKnock.knockedOffMons[GetBattlerSide(gBattlerTarget)] & (1u << gBattlerPartyIndexes[gBattlerTarget])) - && !DoesSubstituteBlockMove(gBattlerAttacker, gBattlerTarget, gCurrentMove) - && (GetBattlerAbility(gBattlerTarget) != ABILITY_STICKY_HOLD || !IsBattlerAlive(gBattlerTarget))) + case MOVEEND_DEFROST: + if (gBattleMons[gBattlerTarget].status1 & STATUS1_FREEZE + && IsBattlerTurnDamaged(gBattlerTarget) + && IsBattlerAlive(gBattlerTarget) + && gBattlerAttacker != gBattlerTarget + && (moveType == TYPE_FIRE || CanBurnHitThaw(gCurrentMove)) + && !(gBattleStruct->moveResultFlags[gBattlerTarget] & MOVE_RESULT_NO_EFFECT)) { - StealTargetItem(gBattlerAttacker, gBattlerTarget); - gBattleScripting.battler = gBattlerAbility = gBattlerAttacker; - gEffectBattler = gBattlerTarget; + gBattleMons[gBattlerTarget].status1 &= ~STATUS1_FREEZE; + BtlController_EmitSetMonData(gBattlerTarget, B_COMM_TO_CONTROLLER, REQUEST_STATUS_BATTLE, 0, sizeof(gBattleMons[gBattlerTarget].status1), &gBattleMons[gBattlerTarget].status1); + MarkBattlerForControllerExec(gBattlerTarget); BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_MagicianActivates; + gBattlescriptCurrInstr = BattleScript_DefrostedViaFireMove; effect = TRUE; } + if (gBattleMons[gBattlerTarget].status1 & STATUS1_FROSTBITE + && IsBattlerAlive(gBattlerTarget) + && gBattlerAttacker != gBattlerTarget + && MoveThawsUser(originallyUsedMove) + && !(gBattleStruct->moveResultFlags[gBattlerTarget] & MOVE_RESULT_NO_EFFECT)) + { + gBattleMons[gBattlerTarget].status1 &= ~STATUS1_FROSTBITE; + BtlController_EmitSetMonData(gBattlerTarget, B_COMM_TO_CONTROLLER, REQUEST_STATUS_BATTLE, 0, sizeof(gBattleMons[gBattlerTarget].status1), &gBattleMons[gBattlerTarget].status1); + MarkBattlerForControllerExec(gBattlerTarget); + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_FrostbiteHealedViaFireMove; + effect = TRUE; + } + gBattleScripting.moveendState++; + break; + case MOVEEND_SECOND_MOVE_BLOCK: + if (gHitMarker & HITMARKER_UNABLE_TO_USE_MOVE) + { + gBattleScripting.moveendState++; + break; + } + + switch (moveEffect) + { + case EFFECT_RECOIL_IF_MISS: + if (IsBattlerAlive(gBattlerAttacker) + && (!IsBattlerTurnDamaged(gBattlerTarget) || gBattleStruct->moveResultFlags[gBattlerTarget] & MOVE_RESULT_NO_EFFECT) + && !gBattleStruct->noTargetPresent) + { + if (B_RECOIL_IF_MISS_DMG >= GEN_5 || (B_CRASH_IF_TARGET_IMMUNE == GEN_4 && gBattleStruct->moveResultFlags[gBattlerTarget] & MOVE_RESULT_DOESNT_AFFECT_FOE)) + gBattleStruct->moveDamage[gBattlerAttacker] = GetNonDynamaxMaxHP(gBattlerAttacker) / 2; + else if (B_RECOIL_IF_MISS_DMG == GEN_4 && (GetNonDynamaxMaxHP(gBattlerTarget) / 2) < gBattleStruct->moveDamage[gBattlerTarget]) + gBattleStruct->moveDamage[gBattlerAttacker] = GetNonDynamaxMaxHP(gBattlerTarget) / 2; + else // Fallback if B_RECOIL_IF_MISS_DMG is set to gen3 or lower. + gBattleStruct->moveDamage[gBattlerAttacker] = GetNonDynamaxMaxHP(gBattlerTarget) / 2; + + if (gBattleStruct->moveDamage[gBattlerAttacker] == 0) + gBattleStruct->moveDamage[gBattlerAttacker] = 1; + + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_RecoilIfMiss; + effect = TRUE; + } + break; + case EFFECT_RECOIL: + if (IsBattlerTurnDamaged(gBattlerTarget) && IsBattlerAlive(gBattlerAttacker)) + { + gBattleStruct->moveDamage[gBattlerAttacker] = max(1, gBattleStruct->moveDamage[gBattlerTarget] * max(1, GetMoveRecoil(gCurrentMove)) / 100); + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_MoveEffectRecoil; + effect = TRUE; + } + break; + case EFFECT_EXPLOSION: + if (!IsAbilityOnField(ABILITY_DAMP)) + { + gBattleStruct->moveDamage[gBattlerAttacker] = 0; + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_FaintAttackerForExplosion; + effect = TRUE; + } + break; + case EFFECT_MAX_HP_50_RECOIL: + case EFFECT_MIND_BLOWN: + if (IsBattlerAlive(gBattlerAttacker) + && !(gBattleStruct->moveResultFlags[gBattlerTarget] & MOVE_RESULT_FAILED) + && GetBattlerAbility(gBattlerAttacker) != ABILITY_MAGIC_GUARD) + { + gBattleStruct->moveDamage[gBattlerAttacker] = (GetNonDynamaxMaxHP(gBattlerAttacker) + 1) / 2; // Half of Max HP Rounded UP + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_MaxHp50Recoil; + effect = TRUE; + } + break; + case EFFECT_RAPID_SPIN: + if (IsBattlerTurnDamaged(gBattlerTarget)) + { + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_RapidSpinAway; + effect = TRUE; + } + break; + case EFFECT_FELL_STINGER: + if (IsBattlerAlive(gBattlerAttacker) + && !IsBattlerAlive(gBattlerTarget) + && IsBattlerTurnDamaged(gBattlerTarget) + && !NoAliveMonsForEitherParty() + && CompareStat(gBattlerAttacker, STAT_ATK, MAX_STAT_STAGE, CMP_LESS_THAN)) + { + SET_STATCHANGER(STAT_ATK, GetGenConfig(GEN_CONFIG_FELL_STINGER_STAT_RAISE) >= GEN_7 ? 3 : 2, FALSE); + PREPARE_STAT_BUFFER(gBattleTextBuff1, STAT_ATK); + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_FellStingerRaisesStat; + effect = TRUE; + } + break; + default: + break; + } + gBattleScripting.moveendState++; + break; + case MOVEEND_ITEM_EFFECTS_ATTACKER: + if (ItemBattleEffects(ITEMEFFECT_MOVE_END, gBattlerAttacker, FALSE)) + effect = TRUE; + gBattleScripting.moveendState++; + break; + case MOVEEND_ABILITY_BLOCK: + effect = HandleMoveEndAbilityBlock(gBattlerAttacker, gBattlerTarget, gCurrentMove); gBattleScripting.moveendState++; break; case MOVEEND_SHEER_FORCE: @@ -7142,19 +7100,17 @@ static void Cmd_moveend(void) gBattleScripting.battler = battler; gLastUsedItem = gBattleMons[battler].item; - if (moveEffect == EFFECT_HIT_ESCAPE) - gBattlescriptCurrInstr = BattleScript_MoveEnd; // Prevent user switch-in selection - effect = TRUE; - gBattleScripting.moveendState = MOVEEND_OPPORTUNIST; gBattleStruct->battlerState[battler].usedEjectItem = TRUE; BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_EjectButtonActivates; - AI_DATA->ejectButtonSwitch = TRUE; + gAiLogicData->ejectButtonSwitch = TRUE; break; // Only the fastest Eject Button activates } } - if (!effect) + if (effect) + gBattleScripting.moveendState = MOVEEND_OPPORTUNIST; + else gBattleScripting.moveendState++; break; case MOVEEND_EJECT_PACK: @@ -7198,19 +7154,18 @@ static void Cmd_moveend(void) gBattleScripting.battler = battler; gLastUsedItem = gBattleMons[battler].item; - - if (moveEffect == EFFECT_HIT_ESCAPE) - gBattlescriptCurrInstr = BattleScript_MoveEnd; // Prevent user switch-in selection - effect = TRUE; gBattleStruct->battlerState[battler].usedEjectItem = TRUE; BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_EjectPackActivates; - AI_DATA->ejectPackSwitch = TRUE; + gAiLogicData->ejectPackSwitch = TRUE; break; // Only the fastest Eject item activates } } - gBattleScripting.moveendState++; + if (effect) + gBattleScripting.moveendState = MOVEEND_OPPORTUNIST; + else + gBattleScripting.moveendState++; break; case MOVEEND_WHITE_HERB: for (i = 0; i < gBattlersCount; i++) @@ -7218,7 +7173,7 @@ static void Cmd_moveend(void) if (!IsBattlerAlive(i)) continue; - if (GetBattlerHoldEffect(i, TRUE) == HOLD_EFFECT_RESTORE_STATS + if (GetBattlerHoldEffect(i, TRUE) == HOLD_EFFECT_WHITE_HERB && RestoreWhiteHerbStats(i)) { BattleScriptPushCursor(); @@ -7259,14 +7214,11 @@ static void Cmd_moveend(void) && !(moveEffect == EFFECT_HIT_SWITCH_TARGET && CanBattlerSwitch(battler))) { effect = TRUE; - gBattleScripting.moveendState = MOVEEND_OPPORTUNIST; gLastUsedItem = gBattleMons[battler].item; SaveBattlerTarget(battler); // save battler with red card SaveBattlerAttacker(gBattlerAttacker); gBattleScripting.battler = battler; gEffectBattler = gBattlerAttacker; - if (moveEffect == EFFECT_HIT_ESCAPE) - gBattlescriptCurrInstr = BattleScript_MoveEnd; // Prevent user switch-in selection BattleScriptPushCursor(); if (gBattleStruct->commanderActive[gBattlerAttacker] != SPECIES_NONE || GetBattlerAbility(gBattlerAttacker) == ABILITY_GUARD_DOG @@ -7279,7 +7231,9 @@ static void Cmd_moveend(void) } } } - if (!effect) + if (effect) + gBattleScripting.moveendState = MOVEEND_OPPORTUNIST; + else gBattleScripting.moveendState++; break; case MOVEEND_LIFEORB_SHELLBELL: @@ -7291,7 +7245,6 @@ static void Cmd_moveend(void) if (IsBattlerAlive(gBattlerAttacker) && gBattleMons[gBattlerAttacker].item != ITEM_NONE // Attacker must be holding an item && !(gWishFutureKnock.knockedOffMons[GetBattlerSide(gBattlerAttacker)] & (1u << gBattlerPartyIndexes[gBattlerAttacker])) // But not knocked off - && !(TestIfSheerForceAffected(gBattlerAttacker, gCurrentMove)) // Pickpocket doesn't activate for sheer force && IsMoveMakingContact(gCurrentMove, gBattlerAttacker) // Pickpocket requires contact && !(gBattleStruct->moveResultFlags[gBattlerTarget] & MOVE_RESULT_NO_EFFECT)) // Obviously attack needs to have worked { @@ -7357,16 +7310,11 @@ static void Cmd_moveend(void) if (!(emergencyExitBattlers & 1u << battler)) continue; - if (moveEffect == EFFECT_HIT_ESCAPE) - gBattlescriptCurrInstr = BattleScript_MoveEnd; // Prevent user switch-in selection - effect = TRUE; - gBattleScripting.moveendState = MOVEEND_OPPORTUNIST; - gSpecialStatuses[battler].emergencyExited = TRUE; gBattleScripting.battler = battler; BattleScriptPushCursor(); - if (gBattleTypeFlags & BATTLE_TYPE_TRAINER || GetBattlerSide(battler) == B_SIDE_PLAYER) + if (gBattleTypeFlags & BATTLE_TYPE_TRAINER || IsOnPlayerSide(battler)) gBattlescriptCurrInstr = BattleScript_EmergencyExit; else gBattlescriptCurrInstr = BattleScript_EmergencyExitWild; @@ -7374,7 +7322,28 @@ static void Cmd_moveend(void) break; // Only the fastest Emergency Exit / Wimp Out activates } } - if (!effect) + if (effect) + gBattleScripting.moveendState = MOVEEND_OPPORTUNIST; + else + gBattleScripting.moveendState++; + break; + case MOVEEND_HIT_ESCAPE: + if (moveEffect == EFFECT_HIT_ESCAPE + && !(gHitMarker & HITMARKER_UNABLE_TO_USE_MOVE) + && IsBattlerTurnDamaged(gBattlerTarget) + && IsBattlerAlive(gBattlerAttacker) + && !NoAliveMonsForBattlerSide(gBattlerTarget)) + { + effect = TRUE; + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_EffectHitEscape; + } + gBattleScripting.moveendState++; + break; + case MOVEEND_OPPORTUNIST: + if (AbilityBattleEffects(ABILITYEFFECT_OPPORTUNIST, 0, 0, 0, 0)) + effect = TRUE; // it loops through all battlers, so we increment after its done with all battlers + else gBattleScripting.moveendState++; break; case MOVEEND_SYMBIOSIS: @@ -7396,16 +7365,23 @@ static void Cmd_moveend(void) gBattleScripting.moveendState++; break; case MOVEEND_SAME_MOVE_TURNS: - if (gCurrentMove != gLastResultingMoves[gBattlerAttacker] || gBattleStruct->moveResultFlags[gBattlerTarget] & MOVE_RESULT_NO_EFFECT || gHitMarker & HITMARKER_UNABLE_TO_USE_MOVE) + if (gCurrentMove != gLastResultingMoves[gBattlerAttacker] + || gBattleStruct->moveResultFlags[gBattlerTarget] & MOVE_RESULT_NO_EFFECT + || gHitMarker & HITMARKER_UNABLE_TO_USE_MOVE) gBattleStruct->sameMoveTurns[gBattlerAttacker] = 0; else if (gCurrentMove == gLastResultingMoves[gBattlerAttacker] && gSpecialStatuses[gBattlerAttacker].parentalBondState != PARENTAL_BOND_1ST_HIT) gBattleStruct->sameMoveTurns[gBattlerAttacker]++; gBattleScripting.moveendState++; break; - 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_USE_MOVE_TWENTY_TIMES, 1, originallyUsedMove); + case MOVEEND_CHANGED_ITEMS: + for (i = 0; i < gBattlersCount; i++) + { + if (gBattleStruct->changedItems[i] != ITEM_NONE) + { + gBattleMons[i].item = gBattleStruct->changedItems[i]; + gBattleStruct->changedItems[i] = ITEM_NONE; + } + } gBattleScripting.moveendState++; break; case MOVEEND_CLEAR_BITS: // Clear/Set bits for things like using a move for all targets and all hits. @@ -7414,11 +7390,15 @@ static void Cmd_moveend(void) if (gSpecialStatuses[gBattlerAttacker].dancerOriginalTarget) gBattleStruct->moveTarget[gBattlerAttacker] = gSpecialStatuses[gBattlerAttacker].dancerOriginalTarget & 0x3; + // If the Pokémon needs to keep track of move usage for its evolutions, do it + if (originallyUsedMove != MOVE_NONE) + TryUpdateEvolutionTracker(IF_USED_MOVE_X_TIMES, 1, originallyUsedMove); + if (B_RAMPAGE_CANCELLING >= GEN_5 && MoveHasAdditionalEffectSelf(gCurrentMove, MOVE_EFFECT_THRASH) // If we're rampaging && gBattleStruct->moveResultFlags[gBattlerTarget] & MOVE_RESULT_NO_EFFECT // And it is unusable && (gBattleMons[gBattlerAttacker].status2 & STATUS2_LOCK_CONFUSE) != STATUS2_LOCK_CONFUSE_TURN(1)) // And won't end this turn - CancelMultiTurnMoves(gBattlerAttacker); // Cancel it + CancelMultiTurnMoves(gBattlerAttacker, SKY_DROP_IGNORE); // Cancel it if (gBattleStruct->savedAttackerCount > 0) { @@ -7436,10 +7416,8 @@ static void Cmd_moveend(void) DebugPrintfLevel(MGBA_LOG_WARN, "savedTargetCount is greater than 0! More calls to SaveBattlerTarget than RestoreBattlerTarget!"); // #endif } - gProtectStructs[gBattlerAttacker].targetAffected = FALSE; gProtectStructs[gBattlerAttacker].shellTrap = FALSE; gBattleStruct->ateBoost[gBattlerAttacker] = FALSE; - gStatuses3[gBattlerAttacker] &= ~STATUS3_ME_FIRST; gSpecialStatuses[gBattlerAttacker].gemBoost = FALSE; gSpecialStatuses[gBattlerTarget].berryReduced = FALSE; gSpecialStatuses[gBattlerTarget].distortedTypeMatchups = FALSE; @@ -7475,7 +7453,7 @@ static void Cmd_moveend(void) gBattleScripting.moveendState++; break; - case MOVEEND_DANCER: // Special case because it's so annoying + case MOVEEND_DANCER: if (gCurrentMove == MOVE_NONE) originallyUsedMove = gChosenMove; // Fallback to chosen move in case attacker is switched out in the middle of an attack resolution (eg red card) else @@ -7570,7 +7548,7 @@ static void Cmd_sethealblock(void) else { gStatuses3[gBattlerTarget] |= STATUS3_HEAL_BLOCK; - gDisableStructs[gBattlerTarget].healBlockTimer = 5; + gDisableStructs[gBattlerTarget].healBlockTimer = gBattleTurnCounter + 5; gBattlescriptCurrInstr = cmd->nextInstr; } } @@ -7708,7 +7686,7 @@ static void Cmd_switchinanim(void) battler = GetBattlerForBattleScript(cmd->battler); - if (GetBattlerSide(battler) == B_SIDE_OPPONENT + if (!IsOnPlayerSide(battler) && !(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_RECORDED_LINK @@ -7733,7 +7711,7 @@ bool32 CanBattlerSwitch(u32 battler) bool32 ret = FALSE; struct Pokemon *party; - if (BATTLE_TWO_VS_ONE_OPPONENT && GetBattlerSide(battler) == B_SIDE_OPPONENT) + if (BATTLE_TWO_VS_ONE_OPPONENT && !IsOnPlayerSide(battler)) { battlerIn1 = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT); battlerIn2 = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT); @@ -7773,7 +7751,7 @@ bool32 CanBattlerSwitch(u32 battler) { if (gBattleTypeFlags & BATTLE_TYPE_TOWER_LINK_MULTI) { - if (GetBattlerSide(battler) == B_SIDE_PLAYER) + if (IsOnPlayerSide(battler)) { party = gPlayerParty; @@ -7811,7 +7789,7 @@ bool32 CanBattlerSwitch(u32 battler) ret = (i != lastMonId + MULTI_PARTY_SIZE); } - else if (gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS && GetBattlerSide(battler) == B_SIDE_OPPONENT) + else if (gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS && !IsOnPlayerSide(battler)) { party = gEnemyParty; @@ -7832,7 +7810,7 @@ bool32 CanBattlerSwitch(u32 battler) } else { - if (GetBattlerSide(battler) == B_SIDE_OPPONENT) + if (!IsOnPlayerSide(battler)) { battlerIn1 = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT); @@ -8225,6 +8203,7 @@ static bool32 DoSwitchInEffectsForBattler(u32 battler) else if ((gBattleStruct->battlerState[battler].storedHealingWish || gBattleStruct->battlerState[battler].storedLunarDance) && (gBattleMons[battler].hp != gBattleMons[battler].maxHP || gBattleMons[battler].status1 != 0 || B_HEALING_WISH_SWITCH < GEN_8)) { + gBattlerAttacker = battler; if (gBattleStruct->battlerState[battler].storedHealingWish) { BattleScriptPushCursor(); @@ -8278,8 +8257,7 @@ static bool32 DoSwitchInEffectsForBattler(u32 battler) } else if (IsBattlerAffectedByHazards(battler, TRUE)) { - i = GetBattlerAbility(battler); - if (CanBePoisoned(gBattlerAttacker, battler, i)) + if (CanBePoisoned(gBattlerAttacker, battler, GetBattlerAbility(gBattlerAttacker), GetBattlerAbility(battler))) { u32 tspikes = 0; if (gSideTimers[GetBattlerSide(battler)].toxicSpikesAmount >= 2) { @@ -8368,6 +8346,8 @@ static bool32 DoSwitchInEffectsForBattler(u32 battler) return TRUE; break; } + if (TryClearIllusion(i, ABILITYEFFECT_ON_SWITCHIN)) + return TRUE; } gDisableStructs[battler].stickyWebDone = FALSE; @@ -8523,10 +8503,34 @@ static void Cmd_handlelearnnewmove(void) { CMD_ARGS(const u8 *learnedMovePtr, const u8 *nothingToLearnPtr, bool8 isFirstMove); + u16 learnMove = MOVE_NONE; u32 monId = gBattleStruct->expGetterMonId; - u16 learnMove = MonTryLearningNewMove(&gPlayerParty[monId], cmd->isFirstMove); - while (learnMove == MON_ALREADY_KNOWS_MOVE) - learnMove = MonTryLearningNewMove(&gPlayerParty[monId], FALSE); + u32 currLvl = GetMonData(&gPlayerParty[monId], MON_DATA_LEVEL); + + if (!gBattleResources->beforeLvlUp->learnMultipleMoves && gBattleResources->beforeLvlUp->level != (currLvl - 1)) + gBattleResources->beforeLvlUp->learnMultipleMoves = TRUE; + + if (B_LEVEL_UP_NOTIFICATION >= GEN_9 && gBattleResources->beforeLvlUp->learnMultipleMoves) + { + while (gBattleResources->beforeLvlUp->level <= currLvl) + { + learnMove = MonTryLearningNewMoveAtLevel(&gPlayerParty[monId], cmd->isFirstMove, gBattleResources->beforeLvlUp->level); + + while (learnMove == MON_ALREADY_KNOWS_MOVE) + learnMove = MonTryLearningNewMoveAtLevel(&gPlayerParty[monId], FALSE, gBattleResources->beforeLvlUp->level); + + if (learnMove != MOVE_NONE) + break; + + gBattleResources->beforeLvlUp->level++; + } + } + else + { + learnMove = MonTryLearningNewMove(&gPlayerParty[monId], cmd->isFirstMove); + while (learnMove == MON_ALREADY_KNOWS_MOVE) + learnMove = MonTryLearningNewMove(&gPlayerParty[monId], FALSE); + } if (learnMove == MOVE_NONE || RECORDED_WILD_BATTLE) { @@ -8810,22 +8814,29 @@ static void Cmd_getmoneyreward(void) } else { - s32 i, count; - for (i = 0; i < PARTY_SIZE; i++) + if (B_WHITEOUT_MONEY <= GEN_3) { - if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES_OR_EGG) != SPECIES_NONE - && GetMonData(&gPlayerParty[i], MON_DATA_SPECIES_OR_EGG) != SPECIES_EGG) + money = GetMoney(&gSaveBlock1Ptr->money) / 2; + } + else + { + s32 i, count; + for (i = 0; i < PARTY_SIZE; i++) { - if (GetMonData(&gPlayerParty[i], MON_DATA_LEVEL) > sPartyLevel) - sPartyLevel = GetMonData(&gPlayerParty[i], MON_DATA_LEVEL); + if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES_OR_EGG) != SPECIES_NONE + && GetMonData(&gPlayerParty[i], MON_DATA_SPECIES_OR_EGG) != SPECIES_EGG) + { + if (GetMonData(&gPlayerParty[i], MON_DATA_LEVEL) > sPartyLevel) + sPartyLevel = GetMonData(&gPlayerParty[i], MON_DATA_LEVEL); + } } + for (count = 0, i = 0; i < ARRAY_COUNT(gBadgeFlags); i++) + { + if (FlagGet(gBadgeFlags[i]) == TRUE) + ++count; + } + money = sWhiteOutBadgeMoney[count] * sPartyLevel; } - for (count = 0, i = 0; i < ARRAY_COUNT(gBadgeFlags); i++) - { - if (FlagGet(gBadgeFlags[i]) == TRUE) - ++count; - } - money = sWhiteOutBadgeMoney[count] * sPartyLevel; RemoveMoney(&gSaveBlock1Ptr->money, money); } @@ -8876,7 +8887,7 @@ static void Cmd_incrementgamestat(void) { CMD_ARGS(u8 stat); - if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER) + if (IsOnPlayerSide(gBattlerAttacker)) IncrementGameStat(cmd->stat); gBattlescriptCurrInstr = cmd->nextInstr; @@ -9089,7 +9100,7 @@ static bool32 TryCheekPouch(u32 battler, u32 itemId) if (GetItemPocket(itemId) == POCKET_BERRIES && GetBattlerAbility(battler) == ABILITY_CHEEK_POUCH && !(gStatuses3[battler] & STATUS3_HEAL_BLOCK) - && gBattleStruct->ateBerry[GetBattlerSide(battler)] & (1u << gBattlerPartyIndexes[battler]) + && gBattleStruct->partyState[GetBattlerSide(battler)][gBattlerPartyIndexes[battler]].ateBerry && !IsBattlerAtMaxHp(battler)) { gBattleStruct->cheekPouchActivated = TRUE; @@ -9179,7 +9190,7 @@ static void Cmd_removeitem(void) gBattleStruct->usedHeldItems[gBattlerPartyIndexes[battler]][GetBattlerSide(battler)] = itemId; // Remember if switched out gBattleMons[battler].item = ITEM_NONE; - gBattleStruct->canPickupItem |= (1u << battler); + gBattleStruct->battlerState[battler].canPickupItem = TRUE; CheckSetUnburden(battler); BtlController_EmitSetMonData(battler, B_COMM_TO_CONTROLLER, REQUEST_HELDITEM_BATTLE, 0, sizeof(gBattleMons[battler].item), &gBattleMons[battler].item); @@ -9597,35 +9608,10 @@ static void Cmd_useitemonopponent(void) CMD_ARGS(); gBattlerInMenuId = gBattlerAttacker; - PokemonUseItemEffects(&gEnemyParty[gBattlerPartyIndexes[gBattlerAttacker]], gLastUsedItem, gBattlerPartyIndexes[gBattlerAttacker], 0, TRUE); + PokemonUseItemEffects(GetBattlerMon(gBattlerAttacker), gLastUsedItem, gBattlerPartyIndexes[gBattlerAttacker], 0, TRUE); gBattlescriptCurrInstr = cmd->nextInstr; } -static bool32 HasAttackerFaintedTarget(void) -{ - if (!(gBattleStruct->moveResultFlags[gBattlerTarget] & MOVE_RESULT_NO_EFFECT) - && !IsBattleMoveStatus(gCurrentMove) - && (gLastHitBy[gBattlerTarget] == 0xFF || gLastHitBy[gBattlerTarget] == gBattlerAttacker) - && gBattleStruct->moveTarget[gBattlerAttacker] == gBattlerTarget - && gBattlerTarget != gBattlerAttacker - && gCurrentTurnActionNumber == GetBattlerTurnOrderNum(gBattlerAttacker) - && (gChosenMove == gChosenMoveByBattler[gBattlerAttacker] || gChosenMove == gBattleMons[gBattlerAttacker].moves[gChosenMovePos] || gChosenMove == GetMaxMove(gBattlerAttacker, gChosenMoveByBattler[gBattlerAttacker]))) - return TRUE; - else - return FALSE; -} - -bool32 CanPoisonType(u8 battlerAttacker, u8 battlerTarget) -{ - return GetBattlerAbility(battlerAttacker) == ABILITY_CORROSION - || !IS_BATTLER_ANY_TYPE(battlerTarget, TYPE_POISON, TYPE_STEEL); -} - -bool32 CanParalyzeType(u8 battlerAttacker, u8 battlerTarget) -{ - return !(B_PARALYZE_ELECTRIC >= GEN_6 && IS_BATTLER_OF_TYPE(battlerTarget, TYPE_ELECTRIC)); -} - bool32 CanUseLastResort(u8 battler) { u32 i; @@ -9716,7 +9702,7 @@ static bool32 TryDefogClear(u32 battlerAtk, bool32 clear) s32 i; u8 saveBattler = gBattlerAttacker; - for (i = 0; i < 2; i++) + for (i = 0; i < NUM_BATTLE_SIDES; i++) { struct SideTimer *sideTimer = &gSideTimers[i]; u32 *sideStatuses = &gSideStatuses[i]; @@ -9939,14 +9925,6 @@ void BS_CourtChangeSwapSideStatuses(void) COURTCHANGE_SWAP(SIDE_STATUS_SWAMP, swampTimer, temp); // Change battler IDs of swapped effects. Needed for the correct string when they expire - // E.g. "Foe's Reflect wore off!" - UPDATE_COURTCHANGED_BATTLER(reflectBattlerId); - UPDATE_COURTCHANGED_BATTLER(lightscreenBattlerId); - UPDATE_COURTCHANGED_BATTLER(mistBattlerId); - UPDATE_COURTCHANGED_BATTLER(safeguardBattlerId); - UPDATE_COURTCHANGED_BATTLER(auroraVeilBattlerId); - UPDATE_COURTCHANGED_BATTLER(tailwindBattlerId); - UPDATE_COURTCHANGED_BATTLER(luckyChantBattlerId); UPDATE_COURTCHANGED_BATTLER(stickyWebBattlerId); // Track which side originally set the Sticky Web @@ -9960,9 +9938,7 @@ void BS_CourtChangeSwapSideStatuses(void) static void HandleScriptMegaPrimalBurst(u32 caseId, u32 battler, u32 type) { - struct Pokemon *party = GetBattlerParty(battler); - struct Pokemon *mon = &party[gBattlerPartyIndexes[battler]]; - u32 side = GetBattlerSide(battler); + struct Pokemon *mon = GetBattlerMon(battler); // Change species. if (caseId == 0) @@ -9986,7 +9962,7 @@ static void HandleScriptMegaPrimalBurst(u32 caseId, u32 battler, u32 type) else { UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], mon, HEALTHBOX_ALL); - if (side == B_SIDE_OPPONENT) + if (!IsOnPlayerSide(battler)) SetBattlerShadowSpriteCallback(battler, gBattleMons[battler].species); if (type == HANDLE_TYPE_MEGA_EVOLUTION) SetGimmickAsActivated(battler, GIMMICK_MEGA); @@ -10038,16 +10014,6 @@ static bool32 ChangeOrderTargetAfterAttacker(void) return TRUE; } -static u32 CalculateBattlerPartyCount(u32 battler) -{ - u32 count; - if (GetBattlerSide(battler) == B_SIDE_PLAYER) - count = CalculatePlayerPartyCount(); - else - count = CalculateEnemyPartyCount(); - return count; -} - static void Cmd_various(void) { CMD_ARGS(u8 battler, u8 id); @@ -10072,13 +10038,13 @@ static void Cmd_various(void) { VARIOUS_ARGS(const u8 *jumpInstr); if (WILD_DOUBLE_BATTLE - && GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER - && GetBattlerSide(gBattlerTarget) == B_SIDE_OPPONENT + && IsOnPlayerSide(gBattlerAttacker) + && !IsOnPlayerSide(gBattlerTarget) && IS_WHOLE_SIDE_ALIVE(gBattlerTarget)) gBattlescriptCurrInstr = cmd->jumpInstr; else if (WILD_DOUBLE_BATTLE - && GetBattlerSide(gBattlerAttacker) == B_SIDE_OPPONENT - && GetBattlerSide(gBattlerTarget) == B_SIDE_OPPONENT) + && !IsOnPlayerSide(gBattlerAttacker) + && !IsOnPlayerSide(gBattlerTarget)) gBattlescriptCurrInstr = cmd->jumpInstr; else if (FlagGet(B_FLAG_NO_RUNNING)) gBattlescriptCurrInstr = cmd->jumpInstr; @@ -10189,7 +10155,7 @@ static void Cmd_various(void) while (gBattleStruct->friskedBattler < gBattlersCount) { gBattlerTarget = gBattleStruct->friskedBattler++; - if (GetBattlerSide(battler) != GetBattlerSide(gBattlerTarget) + if (!IsBattlerAlly(battler, gBattlerTarget) && IsBattlerAlive(gBattlerTarget) && gBattleMons[gBattlerTarget].item != ITEM_NONE) { @@ -10213,24 +10179,6 @@ static void Cmd_various(void) gBattleStruct->friskedAbility = FALSE; break; } - case VARIOUS_POISON_TYPE_IMMUNITY: - { - VARIOUS_ARGS(u8 target, const u8 *failInstr); - if (!CanPoisonType(battler, GetBattlerForBattleScript(cmd->target))) - gBattlescriptCurrInstr = cmd->failInstr; - else - gBattlescriptCurrInstr = cmd->nextInstr; - return; - } - case VARIOUS_PARALYZE_TYPE_IMMUNITY: - { - VARIOUS_ARGS(u8 target, const u8 *failInstr); - if (!CanParalyzeType(battler, GetBattlerForBattleScript(cmd->target))) - gBattlescriptCurrInstr = cmd->failInstr; - else - gBattlescriptCurrInstr = cmd->nextInstr; - return; - } case VARIOUS_TRACE_ABILITY: { VARIOUS_ARGS(); @@ -10240,14 +10188,8 @@ static void Cmd_various(void) case VARIOUS_TRY_ILLUSION_OFF: { VARIOUS_ARGS(); - if (GetIllusionMonPtr(battler) != NULL) - { - gBattleScripting.battler = battler; - gBattlescriptCurrInstr = cmd->nextInstr; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_IllusionOff; + if (TryClearIllusion(battler, ABILITYEFFECT_MOVE_END)) return; - } break; } case VARIOUS_SET_SPRITEIGNORE0HP: @@ -10260,10 +10202,10 @@ static void Cmd_various(void) case VARIOUS_UPDATE_NICK: { VARIOUS_ARGS(); - if (GetBattlerSide(battler) == B_SIDE_PLAYER) - mon = &gPlayerParty[gBattlerPartyIndexes[battler]]; + if (IsOnPlayerSide(battler)) + mon = GetBattlerMon(battler); else - mon = &gEnemyParty[gBattlerPartyIndexes[battler]]; + mon = GetBattlerMon(battler); UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], mon, HEALTHBOX_NICK); break; } @@ -10302,7 +10244,7 @@ static void Cmd_various(void) VARIOUS_ARGS(); // Cancel all multiturn moves of IN_AIR Pokemon except those being targeted by Sky Drop. if (gStatuses3[battler] & STATUS3_ON_AIR && !(gStatuses3[battler] & STATUS3_SKY_DROPPED)) - CancelMultiTurnMoves(battler); + CancelMultiTurnMoves(battler, SKY_DROP_GRAVITY_ON_AIRBORNE); gStatuses3[battler] &= ~(STATUS3_MAGNET_RISE | STATUS3_TELEKINESIS | STATUS3_ON_AIR | STATUS3_SKY_DROPPED); break; @@ -10343,7 +10285,7 @@ static void Cmd_various(void) { VARIOUS_ARGS(); const u8 *result; - result = CancelMultiTurnMoves(battler); + result = CancelMultiTurnMoves(battler, SKY_DROP_CANCEL_MULTI_TURN_MOVES); if (result) { gBattlescriptCurrInstr = result; @@ -10569,16 +10511,16 @@ static void Cmd_various(void) VARIOUS_ARGS(); // Don't end the battle if one of the wild mons teleported from the wild double battle // and its partner is still alive. - if (GetBattlerSide(battler) == B_SIDE_OPPONENT && IsBattlerAlive(BATTLE_PARTNER(battler))) + if (!IsOnPlayerSide(battler) && IsBattlerAlive(BATTLE_PARTNER(battler))) { gAbsentBattlerFlags |= 1u << battler; gHitMarker |= HITMARKER_FAINTED(battler); gBattleMons[battler].hp = 0; - SetMonData(&gEnemyParty[gBattlerPartyIndexes[battler]], MON_DATA_HP, &gBattleMons[battler].hp); + SetMonData(GetBattlerMon(battler), MON_DATA_HP, &gBattleMons[battler].hp); SetHealthboxSpriteInvisible(gHealthboxSpriteIds[battler]); FaintClearSetData(battler); } - else if (GetBattlerSide(battler) == B_SIDE_PLAYER) + else if (IsOnPlayerSide(battler)) { gBattleOutcome = B_OUTCOME_PLAYER_TELEPORTED; } @@ -10638,55 +10580,6 @@ static void Cmd_various(void) MarkBattlerForControllerExec(battler); break; } - case VARIOUS_TRY_ACTIVATE_MOXIE: // and chilling neigh + as one ice rider - { - VARIOUS_ARGS(); - - u16 battlerAbility = GetBattlerAbility(battler); - - if ((battlerAbility == ABILITY_MOXIE - || battlerAbility == ABILITY_CHILLING_NEIGH - || battlerAbility == ABILITY_AS_ONE_ICE_RIDER) - && IsBattlerAlive(battler) - && HasAttackerFaintedTarget() - && !NoAliveMonsForEitherParty() - && CompareStat(gBattlerAttacker, STAT_ATK, MAX_STAT_STAGE, CMP_LESS_THAN)) - { - SET_STATCHANGER(STAT_ATK, 1, FALSE); - PREPARE_STAT_BUFFER(gBattleTextBuff1, STAT_ATK); - BattleScriptPush(cmd->nextInstr); - gLastUsedAbility = battlerAbility; - if (battlerAbility == ABILITY_AS_ONE_ICE_RIDER) - gBattleScripting.abilityPopupOverwrite = gLastUsedAbility = ABILITY_CHILLING_NEIGH; - gBattlescriptCurrInstr = BattleScript_RaiseStatOnFaintingTarget; - return; - } - break; - } - case VARIOUS_TRY_ACTIVATE_GRIM_NEIGH: // and as one shadow rider - { - VARIOUS_ARGS(); - - u16 battlerAbility = GetBattlerAbility(battler); - - if ((battlerAbility == ABILITY_GRIM_NEIGH - || battlerAbility == ABILITY_AS_ONE_SHADOW_RIDER) - && IsBattlerAlive(battler) - && HasAttackerFaintedTarget() - && !NoAliveMonsForEitherParty() - && CompareStat(gBattlerAttacker, STAT_SPATK, MAX_STAT_STAGE, CMP_LESS_THAN)) - { - SET_STATCHANGER(STAT_SPATK, 1, FALSE); - PREPARE_STAT_BUFFER(gBattleTextBuff1, STAT_SPATK); - BattleScriptPush(cmd->nextInstr); - gLastUsedAbility = battlerAbility; - if (battlerAbility == ABILITY_AS_ONE_SHADOW_RIDER) - gBattleScripting.abilityPopupOverwrite = gLastUsedAbility = ABILITY_GRIM_NEIGH; - gBattlescriptCurrInstr = BattleScript_RaiseStatOnFaintingTarget; - return; - } - break; - } case VARIOUS_TRY_ACTIVATE_RECEIVER: // Partner gets fainted's ally ability { VARIOUS_ARGS(); @@ -10705,25 +10598,6 @@ static void Cmd_various(void) } break; } - case VARIOUS_TRY_ACTIVATE_BEAST_BOOST: - { - VARIOUS_ARGS(); - - i = GetHighestStatId(battler); - if (IsBattlerAlive(battler) - && GetBattlerAbility(battler) == ABILITY_BEAST_BOOST - && HasAttackerFaintedTarget() - && !NoAliveMonsForEitherParty() - && CompareStat(gBattlerAttacker, i, MAX_STAT_STAGE, CMP_LESS_THAN)) - { - SET_STATCHANGER(i, 1, FALSE); - PREPARE_STAT_BUFFER(gBattleTextBuff1, i); - BattleScriptPush(cmd->nextInstr); - gBattlescriptCurrInstr = BattleScript_AttackerAbilityStatRaise; - return; - } - break; - } case VARIOUS_TRY_ACTIVATE_SOULHEART: { VARIOUS_ARGS(); @@ -10745,23 +10619,6 @@ static void Cmd_various(void) gBattleStruct->soulheartBattlerId = 0; break; } - case VARIOUS_TRY_ACTIVATE_FELL_STINGER: - { - VARIOUS_ARGS(); - if (GetMoveEffect(gCurrentMove) == EFFECT_FELL_STINGER - && IsBattlerAlive(gBattlerAttacker) - && HasAttackerFaintedTarget() - && !NoAliveMonsForEitherParty() - && CompareStat(gBattlerAttacker, STAT_ATK, MAX_STAT_STAGE, CMP_LESS_THAN)) - { - SET_STATCHANGER(STAT_ATK, (B_FELL_STINGER_STAT_RAISE >= GEN_7 ? 3 : 2), FALSE); - PREPARE_STAT_BUFFER(gBattleTextBuff1, STAT_ATK); - BattleScriptPush(cmd->nextInstr); - gBattlescriptCurrInstr = BattleScript_FellStingerRaisesStat; - return; - } - break; - } case VARIOUS_PLAY_MOVE_ANIMATION: { VARIOUS_ARGS(u16 move); @@ -10776,7 +10633,6 @@ static void Cmd_various(void) if (!(gSideStatuses[GetBattlerSide(battler)] & SIDE_STATUS_LUCKY_CHANT)) { gSideStatuses[GetBattlerSide(battler)] |= SIDE_STATUS_LUCKY_CHANT; - gSideTimers[GetBattlerSide(battler)].luckyChantBattlerId = battler; gSideTimers[GetBattlerSide(battler)].luckyChantTimer = gBattleTurnCounter + 5; gBattlescriptCurrInstr = cmd->nextInstr; } @@ -10789,7 +10645,7 @@ static void Cmd_various(void) case VARIOUS_SUCKER_PUNCH_CHECK: { VARIOUS_ARGS(const u8 *failInstr); - if (gProtectStructs[gBattlerTarget].obstructed) + if (gProtectStructs[gBattlerTarget].protected == PROTECT_OBSTRUCT) gBattlescriptCurrInstr = cmd->failInstr; else if (GetBattlerTurnOrderNum(gBattlerAttacker) > GetBattlerTurnOrderNum(gBattlerTarget)) gBattlescriptCurrInstr = cmd->failInstr; @@ -10891,7 +10747,6 @@ static void Cmd_various(void) } gHitMarker &= ~HITMARKER_ATTACKSTRING_PRINTED; gBattlerTarget = GetBattleMoveTarget(gCalledMove, NO_TARGET_OVERRIDE); - gStatuses3[gBattlerAttacker] |= STATUS3_ME_FIRST; gBattlescriptCurrInstr = cmd->nextInstr; } return; @@ -10941,7 +10796,7 @@ static void Cmd_various(void) case VARIOUS_HANDLE_FORM_CHANGE: { VARIOUS_ARGS(u8 case_); - mon = GetPartyBattlerData(battler); + mon = GetBattlerMon(battler); // Change species. if (cmd->case_ == 0) @@ -10975,12 +10830,6 @@ static void Cmd_various(void) gBattlescriptCurrInstr = cmd->failInstr; return; } - case VARIOUS_SET_ARG_TO_BATTLE_DAMAGE: - { - VARIOUS_ARGS(); - gBattleStruct->moveDamage[gBattlerTarget] = GetMoveFixedDamage(gCurrentMove); - break; - } case VARIOUS_TRY_AUTOTOMIZE: { VARIOUS_ARGS(const u8 *failInstr); @@ -11048,7 +10897,7 @@ static void Cmd_various(void) case VARIOUS_JUMP_IF_TARGET_ALLY: { VARIOUS_ARGS(const u8 *jumpInstr); - if (GetBattlerSide(gBattlerAttacker) != GetBattlerSide(gBattlerTarget)) + if (!IsBattlerAlly(gBattlerAttacker, gBattlerTarget)) gBattlescriptCurrInstr = cmd->nextInstr; else gBattlescriptCurrInstr = cmd->jumpInstr; @@ -11075,17 +10924,17 @@ static void Cmd_various(void) VARIOUS_ARGS(const u8 *failInstr, const u8 *sleepClauseFailInstr); u32 targetAbility = GetBattlerAbility(gBattlerTarget); // Psycho shift works - if ((gBattleMons[gBattlerAttacker].status1 & STATUS1_POISON) && CanBePoisoned(gBattlerAttacker, gBattlerTarget, targetAbility)) + if ((gBattleMons[gBattlerAttacker].status1 & STATUS1_POISON) && CanBePoisoned(gBattlerAttacker, gBattlerTarget, GetBattlerAbility(gBattlerAttacker), targetAbility)) gBattleCommunication[MULTISTRING_CHOOSER] = 0; - else if ((gBattleMons[gBattlerAttacker].status1 & STATUS1_TOXIC_POISON) && CanBePoisoned(gBattlerAttacker, gBattlerTarget, targetAbility)) + else if ((gBattleMons[gBattlerAttacker].status1 & STATUS1_TOXIC_POISON) && CanBePoisoned(gBattlerAttacker, gBattlerTarget, GetBattlerAbility(gBattlerAttacker), targetAbility)) gBattleCommunication[MULTISTRING_CHOOSER] = 1; - else if ((gBattleMons[gBattlerAttacker].status1 & STATUS1_BURN) && CanBeBurned(gBattlerTarget, targetAbility)) + else if ((gBattleMons[gBattlerAttacker].status1 & STATUS1_BURN) && CanBeBurned(gBattlerAttacker, gBattlerTarget, targetAbility)) gBattleCommunication[MULTISTRING_CHOOSER] = 2; - else if ((gBattleMons[gBattlerAttacker].status1 & STATUS1_PARALYSIS) && CanBeParalyzed(gBattlerTarget, targetAbility)) + else if ((gBattleMons[gBattlerAttacker].status1 & STATUS1_PARALYSIS) && CanBeParalyzed(gBattlerAttacker, gBattlerTarget, targetAbility)) gBattleCommunication[MULTISTRING_CHOOSER] = 3; - else if ((gBattleMons[gBattlerAttacker].status1 & STATUS1_SLEEP) && CanBeSlept(gBattlerTarget, targetAbility, BLOCKED_BY_SLEEP_CLAUSE)) + else if ((gBattleMons[gBattlerAttacker].status1 & STATUS1_SLEEP) && CanBeSlept(gBattlerAttacker, gBattlerTarget, targetAbility, BLOCKED_BY_SLEEP_CLAUSE)) gBattleCommunication[MULTISTRING_CHOOSER] = 4; - else if ((gBattleMons[gBattlerAttacker].status1 & STATUS1_FROSTBITE) && CanGetFrostbite(gBattlerTarget)) + else if ((gBattleMons[gBattlerAttacker].status1 & STATUS1_FROSTBITE) && CanBeFrozen(gBattlerAttacker, gBattlerTarget, targetAbility)) gBattleCommunication[MULTISTRING_CHOOSER] = 5; else if (IsSleepClauseActiveForSide(GetBattlerSide(battler))) { @@ -11178,13 +11027,13 @@ static void Cmd_various(void) if (IsBattlerAlive(battler)) { SetBattlerShadowSpriteCallback(battler, gBattleMons[battler].species); - BattleLoadMonSpriteGfx(&gEnemyParty[gBattlerPartyIndexes[battler]], battler); + BattleLoadMonSpriteGfx(GetBattlerMon(battler), battler); } i = BATTLE_PARTNER(battler); if (IsBattlerAlive(i)) { SetBattlerShadowSpriteCallback(i, gBattleMons[i].species); - BattleLoadMonSpriteGfx(&gEnemyParty[gBattlerPartyIndexes[i]], i); + BattleLoadMonSpriteGfx(GetBattlerMon(i), i); } } gBattlescriptCurrInstr = cmd->nextInstr; @@ -11230,8 +11079,11 @@ static void Cmd_various(void) gSideTimers[GetBattlerSide(battler)].auroraVeilTimer = gBattleTurnCounter + 8; else gSideTimers[GetBattlerSide(battler)].auroraVeilTimer = gBattleTurnCounter + 5; - gSideTimers[GetBattlerSide(battler)].auroraVeilBattlerId = battler; - gBattleCommunication[MULTISTRING_CHOOSER] = 5; + + if (IsDoubleBattle() && CountAliveMonsInBattle(BATTLE_ALIVE_SIDE, gBattlerAttacker) == 2) + gBattleCommunication[MULTISTRING_CHOOSER] = 5; + else + gBattleCommunication[MULTISTRING_CHOOSER] = 5; } break; } @@ -11428,12 +11280,12 @@ static void Cmd_various(void) VARIOUS_ARGS(const u8 *failInstr); // Check to see if the initial target of this Sky Drop fainted before the 2nd turn of Sky Drop. // If so, make the move fail. If not, clear all of the statuses and continue the move. - if (gBattleStruct->skyDropTargets[gBattlerAttacker] == 0xFF) + if (gBattleStruct->skyDropTargets[gBattlerAttacker] == SKY_DROP_NO_TARGET) gBattlescriptCurrInstr = cmd->failInstr; else { - gBattleStruct->skyDropTargets[gBattlerAttacker] = 0xFF; - gBattleStruct->skyDropTargets[gBattlerTarget] = 0xFF; + gBattleStruct->skyDropTargets[gBattlerAttacker] = SKY_DROP_NO_TARGET; + gBattleStruct->skyDropTargets[gBattlerTarget] = SKY_DROP_NO_TARGET; gStatuses3[gBattlerTarget] &= ~(STATUS3_SKY_DROPPED | STATUS3_ON_AIR); gBattlescriptCurrInstr = cmd->nextInstr; } @@ -11446,14 +11298,14 @@ static void Cmd_various(void) case VARIOUS_SKY_DROP_YAWN: // If the mon that's sleeping due to Yawn was holding a Pokemon in Sky Drop, release the target and clear Sky Drop data. { VARIOUS_ARGS(); - if (gBattleStruct->skyDropTargets[gEffectBattler] != 0xFF && !(gStatuses3[gEffectBattler] & STATUS3_SKY_DROPPED)) + if (gBattleStruct->skyDropTargets[gEffectBattler] != SKY_DROP_NO_TARGET && !(gStatuses3[gEffectBattler] & STATUS3_SKY_DROPPED)) { // Set the target of Sky Drop as gEffectBattler gEffectBattler = gBattleStruct->skyDropTargets[gEffectBattler]; // Clear skyDropTargets data - gBattleStruct->skyDropTargets[gBattleStruct->skyDropTargets[gEffectBattler]] = 0xFF; - gBattleStruct->skyDropTargets[gEffectBattler] = 0xFF; + gBattleStruct->skyDropTargets[gBattleStruct->skyDropTargets[gEffectBattler]] = SKY_DROP_NO_TARGET; + gBattleStruct->skyDropTargets[gEffectBattler] = SKY_DROP_NO_TARGET; // If the target was in the middle of Outrage/Thrash/etc. when targeted by Sky Drop, confuse them on release and do proper animation if (gBattleMons[gEffectBattler].status2 & STATUS2_LOCK_CONFUSE && CanBeConfused(gEffectBattler)) @@ -11558,25 +11410,6 @@ static void Cmd_various(void) } return; } - // TODO: Convert this to a proper FORM_CHANGE type. - case VARIOUS_TRY_ACTIVATE_BATTLE_BOND: - { - VARIOUS_ARGS(); - if (gBattleMons[gBattlerAttacker].species == SPECIES_GRENINJA_BATTLE_BOND - && HasAttackerFaintedTarget() - && CalculateBattlerPartyCount(gBattlerTarget) > 1 - && !(gBattleStruct->battleBondTransformed[GetBattlerSide(gBattlerAttacker)] & (1u << gBattlerPartyIndexes[gBattlerAttacker]))) - { - gBattleStruct->battleBondTransformed[GetBattlerSide(gBattlerAttacker)] |= 1u << gBattlerPartyIndexes[gBattlerAttacker]; - PREPARE_SPECIES_BUFFER(gBattleTextBuff1, gBattleMons[gBattlerAttacker].species); - gBattleStruct->changedSpecies[GetBattlerSide(gBattlerAttacker)][gBattlerPartyIndexes[gBattlerAttacker]] = gBattleMons[gBattlerAttacker].species; - gBattleMons[gBattlerAttacker].species = SPECIES_GRENINJA_ASH; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_BattleBondActivatesOnMoveEndAttacker; - return; - } - break; - } case VARIOUS_CONSUME_BERRY: { VARIOUS_ARGS(bool8 fromBattler); @@ -11589,7 +11422,7 @@ static void Cmd_various(void) if (cmd->fromBattler) gLastUsedItem = gBattleMons[battler].item; - gBattleStruct->ateBerry[battler & BIT_SIDE] |= 1u << gBattlerPartyIndexes[battler]; + gBattleStruct->partyState[GetBattlerSide(battler)][gBattlerPartyIndexes[battler]].ateBerry = TRUE; gBattleScripting.battler = gEffectBattler = gBattlerTarget = battler; // Cover all berry effect battler cases. e.g. ChangeStatBuffs uses target ID if (ItemBattleEffects(ITEMEFFECT_USE_LAST_ITEM, battler, FALSE)) return; @@ -11772,25 +11605,16 @@ static void Cmd_various(void) gBattlescriptCurrInstr = cmd->nextInstr; return; } - case VARIOUS_JUMP_IF_LAST_USED_ITEM_HOLD_EFFECT: - { - VARIOUS_ARGS(u8 holdEffect, const u8 *jumpInstr); - if (GetItemHoldEffect(gLastUsedItem) == cmd->holdEffect) - gBattlescriptCurrInstr = cmd->jumpInstr; - else - gBattlescriptCurrInstr = cmd->nextInstr; - return; - } case VARIOUS_SAVE_BATTLER_ITEM: { VARIOUS_ARGS(); - gBattleResources->battleHistory->heldItems[battler] = gBattleMons[battler].item; + gBattleHistory->heldItems[battler] = gBattleMons[battler].item; break; } case VARIOUS_RESTORE_BATTLER_ITEM: { VARIOUS_ARGS(); - gBattleMons[battler].item = gBattleResources->battleHistory->heldItems[battler]; + gBattleMons[battler].item = gBattleHistory->heldItems[battler]; break; } case VARIOUS_BATTLER_ITEM_TO_LAST_USED_ITEM: @@ -11807,7 +11631,7 @@ static void Cmd_various(void) static void TryResetProtectUseCounter(u32 battler) { u32 lastMove = gLastResultingMoves[battler]; - u32 lastEffect = GetMoveEffect(lastMove); + enum BattleMoveEffects lastEffect = GetMoveEffect(lastMove); if (lastMove == MOVE_UNAVAILABLE || (!gBattleMoveEffects[lastEffect].usesProtectCounter && ((B_ALLY_SWITCH_FAIL_CHANCE >= GEN_9 && lastEffect != EFFECT_ALLY_SWITCH) @@ -11819,102 +11643,40 @@ static void Cmd_setprotectlike(void) { CMD_ARGS(); - bool32 fail = TRUE; + bool32 protectFails = TRUE; bool32 notLastTurn = TRUE; + u32 protectMethod = GetMoveProtectMethod(gCurrentMove); TryResetProtectUseCounter(gBattlerAttacker); + if (gCurrentTurnActionNumber == (gBattlersCount - 1)) notLastTurn = FALSE; if ((sProtectSuccessRates[gDisableStructs[gBattlerAttacker].protectUses] >= Random() && notLastTurn) - || (gCurrentMove == MOVE_WIDE_GUARD && B_WIDE_GUARD != GEN_5) - || (gCurrentMove == MOVE_QUICK_GUARD && B_QUICK_GUARD != GEN_5)) + || (protectMethod == PROTECT_WIDE_GUARD && B_WIDE_GUARD != GEN_5) + || (protectMethod == PROTECT_QUICK_GUARD && B_QUICK_GUARD != GEN_5)) { - if (!GetMoveProtectSide(gCurrentMove)) // Protects one mon only. + if (GetMoveEffect(gCurrentMove) == EFFECT_ENDURE) { - if (GetMoveEffect(gCurrentMove) == EFFECT_ENDURE) - { - gProtectStructs[gBattlerAttacker].endured = TRUE; - gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_BRACED_ITSELF; - } - else if (gCurrentMove == MOVE_DETECT || gCurrentMove == MOVE_PROTECT) - { - gProtectStructs[gBattlerAttacker].protected = TRUE; - gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_PROTECTED_ITSELF; - } - else if (gCurrentMove == MOVE_SPIKY_SHIELD) - { - gProtectStructs[gBattlerAttacker].spikyShielded = TRUE; - gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_PROTECTED_ITSELF; - } - else if (gCurrentMove == MOVE_KINGS_SHIELD) - { - gProtectStructs[gBattlerAttacker].kingsShielded = TRUE; - gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_PROTECTED_ITSELF; - } - else if (gCurrentMove == MOVE_BANEFUL_BUNKER) - { - gProtectStructs[gBattlerAttacker].banefulBunkered = TRUE; - gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_PROTECTED_ITSELF; - } - else if (gCurrentMove == MOVE_OBSTRUCT) - { - gProtectStructs[gBattlerAttacker].obstructed = TRUE; - gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_PROTECTED_ITSELF; - } - else if (gCurrentMove == MOVE_MAX_GUARD) - { - gProtectStructs[gBattlerAttacker].maxGuarded = TRUE; - gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_PROTECTED_ITSELF; - } - else if (gCurrentMove == MOVE_SILK_TRAP) - { - gProtectStructs[gBattlerAttacker].silkTrapped = TRUE; - gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_PROTECTED_ITSELF; - } - else if (gCurrentMove == MOVE_BURNING_BULWARK) - { - gProtectStructs[gBattlerAttacker].burningBulwarked = TRUE; - gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_PROTECTED_ITSELF; - } + gProtectStructs[gBattlerAttacker].endured = TRUE; + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_BRACED_ITSELF; + } + else if (GetProtectType(protectMethod) == PROTECT_TYPE_SIDE) + { + gProtectStructs[gBattlerAttacker].protected = protectMethod; + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_PROTECTED_TEAM; + } + else + { + gProtectStructs[gBattlerAttacker].protected = protectMethod; + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_PROTECTED_ITSELF; + } - gDisableStructs[gBattlerAttacker].protectUses++; - fail = FALSE; - } - else // Protects the whole side. - { - u8 side = GetBattlerSide(gBattlerAttacker); - if (gCurrentMove == MOVE_WIDE_GUARD && !(gSideStatuses[side] & SIDE_STATUS_WIDE_GUARD)) - { - gSideStatuses[side] |= SIDE_STATUS_WIDE_GUARD; - gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_PROTECTED_TEAM; - gDisableStructs[gBattlerAttacker].protectUses++; - fail = FALSE; - } - else if (gCurrentMove == MOVE_QUICK_GUARD && !(gSideStatuses[side] & SIDE_STATUS_QUICK_GUARD)) - { - gSideStatuses[side] |= SIDE_STATUS_QUICK_GUARD; - gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_PROTECTED_TEAM; - gDisableStructs[gBattlerAttacker].protectUses++; - fail = FALSE; - } - else if (gCurrentMove == MOVE_CRAFTY_SHIELD && !(gSideStatuses[side] & SIDE_STATUS_CRAFTY_SHIELD)) - { - gSideStatuses[side] |= SIDE_STATUS_CRAFTY_SHIELD; - gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_PROTECTED_TEAM; - gDisableStructs[gBattlerAttacker].protectUses++; - fail = FALSE; - } - else if (gCurrentMove == MOVE_MAT_BLOCK && !(gSideStatuses[side] & SIDE_STATUS_MAT_BLOCK)) - { - gSideStatuses[side] |= SIDE_STATUS_MAT_BLOCK; - gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_PROTECTED_TEAM; - fail = FALSE; - } - } + gDisableStructs[gBattlerAttacker].protectUses++; + protectFails = FALSE; } - if (fail) + if (protectFails) { gDisableStructs[gBattlerAttacker].protectUses = 0; gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_PROTECT_FAILED; @@ -12296,10 +12058,6 @@ 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 && IsBattlerAlive(gBattlerTarget))) - { - gBattleStruct->moveEffect2 = MOVE_EFFECT_STOCKPILE_WORE_OFF; - } gBattlescriptCurrInstr = cmd->nextInstr; } } @@ -12330,7 +12088,6 @@ static void Cmd_stockpiletohpheal(void) { gBattleStruct->moveDamage[gBattlerAttacker] = GetNonDynamaxMaxHP(gBattlerAttacker) / (1 << (3 - gDisableStructs[gBattlerAttacker].stockpileCounter)); gBattleScripting.animTurn = gDisableStructs[gBattlerAttacker].stockpileCounter; - gBattleStruct->moveEffect2 = MOVE_EFFECT_STOCKPILE_WORE_OFF; } else // Snatched move { @@ -12348,6 +12105,24 @@ static void Cmd_stockpiletohpheal(void) } } +void BS_RemoveStockpileCounters(void) +{ + NATIVE_ARGS(); + + if (GetMoveEffect(gCurrentMove) == EFFECT_SWALLOW + && gSpecialStatuses[gBattlerAttacker].parentalBondState == PARENTAL_BOND_1ST_HIT + && IsBattlerAlive(gBattlerTarget)) + { + gBattlescriptCurrInstr = cmd->nextInstr; + } + else + { + gDisableStructs[gBattlerAttacker].stockpileCounter = 0; + BattleScriptPush(cmd->nextInstr); + gBattlescriptCurrInstr = BattleScript_MoveEffectStockpileWoreOff; + } +} + // Sign change for drained HP handled in GetDrainedBigRootHp static void Cmd_setdrainedhp(void) { @@ -12433,7 +12208,8 @@ static u32 ChangeStatBuffs(s8 statValue, u32 statId, u32 flags, const u8 *BS_ptr { bool32 certain = FALSE; bool32 notProtectAffected = FALSE; - u32 index, battler, battlerAbility, battlerHoldEffect; + u32 index, battler, battlerAbility; + enum ItemHoldEffect battlerHoldEffect; bool32 affectsUser = (flags & MOVE_EFFECT_AFFECTS_USER); bool32 mirrorArmored = (flags & STAT_CHANGE_MIRROR_ARMOR); @@ -12778,8 +12554,27 @@ static void Cmd_twoturnmoveschargestringandanimation(void) gBattlescriptCurrInstr = cmd->nextInstr; } -static void Cmd_unused_0x8d(void) +static void Cmd_trynonvolatilestatus(void) { + CMD_ARGS(); + bool32 canInflictStatus = TRUE; + + if (!CanSetNonVolatileStatus(gBattlerAttacker, + gBattlerTarget, + GetBattlerAbility(gBattlerAttacker), + GetBattlerAbility(gBattlerTarget), + GetMoveNonVolatileStatus(gCurrentMove), + STATUS_RUN_SCRIPT)) + canInflictStatus = FALSE; + + if (canInflictStatus && DoesSubstituteBlockMove(gBattlerAttacker, gBattlerTarget, gCurrentMove)) + { + canInflictStatus = FALSE; + gBattlescriptCurrInstr = BattleScript_ButItFailed; + } + + if (canInflictStatus) + gBattlescriptCurrInstr = cmd->nextInstr; } static void Cmd_initmultihitstring(void) @@ -12810,7 +12605,7 @@ static void Cmd_forcerandomswitch(void) // Red card swaps attacker with target to get the animation correct, so here we check attacker which is really the target. Thanks GF... if (gBattleScripting.switchCase == B_SWITCH_RED_CARD && !(gBattleTypeFlags & BATTLE_TYPE_TRAINER) - && GetBattlerSide(gBattlerAttacker) == B_SIDE_OPPONENT) // Check opponent's red card activating + && !IsOnPlayerSide(gBattlerAttacker)) // Check opponent's red card activating { if (!WILD_DOUBLE_BATTLE) { @@ -12840,18 +12635,18 @@ static void Cmd_forcerandomswitch(void) // wild double battle when a player pokemon uses it against its partner if ((gBattleTypeFlags & BATTLE_TYPE_TRAINER) || (WILD_DOUBLE_BATTLE - && GetBattlerSide(gBattlerAttacker) == B_SIDE_OPPONENT - && GetBattlerSide(gBattlerTarget) == B_SIDE_PLAYER + && !IsOnPlayerSide(gBattlerAttacker) + && IsOnPlayerSide(gBattlerTarget) && IS_WHOLE_SIDE_ALIVE(gBattlerTarget)) || (WILD_DOUBLE_BATTLE - && GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER - && GetBattlerSide(gBattlerTarget) == B_SIDE_PLAYER) + && IsOnPlayerSide(gBattlerAttacker) + && IsOnPlayerSide(gBattlerTarget)) || redCardForcedSwitch ) { party = GetBattlerParty(gBattlerTarget); - if (BATTLE_TWO_VS_ONE_OPPONENT && GetBattlerSide(gBattlerTarget) == B_SIDE_OPPONENT) + if (BATTLE_TWO_VS_ONE_OPPONENT && !IsOnPlayerSide(gBattlerTarget)) { firstMonId = 0; lastMonId = 6; @@ -12893,7 +12688,7 @@ static void Cmd_forcerandomswitch(void) } else if (gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS) { - if (GetBattlerSide(gBattlerTarget) == B_SIDE_PLAYER) + if (IsOnPlayerSide(gBattlerTarget)) { firstMonId = 0; lastMonId = PARTY_SIZE; @@ -13107,13 +12902,20 @@ static void Cmd_setlightscreen(void) gBattlescriptCurrInstr = cmd->nextInstr; } +#define NOT_ENDURED 0 +#define FOCUS_SASHED 1 +#define FOCUS_BANDED 2 +#define AFFECTION_ENDURED 3 static void Cmd_tryKO(void) { CMD_ARGS(const u8 *failInstr); bool32 lands = FALSE; - u32 holdEffect = GetBattlerHoldEffect(gBattlerTarget, TRUE); + enum ItemHoldEffect holdEffect = GetBattlerHoldEffect(gBattlerTarget, TRUE); u16 targetAbility = GetBattlerAbility(gBattlerTarget); + u32 rand = Random() % 100; + u32 affectionScore = GetBattlerAffectionHearts(gBattlerTarget); + u32 endured = NOT_ENDURED; // Dynamaxed Pokemon cannot be hit by OHKO moves. if ((GetActiveGimmick(gBattlerTarget) == GIMMICK_DYNAMAX)) @@ -13128,14 +12930,21 @@ static void Cmd_tryKO(void) if (holdEffect == HOLD_EFFECT_FOCUS_BAND && (Random() % 100) < GetBattlerHoldEffectParam(gBattlerTarget)) { - gSpecialStatuses[gBattlerTarget].focusBanded = TRUE; + endured = FOCUS_BANDED; RecordItemEffectBattle(gBattlerTarget, holdEffect); } else if (holdEffect == HOLD_EFFECT_FOCUS_SASH && IsBattlerAtMaxHp(gBattlerTarget)) { - gSpecialStatuses[gBattlerTarget].focusSashed = TRUE; + endured = FOCUS_SASHED; RecordItemEffectBattle(gBattlerTarget, holdEffect); } + else if (B_AFFECTION_MECHANICS == TRUE && IsOnPlayerSide(gBattlerTarget) && affectionScore >= AFFECTION_THREE_HEARTS) + { + if ((affectionScore == AFFECTION_FIVE_HEARTS && rand < 20) + || (affectionScore == AFFECTION_FOUR_HEARTS && rand < 15) + || (affectionScore == AFFECTION_THREE_HEARTS && rand < 10)) + endured = AFFECTION_ENDURED; + } if (targetAbility == ABILITY_STURDY) { @@ -13170,13 +12979,13 @@ static void Cmd_tryKO(void) gBattleStruct->moveDamage[gBattlerTarget] = gBattleMons[gBattlerTarget].hp - 1; gBattleStruct->moveResultFlags[gBattlerTarget] |= MOVE_RESULT_FOE_ENDURED; } - else if (gSpecialStatuses[gBattlerTarget].focusBanded || gSpecialStatuses[gBattlerTarget].focusSashed) + else if (endured == FOCUS_BANDED || endured == FOCUS_SASHED) { gBattleStruct->moveDamage[gBattlerTarget] = gBattleMons[gBattlerTarget].hp - 1; gBattleStruct->moveResultFlags[gBattlerTarget] |= MOVE_RESULT_FOE_HUNG_ON; gLastUsedItem = gBattleMons[gBattlerTarget].item; } - else if (B_AFFECTION_MECHANICS == TRUE && gSpecialStatuses[gBattlerTarget].affectionEndured) + else if (endured == AFFECTION_ENDURED) { gBattleStruct->moveDamage[gBattlerTarget] = gBattleMons[gBattlerTarget].hp - 1; gBattleStruct->moveResultFlags[gBattlerTarget] |= MOVE_RESULT_FOE_ENDURED_AFFECTION; @@ -13199,17 +13008,13 @@ static void Cmd_tryKO(void) } } } +#undef NOT_ENDURED +#undef FOCUS_SASHED +#undef FOCUS_BANDED +#undef AFFECTION_ENDURED -// Super Fang -static void Cmd_damagetohalftargethp(void) +static void Cmd_unused_0x94(void) { - CMD_ARGS(); - - gBattleStruct->moveDamage[gBattlerTarget] = GetNonDynamaxHP(gBattlerTarget) / 2; - if (gBattleStruct->moveDamage[gBattlerTarget] == 0) - gBattleStruct->moveDamage[gBattlerTarget] = 1; - - gBattlescriptCurrInstr = cmd->nextInstr; } static void Cmd_copybidedmg(void) @@ -13308,7 +13113,6 @@ static void Cmd_setmist(void) else { gSideTimers[GetBattlerSide(gBattlerAttacker)].mistTimer = gBattleTurnCounter + 5; - gSideTimers[GetBattlerSide(gBattlerAttacker)].mistBattlerId = gBattlerAttacker; gSideStatuses[GetBattlerSide(gBattlerAttacker)] |= SIDE_STATUS_MIST; gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_SET_MIST; } @@ -13319,7 +13123,7 @@ static void Cmd_setfocusenergy(void) { CMD_ARGS(u8 battler); u8 battler = GetBattlerForBattleScript(cmd->battler); - u32 effect = GetMoveEffect(gCurrentMove); + enum BattleMoveEffects effect = GetMoveEffect(gCurrentMove); if ((effect == EFFECT_DRAGON_CHEER && (!(IsDoubleBattle()) || (gAbsentBattlerFlags & (1u << battler)))) || gBattleMons[battler].status2 & STATUS2_FOCUS_ENERGY_ANY) @@ -13350,7 +13154,7 @@ static void Cmd_transformdataexecution(void) gChosenMove = MOVE_UNAVAILABLE; gBattlescriptCurrInstr = cmd->nextInstr; if (gBattleMons[gBattlerTarget].status2 & STATUS2_TRANSFORMED - || gBattleStruct->illusion[gBattlerTarget].on + || gBattleStruct->illusion[gBattlerTarget].state == ILLUSION_ON || gStatuses3[gBattlerTarget] & STATUS3_SEMI_INVULNERABLE_NO_COMMANDER) { gBattleStruct->moveResultFlags[gBattlerTarget] |= MOVE_RESULT_FAILED; @@ -13520,21 +13324,12 @@ static void Cmd_metronome(void) ResetValuesForCalledMove(); } -static void Cmd_dmgtolevel(void) +static void Cmd_unused_0x9f(void) { - CMD_ARGS(); - - gBattleStruct->moveDamage[gBattlerTarget] = gBattleMons[gBattlerAttacker].level; - gBattlescriptCurrInstr = cmd->nextInstr; } -static void Cmd_psywavedamageeffect(void) +static void Cmd_unused_0xA0(void) { - CMD_ARGS(); - - s32 randDamage = B_PSYWAVE_DMG >= GEN_6 ? (Random() % 101) : ((Random() % 11) * 10); - gBattleStruct->moveDamage[gBattlerTarget] = gBattleMons[gBattlerAttacker].level * (randDamage + 50) / 100; - gBattlescriptCurrInstr = cmd->nextInstr; } static void Cmd_counterdamagecalculator(void) @@ -13837,7 +13632,7 @@ static void Cmd_copymovepermanently(void) for (i = 0; i < MAX_MON_MOVES; i++) { - if (gBattleMons[gBattlerAttacker].moves[i] == MOVE_SKETCH) + if (GetMoveEffect(gBattleMons[gBattlerAttacker].moves[i]) == EFFECT_SKETCH) continue; if (gBattleMons[gBattlerAttacker].moves[i] == gLastPrintedMoves[gBattlerTarget]) break; @@ -13955,10 +13750,8 @@ static void Cmd_trysetdestinybond(void) static void TrySetDestinyBondToHappen(void) { - u8 sideAttacker = GetBattlerSide(gBattlerAttacker); - u8 sideTarget = GetBattlerSide(gBattlerTarget); if (gBattleMons[gBattlerTarget].status2 & STATUS2_DESTINY_BOND - && sideAttacker != sideTarget + && !IsBattlerAlly(gBattlerAttacker, gBattlerTarget) && !(gHitMarker & HITMARKER_GRUDGE)) { gHitMarker |= HITMARKER_DESTINYBOND; @@ -13982,7 +13775,6 @@ static void Cmd_settailwind(void) if (!(gSideStatuses[side] & SIDE_STATUS_TAILWIND)) { gSideStatuses[side] |= SIDE_STATUS_TAILWIND; - gSideTimers[side].tailwindBattlerId = gBattlerAttacker; gSideTimers[side].tailwindTimer = gBattleTurnCounter + (B_TAILWIND_TURNS >= GEN_5 ? 4 : 3); gBattlescriptCurrInstr = cmd->nextInstr; } @@ -14048,8 +13840,8 @@ static void Cmd_tryspiteppreduce(void) gBattlescriptCurrInstr = cmd->nextInstr; // Don't cut off Sky Drop if pp is brought to zero. - if (gBattleMons[gBattlerTarget].pp[i] == 0 && gBattleStruct->skyDropTargets[gBattlerTarget] == 0xFF) - CancelMultiTurnMoves(gBattlerTarget); + if (gBattleMons[gBattlerTarget].pp[i] == 0 && gBattleStruct->skyDropTargets[gBattlerTarget] == SKY_DROP_NO_TARGET) + CancelMultiTurnMoves(gBattlerTarget, SKY_DROP_IGNORE); } else { @@ -14239,7 +14031,7 @@ static void Cmd_handlerollout(void) if (gBattleStruct->moveResultFlags[gBattlerTarget] & MOVE_RESULT_NO_EFFECT) { - CancelMultiTurnMoves(gBattlerAttacker); + CancelMultiTurnMoves(gBattlerAttacker, SKY_DROP_IGNORE); gBattlescriptCurrInstr = BattleScript_MoveMissedPause; } else @@ -14310,7 +14102,7 @@ static void Cmd_setembargo(void) else { gStatuses3[gBattlerTarget] |= STATUS3_EMBARGO; - gDisableStructs[gBattlerTarget].embargoTimer = 5; + gDisableStructs[gBattlerTarget].embargoTimer = gBattleTurnCounter + 5; gBattlescriptCurrInstr = cmd->nextInstr; } } @@ -14380,7 +14172,6 @@ static void Cmd_setsafeguard(void) { gSideStatuses[GetBattlerSide(gBattlerAttacker)] |= SIDE_STATUS_SAFEGUARD; gSideTimers[GetBattlerSide(gBattlerAttacker)].safeguardTimer = gBattleTurnCounter + 5; - gSideTimers[GetBattlerSide(gBattlerAttacker)].safeguardBattlerId = gBattlerAttacker; gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_SET_SAFEGUARD; } @@ -14452,7 +14243,7 @@ static bool32 SetTargetToNextPursuiter(u32 battlerDef) && GetMoveEffect(gChosenMoveByBattler[battler]) == EFFECT_PURSUIT && IsBattlerAlive(battlerDef) && IsBattlerAlive(battler) - && GetBattlerSide(battler) != GetBattlerSide(battlerDef) + && !IsBattlerAlly(battler, battlerDef) && (B_PURSUIT_TARGET >= GEN_4 || gBattleStruct->moveTarget[battler] == battlerDef) && !IsGimmickSelected(battler, GIMMICK_Z_MOVE) && !IsGimmickSelected(battler, GIMMICK_DYNAMAX) @@ -14486,8 +14277,12 @@ static void Cmd_jumpifnopursuitswitchdmg(void) } } -static void Cmd_unused_bb(void) +static void Cmd_tryrestorehpberry(void) { + CMD_ARGS(); + if (TryRestoreHPBerries(gBattlerAttacker, ITEMEFFECT_TRY_HEALING)) + return; + gBattlescriptCurrInstr = cmd->nextInstr; } // Belly Drum, Fillet Away @@ -14607,7 +14402,7 @@ static void Cmd_recoverbasedonsunlight(void) gBattlerTarget = gBattlerAttacker; if (gBattleMons[gBattlerAttacker].hp != gBattleMons[gBattlerAttacker].maxHP) { - if (gCurrentMove == MOVE_SHORE_UP) + if (GetMoveEffect(gCurrentMove) == EFFECT_SHORE_UP) { if (HasWeatherEffect() && gBattleWeather & B_WEATHER_SANDSTORM) gBattleStruct->moveDamage[gBattlerAttacker] = 20 * GetNonDynamaxMaxHP(gBattlerAttacker) / 30; @@ -14941,7 +14736,6 @@ static void Cmd_settorment(void) else { gBattleMons[gBattlerTarget].status2 |= STATUS2_TORMENT; - gDisableStructs[gBattlerTarget].tormentTimer = PERMANENT_TORMENT; // permanent gBattlescriptCurrInstr = cmd->nextInstr; } } @@ -15020,7 +14814,7 @@ static void Cmd_tryswapitems(void) // opponent can't swap items with player in regular battles if (gBattleTypeFlags & BATTLE_TYPE_TRAINER_HILL - || (GetBattlerSide(gBattlerAttacker) == B_SIDE_OPPONENT + || (!IsOnPlayerSide(gBattlerAttacker) && !(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_FRONTIER @@ -15096,9 +14890,9 @@ static void Cmd_tryswapitems(void) if (!(sideAttacker == sideTarget && IsPartnerMonFromSameTrainer(gBattlerAttacker))) { // if targeting your own side and you aren't in a multi battle, don't save items as stolen - if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER) + if (IsOnPlayerSide(gBattlerAttacker)) TrySaveExchangedItem(gBattlerAttacker, oldItemAtk); - if (GetBattlerSide(gBattlerTarget) == B_SIDE_PLAYER) + if (IsOnPlayerSide(gBattlerTarget)) TrySaveExchangedItem(gBattlerTarget, *newItemAtk); } @@ -15149,38 +14943,21 @@ static void Cmd_trycopyability(void) static void Cmd_trywish(void) { - CMD_ARGS(u8 turnNumber, const u8 *failInstr, const u8 *healBlockedInstr); + CMD_ARGS(const u8 *failInstr); - switch (cmd->turnNumber) + if (gStatuses3[gBattlerTarget] & STATUS3_HEAL_BLOCK) { - case 0: // use wish - if (gWishFutureKnock.wishCounter[gBattlerAttacker] <= gBattleTurnCounter) - { - gWishFutureKnock.wishCounter[gBattlerAttacker] = gBattleTurnCounter + 2; - gWishFutureKnock.wishPartyId[gBattlerAttacker] = gBattlerPartyIndexes[gBattlerAttacker]; - gBattlescriptCurrInstr = cmd->nextInstr; - } - else - { - gBattlescriptCurrInstr = cmd->failInstr; - } - break; - case 1: // heal effect - PREPARE_MON_NICK_WITH_PREFIX_BUFFER(gBattleTextBuff1, gBattlerTarget, gWishFutureKnock.wishPartyId[gBattlerTarget]) - if (B_WISH_HP_SOURCE >= GEN_5) - gBattleStruct->moveDamage[gBattlerTarget] = max(1, GetMonData(&GetBattlerParty(gBattlerTarget)[gWishFutureKnock.wishPartyId[gBattlerTarget]], MON_DATA_MAX_HP) / 2); - else - gBattleStruct->moveDamage[gBattlerTarget] = max(1, GetNonDynamaxMaxHP(gBattlerAttacker) / 2); - - gBattleStruct->moveDamage[gBattlerTarget] *= -1; - if (gStatuses3[gBattlerTarget] & STATUS3_HEAL_BLOCK) - gBattlescriptCurrInstr = cmd->healBlockedInstr; - else if (gBattleMons[gBattlerTarget].hp == gBattleMons[gBattlerTarget].maxHP) - gBattlescriptCurrInstr = cmd->failInstr; - else - gBattlescriptCurrInstr = cmd->nextInstr; - - break; + gBattlescriptCurrInstr = cmd->failInstr; + } + else if (gWishFutureKnock.wishCounter[gBattlerAttacker] <= gBattleTurnCounter) + { + gWishFutureKnock.wishCounter[gBattlerAttacker] = gBattleTurnCounter + 2; + gWishFutureKnock.wishPartyId[gBattlerAttacker] = gBattlerPartyIndexes[gBattlerAttacker]; + gBattlescriptCurrInstr = cmd->nextInstr; + } + else + { + gBattlescriptCurrInstr = cmd->failInstr; } } @@ -15323,7 +15100,7 @@ static void Cmd_tryswapabilities(void) } else { - if (GetBattlerSide(gBattlerAttacker) != GetBattlerSide(gBattlerTarget)) + if (!IsBattlerAlly(gBattlerAttacker, gBattlerTarget)) gBattleScripting.abilityPopupOverwrite = gBattleMons[gBattlerAttacker].ability; gLastUsedAbility = gBattleMons[gBattlerTarget].ability; gBattleMons[gBattlerTarget].ability = gDisableStructs[gBattlerTarget].overwrittenAbility = gBattleMons[gBattlerAttacker].ability; @@ -15349,12 +15126,11 @@ static void Cmd_tryimprison(void) } else { - u8 battler, sideAttacker; + u8 battler; - sideAttacker = GetBattlerSide(gBattlerAttacker); for (battler = 0; battler < gBattlersCount; battler++) { - if (sideAttacker != GetBattlerSide(battler)) + if (!IsBattlerAlly(gBattlerAttacker, battler)) { s32 attackerMoveId; for (attackerMoveId = 0; attackerMoveId < MAX_MON_MOVES; attackerMoveId++) @@ -15413,9 +15189,9 @@ static void Cmd_setuserstatus3(void) { gStatuses3[gBattlerAttacker] |= flags; if (flags & STATUS3_MAGNET_RISE) - gDisableStructs[gBattlerAttacker].magnetRiseTimer = 5; + gDisableStructs[gBattlerAttacker].magnetRiseTimer = gBattleTurnCounter + 5; if (flags & STATUS3_LASER_FOCUS) - gDisableStructs[gBattlerAttacker].laserFocusTimer = 2; + gDisableStructs[gBattlerAttacker].laserFocusTimer = gBattleTurnCounter + 2; gBattlescriptCurrInstr = cmd->nextInstr; } } @@ -16043,8 +15819,8 @@ static void Cmd_handleballthrow(void) case BALL_LOVE: if (gBattleMons[gBattlerTarget].species == gBattleMons[gBattlerAttacker].species) { - u8 gender1 = GetMonGender(&gEnemyParty[gBattlerPartyIndexes[gBattlerTarget]]); - u8 gender2 = GetMonGender(&gPlayerParty[gBattlerPartyIndexes[gBattlerAttacker]]); + u8 gender1 = GetMonGender(GetBattlerMon(gBattlerTarget)); + u8 gender2 = GetMonGender(GetBattlerMon(gBattlerAttacker)); if (gender1 != gender2 && gender1 != MON_GENDERLESS && gender2 != MON_GENDERLESS) ballMultiplier = 800; @@ -16126,7 +15902,7 @@ static void Cmd_handleballthrow(void) MarkBattlerForControllerExec(gBattlerAttacker); TryBattleFormChange(gBattlerTarget, FORM_CHANGE_END_BATTLE); gBattlescriptCurrInstr = BattleScript_SuccessBallThrow; - SetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattlerTarget]], MON_DATA_POKEBALL, &ballId); + SetMonData(GetBattlerMon(gBattlerTarget), MON_DATA_POKEBALL, &ballId); if (CalculatePlayerPartyCount() == PARTY_SIZE) gBattleCommunication[MULTISTRING_CHOOSER] = 0; @@ -16135,15 +15911,15 @@ static void Cmd_handleballthrow(void) if (ballId == BALL_HEAL) { - MonRestorePP(&gEnemyParty[gBattlerPartyIndexes[gBattlerTarget]]); - HealStatusConditions(&gEnemyParty[gBattlerPartyIndexes[gBattlerTarget]], STATUS1_ANY, gBattlerTarget); + MonRestorePP(GetBattlerMon(gBattlerTarget)); + HealStatusConditions(GetBattlerMon(gBattlerTarget), STATUS1_ANY, gBattlerTarget); gBattleMons[gBattlerTarget].hp = gBattleMons[gBattlerTarget].maxHP; - SetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattlerTarget]], MON_DATA_HP, &gBattleMons[gBattlerTarget].hp); + SetMonData(GetBattlerMon(gBattlerTarget), MON_DATA_HP, &gBattleMons[gBattlerTarget].hp); } else if (ballId == BALL_FRIEND) { u32 friendship = (B_FRIEND_BALL_MODIFIER >= GEN_8 ? 150 : 200); - SetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattlerTarget]], MON_DATA_FRIENDSHIP, &friendship); + SetMonData(GetBattlerMon(gBattlerTarget), MON_DATA_FRIENDSHIP, &friendship); } } else // mon may be caught, calculate shakes @@ -16185,7 +15961,7 @@ static void Cmd_handleballthrow(void) TryBattleFormChange(gBattlerTarget, FORM_CHANGE_END_BATTLE); gBattlescriptCurrInstr = BattleScript_SuccessBallThrow; - SetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattlerTarget]], MON_DATA_POKEBALL, &ballId); + SetMonData(GetBattlerMon(gBattlerTarget), MON_DATA_POKEBALL, &ballId); if (CalculatePlayerPartyCount() == PARTY_SIZE) gBattleCommunication[MULTISTRING_CHOOSER] = 0; @@ -16194,15 +15970,15 @@ static void Cmd_handleballthrow(void) if (ballId == BALL_HEAL) { - MonRestorePP(&gEnemyParty[gBattlerPartyIndexes[gBattlerTarget]]); - HealStatusConditions(&gEnemyParty[gBattlerPartyIndexes[gBattlerTarget]], STATUS1_ANY, gBattlerTarget); + MonRestorePP(GetBattlerMon(gBattlerTarget)); + HealStatusConditions(GetBattlerMon(gBattlerTarget), STATUS1_ANY, gBattlerTarget); gBattleMons[gBattlerTarget].hp = gBattleMons[gBattlerTarget].maxHP; - SetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattlerTarget]], MON_DATA_HP, &gBattleMons[gBattlerTarget].hp); + SetMonData(GetBattlerMon(gBattlerTarget), MON_DATA_HP, &gBattleMons[gBattlerTarget].hp); } else if (ballId == BALL_FRIEND) { u32 friendship = (B_FRIEND_BALL_MODIFIER >= GEN_8 ? 150 : 200); - SetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattlerTarget]], MON_DATA_FRIENDSHIP, &friendship); + SetMonData(GetBattlerMon(gBattlerTarget), MON_DATA_FRIENDSHIP, &friendship); } } else // not caught @@ -16324,22 +16100,22 @@ static void Cmd_givecaughtmon(void) { u16 lostItem = gBattleStruct->itemLost[B_SIDE_OPPONENT][gBattlerPartyIndexes[GetCatchingBattler()]].originalItem; if (lostItem != ITEM_NONE && GetItemPocket(lostItem) != POCKET_BERRIES) - SetMonData(&gEnemyParty[gBattlerPartyIndexes[GetCatchingBattler()]], MON_DATA_HELD_ITEM, &lostItem); // Restore non-berry items + SetMonData(GetBattlerMon(GetCatchingBattler()), MON_DATA_HELD_ITEM, &lostItem); // Restore non-berry items } - if (GiveMonToPlayer(&gEnemyParty[gBattlerPartyIndexes[GetCatchingBattler()]]) != MON_GIVEN_TO_PARTY + if (GiveMonToPlayer(GetBattlerMon(GetCatchingBattler())) != MON_GIVEN_TO_PARTY && gBattleCommunication[MULTISTRING_CHOOSER] != B_MSG_SWAPPED_INTO_PARTY) { if (!ShouldShowBoxWasFullMessage()) { gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_SENT_SOMEONES_PC; StringCopy(gStringVar1, GetBoxNamePtr(VarGet(VAR_PC_BOX_TO_SEND_MON))); - GetMonData(&gEnemyParty[gBattlerPartyIndexes[GetCatchingBattler()]], MON_DATA_NICKNAME, gStringVar2); + GetMonData(GetBattlerMon(GetCatchingBattler()), MON_DATA_NICKNAME, gStringVar2); } else { StringCopy(gStringVar1, GetBoxNamePtr(VarGet(VAR_PC_BOX_TO_SEND_MON))); // box the mon was sent to - GetMonData(&gEnemyParty[gBattlerPartyIndexes[GetCatchingBattler()]], MON_DATA_NICKNAME, gStringVar2); + GetMonData(GetBattlerMon(GetCatchingBattler()), MON_DATA_NICKNAME, gStringVar2); StringCopy(gStringVar3, GetBoxNamePtr(GetPCBoxToSendMon())); //box the mon was going to be sent to gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_SOMEONES_BOX_FULL; } @@ -16349,9 +16125,9 @@ static void Cmd_givecaughtmon(void) gBattleCommunication[MULTISTRING_CHOOSER]++; } - gBattleResults.caughtMonSpecies = GetMonData(&gEnemyParty[gBattlerPartyIndexes[GetCatchingBattler()]], MON_DATA_SPECIES, NULL); - GetMonData(&gEnemyParty[gBattlerPartyIndexes[GetCatchingBattler()]], MON_DATA_NICKNAME, gBattleResults.caughtMonNick); - gBattleResults.caughtMonBall = GetMonData(&gEnemyParty[gBattlerPartyIndexes[GetCatchingBattler()]], MON_DATA_POKEBALL, NULL); + gBattleResults.caughtMonSpecies = GetMonData(GetBattlerMon(GetCatchingBattler()), MON_DATA_SPECIES, NULL); + GetMonData(GetBattlerMon(GetCatchingBattler()), MON_DATA_NICKNAME, gBattleResults.caughtMonNick); + gBattleResults.caughtMonBall = GetMonData(GetBattlerMon(GetCatchingBattler()), MON_DATA_POKEBALL, NULL); gSelectedMonPartyId = PARTY_SIZE; gBattleCommunication[MULTIUSE_STATE] = 0; @@ -16368,8 +16144,8 @@ static void Cmd_trysetcaughtmondexflags(void) { CMD_ARGS(const u8 *failInstr); - u32 species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[GetCatchingBattler()]], MON_DATA_SPECIES, NULL); - u32 personality = GetMonData(&gEnemyParty[gBattlerPartyIndexes[GetCatchingBattler()]], MON_DATA_PERSONALITY, NULL); + u32 species = GetMonData(GetBattlerMon(GetCatchingBattler()), MON_DATA_SPECIES, NULL); + u32 personality = GetMonData(GetBattlerMon(GetCatchingBattler()), MON_DATA_PERSONALITY, NULL); if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(species), FLAG_GET_CAUGHT)) { @@ -16386,7 +16162,7 @@ static void Cmd_displaydexinfo(void) { CMD_ARGS(); - u16 species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[GetCatchingBattler()]], MON_DATA_SPECIES, NULL); + u16 species = GetMonData(GetBattlerMon(GetCatchingBattler()), MON_DATA_SPECIES, NULL); switch (gBattleCommunication[0]) { @@ -16397,7 +16173,7 @@ static void Cmd_displaydexinfo(void) case 1: if (!gPaletteFade.active) { - struct Pokemon *mon = &gEnemyParty[gBattlerPartyIndexes[GetCatchingBattler()]]; + struct Pokemon *mon = GetBattlerMon(GetCatchingBattler()); FreeAllWindowBuffers(); gBattleCommunication[TASK_ID] = DisplayCaughtMonDexPage(species, GetMonData(mon, MON_DATA_IS_SHINY), @@ -16553,14 +16329,14 @@ static void Cmd_trygivecaughtmonnick(void) case 2: if (!gPaletteFade.active) { - GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattlerTarget]], MON_DATA_NICKNAME, gBattleStruct->caughtMonNick); + GetMonData(GetBattlerMon(gBattlerTarget), MON_DATA_NICKNAME, gBattleStruct->caughtMonNick); FreeAllWindowBuffers(); MainCallback callback = CalculatePlayerPartyCount() == PARTY_SIZE ? ReshowBlankBattleScreenAfterMenu : BattleMainCB2; DoNamingScreen(NAMING_SCREEN_CAUGHT_MON, gBattleStruct->caughtMonNick, - GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattlerTarget]], MON_DATA_SPECIES), - GetMonGender(&gEnemyParty[gBattlerPartyIndexes[gBattlerTarget]]), - GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattlerTarget]], MON_DATA_PERSONALITY, NULL), + GetMonData(GetBattlerMon(gBattlerTarget), MON_DATA_SPECIES), + GetMonGender(GetBattlerMon(gBattlerTarget)), + GetMonData(GetBattlerMon(gBattlerTarget), MON_DATA_PERSONALITY, NULL), callback); gBattleCommunication[MULTIUSE_STATE]++; @@ -16569,7 +16345,7 @@ static void Cmd_trygivecaughtmonnick(void) case 3: if (gMain.callback2 == BattleMainCB2 && !gPaletteFade.active) { - SetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattlerTarget]], MON_DATA_NICKNAME, gBattleStruct->caughtMonNick); + SetMonData(GetBattlerMon(gBattlerTarget), MON_DATA_NICKNAME, gBattleStruct->caughtMonNick); gBattleCommunication[MULTIUSE_STATE]++; } break; @@ -16655,7 +16431,7 @@ static void Cmd_settelekinesis(void) else { gStatuses3[gBattlerTarget] |= STATUS3_TELEKINESIS; - gDisableStructs[gBattlerTarget].telekinesisTimer = 3; + gDisableStructs[gBattlerTarget].telekinesisTimer = gBattleTurnCounter + 3; gBattlescriptCurrInstr = cmd->nextInstr; } } @@ -16718,8 +16494,11 @@ static void Cmd_jumpifcaptivateaffected(void) } } -static void Cmd_unused(void) +static void Cmd_setnonvolatilestatus(void) { + CMD_ARGS(); + gEffectBattler = gBattlerTarget; + SetNonVolatileStatusCondition(gBattlerTarget, GetMoveNonVolatileStatus(gCurrentMove)); } static void Cmd_tryworryseed(void) @@ -16911,21 +16690,27 @@ void BS_DoStockpileStatChangesWearOff(void) static bool32 CriticalCapture(u32 odds) { u32 numCaught; + u32 totalDexCount; if (B_CRITICAL_CAPTURE == FALSE) return FALSE; + if (B_CRITICAL_CAPTURE_LOCAL_DEX == TRUE) + totalDexCount = HOENN_DEX_COUNT; + else + totalDexCount = NATIONAL_DEX_COUNT; + numCaught = GetNationalPokedexCount(FLAG_GET_CAUGHT); - if (numCaught <= (NATIONAL_DEX_COUNT * 30) / 650) + if (numCaught <= (totalDexCount * 30) / 650) odds = 0; - else if (numCaught <= (NATIONAL_DEX_COUNT * 150) / 650) + else if (numCaught <= (totalDexCount * 150) / 650) odds /= 2; - else if (numCaught <= (NATIONAL_DEX_COUNT * 300) / 650) + else if (numCaught <= (totalDexCount * 300) / 650) ; // odds = (odds * 100) / 100; - else if (numCaught <= (NATIONAL_DEX_COUNT * 450) / 650) + else if (numCaught <= (totalDexCount * 450) / 650) odds = (odds * 150) / 100; - else if (numCaught <= (NATIONAL_DEX_COUNT * 600) / 650) + else if (numCaught <= (totalDexCount * 600) / 650) odds *= 2; else odds = (odds * 250) / 100; @@ -16934,6 +16719,7 @@ static bool32 CriticalCapture(u32 odds) odds = (odds * (100 + B_CATCHING_CHARM_BOOST)) / 100; odds /= 6; + if ((Random() % 255) < odds) return TRUE; @@ -16973,7 +16759,7 @@ bool32 IsMoveAffectedByParentalBond(u32 move, u32 battler) return FALSE; } -static bool8 IsFinalStrikeEffect(u32 moveEffect) +static bool8 IsFinalStrikeEffect(enum BattleMoveEffects moveEffect) { u32 i; @@ -16997,7 +16783,7 @@ static bool32 CanAbilityPreventStatLoss(u32 abilityDef) return FALSE; } -static bool8 CanBurnHitThaw(u16 move) +bool32 CanBurnHitThaw(u16 move) { u8 i; @@ -17122,8 +16908,8 @@ u8 GetFirstFaintedPartyIndex(u8 battler) struct Pokemon *party = GetBattlerParty(battler); // Check whether partner is separate trainer. - if ((GetBattlerSide(battler) == B_SIDE_PLAYER && gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER) - || (GetBattlerSide(battler) == B_SIDE_OPPONENT && gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS)) + if ((IsOnPlayerSide(battler) && gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER) + || (!IsOnPlayerSide(battler) && gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS)) { if (GetBattlerPosition(battler) == B_POSITION_OPPONENT_LEFT || GetBattlerPosition(battler) == B_POSITION_PLAYER_LEFT) @@ -17154,7 +16940,7 @@ u8 GetFirstFaintedPartyIndex(u8 battler) void ApplyExperienceMultipliers(s32 *expAmount, u8 expGetterMonId, u8 faintedBattler) { - u32 holdEffect = GetMonHoldEffect(&gPlayerParty[expGetterMonId]); + enum ItemHoldEffect holdEffect = GetMonHoldEffect(&gPlayerParty[expGetterMonId]); if (IsTradedMon(&gPlayerParty[expGetterMonId])) *expAmount = (*expAmount * 150) / 100; @@ -17188,8 +16974,7 @@ void BS_ItemRestoreHP(void) u16 healAmount; u32 battler = MAX_BATTLERS_COUNT; u32 healParam = GetItemEffect(gLastUsedItem)[6]; - u32 side = GetBattlerSide(gBattlerAttacker); - struct Pokemon *party = GetSideParty(side); + struct Pokemon *party = GetBattlerParty(gBattlerAttacker); u16 hp = GetMonData(&party[gBattleStruct->itemPartyIndex[gBattlerAttacker]], MON_DATA_HP); u16 maxHP = GetMonData(&party[gBattleStruct->itemPartyIndex[gBattlerAttacker]], MON_DATA_MAX_HP); gBattleCommunication[MULTIUSE_STATE] = 0; @@ -17201,7 +16986,7 @@ void BS_ItemRestoreHP(void) else { // Track the number of Revives used in a battle. - if (hp == 0 && side == B_SIDE_PLAYER && gBattleResults.numRevivesUsed < 255) + if (hp == 0 && IsOnPlayerSide(gBattlerAttacker) && gBattleResults.numRevivesUsed < 255) gBattleResults.numRevivesUsed++; // Check if the recipient is an active battler. @@ -17259,10 +17044,9 @@ void BS_ItemCureStatus(void) { NATIVE_ARGS(const u8 *noStatusInstr); u32 battler = gBattlerAttacker; - u32 side = GetBattlerSide(gBattlerAttacker); u32 previousStatus2 = 0; bool32 statusChanged = FALSE; - struct Pokemon *party = GetSideParty(side); + struct Pokemon *party = GetBattlerParty(gBattlerAttacker); // Heal Status2 conditions if battler is active. if (gBattleStruct->itemPartyIndex[gBattlerAttacker] == gBattlerPartyIndexes[gBattlerAttacker]) @@ -17318,7 +17102,7 @@ void BS_ItemRestorePP(void) const u8 *effect = GetItemEffect(gLastUsedItem); u32 i, pp, maxPP, moveId, loopEnd; u32 battler = MAX_BATTLERS_COUNT; - struct Pokemon *mon = (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER) ? &gPlayerParty[gBattleStruct->itemPartyIndex[gBattlerAttacker]] : &gEnemyParty[gBattleStruct->itemPartyIndex[gBattlerAttacker]]; + struct Pokemon *mon = (IsOnPlayerSide(gBattlerAttacker)) ? &gPlayerParty[gBattleStruct->itemPartyIndex[gBattlerAttacker]] : &gEnemyParty[gBattleStruct->itemPartyIndex[gBattlerAttacker]]; // Check whether to apply to all moves. if (effect[4] & ITEM4_HEAL_PP_ONE) @@ -17417,16 +17201,6 @@ void BS_JumpIfShellTrap(void) gBattlescriptCurrInstr = cmd->nextInstr; } -void BS_JumpIfEmergencyExited(void) -{ - NATIVE_ARGS(u8 battler, const u8 *jumpInstr); - u8 battler = GetBattlerForBattleScript(cmd->battler); - if (gSpecialStatuses[battler].emergencyExited) - gBattlescriptCurrInstr = cmd->jumpInstr; - else - gBattlescriptCurrInstr = cmd->nextInstr; -} - void BS_JumpIfElectricAbilityAffected(void) { NATIVE_ARGS(u8 battler, u16 ability, const u8 *jumpInstr); @@ -17505,6 +17279,8 @@ void BS_SetRemoveTerrain(void) break; } break; + default: + break; } if (gFieldStatuses & statusFlag || statusFlag == 0) @@ -17513,7 +17289,7 @@ void BS_SetRemoveTerrain(void) } else { - u32 atkHoldEffect = GetBattlerHoldEffect(gBattlerAttacker, TRUE); + enum ItemHoldEffect atkHoldEffect = GetBattlerHoldEffect(gBattlerAttacker, TRUE); gFieldStatuses &= ~STATUS_FIELD_TERRAIN_ANY; gFieldStatuses |= statusFlag; @@ -17863,10 +17639,14 @@ void BS_TryUpperHand(void) { NATIVE_ARGS(const u8 *failInstr); + u32 abilityDef = GetBattlerAbility(gBattlerTarget); + u32 prio = GetChosenMovePriority(gBattlerTarget, abilityDef); + if (GetBattlerTurnOrderNum(gBattlerAttacker) > GetBattlerTurnOrderNum(gBattlerTarget) || gChosenMoveByBattler[gBattlerTarget] == MOVE_NONE || IsBattleMoveStatus(gChosenMoveByBattler[gBattlerTarget]) - || GetChosenMovePriority(gBattlerTarget) < 1 || GetChosenMovePriority(gBattlerTarget) > 3) // Fails if priority is less than 1 or greater than 3, if target already moved, or if using a status + || prio < 1 + || prio > 3) // Fails if priority is less than 1 or greater than 3, if target already moved, or if using a status gBattlescriptCurrInstr = cmd->failInstr; else gBattlescriptCurrInstr = cmd->nextInstr; @@ -17916,28 +17696,6 @@ void BS_AllySwitchFailChance(void) gBattlescriptCurrInstr = cmd->nextInstr; } -void BS_SetDynamicMoveCategory(void) -{ - NATIVE_ARGS(); - - switch (GetMoveEffect(gCurrentMove)) - { - case EFFECT_TERA_BLAST: - if (GetActiveGimmick(gBattlerAttacker) == GIMMICK_TERA) - gBattleStruct->swapDamageCategory = (GetCategoryBasedOnStats(gBattlerAttacker) != GetMoveCategory(gCurrentMove)); - break; - case EFFECT_TERA_STARSTORM: - if (GetActiveGimmick(gBattlerAttacker) == GIMMICK_TERA && gBattleMons[gBattlerAttacker].species == SPECIES_TERAPAGOS_STELLAR) - gBattleStruct->swapDamageCategory = (GetCategoryBasedOnStats(gBattlerAttacker) != GetMoveCategory(gCurrentMove)); - break; - default: - gBattleStruct->swapDamageCategory = (GetCategoryBasedOnStats(gBattlerAttacker) != GetMoveCategory(gCurrentMove)); - break; - } - - gBattlescriptCurrInstr = cmd->nextInstr; -} - void BS_RunStatChangeItems(void) { NATIVE_ARGS(u8 battler); @@ -17947,11 +17705,11 @@ void BS_RunStatChangeItems(void) ItemBattleEffects(ITEMEFFECT_STATS_CHANGED, GetBattlerForBattleScript(cmd->battler), FALSE); } -static void TryUpdateEvolutionTracker(u32 evolutionMethod, u32 upAmount, u16 usedMove) +static void TryUpdateEvolutionTracker(u32 evolutionCondition, u32 upAmount, u16 usedMove) { - u32 i; + u32 i, j; - if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER + if (IsOnPlayerSide(gBattlerAttacker) && !(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_RECORDED_LINK @@ -17966,31 +17724,35 @@ static void TryUpdateEvolutionTracker(u32 evolutionMethod, u32 upAmount, u16 use { if (SanitizeSpeciesId(evolutions[i].targetSpecies) == SPECIES_NONE) continue; + if (evolutions[i].params == NULL) + continue; - if (evolutions[i].method == evolutionMethod) + for (j = 0; evolutions[i].params[j].condition != CONDITIONS_END; j++) { - // 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) + if (evolutions[i].params[j].condition == evolutionCondition) { - case EVO_USE_MOVE_TWENTY_TIMES: - if (evolutions[i].param == usedMove) - SetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattlerAttacker]], MON_DATA_EVOLUTION_TRACKER, &val); - break; - 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; + // We only have 10 bits to use + u16 val = min(1023, GetMonData(GetBattlerMon(gBattlerAttacker), MON_DATA_EVOLUTION_TRACKER) + upAmount); + // Reset progress if you faint for the recoil method. + switch (evolutionCondition) + { + case IF_USED_MOVE_X_TIMES: + if (evolutions[i].params[j].arg1 == usedMove) + SetMonData(GetBattlerMon(gBattlerAttacker), MON_DATA_EVOLUTION_TRACKER, &val); + break; + case IF_RECOIL_DAMAGE_GE: + if (gBattleMons[gBattlerAttacker].hp == 0) + val = 0; + SetMonData(GetBattlerMon(gBattlerAttacker), MON_DATA_EVOLUTION_TRACKER, &val); + break; + case IF_DEFEAT_X_WITH_ITEMS: + if (GetMonData(GetBattlerMon(gBattlerTarget), MON_DATA_SPECIES) == evolutions[i].params[j].arg1 + && GetMonData(GetBattlerMon(gBattlerTarget), MON_DATA_HELD_ITEM) == evolutions[i].params[j].arg2) + SetMonData(GetBattlerMon(gBattlerAttacker), MON_DATA_EVOLUTION_TRACKER, &val); + break; + } + return; } - return; } } } @@ -17999,25 +17761,14 @@ static void TryUpdateEvolutionTracker(u32 evolutionMethod, u32 upAmount, u16 use void BS_TryUpdateRecoilTracker(void) { NATIVE_ARGS(); - u8 gender = GetMonGender(&gPlayerParty[gBattlerPartyIndexes[gBattlerAttacker]]); - - switch(gender) - { - case MON_MALE: - TryUpdateEvolutionTracker(EVO_RECOIL_DAMAGE_MALE, gBattleStruct->moveDamage[gBattlerAttacker], MOVE_NONE); - break; - case MON_FEMALE: - TryUpdateEvolutionTracker(EVO_RECOIL_DAMAGE_FEMALE, gBattleStruct->moveDamage[gBattlerAttacker], MOVE_NONE); - break; - } - + TryUpdateEvolutionTracker(IF_RECOIL_DAMAGE_GE, gBattleStruct->moveDamage[gBattlerAttacker], MOVE_NONE); gBattlescriptCurrInstr = cmd->nextInstr; } void BS_TryUpdateLeadersCrestTracker(void) { NATIVE_ARGS(); - TryUpdateEvolutionTracker(EVO_DEFEAT_THREE_WITH_ITEM, 1, MOVE_NONE); + TryUpdateEvolutionTracker(IF_DEFEAT_X_WITH_ITEMS, 1, MOVE_NONE); gBattlescriptCurrInstr = cmd->nextInstr; } @@ -18346,7 +18097,6 @@ void BS_StoreHealingWish(void) void BS_TryRevivalBlessing(void) { NATIVE_ARGS(const u8 *failInstr); - u32 side = GetBattlerSide(gBattlerAttacker); u8 index = GetFirstFaintedPartyIndex(gBattlerAttacker); // Move fails if there are no battlers to revive. @@ -18359,7 +18109,7 @@ void BS_TryRevivalBlessing(void) // Battler selected! Revive and go to next instruction. if (gSelectedMonPartyId != PARTY_SIZE) { - struct Pokemon *party = GetSideParty(side); + struct Pokemon *party = GetBattlerParty(gBattlerAttacker); u16 hp = GetMonData(&party[gSelectedMonPartyId], MON_DATA_MAX_HP) / 2; BtlController_EmitSetMonData(gBattlerAttacker, B_COMM_TO_CONTROLLER, REQUEST_HP_BATTLE, 1u << gSelectedMonPartyId, sizeof(hp), &hp); @@ -18618,7 +18368,7 @@ void BS_SwapStats(void) static void TrySetParalysis(const u8 *nextInstr, const u8 *failInstr) { - if (CanBeParalyzed(gBattlerTarget, GetBattlerAbility(gBattlerTarget))) + if (CanBeParalyzed(gBattlerAttacker, gBattlerTarget, GetBattlerAbility(gBattlerTarget))) { gBattleMons[gBattlerTarget].status1 |= STATUS1_PARALYSIS; gBattleCommunication[MULTISTRING_CHOOSER] = 3; @@ -18635,7 +18385,7 @@ static void TrySetParalysis(const u8 *nextInstr, const u8 *failInstr) static void TrySetPoison(const u8 *nextInstr, const u8 *failInstr) { - if (CanBePoisoned(gBattlerAttacker, gBattlerTarget, GetBattlerAbility(gBattlerTarget))) + if (CanBePoisoned(gBattlerAttacker, gBattlerTarget, GetBattlerAbility(gBattlerAttacker), GetBattlerAbility(gBattlerTarget))) { gBattleMons[gBattlerTarget].status1 |= STATUS1_POISON; gBattleCommunication[MULTISTRING_CHOOSER] = 0; @@ -18652,7 +18402,7 @@ static void TrySetPoison(const u8 *nextInstr, const u8 *failInstr) static void TrySetSleep(const u8 *nextInstr, const u8 *failInstr) { - if (CanBeSlept(gBattlerTarget, GetBattlerAbility(gBattlerTarget), BLOCKED_BY_SLEEP_CLAUSE)) + if (CanBeSlept(gBattlerAttacker, gBattlerTarget, GetBattlerAbility(gBattlerTarget), BLOCKED_BY_SLEEP_CLAUSE)) { if (B_SLEEP_TURNS >= GEN_5) gBattleMons[gBattlerTarget].status1 |= STATUS1_SLEEP_TURN((Random() % 3) + 2); @@ -18777,7 +18527,7 @@ void BS_TrySetTorment(void) && !IsAbilityOnSide(gBattlerTarget, ABILITY_AROMA_VEIL)) { gBattleMons[gBattlerTarget].status2 |= STATUS2_TORMENT; - gDisableStructs[gBattlerTarget].tormentTimer = 3; // 3 turns excluding current turn + gDisableStructs[gBattlerTarget].tormentTimer = gBattleTurnCounter + 3; // 3 turns excluding current turn gBattleCommunication[MULTISTRING_CHOOSER] = 3; gEffectBattler = gBattlerTarget; gBattlescriptCurrInstr = cmd->nextInstr; @@ -18919,7 +18669,7 @@ void BS_TryIntimidatEjectpack(void) { gProtectStructs[battler].statFell = FALSE; gProtectStructs[partnerBattler].statFell = FALSE; - AI_DATA->ejectPackSwitch = TRUE; + gAiLogicData->ejectPackSwitch = TRUE; gBattleScripting.battler = affectedBattler; gLastUsedItem = gBattleMons[affectedBattler].item; RecordItemEffectBattle(affectedBattler, HOLD_EFFECT_EJECT_PACK); @@ -18927,3 +18677,35 @@ void BS_TryIntimidatEjectpack(void) gBattlescriptCurrInstr = BattleScript_EjectPackActivate_Ret; } } + +void BS_JumpIfCanGigantamax(void) +{ + NATIVE_ARGS(u8 battler, const u8 *jumpInstr); + u32 battler = GetBattlerForBattleScript(cmd->battler); + + if (GetMonData(GetBattlerMon(battler), MON_DATA_GIGANTAMAX_FACTOR) + && GetGMaxTargetSpecies(gBattleMons[battler].species) != SPECIES_NONE) + gBattlescriptCurrInstr = cmd->jumpInstr; + else + gBattlescriptCurrInstr = cmd->nextInstr; +} + +void BS_JumpIfLastUsedItemHoldEffect(void) +{ + NATIVE_ARGS(u8 holdEffect, u16 secondaryId, const u8 *jumpInstr); + if (GetItemHoldEffect(gLastUsedItem) == cmd->holdEffect + && (cmd->secondaryId == 0 || GetItemSecondaryId(gLastUsedItem) == cmd->secondaryId)) + gBattlescriptCurrInstr = cmd->jumpInstr; + else + gBattlescriptCurrInstr = cmd->nextInstr; +} + +void BS_JumpIfNoWhiteOut(void) +{ + NATIVE_ARGS(const u8 *jumpInstr); + + if (FlagGet(B_FLAG_NO_WHITEOUT)) + gBattlescriptCurrInstr = cmd->jumpInstr; + else + gBattlescriptCurrInstr = cmd->nextInstr; +} diff --git a/src/battle_setup.c b/src/battle_setup.c index a4add007f9..5c6a01c932 100644 --- a/src/battle_setup.c +++ b/src/battle_setup.c @@ -2,6 +2,7 @@ #include "battle.h" #include "load_save.h" #include "battle_setup.h" +#include "battle_tower.h" #include "battle_transition.h" #include "main.h" #include "task.h" @@ -11,6 +12,7 @@ #include "metatile_behavior.h" #include "field_player_avatar.h" #include "fieldmap.h" +#include "follower_npc.h" #include "random.h" #include "starter_choose.h" #include "script_pokemon_util.h" @@ -247,6 +249,7 @@ static void Task_BattleStart(u8 taskId) case 1: if (IsBattleTransitionDone() == TRUE) { + PrepareForFollowerNPCBattle(); CleanupOverworldWindowsAndTilemaps(); SetMainCallback2(CB2_InitBattle); RestartWildEncounterImmunitySteps(); @@ -328,7 +331,11 @@ static void DoStandardWildBattle(bool32 isDouble) StopPlayerAvatar(); gMain.savedCallback = CB2_EndWildBattle; gBattleTypeFlags = 0; - if (isDouble) + if (IsNPCFollowerWildBattle()) + { + gBattleTypeFlags |= BATTLE_TYPE_MULTI | BATTLE_TYPE_INGAME_PARTNER | BATTLE_TYPE_DOUBLE; + } + else if (isDouble) gBattleTypeFlags |= BATTLE_TYPE_DOUBLE; if (InBattlePyramid()) { @@ -575,6 +582,15 @@ static void CB2_EndWildBattle(void) CpuFill16(0, (void *)(BG_PLTT), BG_PLTT_SIZE); ResetOamRange(0, 128); + if (IsNPCFollowerWildBattle()) + { + RestorePartyAfterFollowerNPCBattle(); + if (FNPC_FLAG_HEAL_AFTER_FOLLOWER_BATTLE != 0 + && (FNPC_FLAG_HEAL_AFTER_FOLLOWER_BATTLE == FNPC_ALWAYS + || FlagGet(FNPC_FLAG_HEAL_AFTER_FOLLOWER_BATTLE))) + HealPlayerParty(); + } + if (IsPlayerDefeated(gBattleOutcome) == TRUE && !InBattlePyramid() && !InBattlePike()) { SetMainCallback2(CB2_WhiteOut); @@ -757,7 +773,7 @@ u8 GetWildBattleTransition(void) u8 GetTrainerBattleTransition(void) { - u8 minPartyCount; + u8 minPartyCount = 1; u8 transitionType; u8 enemyLevel; u8 playerLevel; @@ -777,10 +793,15 @@ u8 GetTrainerBattleTransition(void) || trainerClass == TRAINER_CLASS_AQUA_ADMIN) return B_TRANSITION_AQUA; - if (IsTrainerDoubleBattle(trainerId)) - minPartyCount = 2; // double battles always at least have 2 Pokémon. - else + switch (GetTrainerBattleType(trainerId)) + { + case TRAINER_BATTLE_TYPE_SINGLES: minPartyCount = 1; + break; + case TRAINER_BATTLE_TYPE_DOUBLES: + minPartyCount = 2; // double battles always at least have 2 Pokémon. + break; + } transitionType = GetBattleTransitionTypeByMap(); enemyLevel = GetSumOfEnemyPartyLevel(trainerId, minPartyCount); @@ -1085,9 +1106,9 @@ void ConfigureTwoTrainersBattle(u8 trainerObjEventId, const u8 *trainerScript) gSelectedObjectEvent = trainerObjEventId; gSpecialVar_LastTalked = gObjectEvents[trainerObjEventId].localId; - if (gApproachingTrainerId == 0) + if (gApproachingTrainerId == 0) TrainerBattleLoadArgs(trainerScript + 1); - else + else TrainerBattleLoadArgsSecondTrainer(trainerScript + 1); BattleSetup_ConfigureTrainerBattle(trainerScript + 1); @@ -1161,9 +1182,24 @@ void ClearTrainerFlag(u16 trainerId) void BattleSetup_StartTrainerBattle(void) { if (gNoOfApproachingTrainers == 2) - gBattleTypeFlags = (BATTLE_TYPE_DOUBLE | BATTLE_TYPE_TWO_OPPONENTS | BATTLE_TYPE_TRAINER); + { + if (FollowerNPCIsBattlePartner()) + gBattleTypeFlags = (BATTLE_TYPE_MULTI | BATTLE_TYPE_DOUBLE | BATTLE_TYPE_INGAME_PARTNER | BATTLE_TYPE_TWO_OPPONENTS | BATTLE_TYPE_TRAINER); + else + gBattleTypeFlags = (BATTLE_TYPE_DOUBLE | BATTLE_TYPE_TWO_OPPONENTS | BATTLE_TYPE_TRAINER); + } else - gBattleTypeFlags = (BATTLE_TYPE_TRAINER); + { + if (FollowerNPCIsBattlePartner()) + { + gBattleTypeFlags = (BATTLE_TYPE_MULTI | BATTLE_TYPE_INGAME_PARTNER | BATTLE_TYPE_DOUBLE | BATTLE_TYPE_TRAINER); + TRAINER_BATTLE_PARAM.opponentB = 0xFFFF; + } + else + { + gBattleTypeFlags = (BATTLE_TYPE_TRAINER); + } + } if (InBattlePyramid()) { @@ -1253,6 +1289,15 @@ static void CB2_EndTrainerBattle(void) { HandleBattleVariantEndParty(); + if (FollowerNPCIsBattlePartner()) + { + RestorePartyAfterFollowerNPCBattle(); + if (FNPC_FLAG_HEAL_AFTER_FOLLOWER_BATTLE != 0 + && (FNPC_FLAG_HEAL_AFTER_FOLLOWER_BATTLE == FNPC_ALWAYS + || FlagGet(FNPC_FLAG_HEAL_AFTER_FOLLOWER_BATTLE))) + HealPlayerParty(); + } + if (TRAINER_BATTLE_PARAM.opponentA == TRAINER_SECRET_BASE) { DowngradeBadPoison(); @@ -1260,11 +1305,15 @@ static void CB2_EndTrainerBattle(void) } else if (IsPlayerDefeated(gBattleOutcome) == TRUE) { - if (InBattlePyramid() || InTrainerHillChallenge() || (!NoAliveMonsForPlayer())) + if (InBattlePyramid() || InTrainerHillChallenge() || (!NoAliveMonsForPlayer()) || FlagGet(B_FLAG_NO_WHITEOUT)) SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic); else SetMainCallback2(CB2_WhiteOut); } + else if (DidPlayerForfeitNormalTrainerBattle()) + { + SetMainCallback2(CB2_WhiteOut); + } else { SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic); diff --git a/src/battle_terastal.c b/src/battle_terastal.c index 0c29d20f27..6984f3fc6c 100644 --- a/src/battle_terastal.c +++ b/src/battle_terastal.c @@ -20,8 +20,6 @@ // 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); @@ -29,7 +27,7 @@ void ActivateTera(u32 battler) // 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 + && IsOnPlayerSide(battler) && !(IsDoubleBattle() && !IsPartnerMonFromSameTrainer(battler))) { FlagClear(B_FLAG_TERA_ORB_CHARGED); @@ -39,6 +37,9 @@ void ActivateTera(u32 battler) PREPARE_TYPE_BUFFER(gBattleTextBuff1, GetBattlerTeraType(battler)); if (TryBattleFormChange(gBattlerAttacker, FORM_CHANGE_BATTLE_TERASTALLIZATION)) BattleScriptExecute(BattleScript_TeraFormChange); + else if (gBattleStruct->illusion[gBattlerAttacker].state == ILLUSION_ON + && DoesSpeciesHaveFormChangeMethod(GetIllusionMonSpecies(gBattlerAttacker), FORM_CHANGE_BATTLE_TERASTALLIZATION)) + BattleScriptExecute(BattleScript_IllusionOffAndTerastallization); else BattleScriptExecute(BattleScript_Terastallization); } @@ -61,16 +62,16 @@ void ApplyBattlerVisualsForTeraAnim(u32 battler) // Returns whether a battler can Terastallize. bool32 CanTerastallize(u32 battler) { - u32 holdEffect = GetBattlerHoldEffect(battler, FALSE); - + enum ItemHoldEffect holdEffect = GetBattlerHoldEffect(battler, FALSE); + if (gBattleMons[battler].status2 & STATUS2_TRANSFORMED && GET_BASE_SPECIES_ID(gBattleMons[battler].species) == SPECIES_TERAPAGOS) return FALSE; - + // Prevents Zigzagoon from terastalizing in vanilla. - if (gBattleTypeFlags & BATTLE_TYPE_FIRST_BATTLE && GetBattlerSide(battler) == B_SIDE_OPPONENT) + if (gBattleTypeFlags & BATTLE_TYPE_FIRST_BATTLE && !IsOnPlayerSide(battler)) return FALSE; - if (TESTING || GetBattlerSide(battler) == B_SIDE_OPPONENT) + if (TESTING || !IsOnPlayerSide(battler)) { // Skip all other checks in this block, go to HasTrainerUsedGimmick } @@ -110,7 +111,7 @@ bool32 CanTerastallize(u32 battler) // Returns a battler's Tera type. u32 GetBattlerTeraType(u32 battler) { - return GetMonData(&GetBattlerParty(battler)[gBattlerPartyIndexes[battler]], MON_DATA_TERA_TYPE); + return GetMonData(GetBattlerMon(battler), MON_DATA_TERA_TYPE); } // Uses up a type's Stellar boost. diff --git a/src/battle_tower.c b/src/battle_tower.c index 73bea47899..19a123c412 100644 --- a/src/battle_tower.c +++ b/src/battle_tower.c @@ -75,7 +75,6 @@ static void FillTentTrainerParty_(u16 trainerId, u8 firstMonId, u8 monCount); static void FillFactoryFrontierTrainerParty(u16 trainerId, u8 firstMonId); static void FillFactoryTentTrainerParty(u16 trainerId, u8 firstMonId); static u8 GetFrontierTrainerFixedIvs(u16 trainerId); -static void FillPartnerParty(u16 trainerId); #if FREE_BATTLE_TOWER_E_READER == FALSE static void SetEReaderTrainerChecksum(struct BattleTowerEReaderTrainer *ereaderTrainer); #endif //FREE_BATTLE_TOWER_E_READER @@ -2656,8 +2655,8 @@ static void SetTowerInterviewData(void) StripExtCtrlCodes(text); StringCopy(gSaveBlock2Ptr->frontier.towerInterview.opponentName, text); GetBattleTowerTrainerLanguage(&gSaveBlock2Ptr->frontier.towerInterview.opponentLanguage, TRAINER_BATTLE_PARAM.opponentA); - gSaveBlock2Ptr->frontier.towerInterview.opponentSpecies = GetMonData(&gEnemyParty[gBattlerPartyIndexes[1]], MON_DATA_SPECIES, NULL); - gSaveBlock2Ptr->frontier.towerInterview.playerSpecies = GetMonData(&gPlayerParty[gBattlerPartyIndexes[0]], MON_DATA_SPECIES, NULL); + gSaveBlock2Ptr->frontier.towerInterview.opponentSpecies = GetMonData(GetBattlerMon(1), MON_DATA_SPECIES, NULL); + gSaveBlock2Ptr->frontier.towerInterview.playerSpecies = GetMonData(GetBattlerMon(0), MON_DATA_SPECIES, NULL); for (i = 0; i < VANILLA_POKEMON_NAME_LENGTH + 1; i++) gSaveBlock2Ptr->frontier.towerInterview.opponentMonNickname[i] = gBattleMons[0].nickname[i]; gSaveBlock2Ptr->frontier.towerBattleOutcome = gBattleOutcome; @@ -2958,7 +2957,7 @@ void TryHideBattleTowerReporter(void) #define STEVEN_OTID 61226 -static void FillPartnerParty(u16 trainerId) +void FillPartnerParty(u16 trainerId) { s32 i, j, k; u32 firstIdPart = 0, secondIdPart = 0, thirdIdPart = 0; diff --git a/src/battle_transition.c b/src/battle_transition.c index 58882327f8..fe7188203b 100644 --- a/src/battle_transition.c +++ b/src/battle_transition.c @@ -88,6 +88,7 @@ struct RectangularSpiralLine typedef bool8 (*TransitionStateFunc)(struct Task *task); typedef bool8 (*TransitionSpriteCallback)(struct Sprite *sprite); +typedef bool8 (*TransitionSpriteCallbackPartner)(struct Sprite *sprite); static bool8 Transition_StartIntro(struct Task *); static bool8 Transition_WaitForIntro(struct Task *); @@ -277,11 +278,13 @@ static bool8 IsIntroTaskDone(void); static bool16 UpdateRectangularSpiralLine(const s16 *const *, struct RectangularSpiralLine *); static void SpriteCB_FldEffPokeballTrail(struct Sprite *); static void SpriteCB_MugshotTrainerPic(struct Sprite *); +static void SpriteCB_MugshotTrainerPicPartner(struct Sprite *); static void SpriteCB_WhiteBarFade(struct Sprite *); static bool8 MugshotTrainerPic_Pause(struct Sprite *); static bool8 MugshotTrainerPic_Init(struct Sprite *); static bool8 MugshotTrainerPic_Slide(struct Sprite *); static bool8 MugshotTrainerPic_SlideSlow(struct Sprite *); +static bool8 MugshotTrainerPic_SlidePartner(struct Sprite *); static bool8 MugshotTrainerPic_SlideOffscreen(struct Sprite *); static s16 sDebug_RectangularSpiralData; @@ -544,6 +547,17 @@ static const TransitionSpriteCallback sMugshotTrainerPicFuncs[] = MugshotTrainerPic_Pause }; +static const TransitionSpriteCallbackPartner sMugshotTrainerPicFuncsPartner[] = +{ + MugshotTrainerPic_Pause, + MugshotTrainerPic_Init, + MugshotTrainerPic_SlidePartner, + MugshotTrainerPic_SlideSlow, + MugshotTrainerPic_Pause, + MugshotTrainerPic_SlideOffscreen, + MugshotTrainerPic_Pause +}; + // One element per slide direction. // Sign of acceleration is opposite speed, so slide decelerates. static const s16 sTrainerPicSlideSpeeds[2] = {12, -12}; @@ -1355,6 +1369,7 @@ static void InitPatternWeaveTransition(struct Task *task) sTransitionData->WIN0V = DISPLAY_HEIGHT; sTransitionData->BLDCNT = BLDCNT_TGT1_BG0 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL; sTransitionData->BLDALPHA = BLDALPHA_BLEND(task->tBlendTarget2, task->tBlendTarget1); + UpdateShadowColor(RGB_GRAY); for (i = 0; i < DISPLAY_HEIGHT; i++) gScanlineEffectRegBuffers[1][i] = DISPLAY_WIDTH; @@ -2216,8 +2231,10 @@ static void VBlankCB_Wave(void) #define tBottomBannerX data[3] #define tTimer data[3] // Re-used #define tFadeSpread data[4] -#define tOpponentSpriteId data[13] +#define tOpponentSpriteAId data[11] +#define tOpponentSpriteBId data[12] #define tPlayerSpriteId data[14] +#define tPartnerSpriteId data[13] // Sprite data for trainer sprites in mugshots #define sState data[0] @@ -2358,14 +2375,27 @@ static bool8 Mugshot_StartOpponentSlide(struct Task *task) sTransitionData->BG0HOFS_Lower -= 8; sTransitionData->BG0HOFS_Upper += 8; - SetTrainerPicSlideDirection(task->tOpponentSpriteId, 0); + SetTrainerPicSlideDirection(task->tOpponentSpriteAId, 0); + if (TRAINER_BATTLE_PARAM.opponentB != TRAINER_NONE && gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS) + { + SetTrainerPicSlideDirection(task->tOpponentSpriteBId, 0); + } SetTrainerPicSlideDirection(task->tPlayerSpriteId, 1); + if (gPartnerTrainerId != TRAINER_PARTNER(PARTNER_NONE) && gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER) + { + SetTrainerPicSlideDirection(task->tPartnerSpriteId, 1); + } // Start opponent slide - IncrementTrainerPicState(task->tOpponentSpriteId); + IncrementTrainerPicState(task->tOpponentSpriteAId); PlaySE(SE_MUGSHOT); + if (TRAINER_BATTLE_PARAM.opponentB != TRAINER_NONE && gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS) + { + IncrementTrainerPicState(task->tOpponentSpriteBId); + } + sTransitionData->VBlank_DMA++; return FALSE; } @@ -2376,9 +2406,13 @@ static bool8 Mugshot_WaitStartPlayerSlide(struct Task *task) sTransitionData->BG0HOFS_Upper += 8; // Start player's slide in once the opponent is finished - if (IsTrainerPicSlideDone(task->tOpponentSpriteId)) + if (IsTrainerPicSlideDone(task->tOpponentSpriteAId)) { task->tState++; + if (gPartnerTrainerId != TRAINER_PARTNER(PARTNER_NONE) && gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER) + { + IncrementTrainerPicState(task->tPartnerSpriteId); + } IncrementTrainerPicState(task->tPlayerSpriteId); } return FALSE; @@ -2389,20 +2423,49 @@ static bool8 Mugshot_WaitPlayerSlide(struct Task *task) sTransitionData->BG0HOFS_Lower -= 8; sTransitionData->BG0HOFS_Upper += 8; - if (IsTrainerPicSlideDone(task->tPlayerSpriteId)) + if (gPartnerTrainerId != TRAINER_PARTNER(PARTNER_NONE) && gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER) { - sTransitionData->VBlank_DMA = FALSE; - SetVBlankCallback(NULL); - DmaStop(0); - memset(gScanlineEffectRegBuffers[0], 0, DISPLAY_HEIGHT * 2); - memset(gScanlineEffectRegBuffers[1], 0, DISPLAY_HEIGHT * 2); - SetGpuReg(REG_OFFSET_WIN0H, DISPLAY_WIDTH); - SetGpuReg(REG_OFFSET_BLDY, 0); - task->tState++; - task->tTimer = 0; - task->tFadeSpread = 0; - sTransitionData->BLDCNT = BLDCNT_TGT1_ALL | BLDCNT_EFFECT_LIGHTEN; - SetVBlankCallback(VBlankCB_MugshotsFadeOut); + if (IsTrainerPicSlideDone(task->tPartnerSpriteId)) + { + sTransitionData->VBlank_DMA = FALSE; + SetVBlankCallback(NULL); + DmaStop(0); + memset(gScanlineEffectRegBuffers[0], 0, DISPLAY_HEIGHT * 2); + memset(gScanlineEffectRegBuffers[1], 0, DISPLAY_HEIGHT * 2); + SetGpuReg(REG_OFFSET_WIN0H, DISPLAY_WIDTH); + SetGpuReg(REG_OFFSET_BLDY, 0); + task->tState++; + task->tTimer = 0; + task->tFadeSpread = 0; + sTransitionData->BLDCNT = BLDCNT_TGT1_ALL | BLDCNT_EFFECT_LIGHTEN; + SetVBlankCallback(VBlankCB_MugshotsFadeOut); + } + else + { + return FALSE; + } + } + else + { + if (IsTrainerPicSlideDone(task->tPlayerSpriteId)) + { + sTransitionData->VBlank_DMA = FALSE; + SetVBlankCallback(NULL); + DmaStop(0); + memset(gScanlineEffectRegBuffers[0], 0, DISPLAY_HEIGHT * 2); + memset(gScanlineEffectRegBuffers[1], 0, DISPLAY_HEIGHT * 2); + SetGpuReg(REG_OFFSET_WIN0H, DISPLAY_WIDTH); + SetGpuReg(REG_OFFSET_BLDY, 0); + task->tState++; + task->tTimer = 0; + task->tFadeSpread = 0; + sTransitionData->BLDCNT = BLDCNT_TGT1_ALL | BLDCNT_EFFECT_LIGHTEN; + SetVBlankCallback(VBlankCB_MugshotsFadeOut); + } + else + { + return FALSE; + } } return FALSE; } @@ -2517,48 +2580,83 @@ static void HBlankCB_Mugshots(void) static void Mugshots_CreateTrainerPics(struct Task *task) { - struct Sprite *opponentSprite, *playerSprite; + struct Sprite *opponentSpriteA, *opponentSpriteB=0, *playerSprite, *partnerSprite=0; - u8 trainerPicId = GetTrainerPicFromId(TRAINER_BATTLE_PARAM.opponentA); - s16 opponentRotationScales = 0; + u8 trainerAPicId = GetTrainerPicFromId(TRAINER_BATTLE_PARAM.opponentA); + u8 trainerBPicId = GetTrainerPicFromId(TRAINER_BATTLE_PARAM.opponentB); + u8 partnerPicId = gTrainerPicToTrainerBackPic[GetTrainerPicFromId(gPartnerTrainerId)]; + s16 opponentARotationScales = 0; + s16 opponentBRotationScales = 0; gReservedSpritePaletteCount = 10; - task->tOpponentSpriteId = CreateTrainerSprite(trainerPicId, - gTrainerSprites[trainerPicId].mugshotCoords.x - 32, - gTrainerSprites[trainerPicId].mugshotCoords.y + 42, + if (TRAINER_BATTLE_PARAM.opponentB != TRAINER_NONE && gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS) + { + task->tOpponentSpriteBId = CreateTrainerSprite(trainerBPicId, + gTrainerSprites[trainerBPicId].mugshotCoords.x - 240, + gTrainerSprites[trainerBPicId].mugshotCoords.y + 42, + 0, NULL); + opponentSpriteB = &gSprites[task->tOpponentSpriteBId]; + opponentSpriteB->callback = SpriteCB_MugshotTrainerPicPartner; + opponentSpriteB->oam.affineMode = ST_OAM_AFFINE_DOUBLE; + opponentSpriteB->oam.matrixNum = AllocOamMatrix(); + opponentSpriteB->oam.shape = SPRITE_SHAPE(64x32); + opponentSpriteB->oam.size = SPRITE_SIZE(64x32); + CalcCenterToCornerVec(opponentSpriteB, SPRITE_SHAPE(64x32), SPRITE_SIZE(64x32), ST_OAM_AFFINE_DOUBLE); + opponentBRotationScales = gTrainerSprites[trainerBPicId].mugshotRotation; + SetOamMatrixRotationScaling(opponentSpriteB->oam.matrixNum, opponentBRotationScales, opponentBRotationScales, 0); + } + + task->tOpponentSpriteAId = CreateTrainerSprite(trainerAPicId, + gTrainerSprites[trainerAPicId].mugshotCoords.x - 32, + gTrainerSprites[trainerAPicId].mugshotCoords.y + 42, 0, NULL); + gReservedSpritePaletteCount = 12; - - task->tPlayerSpriteId = CreateTrainerSprite(PlayerGenderToFrontTrainerPicId(gSaveBlock2Ptr->playerGender), - DISPLAY_WIDTH + 32, - 106, + if (gPartnerTrainerId != TRAINER_PARTNER(PARTNER_NONE) && gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER) + { + task->tPartnerSpriteId = CreateTrainerSprite(partnerPicId, + DISPLAY_WIDTH + 240, + 106, 0, NULL); + partnerSprite = &gSprites[task->tPartnerSpriteId]; + partnerSprite->callback = SpriteCB_MugshotTrainerPicPartner; + partnerSprite->oam.affineMode = ST_OAM_AFFINE_DOUBLE; + partnerSprite->oam.matrixNum = AllocOamMatrix(); + partnerSprite->oam.shape = SPRITE_SHAPE(64x32); + partnerSprite->oam.size = SPRITE_SIZE(64x32); + CalcCenterToCornerVec(partnerSprite, SPRITE_SHAPE(64x32), SPRITE_SIZE(64x32), ST_OAM_AFFINE_DOUBLE); + SetOamMatrixRotationScaling(partnerSprite->oam.matrixNum, -512, 512, 0); + } - opponentSprite = &gSprites[task->tOpponentSpriteId]; + task->tPlayerSpriteId = CreateTrainerSprite(PlayerGenderToFrontTrainerPicId(gSaveBlock2Ptr->playerGender), + DISPLAY_WIDTH + 32, + 106, + 0, NULL); + + opponentSpriteA = &gSprites[task->tOpponentSpriteAId]; playerSprite = &gSprites[task->tPlayerSpriteId]; - opponentSprite->callback = SpriteCB_MugshotTrainerPic; + opponentSpriteA->callback = SpriteCB_MugshotTrainerPic; playerSprite->callback = SpriteCB_MugshotTrainerPic; - opponentSprite->oam.affineMode = ST_OAM_AFFINE_DOUBLE; + opponentSpriteA->oam.affineMode = ST_OAM_AFFINE_DOUBLE; playerSprite->oam.affineMode = ST_OAM_AFFINE_DOUBLE; - opponentSprite->oam.matrixNum = AllocOamMatrix(); + opponentSpriteA->oam.matrixNum = AllocOamMatrix(); playerSprite->oam.matrixNum = AllocOamMatrix(); - opponentSprite->oam.shape = SPRITE_SHAPE(64x32); + opponentSpriteA->oam.shape = SPRITE_SHAPE(64x32); playerSprite->oam.shape = SPRITE_SHAPE(64x32); - opponentSprite->oam.size = SPRITE_SIZE(64x32); + opponentSpriteA->oam.size = SPRITE_SIZE(64x32); playerSprite->oam.size = SPRITE_SIZE(64x32); - CalcCenterToCornerVec(opponentSprite, SPRITE_SHAPE(64x32), SPRITE_SIZE(64x32), ST_OAM_AFFINE_DOUBLE); + CalcCenterToCornerVec(opponentSpriteA, SPRITE_SHAPE(64x32), SPRITE_SIZE(64x32), ST_OAM_AFFINE_DOUBLE); CalcCenterToCornerVec(playerSprite, SPRITE_SHAPE(64x32), SPRITE_SIZE(64x32), ST_OAM_AFFINE_DOUBLE); - opponentRotationScales = gTrainerSprites[trainerPicId].mugshotRotation; - - SetOamMatrixRotationScaling(opponentSprite->oam.matrixNum, opponentRotationScales, opponentRotationScales, 0); + opponentARotationScales = gTrainerSprites[trainerAPicId].mugshotRotation; + SetOamMatrixRotationScaling(opponentSpriteA->oam.matrixNum, opponentARotationScales, opponentARotationScales, 0); SetOamMatrixRotationScaling(playerSprite->oam.matrixNum, -512, 512, 0); } @@ -2567,6 +2665,12 @@ static void SpriteCB_MugshotTrainerPic(struct Sprite *sprite) while (sMugshotTrainerPicFuncs[sprite->sState](sprite)); } +static void SpriteCB_MugshotTrainerPicPartner(struct Sprite *sprite) +{ + while (sMugshotTrainerPicFuncsPartner[sprite->sState](sprite)); +} + + // Wait until IncrementTrainerPicState is called static bool8 MugshotTrainerPic_Pause(struct Sprite *sprite) { @@ -2599,6 +2703,18 @@ static bool8 MugshotTrainerPic_Slide(struct Sprite *sprite) return FALSE; } +static bool8 MugshotTrainerPic_SlidePartner(struct Sprite *sprite) +{ + sprite->x += sprite->sSlideSpeed; + + // Advance state when pic passes ~40% of screen + if (sprite->sSlideDir && sprite->x < DISPLAY_WIDTH - 60) + sprite->sState++; + else if (!sprite->sSlideDir && sprite->x > 60) + sprite->sState++; + return FALSE; +} + static bool8 MugshotTrainerPic_SlideSlow(struct Sprite *sprite) { // Add acceleration value to speed, then add speed. @@ -2653,8 +2769,10 @@ static s16 IsTrainerPicSlideDone(s16 spriteId) #undef tBottomBannerX #undef tTimer #undef tFadeSpread -#undef tOpponentSpriteId +#undef tOpponentSpriteAId +#undef tOpponentSpriteBId #undef tPlayerSpriteId +#undef tPartnerSpriteId //-------------------- // B_TRANSITION_SLICE @@ -3885,6 +4003,8 @@ static void VBlankCB_AngledWipes(void) #define tFadeFromGrayIncrement data[5] #define tDelayTimer data[6] #define tBlend data[7] +#define tBldCntSaved data[8] +#define tShadowColor data[9] static void CreateIntroTask(s16 fadeToGrayDelay, s16 fadeFromGrayDelay, s16 numFades, s16 fadeToGrayIncrement, s16 fadeFromGrayIncrement) { @@ -3912,17 +4032,28 @@ void Task_BattleTransition_Intro(u8 taskId) static bool8 TransitionIntro_FadeToGray(struct Task *task) { + u8 paletteNum = IndexOfSpritePaletteTag(TAG_WEATHER_START); + u16 index = OBJ_PLTT_ID(paletteNum) + SHADOW_COLOR_INDEX; if (task->tDelayTimer == 0 || --task->tDelayTimer == 0) { task->tDelayTimer = task->tFadeToGrayDelay; task->tBlend += task->tFadeToGrayIncrement; if (task->tBlend > 16) task->tBlend = 16; + if (paletteNum < 16) + task->tShadowColor = gPlttBufferFaded[index]; BlendPalettes(PALETTES_ALL, task->tBlend, RGB(11, 11, 11)); + if (paletteNum < 16) + gPlttBufferFaded[index] = task->tShadowColor; } if (task->tBlend >= 16) { // Fade to gray complete, start fade back + // Save BLDCNT and turn off targets temporarily + task->tBldCntSaved = GetGpuReg(REG_OFFSET_BLDCNT); + SetGpuReg(REG_OFFSET_BLDCNT, task->tBldCntSaved & ~BLDCNT_TGT2_BG_ALL); + if (paletteNum < 16) + gPlttBufferFaded[index] = RGB(11, 11, 11); task->tState++; task->tDelayTimer = task->tFadeFromGrayDelay; } @@ -3933,11 +4064,19 @@ static bool8 TransitionIntro_FadeFromGray(struct Task *task) { if (task->tDelayTimer == 0 || --task->tDelayTimer == 0) { + u8 paletteNum = IndexOfSpritePaletteTag(TAG_WEATHER_START); task->tDelayTimer = task->tFadeFromGrayDelay; task->tBlend -= task->tFadeFromGrayIncrement; if (task->tBlend < 0) task->tBlend = 0; BlendPalettes(PALETTES_ALL, task->tBlend, RGB(11, 11, 11)); + // Restore BLDCNT + SetGpuReg(REG_OFFSET_BLDCNT, task->tBldCntSaved); + if (paletteNum < 16) + { + u16 index = OBJ_PLTT_ID(paletteNum) + SHADOW_COLOR_INDEX; + gPlttBufferFaded[index] = task->tShadowColor; + } } if (task->tBlend == 0) { @@ -4230,6 +4369,7 @@ static bool8 FrontierLogoWave_Init(struct Task *task) LZ77UnCompVram(sFrontierLogo_Tileset, tileset); LoadPalette(sFrontierLogo_Palette, BG_PLTT_ID(15), sizeof(sFrontierLogo_Palette)); sTransitionData->cameraY = 0; + UpdateShadowColor(RGB_GRAY); task->tState++; return FALSE; diff --git a/src/battle_tv.c b/src/battle_tv.c index d43345fca5..96ce633440 100644 --- a/src/battle_tv.c +++ b/src/battle_tv.c @@ -11,7 +11,7 @@ #include "constants/battle_move_effects.h" // this file's functions -static bool8 IsNotSpecialBattleString(u16 stringId); +static bool8 IsNotSpecialBattleString(enum StringID stringId); static void AddMovePoints(u8 caseId, u16 arg1, u8 arg2, u8 arg3); static void TrySetBattleSeminarShow(void); static void AddPointsOnFainting(bool8 targetFainted); @@ -27,10 +27,10 @@ enum { PTS_RAIN, PTS_SUN, PTS_SANDSTORM, - PTS_HAIL, + PTS_HAIL_SNOW, PTS_ELECTRIC, PTS_STATUS_DMG, - PTS_STATUS, + PTS_STATUS_SKIP_TURN, PTS_SPIKES, PTS_WATER_SPORT, PTS_MUD_SPORT, @@ -45,9 +45,11 @@ enum { PTS_FLINCHED, PTS_STAT_INCREASE_1, PTS_STAT_INCREASE_2, + PTS_STAT_INCREASE_3, PTS_STAT_DECREASE_SELF, PTS_STAT_DECREASE_1, PTS_STAT_DECREASE_2, + PTS_STAT_DECREASE_3, PTS_STAT_INCREASE_NOT_SELF, }; @@ -100,89 +102,6 @@ static const u16 sPoints_SetUp[] = 6, 2 // Ingrain }; -static const u16 sPoints_RainMoves[] = -{ - MOVE_BUBBLE, 3, - MOVE_WHIRLPOOL, 3, - MOVE_OCTAZOOKA, 3, - MOVE_CLAMP, 3, - MOVE_WITHDRAW, 3, - MOVE_CRABHAMMER, 3, - MOVE_WATER_SPOUT, 3, - MOVE_DIVE, 3, - MOVE_WATERFALL, 3, - MOVE_MUDDY_WATER, 3, - MOVE_SURF, 3, - MOVE_HYDRO_CANNON, 3, - MOVE_HYDRO_PUMP, 3, - MOVE_BUBBLE_BEAM, 3, - MOVE_WATER_SPORT, 0, // Unnecessary, unlisted moves are already given 0 points - MOVE_WATER_GUN, 3, - MOVE_WATER_PULSE, 3, - MOVE_WEATHER_BALL, 3, - MOVE_THUNDER, 3, - MOVE_SOLAR_BEAM, -4, - MOVE_OVERHEAT, -4, - MOVE_FLAME_WHEEL, -4, - MOVE_FLAMETHROWER, -4, - MOVE_SACRED_FIRE, -4, - MOVE_FIRE_BLAST, -4, - MOVE_HEAT_WAVE, -4, - MOVE_EMBER, -4, - MOVE_BLAST_BURN, -4, - MOVE_BLAZE_KICK, -4, - MOVE_ERUPTION, -4, - MOVE_FIRE_SPIN, -4, - MOVE_FIRE_PUNCH, -4, - MOVE_SOLAR_BEAM, -4, // Repeated - TABLE_END, 0 -}; -static const u16 sPoints_SunMoves[] = -{ - MOVE_OVERHEAT, 3, - MOVE_FLAME_WHEEL, 3, - MOVE_FLAMETHROWER, 3, - MOVE_SACRED_FIRE, 3, - MOVE_FIRE_BLAST, 3, - MOVE_HEAT_WAVE, 3, - MOVE_EMBER, 3, - MOVE_BLAST_BURN, 3, - MOVE_BLAZE_KICK, 3, - MOVE_ERUPTION, 3, - MOVE_FIRE_SPIN, 3, - MOVE_FIRE_PUNCH, 3, - MOVE_SOLAR_BEAM, 5, - MOVE_SYNTHESIS, 3, - MOVE_MORNING_SUN, 3, - MOVE_MOONLIGHT, 3, - MOVE_WEATHER_BALL, 3, - TABLE_END, 0 -}; -static const u16 sPoints_SandstormMoves[] = -{ - MOVE_WEATHER_BALL, 3, - MOVE_SOLAR_BEAM, -3, - TABLE_END, 0 -}; -static const u16 sPoints_HailMoves[] = -{ - MOVE_WEATHER_BALL, 3, - MOVE_SOLAR_BEAM, -3, - TABLE_END, 0 -}; -static const u16 sPoints_ElectricMoves[] = -{ - MOVE_THUNDERBOLT, 3, - MOVE_THUNDER_PUNCH, 3, - MOVE_SPARK, 3, - MOVE_THUNDER_SHOCK, 3, - MOVE_ZAP_CANNON, 3, - MOVE_SHOCK_WAVE, 3, - MOVE_THUNDER_WAVE, 0, // Unnecessary, unlisted moves are already given 0 points - MOVE_THUNDER, 3, - MOVE_VOLT_TACKLE, 3, - TABLE_END, 0 -}; static const u16 sPoints_StatusDmg[] = { 5, // Curse @@ -193,117 +112,12 @@ static const u16 sPoints_StatusDmg[] = 3, // Nightmare 3 // Wrap (Trapping move) }; -static const u16 sPoints_Status[] = -{ - 5, // Attraction - 5, // Confusion - 5, // Paralysis - 5, // Sleep - 5 // Freeze -}; - -static const u16 sPoints_Spikes[] = { 4 }; -static const u16 sPoints_WaterSport[] = { 5 }; -static const u16 sPoints_MudSport[] = { 5 }; -static const u16 sPoints_Reflect[] = { 3 }; -static const u16 sPoints_LightScreen[] = { 3 }; -static const u16 sPoints_Safeguard[] = { 4 }; -static const u16 sPoints_Mist[] = { 3 }; -static const u16 sPoints_BreakWall[] = { 6 }; -static const u16 sPoints_CriticalHit[] = { 6 }; -static const u16 sPoints_Faint[] = { 6 }; -static const u16 sPoints_Flinched[] = { 4 }; - -static const u16 sPoints_StatIncrease1[NUM_BATTLE_STATS - 1] = -{ - [STAT_ATK - 1] = 2, - [STAT_DEF - 1] = 2, - [STAT_SPEED - 1] = 2, - [STAT_SPATK - 1] = 2, - [STAT_SPDEF - 1] = 2, - [STAT_ACC - 1] = 2, - [STAT_EVASION - 1] = 2 -}; -static const u16 sPoints_StatIncrease2[NUM_BATTLE_STATS - 1] = -{ - [STAT_ATK - 1] = 4, - [STAT_DEF - 1] = 4, - [STAT_SPEED - 1] = 4, - [STAT_SPATK - 1] = 4, - [STAT_SPDEF - 1] = 4, - [STAT_ACC - 1] = 4, - [STAT_EVASION - 1] = 4 -}; -static const u16 sPoints_StatDecreaseSelf[NUM_BATTLE_STATS - 1] = -{ - [STAT_ATK - 1] = -1, - [STAT_DEF - 1] = -1, - [STAT_SPEED - 1] = -1, - [STAT_SPATK - 1] = -1, - [STAT_SPDEF - 1] = -1, - [STAT_ACC - 1] = -1, - [STAT_EVASION - 1] = -1 -}; -static const u16 sPoints_StatDecrease1[NUM_BATTLE_STATS - 1] = -{ - [STAT_ATK - 1] = 2, - [STAT_DEF - 1] = 2, - [STAT_SPEED - 1] = 2, - [STAT_SPATK - 1] = 2, - [STAT_SPDEF - 1] = 2, - [STAT_ACC - 1] = 2, - [STAT_EVASION - 1] = 2 -}; -static const u16 sPoints_StatDecrease2[NUM_BATTLE_STATS - 1] = -{ - [STAT_ATK - 1] = 4, - [STAT_DEF - 1] = 4, - [STAT_SPEED - 1] = 4, - [STAT_SPATK - 1] = 4, - [STAT_SPDEF - 1] = 4, - [STAT_ACC - 1] = 4, - [STAT_EVASION - 1] = 4 -}; -static const u16 sPoints_StatIncreaseNotSelf[NUM_BATTLE_STATS - 1] = -{ - [STAT_ATK - 1] = -2, - [STAT_DEF - 1] = -2, - [STAT_SPEED - 1] = -2, - [STAT_SPATK - 1] = -2, - [STAT_SPDEF - 1] = -2, - [STAT_ACC - 1] = -2, - [STAT_EVASION - 1] = -2 -}; static const u16 *const sPointsArray[] = { [PTS_EFFECTIVENESS] = sPoints_Effectiveness, [PTS_SET_UP] = sPoints_SetUp, - [PTS_RAIN] = sPoints_RainMoves, - [PTS_SUN] = sPoints_SunMoves, - [PTS_SANDSTORM] = sPoints_SandstormMoves, - [PTS_HAIL] = sPoints_HailMoves, - [PTS_ELECTRIC] = sPoints_ElectricMoves, [PTS_STATUS_DMG] = sPoints_StatusDmg, - [PTS_STATUS] = sPoints_Status, - [PTS_SPIKES] = sPoints_Spikes, - [PTS_WATER_SPORT] = sPoints_WaterSport, - [PTS_MUD_SPORT] = sPoints_MudSport, - [PTS_REFLECT] = sPoints_Reflect, - [PTS_LIGHT_SCREEN] = sPoints_LightScreen, - [PTS_SAFEGUARD] = sPoints_Safeguard, - [PTS_MIST] = sPoints_Mist, - [PTS_BREAK_WALL] = sPoints_BreakWall, - [PTS_CRITICAL_HIT] = sPoints_CriticalHit, - [PTS_FAINT] = sPoints_Faint, - [PTS_FAINT_SET_UP] = sPoints_Faint, - [PTS_FLINCHED] = sPoints_Flinched, - [PTS_STAT_INCREASE_1] = sPoints_StatIncrease1, - [PTS_STAT_INCREASE_2] = sPoints_StatIncrease2, - [PTS_STAT_DECREASE_SELF] = sPoints_StatDecreaseSelf, - [PTS_STAT_DECREASE_1] = sPoints_StatDecrease1, - [PTS_STAT_DECREASE_2] = sPoints_StatDecrease2, - [PTS_STAT_INCREASE_NOT_SELF] = sPoints_StatIncreaseNotSelf }; // Points will always be calculated for these messages @@ -319,7 +133,7 @@ static const u16 sSpecialBattleStrings[] = }; // code -void BattleTv_SetDataBasedOnString(u16 stringId) +void BattleTv_SetDataBasedOnString(enum StringID stringId) { struct BattleTv *tvPtr; u32 atkSide, defSide, effSide, scriptingSide; @@ -338,11 +152,11 @@ void BattleTv_SetDataBasedOnString(u16 stringId) defSide = GetBattlerSide(gBattlerTarget); effSide = GetBattlerSide(gEffectBattler); scriptingSide = GetBattlerSide(gBattleMsgDataPtr->scrActive); - atkMon = GetPartyBattlerData(gBattlerAttacker); - defMon = GetPartyBattlerData(gBattlerTarget); + atkMon = GetBattlerMon(gBattlerAttacker); + defMon = GetBattlerMon(gBattlerTarget); moveSlot = GetBattlerMoveSlotId(gBattlerAttacker, gBattleMsgDataPtr->currentMove); - if (moveSlot >= MAX_MON_MOVES && IsNotSpecialBattleString(stringId) && stringId > BATTLESTRINGS_TABLE_START) + if (moveSlot >= MAX_MON_MOVES && IsNotSpecialBattleString(stringId) && stringId > STRINGID_TABLE_START) { tvPtr->side[atkSide].faintCause = FNT_OTHER; return; @@ -359,16 +173,19 @@ void BattleTv_SetDataBasedOnString(u16 stringId) switch (stringId) { case STRINGID_ITDOESNTAFFECT: + case STRINGID_ITDOESNTAFFECTTWOFOES: AddMovePoints(PTS_EFFECTIVENESS, moveSlot, 2, 0); if (!(gBattleTypeFlags & BATTLE_TYPE_LINK)) TrySetBattleSeminarShow(); break; case STRINGID_NOTVERYEFFECTIVE: + case STRINGID_NOTVERYEFFECTIVETWOFOES: AddMovePoints(PTS_EFFECTIVENESS, moveSlot, 1, 0); if (!(gBattleTypeFlags & BATTLE_TYPE_LINK) && GetMonData(defMon, MON_DATA_HP, NULL) != 0) TrySetBattleSeminarShow(); break; case STRINGID_SUPEREFFECTIVE: + case STRINGID_SUPEREFFECTIVETWOFOES: AddMovePoints(PTS_EFFECTIVENESS, moveSlot, 0, 0); break; case STRINGID_PKMNFORESAWATTACK: @@ -441,7 +258,9 @@ void BattleTv_SetDataBasedOnString(u16 stringId) case STRINGID_ATTACKERSSTATROSE: if (gBattleTextBuff1[2] != 0) { - if (*statStringId == STRINGID_STATSHARPLY) + if (*statStringId == STRINGID_DRASTICALLY) + AddMovePoints(PTS_STAT_INCREASE_3, moveSlot, gBattleTextBuff1[2] - 1, 0); + else if (*statStringId == STRINGID_STATSHARPLY) AddMovePoints(PTS_STAT_INCREASE_2, moveSlot, gBattleTextBuff1[2] - 1, 0); else AddMovePoints(PTS_STAT_INCREASE_1, moveSlot, gBattleTextBuff1[2] - 1, 0); @@ -452,7 +271,9 @@ void BattleTv_SetDataBasedOnString(u16 stringId) { if (gBattlerAttacker == gBattlerTarget) { - if (*statStringId == STRINGID_STATSHARPLY) + if (*statStringId == STRINGID_DRASTICALLY) + AddMovePoints(PTS_STAT_INCREASE_3, moveSlot, gBattleTextBuff1[2] - 1, 0); + else if (*statStringId == STRINGID_STATSHARPLY) AddMovePoints(PTS_STAT_INCREASE_2, moveSlot, gBattleTextBuff1[2] - 1, 0); else AddMovePoints(PTS_STAT_INCREASE_1, moveSlot, gBattleTextBuff1[2] - 1, 0); @@ -470,7 +291,9 @@ void BattleTv_SetDataBasedOnString(u16 stringId) case STRINGID_DEFENDERSSTATFELL: if (gBattleTextBuff1[2] != 0) { - if (*statStringId == STRINGID_STATHARSHLY) + if (*statStringId == STRINGID_SEVERELY) + AddMovePoints(PTS_STAT_DECREASE_3, moveSlot, gBattleTextBuff1[2] - 1, 0); + else if (*statStringId == STRINGID_STATHARSHLY) AddMovePoints(PTS_STAT_DECREASE_2, moveSlot, gBattleTextBuff1[2] - 1, 0); else AddMovePoints(PTS_STAT_DECREASE_1, moveSlot, gBattleTextBuff1[2] - 1, 0); @@ -569,7 +392,7 @@ void BattleTv_SetDataBasedOnString(u16 stringId) break; case STRINGID_PKMNIMMOBILIZEDBYLOVE: if (tvPtr->pos[atkSide][atkFlank].attractMonId != 0) - AddMovePoints(PTS_STATUS, 0, tvPtr->pos[atkSide][atkFlank].attractMonId - 1, tvPtr->pos[atkSide][atkFlank].attractMoveSlot); + AddMovePoints(PTS_STATUS_SKIP_TURN, 0, tvPtr->pos[atkSide][atkFlank].attractMonId - 1, tvPtr->pos[atkSide][atkFlank].attractMoveSlot); break; case STRINGID_PKMNWASPARALYZED: tvPtr->mon[effSide][gBattlerPartyIndexes[gEffectBattler]].prlzMonId = gBattlerPartyIndexes[gBattlerAttacker] + 1; @@ -577,7 +400,7 @@ void BattleTv_SetDataBasedOnString(u16 stringId) break; case STRINGID_PKMNISPARALYZED: if (tvPtr->mon[atkSide][gBattlerPartyIndexes[gBattlerAttacker]].prlzMonId != 0) - AddMovePoints(PTS_STATUS, 2, tvPtr->mon[atkSide][gBattlerPartyIndexes[gBattlerAttacker]].prlzMonId - 1, tvPtr->mon[atkSide][gBattlerPartyIndexes[gBattlerAttacker]].prlzMoveSlot); + AddMovePoints(PTS_STATUS_SKIP_TURN, 2, tvPtr->mon[atkSide][gBattlerPartyIndexes[gBattlerAttacker]].prlzMonId - 1, tvPtr->mon[atkSide][gBattlerPartyIndexes[gBattlerAttacker]].prlzMoveSlot); break; case STRINGID_PKMNFELLASLEEP: tvPtr->mon[effSide][gBattlerPartyIndexes[gEffectBattler]].slpMonId = gBattlerPartyIndexes[gBattlerAttacker] + 1; @@ -585,9 +408,9 @@ void BattleTv_SetDataBasedOnString(u16 stringId) break; case STRINGID_PKMNFASTASLEEP: if (tvPtr->mon[atkSide][gBattlerPartyIndexes[gBattlerAttacker]].slpMonId != 0 - && gBattleMsgDataPtr->currentMove != MOVE_SNORE - && gBattleMsgDataPtr->currentMove != MOVE_SLEEP_TALK) - AddMovePoints(PTS_STATUS, 3, tvPtr->mon[atkSide][gBattlerPartyIndexes[gBattlerAttacker]].slpMonId - 1, tvPtr->mon[atkSide][gBattlerPartyIndexes[gBattlerAttacker]].slpMoveSlot); + && GetMoveEffect(gBattleMsgDataPtr->currentMove) != EFFECT_SNORE + && GetMoveEffect(gBattleMsgDataPtr->currentMove) != EFFECT_SLEEP_TALK) + AddMovePoints(PTS_STATUS_SKIP_TURN, 3, tvPtr->mon[atkSide][gBattlerPartyIndexes[gBattlerAttacker]].slpMonId - 1, tvPtr->mon[atkSide][gBattlerPartyIndexes[gBattlerAttacker]].slpMoveSlot); break; case STRINGID_PKMNWASFROZEN: tvPtr->mon[effSide][gBattlerPartyIndexes[gEffectBattler]].frzMonId = gBattlerPartyIndexes[gBattlerAttacker] + 1; @@ -595,7 +418,7 @@ void BattleTv_SetDataBasedOnString(u16 stringId) break; case STRINGID_PKMNISFROZEN: if (tvPtr->mon[atkSide][gBattlerPartyIndexes[gBattlerAttacker]].frzMonId != 0) - AddMovePoints(PTS_STATUS, 4, tvPtr->mon[atkSide][gBattlerPartyIndexes[gBattlerAttacker]].frzMonId - 1, tvPtr->mon[atkSide][gBattlerPartyIndexes[gBattlerAttacker]].frzMoveSlot); + AddMovePoints(PTS_STATUS_SKIP_TURN, 4, tvPtr->mon[atkSide][gBattlerPartyIndexes[gBattlerAttacker]].frzMonId - 1, tvPtr->mon[atkSide][gBattlerPartyIndexes[gBattlerAttacker]].frzMoveSlot); break; case STRINGID_PKMNWASCONFUSED: tvPtr->pos[effSide][effFlank].confusionMonId = gBattlerPartyIndexes[gBattlerAttacker] + 1; @@ -603,7 +426,7 @@ void BattleTv_SetDataBasedOnString(u16 stringId) break; case STRINGID_ITHURTCONFUSION: if (tvPtr->pos[atkSide][atkFlank].confusionMonId != 0) - AddMovePoints(PTS_STATUS, 1, tvPtr->pos[atkSide][atkFlank].confusionMonId - 1, tvPtr->pos[atkSide][atkFlank].confusionMoveSlot); + AddMovePoints(PTS_STATUS_SKIP_TURN, 1, tvPtr->pos[atkSide][atkFlank].confusionMonId - 1, tvPtr->pos[atkSide][atkFlank].confusionMoveSlot); tvPtr->side[atkSide].faintCause = FNT_CONFUSION; break; case STRINGID_SPIKESSCATTERED: @@ -720,10 +543,12 @@ void BattleTv_SetDataBasedOnString(u16 stringId) case STRINGID_PKMNHITWITHRECOIL: tvPtr->side[atkSide].faintCause = FNT_RECOIL; break; + default: + break; } } -static bool8 IsNotSpecialBattleString(u16 stringId) +static bool8 IsNotSpecialBattleString(enum StringID stringId) { s32 i = 0; @@ -922,85 +747,269 @@ static void AddMovePoints(u8 caseId, u16 arg1, u8 arg2, u8 arg3) struct BattleTv *tvPtr = &gBattleStruct->tv; u32 atkSide = GetBattlerSide(gBattlerAttacker); u32 defSide = GetBattlerSide(gBattlerTarget); - const u16 *ptr; s32 i; switch (caseId) { +#define move arg2 case PTS_MOVE_EFFECT: // arg1 -> move slot, arg2 -> move { - u8 baseFromEffect = gBattleMoveEffects[GetMoveEffect(arg2)].battleTvScore; + enum BattleMoveEffects effect = GetMoveEffect(move); + u8 baseFromEffect = gBattleMoveEffects[effect].battleTvScore; - // Various cases to add/remove points - if (GetMoveRecoil(arg2) > 0) - baseFromEffect++; // Recoil moves - if (GetMoveEffect(arg2) == EFFECT_RAPID_SPIN) + // Changes depending on the effect + switch (effect) + { + case EFFECT_FIXED_DAMAGE_ARG: + baseFromEffect *= (GetMoveFixedDamage(move) / 20); + break; + case EFFECT_TWO_TURNS_ATTACK: + for (i = 0; i < GetMoveAdditionalEffectCount(move); i++) + { + const struct AdditionalEffect *additionalEffect = GetMoveAdditionalEffectById(move, i); + switch ((enum MoveEffects)additionalEffect->moveEffect) + { + case MOVE_EFFECT_ATK_PLUS_1: + case MOVE_EFFECT_DEF_PLUS_1: + case MOVE_EFFECT_SP_ATK_PLUS_1: + case MOVE_EFFECT_SP_DEF_PLUS_1: + case MOVE_EFFECT_SPD_PLUS_1: + case MOVE_EFFECT_ACC_PLUS_1: + case MOVE_EFFECT_EVS_PLUS_1: + if (additionalEffect->self == TRUE && (additionalEffect->chance == 100 || additionalEffect->chance == 0)) + baseFromEffect += 2; + break; + case MOVE_EFFECT_ATK_PLUS_2: + case MOVE_EFFECT_DEF_PLUS_2: + case MOVE_EFFECT_SP_ATK_PLUS_2: + case MOVE_EFFECT_SP_DEF_PLUS_2: + case MOVE_EFFECT_SPD_PLUS_2: + case MOVE_EFFECT_ACC_PLUS_2: + case MOVE_EFFECT_EVS_PLUS_2: + if (additionalEffect->self == TRUE && (additionalEffect->chance == 100 || additionalEffect->chance == 0)) + baseFromEffect += 3; + break; + case MOVE_EFFECT_FLINCH: + if (additionalEffect->self == FALSE) + baseFromEffect += 3; + break; + default: + break; + } + } + break; + case EFFECT_FIRST_TURN_ONLY: + if (MoveHasAdditionalEffectWithChance(move, MOVE_EFFECT_FLINCH, 100)) + baseFromEffect += 3; + break; + case EFFECT_CONFUSE: + if (GetMoveTarget(move) == MOVE_TARGET_FOES_AND_ALLY) + baseFromEffect += 2; + break; + default: + break; + } + switch(GetMoveNonVolatileStatus(arg2)) + { + case MOVE_EFFECT_SLEEP: baseFromEffect++; - 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)) + break; + case MOVE_EFFECT_PARALYSIS: baseFromEffect += 3; - if (MoveHasAdditionalEffect(arg2, MOVE_EFFECT_WRAP) || MoveHasAdditionalEffectSelf(arg2, MOVE_EFFECT_THRASH)) - baseFromEffect += 3; - if (MoveHasAdditionalEffect(arg2, MOVE_EFFECT_RECHARGE)) + break; + case MOVE_EFFECT_BURN: + case MOVE_EFFECT_POISON: baseFromEffect += 4; + break; + case MOVE_EFFECT_TOXIC: + baseFromEffect += 5; + break; + } + + // Guaranteed hit but without negative priority + if (GetMoveAccuracy(move) == 0 && GetMovePriority(move) >= 0) + baseFromEffect++; + // User recoil damage + if (GetMoveRecoil(move) > 0) + baseFromEffect++; + + // Additional move effects in any move + for (i = 0; i < GetMoveAdditionalEffectCount(move); i++) + { + const struct AdditionalEffect *additionalEffect = GetMoveAdditionalEffectById(move, i); + switch (additionalEffect->moveEffect) + { + case MOVE_EFFECT_STEAL_ITEM: + if ((additionalEffect->chance == 100 || additionalEffect->chance == 0)) + baseFromEffect += 3; + break; + case MOVE_EFFECT_THRASH: + if (additionalEffect->self == TRUE) + baseFromEffect += 3; + break; + case MOVE_EFFECT_WRAP: + if (additionalEffect->self == FALSE) + baseFromEffect += 3; + break; + case MOVE_EFFECT_RECHARGE: + if (additionalEffect->self == TRUE) + baseFromEffect += 4; + break; + case MOVE_EFFECT_ATK_DEF_DOWN: + case MOVE_EFFECT_ATK_MINUS_2: + case MOVE_EFFECT_DEF_MINUS_2: + case MOVE_EFFECT_SP_ATK_MINUS_2: + case MOVE_EFFECT_SP_DEF_MINUS_2: + case MOVE_EFFECT_SPD_MINUS_2: + case MOVE_EFFECT_ACC_MINUS_2: + case MOVE_EFFECT_EVS_MINUS_2: + if (additionalEffect->self == TRUE && (additionalEffect->chance == 100 || additionalEffect->chance == 0)) + baseFromEffect += 2; + break; + } + } movePoints->points[atkSide][gBattlerPartyIndexes[gBattlerAttacker] * 4 + arg1] += baseFromEffect; break; } +#undef move case PTS_EFFECTIVENESS: - case PTS_CRITICAL_HIT: - case PTS_STAT_INCREASE_1: - case PTS_STAT_INCREASE_2: - case PTS_STAT_DECREASE_SELF: - case PTS_STAT_DECREASE_1: - case PTS_STAT_DECREASE_2: - case PTS_STAT_INCREASE_NOT_SELF: movePoints->points[atkSide][gBattlerPartyIndexes[gBattlerAttacker] * 4 + arg1] += sPointsArray[caseId][arg2]; break; + case PTS_STAT_INCREASE_1: + case PTS_STAT_DECREASE_1: + movePoints->points[atkSide][gBattlerPartyIndexes[gBattlerAttacker] * 4 + arg1] += 2; + break; + case PTS_STAT_INCREASE_2: + case PTS_STAT_DECREASE_2: + movePoints->points[atkSide][gBattlerPartyIndexes[gBattlerAttacker] * 4 + arg1] += 4; + break; + case PTS_STAT_INCREASE_3: + case PTS_STAT_DECREASE_3: + case PTS_CRITICAL_HIT: + movePoints->points[atkSide][gBattlerPartyIndexes[gBattlerAttacker] * 4 + arg1] += 6; + break; + case PTS_STAT_DECREASE_SELF: + movePoints->points[atkSide][gBattlerPartyIndexes[gBattlerAttacker] * 4 + arg1] -= 1; + break; + case PTS_STAT_INCREASE_NOT_SELF: + movePoints->points[atkSide][gBattlerPartyIndexes[gBattlerAttacker] * 4 + arg1] -= 2; + break; #define move arg1 case PTS_RAIN: - case PTS_SUN: - case PTS_SANDSTORM: - case PTS_HAIL: - case PTS_ELECTRIC: - i = 0; - ptr = sPointsArray[caseId]; - do + { + s32 points = 0; + + if (!IsBattleMoveStatus(move)) { - if (move == ptr[i]) + switch (GetMoveType(move)) { - movePoints->points[atkSide][gBattlerPartyIndexes[gBattlerAttacker] * 4 + arg2] += ptr[i+1]; - break; + case TYPE_WATER: points += 3; break; + case TYPE_FIRE: points -= 4; break; + default: break; } - i += 2; - } while (ptr[i] != TABLE_END); + } + else if (move == MOVE_WITHDRAW) // For some reason, vanilla gives points to it + { + points += 3; + } + + switch (GetMoveEffect(move)) + { + case EFFECT_WEATHER_BALL: + points += 3; + break; + case EFFECT_SOLAR_BEAM: + points -= 4; + break; + default: + break; + } + + if (MoveAlwaysHitsInRain(move)) + points += 3; + + movePoints->points[atkSide][gBattlerPartyIndexes[gBattlerAttacker] * 4 + arg2] += points; + break; + } + case PTS_SUN: + { + s32 points = 0; + + if (!IsBattleMoveStatus(move) && GetMoveType(move) == TYPE_FIRE) + points += 3; + + switch (GetMoveEffect(move)) + { + case EFFECT_SOLAR_BEAM: + points += 5; + break; + case EFFECT_WEATHER_BALL: + case EFFECT_SYNTHESIS: + case EFFECT_MORNING_SUN: + case EFFECT_MOONLIGHT: + points += 3; + break; + default: + break; + } + movePoints->points[atkSide][gBattlerPartyIndexes[gBattlerAttacker] * 4 + arg2] += points; + break; + } + case PTS_SANDSTORM: + case PTS_HAIL_SNOW: + { + s32 points = 0; + switch (GetMoveEffect(move)) + { + case EFFECT_WEATHER_BALL: + points += 3; + break; + case EFFECT_SOLAR_BEAM: + points -= 3; + break; + default: + break; + } + movePoints->points[atkSide][gBattlerPartyIndexes[gBattlerAttacker] * 4 + arg2] += points; + break; + } + case PTS_ELECTRIC: + if (!IsBattleMoveStatus(move) && GetMoveType(move) == TYPE_ELECTRIC) + movePoints->points[atkSide][gBattlerPartyIndexes[gBattlerAttacker] * 4 + arg2] += 3; break; #undef move case PTS_FAINT: - tvPtr->side[arg2 ^ 1].faintCause = FNT_NONE; - movePoints->points[arg2][0 * 4 + arg3] += sPointsArray[caseId][arg1]; + tvPtr->side[arg2 ^ BIT_SIDE].faintCause = FNT_NONE; + movePoints->points[arg2][0 * 4 + arg3] += 6; break; case PTS_FAINT_SET_UP: tvPtr->side[arg2].faintCause = FNT_NONE; - // fallthrough + movePoints->points[arg2][0 * 4 + arg3] += 6; + break; case PTS_SET_UP: movePoints->points[arg2][0 * 4 + arg3] += sPointsArray[caseId][arg1]; break; case PTS_BREAK_WALL: - movePoints->points[atkSide][arg2 * 4 + arg3] += sPointsArray[caseId][arg1]; + movePoints->points[atkSide][arg2 * 4 + arg3] += 6; break; case PTS_STATUS_DMG: - case PTS_STATUS: - case PTS_SAFEGUARD: - case PTS_MIST: - case PTS_FLINCHED: movePoints->points[atkSide ^ BIT_SIDE][arg2 * 4 + arg3] += sPointsArray[caseId][arg1]; break; + case PTS_STATUS_SKIP_TURN: + movePoints->points[atkSide ^ BIT_SIDE][arg2 * 4 + arg3] += 5; + break; + case PTS_MIST: + movePoints->points[atkSide ^ BIT_SIDE][arg2 * 4 + arg3] += 3; + break; + case PTS_SAFEGUARD: + case PTS_FLINCHED: + movePoints->points[atkSide ^ BIT_SIDE][arg2 * 4 + arg3] += 4; + break; case PTS_SPIKES: - movePoints->points[arg1][arg2 * 4 + arg3] += sPointsArray[caseId][0]; + movePoints->points[arg1][arg2 * 4 + arg3] += 4; break; #define move arg1 @@ -1012,12 +1021,12 @@ static void AddMovePoints(u8 caseId, u16 arg1, u8 arg2, u8 arg3) if (tvPtr->pos[defSide][0].waterSportMonId != 0) { u32 id = (tvPtr->pos[defSide][0].waterSportMonId - 1) * 4; - movePoints->points[defSide][id + tvPtr->pos[defSide][0].waterSportMoveSlot] += sPointsArray[caseId][0]; + movePoints->points[defSide][id + tvPtr->pos[defSide][0].waterSportMoveSlot] += 5; } if (tvPtr->pos[defSide][1].waterSportMonId != 0) { u32 id = (tvPtr->pos[defSide][1].waterSportMonId - 1) * 4; - movePoints->points[defSide][id + tvPtr->pos[defSide][1].waterSportMoveSlot] += sPointsArray[caseId][0]; + movePoints->points[defSide][id + tvPtr->pos[defSide][1].waterSportMoveSlot] += 5; } } break; @@ -1028,12 +1037,12 @@ static void AddMovePoints(u8 caseId, u16 arg1, u8 arg2, u8 arg3) if (tvPtr->pos[defSide][0].mudSportMonId != 0) { u32 id = (tvPtr->pos[defSide][0].mudSportMonId - 1) * 4; - movePoints->points[defSide][id + tvPtr->pos[defSide][0].mudSportMoveSlot] += sPointsArray[caseId][0]; + movePoints->points[defSide][id + tvPtr->pos[defSide][0].mudSportMoveSlot] += 5; } if (tvPtr->pos[defSide][1].mudSportMonId != 0) { u32 id = (tvPtr->pos[defSide][1].mudSportMonId - 1) * 4; - movePoints->points[defSide][id + tvPtr->pos[defSide][1].mudSportMoveSlot] += sPointsArray[caseId][0]; + movePoints->points[defSide][id + tvPtr->pos[defSide][1].mudSportMoveSlot] += 5; } } break; @@ -1042,7 +1051,7 @@ static void AddMovePoints(u8 caseId, u16 arg1, u8 arg2, u8 arg3) if (IsBattleMovePhysical(move) && power != 0 && tvPtr->side[defSide].reflectMonId != 0) { u32 id = (tvPtr->side[defSide].reflectMonId - 1) * 4; - movePoints->points[defSide][id + tvPtr->side[defSide].reflectMoveSlot] += sPointsArray[caseId][0]; + movePoints->points[defSide][id + tvPtr->side[defSide].reflectMoveSlot] += 3; } break; case PTS_LIGHT_SCREEN: @@ -1218,7 +1227,7 @@ static void TrySetBattleSeminarShow(void) if (gBattleTypeFlags & (BATTLE_TYPE_DOUBLE | BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED_LINK)) return; - else if (GetBattlerSide(gBattlerAttacker) == B_SIDE_OPPONENT) + else if (!IsOnPlayerSide(gBattlerAttacker)) return; else if (gBattleMons[gBattlerAttacker].statStages[STAT_ACC] < DEFAULT_STAT_STAGE) return; @@ -1284,8 +1293,8 @@ static void TrySetBattleSeminarShow(void) bestMoveId = i; } - opponentSpecies = GetMonData(&gEnemyParty [gBattlerPartyIndexes[gBattlerTarget]], MON_DATA_SPECIES, NULL); - playerSpecies = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattlerAttacker]], MON_DATA_SPECIES, NULL); + opponentSpecies = GetMonData(GetBattlerMon(gBattlerTarget), MON_DATA_SPECIES, NULL); + playerSpecies = GetMonData(GetBattlerMon(gBattlerAttacker), MON_DATA_SPECIES, NULL); TryPutBattleSeminarOnAir(opponentSpecies, playerSpecies, gMoveSelectionCursor[gBattlerAttacker], gBattleMons[gBattlerAttacker].moves, gBattleMons[gBattlerAttacker].moves[bestMoveId]); break; } @@ -1361,15 +1370,14 @@ void BattleTv_ClearExplosionFaintCause(void) u8 GetBattlerMoveSlotId(u8 battler, u16 move) { s32 i; - struct Pokemon *party; - party = GetBattlerParty(battler); + struct Pokemon *mon = GetBattlerMon(battler); i = 0; while (1) { if (i >= MAX_MON_MOVES) break; - if (GetMonData(&party[gBattlerPartyIndexes[battler]], MON_DATA_MOVE1 + i, NULL) == move) + if (GetMonData(mon, MON_DATA_MOVE1 + i, NULL) == move) break; i++; } @@ -1385,6 +1393,6 @@ static void AddPointsBasedOnWeather(u16 weatherFlags, u16 move, u8 moveSlot) AddMovePoints(PTS_SUN, move, moveSlot, 0); else if (weatherFlags & B_WEATHER_SANDSTORM) AddMovePoints(PTS_SANDSTORM, move, moveSlot, 0); - else if (weatherFlags & B_WEATHER_HAIL) - AddMovePoints(PTS_HAIL, move, moveSlot, 0); + else if (weatherFlags & (B_WEATHER_HAIL | B_WEATHER_SNOW)) + AddMovePoints(PTS_HAIL_SNOW, move, moveSlot, 0); } diff --git a/src/battle_util.c b/src/battle_util.c index ee08535a9d..6d256dc998 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -65,6 +65,9 @@ static u32 GetFlingPowerFromItemId(u32 itemId); static void SetRandomMultiHitCounter(); static u32 GetBattlerItemHoldEffectParam(u32 battler, u32 item); static bool32 CanBeInfinitelyConfused(u32 battler); +static bool32 IsAnyTargetAffected(u32 battlerAtk); +static bool32 IsNonVolatileStatusBlocked(u32 battlerDef, u32 abilityDef, u32 abilityAffected, const u8 *battleScript, enum NonVolatileStatus option); +static bool32 CanSleepDueToSleepClause(u32 battlerAtk, u32 battlerDef, enum NonVolatileStatus option); ARM_FUNC NOINLINE static uq4_12_t PercentToUQ4_12(u32 percent); ARM_FUNC NOINLINE static uq4_12_t PercentToUQ4_12_Floored(u32 percent); @@ -99,7 +102,6 @@ static const u8 sPkblToEscapeFactor[][3] = { static const u8 sGoNearCounterToCatchFactor[] = {4, 3, 2, 1}; static const u8 sGoNearCounterToEscapeFactor[] = {4, 4, 4, 4}; - struct BattleWeatherInfo { u16 flag; @@ -202,6 +204,49 @@ static const struct BattleWeatherInfo sBattleWeatherInfo[BATTLE_WEATHER_COUNT] = }, }; +u32 GetCurrentBattleWeather(void) +{ + u32 currBattleWeather = 0xFF; + + for (u32 weather = 0; weather < ARRAY_COUNT(sBattleWeatherInfo); weather++) + { + if (gBattleWeather & sBattleWeatherInfo[weather].flag) + { + currBattleWeather = weather; + break; + } + } + + return currBattleWeather; +} + +bool32 EndOrContinueWeather(void) +{ + u32 currBattleWeather = GetCurrentBattleWeather(); + + if (currBattleWeather == 0xFF) + return FALSE; + + if (gWishFutureKnock.weatherDuration > 0 && --gWishFutureKnock.weatherDuration == 0) + { + gBattleWeather = B_WEATHER_NONE; + for (u32 battler = 0; battler < gBattlersCount; battler++) + gDisableStructs[battler].weatherAbilityDone = FALSE; + gBattleCommunication[MULTISTRING_CHOOSER] = sBattleWeatherInfo[currBattleWeather].endMessage; + BattleScriptExecute(BattleScript_WeatherFaded); + return TRUE; + } + else + { + gBattleCommunication[MULTISTRING_CHOOSER] = sBattleWeatherInfo[currBattleWeather].continuesMessage; + gBattleScripting.animArg1 = sBattleWeatherInfo[currBattleWeather].animation; + BattleScriptExecute(BattleScript_WeatherContinues); + return TRUE; + } + + return FALSE; +} + static u32 CalcBeatUpPower(void) { u32 basePower; @@ -241,7 +286,7 @@ static inline bool32 IsDragonDartsSecondHit(u32 effect) bool32 IsAffectedByFollowMe(u32 battlerAtk, u32 defSide, u32 move) { u32 ability = GetBattlerAbility(battlerAtk); - u32 effect = GetMoveEffect(move); + enum BattleMoveEffects effect = GetMoveEffect(move); if (gSideTimers[defSide].followmeTimer == 0 || (!IsBattlerAlive(gSideTimers[defSide].followmeTarget) && !IsDragonDartsSecondHit(effect)) @@ -265,13 +310,13 @@ bool32 HandleMoveTargetRedirection(void) u32 redirectorOrderNum = MAX_BATTLERS_COUNT; u16 moveTarget = GetBattlerMoveTargetType(gBattlerAttacker, gCurrentMove); u32 moveType = GetBattleMoveType(gCurrentMove); - u32 moveEffect = GetMoveEffect(gCurrentMove); + enum BattleMoveEffects moveEffect = GetMoveEffect(gCurrentMove); u32 side = BATTLE_OPPOSITE(GetBattlerSide(gBattlerAttacker)); u32 ability = GetBattlerAbility(gBattleStruct->moveTarget[gBattlerAttacker]); if (IsAffectedByFollowMe(gBattlerAttacker, side, gCurrentMove) && moveTarget == MOVE_TARGET_SELECTED - && GetBattlerSide(gBattlerAttacker) != GetBattlerSide(gSideTimers[side].followmeTarget)) + && !IsBattlerAlly(gBattlerAttacker, gSideTimers[side].followmeTarget)) { gBattleStruct->moveTarget[gBattlerAttacker] = gBattlerTarget = gSideTimers[side].followmeTarget; // follow me moxie fix return TRUE; @@ -325,7 +370,7 @@ void HandleAction_UseMove(void) u32 i, moveTarget; gBattlerAttacker = gBattlerByTurnOrder[gCurrentTurnActionNumber]; - if (gBattleStruct->battlerState[gBattlerAttacker].absentBattlerFlags + if (gBattleStruct->battlerState[gBattlerAttacker].absent || gBattleStruct->battlerState[gBattlerAttacker].commandingDondozo || !IsBattlerAlive(gBattlerAttacker)) { @@ -384,7 +429,7 @@ void HandleAction_UseMove(void) if (IsBattlerAlive(gBattlerAttacker)) { - if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER) + if (IsOnPlayerSide(gBattlerAttacker)) gBattleResults.lastUsedMovePlayer = gCurrentMove; else gBattleResults.lastUsedMoveOpponent = gCurrentMove; @@ -414,7 +459,7 @@ void HandleAction_UseMove(void) { gBattlerTarget = SetRandomTarget(gBattlerAttacker); if (gAbsentBattlerFlags & (1u << gBattlerTarget) - && GetBattlerSide(gBattlerAttacker) != GetBattlerSide(gBattlerTarget)) + && !IsBattlerAlly(gBattlerAttacker, gBattlerTarget)) { gBattlerTarget = GetPartnerBattler(gBattlerTarget); } @@ -445,7 +490,7 @@ void HandleAction_UseMove(void) gBattlerTarget = *(gBattleStruct->moveTarget + gBattlerAttacker); if (!IsBattlerAlive(gBattlerTarget) && moveTarget != MOVE_TARGET_OPPONENTS_FIELD - && (GetBattlerSide(gBattlerAttacker) != GetBattlerSide(gBattlerTarget))) + && (!IsBattlerAlly(gBattlerAttacker, gBattlerTarget))) { gBattlerTarget = GetBattlerAtPosition(BATTLE_PARTNER(GetBattlerPosition(gBattlerTarget))); } @@ -492,10 +537,7 @@ void HandleAction_UseMove(void) BattleArena_AddMindPoints(gBattlerAttacker); for (i = 0; i < MAX_BATTLERS_COUNT; i++) - { gBattleStruct->hpBefore[i] = gBattleMons[i].hp; - gSpecialStatuses[i].emergencyExited = FALSE; - } gCurrentActionFuncId = B_ACTION_EXEC_SCRIPT; } @@ -585,6 +627,10 @@ bool32 TryRunFromBattle(u32 battler) { effect++; } + else if (CanPlayerForfeitNormalTrainerBattle()) + { + effect++; + } else { u8 runningFromBattler = BATTLE_OPPOSITE(battler); @@ -632,7 +678,7 @@ void HandleAction_Run(void) for (i = 0; i < gBattlersCount; i++) { - if (GetBattlerSide(i) == B_SIDE_PLAYER) + if (IsOnPlayerSide(i)) { if (gChosenActionByBattler[i] == B_ACTION_RUN) gBattleOutcome |= B_OUTCOME_LOST; @@ -649,7 +695,7 @@ void HandleAction_Run(void) } else { - if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER) + if (IsOnPlayerSide(gBattlerAttacker)) { if (!TryRunFromBattle(gBattlerAttacker)) // failed to run away { @@ -800,8 +846,7 @@ void HandleAction_NothingIsFainted(void) gCurrentActionFuncId = gActionsByTurnOrder[gCurrentTurnActionNumber]; gHitMarker &= ~(HITMARKER_DESTINYBOND | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_ATTACKSTRING_PRINTED | HITMARKER_NO_PPDEDUCT | HITMARKER_STATUS_ABILITY_EFFECT | HITMARKER_PASSIVE_DAMAGE - | HITMARKER_OBEYS | HITMARKER_SYNCHRONISE_EFFECT - | HITMARKER_CHARGING | HITMARKER_NEVER_SET); + | HITMARKER_OBEYS | HITMARKER_SYNCHRONIZE_EFFECT | HITMARKER_CHARGING); } void HandleAction_ActionFinished(void) @@ -814,8 +859,8 @@ void HandleAction_ActionFinished(void) SpecialStatusesClear(); gHitMarker &= ~(HITMARKER_DESTINYBOND | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_ATTACKSTRING_PRINTED | HITMARKER_NO_PPDEDUCT | HITMARKER_STATUS_ABILITY_EFFECT | HITMARKER_PASSIVE_DAMAGE - | HITMARKER_OBEYS | HITMARKER_SYNCHRONISE_EFFECT - | HITMARKER_CHARGING | HITMARKER_NEVER_SET | HITMARKER_IGNORE_DISGUISE); + | HITMARKER_OBEYS | HITMARKER_SYNCHRONIZE_EFFECT + | HITMARKER_CHARGING | HITMARKER_IGNORE_DISGUISE); // check if Stellar type boost should be used up moveType = GetBattleMoveType(gCurrentMove); @@ -872,28 +917,6 @@ void HandleAction_ActionFinished(void) } } -static const u8 sHoldEffectToType[][2] = -{ - {HOLD_EFFECT_BUG_POWER, TYPE_BUG}, - {HOLD_EFFECT_STEEL_POWER, TYPE_STEEL}, - {HOLD_EFFECT_GROUND_POWER, TYPE_GROUND}, - {HOLD_EFFECT_ROCK_POWER, TYPE_ROCK}, - {HOLD_EFFECT_GRASS_POWER, TYPE_GRASS}, - {HOLD_EFFECT_DARK_POWER, TYPE_DARK}, - {HOLD_EFFECT_FIGHTING_POWER, TYPE_FIGHTING}, - {HOLD_EFFECT_ELECTRIC_POWER, TYPE_ELECTRIC}, - {HOLD_EFFECT_WATER_POWER, TYPE_WATER}, - {HOLD_EFFECT_FLYING_POWER, TYPE_FLYING}, - {HOLD_EFFECT_POISON_POWER, TYPE_POISON}, - {HOLD_EFFECT_ICE_POWER, TYPE_ICE}, - {HOLD_EFFECT_GHOST_POWER, TYPE_GHOST}, - {HOLD_EFFECT_PSYCHIC_POWER, TYPE_PSYCHIC}, - {HOLD_EFFECT_FIRE_POWER, TYPE_FIRE}, - {HOLD_EFFECT_DRAGON_POWER, TYPE_DRAGON}, - {HOLD_EFFECT_NORMAL_POWER, TYPE_NORMAL}, - {HOLD_EFFECT_FAIRY_POWER, TYPE_FAIRY}, -}; - // code ARM_FUNC NOINLINE static uq4_12_t PercentToUQ4_12(u32 percent) @@ -1000,7 +1023,68 @@ void MarkBattlerReceivedLinkData(u32 battler) gBattleControllerExecFlags &= ~(1u << (28 + battler)); } -const u8* CancelMultiTurnMoves(u32 battler) +const u8 *CheckSkyDropState(u32 battler, enum SkyDropState skyDropState) +{ + const u8 *result = NULL; + + u8 otherSkyDropper = gBattleStruct->skyDropTargets[battler]; + gStatuses3[otherSkyDropper] &= ~(STATUS3_SKY_DROPPED | STATUS3_ON_AIR); + + // Makes both attacker and target's sprites visible + gSprites[gBattlerSpriteIds[battler]].invisible = FALSE; + gSprites[gBattlerSpriteIds[otherSkyDropper]].invisible = FALSE; + + // If target was sky dropped in the middle of Outrage/Thrash/Petal Dance, + // confuse them upon release and display "confused by fatigue" message & animation. + // Don't do this if this CancelMultiTurnMoves is caused by falling asleep via Yawn. + if (gBattleMons[otherSkyDropper].status2 & STATUS2_LOCK_CONFUSE && skyDropState != SKY_DROP_STATUS_YAWN) + { + gBattleMons[otherSkyDropper].status2 &= ~(STATUS2_LOCK_CONFUSE); + + // If the target can be confused, confuse them. + // Don't use CanBeConfused, can cause issues in edge cases. + if (!(GetBattlerAbility(otherSkyDropper) == ABILITY_OWN_TEMPO + || gBattleMons[otherSkyDropper].status2 & STATUS2_CONFUSION + || IsBattlerTerrainAffected(otherSkyDropper, STATUS_FIELD_MISTY_TERRAIN))) + { + // Set confused status + gBattleMons[otherSkyDropper].status2 |= STATUS2_CONFUSION_TURN(((Random()) % 4) + 2); + + if (skyDropState == SKY_DROP_ATTACKCANCELLER_CHECK) + { + gBattleStruct->skyDropTargets[battler] = SKY_DROP_RELEASED_TARGET; + } + else if (skyDropState == SKY_DROP_GRAVITY_ON_AIRBORNE) + { + // Reapplying STATUS3_SKY_DROPPED allows for avoiding unecessary messages when Gravity is applied to the target. + gBattleStruct->skyDropTargets[battler] = SKY_DROP_RELEASED_TARGET; + gStatuses3[otherSkyDropper] |= STATUS3_SKY_DROPPED; + } + else if (skyDropState == SKY_DROP_CANCEL_MULTI_TURN_MOVES) + { + gBattlerAttacker = otherSkyDropper; + result = BattleScript_ThrashConfuses; + } + else if (skyDropState == SKY_DROP_STATUS_FREEZE_SLEEP) + { + gBattlerAttacker = otherSkyDropper; + BattleScriptPush(gBattlescriptCurrInstr + 1); + result = BattleScript_ThrashConfuses; + } + } + } + + // Clear skyDropTargets data, unless this CancelMultiTurnMoves is caused by Yawn, attackcanceler, or VARIOUS_GRAVITY_ON_AIRBORNE_MONS + if (!(gBattleMons[otherSkyDropper].status2 & STATUS2_LOCK_CONFUSE) && gBattleStruct->skyDropTargets[battler] < 4) + { + gBattleStruct->skyDropTargets[battler] = SKY_DROP_NO_TARGET; + gBattleStruct->skyDropTargets[otherSkyDropper] = SKY_DROP_NO_TARGET; + } + + return result; +} + +const u8 *CancelMultiTurnMoves(u32 battler, enum SkyDropState skyDropState) { const u8 *result = NULL; gBattleMons[battler].status2 &= ~(STATUS2_UPROAR); @@ -1021,70 +1105,8 @@ const u8* CancelMultiTurnMoves(u32 battler) if (!(gStatuses3[battler] & STATUS3_SKY_DROPPED)) gStatuses3[battler] &= ~(STATUS3_SEMI_INVULNERABLE); - // Check to see if this Pokemon was in the middle of using Sky Drop. If so, release the target. - if (gBattleStruct->skyDropTargets[battler] != 0xFF && !(gStatuses3[battler] & STATUS3_SKY_DROPPED)) - { - // Get the target's battler id - u8 otherSkyDropper = gBattleStruct->skyDropTargets[battler]; - - // Clears sky_dropped and on_air statuses - gStatuses3[otherSkyDropper] &= ~(STATUS3_SKY_DROPPED | STATUS3_ON_AIR); - - // Makes both attacker and target's sprites visible - gSprites[gBattlerSpriteIds[battler]].invisible = FALSE; - gSprites[gBattlerSpriteIds[otherSkyDropper]].invisible = FALSE; - - // If target was sky dropped in the middle of Outrage/Thrash/Petal Dance, - // confuse them upon release and display "confused by fatigue" message & animation. - // Don't do this if this CancelMultiTurnMoves is caused by falling asleep via Yawn. - if (gBattleMons[otherSkyDropper].status2 & STATUS2_LOCK_CONFUSE && gBattleStruct->turnEffectsTracker != 24) - { - gBattleMons[otherSkyDropper].status2 &= ~(STATUS2_LOCK_CONFUSE); - - // If the target can be confused, confuse them. - // Don't use CanBeConfused, can cause issues in edge cases. - if (!(GetBattlerAbility(otherSkyDropper) == ABILITY_OWN_TEMPO - || gBattleMons[otherSkyDropper].status2 & STATUS2_CONFUSION - || IsBattlerTerrainAffected(otherSkyDropper, STATUS_FIELD_MISTY_TERRAIN))) - { - // Set confused status - gBattleMons[otherSkyDropper].status2 |= STATUS2_CONFUSION_TURN(((Random()) % 4) + 2); - - // If this CancelMultiTurnMoves is occuring due to attackcanceller - if (gBattlescriptCurrInstr[0] == 0x0) - { - gBattleStruct->skyDropTargets[battler] = 0xFE; - } - // If this CancelMultiTurnMoves is occuring due to VARIOUS_GRAVITY_ON_AIRBORNE_MONS - // Reapplying STATUS3_SKY_DROPPED allows for avoiding unecessary messages when Gravity is applied to the target. - else if (gBattlescriptCurrInstr[0] == 0x76 && gBattlescriptCurrInstr[2] == 76) - { - gBattleStruct->skyDropTargets[battler] = 0xFE; - gStatuses3[otherSkyDropper] |= STATUS3_SKY_DROPPED; - } - // If this CancelMultiTurnMoves is occuring due to cancelmultiturnmoves script - else if (gBattlescriptCurrInstr[0] == 0x76 && gBattlescriptCurrInstr[2] == 0) - { - gBattlerAttacker = otherSkyDropper; - result = BattleScript_ThrashConfuses; - } - // If this CancelMultiTurnMoves is occuring due to receiving Sleep/Freeze status - else if (gBattleScripting.moveEffect <= PRIMARY_STATUS_MOVE_EFFECT) - { - gBattlerAttacker = otherSkyDropper; - BattleScriptPush(gBattlescriptCurrInstr + 1); - result = BattleScript_ThrashConfuses; - } - } - } - - // Clear skyDropTargets data, unless this CancelMultiTurnMoves is caused by Yawn, attackcanceler, or VARIOUS_GRAVITY_ON_AIRBORNE_MONS - if (!(gBattleMons[otherSkyDropper].status2 & STATUS2_LOCK_CONFUSE) && gBattleStruct->skyDropTargets[battler] < 4) - { - gBattleStruct->skyDropTargets[battler] = 0xFF; - gBattleStruct->skyDropTargets[otherSkyDropper] = 0xFF; - } - } + if (gBattleStruct->skyDropTargets[battler] != SKY_DROP_NO_TARGET && !(gStatuses3[battler] & STATUS3_SKY_DROPPED)) + result = CheckSkyDropState(battler, skyDropState); gDisableStructs[battler].rolloutTimer = 0; gDisableStructs[battler].furyCutterCounter = 0; @@ -1102,7 +1124,7 @@ bool32 WasUnableToUseMove(u32 battler) return FALSE; } -void PrepareStringBattle(u16 stringId, u32 battler) +void PrepareStringBattle(enum StringID stringId, u32 battler) { u32 targetSide = GetBattlerSide(gBattlerTarget); u16 battlerAbility = GetBattlerAbility(battler); @@ -1172,7 +1194,7 @@ void OpponentSwitchInResetSentPokesToOpponentValue(u32 battler) s32 i = 0; u32 bits = 0; - if (GetBattlerSide(battler) == B_SIDE_OPPONENT) + if (!IsOnPlayerSide(battler)) { u8 flank = ((battler & BIT_FLANK) >> 1); gSentPokesToOpponent[flank] = 0; @@ -1188,7 +1210,7 @@ void OpponentSwitchInResetSentPokesToOpponentValue(u32 battler) void UpdateSentPokesToOpponentValue(u32 battler) { - if (GetBattlerSide(battler) == B_SIDE_OPPONENT) + if (!IsOnPlayerSide(battler)) { OpponentSwitchInResetSentPokesToOpponentValue(battler); } @@ -1237,7 +1259,7 @@ bool32 IsBelchPreventingMove(u32 battler, u32 move) if (GetMoveEffect(move) != EFFECT_BELCH) return FALSE; - return !(gBattleStruct->ateBerry[battler & BIT_SIDE] & (1u << gBattlerPartyIndexes[battler])); + return !gBattleStruct->partyState[GetBattlerSide(battler)][gBattlerPartyIndexes[battler]].ateBerry; } // Dynamax bypasses all selection prevention except Taunt and Assault Vest. @@ -1248,9 +1270,9 @@ u32 TrySetCantSelectMoveBattleScript(u32 battler) u32 limitations = 0; u8 moveId = gBattleResources->bufferB[battler][2] & ~RET_GIMMICK; u32 move = gBattleMons[battler].moves[moveId]; - u32 holdEffect = GetBattlerHoldEffect(battler, TRUE); + enum ItemHoldEffect holdEffect = GetBattlerHoldEffect(battler, TRUE); u16 *choicedMove = &gBattleStruct->choicedMove[battler]; - u32 moveEffect = GetMoveEffect(move); + enum BattleMoveEffects moveEffect = GetMoveEffect(move); if (DYNAMAX_BYPASS_CHECK && GetActiveGimmick(battler) != GIMMICK_Z_MOVE && gDisableStructs[battler].disabledMove == move && move != MOVE_NONE) { @@ -1270,7 +1292,7 @@ u32 TrySetCantSelectMoveBattleScript(u32 battler) if (DYNAMAX_BYPASS_CHECK && GetActiveGimmick(battler) != GIMMICK_Z_MOVE && move == gLastMoves[battler] && move != MOVE_STRUGGLE && (gBattleMons[battler].status2 & STATUS2_TORMENT)) { - CancelMultiTurnMoves(battler); + CancelMultiTurnMoves(battler, SKY_DROP_IGNORE); if (gBattleTypeFlags & BATTLE_TYPE_PALACE) { gPalaceSelectionBattleScripts[battler] = BattleScript_SelectingTormentedMoveInPalace; @@ -1301,7 +1323,7 @@ u32 TrySetCantSelectMoveBattleScript(u32 battler) } } - if (DYNAMAX_BYPASS_CHECK && GetActiveGimmick(battler) != GIMMICK_Z_MOVE && gDisableStructs[battler].throatChopTimer != 0 && IsSoundMove(move)) + if (DYNAMAX_BYPASS_CHECK && GetActiveGimmick(battler) != GIMMICK_Z_MOVE && gDisableStructs[battler].throatChopTimer > gBattleTurnCounter && IsSoundMove(move)) { gCurrentMove = move; if (gBattleTypeFlags & BATTLE_TYPE_PALACE) @@ -1490,8 +1512,9 @@ u32 TrySetCantSelectMoveBattleScript(u32 battler) u8 CheckMoveLimitations(u32 battler, u8 unusableMoves, u16 check) { - u32 move, moveEffect; - u32 holdEffect = GetBattlerHoldEffect(battler, TRUE); + u32 move; + enum BattleMoveEffects moveEffect; + enum ItemHoldEffect holdEffect = GetBattlerHoldEffect(battler, TRUE); u16 *choicedMove = &gBattleStruct->choicedMove[battler]; s32 i; @@ -1541,7 +1564,7 @@ u8 CheckMoveLimitations(u32 battler, u8 unusableMoves, u16 check) else if (check & MOVE_LIMITATION_BELCH && IsBelchPreventingMove(battler, move)) unusableMoves |= 1u << i; // Throat Chop - else if (check & MOVE_LIMITATION_THROAT_CHOP && gDisableStructs[battler].throatChopTimer && IsSoundMove(move)) + else if (check & MOVE_LIMITATION_THROAT_CHOP && gDisableStructs[battler].throatChopTimer > gBattleTurnCounter && IsSoundMove(move)) unusableMoves |= 1u << i; // Stuff Cheeks else if (check & MOVE_LIMITATION_STUFF_CHEEKS && moveEffect == EFFECT_STUFF_CHEEKS && GetItemPocket(gBattleMons[battler].item) != POCKET_BERRIES) @@ -1600,11 +1623,10 @@ u8 GetImprisonedMovesCount(u32 battler, u16 move) u32 GetBattlerAffectionHearts(u32 battler) { - u8 side = GetBattlerSide(battler); - struct Pokemon *party = GetSideParty(side); - u16 species = GetMonData(&party[gBattlerPartyIndexes[battler]], MON_DATA_SPECIES); + struct Pokemon *mon = GetBattlerMon(battler); + u16 species = GetMonData(mon, MON_DATA_SPECIES); - if (side != B_SIDE_PLAYER) + if (!IsOnPlayerSide(battler)) return AFFECTION_NO_HEARTS; else if (gSpeciesInfo[species].isMegaEvolution || (gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER @@ -1614,7 +1636,7 @@ u32 GetBattlerAffectionHearts(u32 battler) | BATTLE_TYPE_SECRET_BASE))) return AFFECTION_NO_HEARTS; - return GetMonAffectionHearts(&party[gBattlerPartyIndexes[battler]]); + return GetMonAffectionHearts(mon); } // gBattlerAttacker is the battler that's trying to raise their stats and due to limitations of RandomUniformExcept, cannot be an argument @@ -1641,587 +1663,27 @@ void TryToRevertMimicryAndFlags(void) } } -enum +bool32 BattleArenaTurnEnd(void) { - ENDTURN_ORDER, - ENDTURN_REFLECT, - ENDTURN_LIGHT_SCREEN, - ENDTURN_AURORA_VEIL, - ENDTURN_MIST, - ENDTURN_LUCKY_CHANT, - ENDTURN_SAFEGUARD, - ENDTURN_TAILWIND, - ENDTURN_WISH, - ENDTURN_WEATHER, - ENDTURN_DAMAGE_NON_TYPES, - ENDTURN_GRAVITY, - ENDTURN_WATER_SPORT, - ENDTURN_MUD_SPORT, - ENDTURN_TRICK_ROOM, - ENDTURN_WONDER_ROOM, - ENDTURN_MAGIC_ROOM, - ENDTURN_ELECTRIC_TERRAIN, - ENDTURN_MISTY_TERRAIN, - ENDTURN_GRASSY_TERRAIN, - ENDTURN_PSYCHIC_TERRAIN, - ENDTURN_ION_DELUGE, - ENDTURN_FAIRY_LOCK, - ENDTURN_STATUS_HEAL, - ENDTURN_RAINBOW, - ENDTURN_SEA_OF_FIRE, - ENDTURN_SWAMP, - ENDTURN_FIELD_COUNT, -}; + gHitMarker |= (HITMARKER_GRUDGE | HITMARKER_IGNORE_BIDE); -static bool32 EndTurnTerrain(u32 terrainFlag, u32 stringTableId) -{ - if (gFieldStatuses & terrainFlag) + if ((gBattleTypeFlags & BATTLE_TYPE_ARENA) + && gBattleStruct->arenaTurnCounter == 2 + && IsBattlerAlive(B_POSITION_PLAYER_LEFT) && IsBattlerAlive(B_POSITION_OPPONENT_LEFT)) { - if (terrainFlag & STATUS_FIELD_GRASSY_TERRAIN) - BattleScriptExecute(BattleScript_GrassyTerrainHeals); - if (gFieldTimers.terrainTimer == gBattleTurnCounter) - { - gFieldStatuses &= ~terrainFlag; - TryToRevertMimicryAndFlags(); - gBattleCommunication[MULTISTRING_CHOOSER] = stringTableId; - if (terrainFlag & STATUS_FIELD_GRASSY_TERRAIN) - BattleScriptExecute(BattleScript_GrassyTerrainEnds); - else - BattleScriptExecute(BattleScript_TerrainEnds); - return TRUE; - } + for (u32 battler = 0; battler < 2; battler++) + CancelMultiTurnMoves(battler, SKY_DROP_IGNORE); + + gBattlescriptCurrInstr = BattleScript_ArenaDoJudgment; + BattleScriptExecute(BattleScript_ArenaDoJudgment); + return TRUE; } + + gHitMarker &= ~(HITMARKER_GRUDGE | HITMARKER_IGNORE_BIDE); + return FALSE; } -static bool32 TryEndTurnWeather(void) -{ - u32 i = 0; - u32 effect = 0; - u32 currBattleWeather = 0xFF; - - for (i = 0; i < ARRAY_COUNT(sBattleWeatherInfo); i++) - { - if (gBattleWeather & sBattleWeatherInfo[i].flag) - { - currBattleWeather = i; - break; - } - } - - if (currBattleWeather == 0xFF) - return effect; - - if (gWishFutureKnock.weatherDuration > 0 && --gWishFutureKnock.weatherDuration == 0) - { - gBattleWeather = B_WEATHER_NONE; - for (i = 0; i < gBattlersCount; i++) - gDisableStructs[i].weatherAbilityDone = FALSE; - gBattleCommunication[MULTISTRING_CHOOSER] = sBattleWeatherInfo[currBattleWeather].endMessage; - BattleScriptExecute(BattleScript_WeatherFaded); - effect++; - } - else - { - gBattleCommunication[MULTISTRING_CHOOSER] = sBattleWeatherInfo[currBattleWeather].continuesMessage; - gBattleScripting.animArg1 = sBattleWeatherInfo[currBattleWeather].animation; - BattleScriptExecute(BattleScript_WeatherContinues); - effect++; - } - - return effect; -} - -u8 DoFieldEndTurnEffects(void) -{ - u8 effect = 0; - - for (gBattlerAttacker = 0; gBattlerAttacker < gBattlersCount && gAbsentBattlerFlags & (1u << gBattlerAttacker); gBattlerAttacker++) - { - } - for (gBattlerTarget = 0; gBattlerTarget < gBattlersCount && gAbsentBattlerFlags & (1u << gBattlerTarget); gBattlerTarget++) - { - } - - do - { - s32 i; - u32 side; - - switch (gBattleStruct->turnCountersTracker) - { - case ENDTURN_ORDER: - for (i = 0; i < gBattlersCount - 1; i++) - { - s32 j; - for (j = i + 1; j < gBattlersCount; j++) - { - if (!(gProtectStructs[i].quash && gProtectStructs[j].quash) - && GetWhichBattlerFaster(gBattlerByTurnOrder[i], gBattlerByTurnOrder[j], FALSE) == -1) - SwapTurnOrder(i, j); - } - } - gBattleTurnCounter++; - gBattleStruct->turnCountersTracker++; - gBattleStruct->turnSideTracker = 0; - // fall through - case ENDTURN_REFLECT: - while (gBattleStruct->turnSideTracker < 2) - { - side = gBattleStruct->turnSideTracker; - gBattlerAttacker = gSideTimers[side].reflectBattlerId; - if (gSideStatuses[side] & SIDE_STATUS_REFLECT) - { - if (gSideTimers[side].reflectTimer == gBattleTurnCounter) - { - gSideStatuses[side] &= ~SIDE_STATUS_REFLECT; - BattleScriptExecute(BattleScript_SideStatusWoreOff); - PREPARE_MOVE_BUFFER(gBattleTextBuff1, MOVE_REFLECT); - effect++; - } - } - gBattleStruct->turnSideTracker++; - if (effect != 0) - break; - } - if (effect == 0) - { - gBattleStruct->turnCountersTracker++; - gBattleStruct->turnSideTracker = 0; - } - break; - case ENDTURN_LIGHT_SCREEN: - while (gBattleStruct->turnSideTracker < 2) - { - side = gBattleStruct->turnSideTracker; - gBattlerAttacker = gSideTimers[side].lightscreenBattlerId; - if (gSideStatuses[side] & SIDE_STATUS_LIGHTSCREEN) - { - if (gSideTimers[side].lightscreenTimer == gBattleTurnCounter) - { - gSideStatuses[side] &= ~SIDE_STATUS_LIGHTSCREEN; - BattleScriptExecute(BattleScript_SideStatusWoreOff); - gBattleCommunication[MULTISTRING_CHOOSER] = side; - PREPARE_MOVE_BUFFER(gBattleTextBuff1, MOVE_LIGHT_SCREEN); - effect++; - } - } - gBattleStruct->turnSideTracker++; - if (effect != 0) - break; - } - if (effect == 0) - { - gBattleStruct->turnCountersTracker++; - gBattleStruct->turnSideTracker = 0; - } - break; - case ENDTURN_AURORA_VEIL: - while (gBattleStruct->turnSideTracker < 2) - { - side = gBattleStruct->turnSideTracker; - gBattlerAttacker = gSideTimers[side].auroraVeilBattlerId; - if (gSideStatuses[side] & SIDE_STATUS_AURORA_VEIL) - { - if (gSideTimers[side].auroraVeilTimer == gBattleTurnCounter) - { - gSideStatuses[side] &= ~SIDE_STATUS_AURORA_VEIL; - BattleScriptExecute(BattleScript_SideStatusWoreOff); - gBattleCommunication[MULTISTRING_CHOOSER] = side; - PREPARE_MOVE_BUFFER(gBattleTextBuff1, MOVE_AURORA_VEIL); - effect++; - } - } - gBattleStruct->turnSideTracker++; - if (effect != 0) - break; - } - if (!effect) - { - gBattleStruct->turnCountersTracker++; - gBattleStruct->turnSideTracker = 0; - } - break; - case ENDTURN_MIST: - while (gBattleStruct->turnSideTracker < 2) - { - side = gBattleStruct->turnSideTracker; - gBattlerAttacker = gSideTimers[side].mistBattlerId; - if (gSideTimers[side].mistTimer == gBattleTurnCounter) - { - gSideStatuses[side] &= ~SIDE_STATUS_MIST; - BattleScriptExecute(BattleScript_SideStatusWoreOff); - gBattleCommunication[MULTISTRING_CHOOSER] = side; - PREPARE_MOVE_BUFFER(gBattleTextBuff1, MOVE_MIST); - effect++; - } - gBattleStruct->turnSideTracker++; - if (effect != 0) - break; - } - if (effect == 0) - { - gBattleStruct->turnCountersTracker++; - gBattleStruct->turnSideTracker = 0; - } - break; - case ENDTURN_SAFEGUARD: - while (gBattleStruct->turnSideTracker < 2) - { - side = gBattleStruct->turnSideTracker; - gBattlerAttacker = gSideTimers[side].safeguardBattlerId; - if (gSideStatuses[side] & SIDE_STATUS_SAFEGUARD) - { - if (gSideTimers[side].safeguardTimer == gBattleTurnCounter) - { - gSideStatuses[side] &= ~SIDE_STATUS_SAFEGUARD; - BattleScriptExecute(BattleScript_SafeguardEnds); - effect++; - } - } - gBattleStruct->turnSideTracker++; - if (effect != 0) - break; - } - if (effect == 0) - { - gBattleStruct->turnCountersTracker++; - gBattleStruct->turnSideTracker = 0; - } - break; - case ENDTURN_LUCKY_CHANT: - while (gBattleStruct->turnSideTracker < 2) - { - side = gBattleStruct->turnSideTracker; - gBattlerAttacker = gSideTimers[side].luckyChantBattlerId; - if (gSideStatuses[side] & SIDE_STATUS_LUCKY_CHANT) - { - if (gSideTimers[side].luckyChantTimer == gBattleTurnCounter) - { - gSideStatuses[side] &= ~SIDE_STATUS_LUCKY_CHANT; - BattleScriptExecute(BattleScript_LuckyChantEnds); - effect++; - } - } - gBattleStruct->turnSideTracker++; - if (effect != 0) - break; - } - if (!effect) - { - gBattleStruct->turnCountersTracker++; - gBattleStruct->turnSideTracker = 0; - } - break; - case ENDTURN_TAILWIND: - while (gBattleStruct->turnSideTracker < 2) - { - side = gBattleStruct->turnSideTracker; - gBattlerAttacker = gSideTimers[side].tailwindBattlerId; - if (gSideStatuses[side] & SIDE_STATUS_TAILWIND) - { - if (gSideTimers[side].tailwindTimer == gBattleTurnCounter) - { - gSideStatuses[side] &= ~SIDE_STATUS_TAILWIND; - BattleScriptExecute(BattleScript_TailwindEnds); - effect++; - } - } - gBattleStruct->turnSideTracker++; - if (effect != 0) - break; - } - if (!effect) - { - gBattleStruct->turnCountersTracker++; - gBattleStruct->turnSideTracker = 0; - } - break; - case ENDTURN_WISH: - while (gBattleStruct->turnSideTracker < gBattlersCount) - { - u32 battler = gBattlerByTurnOrder[gBattleStruct->turnSideTracker]; - if (gWishFutureKnock.wishCounter[battler] == gBattleTurnCounter && IsBattlerAlive(battler)) - { - gBattlerTarget = battler; - BattleScriptExecute(BattleScript_WishComesTrue); - effect++; - } - gBattleStruct->turnSideTracker++; - if (effect != 0) - break; - } - if (effect == 0) - { - gBattleStruct->turnCountersTracker++; - gBattleStruct->turnSideTracker = 0; - } - break; - case ENDTURN_WEATHER: - effect = TryEndTurnWeather(); - gBattleStruct->turnCountersTracker++; - break; - case ENDTURN_DAMAGE_NON_TYPES: - while (gBattleStruct->turnSideTracker < 2) - { - side = gBattleStruct->turnSideTracker; - if (gSideStatuses[side] & SIDE_STATUS_DAMAGE_NON_TYPES && gSideTimers[side].damageNonTypesTimer == gBattleTurnCounter) - { - // There is no in-game message when this side status ends. - gSideStatuses[side] &= ~SIDE_STATUS_DAMAGE_NON_TYPES; - effect++; - } - gBattleStruct->turnSideTracker++; - if (effect != 0) - break; - } - if (!effect) - { - gBattleStruct->turnCountersTracker++; - gBattleStruct->turnSideTracker = 0; - } - break; - case ENDTURN_TRICK_ROOM: - if (gFieldStatuses & STATUS_FIELD_TRICK_ROOM && gFieldTimers.trickRoomTimer == gBattleTurnCounter) - { - gFieldStatuses &= ~STATUS_FIELD_TRICK_ROOM; - BattleScriptExecute(BattleScript_TrickRoomEnds); - effect++; - } - gBattleStruct->turnCountersTracker++; - break; - case ENDTURN_WONDER_ROOM: - if (gFieldStatuses & STATUS_FIELD_WONDER_ROOM && gFieldTimers.wonderRoomTimer == gBattleTurnCounter) - { - gFieldStatuses &= ~STATUS_FIELD_WONDER_ROOM; - BattleScriptExecute(BattleScript_WonderRoomEnds); - effect++; - } - gBattleStruct->turnCountersTracker++; - break; - case ENDTURN_MAGIC_ROOM: - if (gFieldStatuses & STATUS_FIELD_MAGIC_ROOM && gFieldTimers.magicRoomTimer == gBattleTurnCounter) - { - gFieldStatuses &= ~STATUS_FIELD_MAGIC_ROOM; - BattleScriptExecute(BattleScript_MagicRoomEnds); - effect++; - } - gBattleStruct->turnCountersTracker++; - break; - case ENDTURN_ELECTRIC_TERRAIN: - effect = EndTurnTerrain(STATUS_FIELD_ELECTRIC_TERRAIN, B_MSG_TERRAIN_END_ELECTRIC); - gBattleStruct->turnCountersTracker++; - break; - case ENDTURN_MISTY_TERRAIN: - effect = EndTurnTerrain(STATUS_FIELD_MISTY_TERRAIN, B_MSG_TERRAIN_END_MISTY); - gBattleStruct->turnCountersTracker++; - break; - case ENDTURN_GRASSY_TERRAIN: - effect = EndTurnTerrain(STATUS_FIELD_GRASSY_TERRAIN, B_MSG_TERRAIN_END_GRASSY); - gBattleStruct->turnCountersTracker++; - break; - case ENDTURN_PSYCHIC_TERRAIN: - effect = EndTurnTerrain(STATUS_FIELD_PSYCHIC_TERRAIN, B_MSG_TERRAIN_END_PSYCHIC); - gBattleStruct->turnCountersTracker++; - break; - case ENDTURN_WATER_SPORT: - if (gFieldStatuses & STATUS_FIELD_WATERSPORT && gFieldTimers.waterSportTimer == gBattleTurnCounter) - { - gFieldStatuses &= ~STATUS_FIELD_WATERSPORT; - BattleScriptExecute(BattleScript_WaterSportEnds); - effect++; - } - gBattleStruct->turnCountersTracker++; - break; - case ENDTURN_MUD_SPORT: - if (gFieldStatuses & STATUS_FIELD_MUDSPORT && gFieldTimers.mudSportTimer == gBattleTurnCounter) - { - gFieldStatuses &= ~STATUS_FIELD_MUDSPORT; - BattleScriptExecute(BattleScript_MudSportEnds); - effect++; - } - gBattleStruct->turnCountersTracker++; - break; - case ENDTURN_GRAVITY: - if (gFieldStatuses & STATUS_FIELD_GRAVITY && gFieldTimers.gravityTimer == gBattleTurnCounter) - { - gFieldStatuses &= ~STATUS_FIELD_GRAVITY; - BattleScriptExecute(BattleScript_GravityEnds); - effect++; - } - gBattleStruct->turnCountersTracker++; - break; - case ENDTURN_ION_DELUGE: - gFieldStatuses &= ~STATUS_FIELD_ION_DELUGE; - gBattleStruct->turnCountersTracker++; - break; - case ENDTURN_FAIRY_LOCK: - if (gFieldStatuses & STATUS_FIELD_FAIRY_LOCK && gFieldTimers.fairyLockTimer == gBattleTurnCounter) - { - gFieldStatuses &= ~STATUS_FIELD_FAIRY_LOCK; - } - gBattleStruct->turnCountersTracker++; - break; - case ENDTURN_STATUS_HEAL: - for (gBattlerAttacker = 0; gBattlerAttacker < gBattlersCount; gBattlerAttacker++) - { - if (B_AFFECTION_MECHANICS == TRUE - && GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER - && GetBattlerAffectionHearts(gBattlerAttacker) >= AFFECTION_FOUR_HEARTS - && (Random() % 100 < 20)) - { - gBattleCommunication[MULTISTRING_CHOOSER] = 1; - BattleScriptExecute(BattleScript_AffectionBasedStatusHeal); - break; - } - } - gBattleStruct->turnCountersTracker++; - break; - case ENDTURN_RAINBOW: - while (gBattleStruct->turnSideTracker < 2) - { - side = gBattleStruct->turnSideTracker; - if (gSideStatuses[side] & SIDE_STATUS_RAINBOW) - { - for (gBattlerAttacker = 0; gBattlerAttacker < gBattlersCount; gBattlerAttacker++) - { - if (GetBattlerSide(gBattlerAttacker) == side) - break; - } - - if (gSideTimers[side].rainbowTimer == gBattleTurnCounter) - { - gSideStatuses[side] &= ~SIDE_STATUS_RAINBOW; - BattleScriptExecute(BattleScript_TheRainbowDisappeared); - effect++; - } - } - gBattleStruct->turnSideTracker++; - if (effect != 0) - break; - } - if (!effect) - { - gBattleStruct->turnCountersTracker++; - gBattleStruct->turnSideTracker = 0; - } - break; - case ENDTURN_SEA_OF_FIRE: - while (gBattleStruct->turnSideTracker < 2) - { - side = gBattleStruct->turnSideTracker; - - if (gSideStatuses[side] & SIDE_STATUS_SEA_OF_FIRE) - { - for (gBattlerAttacker = 0; gBattlerAttacker < gBattlersCount; gBattlerAttacker++) - { - if (GetBattlerSide(gBattlerAttacker) == side) - break; - } - - if (gSideTimers[side].seaOfFireTimer == gBattleTurnCounter) - { - gSideStatuses[side] &= ~SIDE_STATUS_SEA_OF_FIRE; - BattleScriptExecute(BattleScript_TheSeaOfFireDisappeared); - effect++; - } - } - gBattleStruct->turnSideTracker++; - if (effect != 0) - break; - } - if (!effect) - { - gBattleStruct->turnCountersTracker++; - gBattleStruct->turnSideTracker = 0; - } - break; - case ENDTURN_SWAMP: - while (gBattleStruct->turnSideTracker < 2) - { - side = gBattleStruct->turnSideTracker; - - if (gSideStatuses[side] & SIDE_STATUS_SWAMP) - { - for (gBattlerAttacker = 0; gBattlerAttacker < gBattlersCount; gBattlerAttacker++) - { - if (GetBattlerSide(gBattlerAttacker) == side) - break; - } - - if (gSideTimers[side].swampTimer == gBattleTurnCounter) - { - gSideStatuses[side] &= ~SIDE_STATUS_SWAMP; - BattleScriptExecute(BattleScript_TheSwampDisappeared); - effect++; - } - } - gBattleStruct->turnSideTracker++; - if (effect != 0) - break; - } - if (!effect) - { - gBattleStruct->turnCountersTracker++; - gBattleStruct->turnSideTracker = 0; - } - break; - case ENDTURN_FIELD_COUNT: - effect++; - break; - } - } while (effect == 0); - - return (gBattleMainFunc != BattleTurnPassed); -} - -enum -{ - ENDTURN_WEATHER_DAMAGE, - ENDTURN_INGRAIN, - ENDTURN_AQUA_RING, - ENDTURN_ABILITIES, - ENDTURN_ITEMS1, - ENDTURN_LEECH_SEED, - ENDTURN_POISON, - ENDTURN_BAD_POISON, - ENDTURN_BURN, - ENDTURN_FROSTBITE, - ENDTURN_NIGHTMARES, - ENDTURN_CURSE, - ENDTURN_WRAP, - ENDTURN_OCTOLOCK, - ENDTURN_UPROAR, - ENDTURN_THRASH, - ENDTURN_FLINCH, - ENDTURN_DISABLE, - ENDTURN_ENCORE, - ENDTURN_MAGNET_RISE, - ENDTURN_TELEKINESIS, - ENDTURN_HEALBLOCK, - ENDTURN_EMBARGO, - ENDTURN_LOCK_ON, - ENDTURN_LASER_FOCUS, - ENDTURN_CHARGE, - ENDTURN_TAUNT, - ENDTURN_YAWN, - ENDTURN_ITEMS2, - ENDTURN_ORBS, - ENDTURN_ROOST, - ENDTURN_POWDER, - ENDTURN_THROAT_CHOP, - ENDTURN_SLOW_START, - ENDTURN_CUD_CHEW, - ENDTURN_TORMENT, // supposedly this goes after Taunt, before Encore, but Encore is first right now? - ENDTURN_SALT_CURE, - ENDTURN_SYRUP_BOMB, - ENDTURN_DYNAMAX, - ENDTURN_GMAX_MOVE_RESIDUAL_DAMAGE, - ENDTURN_SEA_OF_FIRE_DAMAGE, - ENDTURN_ITEMS3, - ENDTURN_BATTLER_COUNT -}; - // Ingrain, Leech Seed, Strength Sap and Aqua Ring s32 GetDrainedBigRootHp(u32 battler, s32 hp) { @@ -2243,796 +1705,7 @@ bool32 IsMagicGuardProtected(u32 battler, u32 ability) return TRUE; } -u8 DoBattlerEndTurnEffects(void) -{ - u32 battler, ability, i, effect = 0; - - gHitMarker |= (HITMARKER_GRUDGE | HITMARKER_IGNORE_BIDE); - while (gBattleStruct->turnEffectsBattlerId < gBattlersCount && gBattleStruct->turnEffectsTracker <= ENDTURN_BATTLER_COUNT) - { - battler = gBattlerAttacker = gBattlerByTurnOrder[gBattleStruct->turnEffectsBattlerId]; - if (gAbsentBattlerFlags & (1u << battler)) - { - gBattleStruct->turnEffectsBattlerId++; - continue; - } - - ability = GetBattlerAbility(battler); - switch (gBattleStruct->turnEffectsTracker) - { - case ENDTURN_WEATHER_DAMAGE: - ability = GetBattlerAbility(battler); - if (!IsBattlerAlive(battler) || !HasWeatherEffect() || 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_ANY_TYPE(gBattlerAttacker, TYPE_ROCK, TYPE_GROUND, TYPE_STEEL) - && !(gStatuses3[gBattlerAttacker] & (STATUS3_UNDERGROUND | STATUS3_UNDERWATER)) - && GetBattlerHoldEffect(gBattlerAttacker, TRUE) != HOLD_EFFECT_SAFETY_GOGGLES) - { - gBattleScripting.battler = battler; - gBattleStruct->moveDamage[battler] = GetNonDynamaxMaxHP(battler) / 16; - if (gBattleStruct->moveDamage[battler] == 0) - gBattleStruct->moveDamage[battler] = 1; - gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_SANDSTORM; - BattleScriptExecute(BattleScript_DamagingWeather); - effect++; - } - else if (gBattleWeather & (B_WEATHER_HAIL | B_WEATHER_SNOW) - && ability == ABILITY_ICE_BODY - && !(gStatuses3[battler] & (STATUS3_UNDERGROUND | STATUS3_UNDERWATER)) - && !IsBattlerAtMaxHp(battler) - && !(gStatuses3[battler] & STATUS3_HEAL_BLOCK)) - { - gBattleScripting.battler = battler; - gBattleStruct->moveDamage[battler] = -1 * max(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; - gBattleStruct->moveDamage[battler] = GetNonDynamaxMaxHP(battler) / 16; - if (gBattleStruct->moveDamage[battler] == 0) - gBattleStruct->moveDamage[battler] = 1; - gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_HAIL; - BattleScriptExecute(BattleScript_DamagingWeather); - effect++; - } - gBattleStruct->turnEffectsTracker++; - break; - case ENDTURN_INGRAIN: // ingrain - if ((gStatuses3[battler] & STATUS3_ROOTED) - && !IsBattlerAtMaxHp(battler) - && !(gStatuses3[battler] & STATUS3_HEAL_BLOCK) - && IsBattlerAlive(battler)) - { - gBattleStruct->moveDamage[battler] = GetDrainedBigRootHp(battler, GetNonDynamaxMaxHP(battler) / 16); - BattleScriptExecute(BattleScript_IngrainTurnHeal); - effect++; - } - gBattleStruct->turnEffectsTracker++; - break; - case ENDTURN_AQUA_RING: // aqua ring - if ((gStatuses3[battler] & STATUS3_AQUA_RING) - && !IsBattlerAtMaxHp(battler) - && !(gStatuses3[battler] & STATUS3_HEAL_BLOCK) - && IsBattlerAlive(battler)) - { - gBattleStruct->moveDamage[battler] = GetDrainedBigRootHp(battler, GetNonDynamaxMaxHP(battler) / 16); - BattleScriptExecute(BattleScript_AquaRingHeal); - effect++; - } - gBattleStruct->turnEffectsTracker++; - break; - case ENDTURN_ABILITIES: // end turn abilities - if (AbilityBattleEffects(ABILITYEFFECT_ENDTURN, battler, 0, 0, 0)) - effect++; - gBattleStruct->turnEffectsTracker++; - break; - case ENDTURN_ITEMS1: // item effects - if (ItemBattleEffects(ITEMEFFECT_NORMAL, battler, FALSE)) - effect++; - gBattleStruct->turnEffectsTracker++; - break; - case ENDTURN_ITEMS2: // item effects again - if (ItemBattleEffects(ITEMEFFECT_NORMAL, battler, TRUE)) - effect++; - gBattleStruct->turnEffectsTracker++; - break; - case ENDTURN_ITEMS3: // berry effects - if (gItemsInfo[gBattleMons[battler].item].pocket == POCKET_BERRIES - || GetBattlerHoldEffect(battler, TRUE) == HOLD_EFFECT_RESTORE_HP) // Edge case for Berry Juice - { - if (ItemBattleEffects(ITEMEFFECT_NORMAL, battler, FALSE)) - effect++; - } - gBattleStruct->turnEffectsTracker++; - break; - case ENDTURN_ORBS: - if (IsBattlerAlive(battler) && ItemBattleEffects(ITEMEFFECT_ORBS, battler, FALSE)) - effect++; - gBattleStruct->turnEffectsTracker++; - break; - case ENDTURN_LEECH_SEED: // leech seed - if ((gStatuses3[battler] & STATUS3_LEECHSEED) - && IsBattlerAlive(gStatuses3[battler] & STATUS3_LEECHSEED_BATTLER) - && IsBattlerAlive(battler) - && !IsMagicGuardProtected(battler, ability)) - { - gBattlerTarget = gStatuses3[battler] & STATUS3_LEECHSEED_BATTLER; // Notice gBattlerTarget is actually the HP receiver. - gBattlerAttacker = battler; - gBattleScripting.animArg1 = gBattlerTarget; - gBattleScripting.animArg2 = gBattlerAttacker; - gBattleStruct->moveDamage[gBattlerAttacker] = max(1, GetNonDynamaxMaxHP(battler) / 8); - gBattleStruct->moveDamage[gBattlerTarget] = GetDrainedBigRootHp(gBattlerTarget, gBattleStruct->moveDamage[gBattlerAttacker]); - gHitMarker |= HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_PASSIVE_DAMAGE; - if (GetBattlerAbility(battler) == ABILITY_LIQUID_OOZE) - { - gBattleStruct->moveDamage[gBattlerTarget] = gBattleStruct->moveDamage[gBattlerTarget] * -1; - gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_LEECH_SEED_OOZE; - BattleScriptExecute(BattleScript_LeechSeedTurnDrainLiquidOoze); - } - else if (gStatuses3[gBattlerTarget] & STATUS3_HEAL_BLOCK) - { - BattleScriptExecute(BattleScript_LeechSeedTurnDrainHealBlock); - } - else - { - gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_LEECH_SEED_DRAIN; - BattleScriptExecute(BattleScript_LeechSeedTurnDrainRecovery); - } - effect++; - } - gBattleStruct->turnEffectsTracker++; - break; - case ENDTURN_POISON: // poison - if ((gBattleMons[battler].status1 & STATUS1_POISON) - && IsBattlerAlive(battler) - && !IsMagicGuardProtected(battler, ability)) - { - if (ability == ABILITY_POISON_HEAL) - { - if (!IsBattlerAtMaxHp(battler) && !(gStatuses3[battler] & STATUS3_HEAL_BLOCK)) - { - gBattleStruct->moveDamage[battler] = GetNonDynamaxMaxHP(battler) / 8; - if (gBattleStruct->moveDamage[battler] == 0) - gBattleStruct->moveDamage[battler] = 1; - gBattleStruct->moveDamage[battler] *= -1; - BattleScriptExecute(BattleScript_PoisonHealActivates); - effect++; - } - } - else - { - gBattleStruct->moveDamage[battler] = GetNonDynamaxMaxHP(battler) / 8; - if (gBattleStruct->moveDamage[battler] == 0) - gBattleStruct->moveDamage[battler] = 1; - BattleScriptExecute(BattleScript_PoisonTurnDmg); - effect++; - } - } - gBattleStruct->turnEffectsTracker++; - break; - case ENDTURN_BAD_POISON: // toxic poison - if ((gBattleMons[battler].status1 & STATUS1_TOXIC_POISON) - && IsBattlerAlive(battler) - && !IsMagicGuardProtected(battler, ability)) - { - if (ability == ABILITY_POISON_HEAL) - { - if (!IsBattlerAtMaxHp(battler) && !(gStatuses3[battler] & STATUS3_HEAL_BLOCK)) - { - gBattleStruct->moveDamage[battler] = GetNonDynamaxMaxHP(battler) / 8; - if (gBattleStruct->moveDamage[battler] == 0) - gBattleStruct->moveDamage[battler] = 1; - gBattleStruct->moveDamage[battler] *= -1; - BattleScriptExecute(BattleScript_PoisonHealActivates); - effect++; - } - } - else - { - gBattleStruct->moveDamage[battler] = GetNonDynamaxMaxHP(battler) / 16; - if (gBattleStruct->moveDamage[battler] == 0) - gBattleStruct->moveDamage[battler] = 1; - if ((gBattleMons[battler].status1 & STATUS1_TOXIC_COUNTER) != STATUS1_TOXIC_TURN(15)) // not 16 turns - gBattleMons[battler].status1 += STATUS1_TOXIC_TURN(1); - gBattleStruct->moveDamage[battler] *= (gBattleMons[battler].status1 & STATUS1_TOXIC_COUNTER) >> 8; - BattleScriptExecute(BattleScript_PoisonTurnDmg); - effect++; - } - } - gBattleStruct->turnEffectsTracker++; - break; - case ENDTURN_BURN: // burn - if ((gBattleMons[battler].status1 & STATUS1_BURN) - && IsBattlerAlive(battler) - && !IsMagicGuardProtected(battler, ability)) - { - gBattleStruct->moveDamage[battler] = GetNonDynamaxMaxHP(battler) / (B_BURN_DAMAGE >= GEN_7 ? 16 : 8); - if (ability == ABILITY_HEATPROOF) - { - if (gBattleStruct->moveDamage[battler] > (gBattleStruct->moveDamage[battler] / 2) + 1) // Record ability if the burn takes less damage than it normally would. - RecordAbilityBattle(battler, ABILITY_HEATPROOF); - gBattleStruct->moveDamage[battler] /= 2; - } - if (gBattleStruct->moveDamage[battler] == 0) - gBattleStruct->moveDamage[battler] = 1; - BattleScriptExecute(BattleScript_BurnTurnDmg); - effect++; - } - gBattleStruct->turnEffectsTracker++; - break; - case ENDTURN_FROSTBITE: // burn - if ((gBattleMons[battler].status1 & STATUS1_FROSTBITE) - && IsBattlerAlive(battler) - && !IsMagicGuardProtected(battler, ability)) - { - gBattleStruct->moveDamage[battler] = GetNonDynamaxMaxHP(battler) / (B_BURN_DAMAGE >= GEN_7 ? 16 : 8); - if (gBattleStruct->moveDamage[battler] == 0) - gBattleStruct->moveDamage[battler] = 1; - BattleScriptExecute(BattleScript_FrostbiteTurnDmg); - effect++; - } - gBattleStruct->turnEffectsTracker++; - break; - case ENDTURN_NIGHTMARES: // spooky nightmares - if ((gBattleMons[battler].status2 & STATUS2_NIGHTMARE) - && IsBattlerAlive(battler) - && !IsMagicGuardProtected(battler, ability)) - { - // R/S does not perform this sleep check, which causes the nightmare effect to - // persist even after the affected Pokémon has been awakened by Shed Skin. - if (gBattleMons[battler].status1 & STATUS1_SLEEP) - { - gBattleStruct->moveDamage[battler] = GetNonDynamaxMaxHP(battler) / 4; - if (gBattleStruct->moveDamage[battler] == 0) - gBattleStruct->moveDamage[battler] = 1; - BattleScriptExecute(BattleScript_NightmareTurnDmg); - effect++; - } - else - { - gBattleMons[battler].status2 &= ~STATUS2_NIGHTMARE; - } - } - gBattleStruct->turnEffectsTracker++; - break; - case ENDTURN_CURSE: // curse - if ((gBattleMons[battler].status2 & STATUS2_CURSED) - && IsBattlerAlive(battler) - && !IsMagicGuardProtected(battler, ability)) - { - gBattleStruct->moveDamage[battler] = GetNonDynamaxMaxHP(battler) / 4; - if (gBattleStruct->moveDamage[battler] == 0) - gBattleStruct->moveDamage[battler] = 1; - BattleScriptExecute(BattleScript_CurseTurnDmg); - effect++; - } - gBattleStruct->turnEffectsTracker++; - break; - case ENDTURN_WRAP: // wrap - if ((gBattleMons[battler].status2 & STATUS2_WRAPPED) && IsBattlerAlive(battler)) - { - if (--gDisableStructs[battler].wrapTurns != 0) // damaged by wrap - { - if (IsMagicGuardProtected(battler, ability)) - { - gBattleStruct->turnEffectsTracker++; - break; - } - - gBattleScripting.animArg1 = gBattleStruct->wrappedMove[battler]; - gBattleScripting.animArg2 = gBattleStruct->wrappedMove[battler] >> 8; - PREPARE_MOVE_BUFFER(gBattleTextBuff1, gBattleStruct->wrappedMove[battler]); - gBattlescriptCurrInstr = BattleScript_WrapTurnDmg; - if (GetBattlerHoldEffect(gBattleStruct->wrappedBy[battler], TRUE) == HOLD_EFFECT_BINDING_BAND) - gBattleStruct->moveDamage[battler] = GetNonDynamaxMaxHP(battler) / (B_BINDING_DAMAGE >= GEN_6 ? 6 : 8); - else - gBattleStruct->moveDamage[battler] = GetNonDynamaxMaxHP(battler) / (B_BINDING_DAMAGE >= GEN_6 ? 8 : 16); - - if (gBattleStruct->moveDamage[battler] == 0) - gBattleStruct->moveDamage[battler] = 1; - } - else // broke free - { - gBattleMons[battler].status2 &= ~STATUS2_WRAPPED; - PREPARE_MOVE_BUFFER(gBattleTextBuff1, gBattleStruct->wrappedMove[battler]); - gBattlescriptCurrInstr = BattleScript_WrapEnds; - } - BattleScriptExecute(gBattlescriptCurrInstr); - effect++; - } - gBattleStruct->turnEffectsTracker++; - break; - case ENDTURN_OCTOLOCK: - if (gDisableStructs[battler].octolock) - { - gBattlerAttacker = gDisableStructs[battler].battlerPreventingEscape; - gBattlerTarget = battler; - BattleScriptExecute(BattleScript_OctolockEndTurn); - effect++; - } - gBattleStruct->turnEffectsTracker++; - break; - case ENDTURN_UPROAR: // uproar - if (gBattleMons[battler].status2 & STATUS2_UPROAR) - { - for (gBattlerAttacker = 0; gBattlerAttacker < gBattlersCount; gBattlerAttacker++) - { - if ((gBattleMons[gBattlerAttacker].status1 & STATUS1_SLEEP) - && (B_UPROAR_IGNORE_SOUNDPROOF >= GEN_5 || GetBattlerAbility(gBattlerAttacker) != ABILITY_SOUNDPROOF)) - { - gBattleMons[gBattlerAttacker].status1 &= ~STATUS1_SLEEP; - gBattleMons[gBattlerAttacker].status2 &= ~STATUS2_NIGHTMARE; - gBattleCommunication[MULTISTRING_CHOOSER] = 1; - BattleScriptExecute(BattleScript_MonWokeUpInUproar); - BtlController_EmitSetMonData(gBattlerAttacker, B_COMM_TO_CONTROLLER, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gBattlerAttacker].status1); - MarkBattlerForControllerExec(gBattlerAttacker); - break; - } - } - if (gBattlerAttacker != gBattlersCount) - { - effect = 2; // a Pokémon was awaken - break; - } - else - { - gBattlerAttacker = battler; - gBattleMons[battler].status2 -= STATUS2_UPROAR_TURN(1); // uproar timer goes down - if (WasUnableToUseMove(battler)) - { - CancelMultiTurnMoves(battler); - gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_UPROAR_ENDS; - } - else if (gBattleMons[battler].status2 & STATUS2_UPROAR) - { - gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_UPROAR_CONTINUES; - gBattleMons[battler].status2 |= STATUS2_MULTIPLETURNS; - } - else - { - gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_UPROAR_ENDS; - CancelMultiTurnMoves(battler); - } - BattleScriptExecute(BattleScript_PrintUproarOverTurns); - effect = 1; - } - } - if (effect != 2) - gBattleStruct->turnEffectsTracker++; - break; - case ENDTURN_THRASH: // thrash - // Don't decrement STATUS2_LOCK_CONFUSE if the target is held by Sky Drop - if (gBattleMons[battler].status2 & STATUS2_LOCK_CONFUSE && !(gStatuses3[battler] & STATUS3_SKY_DROPPED)) - { - gBattleMons[battler].status2 -= STATUS2_LOCK_CONFUSE_TURN(1); - if (WasUnableToUseMove(battler)) - CancelMultiTurnMoves(battler); - else if (!(gBattleMons[battler].status2 & STATUS2_LOCK_CONFUSE) - && (gBattleMons[battler].status2 & STATUS2_MULTIPLETURNS)) - { - gBattleMons[battler].status2 &= ~STATUS2_MULTIPLETURNS; - if (!(gBattleMons[battler].status2 & STATUS2_CONFUSION)) - { - gBattleScripting.moveEffect = MOVE_EFFECT_CONFUSION | MOVE_EFFECT_AFFECTS_USER; - SetMoveEffect(TRUE, FALSE); - if (gBattleMons[battler].status2 & STATUS2_CONFUSION) - BattleScriptExecute(BattleScript_ThrashConfuses); - effect++; - } - } - } - gBattleStruct->turnEffectsTracker++; - break; - case ENDTURN_FLINCH: // reset flinch - gBattleMons[battler].status2 &= ~STATUS2_FLINCHED; - gBattleStruct->turnEffectsTracker++; - break; - case ENDTURN_DISABLE: // disable - if (gDisableStructs[battler].disableTimer != 0) - { - for (i = 0; i < MAX_MON_MOVES; i++) - { - if (gDisableStructs[battler].disabledMove == gBattleMons[battler].moves[i]) - break; - } - if (i == MAX_MON_MOVES) // Pokémon does not have the disabled move anymore - { - gDisableStructs[battler].disabledMove = 0; - gDisableStructs[battler].disableTimer = 0; - } - else if (--gDisableStructs[battler].disableTimer == 0) // disable ends - { - gDisableStructs[battler].disabledMove = 0; - BattleScriptExecute(BattleScript_DisabledNoMore); - effect++; - } - } - gBattleStruct->turnEffectsTracker++; - break; - case ENDTURN_ENCORE: // encore - if (gDisableStructs[battler].encoreTimer != 0) - { - if (gBattleMons[battler].moves[gDisableStructs[battler].encoredMovePos] != gDisableStructs[battler].encoredMove) // Pokémon does not have the encored move anymore - { - gDisableStructs[battler].encoredMove = 0; - gDisableStructs[battler].encoreTimer = 0; - } - else if (--gDisableStructs[battler].encoreTimer == 0 - || gBattleMons[battler].pp[gDisableStructs[battler].encoredMovePos] == 0) - { - gDisableStructs[battler].encoredMove = 0; - gDisableStructs[battler].encoreTimer = 0; - BattleScriptExecute(BattleScript_EncoredNoMore); - effect++; - } - } - gBattleStruct->turnEffectsTracker++; - break; - case ENDTURN_LOCK_ON: // lock-on decrement - if (gStatuses3[battler] & STATUS3_ALWAYS_HITS) - gStatuses3[battler] -= STATUS3_ALWAYS_HITS_TURN(1); - gBattleStruct->turnEffectsTracker++; - break; - case ENDTURN_CHARGE: // charge - if (gDisableStructs[battler].chargeTimer > 0 && --gDisableStructs[battler].chargeTimer == 0) - gStatuses3[battler] &= ~STATUS3_CHARGED_UP; - gBattleStruct->turnEffectsTracker++; - break; - case ENDTURN_TAUNT: // taunt - if (gDisableStructs[battler].tauntTimer && --gDisableStructs[battler].tauntTimer == 0) - { - BattleScriptExecute(BattleScript_BufferEndTurn); - PREPARE_MOVE_BUFFER(gBattleTextBuff1, MOVE_TAUNT); - effect++; - } - gBattleStruct->turnEffectsTracker++; - break; - case ENDTURN_YAWN: // yawn - if (gStatuses3[battler] & STATUS3_YAWN) - { - u16 battlerAbility = GetBattlerAbility(battler); - gStatuses3[battler] -= STATUS3_YAWN_TURN(1); - if (!(gStatuses3[battler] & STATUS3_YAWN) && !(gBattleMons[battler].status1 & STATUS1_ANY) - && battlerAbility != ABILITY_VITAL_SPIRIT - && battlerAbility != ABILITY_INSOMNIA && !UproarWakeUpCheck(battler) - && !IsLeafGuardProtected(battler, battlerAbility)) - { - CancelMultiTurnMoves(battler); - gEffectBattler = gBattlerTarget = battler; - if (IsBattlerTerrainAffected(battler, STATUS_FIELD_ELECTRIC_TERRAIN)) - { - gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_TERRAINPREVENTS_ELECTRIC; - BattleScriptExecute(BattleScript_TerrainPreventsEnd2); - } - else if (IsBattlerTerrainAffected(battler, STATUS_FIELD_MISTY_TERRAIN)) - { - gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_TERRAINPREVENTS_MISTY; - BattleScriptExecute(BattleScript_TerrainPreventsEnd2); - } - else if (IsSleepClauseActiveForSide(GetBattlerSide(battler))) - { - BattleScriptExecute(BattleScript_SleepClausePreventsEnd); - } - else - { - if (B_SLEEP_TURNS >= GEN_5) - gBattleMons[battler].status1 |= ((Random() % 3) + 2); - else - gBattleMons[battler].status1 |= ((Random() % 4) + 3); - - TryActivateSleepClause(battler, gBattlerPartyIndexes[battler]); - BtlController_EmitSetMonData(battler, B_COMM_TO_CONTROLLER, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[battler].status1); - MarkBattlerForControllerExec(battler); - BattleScriptExecute(BattleScript_YawnMakesAsleep); - } - effect++; - } - } - gBattleStruct->turnEffectsTracker++; - break; - case ENDTURN_LASER_FOCUS: - if (gStatuses3[battler] & STATUS3_LASER_FOCUS) - { - if (gDisableStructs[battler].laserFocusTimer == 0 || --gDisableStructs[battler].laserFocusTimer == 0) - gStatuses3[battler] &= ~STATUS3_LASER_FOCUS; - } - gBattleStruct->turnEffectsTracker++; - break; - case ENDTURN_EMBARGO: - if (gStatuses3[battler] & STATUS3_EMBARGO) - { - if (gDisableStructs[battler].embargoTimer == 0 || --gDisableStructs[battler].embargoTimer == 0) - { - gStatuses3[battler] &= ~STATUS3_EMBARGO; - BattleScriptExecute(BattleScript_EmbargoEndTurn); - effect++; - } - } - gBattleStruct->turnEffectsTracker++; - break; - case ENDTURN_MAGNET_RISE: - if (gStatuses3[battler] & STATUS3_MAGNET_RISE) - { - if (gDisableStructs[battler].magnetRiseTimer == 0 || --gDisableStructs[battler].magnetRiseTimer == 0) - { - gStatuses3[battler] &= ~STATUS3_MAGNET_RISE; - BattleScriptExecute(BattleScript_BufferEndTurn); - PREPARE_STRING_BUFFER(gBattleTextBuff1, STRINGID_ELECTROMAGNETISM); - effect++; - } - } - gBattleStruct->turnEffectsTracker++; - break; - case ENDTURN_TELEKINESIS: - if (gStatuses3[battler] & STATUS3_TELEKINESIS) - { - if (gDisableStructs[battler].telekinesisTimer == 0 || --gDisableStructs[battler].telekinesisTimer == 0) - { - gStatuses3[battler] &= ~STATUS3_TELEKINESIS; - BattleScriptExecute(BattleScript_TelekinesisEndTurn); - effect++; - } - } - gBattleStruct->turnEffectsTracker++; - break; - case ENDTURN_HEALBLOCK: - if (gStatuses3[battler] & STATUS3_HEAL_BLOCK) - { - if (gDisableStructs[battler].healBlockTimer == 0 || --gDisableStructs[battler].healBlockTimer == 0) - { - gStatuses3[battler] &= ~STATUS3_HEAL_BLOCK; - BattleScriptExecute(BattleScript_BufferEndTurn); - PREPARE_MOVE_BUFFER(gBattleTextBuff1, MOVE_HEAL_BLOCK); - effect++; - } - } - gBattleStruct->turnEffectsTracker++; - break; - case ENDTURN_ROOST: // Return flying type. - if (gDisableStructs[battler].roostActive) - gDisableStructs[battler].roostActive = FALSE; - gBattleStruct->turnEffectsTracker++; - break; - case ENDTURN_POWDER: - gBattleMons[battler].status2 &= ~STATUS2_POWDER; - gBattleStruct->turnEffectsTracker++; - break; - case ENDTURN_THROAT_CHOP: - if (gDisableStructs[battler].throatChopTimer && --gDisableStructs[battler].throatChopTimer == 0) - { - BattleScriptExecute(BattleScript_ThroatChopEndTurn); - effect++; - } - gBattleStruct->turnEffectsTracker++; - break; - case ENDTURN_SLOW_START: - if (gDisableStructs[battler].slowStartTimer - && --gDisableStructs[battler].slowStartTimer == 0 - && ability == ABILITY_SLOW_START) - { - BattleScriptExecute(BattleScript_SlowStartEnds); - effect++; - } - gBattleStruct->turnEffectsTracker++; - break; - case ENDTURN_CUD_CHEW: - if (GetBattlerAbility(battler) == ABILITY_CUD_CHEW && !gDisableStructs[battler].cudChew && GetItemPocket(GetUsedHeldItem(battler)) == POCKET_BERRIES) - gDisableStructs[battler].cudChew = TRUE; - gBattleStruct->turnEffectsTracker++; - break; - case ENDTURN_SALT_CURE: - if (gStatuses4[battler] & STATUS4_SALT_CURE - && IsBattlerAlive(battler) - && !IsMagicGuardProtected(battler, ability)) - { - gBattlerTarget = battler; - if (IS_BATTLER_ANY_TYPE(battler, TYPE_STEEL, TYPE_WATER)) - gBattleStruct->moveDamage[battler] = gBattleMons[battler].maxHP / 4; - else - gBattleStruct->moveDamage[battler] = gBattleMons[battler].maxHP / 8; - if (gBattleStruct->moveDamage[battler] == 0) - gBattleStruct->moveDamage[battler] = 1; - PREPARE_MOVE_BUFFER(gBattleTextBuff1, MOVE_SALT_CURE); - BattleScriptExecute(BattleScript_SaltCureExtraDamage); - effect++; - } - gBattleStruct->turnEffectsTracker++; - break; - case ENDTURN_SYRUP_BOMB: - if ((gStatuses4[battler] & STATUS4_SYRUP_BOMB) && (IsBattlerAlive(battler))) - { - if (gDisableStructs[battler].syrupBombTimer > 0 && --gDisableStructs[battler].syrupBombTimer == 0) - gStatuses4[battler] &= ~STATUS4_SYRUP_BOMB; - gBattlerTarget = battler; - PREPARE_MOVE_BUFFER(gBattleTextBuff1, MOVE_SYRUP_BOMB); - gBattlescriptCurrInstr = BattleScript_SyrupBombEndTurn; - BattleScriptExecute(gBattlescriptCurrInstr); - effect++; - } - gBattleStruct->turnEffectsTracker++; - break; - case ENDTURN_TORMENT: - if (gDisableStructs[battler].tormentTimer != PERMANENT_TORMENT - && --gDisableStructs[battler].tormentTimer == 0) - { - gBattleMons[battler].status2 &= ~STATUS2_TORMENT; - BattleScriptExecute(BattleScript_TormentEnds); - effect++; - } - gBattleStruct->turnEffectsTracker++; - break; - case ENDTURN_DYNAMAX: - if (GetActiveGimmick(battler) == GIMMICK_DYNAMAX - && --gBattleStruct->dynamax.dynamaxTurns[battler] == 0) - { - gBattleScripting.battler = battler; - UndoDynamax(battler); - BattleScriptExecute(BattleScript_DynamaxEnds); - effect++; - } - gBattleStruct->turnEffectsTracker++; - break; - case ENDTURN_GMAX_MOVE_RESIDUAL_DAMAGE: - { - u32 side = GetBattlerSide(gBattlerAttacker); - if (gSideStatuses[side] & SIDE_STATUS_DAMAGE_NON_TYPES - && !IS_BATTLER_OF_TYPE(gBattlerAttacker, gSideTimers[side].damageNonTypesType) - && IsBattlerAlive(gBattlerAttacker) - && GetBattlerAbility(gBattlerAttacker) != ABILITY_MAGIC_GUARD) - { - gBattleScripting.battler = battler; - gBattleStruct->moveDamage[battler] = 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) - { - gBattleStruct->moveDamage[battler] = GetNonDynamaxMaxHP(battler) / 8; - BtlController_EmitStatusAnimation(battler, B_COMM_TO_CONTROLLER, FALSE, STATUS1_BURN); - MarkBattlerForControllerExec(battler); - BattleScriptExecute(BattleScript_HurtByTheSeaOfFire); - effect++; - } - gBattleStruct->turnEffectsTracker++; - break; - case ENDTURN_BATTLER_COUNT: // done - gBattleStruct->turnEffectsTracker = 0; - gBattleStruct->turnEffectsBattlerId++; - break; - } - - if (effect != 0) - return effect; - - } - gHitMarker &= ~(HITMARKER_GRUDGE | HITMARKER_IGNORE_BIDE); - return 0; -} - -bool32 HandleWishPerishSongOnTurnEnd(void) -{ - u32 battler; - - gHitMarker |= (HITMARKER_GRUDGE | HITMARKER_IGNORE_BIDE); - switch (gBattleStruct->wishPerishSongState) - { - case 0: - while (gBattleStruct->wishPerishSongBattlerId < gBattlersCount) - { - battler = gBattleStruct->wishPerishSongBattlerId; - - gBattleStruct->wishPerishSongBattlerId++; - - if (gWishFutureKnock.futureSightCounter[battler] == gBattleTurnCounter && !(gAbsentBattlerFlags & (1u << battler))) - { - if (gWishFutureKnock.futureSightCounter[battler] == gBattleTurnCounter - && gWishFutureKnock.futureSightCounter[BATTLE_PARTNER(battler)] <= gBattleTurnCounter) - { - gSideStatuses[GetBattlerSide(battler)] &= ~SIDE_STATUS_FUTUREATTACK; - } - - if (!IsBattlerAlive(battler)) - continue; - - if (gWishFutureKnock.futureSightMove[battler] == MOVE_FUTURE_SIGHT) - gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_FUTURE_SIGHT; - else - gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_DOOM_DESIRE; - - PREPARE_MOVE_BUFFER(gBattleTextBuff1, gWishFutureKnock.futureSightMove[battler]); - - gBattlerTarget = battler; - gBattlerAttacker = gWishFutureKnock.futureSightBattlerIndex[battler]; - gCurrentMove = gWishFutureKnock.futureSightMove[battler]; - - if (!IsFutureSightAttackerInParty(gBattlerAttacker, gBattlerTarget)) - SetTypeBeforeUsingMove(gCurrentMove, gBattlerAttacker); - - BattleScriptExecute(BattleScript_MonTookFutureAttack); - - return TRUE; - } - } - gBattleStruct->wishPerishSongState = 1; - gBattleStruct->wishPerishSongBattlerId = 0; - // fall through - case 1: - while (gBattleStruct->wishPerishSongBattlerId < gBattlersCount) - { - battler = gBattlerAttacker = gBattlerByTurnOrder[gBattleStruct->wishPerishSongBattlerId]; - if (gAbsentBattlerFlags & (1u << battler)) - { - gBattleStruct->wishPerishSongBattlerId++; - continue; - } - gBattleStruct->wishPerishSongBattlerId++; - if (gStatuses3[battler] & STATUS3_PERISH_SONG) - { - PREPARE_BYTE_NUMBER_BUFFER(gBattleTextBuff1, 1, gDisableStructs[battler].perishSongTimer); - if (gDisableStructs[battler].perishSongTimer == 0) - { - gStatuses3[battler] &= ~STATUS3_PERISH_SONG; - gBattleStruct->moveDamage[battler] = gBattleMons[battler].hp; - gBattlescriptCurrInstr = BattleScript_PerishSongTakesLife; - } - else - { - gDisableStructs[battler].perishSongTimer--; - gBattlescriptCurrInstr = BattleScript_PerishSongCountGoesDown; - } - BattleScriptExecute(gBattlescriptCurrInstr); - return TRUE; - } - } - gBattleStruct->wishPerishSongState = 2; - gBattleStruct->wishPerishSongBattlerId = 0; - // fall through - case 2: - if ((gBattleTypeFlags & BATTLE_TYPE_ARENA) - && gBattleStruct->arenaTurnCounter == 2 - && IsBattlerAlive(B_POSITION_PLAYER_LEFT) && IsBattlerAlive(B_POSITION_OPPONENT_LEFT)) - { - s32 i; - - for (i = 0; i < 2; i++) - CancelMultiTurnMoves(i); - - gBattlescriptCurrInstr = BattleScript_ArenaDoJudgment; - BattleScriptExecute(BattleScript_ArenaDoJudgment); - gBattleStruct->wishPerishSongState++; - return TRUE; - } - break; - } - - gHitMarker &= ~(HITMARKER_GRUDGE | HITMARKER_IGNORE_BIDE); - - return FALSE; -} - #define FAINTED_ACTIONS_MAX_CASE 7 - bool32 HandleFaintedMonActions(void) { if (gBattleTypeFlags & BATTLE_TYPE_SAFARI) @@ -3202,7 +1875,7 @@ static void CancellerRecharge(u32 *effect) { gBattleMons[gBattlerAttacker].status2 &= ~STATUS2_RECHARGE; gDisableStructs[gBattlerAttacker].rechargeTimer = 0; - CancelMultiTurnMoves(gBattlerAttacker); + CancelMultiTurnMoves(gBattlerAttacker, SKY_DROP_ATTACKCANCELLER_CHECK); gBattlescriptCurrInstr = BattleScript_MoveUsedMustRecharge; gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; *effect = 1; @@ -3236,7 +1909,7 @@ static void CancellerAsleep(u32 *effect) gBattleMons[gBattlerAttacker].status1 -= toSub; if (gBattleMons[gBattlerAttacker].status1 & STATUS1_SLEEP) { - u32 moveEffect = GetMoveEffect(gChosenMove); + enum BattleMoveEffects moveEffect = GetMoveEffect(gChosenMove); if (moveEffect != EFFECT_SNORE && moveEffect != EFFECT_SLEEP_TALK) { gProtectStructs[gBattlerAttacker].nonVolatileStatusImmobility = TRUE; @@ -3339,7 +2012,7 @@ static void CancellerTruant(u32 *effect) { if (GetBattlerAbility(gBattlerAttacker) == ABILITY_TRUANT && gDisableStructs[gBattlerAttacker].truantCounter) { - CancelMultiTurnMoves(gBattlerAttacker); + CancelMultiTurnMoves(gBattlerAttacker, SKY_DROP_ATTACKCANCELLER_CHECK); gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_LOAFING; gBattlerAbility = gBattlerAttacker; @@ -3354,7 +2027,7 @@ static void CancellerFlinch(u32 *effect) if (gBattleMons[gBattlerAttacker].status2 & STATUS2_FLINCHED) { gProtectStructs[gBattlerAttacker].unableToUseMove = TRUE; - CancelMultiTurnMoves(gBattlerAttacker); + CancelMultiTurnMoves(gBattlerAttacker, SKY_DROP_ATTACKCANCELLER_CHECK); gBattlescriptCurrInstr = BattleScript_MoveUsedFlinched; gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; *effect = 1; @@ -3375,7 +2048,7 @@ static void CancellerInLove(u32 *effect) BattleScriptPush(BattleScript_MoveUsedIsInLoveCantAttack); gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; gProtectStructs[gBattlerAttacker].unableToUseMove = TRUE; - CancelMultiTurnMoves(gBattlerAttacker); + CancelMultiTurnMoves(gBattlerAttacker, SKY_DROP_ATTACKCANCELLER_CHECK); } gBattlescriptCurrInstr = BattleScript_MoveUsedIsInLove; *effect = 1; @@ -3388,7 +2061,7 @@ static void CancellerDisabled(u32 *effect) { gProtectStructs[gBattlerAttacker].unableToUseMove = TRUE; gBattleScripting.battler = gBattlerAttacker; - CancelMultiTurnMoves(gBattlerAttacker); + CancelMultiTurnMoves(gBattlerAttacker, SKY_DROP_ATTACKCANCELLER_CHECK); gBattlescriptCurrInstr = BattleScript_MoveUsedIsDisabled; gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; *effect = 1; @@ -3401,7 +2074,7 @@ static void CancellerHealBlocked(u32 *effect) { gProtectStructs[gBattlerAttacker].unableToUseMove = TRUE; gBattleScripting.battler = gBattlerAttacker; - CancelMultiTurnMoves(gBattlerAttacker); + CancelMultiTurnMoves(gBattlerAttacker, SKY_DROP_ATTACKCANCELLER_CHECK); gBattlescriptCurrInstr = BattleScript_MoveUsedHealBlockPrevents; gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; *effect = 1; @@ -3414,7 +2087,7 @@ static void CancellerGravity(u32 *effect) { gProtectStructs[gBattlerAttacker].unableToUseMove = TRUE; gBattleScripting.battler = gBattlerAttacker; - CancelMultiTurnMoves(gBattlerAttacker); + CancelMultiTurnMoves(gBattlerAttacker, SKY_DROP_ATTACKCANCELLER_CHECK); gBattlescriptCurrInstr = BattleScript_MoveUsedGravityPrevents; gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; *effect = 1; @@ -3423,10 +2096,10 @@ static void CancellerGravity(u32 *effect) static void CancellerThroatChop(u32 *effect) { - if (GetActiveGimmick(gBattlerAttacker) != GIMMICK_Z_MOVE && gDisableStructs[gBattlerAttacker].throatChopTimer && IsSoundMove(gCurrentMove)) + if (GetActiveGimmick(gBattlerAttacker) != GIMMICK_Z_MOVE && gDisableStructs[gBattlerAttacker].throatChopTimer > gBattleTurnCounter && IsSoundMove(gCurrentMove)) { gProtectStructs[gBattlerAttacker].unableToUseMove = TRUE; - CancelMultiTurnMoves(gBattlerAttacker); + CancelMultiTurnMoves(gBattlerAttacker, SKY_DROP_ATTACKCANCELLER_CHECK); gBattlescriptCurrInstr = BattleScript_MoveUsedIsThroatChopPrevented; gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; *effect = 1; @@ -3438,7 +2111,7 @@ static void CancellerTaunted(u32 *effect) if (GetActiveGimmick(gBattlerAttacker) != GIMMICK_Z_MOVE && gDisableStructs[gBattlerAttacker].tauntTimer && IsBattleMoveStatus(gCurrentMove)) { gProtectStructs[gBattlerAttacker].unableToUseMove = TRUE; - CancelMultiTurnMoves(gBattlerAttacker); + CancelMultiTurnMoves(gBattlerAttacker, SKY_DROP_ATTACKCANCELLER_CHECK); gBattlescriptCurrInstr = BattleScript_MoveUsedIsTaunted; gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; *effect = 1; @@ -3450,7 +2123,7 @@ static void CancellerImprisoned(u32 *effect) if (GetActiveGimmick(gBattlerAttacker) != GIMMICK_Z_MOVE && GetImprisonedMovesCount(gBattlerAttacker, gCurrentMove)) { gProtectStructs[gBattlerAttacker].unableToUseMove = TRUE; - CancelMultiTurnMoves(gBattlerAttacker); + CancelMultiTurnMoves(gBattlerAttacker, SKY_DROP_ATTACKCANCELLER_CHECK); gBattlescriptCurrInstr = BattleScript_MoveUsedIsImprisoned; gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; *effect = 1; @@ -3509,7 +2182,7 @@ static void CancellerParalysed(u32 *effect) { gProtectStructs[gBattlerAttacker].nonVolatileStatusImmobility = TRUE; // This is removed in FRLG and Emerald for some reason - //CancelMultiTurnMoves(gBattlerAttacker); + //CancelMultiTurnMoves(gBattlerAttacker, SKY_DROP_ATTACKCANCELLER_CHECK); gBattlescriptCurrInstr = BattleScript_MoveUsedIsParalyzed; gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; *effect = 1; @@ -3597,7 +2270,7 @@ static void CancellerWeatherPrimal(u32 *effect) { gBattleScripting.moveEffect = 0; gProtectStructs[gBattlerAttacker].chargingTurn = FALSE; - CancelMultiTurnMoves(gBattlerAttacker); + CancelMultiTurnMoves(gBattlerAttacker, SKY_DROP_ATTACKCANCELLER_CHECK); gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_PrimalWeatherBlocksMove; @@ -3653,12 +2326,12 @@ static void CancellerPsychicTerrain(u32 *effect) { if (gFieldStatuses & STATUS_FIELD_PSYCHIC_TERRAIN && IsBattlerGrounded(gBattlerTarget) - && GetChosenMovePriority(gBattlerAttacker) > 0 + && GetChosenMovePriority(gBattlerAttacker, GetBattlerAbility(gBattlerAttacker)) > 0 && GetMoveTarget(gCurrentMove) != MOVE_TARGET_ALL_BATTLERS && GetMoveTarget(gCurrentMove) != MOVE_TARGET_OPPONENTS_FIELD - && GetBattlerSide(gBattlerAttacker) != GetBattlerSide(gBattlerTarget)) + && !IsBattlerAlly(gBattlerAttacker, gBattlerTarget)) { - CancelMultiTurnMoves(gBattlerAttacker); + CancelMultiTurnMoves(gBattlerAttacker, SKY_DROP_ATTACKCANCELLER_CHECK); gBattlescriptCurrInstr = BattleScript_MoveUsedPsychicTerrainPrevents; gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; *effect = 1; @@ -3786,13 +2459,17 @@ static void CancellerZMoves(u32 *effect) static void CancellerMultiTargetMoves(u32 *effect) { u32 moveTarget = GetBattlerMoveTargetType(gBattlerAttacker, gCurrentMove); + u32 abilityAtk = GetBattlerAbility(gBattlerAttacker); + if (IsSpreadMove(moveTarget)) { for (u32 battlerDef = 0; battlerDef < gBattlersCount; battlerDef++) { - if (gBattleStruct->bouncedMoveIsUsed && B_SIDE_OPPONENT == GetBattlerSide(battlerDef)) + if (gBattleStruct->bouncedMoveIsUsed && !IsOnPlayerSide(battlerDef)) continue; + u32 abilityDef = GetBattlerAbility(battlerDef); + if (gBattlerAttacker == battlerDef || !IsBattlerAlive(battlerDef) || (moveTarget == MOVE_TARGET_BOTH && gBattlerAttacker == BATTLE_PARTNER(battlerDef)) @@ -3801,13 +2478,13 @@ static void CancellerMultiTargetMoves(u32 *effect) gBattleStruct->moveResultFlags[battlerDef] = MOVE_RESULT_NO_EFFECT; gBattleStruct->noResultString[battlerDef] = TRUE; } - else if (AbilityBattleEffects(ABILITYEFFECT_WOULD_BLOCK, battlerDef, 0, 0, 0) - || (IsBattlerTerrainAffected(gBattlerAttacker, STATUS_FIELD_PSYCHIC_TERRAIN) && GetBattleMovePriority(gBattlerAttacker, gCurrentMove) > 0)) + else if (CanAbilityBlockMove(gBattlerAttacker, battlerDef, abilityAtk, abilityDef, gCurrentMove, ABILITY_CHECK_TRIGGER) + || (IsBattlerTerrainAffected(gBattlerAttacker, STATUS_FIELD_PSYCHIC_TERRAIN) && GetBattleMovePriority(gBattlerAttacker, abilityAtk, gCurrentMove) > 0)) { gBattleStruct->moveResultFlags[battlerDef] = 0; gBattleStruct->noResultString[battlerDef] = TRUE; } - else if (AbilityBattleEffects(ABILITYEFFECT_WOULD_ABSORB, battlerDef, 0, 0, gCurrentMove)) + else if (CanAbilityAbsorbMove(gBattlerAttacker, battlerDef, abilityDef, gCurrentMove, GetBattleMoveType(gCurrentMove), ABILITY_CHECK_TRIGGER)) { gBattleStruct->moveResultFlags[battlerDef] = 0; gBattleStruct->noResultString[battlerDef] = DO_ACCURACY_CHECK; @@ -3879,22 +2556,22 @@ u32 AtkCanceller_MoveSuccessOrder(void) bool32 HasNoMonsToSwitch(u32 battler, u8 partyIdBattlerOn1, u8 partyIdBattlerOn2) { - u32 i, side, playerId, flankId; + u32 i, playerId, flankId; struct Pokemon *party; if (!IsDoubleBattle()) return FALSE; - side = GetBattlerSide(battler); + bool32 isPlayerside = IsOnPlayerSide(battler); - if (BATTLE_TWO_VS_ONE_OPPONENT && side == B_SIDE_OPPONENT) + if (BATTLE_TWO_VS_ONE_OPPONENT && !isPlayerside) { flankId = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT); playerId = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT); party = gEnemyParty; // Edge case: If both opposing Pokemon were knocked out on the same turn, - // make sure opponent only sents out the final Pokemon once. + // make sure opponent only sends out the final Pokemon once. if (battler == playerId && (gHitMarker & HITMARKER_FAINTED(flankId)) && (gHitMarker & HITMARKER_FAINTED(playerId))) @@ -3925,7 +2602,7 @@ bool32 HasNoMonsToSwitch(u32 battler, u8 partyIdBattlerOn1, u8 partyIdBattlerOn2 else if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER) { party = GetBattlerParty(battler); - if (side == B_SIDE_OPPONENT && WILD_DOUBLE_BATTLE) + if (!isPlayerside && WILD_DOUBLE_BATTLE) { flankId = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT); playerId = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT); @@ -3959,7 +2636,7 @@ bool32 HasNoMonsToSwitch(u32 battler, u8 partyIdBattlerOn1, u8 partyIdBattlerOn2 { if (gBattleTypeFlags & BATTLE_TYPE_TOWER_LINK_MULTI) { - if (side == B_SIDE_PLAYER) + if (isPlayerside) { party = gPlayerParty; flankId = GetBattlerMultiplayerId(battler); @@ -3988,7 +2665,7 @@ bool32 HasNoMonsToSwitch(u32 battler, u8 partyIdBattlerOn1, u8 partyIdBattlerOn2 } return (i == playerId * MULTI_PARTY_SIZE + MULTI_PARTY_SIZE); } - else if ((gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS) && side == B_SIDE_OPPONENT) + else if ((gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS) && !isPlayerside) { party = gEnemyParty; @@ -4006,7 +2683,7 @@ bool32 HasNoMonsToSwitch(u32 battler, u8 partyIdBattlerOn1, u8 partyIdBattlerOn2 } else { - if (side == B_SIDE_OPPONENT) + if (!isPlayerside) { flankId = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT); playerId = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT); @@ -4104,7 +2781,7 @@ static void ForewarnChooseMove(u32 battler) // Put all moves for (count = 0, i = 0; i < MAX_BATTLERS_COUNT; i++) { - if (IsBattlerAlive(i) && GetBattlerSide(i) != GetBattlerSide(battler)) + if (IsBattlerAlive(i) && !IsBattlerAlly(i, battler)) { for (j = 0; j < MAX_MON_MOVES; j++) { @@ -4188,12 +2865,12 @@ static inline uq4_12_t GetSupremeOverlordModifier(u32 battler) return UQ_4_12(1.0) + (PercentToUQ4_12(gBattleStruct->supremeOverlordCounter[battler] * 10)); } -static inline bool32 HadMoreThanHalfHpNowDoesnt(u32 battler) +bool32 HadMoreThanHalfHpNowDoesnt(u32 battler) { u32 cutoff = gBattleMons[battler].maxHP / 2; // Had more than half of hp before, now has less - return (gBattleStruct->hpBefore[battler] > cutoff - && gBattleMons[battler].hp <= cutoff); + return gBattleStruct->hpBefore[battler] > cutoff + && gBattleMons[battler].hp <= cutoff; } #define ANIM_STAT_HP 0 @@ -4244,17 +2921,21 @@ static void ChooseStatBoostAnimation(u32 battler) #undef ANIM_STAT_ACC #undef ANIM_STAT_EVASION -bool32 CanAbilityBlockMove(u32 battlerAtk, u32 battlerDef, u32 move, u32 abilityDef, enum AbilityEffectOptions option) +bool32 CanAbilityBlockMove(u32 battlerAtk, u32 battlerDef, u32 abilityAtk, u32 abilityDef, u32 move, enum AbilityEffectOptions option) { const u8 *battleScriptBlocksMove = NULL; - s32 atkPriority = AI_DATA->aiCalcInProgress ? GetBattleMovePriority(battlerAtk, move) : GetChosenMovePriority(battlerAtk); - u32 moveTarget = GetBattlerMoveTargetType(battlerAtk, move); u32 battlerAbility = battlerDef; + s32 atkPriority = 0; + + if (option == ABILITY_CHECK_TRIGGER_AI) + atkPriority = GetBattleMovePriority(battlerAtk, abilityAtk, move); + else + atkPriority = GetChosenMovePriority(battlerAtk, abilityAtk); switch (abilityDef) { case ABILITY_SOUNDPROOF: - if (IsSoundMove(move) && !(moveTarget & MOVE_TARGET_USER)) + if (IsSoundMove(move) && !(GetBattlerMoveTargetType(battlerAtk, move) & MOVE_TARGET_USER)) { if (gBattleMons[battlerAtk].status2 & STATUS2_MULTIPLETURNS) gHitMarker |= HITMARKER_NO_PPDEDUCT; @@ -4282,29 +2963,49 @@ bool32 CanAbilityBlockMove(u32 battlerAtk, u32 battlerDef, u32 move, u32 ability case ABILITY_GOOD_AS_GOLD: if (IsBattleMoveStatus(move)) { - if (!(moveTarget & MOVE_TARGET_OPPONENTS_FIELD) && !(moveTarget & MOVE_TARGET_ALL_BATTLERS)) + if (!(GetBattlerMoveTargetType(battlerAtk, move) & (MOVE_TARGET_OPPONENTS_FIELD | MOVE_TARGET_ALL_BATTLERS))) battleScriptBlocksMove = BattleScript_GoodAsGoldActivates; } break; } - - // Check def partner ability - if (IsDoubleBattle() && IsBattlerAlive(BATTLE_PARTNER(battlerDef))) + if (atkPriority > 0) { - switch (GetBattlerAbility(BATTLE_PARTNER(battlerDef))) + // Prankster check + if (battleScriptBlocksMove == NULL + && IsBattleMoveStatus(move) + && BlocksPrankster(move, battlerAtk, battlerDef, TRUE) + && !(IsBattleMoveStatus(move) && (abilityDef == ABILITY_MAGIC_BOUNCE || gProtectStructs[battlerDef].bounceMove))) { - case ABILITY_DAZZLING: - case ABILITY_QUEENLY_MAJESTY: - case ABILITY_ARMOR_TAIL: - if (atkPriority > 0 && !IsBattlerAlly(battlerAtk, BATTLE_PARTNER(battlerDef))) + if (option == ABILITY_RUN_SCRIPT && !IsSpreadMove(GetBattlerMoveTargetType(battlerAtk, move))) + CancelMultiTurnMoves(battlerAtk, SKY_DROP_ATTACKCANCELLER_CHECK); // Don't cancel moves that can hit two targets bc one target might not be protected + + battleScriptBlocksMove = BattleScript_DarkTypePreventsPrankster; + } + + // Check def partner ability + u32 partnerDef = BATTLE_PARTNER(battlerDef); + if (battleScriptBlocksMove == NULL + && IsDoubleBattle() + && IsBattlerAlive(partnerDef) + && !IsBattlerAlly(battlerAtk, partnerDef)) + { + if (option == ABILITY_CHECK_TRIGGER_AI) + abilityDef = gAiLogicData->abilities[partnerDef]; + else + abilityDef = GetBattlerAbility(partnerDef); + + switch (abilityDef) { + case ABILITY_DAZZLING: + case ABILITY_QUEENLY_MAJESTY: + case ABILITY_ARMOR_TAIL: if (gBattleMons[battlerAtk].status2 & STATUS2_MULTIPLETURNS) gHitMarker |= HITMARKER_NO_PPDEDUCT; - battlerAbility = BATTLE_PARTNER(battlerDef); + battlerAbility = partnerDef; battleScriptBlocksMove = BattleScript_DazzlingProtected; + break; } - break; } } @@ -4314,9 +3015,12 @@ bool32 CanAbilityBlockMove(u32 battlerAtk, u32 battlerDef, u32 move, u32 ability if (option == ABILITY_RUN_SCRIPT) { gMultiHitCounter = 0; // Prevent multi-hit moves from hitting more than once after move has been absorbed. + gLastUsedAbility = abilityDef; + RecordAbilityBattle(battlerDef, abilityDef); gBattleScripting.battler = gBattlerAbility = battlerAbility; gBattlescriptCurrInstr = battleScriptBlocksMove; } + return TRUE; } @@ -4333,7 +3037,7 @@ bool32 CanAbilityAbsorbMove(u32 battlerAtk, u32 battlerDef, u32 abilityDef, u32 effect = MOVE_ABSORBED_BY_NO_ABILITY; break; case ABILITY_VOLT_ABSORB: - if (moveType == TYPE_ELECTRIC && GetMoveTarget(move) != MOVE_TARGET_ALL_BATTLERS) + if (moveType == TYPE_ELECTRIC && GetBattlerMoveTargetType(battlerAtk, move) != MOVE_TARGET_ALL_BATTLERS) effect = MOVE_ABSORBED_BY_DRAIN_HP_ABILITY; break; case ABILITY_WATER_ABSORB: @@ -4346,14 +3050,14 @@ bool32 CanAbilityAbsorbMove(u32 battlerAtk, u32 battlerDef, u32 abilityDef, u32 effect = MOVE_ABSORBED_BY_DRAIN_HP_ABILITY; break; case ABILITY_MOTOR_DRIVE: - if (moveType == TYPE_ELECTRIC && GetMoveTarget(move) != MOVE_TARGET_ALL_BATTLERS) // Potential bug in singles (might be solved with simu hp reudction) + if (moveType == TYPE_ELECTRIC && GetBattlerMoveTargetType(battlerAtk, move) != MOVE_TARGET_ALL_BATTLERS) { effect = MOVE_ABSORBED_BY_STAT_INCREASE_ABILITY; statId = STAT_SPEED; } break; case ABILITY_LIGHTNING_ROD: - if (B_REDIRECT_ABILITY_IMMUNITY >= GEN_5 && moveType == TYPE_ELECTRIC && GetMoveTarget(move) != MOVE_TARGET_ALL_BATTLERS) // Potential bug in singles (might be solved with simu hp reudction) + if (B_REDIRECT_ABILITY_IMMUNITY >= GEN_5 && moveType == TYPE_ELECTRIC && GetBattlerMoveTargetType(battlerAtk, move) != MOVE_TARGET_ALL_BATTLERS) { effect = MOVE_ABSORBED_BY_STAT_INCREASE_ABILITY; statId = STAT_SPATK; @@ -4394,7 +3098,7 @@ bool32 CanAbilityAbsorbMove(u32 battlerAtk, u32 battlerDef, u32 abilityDef, u32 break; } - if (effect == MOVE_ABSORBED_BY_NO_ABILITY || option == ABILITY_CHECK_TRIGGER) + if (effect == MOVE_ABSORBED_BY_NO_ABILITY || option != ABILITY_RUN_SCRIPT) return effect; switch (effect) @@ -4469,6 +3173,9 @@ bool32 CanAbilityAbsorbMove(u32 battlerAtk, u32 battlerDef, u32 abilityDef, u32 if (battleScript != NULL) { gMultiHitCounter = 0; // Prevent multi-hit moves from hitting more than once after move has been absorbed. + gLastUsedAbility = abilityDef; + RecordAbilityBattle(battlerDef, abilityDef); + gBattleScripting.battler = gBattlerAbility = battlerDef; gBattlescriptCurrInstr = battleScript; } @@ -4529,6 +3236,8 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 if (special) gLastUsedAbility = special; + else if (ability) + gLastUsedAbility = ability; else gLastUsedAbility = GetBattlerAbility(battler); @@ -4799,7 +3508,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 if (IsBattlerAlive(diagonalBattler) && !(gBattleMons[diagonalBattler].status2 & (STATUS2_TRANSFORMED | STATUS2_SUBSTITUTE)) && !(gBattleMons[battler].status2 & STATUS2_TRANSFORMED) - && !(gBattleStruct->illusion[diagonalBattler].on) + && gBattleStruct->illusion[diagonalBattler].state != ILLUSION_ON && !(gStatuses3[diagonalBattler] & STATUS3_SEMI_INVULNERABLE_NO_COMMANDER)) { gBattlerAttacker = battler; @@ -4839,7 +3548,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 case ABILITY_SLOW_START: if (!gSpecialStatuses[battler].switchInAbilityDone) { - gDisableStructs[battler].slowStartTimer = 5; + gDisableStructs[battler].slowStartTimer = gBattleTurnCounter + 5; gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_SWITCHIN_SLOWSTART; gSpecialStatuses[battler].switchInAbilityDone = TRUE; BattleScriptPushCursorAndCallback(BattleScript_SwitchInAbilityMsg); @@ -4893,11 +3602,9 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 case ABILITY_ANTICIPATION: if (!gSpecialStatuses[battler].switchInAbilityDone) { - u32 side = GetBattlerSide(battler); - for (i = 0; i < MAX_BATTLERS_COUNT; i++) { - if (IsBattlerAlive(i) && side != GetBattlerSide(i)) + if (IsBattlerAlive(i) && !IsBattlerAlly(i, battler)) { for (j = 0; j < MAX_MON_MOVES; j++) { @@ -5128,11 +3835,11 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 break; case ABILITY_SUPERSWEET_SYRUP: if (!gSpecialStatuses[battler].switchInAbilityDone - && !(gBattleStruct->supersweetSyrup[GetBattlerSide(battler)] & (1u << gBattlerPartyIndexes[battler]))) + && !gBattleStruct->partyState[GetBattlerSide(battler)][gBattlerPartyIndexes[battler]].supersweetSyrup) { gBattlerAttacker = battler; gSpecialStatuses[battler].switchInAbilityDone = TRUE; - gBattleStruct->supersweetSyrup[GetBattlerSide(battler)] |= (1u << gBattlerPartyIndexes[battler]); + gBattleStruct->partyState[GetBattlerSide(battler)][gBattlerPartyIndexes[battler]].supersweetSyrup = TRUE; BattleScriptPushCursorAndCallback(BattleScript_SupersweetSyrupActivates); effect++; } @@ -5169,12 +3876,12 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 break; case ABILITY_INTREPID_SWORD: if (!gSpecialStatuses[battler].switchInAbilityDone && CompareStat(battler, STAT_ATK, MAX_STAT_STAGE, CMP_LESS_THAN) - && !(gBattleStruct->intrepidSwordBoost[GetBattlerSide(battler)] & (1u << gBattlerPartyIndexes[battler]))) + && !gBattleStruct->partyState[GetBattlerSide(battler)][gBattlerPartyIndexes[battler]].intrepidSwordBoost) { gBattleScripting.savedBattler = gBattlerAttacker; gBattlerAttacker = battler; if (B_INTREPID_SWORD == GEN_9) - gBattleStruct->intrepidSwordBoost[GetBattlerSide(battler)] |= 1u << gBattlerPartyIndexes[battler]; + gBattleStruct->partyState[GetBattlerSide(battler)][gBattlerPartyIndexes[battler]].intrepidSwordBoost = TRUE; gSpecialStatuses[battler].switchInAbilityDone = TRUE; SET_STATCHANGER(STAT_ATK, 1, FALSE); BattleScriptPushCursorAndCallback(BattleScript_BattlerAbilityStatRaiseOnSwitchIn); @@ -5183,12 +3890,12 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 break; case ABILITY_DAUNTLESS_SHIELD: if (!gSpecialStatuses[battler].switchInAbilityDone && CompareStat(battler, STAT_DEF, MAX_STAT_STAGE, CMP_LESS_THAN) - && !(gBattleStruct->dauntlessShieldBoost[GetBattlerSide(battler)] & (1u << gBattlerPartyIndexes[battler]))) + && !gBattleStruct->partyState[GetBattlerSide(battler)][gBattlerPartyIndexes[battler]].dauntlessShieldBoost) { gBattleScripting.savedBattler = gBattlerAttacker; gBattlerAttacker = battler; if (B_DAUNTLESS_SHIELD == GEN_9) - gBattleStruct->dauntlessShieldBoost[GetBattlerSide(battler)] |= 1u << gBattlerPartyIndexes[battler]; + gBattleStruct->partyState[GetBattlerSide(battler)][gBattlerPartyIndexes[battler]].dauntlessShieldBoost = TRUE; gSpecialStatuses[battler].switchInAbilityDone = TRUE; SET_STATCHANGER(STAT_DEF, 1, FALSE); BattleScriptPushCursorAndCallback(BattleScript_BattlerAbilityStatRaiseOnSwitchIn); @@ -5301,14 +4008,14 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 break; case ABILITY_ZERO_TO_HERO: side = GetBattlerSide(battler); - mon = &GetSideParty(side)[gBattlerPartyIndexes[battler]]; + mon = GetBattlerMon(battler); if (!gSpecialStatuses[battler].switchInAbilityDone && GetMonData(mon, MON_DATA_SPECIES) == SPECIES_PALAFIN_HERO - && !(gBattleStruct->transformZeroToHero[side] & (1u << gBattlerPartyIndexes[battler]))) + && !gBattleStruct->partyState[side][gBattlerPartyIndexes[battler]].transformZeroToHero) { gSpecialStatuses[battler].switchInAbilityDone = TRUE; - gBattleStruct->transformZeroToHero[side] |= 1u << gBattlerPartyIndexes[battler]; + gBattleStruct->partyState[side][gBattlerPartyIndexes[battler]].transformZeroToHero = TRUE; BattleScriptPushCursorAndCallback(BattleScript_ZeroToHeroActivates); effect++; } @@ -5388,7 +4095,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 && IsBattlerAlive(battler) && gBattleStruct->commanderActive[partner] == SPECIES_NONE && gBattleMons[partner].species == SPECIES_DONDOZO - && GET_BASE_SPECIES_ID(GetMonData(GetPartyBattlerData(battler), MON_DATA_SPECIES)) == SPECIES_TATSUGIRI) + && GET_BASE_SPECIES_ID(GetMonData(GetBattlerMon(battler), MON_DATA_SPECIES)) == SPECIES_TATSUGIRI) { SaveBattlerAttacker(gBattlerAttacker); gSpecialStatuses[battler].switchInAbilityDone = TRUE; @@ -5435,6 +4142,20 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 effect++; } break; + case ABILITY_ICE_BODY: + if (IsBattlerWeatherAffected(battler, B_WEATHER_HAIL | B_WEATHER_SNOW) + && !IsBattlerAtMaxHp(battler) + && !(gStatuses3[battler] & (STATUS3_UNDERGROUND | STATUS3_UNDERWATER)) + && !(gStatuses3[battler] & STATUS3_HEAL_BLOCK)) + { + BattleScriptPushCursorAndCallback(BattleScript_IceBodyHeal); + gBattleStruct->moveDamage[battler] = GetNonDynamaxMaxHP(battler) / 16; + if (gBattleStruct->moveDamage[battler] == 0) + gBattleStruct->moveDamage[battler] = 1; + gBattleStruct->moveDamage[battler] *= -1; + effect++; + } + break; case ABILITY_DRY_SKIN: if (IsBattlerWeatherAffected(battler, B_WEATHER_SUN)) goto SOLAR_POWER_HP_DROP; @@ -5531,6 +4252,13 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 case ABILITY_TRUANT: gDisableStructs[gBattlerAttacker].truantCounter ^= 1; break; + case ABILITY_SLOW_START: + if (gDisableStructs[battler].slowStartTimer == gBattleTurnCounter) + { + BattleScriptExecute(BattleScript_SlowStartEnds); + effect++; + } + break; case ABILITY_BAD_DREAMS: BattleScriptPushCursorAndCallback(BattleScript_BadDreamsActivates); effect++; @@ -5562,7 +4290,6 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 // Fallthrough case ABILITY_ZEN_MODE: case ABILITY_SHIELDS_DOWN: - case ABILITY_POWER_CONSTRUCT: if (TryBattleFormChange(battler, FORM_CHANGE_BATTLE_HP_PERCENT)) { gBattlerAttacker = battler; @@ -5570,6 +4297,14 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 effect++; } break; + case ABILITY_POWER_CONSTRUCT: + if (TryBattleFormChange(battler, FORM_CHANGE_BATTLE_HP_PERCENT)) + { + gBattlerAttacker = battler; + BattleScriptPushCursorAndCallback(BattleScript_PowerConstruct); + effect++; + } + break; case ABILITY_BALL_FETCH: if (gBattleMons[battler].item == ITEM_NONE && gBattleResults.catchAttempts[gLastUsedBall - ITEM_ULTRA_BALL] >= 1 @@ -5602,42 +4337,14 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 BattleScriptPushCursorAndCallback(BattleScript_CudChewActivates); effect++; } + else if (!gDisableStructs[battler].cudChew && GetItemPocket(GetUsedHeldItem(battler)) == POCKET_BERRIES) + { + gDisableStructs[battler].cudChew = TRUE; + } break; } } break; - case ABILITYEFFECT_WOULD_BLOCK: - effect = CanAbilityBlockMove(gBattlerAttacker, battler, move, gLastUsedAbility, ABILITY_CHECK_TRIGGER); - if (effect && gLastUsedAbility != 0xFFFF) - RecordAbilityBattle(battler, gLastUsedAbility); - return effect; - case ABILITYEFFECT_MOVES_BLOCK: - effect = CanAbilityBlockMove(gBattlerAttacker, battler, move, gLastUsedAbility, ABILITY_RUN_SCRIPT); - - // prankster check - if (effect == 0 - && IsBattleMoveStatus(move) - && GetChosenMovePriority(gBattlerAttacker) > 0 - && BlocksPrankster(move, gBattlerAttacker, gBattlerTarget, TRUE) - && !(IsBattleMoveStatus(move) && (gLastUsedAbility == ABILITY_MAGIC_BOUNCE || gProtectStructs[gBattlerTarget].bounceMove))) - { - if (!IsDoubleBattle() - || !(GetBattlerMoveTargetType(gBattlerAttacker, move) & (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; - effect = 1; - } - break; - case ABILITYEFFECT_WOULD_ABSORB: - effect = CanAbilityAbsorbMove(gBattlerAttacker, battler, gLastUsedAbility, move, moveType, ABILITY_CHECK_TRIGGER); - gBattleStruct->pledgeMove = FALSE; - if (effect && gLastUsedAbility != 0xFFFF) - RecordAbilityBattle(battler, gLastUsedAbility); - return effect; - case ABILITYEFFECT_ABSORBING: - effect = CanAbilityAbsorbMove(gBattlerAttacker, battler, gLastUsedAbility, move, moveType, ABILITY_RUN_SCRIPT); - break; case ABILITYEFFECT_MOVE_END: // Think contact abilities. switch (gLastUsedAbility) { @@ -5894,8 +4601,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 && IsBattlerAlive(gBattlerAttacker)) { // Prevent Innards Out effect if Future Sight user is currently not on field - if (GetMoveEffect(gCurrentMove) == EFFECT_FUTURE_SIGHT - && IsFutureSightAttackerInParty(gBattlerAttacker, gBattlerTarget)) + if (IsFutureSightAttackerInParty(gBattlerAttacker, gBattlerTarget, gCurrentMove)) break; gBattleScripting.battler = gBattlerTarget; @@ -5937,7 +4643,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 && IsBattlerAlive(gBattlerAttacker) && !gProtectStructs[gBattlerAttacker].confusionSelfDmg && IsBattlerTurnDamaged(gBattlerTarget) - && CanBeSlept(gBattlerAttacker, ability, NOT_BLOCKED_BY_SLEEP_CLAUSE) + && CanBeSlept(gBattlerAttacker, gBattlerTarget, ability, NOT_BLOCKED_BY_SLEEP_CLAUSE) && GetBattlerHoldEffect(gBattlerAttacker, TRUE) != HOLD_EFFECT_PROTECTIVE_PADS && IsMoveMakingContact(move, gBattlerAttacker)) { @@ -5961,7 +4667,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 && IsBattlerAlive(gBattlerAttacker) && !gProtectStructs[gBattlerAttacker].confusionSelfDmg && IsBattlerTurnDamaged(gBattlerTarget) - && CanBePoisoned(gBattlerTarget, gBattlerAttacker, GetBattlerAbility(gBattlerAttacker)) + && CanBePoisoned(gBattlerTarget, gBattlerAttacker, gLastUsedAbility, GetBattlerAbility(gBattlerAttacker)) && GetBattlerHoldEffect(gBattlerAttacker, TRUE) != HOLD_EFFECT_PROTECTIVE_PADS && IsMoveMakingContact(move, gBattlerAttacker)) { @@ -5982,7 +4688,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 && IsBattlerAlive(gBattlerAttacker) && !gProtectStructs[gBattlerAttacker].confusionSelfDmg && IsBattlerTurnDamaged(gBattlerTarget) - && CanBeParalyzed(gBattlerAttacker, GetBattlerAbility(gBattlerAttacker)) + && CanBeParalyzed(gBattlerTarget, gBattlerAttacker, GetBattlerAbility(gBattlerAttacker)) && GetBattlerHoldEffect(gBattlerAttacker, TRUE) != HOLD_EFFECT_PROTECTIVE_PADS && IsMoveMakingContact(move, gBattlerAttacker)) { @@ -6002,7 +4708,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 && GetBattlerHoldEffect(gBattlerAttacker, TRUE) != HOLD_EFFECT_PROTECTIVE_PADS && (IsMoveMakingContact(move, gBattlerAttacker)) && IsBattlerTurnDamaged(gBattlerTarget) - && CanBeBurned(gBattlerAttacker, GetBattlerAbility(gBattlerAttacker)) + && CanBeBurned(gBattlerTarget, gBattlerAttacker, GetBattlerAbility(gBattlerAttacker)) && (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; @@ -6034,7 +4740,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 } break; case ABILITY_ILLUSION: - if (gBattleStruct->illusion[gBattlerTarget].on && !gBattleStruct->illusion[gBattlerTarget].broken && IsBattlerTurnDamaged(gBattlerTarget)) + if (gBattleStruct->illusion[gBattlerTarget].state == ILLUSION_ON && IsBattlerTurnDamaged(gBattlerTarget)) { gBattleScripting.battler = gBattlerTarget; BattleScriptPushCursor(); @@ -6219,7 +4925,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 if (!(gBattleStruct->moveResultFlags[gBattlerTarget] & MOVE_RESULT_NO_EFFECT) && IsBattlerAlive(gBattlerTarget) && !gProtectStructs[gBattlerAttacker].confusionSelfDmg - && CanBePoisoned(gBattlerAttacker, gBattlerTarget, GetBattlerAbility(gBattlerTarget)) + && CanBePoisoned(gBattlerAttacker, gBattlerTarget, gLastUsedAbility, GetBattlerAbility(gBattlerTarget)) && GetBattlerHoldEffect(gBattlerAttacker, TRUE) != HOLD_EFFECT_PROTECTIVE_PADS && IsMoveMakingContact(move, gBattlerAttacker) && IsBattlerTurnDamaged(gBattlerTarget) // Need to actually hit the target @@ -6237,7 +4943,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 if (!(gBattleStruct->moveResultFlags[gBattlerTarget] & MOVE_RESULT_NO_EFFECT) && IsBattlerAlive(gBattlerTarget) && !gProtectStructs[gBattlerAttacker].confusionSelfDmg - && CanBePoisoned(gBattlerAttacker, gBattlerTarget, GetBattlerAbility(gBattlerTarget)) + && CanBePoisoned(gBattlerAttacker, gBattlerTarget, gLastUsedAbility, GetBattlerAbility(gBattlerTarget)) && IsBattlerTurnDamaged(gBattlerTarget) // Need to actually hit the target && RandomWeighted(RNG_TOXIC_CHAIN, 7, 3)) { @@ -6332,7 +5038,6 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 case ABILITY_OPPORTUNIST: if (gProtectStructs[battler].activateOpportunist == 2) { - gBattleScripting.animArg1 = 0; gBattleScripting.battler = battler; gProtectStructs[battler].activateOpportunist--; ChooseStatBoostAnimation(battler); @@ -6440,45 +5145,71 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 gBattleStruct->bypassMoldBreakerChecks = FALSE; break; case ABILITYEFFECT_SYNCHRONIZE: - if (gLastUsedAbility == ABILITY_SYNCHRONIZE && (gHitMarker & HITMARKER_SYNCHRONISE_EFFECT)) + if (gLastUsedAbility == ABILITY_SYNCHRONIZE && (gHitMarker & HITMARKER_SYNCHRONIZE_EFFECT)) { - gHitMarker &= ~HITMARKER_SYNCHRONISE_EFFECT; + gHitMarker &= ~HITMARKER_SYNCHRONIZE_EFFECT; - if (!(gBattleMons[gBattlerAttacker].status1 & STATUS1_ANY)) + bool32 statusChanged = CanSetNonVolatileStatus(gBattlerTarget, + gBattlerAttacker, + gLastUsedAbility, + GetBattlerAbility(gBattlerAttacker), + gBattleStruct->synchronizeMoveEffect, + STATUS_CHECK_TRIGGER); + + BattleScriptPushCursor(); + gBattleScripting.battler = gBattlerAbility = gBattlerTarget; + RecordAbilityBattle(gBattlerTarget, ABILITY_SYNCHRONIZE); + + if (statusChanged) { gBattleStruct->synchronizeMoveEffect &= ~(MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_CERTAIN); if (B_SYNCHRONIZE_TOXIC < GEN_5 && gBattleStruct->synchronizeMoveEffect == MOVE_EFFECT_TOXIC) gBattleStruct->synchronizeMoveEffect = MOVE_EFFECT_POISON; gBattleScripting.moveEffect = gBattleStruct->synchronizeMoveEffect + MOVE_EFFECT_AFFECTS_USER; - gBattleScripting.battler = gBattlerAbility = gBattlerTarget; PREPARE_ABILITY_BUFFER(gBattleTextBuff1, ABILITY_SYNCHRONIZE); - BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_SynchronizeActivates; gHitMarker |= HITMARKER_STATUS_ABILITY_EFFECT; effect++; } + else // Synchronize ability pop up still shows up even if status fails + { + gBattlescriptCurrInstr = BattleScript_AbilityPopUp; + } } break; case ABILITYEFFECT_ATK_SYNCHRONIZE: - if (gLastUsedAbility == ABILITY_SYNCHRONIZE && (gHitMarker & HITMARKER_SYNCHRONISE_EFFECT)) + if (gLastUsedAbility == ABILITY_SYNCHRONIZE && (gHitMarker & HITMARKER_SYNCHRONIZE_EFFECT)) { - gHitMarker &= ~HITMARKER_SYNCHRONISE_EFFECT; + gHitMarker &= ~HITMARKER_SYNCHRONIZE_EFFECT; - if (!(gBattleMons[gBattlerTarget].status1 & STATUS1_ANY)) + bool32 statusChanged = CanSetNonVolatileStatus(gBattlerAttacker, + gBattlerTarget, + gLastUsedAbility, + GetBattlerAbility(gBattlerAttacker), + gBattleStruct->synchronizeMoveEffect, + STATUS_CHECK_TRIGGER); + + BattleScriptPushCursor(); + gBattleScripting.battler = gBattlerAbility = gBattlerAttacker; + RecordAbilityBattle(gBattlerAttacker, ABILITY_SYNCHRONIZE); + + if (statusChanged) { gBattleStruct->synchronizeMoveEffect &= ~(MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_CERTAIN); if (gBattleStruct->synchronizeMoveEffect == MOVE_EFFECT_TOXIC) gBattleStruct->synchronizeMoveEffect = MOVE_EFFECT_POISON; gBattleScripting.moveEffect = gBattleStruct->synchronizeMoveEffect; - gBattleScripting.battler = gBattlerAbility = gBattlerAttacker; PREPARE_ABILITY_BUFFER(gBattleTextBuff1, ABILITY_SYNCHRONIZE); - BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_SynchronizeActivates; gHitMarker |= HITMARKER_STATUS_ABILITY_EFFECT; effect++; } + else // Synchronize ability pop up still shows up even if status fails + { + gBattlescriptCurrInstr = BattleScript_AbilityPopUp; + } } break; @@ -6654,8 +5385,11 @@ bool32 IsMoldBreakerTypeAbility(u32 battler, u32 ability) || (ability == ABILITY_MYCELIUM_MIGHT && IsBattleMoveStatus(gCurrentMove))); } -static inline bool32 CanBreakThroughAbility(u32 battlerAtk, u32 battlerDef, u32 ability) +static inline bool32 CanBreakThroughAbility(u32 battlerAtk, u32 battlerDef, u32 ability, u32 hasAbilityShield) { + if (hasAbilityShield || gBattleStruct->bypassMoldBreakerChecks) + return FALSE; + return ((IsMoldBreakerTypeAbility(battlerAtk, ability) || MoveIgnoresTargetAbility(gCurrentMove)) && battlerDef != battlerAtk && gAbilitiesInfo[gBattleMons[battlerDef].ability].breakable @@ -6666,7 +5400,7 @@ static inline bool32 CanBreakThroughAbility(u32 battlerAtk, u32 battlerDef, u32 u32 GetBattlerAbility(u32 battler) { - bool32 noAbilityShield = GetBattlerHoldEffectIgnoreAbility(battler, TRUE) != HOLD_EFFECT_ABILITY_SHIELD; + bool32 hasAbilityShield = GetBattlerHoldEffectIgnoreAbility(battler, TRUE) == HOLD_EFFECT_ABILITY_SHIELD; bool32 abilityCantBeSuppressed = gAbilitiesInfo[gBattleMons[battler].ability].cantBeSuppressed; if (abilityCantBeSuppressed) @@ -6677,9 +5411,7 @@ u32 GetBattlerAbility(u32 battler) && gBattleMons[battler].ability == ABILITY_COMATOSE) return ABILITY_NONE; - if (!gBattleStruct->bypassMoldBreakerChecks - && noAbilityShield - && CanBreakThroughAbility(gBattlerAttacker, battler, gBattleMons[gBattlerAttacker].ability)) + if (CanBreakThroughAbility(gBattlerAttacker, battler, gBattleMons[gBattlerAttacker].ability, hasAbilityShield)) return ABILITY_NONE; return gBattleMons[battler].ability; @@ -6688,14 +5420,12 @@ u32 GetBattlerAbility(u32 battler) if (gStatuses3[battler] & STATUS3_GASTRO_ACID) return ABILITY_NONE; - if (IsNeutralizingGasOnField() - && gBattleMons[battler].ability != ABILITY_NEUTRALIZING_GAS - && noAbilityShield) + if (!hasAbilityShield + && IsNeutralizingGasOnField() + && gBattleMons[battler].ability != ABILITY_NEUTRALIZING_GAS) return ABILITY_NONE; - if (!gBattleStruct->bypassMoldBreakerChecks - && noAbilityShield - && CanBreakThroughAbility(gBattlerAttacker, battler, gBattleMons[gBattlerAttacker].ability)) + if (CanBreakThroughAbility(gBattlerAttacker, battler, gBattleMons[gBattlerAttacker].ability, hasAbilityShield)) return ABILITY_NONE; return gBattleMons[battler].ability; @@ -6744,16 +5474,25 @@ u32 IsAbilityOnFieldExcept(u32 battler, u32 ability) u32 IsAbilityPreventingEscape(u32 battler) { - u32 id; if (B_GHOSTS_ESCAPE >= GEN_6 && IS_BATTLER_OF_TYPE(battler, TYPE_GHOST)) return 0; - if ((id = IsAbilityOnOpposingSide(battler, ABILITY_SHADOW_TAG)) - && (B_SHADOW_TAG_ESCAPE >= GEN_4 && GetBattlerAbility(battler) != ABILITY_SHADOW_TAG)) - return id; - if ((id = IsAbilityOnOpposingSide(battler, ABILITY_ARENA_TRAP)) && IsBattlerGrounded(battler)) - return id; - if ((id = IsAbilityOnOpposingSide(battler, ABILITY_MAGNET_PULL)) && IS_BATTLER_OF_TYPE(battler, TYPE_STEEL)) - return id; + + for (u32 battlerDef = 0; battlerDef < gBattlersCount; battlerDef++) + { + if (battler == battlerDef || IsBattlerAlly(battler, battlerDef)) + continue; + + u32 ability = GetBattlerAbility(battlerDef); + + if (ability == ABILITY_SHADOW_TAG && (B_SHADOW_TAG_ESCAPE <= GEN_3 || GetBattlerAbility(battler) != ABILITY_SHADOW_TAG)) + return battlerDef + 1; + + if (ability == ABILITY_ARENA_TRAP && IsBattlerGrounded(battler)) + return battlerDef + 1; + + if (ability == ABILITY_MAGNET_PULL && IS_BATTLER_OF_TYPE(battler, TYPE_STEEL)) + return battlerDef + 1; + } return 0; } @@ -6804,98 +5543,295 @@ bool32 IsBattlerTerrainAffected(u32 battler, u32 terrainFlag) return IsBattlerGrounded(battler); } -bool32 CanBeSlept(u32 battler, u32 ability, enum SleepClauseBlock isBlockedBySleepClause) +bool32 CanBeSlept(u32 battlerAtk, u32 battlerDef, u32 abilityDef, enum SleepClauseBlock isBlockedBySleepClause) { - if(IsSleepClauseActiveForSide(GetBattlerSide(battler)) && isBlockedBySleepClause) + if (IsSleepClauseActiveForSide(GetBattlerSide(battlerDef)) && isBlockedBySleepClause) return FALSE; - if (ability == ABILITY_INSOMNIA - || ability == ABILITY_VITAL_SPIRIT - || ability == ABILITY_COMATOSE - || ability == ABILITY_PURIFYING_SALT - || gSideStatuses[GetBattlerSide(battler)] & SIDE_STATUS_SAFEGUARD - || gBattleMons[battler].status1 & STATUS1_ANY - || IsAbilityOnSide(battler, ABILITY_SWEET_VEIL) - || IsAbilityStatusProtected(battler, ability) - || IsBattlerTerrainAffected(battler, STATUS_FIELD_ELECTRIC_TERRAIN | STATUS_FIELD_MISTY_TERRAIN)) + if (CanSetNonVolatileStatus(battlerAtk, + battlerDef, + ABILITY_NONE, // attacker ability does not matter + abilityDef, + MOVE_EFFECT_SLEEP, // also covers yawn + STATUS_CHECK_TRIGGER)) + return TRUE; + return FALSE; +} + +bool32 CanBePoisoned(u32 battlerAtk, u32 battlerDef, u32 abilityAtk, u32 abilityDef) +{ + if (CanSetNonVolatileStatus(battlerAtk, + battlerDef, + abilityAtk, + abilityDef, + MOVE_EFFECT_TOXIC, // also covers poison + STATUS_CHECK_TRIGGER)) + return TRUE; + return FALSE; +} + +// TODO: check order of battlerAtk and battlerDef +bool32 CanBeBurned(u32 battlerAtk, u32 battlerDef, u32 abilityDef) +{ + if (CanSetNonVolatileStatus(battlerAtk, + battlerDef, + ABILITY_NONE, // attacker ability does not matter + abilityDef, + MOVE_EFFECT_BURN, + STATUS_CHECK_TRIGGER)) + return TRUE; + return FALSE; +} + +bool32 CanBeParalyzed(u32 battlerAtk, u32 battlerDef, u32 abilityDef) +{ + if (CanSetNonVolatileStatus(battlerAtk, + battlerDef, + ABILITY_NONE, // attacker ability does not matter + abilityDef, + MOVE_EFFECT_PARALYSIS, + STATUS_CHECK_TRIGGER)) + return TRUE; + return FALSE; +} + +bool32 CanBeFrozen(u32 battlerAtk, u32 battlerDef, u32 abilityDef) +{ + if (CanSetNonVolatileStatus(battlerAtk, + battlerDef, + ABILITY_NONE, // attacker ability does not matter + abilityDef, + MOVE_EFFECT_FREEZE, + STATUS_CHECK_TRIGGER)) + return TRUE; + return FALSE; +} + +// Unused, technically also redundant +bool32 CanGetFrostbite(u32 battlerAtk, u32 battlerDef, u32 abilityDef) +{ + if (CanSetNonVolatileStatus(battlerAtk, + battlerDef, + ABILITY_NONE, // attacker ability does not matter + abilityDef, + MOVE_EFFECT_FREEZE_OR_FROSTBITE, // also covers frostbite + STATUS_CHECK_TRIGGER)) + return TRUE; + return FALSE; +} + +bool32 CanSetNonVolatileStatus(u32 battlerAtk, u32 battlerDef, u32 abilityAtk, u32 abilityDef, enum MoveEffects effect, enum NonVolatileStatus option) +{ + const u8 *battleScript = NULL; + u32 sideBattler = ABILITY_NONE; + bool32 abilityAffected = FALSE; + + // Move specific checks + switch (effect) + { + case MOVE_EFFECT_POISON: + case MOVE_EFFECT_TOXIC: + if (gBattleMons[battlerDef].status1 & (STATUS1_POISON | STATUS1_TOXIC_POISON)) + { + battleScript = BattleScript_AlreadyPoisoned; + } + else if (abilityAtk != ABILITY_CORROSION && IS_BATTLER_ANY_TYPE(battlerDef, TYPE_POISON, TYPE_STEEL)) + { + battleScript = BattleScript_NotAffected; + } + else if ((sideBattler = IsAbilityOnSide(battlerDef, ABILITY_PASTEL_VEIL))) + { + abilityAffected = TRUE; + battlerDef = sideBattler - 1; + abilityDef = ABILITY_PASTEL_VEIL; + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_ABILITY_PASTEL_VEIL; + battleScript = BattleScript_ImmunityProtected; + } + else if (abilityDef == ABILITY_IMMUNITY) + { + abilityAffected = TRUE; + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_ABILITY_PREVENTS_MOVE_POISON; + battleScript = BattleScript_ImmunityProtected; + } + break; + case MOVE_EFFECT_PARALYSIS: + if (gBattleMons[battlerDef].status1 & STATUS1_PARALYSIS) + { + battleScript = BattleScript_AlreadyParalyzed; + } + else if (B_PARALYZE_ELECTRIC >= GEN_6 && IS_BATTLER_OF_TYPE(battlerDef, TYPE_ELECTRIC)) + { + battleScript = BattleScript_NotAffected; + } + else if (option == STATUS_RUN_SCRIPT // Check only important during battle execution for moves + && CalcTypeEffectivenessMultiplier(gCurrentMove, GetBattleMoveType(gCurrentMove), battlerAtk, battlerDef, abilityDef, TRUE) + && gBattleStruct->moveResultFlags[battlerDef] & MOVE_RESULT_NO_EFFECT) + { + battleScript = BattleScript_ButItFailed; + } + else if (abilityDef == ABILITY_LIMBER) + { + abilityAffected = TRUE; + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_ABILITY_PREVENTS_MOVE_PARALYSIS; + battleScript = BattleScript_ImmunityProtected; + } + break; + case MOVE_EFFECT_BURN: + if (gBattleMons[battlerDef].status1 & STATUS1_BURN) + { + battleScript = BattleScript_AlreadyBurned; + } + else if (IS_BATTLER_OF_TYPE(battlerDef, TYPE_FIRE)) + { + battleScript = BattleScript_NotAffected; + } + else if (abilityDef == ABILITY_WATER_VEIL || abilityDef == ABILITY_WATER_BUBBLE) + { + abilityAffected = TRUE; + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_ABILITY_PREVENTS_MOVE_BURN; + battleScript = BattleScript_ImmunityProtected; + } + else if (abilityDef == ABILITY_THERMAL_EXCHANGE) + { + abilityAffected = TRUE; + battleScript = BattleScript_AbilityProtectsDoesntAffect; + } + break; + case MOVE_EFFECT_SLEEP: + if (gBattleMons[battlerDef].status1 & STATUS1_SLEEP) + { + battleScript = BattleScript_AlreadyAsleep; + } + else if (UproarWakeUpCheck(battlerDef)) + { + battleScript = BattleScript_CantMakeAsleep; + } + else if (CanSleepDueToSleepClause(battlerAtk, battlerDef, option)) + { + battleScript = BattleScript_SleepClauseBlocked; + } + else if (IsBattlerTerrainAffected(battlerDef, STATUS_FIELD_ELECTRIC_TERRAIN)) + { + battleScript = BattleScript_ElectricTerrainPrevents; + } + else if ((sideBattler = IsAbilityOnSide(battlerDef, ABILITY_SWEET_VEIL))) + { + abilityAffected = TRUE; + battlerDef = sideBattler - 1; + abilityDef = ABILITY_SWEET_VEIL; + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_STATUS_HAD_NO_EFFECT; + battleScript = BattleScript_ImmunityProtected; + } + else if (abilityDef == ABILITY_VITAL_SPIRIT || abilityDef == ABILITY_INSOMNIA) + { + abilityAffected = TRUE; + battleScript = BattleScript_PrintAbilityMadeIneffective; + } + break; + case MOVE_EFFECT_FREEZE: + case MOVE_EFFECT_FROSTBITE: + if (gBattleMons[battlerDef].status1 & (STATUS1_FREEZE | STATUS1_FROSTBITE)) + { + battleScript = BattleScript_AlreadyBurned; + } + else if (IS_BATTLER_OF_TYPE(battlerDef, TYPE_ICE) || IsBattlerWeatherAffected(battlerDef, B_WEATHER_SUN)) + { + battleScript = BattleScript_NotAffected; + } + else if (abilityDef == ABILITY_MAGMA_ARMOR) + { + abilityAffected = TRUE; + battleScript = BattleScript_NotAffected; + } + break; + default: + break; + } + + if (IsNonVolatileStatusBlocked(battlerDef, abilityDef, abilityAffected, battleScript, option)) return FALSE; + + // Checks that apply to all non volatile statuses + if (abilityDef == ABILITY_COMATOSE + || abilityDef == ABILITY_SHIELDS_DOWN + || abilityDef == ABILITY_PURIFYING_SALT) + { + abilityAffected = TRUE; + battleScript = BattleScript_AbilityProtectsDoesntAffect; + } + else if (IsBattlerTerrainAffected(battlerDef, STATUS_FIELD_MISTY_TERRAIN)) + { + battleScript = BattleScript_MistyTerrainPrevents; + } + else if (IsLeafGuardProtected(battlerDef, abilityDef)) + { + abilityAffected = TRUE; + battleScript = BattleScript_AbilityProtectsDoesntAffect; + } + else if ((sideBattler = IsFlowerVeilProtected(battlerDef))) + { + abilityAffected = TRUE; + battlerDef = sideBattler - 1; + abilityDef = ABILITY_FLOWER_VEIL; + battleScript = BattleScript_FlowerVeilProtects; + } + else if (gSideStatuses[GetBattlerSide(battlerDef)] & SIDE_STATUS_SAFEGUARD) + { + battleScript = BattleScript_SafeguardProtected; + } + else if (gBattleMons[battlerDef].status1 & STATUS1_ANY) + { + battleScript = BattleScript_ButItFailed; + } + + if (IsNonVolatileStatusBlocked(battlerDef, abilityDef, abilityAffected, battleScript, option)) + return FALSE; + return TRUE; } -bool32 CanBePoisoned(u32 battlerAtk, u32 battlerDef, u32 defAbility) +static bool32 IsNonVolatileStatusBlocked(u32 battlerDef, u32 abilityDef, u32 abilityAffected, const u8 *battleScript, enum NonVolatileStatus option) { - if (!(CanPoisonType(battlerAtk, battlerDef)) - || gSideStatuses[GetBattlerSide(battlerDef)] & SIDE_STATUS_SAFEGUARD - || gBattleMons[battlerDef].status1 & STATUS1_ANY - || defAbility == ABILITY_IMMUNITY - || defAbility == ABILITY_COMATOSE - || defAbility == ABILITY_PURIFYING_SALT - || IsAbilityOnSide(battlerDef, ABILITY_PASTEL_VEIL) - || IsAbilityStatusProtected(battlerDef, defAbility) - || IsBattlerTerrainAffected(battlerDef, STATUS_FIELD_MISTY_TERRAIN)) - return FALSE; - return TRUE; + if (battleScript != NULL) + { + if (option == STATUS_RUN_SCRIPT) + { + if (battleScript != BattleScript_NotAffected) + gBattleStruct->moveResultFlags[battlerDef] |= MOVE_RESULT_FAILED; + + if (abilityAffected) + { + gLastUsedAbility = abilityDef; + gBattleScripting.battler = gBattlerAbility = battlerDef; + RecordAbilityBattle(battlerDef, abilityDef); + } + + gBattlescriptCurrInstr = battleScript; + } + + return TRUE; + } + + return FALSE; } -bool32 CanBeBurned(u32 battler, u32 ability) +static bool32 CanSleepDueToSleepClause(u32 battlerAtk, u32 battlerDef, enum NonVolatileStatus option) { - if (IS_BATTLER_OF_TYPE(battler, TYPE_FIRE) - || gSideStatuses[GetBattlerSide(battler)] & SIDE_STATUS_SAFEGUARD - || gBattleMons[battler].status1 & STATUS1_ANY - || ability == ABILITY_WATER_VEIL - || ability == ABILITY_WATER_BUBBLE - || ability == ABILITY_COMATOSE - || ability == ABILITY_THERMAL_EXCHANGE - || ability == ABILITY_PURIFYING_SALT - || IsAbilityStatusProtected(battler, ability) - || IsBattlerTerrainAffected(battler, STATUS_FIELD_MISTY_TERRAIN)) + // Can freely sleep own partner + if (IsDoubleBattle() && IsSleepClauseEnabled() && IsBattlerAlly(battlerAtk, battlerDef)) + { + if (option == STATUS_RUN_SCRIPT) + gBattleStruct->battlerState[battlerDef].sleepClauseEffectExempt = TRUE; return FALSE; - return TRUE; -} + } -bool32 CanBeParalyzed(u32 battler, u32 ability) -{ - if ((B_PARALYZE_ELECTRIC >= GEN_6 && IS_BATTLER_OF_TYPE(battler, TYPE_ELECTRIC)) - || gSideStatuses[GetBattlerSide(battler)] & SIDE_STATUS_SAFEGUARD - || ability == ABILITY_LIMBER - || ability == ABILITY_COMATOSE - || ability == ABILITY_PURIFYING_SALT - || gBattleMons[battler].status1 & STATUS1_ANY - || IsAbilityStatusProtected(battler, ability) - || IsBattlerTerrainAffected(battler, STATUS_FIELD_MISTY_TERRAIN)) - return FALSE; - return TRUE; -} + if (option == STATUS_RUN_SCRIPT) + gBattleStruct->battlerState[battlerDef].sleepClauseEffectExempt = FALSE; + // Can't sleep if clause is active otherwise + if (IsSleepClauseActiveForSide(GetBattlerSide(battlerDef))) + return TRUE; -bool32 CanBeFrozen(u32 battler) -{ - u16 ability = GetBattlerAbility(battler); - if (IS_BATTLER_OF_TYPE(battler, TYPE_ICE) - || IsBattlerWeatherAffected(battler, B_WEATHER_SUN) - || gSideStatuses[GetBattlerSide(battler)] & SIDE_STATUS_SAFEGUARD - || ability == ABILITY_MAGMA_ARMOR - || ability == ABILITY_COMATOSE - || ability == ABILITY_PURIFYING_SALT - || gBattleMons[battler].status1 & STATUS1_ANY - || IsAbilityStatusProtected(battler, ability) - || IsBattlerTerrainAffected(battler, STATUS_FIELD_MISTY_TERRAIN)) - return FALSE; - return TRUE; -} - -bool32 CanGetFrostbite(u32 battler) -{ - u16 ability = GetBattlerAbility(battler); - if (IS_BATTLER_OF_TYPE(battler, TYPE_ICE) - || gSideStatuses[GetBattlerSide(battler)] & SIDE_STATUS_SAFEGUARD - || ability == ABILITY_MAGMA_ARMOR - || ability == ABILITY_COMATOSE - || ability == ABILITY_PURIFYING_SALT - || gBattleMons[battler].status1 & STATUS1_ANY - || IsAbilityStatusProtected(battler, ability) - || IsBattlerTerrainAffected(battler, STATUS_FIELD_MISTY_TERRAIN)) - return FALSE; - return TRUE; + return FALSE; } bool32 CanBeConfused(u32 battler) @@ -7002,7 +5938,7 @@ static enum ItemEffect StatRaiseBerry(u32 battler, u32 itemId, u32 statId, enum static enum ItemEffect RandomStatRaiseBerry(u32 battler, u32 itemId, enum ItemCaseId caseID) { s32 stat; - u16 stringId; + enum StringID stringId; for (stat = STAT_ATK; stat < NUM_STATS; stat++) { @@ -7148,11 +6084,11 @@ static enum ItemEffect TryEjectPack(u32 battler, enum ItemCaseId caseID) if (gProtectStructs[battler].statFell && !gProtectStructs[battler].disableEjectPack && CountUsablePartyMons(battler) > 0 - && !(gCurrentMove == MOVE_PARTING_SHOT && CanBattlerSwitch(gBattlerAttacker))) // Does not activate if attacker used Parting Shot and can switch out + && !(GetMoveEffect(gCurrentMove) == EFFECT_PARTING_SHOT && CanBattlerSwitch(gBattlerAttacker))) // Does not activate if attacker used Parting Shot and can switch out { gProtectStructs[battler].statFell = FALSE; gBattleScripting.battler = battler; - AI_DATA->ejectPackSwitch = TRUE; + gAiLogicData->ejectPackSwitch = TRUE; if (caseID == ITEMEFFECT_ON_SWITCH_IN_FIRST_TURN) { BattleScriptExecute(BattleScript_EjectPackActivate_End2); @@ -7191,8 +6127,7 @@ static enum ItemEffect ConsumeBerserkGene(u32 battler, enum ItemCaseId caseID) static u32 ItemRestorePp(u32 battler, u32 itemId, enum ItemCaseId caseID) { - struct Pokemon *party = GetBattlerParty(battler); - struct Pokemon *mon = &party[gBattlerPartyIndexes[battler]]; + struct Pokemon *mon = GetBattlerMon(battler); u32 i, changedPP = 0; for (i = 0; i < MAX_MON_MOVES; i++) @@ -7405,7 +6340,7 @@ u32 RestoreWhiteHerbStats(u32 battler) return effect; } -static u8 ItemEffectMoveEnd(u32 battler, u16 holdEffect) +static u8 ItemEffectMoveEnd(u32 battler, enum ItemHoldEffect holdEffect) { u8 effect = 0; @@ -7608,6 +6543,8 @@ static u8 ItemEffectMoveEnd(u32 battler, u16 holdEffect) case HOLD_EFFECT_MIRROR_HERB: effect = TryConsumeMirrorHerb(battler, ITEMEFFECT_NONE); break; + default: + break; } return effect; @@ -7677,7 +6614,7 @@ u32 ItemBattleEffects(enum ItemCaseId caseID, u32 battler, bool32 moveTurn) { u32 moveType = 0; enum ItemEffect effect = ITEM_NO_EFFECT; - u32 battlerHoldEffect = 0, atkHoldEffect = 0; + enum ItemHoldEffect battlerHoldEffect = 0, atkHoldEffect = 0; u32 atkHoldEffectParam = 0; u32 atkItem = 0; @@ -7702,13 +6639,13 @@ u32 ItemBattleEffects(enum ItemCaseId caseID, u32 battler, bool32 moveTurn) switch (battlerHoldEffect) { case HOLD_EFFECT_DOUBLE_PRIZE: - if (GetBattlerSide(battler) == B_SIDE_PLAYER && !gBattleStruct->moneyMultiplierItem) + if (IsOnPlayerSide(battler) && !gBattleStruct->moneyMultiplierItem) { gBattleStruct->moneyMultiplier *= 2; gBattleStruct->moneyMultiplierItem = 1; } break; - case HOLD_EFFECT_RESTORE_STATS: + case HOLD_EFFECT_WHITE_HERB: effect = RestoreWhiteHerbStats(battler); if (effect != 0) BattleScriptExecute(BattleScript_WhiteHerbEnd2); @@ -7882,6 +6819,8 @@ u32 ItemBattleEffects(enum ItemCaseId caseID, u32 battler, bool32 moveTurn) case HOLD_EFFECT_BOOSTER_ENERGY: effect = TryBoosterEnergy(battler, caseID); break; + default: + break; } if (effect != 0) { @@ -7896,6 +6835,7 @@ u32 ItemBattleEffects(enum ItemCaseId caseID, u32 battler, bool32 moveTurn) } break; case ITEMEFFECT_NORMAL: + case ITEMEFFECT_TRY_HEALING: if (gBattleMons[battler].hp) { switch (battlerHoldEffect) @@ -7912,7 +6852,7 @@ u32 ItemBattleEffects(enum ItemCaseId caseID, u32 battler, bool32 moveTurn) if (!moveTurn) effect = ItemRestorePp(battler, gLastUsedItem, caseID); break; - case HOLD_EFFECT_RESTORE_STATS: + case HOLD_EFFECT_WHITE_HERB: effect = RestoreWhiteHerbStats(battler); if (effect != 0) BattleScriptExecute(BattleScript_WhiteHerbEnd2); @@ -8082,6 +7022,8 @@ u32 ItemBattleEffects(enum ItemCaseId caseID, u32 battler, bool32 moveTurn) case HOLD_EFFECT_BOOSTER_ENERGY: effect = TryBoosterEnergy(battler, caseID); break; + default: + break; } if (effect != 0) @@ -8163,6 +7105,8 @@ u32 ItemBattleEffects(enum ItemCaseId caseID, u32 battler, bool32 moveTurn) gBattlescriptCurrInstr = BattleScript_AttackerItemStatRaise; } break; + default: + break; } break; case ITEMEFFECT_LIFEORB_SHELLBELL: @@ -8196,10 +7140,9 @@ u32 ItemBattleEffects(enum ItemCaseId caseID, u32 battler, bool32 moveTurn) && !(gHitMarker & HITMARKER_UNABLE_TO_USE_MOVE) && !IsBattleMoveStatus(gCurrentMove) && (IsBattlerTurnDamaged(gBattlerTarget) || !(gBattleStruct->moveResultFlags[gBattlerTarget] & MOVE_RESULT_NO_EFFECT)) // Needs the second check in case of Substitute - && !(TestIfSheerForceAffected(gBattlerAttacker, gCurrentMove)) && GetBattlerAbility(gBattlerAttacker) != ABILITY_MAGIC_GUARD && !gProtectStructs[gBattlerAttacker].confusionSelfDmg - && !IsFutureSightAttackerInParty(gBattlerAttacker, gBattlerTarget)) + && !IsFutureSightAttackerInParty(gBattlerAttacker, gBattlerTarget, gCurrentMove)) { gBattleStruct->moveDamage[gBattlerAttacker] = GetNonDynamaxMaxHP(gBattlerAttacker) / 10; if (gBattleStruct->moveDamage[gBattlerAttacker] == 0) @@ -8211,9 +7154,9 @@ u32 ItemBattleEffects(enum ItemCaseId caseID, u32 battler, bool32 moveTurn) } break; case HOLD_EFFECT_THROAT_SPRAY: // Does NOT need to be a damaging move - if (gProtectStructs[gBattlerAttacker].targetAffected + if (IsSoundMove(gCurrentMove) && IsBattlerAlive(gBattlerAttacker) - && IsSoundMove(gCurrentMove) + && IsAnyTargetAffected(gBattlerAttacker) && CompareStat(gBattlerAttacker, STAT_SPATK, MAX_STAT_STAGE, CMP_LESS_THAN) && !NoAliveMonsForEitherParty()) // Don't activate if battle will end { @@ -8225,6 +7168,8 @@ u32 ItemBattleEffects(enum ItemCaseId caseID, u32 battler, bool32 moveTurn) gBattlescriptCurrInstr = BattleScript_AttackerItemStatRaise; } break; + default: + break; } break; case ITEMEFFECT_TARGET: @@ -8391,6 +7336,8 @@ u32 ItemBattleEffects(enum ItemCaseId caseID, u32 battler, bool32 moveTurn) effect = ITEM_EFFECT_OTHER; } break; + default: + break; } } break; @@ -8400,7 +7347,7 @@ u32 ItemBattleEffects(enum ItemCaseId caseID, u32 battler, bool32 moveTurn) switch (battlerHoldEffect) { case HOLD_EFFECT_TOXIC_ORB: - if (CanBePoisoned(battler, battler, GetBattlerAbility(battler))) + if (CanBePoisoned(battler, battler, battlerAbility, battlerAbility)) // Can corrosion trigger toxic orb on itself? { effect = ITEM_STATUS_CHANGE; gBattleMons[battler].status1 = STATUS1_TOXIC_POISON; @@ -8409,7 +7356,7 @@ u32 ItemBattleEffects(enum ItemCaseId caseID, u32 battler, bool32 moveTurn) } break; case HOLD_EFFECT_FLAME_ORB: - if (CanBeBurned(battler, battlerAbility)) + if (CanBeBurned(battler, battler, battlerAbility)) { effect = ITEM_STATUS_CHANGE; gBattleMons[battler].status1 = STATUS1_BURN; @@ -8429,6 +7376,8 @@ u32 ItemBattleEffects(enum ItemCaseId caseID, u32 battler, bool32 moveTurn) PREPARE_ITEM_BUFFER(gBattleTextBuff1, gLastUsedItem); } break; + default: + break; } if (effect == ITEM_STATUS_CHANGE) @@ -8441,7 +7390,7 @@ u32 ItemBattleEffects(enum ItemCaseId caseID, u32 battler, bool32 moveTurn) case ITEMEFFECT_STATS_CHANGED: switch (battlerHoldEffect) { - case HOLD_EFFECT_RESTORE_STATS: + case HOLD_EFFECT_WHITE_HERB: effect = RestoreWhiteHerbStats(battler); if (effect != 0) { @@ -8449,13 +7398,15 @@ u32 ItemBattleEffects(enum ItemCaseId caseID, u32 battler, bool32 moveTurn) gBattlescriptCurrInstr = BattleScript_WhiteHerbRet; } break; + default: + break; } break; } // Berry was successfully used on a Pokemon. if (effect && (gLastUsedItem >= FIRST_BERRY_INDEX && gLastUsedItem <= LAST_BERRY_INDEX)) - gBattleStruct->ateBerry[battler & BIT_SIDE] |= 1u << gBattlerPartyIndexes[battler]; + gBattleStruct->partyState[GetBattlerSide(battler)][gBattlerPartyIndexes[battler]].ateBerry = TRUE; return effect; } @@ -8650,9 +7601,9 @@ u8 GetAttackerObedienceForAction() } // is not obedient - if (gCurrentMove == MOVE_RAGE) + enum BattleMoveEffects moveEffect = GetMoveEffect(gCurrentMove); + if (moveEffect == EFFECT_RAGE) gBattleMons[gBattlerAttacker].status2 &= ~STATUS2_RAGE; - u32 moveEffect = GetMoveEffect(gCurrentMove); if (gBattleMons[gBattlerAttacker].status1 & STATUS1_SLEEP && (moveEffect == EFFECT_SNORE || moveEffect == EFFECT_SLEEP_TALK)) return DISOBEYS_WHILE_ASLEEP; @@ -8673,7 +7624,7 @@ u8 GetAttackerObedienceForAction() obedienceLevel = levelReferenced - obedienceLevel; calc = ((rnd >> 16) & 255); - if (calc < obedienceLevel && CanBeSlept(gBattlerAttacker, GetBattlerAbility(gBattlerAttacker), NOT_BLOCKED_BY_SLEEP_CLAUSE)) + if (calc < obedienceLevel && CanBeSlept(gBattlerAttacker, gBattlerAttacker, GetBattlerAbility(gBattlerAttacker), NOT_BLOCKED_BY_SLEEP_CLAUSE)) { // try putting asleep int i; @@ -8691,17 +7642,17 @@ u8 GetAttackerObedienceForAction() } } -u32 GetBattlerHoldEffect(u32 battler, bool32 checkNegating) +enum ItemHoldEffect GetBattlerHoldEffect(u32 battler, bool32 checkNegating) { return GetBattlerHoldEffectInternal(battler, checkNegating, TRUE); } -u32 GetBattlerHoldEffectIgnoreAbility(u32 battler, bool32 checkNegating) +enum ItemHoldEffect GetBattlerHoldEffectIgnoreAbility(u32 battler, bool32 checkNegating) { return GetBattlerHoldEffectInternal(battler, checkNegating, FALSE); } -u32 GetBattlerHoldEffectInternal(u32 battler, bool32 checkNegating, bool32 checkAbility) +enum ItemHoldEffect GetBattlerHoldEffectInternal(u32 battler, bool32 checkNegating, bool32 checkAbility) { if (checkNegating) { @@ -8739,7 +7690,7 @@ u32 GetBattlerHoldEffectParam(u32 battler) bool32 IsMoveMakingContact(u32 move, u32 battlerAtk) { - u32 atkHoldEffect = GetBattlerHoldEffect(battlerAtk, TRUE); + enum ItemHoldEffect atkHoldEffect = GetBattlerHoldEffect(battlerAtk, TRUE); if (!MoveMakesContact(move)) { @@ -8759,45 +7710,55 @@ bool32 IsMoveMakingContact(u32 move, u32 battlerAtk) } } +static inline bool32 IsSideProtected(u32 battler, enum ProtectMethod method) +{ + return gProtectStructs[battler].protected == method + || gProtectStructs[BATTLE_PARTNER(battler)].protected == method; +} + bool32 IsBattlerProtected(u32 battlerAtk, u32 battlerDef, u32 move) { + if (gProtectStructs[battlerDef].protected == PROTECT_NONE + && gProtectStructs[BATTLE_PARTNER(battlerDef)].protected == PROTECT_NONE) + return FALSE; + + if (gProtectStructs[battlerDef].protected != PROTECT_MAX_GUARD && !MoveIgnoresProtect(move)) + { + if (IsZMove(move) || IsMaxMove(move)) + return FALSE; // Z-Moves and Max Moves bypass protection (except Max Guard). + if (IsMoveMakingContact(move, battlerAtk) && GetBattlerAbility(battlerAtk) == ABILITY_UNSEEN_FIST) + return FALSE; + } + bool32 isProtected = FALSE; - if ((IsZMove(move) || IsMaxMove(move)) - && (!gProtectStructs[battlerDef].maxGuarded || MoveIgnoresProtect(move))) - isProtected = FALSE; // Z-Moves and Max Moves bypass protection (except Max Guard). - else if (gProtectStructs[battlerDef].maxGuarded && IsMoveBlockedByMaxGuard(move)) - isProtected = TRUE; - else if (!gProtectStructs[battlerDef].maxGuarded // Max Guard cannot be bypassed by Unseen Fist - && IsMoveMakingContact(move, battlerAtk) - && GetBattlerAbility(battlerAtk) == ABILITY_UNSEEN_FIST) - isProtected = FALSE; - else if (gSideStatuses[GetBattlerSide(battlerDef)] & SIDE_STATUS_CRAFTY_SHIELD && IsBattleMoveStatus(move) && GetMoveEffect(move) != EFFECT_COACHING) + if (IsSideProtected(battlerDef, PROTECT_CRAFTY_SHIELD) + && IsBattleMoveStatus(move) + && GetMoveEffect(move) != EFFECT_COACHING) isProtected = TRUE; else if (MoveIgnoresProtect(move)) isProtected = FALSE; - else if (gProtectStructs[battlerDef].protected) + else if (IsSideProtected(battlerDef, PROTECT_WIDE_GUARD) && IsSpreadMove(GetBattlerMoveTargetType(battlerAtk, move))) isProtected = TRUE; - else if (gSideStatuses[GetBattlerSide(battlerDef)] & SIDE_STATUS_WIDE_GUARD - && GetBattlerMoveTargetType(battlerAtk, move) & (MOVE_TARGET_BOTH | MOVE_TARGET_FOES_AND_ALLY)) + else if (gProtectStructs[battlerDef].protected == PROTECT_NORMAL) isProtected = TRUE; - else if (gProtectStructs[battlerDef].banefulBunkered) + else if (gProtectStructs[battlerDef].protected == PROTECT_SPIKY_SHIELD) isProtected = TRUE; - else if (gProtectStructs[battlerDef].burningBulwarked) + else if (gProtectStructs[battlerDef].protected == PROTECT_MAX_GUARD) isProtected = TRUE; - else if ((gProtectStructs[battlerDef].obstructed || gProtectStructs[battlerDef].silkTrapped) && !IsBattleMoveStatus(move)) + else if (gProtectStructs[battlerDef].protected == PROTECT_BANEFUL_BUNKER) isProtected = TRUE; - else if (gProtectStructs[battlerDef].spikyShielded) + else if (gProtectStructs[battlerDef].protected == PROTECT_BURNING_BULWARK) isProtected = TRUE; - else if (gProtectStructs[battlerDef].kingsShielded && !IsBattleMoveStatus(move)) + else if (gProtectStructs[battlerDef].protected == PROTECT_OBSTRUCT && !IsBattleMoveStatus(move)) isProtected = TRUE; - else if (gProtectStructs[battlerDef].maxGuarded) + else if (gProtectStructs[battlerDef].protected == PROTECT_SILK_TRAP && !IsBattleMoveStatus(move)) isProtected = TRUE; - else if (gSideStatuses[GetBattlerSide(battlerDef)] & SIDE_STATUS_QUICK_GUARD - && GetChosenMovePriority(battlerAtk) > 0) + else if (gProtectStructs[battlerDef].protected == PROTECT_KINGS_SHIELD && !IsBattleMoveStatus(move)) isProtected = TRUE; - else if (gSideStatuses[GetBattlerSide(battlerDef)] & SIDE_STATUS_MAT_BLOCK - && !IsBattleMoveStatus(move)) + else if (IsSideProtected(battlerDef, PROTECT_QUICK_GUARD) && GetChosenMovePriority(battlerAtk, GetBattlerAbility(battlerAtk)) > 0) + isProtected = TRUE; + else if (IsSideProtected(battlerDef, PROTECT_MAT_BLOCK) && !IsBattleMoveStatus(move)) isProtected = TRUE; else isProtected = FALSE; @@ -8808,6 +7769,31 @@ bool32 IsBattlerProtected(u32 battlerAtk, u32 battlerDef, u32 move) return isProtected; } +u32 GetProtectType(enum ProtectMethod method) +{ + switch (method) + { + case PROTECT_NONE: + return PROTECT_TYPE_NONE; + case PROTECT_NORMAL: + case PROTECT_SPIKY_SHIELD: + case PROTECT_KINGS_SHIELD: + case PROTECT_BANEFUL_BUNKER: + case PROTECT_BURNING_BULWARK: + case PROTECT_OBSTRUCT: + case PROTECT_SILK_TRAP: + case PROTECT_MAX_GUARD: + return PROTECT_TYPE_SINGLE; + case PROTECT_WIDE_GUARD: + case PROTECT_QUICK_GUARD: + case PROTECT_CRAFTY_SHIELD: + case PROTECT_MAT_BLOCK: + return PROTECT_TYPE_SIDE; + } + + return FALSE; +} + enum InverseBattleCheck { INVERSE_BATTLE, @@ -8823,7 +7809,7 @@ enum IronBallCheck // Only called directly when calculating damage type effectiveness, and Iron Ball's type effectiveness mechanics static bool32 IsBattlerGroundedInverseCheck(u32 battler, enum InverseBattleCheck checkInverse, enum IronBallCheck checkIronBall) { - u32 holdEffect = GetBattlerHoldEffect(battler, TRUE); + enum ItemHoldEffect holdEffect = GetBattlerHoldEffect(battler, TRUE); if (!(checkIronBall == IGNORE_IRON_BALL) && holdEffect == HOLD_EFFECT_IRON_BALL) return TRUE; @@ -8839,7 +7825,7 @@ static bool32 IsBattlerGroundedInverseCheck(u32 battler, enum InverseBattleCheck return FALSE; if (holdEffect == HOLD_EFFECT_AIR_BALLOON) return FALSE; - if ((AI_DATA->aiCalcInProgress ? AI_DATA->abilities[battler] : GetBattlerAbility(battler)) == ABILITY_LEVITATE) + if ((gAiLogicData->aiCalcInProgress ? gAiLogicData->abilities[battler] : GetBattlerAbility(battler)) == ABILITY_LEVITATE) return FALSE; if (IS_BATTLER_OF_TYPE(battler, TYPE_FLYING) && (!(checkInverse == INVERSE_BATTLE) || !FlagGet(B_FLAG_INVERSE_BATTLE))) return FALSE; @@ -8868,7 +7854,7 @@ u32 GetBattlerWeight(u32 battler) u32 i; u32 weight = GetSpeciesWeight(gBattleMons[battler].species); u32 ability = GetBattlerAbility(battler); - u32 holdEffect = GetBattlerHoldEffect(battler, TRUE); + enum ItemHoldEffect holdEffect = GetBattlerHoldEffect(battler, TRUE); if (ability == ABILITY_HEAVY_METAL) weight *= 2; @@ -9139,9 +8125,7 @@ static inline u32 CalcMoveBasePower(struct DamageCalculationData *damageCalcData // Comatose targets treated as if asleep if ((gBattleMons[battlerDef].status1 | (STATUS1_SLEEP * (abilityDef == ABILITY_COMATOSE))) & GetMoveEffectArg_Status(move) && !((GetMoveAdditionalEffectById(move, 0)->moveEffect == MOVE_EFFECT_REMOVE_STATUS) && DoesSubstituteBlockMove(battlerAtk, battlerDef, move))) - { basePower *= 2; - } break; case EFFECT_POWER_BASED_ON_TARGET_HP: basePower = gBattleMons[battlerDef].hp * basePower / gBattleMons[battlerDef].maxHP; @@ -9306,6 +8290,8 @@ static inline u32 CalcMoveBasePower(struct DamageCalculationData *damageCalcData case EFFECT_LAST_RESPECTS: basePower += (basePower * min(100, GetBattlerSideFaintCounter(battlerAtk))); break; + default: + break; } // Move-specific base power changes @@ -9322,16 +8308,15 @@ static inline u32 CalcMoveBasePower(struct DamageCalculationData *damageCalcData return basePower; } -static inline u32 CalcMoveBasePowerAfterModifiers(struct DamageCalculationData *damageCalcData, u32 atkAbility, u32 defAbility, u32 holdEffectAtk, u32 weather) +static inline u32 CalcMoveBasePowerAfterModifiers(struct DamageCalculationData *damageCalcData, u32 atkAbility, u32 defAbility, enum ItemHoldEffect holdEffectAtk, u32 weather) { - u32 i; u32 holdEffectParamAtk; u32 basePower = CalcMoveBasePower(damageCalcData, defAbility, weather); u32 battlerAtk = damageCalcData->battlerAtk; u32 battlerDef = damageCalcData->battlerDef; u32 move = damageCalcData->move; u32 moveType = damageCalcData->moveType; - u32 moveEffect = GetMoveEffect(move); + enum BattleMoveEffects moveEffect = GetMoveEffect(move); uq4_12_t holdEffectModifier; uq4_12_t modifier = UQ_4_12(1.0); @@ -9371,6 +8356,8 @@ static inline u32 CalcMoveBasePowerAfterModifiers(struct DamageCalculationData * && CanBattlerGetOrLoseItem(battlerDef, gBattleMons[battlerDef].item)) modifier = uq4_12_multiply(modifier, UQ_4_12(1.5)); break; + default: + break; } // various effects @@ -9380,7 +8367,7 @@ static inline u32 CalcMoveBasePowerAfterModifiers(struct DamageCalculationData * modifier = uq4_12_multiply(modifier, uq4_12_add(UQ_4_12(1.0), PercentToUQ4_12(gSpecialStatuses[battlerAtk].gemParam))); if (gStatuses3[battlerAtk] & STATUS3_CHARGED_UP && moveType == TYPE_ELECTRIC) modifier = uq4_12_multiply(modifier, UQ_4_12(2.0)); - if (gStatuses3[battlerAtk] & STATUS3_ME_FIRST) + if (GetMoveEffect(gChosenMove) == EFFECT_ME_FIRST) modifier = uq4_12_multiply(modifier, UQ_4_12(1.5)); if (IsBattlerTerrainAffected(battlerAtk, STATUS_FIELD_GRASSY_TERRAIN) && moveType == TYPE_GRASS) modifier = uq4_12_multiply(modifier, (B_TERRAIN_TYPE_BOOST >= GEN_8 ? UQ_4_12(1.3) : UQ_4_12(1.5))); @@ -9414,7 +8401,7 @@ static inline u32 CalcMoveBasePowerAfterModifiers(struct DamageCalculationData * modifier = uq4_12_multiply(modifier, UQ_4_12(1.5)); break; case ABILITY_RECKLESS: - if (IsBattleMoveRecoil(move)) + if (moveEffect == EFFECT_RECOIL || moveEffect == EFFECT_RECOIL_IF_MISS) modifier = uq4_12_multiply(modifier, UQ_4_12(1.2)); break; case ABILITY_IRON_FIST: @@ -9462,22 +8449,22 @@ static inline u32 CalcMoveBasePowerAfterModifiers(struct DamageCalculationData * break; case ABILITY_PIXILATE: if (moveType == TYPE_FAIRY && gBattleStruct->ateBoost[battlerAtk]) - modifier = uq4_12_multiply(modifier, UQ_4_12(1.2)); + modifier = uq4_12_multiply(modifier, UQ_4_12(GetGenConfig(GEN_CONFIG_ATE_MULTIPLIER) >= GEN_7 ? 1.2 : 1.3)); break; case ABILITY_GALVANIZE: if (moveType == TYPE_ELECTRIC && gBattleStruct->ateBoost[battlerAtk]) - modifier = uq4_12_multiply(modifier, UQ_4_12(1.2)); + modifier = uq4_12_multiply(modifier, UQ_4_12(GetGenConfig(GEN_CONFIG_ATE_MULTIPLIER) >= GEN_7 ? 1.2 : 1.3)); break; case ABILITY_REFRIGERATE: if (moveType == TYPE_ICE && gBattleStruct->ateBoost[battlerAtk]) - modifier = uq4_12_multiply(modifier, UQ_4_12(1.2)); + modifier = uq4_12_multiply(modifier, UQ_4_12(GetGenConfig(GEN_CONFIG_ATE_MULTIPLIER) >= GEN_7 ? 1.2 : 1.3)); break; case ABILITY_AERILATE: if (moveType == TYPE_FLYING && gBattleStruct->ateBoost[battlerAtk]) - modifier = uq4_12_multiply(modifier, UQ_4_12(1.2)); + modifier = uq4_12_multiply(modifier, UQ_4_12(GetGenConfig(GEN_CONFIG_ATE_MULTIPLIER) >= GEN_7 ? 1.2 : 1.3)); break; case ABILITY_NORMALIZE: - if (moveType == TYPE_NORMAL && gBattleStruct->ateBoost[battlerAtk]) + if (moveType == TYPE_NORMAL && gBattleStruct->ateBoost[battlerAtk] && GetGenConfig(GEN_CONFIG_ATE_MULTIPLIER) >= GEN_7) modifier = uq4_12_multiply(modifier, UQ_4_12(1.2)); break; case ABILITY_PUNK_ROCK: @@ -9597,34 +8584,7 @@ static inline u32 CalcMoveBasePowerAfterModifiers(struct DamageCalculationData * || (B_SOUL_DEW_BOOST < GEN_7 && !(gBattleTypeFlags & BATTLE_TYPE_FRONTIER) && IsBattleMoveSpecial(move)))) modifier = uq4_12_multiply(modifier, holdEffectModifier); break; - case HOLD_EFFECT_BUG_POWER: - case HOLD_EFFECT_STEEL_POWER: - case HOLD_EFFECT_GROUND_POWER: - case HOLD_EFFECT_ROCK_POWER: - case HOLD_EFFECT_GRASS_POWER: - case HOLD_EFFECT_DARK_POWER: - case HOLD_EFFECT_FIGHTING_POWER: - case HOLD_EFFECT_ELECTRIC_POWER: - case HOLD_EFFECT_WATER_POWER: - case HOLD_EFFECT_FLYING_POWER: - case HOLD_EFFECT_POISON_POWER: - case HOLD_EFFECT_ICE_POWER: - case HOLD_EFFECT_GHOST_POWER: - case HOLD_EFFECT_PSYCHIC_POWER: - case HOLD_EFFECT_FIRE_POWER: - case HOLD_EFFECT_DRAGON_POWER: - case HOLD_EFFECT_NORMAL_POWER: - case HOLD_EFFECT_FAIRY_POWER: - for (i = 0; i < ARRAY_COUNT(sHoldEffectToType); i++) - { - if (holdEffectAtk == sHoldEffectToType[i][0]) - { - if (moveType == sHoldEffectToType[i][1]) - modifier = uq4_12_multiply(modifier, holdEffectModifier); - break; - } - } - break; + case HOLD_EFFECT_TYPE_POWER: case HOLD_EFFECT_PLATE: if (moveType == GetItemSecondaryId(gBattleMons[battlerAtk].item)) modifier = uq4_12_multiply(modifier, holdEffectModifier); @@ -9637,6 +8597,8 @@ static inline u32 CalcMoveBasePowerAfterModifiers(struct DamageCalculationData * if (GET_BASE_SPECIES_ID(gBattleMons[battlerAtk].species) == SPECIES_OGERPON) modifier = uq4_12_multiply(modifier, UQ_4_12(1.2)); break; + default: + break; } // Terastallization boosts weak, non-priority, non-multi hit moves after modifiers to 60 BP. @@ -9657,7 +8619,7 @@ static inline u32 CalcMoveBasePowerAfterModifiers(struct DamageCalculationData * return uq4_12_multiply_by_int_half_down(modifier, basePower); } -static inline u32 CalcAttackStat(struct DamageCalculationData *damageCalcData, u32 atkAbility, u32 defAbility, u32 holdEffectAtk, u32 weather) +static inline u32 CalcAttackStat(struct DamageCalculationData *damageCalcData, u32 atkAbility, u32 defAbility, enum ItemHoldEffect holdEffectAtk, u32 weather) { u8 atkStage; u32 atkStat; @@ -9667,7 +8629,7 @@ static inline u32 CalcAttackStat(struct DamageCalculationData *damageCalcData, u u32 battlerDef = damageCalcData->battlerDef; u32 move = damageCalcData->move; u32 moveType = damageCalcData->moveType; - u32 moveEffect = GetMoveEffect(move); + enum BattleMoveEffects moveEffect = GetMoveEffect(move); atkBaseSpeciesId = GET_BASE_SPECIES_ID(gBattleMons[battlerAtk].species); @@ -9737,7 +8699,7 @@ static inline u32 CalcAttackStat(struct DamageCalculationData *damageCalcData, u modifier = uq4_12_multiply_half_down(modifier, UQ_4_12(2.0)); break; case ABILITY_SLOW_START: - if (gDisableStructs[battlerAtk].slowStartTimer != 0) + if (gDisableStructs[battlerAtk].slowStartTimer > gBattleTurnCounter) modifier = uq4_12_multiply_half_down(modifier, UQ_4_12(0.5)); break; case ABILITY_SOLAR_POWER: @@ -9910,13 +8872,14 @@ static inline u32 CalcAttackStat(struct DamageCalculationData *damageCalcData, u if (IsBattleMoveSpecial(move) && GetActiveGimmick(battlerAtk) != GIMMICK_DYNAMAX) modifier = uq4_12_multiply_half_down(modifier, UQ_4_12(1.5)); break; + default: + break; } - // The offensive stats of a Player's Pokémon are boosted by x1.1 (+10%) if they have the 1st badge and 7th badges. - // Having the 1st badge boosts physical attack while having the 7th badge boosts special attack. - if (ShouldGetStatBadgeBoost(FLAG_BADGE01_GET, battlerAtk) && IsBattleMovePhysical(move)) + // The offensive stats of a Player's Pokémon are boosted by x1.1 (+10%) if they have the corresponding flags set (eg. Badges) + if (ShouldGetStatBadgeBoost(B_FLAG_BADGE_BOOST_ATTACK, battlerAtk) && IsBattleMovePhysical(move)) modifier = uq4_12_multiply_half_down(modifier, UQ_4_12(1.1)); - if (ShouldGetStatBadgeBoost(FLAG_BADGE07_GET, battlerAtk) && IsBattleMoveSpecial(move)) + if (ShouldGetStatBadgeBoost(B_FLAG_BADGE_BOOST_SPATK, battlerAtk) && IsBattleMoveSpecial(move)) modifier = uq4_12_multiply_half_down(modifier, UQ_4_12(1.1)); return uq4_12_multiply_by_int_half_down(modifier, atkStat); @@ -9939,7 +8902,7 @@ static bool32 CanEvolve(u32 species) return FALSE; } -static inline u32 CalcDefenseStat(struct DamageCalculationData *damageCalcData, u32 atkAbility, u32 defAbility, u32 holdEffectDef, u32 weather) +static inline u32 CalcDefenseStat(struct DamageCalculationData *damageCalcData, u32 atkAbility, u32 defAbility, enum ItemHoldEffect holdEffectDef, u32 weather) { bool32 usesDefStat; u8 defStage; @@ -9948,7 +8911,7 @@ static inline u32 CalcDefenseStat(struct DamageCalculationData *damageCalcData, u32 battlerDef = damageCalcData->battlerDef; u32 move = damageCalcData->move; u32 moveType = damageCalcData->moveType; - u32 moveEffect = GetMoveEffect(move); + enum BattleMoveEffects moveEffect = GetMoveEffect(move); if (gFieldStatuses & STATUS_FIELD_WONDER_ROOM) // the defense stats are swapped { @@ -10076,6 +9039,8 @@ static inline u32 CalcDefenseStat(struct DamageCalculationData *damageCalcData, && !usesDefStat) modifier = uq4_12_multiply_half_down(modifier, UQ_4_12(1.5)); break; + default: + break; } // sandstorm sp.def boost for rock types @@ -10085,11 +9050,10 @@ static inline u32 CalcDefenseStat(struct DamageCalculationData *damageCalcData, if (IS_BATTLER_OF_TYPE(battlerDef, TYPE_ICE) && IsBattlerWeatherAffected(battlerDef, B_WEATHER_SNOW) && usesDefStat) modifier = uq4_12_multiply_half_down(modifier, UQ_4_12(1.5)); - // The defensive stats of a Player's Pokémon are boosted by x1.1 (+10%) if they have the 5th badge and 7th badges. - // Having the 5th badge boosts physical defense while having the 7th badge boosts special defense. - if (ShouldGetStatBadgeBoost(FLAG_BADGE05_GET, battlerDef) && IsBattleMovePhysical(move)) + // The offensive stats of a Player's Pokémon are boosted by x1.1 (+10%) if they have the corresponding flags set (eg. Badges) + if (ShouldGetStatBadgeBoost(B_FLAG_BADGE_BOOST_DEFENSE, battlerDef) && IsBattleMovePhysical(move)) modifier = uq4_12_multiply_half_down(modifier, UQ_4_12(1.1)); - if (ShouldGetStatBadgeBoost(FLAG_BADGE07_GET, battlerDef) && IsBattleMoveSpecial(move)) + if (ShouldGetStatBadgeBoost(B_FLAG_BADGE_BOOST_SPDEF, battlerDef) && IsBattleMoveSpecial(move)) modifier = uq4_12_multiply_half_down(modifier, UQ_4_12(1.1)); return uq4_12_multiply_by_int_half_down(modifier, defStat); @@ -10131,7 +9095,7 @@ static inline uq4_12_t GetSameTypeAttackBonusModifier(struct DamageCalculationDa } // Utility Umbrella holders take normal damage from what would be rain- and sun-weakened attacks. -static uq4_12_t GetWeatherDamageModifier(struct DamageCalculationData *damageCalcData, u32 holdEffectAtk, u32 holdEffectDef, u32 weather) +static uq4_12_t GetWeatherDamageModifier(struct DamageCalculationData *damageCalcData, enum ItemHoldEffect holdEffectAtk, enum ItemHoldEffect holdEffectDef, u32 weather) { u32 move = damageCalcData->move; u32 moveType = damageCalcData->moveType; @@ -10162,7 +9126,7 @@ static inline uq4_12_t GetBurnOrFrostBiteModifier(struct DamageCalculationData * { u32 battlerAtk = damageCalcData->battlerAtk; u32 move = damageCalcData->move; - u32 moveEffect = GetMoveEffect(move); + enum BattleMoveEffects moveEffect = GetMoveEffect(move); if (gBattleMons[battlerAtk].status1 & STATUS1_BURN && IsBattleMovePhysical(move) @@ -10192,7 +9156,16 @@ static inline uq4_12_t GetGlaiveRushModifier(u32 battlerDef) static inline uq4_12_t GetZMaxMoveAgainstProtectionModifier(struct DamageCalculationData *damageCalcData) { - if ((IsZMove(damageCalcData->move) || IsMaxMove(damageCalcData->move)) && IS_BATTLER_PROTECTED(damageCalcData->battlerDef)) + if (!IsZMove(damageCalcData->move) && !IsMaxMove(damageCalcData->move)) + return UQ_4_12(1.0); + + u32 protected = gProtectStructs[damageCalcData->battlerDef].protected; + if (protected != PROTECT_NONE + && protected != PROTECT_WIDE_GUARD + && protected != PROTECT_QUICK_GUARD + && protected != PROTECT_CRAFTY_SHIELD + && protected != PROTECT_MAT_BLOCK + && protected != PROTECT_MAX_GUARD) return UQ_4_12(0.25); return UQ_4_12(1.0); } @@ -10313,7 +9286,7 @@ static inline uq4_12_t GetDefenderPartnerAbilitiesModifier(u32 battlerPartnerDef return UQ_4_12(1.0); } -static inline uq4_12_t GetAttackerItemsModifier(u32 battlerAtk, uq4_12_t typeEffectivenessModifier, u32 holdEffectAtk) +static inline uq4_12_t GetAttackerItemsModifier(u32 battlerAtk, uq4_12_t typeEffectivenessModifier, enum ItemHoldEffect holdEffectAtk) { u32 metronomeTurns; uq4_12_t metronomeBoostBase; @@ -10333,11 +9306,13 @@ static inline uq4_12_t GetAttackerItemsModifier(u32 battlerAtk, uq4_12_t typeEff case HOLD_EFFECT_LIFE_ORB: return UQ_4_12_FLOORED(1.3); break; + default: + break; } return UQ_4_12(1.0); } -static inline uq4_12_t GetDefenderItemsModifier(struct DamageCalculationData *damageCalcData, uq4_12_t typeEffectivenessModifier, u32 abilityDef, u32 holdEffectDef) +static inline uq4_12_t GetDefenderItemsModifier(struct DamageCalculationData *damageCalcData, uq4_12_t typeEffectivenessModifier, u32 abilityDef, enum ItemHoldEffect holdEffectDef) { u32 battlerDef = damageCalcData->battlerDef; u32 moveType = damageCalcData->moveType; @@ -10357,6 +9332,8 @@ static inline uq4_12_t GetDefenderItemsModifier(struct DamageCalculationData *da return (abilityDef == ABILITY_RIPEN) ? UQ_4_12(0.25) : UQ_4_12(0.5); } break; + default: + break; } return UQ_4_12(1.0); } @@ -10372,7 +9349,7 @@ static inline uq4_12_t GetDefenderItemsModifier(struct DamageCalculationData *da // Please Note: Fixed Point Multiplication is not associative. // The order of operations is relevant. static inline uq4_12_t GetOtherModifiers(struct DamageCalculationData *damageCalcData, uq4_12_t typeEffectivenessModifier, - u32 abilityAtk, u32 abilityDef, u32 holdEffectAtk, u32 holdEffectDef) + u32 abilityAtk, u32 abilityDef, enum ItemHoldEffect holdEffectAtk, enum ItemHoldEffect holdEffectDef) { u32 battlerAtk = damageCalcData->battlerAtk; u32 battlerDef = damageCalcData->battlerDef; @@ -10418,7 +9395,7 @@ static inline uq4_12_t GetOtherModifiers(struct DamageCalculationData *damageCal } while (0) static inline s32 DoMoveDamageCalcVars(struct DamageCalculationData *damageCalcData, u32 fixedBasePower, uq4_12_t typeEffectivenessModifier, u32 weather, - u32 holdEffectAtk, u32 holdEffectDef, u32 abilityAtk, u32 abilityDef) + enum ItemHoldEffect holdEffectAtk, enum ItemHoldEffect holdEffectDef, u32 abilityAtk, u32 abilityDef) { s32 dmg; u32 userFinalAttack; @@ -10446,9 +9423,24 @@ static inline s32 DoMoveDamageCalcVars(struct DamageCalculationData *damageCalcD dmg *= DMG_ROLL_PERCENT_HI - RandomUniform(RNG_DAMAGE_MODIFIER, 0, DMG_ROLL_PERCENT_HI - DMG_ROLL_PERCENT_LO); dmg /= 100; } + else // Apply rest of modifiers in the ai function + { + if (dmg == 0) + dmg = 1; + return dmg; + } - if (GetActiveGimmick(battlerAtk) == GIMMICK_TERA) - DAMAGE_APPLY_MODIFIER(GetTeraMultiplier(battlerAtk, damageCalcData->moveType)); + dmg = ApplyModifiersAfterDmgRoll(dmg, damageCalcData, typeEffectivenessModifier, abilityAtk, abilityDef, holdEffectAtk, holdEffectDef); + + if (dmg == 0) + dmg = 1; + return dmg; +} + +s32 ApplyModifiersAfterDmgRoll(s32 dmg, struct DamageCalculationData *damageCalcData, uq4_12_t typeEffectivenessModifier, u32 abilityAtk, u32 abilityDef, enum ItemHoldEffect holdEffectAtk, enum ItemHoldEffect holdEffectDef) +{ + if (GetActiveGimmick(damageCalcData->battlerAtk) == GIMMICK_TERA) + DAMAGE_APPLY_MODIFIER(GetTeraMultiplier(damageCalcData->battlerAtk, damageCalcData->moveType)); else DAMAGE_APPLY_MODIFIER(GetSameTypeAttackBonusModifier(damageCalcData, abilityAtk)); DAMAGE_APPLY_MODIFIER(typeEffectivenessModifier); @@ -10456,18 +9448,53 @@ static inline s32 DoMoveDamageCalcVars(struct DamageCalculationData *damageCalcD DAMAGE_APPLY_MODIFIER(GetZMaxMoveAgainstProtectionModifier(damageCalcData)); DAMAGE_APPLY_MODIFIER(GetOtherModifiers(damageCalcData, typeEffectivenessModifier, abilityAtk, abilityDef, holdEffectAtk, holdEffectDef)); + return dmg; +} + +static inline s32 DoFixedDamageMoveCalc(struct DamageCalculationData *damageCalcData) +{ + s32 dmg = 0; + s32 randDamage; + + switch (GetMoveEffect(damageCalcData->move)) + { + case EFFECT_LEVEL_DAMAGE: + dmg = gBattleMons[damageCalcData->battlerAtk].level; + break; + case EFFECT_PSYWAVE: + randDamage = B_PSYWAVE_DMG >= GEN_6 ? (Random() % 101) : ((Random() % 11) * 10); + dmg = gBattleMons[damageCalcData->battlerAtk].level * (randDamage + 50) / 100; + break; + case EFFECT_FIXED_DAMAGE_ARG: + dmg = GetMoveFixedDamage(damageCalcData->move); + break; + case EFFECT_SUPER_FANG: + dmg = GetNonDynamaxHP(damageCalcData->battlerDef) / 2; + break; + default: + return INT32_MAX; + } + + gBattleStruct->moveResultFlags[damageCalcData->battlerDef] &= ~(MOVE_RESULT_NOT_VERY_EFFECTIVE | MOVE_RESULT_SUPER_EFFECTIVE); + if (dmg == 0) dmg = 1; + return dmg; } static inline s32 DoMoveDamageCalc(struct DamageCalculationData *damageCalcData, u32 fixedBasePower, uq4_12_t typeEffectivenessModifier, u32 weather) { - u32 holdEffectAtk, holdEffectDef, abilityAtk, abilityDef; + enum ItemHoldEffect holdEffectAtk, holdEffectDef; + u32 abilityAtk, abilityDef; if (typeEffectivenessModifier == UQ_4_12(0.0)) return 0; + s32 dmg = DoFixedDamageMoveCalc(damageCalcData); + if (dmg != INT32_MAX) + return dmg; + holdEffectAtk = GetBattlerHoldEffect(damageCalcData->battlerAtk, TRUE); holdEffectDef = GetBattlerHoldEffect(damageCalcData->battlerDef, TRUE); abilityAtk = GetBattlerAbility(damageCalcData->battlerAtk); @@ -10477,7 +9504,7 @@ static inline s32 DoMoveDamageCalc(struct DamageCalculationData *damageCalcData, } static inline s32 DoFutureSightAttackDamageCalcVars(struct DamageCalculationData *damageCalcData, uq4_12_t typeEffectivenessModifier, - u32 weather, u32 holdEffectDef, u32 abilityDef) + u32 weather, enum ItemHoldEffect holdEffectDef, u32 abilityDef) { s32 dmg; u32 userFinalAttack; @@ -10487,7 +9514,7 @@ static inline s32 DoFutureSightAttackDamageCalcVars(struct DamageCalculationData u32 move = damageCalcData->move; u32 moveType = damageCalcData->moveType; - struct Pokemon *party = GetSideParty(GetBattlerSide(battlerAtk)); + struct Pokemon *party = GetBattlerParty(battlerAtk); struct Pokemon *partyMon = &party[gWishFutureKnock.futureSightPartyIndex[battlerDef]]; u32 partyMonLevel = GetMonData(partyMon, MON_DATA_LEVEL, NULL); u32 partyMonSpecies = GetMonData(partyMon, MON_DATA_SPECIES, NULL); @@ -10524,7 +9551,8 @@ static inline s32 DoFutureSightAttackDamageCalcVars(struct DamageCalculationData static inline s32 DoFutureSightAttackDamageCalc(struct DamageCalculationData *damageCalcData, uq4_12_t typeEffectivenessModifier, u32 weather) { - u32 holdEffectDef, abilityDef; + enum ItemHoldEffect holdEffectDef; + u32 abilityDef; if (typeEffectivenessModifier == UQ_4_12(0.0)) return 0; @@ -10545,9 +9573,12 @@ static u32 GetWeather(void) return gBattleWeather; } -bool32 IsFutureSightAttackerInParty(u32 battlerAtk, u32 battlerDef) +bool32 IsFutureSightAttackerInParty(u32 battlerAtk, u32 battlerDef, u32 move) { - struct Pokemon *party = GetSideParty(GetBattlerSide(battlerAtk)); + if (GetMoveEffect(move) != EFFECT_FUTURE_SIGHT) + return FALSE; + + struct Pokemon *party = GetBattlerParty(battlerAtk); return &party[gWishFutureKnock.futureSightPartyIndex[battlerDef]] != &party[gBattlerPartyIndexes[battlerAtk]] && &party[gWishFutureKnock.futureSightPartyIndex[battlerDef]] != &party[BATTLE_PARTNER(gBattlerPartyIndexes[battlerAtk])]; } @@ -10561,8 +9592,7 @@ s32 CalculateMoveDamage(struct DamageCalculationData *damageCalcData, u32 fixedB GetBattlerAbility(damageCalcData->battlerDef), damageCalcData->updateFlags); - if (GetMoveEffect(damageCalcData->move) == EFFECT_FUTURE_SIGHT - && IsFutureSightAttackerInParty(damageCalcData->battlerAtk, damageCalcData->battlerDef)) + if (IsFutureSightAttackerInParty(damageCalcData->battlerAtk, damageCalcData->battlerDef, damageCalcData->move)) return DoFutureSightAttackDamageCalc(damageCalcData, typeEffectivenessMultiplier, GetWeather()); return DoMoveDamageCalc(damageCalcData, fixedBasePower, typeEffectivenessMultiplier, GetWeather()); @@ -10570,8 +9600,12 @@ s32 CalculateMoveDamage(struct DamageCalculationData *damageCalcData, u32 fixedB // for AI so that typeEffectivenessModifier, weather, abilities and holdEffects are calculated only once s32 CalculateMoveDamageVars(struct DamageCalculationData *damageCalcData, u32 fixedBasePower, uq4_12_t typeEffectivenessModifier, - u32 weather, u32 holdEffectAtk, u32 holdEffectDef, u32 abilityAtk, u32 abilityDef) + u32 weather, enum ItemHoldEffect holdEffectAtk, enum ItemHoldEffect holdEffectDef, u32 abilityAtk, u32 abilityDef) { + s32 dmg = DoFixedDamageMoveCalc(damageCalcData); + if (dmg != INT32_MAX) + return dmg; + return DoMoveDamageCalcVars(damageCalcData, fixedBasePower, typeEffectivenessModifier, weather, holdEffectAtk, holdEffectDef, abilityAtk, abilityDef); } @@ -10891,9 +9925,9 @@ s32 GetStealthHazardDamage(enum TypeSideHazard hazardType, u32 battler) bool32 IsPartnerMonFromSameTrainer(u32 battler) { - if (GetBattlerSide(battler) == B_SIDE_OPPONENT && gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS) + if (!IsOnPlayerSide(battler) && gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS) return FALSE; - else if (GetBattlerSide(battler) == B_SIDE_PLAYER && gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER) + else if (IsOnPlayerSide(battler) && gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER) return FALSE; else if (gBattleTypeFlags & BATTLE_TYPE_MULTI) return FALSE; @@ -10908,7 +9942,8 @@ bool32 DoesSpeciesUseHoldItemToChangeForm(u16 species, u16 heldItemId) for (i = 0; formChanges != NULL && formChanges[i].method != FORM_CHANGE_TERMINATOR; i++) { - switch (formChanges[i].method) + enum FormChanges method = formChanges[i].method; + switch (method) { case FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM: case FORM_CHANGE_BATTLE_PRIMAL_REVERSION: @@ -10918,6 +9953,8 @@ bool32 DoesSpeciesUseHoldItemToChangeForm(u16 species, u16 heldItemId) if (formChanges[i].param1 == heldItemId) return TRUE; break; + default: + break; } } return FALSE; @@ -10925,7 +9962,7 @@ bool32 DoesSpeciesUseHoldItemToChangeForm(u16 species, u16 heldItemId) bool32 CanMegaEvolve(u32 battler) { - u32 holdEffect = GetBattlerHoldEffect(battler, FALSE); + enum ItemHoldEffect holdEffect = GetBattlerHoldEffect(battler, FALSE); // Check if Player has a Mega Ring. if (!TESTING @@ -10963,7 +10000,7 @@ bool32 CanMegaEvolve(u32 battler) bool32 CanUltraBurst(u32 battler) { - u32 holdEffect = GetBattlerHoldEffect(battler, FALSE); + enum ItemHoldEffect holdEffect = GetBattlerHoldEffect(battler, FALSE); // Check if Player has a Z-Ring if (!TESTING && (GetBattlerPosition(battler) == B_POSITION_PLAYER_LEFT @@ -11041,13 +10078,13 @@ bool32 IsBattlerInTeraForm(u32 battler) } // Returns SPECIES_NONE if no form change is possible -u16 GetBattleFormChangeTargetSpecies(u32 battler, u16 method) +u16 GetBattleFormChangeTargetSpecies(u32 battler, enum FormChanges method) { u32 i; u32 species = gBattleMons[battler].species; u32 targetSpecies = species; const struct FormChange *formChanges = GetSpeciesFormChanges(species); - struct Pokemon *mon = &GetBattlerParty(battler)[gBattlerPartyIndexes[battler]]; + struct Pokemon *mon = GetBattlerMon(battler); u16 heldItem = gBattleMons[battler].item; for (i = 0; formChanges != NULL && formChanges[i].method != FORM_CHANGE_TERMINATOR; i++) @@ -11140,6 +10177,8 @@ u16 GetBattleFormChangeTargetSpecies(u32 battler, u16 method) && (formChanges[i].param2 == ABILITY_NONE || formChanges[i].param2 == GetBattlerAbility(battler))) targetSpecies = formChanges[i].targetSpecies; break; + default: + break; } } } @@ -11147,7 +10186,7 @@ u16 GetBattleFormChangeTargetSpecies(u32 battler, u16 method) return targetSpecies; } -bool32 CanBattlerFormChange(u32 battler, u16 method) +bool32 CanBattlerFormChange(u32 battler, enum FormChanges method) { // Can't change form if transformed. if (gBattleMons[battler].status2 & STATUS2_TRANSFORMED @@ -11164,7 +10203,7 @@ bool32 CanBattlerFormChange(u32 battler, u16 method) return DoesSpeciesHaveFormChangeMethod(gBattleMons[battler].species, method); } -bool32 TryBattleFormChange(u32 battler, u32 method) +bool32 TryBattleFormChange(u32 battler, enum FormChanges method) { u32 monId = gBattlerPartyIndexes[battler]; u32 side = GetBattlerSide(battler); @@ -11247,7 +10286,7 @@ bool32 DoBattlersShareType(u32 battler1, u32 battler2) bool32 CanBattlerGetOrLoseItem(u32 battler, u16 itemId) { u16 species = gBattleMons[battler].species; - u16 holdEffect = GetItemHoldEffect(itemId); + enum ItemHoldEffect holdEffect = GetItemHoldEffect(itemId); if (ItemIsMail(itemId)) return FALSE; @@ -11264,18 +10303,44 @@ bool32 CanBattlerGetOrLoseItem(u32 battler, u16 itemId) return TRUE; } +u32 GetBattlerVisualSpecies(u32 battler) +{ + u32 illusionSpecies = GetIllusionMonSpecies(battler); + if (illusionSpecies != SPECIES_NONE) + return illusionSpecies; + return gBattleMons[battler].species; +} + +bool32 TryClearIllusion(u32 battler, u32 caseID) +{ + if (gBattleStruct->illusion[battler].state != ILLUSION_ON) + return FALSE; + if (GetBattlerAbility(battler) == ABILITY_ILLUSION && IsBattlerAlive(battler)) + return FALSE; + + gBattleScripting.battler = battler; + if (caseID == ABILITYEFFECT_ON_SWITCHIN) + { + BattleScriptPushCursorAndCallback(BattleScript_IllusionOffEnd3); + } + else + { + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_IllusionOff; + } + return TRUE; +} + struct Pokemon *GetIllusionMonPtr(u32 battler) { - if (gBattleStruct->illusion[battler].broken) - return NULL; - if (!gBattleStruct->illusion[battler].set) + if (gBattleStruct->illusion[battler].state == ILLUSION_NOT_SET) { - if (GetBattlerSide(battler) == B_SIDE_PLAYER) - SetIllusionMon(&gPlayerParty[gBattlerPartyIndexes[battler]], battler); + if (IsOnPlayerSide(battler)) + SetIllusionMon(GetBattlerMon(battler), battler); else - SetIllusionMon(&gEnemyParty[gBattlerPartyIndexes[battler]], battler); + SetIllusionMon(GetBattlerMon(battler), battler); } - if (!gBattleStruct->illusion[battler].on) + if (gBattleStruct->illusion[battler].state != ILLUSION_ON) return NULL; return gBattleStruct->illusion[battler].mon; @@ -11294,12 +10359,34 @@ u32 GetIllusionMonSpecies(u32 battler) return SPECIES_NONE; } +u32 GetIllusionMonPartyId(struct Pokemon *party, struct Pokemon *mon, struct Pokemon *partnerMon) +{ + s32 id; + // Find last alive non-egg pokemon. + for (id = PARTY_SIZE - 1; id >= 0; id--) + { + if (GetMonData(&party[id], MON_DATA_SANITY_HAS_SPECIES) + && GetMonData(&party[id], MON_DATA_HP) + && !GetMonData(&party[id], MON_DATA_IS_EGG)) + { + u32 species = GetMonData(&party[id], MON_DATA_SPECIES); + if (species == SPECIES_TERAPAGOS_STELLAR || (species >= SPECIES_OGERPON_TEAL_TERA && species <= SPECIES_OGERPON_CORNERSTONE_TERA)) + continue; + if (&party[id] != mon && &party[id] != partnerMon) + return id; + else // If this pokemon or its partner is last in the party, ignore Illusion. + return PARTY_SIZE; + } + } + return PARTY_SIZE; +} + bool32 SetIllusionMon(struct Pokemon *mon, u32 battler) { struct Pokemon *party, *partnerMon; - s32 i, id; + u32 id; - gBattleStruct->illusion[battler].set = 1; + gBattleStruct->illusion[battler].state = ILLUSION_OFF; if (GetMonAbility(mon) != ABILITY_ILLUSION) return FALSE; @@ -11310,28 +10397,12 @@ bool32 SetIllusionMon(struct Pokemon *mon, u32 battler) else partnerMon = mon; - // Find last alive non-egg pokemon. - for (i = PARTY_SIZE - 1; i >= 0; i--) + id = GetIllusionMonPartyId(party, mon, partnerMon); + if (id != PARTY_SIZE) { - id = i; - if (GetMonData(&party[id], MON_DATA_SANITY_HAS_SPECIES) - && GetMonData(&party[id], MON_DATA_HP) - && !GetMonData(&party[id], MON_DATA_IS_EGG)) - { - if (&party[id] != mon && &party[id] != partnerMon) - { - gBattleStruct->illusion[battler].on = 1; - gBattleStruct->illusion[battler].broken = 0; - gBattleStruct->illusion[battler].partyId = id; - gBattleStruct->illusion[battler].mon = &party[id]; - return TRUE; - } - else if (&party[id] == mon) - { - // If this pokemon is last in the party, ignore Illusion. - return FALSE; - } - } + gBattleStruct->illusion[battler].state = ILLUSION_ON; + gBattleStruct->illusion[battler].mon = &party[id]; + return TRUE; } return FALSE; @@ -11339,11 +10410,11 @@ bool32 SetIllusionMon(struct Pokemon *mon, u32 battler) bool32 ShouldGetStatBadgeBoost(u16 badgeFlag, u32 battler) { - if (B_BADGE_BOOST == GEN_3) + if (B_BADGE_BOOST == GEN_3 && badgeFlag != 0) { if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_RECORDED_LINK | BATTLE_TYPE_FRONTIER)) return FALSE; - else if (GetBattlerSide(battler) != B_SIDE_PLAYER) + else if (!IsOnPlayerSide(battler)) return FALSE; else if (gBattleTypeFlags & BATTLE_TYPE_TRAINER && TRAINER_BATTLE_PARAM.opponentA == TRAINER_SECRET_BASE) return FALSE; @@ -11360,18 +10431,52 @@ static u32 SwapMoveDamageCategory(u32 move) return DAMAGE_CATEGORY_PHYSICAL; } -u8 GetBattleMoveCategory(u32 moveId) +/* + The Global States gBattleStruct->categoryOverride and gBattleStruct->swapDamageCategory + can be removed but a lot of function arguments (battlerAtk and battlerDef) have to be added for this, about 50+. + This is potentially a good change because it is less likely to cause bugs in the future. +*/ +u32 GetBattleMoveCategory(u32 move) { - 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 GetMoveCategory(moveId); + if (gMain.inBattle) + { + if (gBattleStruct->swapDamageCategory) // Photon Geyser, Shell Side Arm, Light That Burns the Sky, Tera Blast + return SwapMoveDamageCategory(move); + if (IsZMove(move) || IsMaxMove(move)) // TODO: Might be buggy depending on when this is called. + return gBattleStruct->categoryOverride; + if (IsBattleMoveStatus(move)) + return DAMAGE_CATEGORY_STATUS; + } - if (IsBattleMoveStatus(moveId)) - return DAMAGE_CATEGORY_STATUS; - return gTypesInfo[GetBattleMoveType(moveId)].damageCategory; + if (B_PHYSICAL_SPECIAL_SPLIT <= GEN_4) + return gTypesInfo[GetBattleMoveType(move)].damageCategory; + + return GetMoveCategory(move); +} + +void SetDynamicMoveCategory(u32 battlerAtk, u32 battlerDef, u32 move) +{ + switch (GetMoveEffect(move)) + { + case EFFECT_PHOTON_GEYSER: + gBattleStruct->swapDamageCategory = (GetCategoryBasedOnStats(battlerAtk) == DAMAGE_CATEGORY_PHYSICAL); + break; + case EFFECT_SHELL_SIDE_ARM: + if (gBattleStruct->shellSideArmCategory[battlerAtk][battlerDef] == DAMAGE_CATEGORY_PHYSICAL) + gBattleStruct->swapDamageCategory = TRUE; + break; + case EFFECT_TERA_BLAST: + if (GetActiveGimmick(battlerAtk) == GIMMICK_TERA) + gBattleStruct->swapDamageCategory = GetCategoryBasedOnStats(battlerAtk) == DAMAGE_CATEGORY_PHYSICAL; + break; + case EFFECT_TERA_STARSTORM: + if (GetActiveGimmick(battlerAtk) == GIMMICK_TERA && GET_BASE_SPECIES_ID(GetMonData(GetBattlerMon(battlerAtk), MON_DATA_SPECIES)) == SPECIES_TERAPAGOS) + gBattleStruct->swapDamageCategory = GetCategoryBasedOnStats(battlerAtk) == DAMAGE_CATEGORY_PHYSICAL; + break; + default: + gBattleStruct->swapDamageCategory = FALSE; + break; + } } static bool32 TryRemoveScreens(u32 battler) @@ -11399,10 +10504,24 @@ static bool32 TryRemoveScreens(u32 battler) static bool32 IsUnnerveAbilityOnOpposingSide(u32 battler) { - if (IsAbilityOnOpposingSide(battler, ABILITY_UNNERVE) - || IsAbilityOnOpposingSide(battler, ABILITY_AS_ONE_ICE_RIDER) - || IsAbilityOnOpposingSide(battler, ABILITY_AS_ONE_SHADOW_RIDER)) - return TRUE; + for (u32 battlerDef = 0; battlerDef < gBattlersCount; battlerDef++) + { + if (battler == battlerDef || IsBattlerAlly(battler, battlerDef)) + continue; + + if (!IsBattlerAlive(battlerDef)) + continue; + + u32 ability = GetBattlerAbility(battlerDef); + switch (ability) + { + case ABILITY_UNNERVE: + case ABILITY_AS_ONE_ICE_RIDER: + case ABILITY_AS_ONE_SHADOW_RIDER: + return TRUE; + } + } + return FALSE; } @@ -11444,7 +10563,7 @@ bool32 CanFling(u32 battler) if (item == ITEM_NONE || (B_KLUTZ_FLING_INTERACTION >= GEN_5 && GetBattlerAbility(battler) == ABILITY_KLUTZ) || gFieldStatuses & STATUS_FIELD_MAGIC_ROOM - || gDisableStructs[battler].embargoTimer != 0 + || gStatuses3[battler] & STATUS3_EMBARGO || GetFlingPowerFromItemId(item) == 0 || !CanBattlerGetOrLoseItem(battler, item)) return FALSE; @@ -11566,7 +10685,7 @@ void TrySaveExchangedItem(u32 battler, u16 stolenItem) // If regular trainer battle and mon's original item matches what is being stolen, save it to be restored at end of battle if (gBattleTypeFlags & BATTLE_TYPE_TRAINER && !(gBattleTypeFlags & BATTLE_TYPE_FRONTIER) - && GetBattlerSide(battler) == B_SIDE_PLAYER + && IsOnPlayerSide(battler) && stolenItem == gBattleStruct->itemLost[B_SIDE_PLAYER][gBattlerPartyIndexes[battler]].originalItem) gBattleStruct->itemLost[B_SIDE_PLAYER][gBattlerPartyIndexes[battler]].stolen = TRUE; } @@ -11574,7 +10693,7 @@ void TrySaveExchangedItem(u32 battler, u16 stolenItem) bool32 IsBattlerAffectedByHazards(u32 battler, bool32 toxicSpikes) { bool32 ret = TRUE; - u32 holdEffect = GetBattlerHoldEffect(battler, TRUE); + enum ItemHoldEffect holdEffect = GetBattlerHoldEffect(battler, TRUE); if (toxicSpikes && holdEffect == HOLD_EFFECT_HEAVY_DUTY_BOOTS && !IS_BATTLER_OF_TYPE(battler, TYPE_POISON)) { ret = FALSE; @@ -11645,7 +10764,7 @@ bool32 CompareStat(u32 battler, u8 statId, u8 cmpTo, u8 cmpKind) return ret; } -void BufferStatChange(u32 battler, u8 statId, u8 stringId) +void BufferStatChange(u32 battler, u8 statId, enum StringID stringId) { bool32 hasContrary = (GetBattlerAbility(battler) == ABILITY_CONTRARY); @@ -11716,7 +10835,7 @@ bool32 CantPickupItem(u32 battler) // Used by RandomUniformExcept() for RNG_PICKUP if (battler == gBattlerAttacker && (B_PICKUP_WILD < GEN_9 || gBattleTypeFlags & (BATTLE_TYPE_TRAINER | BATTLE_TYPE_LINK))) return TRUE; - return !(IsBattlerAlive(battler) && GetUsedHeldItem(battler) && gBattleStruct->canPickupItem & (1u << battler)); + return !(IsBattlerAlive(battler) && GetUsedHeldItem(battler) && gBattleStruct->battlerState[battler].canPickupItem); } bool32 PickupHasValidTarget(u32 battler) @@ -11747,9 +10866,9 @@ 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 (move == MOVE_CURSE && !IS_BATTLER_OF_TYPE(battler, TYPE_GHOST)) + enum BattleMoveEffects effect = GetMoveEffect(move); + if (effect == EFFECT_CURSE && !IS_BATTLER_OF_TYPE(battler, TYPE_GHOST)) return MOVE_TARGET_USER; - u32 effect = GetMoveEffect(move); if (effect == EFFECT_EXPANDING_FORCE && IsBattlerTerrainAffected(battler, STATUS_FIELD_PSYCHIC_TERRAIN)) return MOVE_TARGET_BOTH; if (effect == EFFECT_TERA_STARSTORM && gBattleMons[battler].species == SPECIES_TERAPAGOS_STELLAR) @@ -12133,18 +11252,21 @@ bool32 CanTargetPartner(u32 battlerAtk, u32 battlerDef) && battlerDef != BATTLE_PARTNER(battlerAtk)); } -static inline bool32 DoesBattlerHaveAbilityImmunity(u32 battlerDef) +static inline bool32 DoesBattlerHaveAbilityImmunity(u32 battlerAtk, u32 battlerDef, u32 moveType) { - return (AbilityBattleEffects(ABILITYEFFECT_WOULD_BLOCK, battlerDef, 0, 0, 0) - || AbilityBattleEffects(ABILITYEFFECT_WOULD_ABSORB, battlerDef, 0, 0, 0)); + u32 abilityDef = GetBattlerAbility(battlerDef); + + return CanAbilityBlockMove(battlerAtk, battlerDef, GetBattlerAbility(battlerAtk), abilityDef, gCurrentMove, ABILITY_CHECK_TRIGGER) + || CanAbilityAbsorbMove(battlerAtk, battlerDef, abilityDef, gCurrentMove, moveType, ABILITY_CHECK_TRIGGER); } bool32 TargetFullyImmuneToCurrMove(u32 battlerAtk, u32 battlerDef) { - return ((CalcTypeEffectivenessMultiplier(gCurrentMove, GetBattleMoveType(gCurrentMove), battlerAtk, battlerDef, GetBattlerAbility(battlerDef), FALSE) == UQ_4_12(0.0)) + u32 moveType = GetBattleMoveType(gCurrentMove); + return ((CalcTypeEffectivenessMultiplier(gCurrentMove, moveType, battlerAtk, battlerDef, GetBattlerAbility(battlerDef), FALSE) == UQ_4_12(0.0)) || IsBattlerProtected(battlerAtk, battlerDef, gCurrentMove) || IsSemiInvulnerable(battlerDef, gCurrentMove) - || DoesBattlerHaveAbilityImmunity(battlerDef)); + || DoesBattlerHaveAbilityImmunity(battlerAtk, battlerDef, moveType)); } u32 GetBattleMoveType(u32 move) @@ -12241,23 +11363,6 @@ bool32 IsMoveEffectBlockedByTarget(u32 ability) return FALSE; } -u32 NumAffectedSpreadMoveTargets(void) -{ - u32 targetCount = 1; - - if (!IsDoubleSpreadMove()) - return targetCount; - - targetCount = 0; - for (u32 battler = 0; battler < gBattlersCount; battler++) - { - if (!(gBattleStruct->moveResultFlags[battler] & MOVE_RESULT_NO_EFFECT)) - targetCount++; - } - - return targetCount; -} - bool32 IsPursuitTargetSet(void) { for (u32 battler = 0; battler < gBattlersCount; battler++) @@ -12283,53 +11388,68 @@ void ClearPursuitValuesIfSet(u32 battler) bool32 HasWeatherEffect(void) { - if (IsAbilityOnField(ABILITY_CLOUD_NINE) || IsAbilityOnField(ABILITY_AIR_LOCK)) - return FALSE; + for (u32 battler = 0; battler < gBattlersCount; battler++) + { + if (!IsBattlerAlive(battler)) + continue; + + u32 ability = GetBattlerAbility(battler); + switch (ability) + { + case ABILITY_CLOUD_NINE: + case ABILITY_AIR_LOCK: + return FALSE; + } + } + return TRUE; } -bool32 IsMovePowderBlocked(u32 battlerAtk, u32 battlerDef, u32 move) +static bool32 IsAnyTargetAffected(u32 battlerAtk) { - bool32 effect = FALSE; - - if (IsPowderMove(move) && (battlerAtk != battlerDef)) + for (u32 battlerDef = 0; battlerDef < gBattlersCount; battlerDef++) { - if (B_POWDER_GRASS >= GEN_6 - && (IS_BATTLER_OF_TYPE(battlerDef, TYPE_GRASS) || GetBattlerAbility(battlerDef) == ABILITY_OVERCOAT)) - { - gBattlerAbility = battlerDef; - RecordAbilityBattle(gBattlerTarget, ABILITY_OVERCOAT); - effect = TRUE; - } - else if (GetBattlerHoldEffect(battlerDef, TRUE) == HOLD_EFFECT_SAFETY_GOGGLES) - { - RecordItemEffectBattle(battlerDef, HOLD_EFFECT_SAFETY_GOGGLES); - gLastUsedItem = gBattleMons[battlerDef].item; - effect = TRUE; - } + if (battlerAtk == battlerDef) + continue; - if (effect) - gBattlescriptCurrInstr = BattleScript_PowderMoveNoEffect; + if (!(gBattleStruct->moveResultFlags[battlerDef] & MOVE_RESULT_NO_EFFECT)) + return TRUE; + } + return FALSE; +} + +void UpdateStallMons(void) +{ + if (IsBattlerTurnDamaged(gBattlerTarget) || IsBattlerProtected(gBattlerAttacker, gBattlerTarget, gCurrentMove) || gMovesInfo[gCurrentMove].category == DAMAGE_CATEGORY_STATUS) + return; + if (!IsDoubleBattle() || gMovesInfo[gCurrentMove].target == MOVE_TARGET_SELECTED) + { + u32 moveType = GetBattleMoveType(gCurrentMove); // Probably doesn't handle dynamic move types right now + u32 abilityAtk = GetBattlerAbility(gBattlerAttacker); + u32 abilityDef = GetBattlerAbility(gBattlerTarget); + if (CanAbilityAbsorbMove(gBattlerAttacker, gBattlerTarget, abilityDef, gCurrentMove, moveType, ABILITY_CHECK_TRIGGER)) + { + gAiBattleData->playerStallMons[gBattlerPartyIndexes[gBattlerTarget]]++; + } + else if (CanAbilityBlockMove(gBattlerAttacker, gBattlerTarget, abilityAtk, abilityDef, gCurrentMove, ABILITY_CHECK_TRIGGER)) + { + gAiBattleData->playerStallMons[gBattlerPartyIndexes[gBattlerTarget]]++; + } + else if (AI_GetMoveEffectiveness(gCurrentMove, gBattlerAttacker, gBattlerTarget) == 0) + { + gAiBattleData->playerStallMons[gBattlerPartyIndexes[gBattlerTarget]]++; + } + } + // Handling for moves that target multiple opponents in doubles not handled currently +} + +bool32 TryRestoreHPBerries(u32 battler, enum ItemCaseId caseId) +{ + if (gItemsInfo[gBattleMons[battler].item].pocket == POCKET_BERRIES + || GetBattlerHoldEffect(battler, TRUE) == HOLD_EFFECT_RESTORE_HP) // Edge case for Berry Juice + { + if (ItemBattleEffects(caseId, battler, FALSE)) + return TRUE; } - - return effect; -} - -bool32 EmergencyExitCanBeTriggered(u32 battler) -{ - u32 ability = GetBattlerAbility(battler); - - if (ability != ABILITY_EMERGENCY_EXIT && ability != ABILITY_WIMP_OUT) - return FALSE; - - if (IsBattlerTurnDamaged(battler) - && IsBattlerAlive(battler) - && HadMoreThanHalfHpNowDoesnt(battler) - && (CanBattlerSwitch(battler) || !(gBattleTypeFlags & BATTLE_TYPE_TRAINER)) - && !(gBattleTypeFlags & BATTLE_TYPE_ARENA) - && CountUsablePartyMons(battler) > 0 - && !(gStatuses3[battler] & STATUS3_SKY_DROPPED)) - return TRUE; - return FALSE; } diff --git a/src/battle_util2.c b/src/battle_util2.c index 73b1dfc94a..fd2312bb5b 100644 --- a/src/battle_util2.c +++ b/src/battle_util2.c @@ -18,6 +18,11 @@ void AllocateBattleResources(void) InitTrainerHillBattleStruct(); gBattleStruct = AllocZeroed(sizeof(*gBattleStruct)); + gAiBattleData = AllocZeroed(sizeof(*gAiBattleData)); + gAiThinkingStruct = AllocZeroed(sizeof(*gAiThinkingStruct)); + gAiLogicData = AllocZeroed(sizeof(*gAiLogicData)); + gAiPartyData = AllocZeroed(sizeof(*gAiPartyData)); + gBattleHistory = AllocZeroed(sizeof(*gBattleHistory)); #if B_FLAG_SKY_BATTLE gBattleStruct->isSkyBattle = FlagGet(B_FLAG_SKY_BATTLE); @@ -28,10 +33,6 @@ void AllocateBattleResources(void) gBattleResources->battleScriptsStack = AllocZeroed(sizeof(*gBattleResources->battleScriptsStack)); gBattleResources->battleCallbackStack = AllocZeroed(sizeof(*gBattleResources->battleCallbackStack)); gBattleResources->beforeLvlUp = AllocZeroed(sizeof(*gBattleResources->beforeLvlUp)); - gBattleResources->ai = AllocZeroed(sizeof(*gBattleResources->ai)); - gBattleResources->aiData = AllocZeroed(sizeof(*gBattleResources->aiData)); - gBattleResources->aiParty = AllocZeroed(sizeof(*gBattleResources->aiParty)); - gBattleResources->battleHistory = AllocZeroed(sizeof(*gBattleResources->battleHistory)); gLinkBattleSendBuffer = AllocZeroed(BATTLE_BUFFER_LINK_SIZE); gLinkBattleRecvBuffer = AllocZeroed(BATTLE_BUFFER_LINK_SIZE); @@ -55,15 +56,16 @@ void FreeBattleResources(void) if (gBattleResources != NULL) { FREE_AND_SET_NULL(gBattleStruct); + FREE_AND_SET_NULL(gAiBattleData); + FREE_AND_SET_NULL(gAiThinkingStruct); + FREE_AND_SET_NULL(gAiLogicData); + FREE_AND_SET_NULL(gAiPartyData); + FREE_AND_SET_NULL(gBattleHistory); FREE_AND_SET_NULL(gBattleResources->secretBase); FREE_AND_SET_NULL(gBattleResources->battleScriptsStack); FREE_AND_SET_NULL(gBattleResources->battleCallbackStack); FREE_AND_SET_NULL(gBattleResources->beforeLvlUp); - FREE_AND_SET_NULL(gBattleResources->ai); - FREE_AND_SET_NULL(gBattleResources->aiData); - FREE_AND_SET_NULL(gBattleResources->aiParty); - FREE_AND_SET_NULL(gBattleResources->battleHistory); FREE_AND_SET_NULL(gBattleResources); FREE_AND_SET_NULL(gLinkBattleSendBuffer); @@ -96,19 +98,19 @@ void AdjustFriendshipOnBattleFaint(u8 battler) if (gBattleMons[opposingBattlerId].level > gBattleMons[battler].level) { if (gBattleMons[opposingBattlerId].level - gBattleMons[battler].level > 29) - AdjustFriendship(&gPlayerParty[gBattlerPartyIndexes[battler]], FRIENDSHIP_EVENT_FAINT_LARGE); + AdjustFriendship(GetBattlerMon(battler), FRIENDSHIP_EVENT_FAINT_LARGE); else - AdjustFriendship(&gPlayerParty[gBattlerPartyIndexes[battler]], FRIENDSHIP_EVENT_FAINT_SMALL); + AdjustFriendship(GetBattlerMon(battler), FRIENDSHIP_EVENT_FAINT_SMALL); } else { - AdjustFriendship(&gPlayerParty[gBattlerPartyIndexes[battler]], FRIENDSHIP_EVENT_FAINT_SMALL); + AdjustFriendship(GetBattlerMon(battler), FRIENDSHIP_EVENT_FAINT_SMALL); } } void SwitchPartyOrderInGameMulti(u8 battler, u8 arg1) { - if (GetBattlerSide(battler) != B_SIDE_OPPONENT) + if (IsOnPlayerSide(battler)) { s32 i; for (i = 0; i < (int)ARRAY_COUNT(gBattlePartyCurrentOrder); i++) diff --git a/src/battle_z_move.c b/src/battle_z_move.c index b7c0076fb2..53df466af8 100644 --- a/src/battle_z_move.c +++ b/src/battle_z_move.c @@ -103,6 +103,7 @@ static const u8 sText_FollowMe[] = _("Follow Me"); static const u8 sText_RecoverHP[] = _("Recover HP"); static const u8 sText_HealAllyHP[] = _("Heal Replacement HP"); static const u8 sText_PowerColon[] = _("Power: "); +static const u8 sText_NoAdditionalEffect[] = _("No Additional Effect"); // Functions bool32 IsZMove(u32 move) @@ -112,7 +113,7 @@ bool32 IsZMove(u32 move) bool32 CanUseZMove(u32 battler) { - u32 holdEffect = GetBattlerHoldEffect(battler, FALSE); + enum ItemHoldEffect holdEffect = GetBattlerHoldEffect(battler, FALSE); // Check if Player has Z-Power Ring. if (!TESTING && (battler == B_POSITION_PLAYER_LEFT @@ -143,7 +144,7 @@ bool32 CanUseZMove(u32 battler) u32 GetUsableZMove(u32 battler, u32 move) { u32 item = gBattleMons[battler].item; - u32 holdEffect = GetBattlerHoldEffect(battler, FALSE); + enum ItemHoldEffect holdEffect = GetBattlerHoldEffect(battler, FALSE); if (holdEffect == HOLD_EFFECT_Z_CRYSTAL) { @@ -167,7 +168,7 @@ void ActivateZMove(u32 battler) bool32 IsViableZMove(u32 battler, u32 move) { u32 item; - u32 holdEffect = GetBattlerHoldEffect(battler, FALSE); + enum ItemHoldEffect holdEffect = GetBattlerHoldEffect(battler, FALSE); int moveSlotIndex; item = gBattleMons[battler].item; @@ -352,6 +353,10 @@ bool32 MoveSelectionDisplayZMove(u16 zmove, u32 battler) PREPARE_STAT_BUFFER(gBattleTextBuff1, zEffect - Z_EFFECT_ATK_UP_3 + 1); ExpandBattleTextBuffPlaceholders(gBattleTextBuff1, gDisplayedStringBattle + 4); break; + default: + if (B_SHOW_USELESS_Z_MOVE_INFO == TRUE) + StringCopy(gDisplayedStringBattle, sText_NoAdditionalEffect); + break; } BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_MOVE_NAME_3); @@ -359,7 +364,7 @@ bool32 MoveSelectionDisplayZMove(u16 zmove, u32 battler) gDisplayedStringBattle[1] = CHAR_HYPHEN; StringCopy(gDisplayedStringBattle + 2, GetMoveName(move)); } - else if (zmove == MOVE_EXTREME_EVOBOOST) + else if (GetMoveEffect(zmove) == EFFECT_EXTREME_EVOBOOST) { // Damaging move -> status z move StringCopy(gDisplayedStringBattle, sText_StatsPlus2); diff --git a/src/berry_blender.c b/src/berry_blender.c index 85bb173dd9..5475208126 100644 --- a/src/berry_blender.c +++ b/src/berry_blender.c @@ -237,9 +237,6 @@ static void PrintMadePokeblockString(struct Pokeblock *, u8 *); static bool32 TryAddContestLinkTvShow(struct Pokeblock *, struct TvBlenderStruct *); EWRAM_DATA static struct BerryBlender *sBerryBlender = NULL; -EWRAM_DATA static s32 sDebug_PokeblockFactorFlavors[FLAVOR_COUNT] = {0}; -EWRAM_DATA static s32 sDebug_PokeblockFactorFlavorsAfterRPM[FLAVOR_COUNT] = {0}; -EWRAM_DATA static u32 sDebug_PokeblockFactorRPM = 0; static s16 sPokeblockFlavors[FLAVOR_COUNT + 1]; // + 1 for feel static s16 sPokeblockPresentFlavors[FLAVOR_COUNT + 1]; @@ -2434,11 +2431,7 @@ static void CalculatePokeblock(struct BlenderBerry *berries, struct Pokeblock *p } } - for (i = 0; i < FLAVOR_COUNT; i++) - sDebug_PokeblockFactorFlavors[i] = sPokeblockFlavors[i]; - // Factor in max RPM and round - sDebug_PokeblockFactorRPM = multiuseVar = maxRPM / 333 + 100; for (i = 0; i < FLAVOR_COUNT; i++) { s32 remainder; @@ -2451,9 +2444,6 @@ static void CalculatePokeblock(struct BlenderBerry *berries, struct Pokeblock *p sPokeblockFlavors[i] = flavor; } - for (i = 0; i < FLAVOR_COUNT; i++) - sDebug_PokeblockFactorFlavorsAfterRPM[i] = sPokeblockFlavors[i]; - // Calculate color and feel of pokeblock pokeblock->color = CalculatePokeblockColor(berries, &sPokeblockFlavors[0], numPlayers, numNegatives); sPokeblockFlavors[FLAVOR_COUNT] = (sPokeblockFlavors[FLAVOR_COUNT] / numPlayers) - numPlayers; diff --git a/src/berry_tag_screen.c b/src/berry_tag_screen.c index b47366a971..7bc486f3fa 100644 --- a/src/berry_tag_screen.c +++ b/src/berry_tag_screen.c @@ -358,7 +358,7 @@ static bool8 LoadBerryTagGfx(void) sBerryTag->gfxState++; break; case 4: - LoadCompressedPalette(gBerryCheck_Pal, BG_PLTT_ID(0), 6 * PLTT_SIZE_4BPP); + LoadPalette(gBerryCheck_Pal, BG_PLTT_ID(0), 6 * PLTT_SIZE_4BPP); sBerryTag->gfxState++; break; case 5: @@ -366,7 +366,7 @@ static bool8 LoadBerryTagGfx(void) sBerryTag->gfxState++; break; default: - LoadCompressedSpritePalette(&gBerryCheckCirclePaletteTable); + LoadSpritePalette(&gBerryCheckCirclePaletteTable); return TRUE; // done } diff --git a/src/clock.c b/src/clock.c index d122fc782c..f0a632c9ff 100644 --- a/src/clock.c +++ b/src/clock.c @@ -1,4 +1,5 @@ #include "global.h" +#include "clock.h" #include "event_data.h" #include "rtc.h" #include "time_events.h" @@ -15,7 +16,6 @@ static void UpdatePerDay(struct Time *localTime); static void UpdatePerMinute(struct Time *localTime); -static void FormChangeTimeUpdate(); void InitTimeBasedEvents(void) { @@ -72,12 +72,11 @@ static void UpdatePerMinute(struct Time *localTime) { BerryTreeTimeUpdate(minutes); gSaveBlock2Ptr->lastBerryTreeUpdate = *localTime; - FormChangeTimeUpdate(); } } } -static void FormChangeTimeUpdate() +void FormChangeTimeUpdate() { s32 i; for (i = 0; i < PARTY_SIZE; i++) diff --git a/src/contest.c b/src/contest.c index a31dc0e200..da11859dee 100644 --- a/src/contest.c +++ b/src/contest.c @@ -667,7 +667,7 @@ static const struct CompressedSpriteSheet sSpriteSheet_JudgeSymbols = .tag = TAG_JUDGE_SYMBOLS_GFX }; -static const struct CompressedSpritePalette sSpritePalette_JudgeSymbols = +static const struct SpritePalette sSpritePalette_JudgeSymbols = { .data = gContestJudgeSymbolsPal, .tag = TAG_CONTEST_SYMBOLS_PAL @@ -1137,7 +1137,7 @@ void LoadContestBgAfterMoveAnim(void) LZDecompressVram(gContestAudienceGfx, (void *)(BG_SCREEN_ADDR(4))); CopyToBgTilemapBuffer(3, gContestAudienceTilemap, 0, 0); CopyBgTilemapBufferToVram(3); - LoadCompressedPalette(gContestInterfaceAudiencePalette, BG_PLTT_OFFSET, BG_PLTT_SIZE); + LoadPalette(gContestInterfaceAudiencePalette, BG_PLTT_OFFSET, BG_PLTT_SIZE); LoadContestPalettes(); for (i = 0; i < CONTESTANT_COUNT; i++) { @@ -1431,7 +1431,7 @@ static bool8 SetupContestGraphics(u8 *stateVar) DmaCopy32Defvars(3, gContestResources->contestBgTilemaps[2], eContestTempSave.savedJunk, sizeof(eContestTempSave.savedJunk)); break; case 5: - LoadCompressedPalette(gContestInterfaceAudiencePalette, BG_PLTT_OFFSET, BG_PLTT_SIZE); + LoadPalette(gContestInterfaceAudiencePalette, BG_PLTT_OFFSET, BG_PLTT_SIZE); CpuCopy32(&gPlttBufferUnfaded[BG_PLTT_ID(8)], tempPalette1, PLTT_SIZE_4BPP); CpuCopy32(&gPlttBufferUnfaded[BG_PLTT_ID(5 + gContestPlayerMonIndex)], tempPalette2, PLTT_SIZE_4BPP); CpuCopy32(tempPalette2, &gPlttBufferUnfaded[BG_PLTT_ID(8)], PLTT_SIZE_4BPP); @@ -3198,7 +3198,7 @@ static u8 CreateJudgeSprite(void) u8 spriteId; LoadCompressedSpriteSheet(&sSpriteSheet_Judge); - LoadCompressedPalette(gContest2Pal, OBJ_PLTT_ID(1), PLTT_SIZE_4BPP); + LoadPalette(gContest2Pal, OBJ_PLTT_ID(1), PLTT_SIZE_4BPP); spriteId = CreateSprite(&sSpriteTemplate_Judge, 112, 36, 30); gSprites[spriteId].oam.paletteNum = 1; gSprites[spriteId].callback = SpriteCallbackDummy; @@ -3210,7 +3210,7 @@ static u8 CreateJudgeSpeechBubbleSprite(void) u8 spriteId; LoadCompressedSpriteSheet(&sSpriteSheet_JudgeSymbols); - LoadCompressedSpritePalette(&sSpritePalette_JudgeSymbols); + LoadSpritePalette(&sSpritePalette_JudgeSymbols); spriteId = CreateSprite(&sSpriteTemplate_JudgeSpeechBubble, 96, 10, 29); gSprites[spriteId].invisible = TRUE; gSprites[spriteId].data[0] = gSprites[spriteId].oam.tileNum; @@ -3224,7 +3224,7 @@ static u8 CreateContestantSprite(u16 species, bool8 isShiny, u32 personality, u3 HandleLoadSpecialPokePic(FALSE, gMonSpritesGfxPtr->spritesGfx[B_POSITION_PLAYER_LEFT], species, personality); - LoadCompressedPalette(GetMonSpritePalFromSpeciesAndPersonality(species, isShiny, personality), OBJ_PLTT_ID(2), PLTT_SIZE_4BPP); + LoadPalette(GetMonSpritePalFromSpeciesAndPersonality(species, isShiny, personality), OBJ_PLTT_ID(2), PLTT_SIZE_4BPP); SetMultiuseSpriteTemplateToPokemon(species, B_POSITION_PLAYER_LEFT); spriteId = CreateSprite(&gMultiuseSpriteTemplate, 0x70, GetBattlerSpriteFinal_Y(2, species, FALSE), 30); diff --git a/src/contest_util.c b/src/contest_util.c index 8c9f1c3b66..66d0b575fe 100644 --- a/src/contest_util.c +++ b/src/contest_util.c @@ -274,7 +274,7 @@ static const struct CompressedSpriteSheet sSpriteSheet_Confetti = }; -static const struct CompressedSpritePalette sSpritePalette_Confetti = +static const struct SpritePalette sSpritePalette_Confetti = { .data = gConfetti_Pal, .tag = TAG_CONFETTI @@ -457,7 +457,7 @@ static void LoadContestResultsBgGfx(void) CopyToBgTilemapBuffer(2, gContestResults_Interface_Tilemap, 0, 0); CopyToBgTilemapBuffer(0, gContestResults_WinnerBanner_Tilemap, 0, 0); LoadContestResultsTitleBarTilemaps(); - LoadCompressedPalette(gContestResults_Pal, BG_PLTT_OFFSET, BG_PLTT_SIZE); + LoadPalette(gContestResults_Pal, BG_PLTT_OFFSET, BG_PLTT_SIZE); LoadPalette(sResultsTextWindow_Pal, BG_PLTT_ID(15), sizeof(sResultsTextWindow_Pal)); for (i = 0; i < CONTESTANT_COUNT; i++) @@ -898,7 +898,7 @@ static void Task_ShowWinnerMonBanner(u8 taskId) species, personality); - LoadCompressedSpritePaletteWithTag(GetMonSpritePalFromSpeciesAndPersonality(species, isShiny, personality), species); + LoadSpritePaletteWithTag(GetMonSpritePalFromSpeciesAndPersonality(species, isShiny, personality), species); SetMultiuseSpriteTemplateToPokemon(species, B_POSITION_OPPONENT_LEFT); gMultiuseSpriteTemplate.paletteTag = species; spriteId = CreateSprite(&gMultiuseSpriteTemplate, DISPLAY_WIDTH + 32, DISPLAY_HEIGHT / 2, 10); @@ -907,7 +907,7 @@ static void Task_ShowWinnerMonBanner(u8 taskId) gSprites[spriteId].callback = SpriteCB_WinnerMonSlideIn; sContestResults->data->winnerMonSpriteId = spriteId; LoadCompressedSpriteSheet(&sSpriteSheet_Confetti); - LoadCompressedSpritePalette(&sSpritePalette_Confetti); + LoadSpritePalette(&sSpritePalette_Confetti); CreateTask(Task_CreateConfetti, 10); gTasks[taskId].tState++; break; @@ -2583,7 +2583,7 @@ void ShowContestEntryMonPic(void) gTasks[taskId].data[1] = species; HandleLoadSpecialPokePic(TRUE, gMonSpritesGfxPtr->spritesGfx[B_POSITION_OPPONENT_LEFT], species, personality); - LoadCompressedSpritePaletteWithTag(GetMonSpritePalFromSpeciesAndPersonality(species, isShiny, personality), species); + LoadSpritePaletteWithTag(GetMonSpritePalFromSpeciesAndPersonality(species, isShiny, personality), species); SetMultiuseSpriteTemplateToPokemon(species, B_POSITION_OPPONENT_LEFT); gMultiuseSpriteTemplate.paletteTag = species; spriteId = CreateSprite(&gMultiuseSpriteTemplate, (left + 1) * 8 + 32, (top * 8) + 40, 0); diff --git a/src/data/.gitignore b/src/data/.gitignore index 371e10c56e..791e2f25f1 100755 --- a/src/data/.gitignore +++ b/src/data/.gitignore @@ -2,3 +2,4 @@ heal_locations.h wild_encounters.h region_map/region_map_entries.h region_map/porymap_config.json +tutor_moves.h \ No newline at end of file diff --git a/src/data/abilities.h b/src/data/abilities.h index 9e60122d2c..f9a3adc96c 100644 --- a/src/data/abilities.h +++ b/src/data/abilities.h @@ -194,7 +194,7 @@ const struct Ability gAbilitiesInfo[ABILITIES_COUNT] = [ABILITY_WONDER_GUARD] = { .name = _("Wonder Guard"), - .description = COMPOUND_STRING("“Supereffective” hits."), + .description = COMPOUND_STRING("Only “Supereffective” hits."), .aiRating = 10, .cantBeCopied = TRUE, .cantBeSwapped = TRUE, @@ -2176,7 +2176,7 @@ const struct Ability gAbilitiesInfo[ABILITIES_COUNT] = [ABILITY_GOOD_AS_GOLD] = { .name = _("Good as Gold"), - .description = COMPOUND_STRING("Avoids status problems."), + .description = COMPOUND_STRING("Avoids status moves."), .aiRating = 8, .breakable = TRUE, }, diff --git a/src/data/battle_anim.h b/src/data/battle_anim.h index ad0d2d13d8..038f338cb2 100644 --- a/src/data/battle_anim.h +++ b/src/data/battle_anim.h @@ -1470,7 +1470,7 @@ const struct CompressedSpriteSheet gBattleAnimPicTable[] = {gBattleAnimSpriteGfx_SaltParticle, 0x400, ANIM_TAG_SALT_PARTICLE}, }; -const struct CompressedSpritePalette gBattleAnimPaletteTable[] = +const struct SpritePalette gBattleAnimPaletteTable[] = { {gBattleAnimSpritePal_Bone, ANIM_TAG_BONE}, {gBattleAnimSpritePal_Spark, ANIM_TAG_SPARK}, @@ -2000,9 +2000,9 @@ const struct BattleAnimBackground gBattleAnimBackgroundTable[] = [BG_BOLT_STRIKE] = {gBattleAnimBgImage_BoltStrike, gBattleAnimBgPalette_BoltStrike, gBattleAnimBgTilemap_BoltStrike}, [BG_ZMOVE_ACTIVATE] = {gBattleAnimBgImage_ZMoveActivate, gBattleAnimBgPalette_ZMoveActivate, gBattleAnimBgTilemap_ZMoveActivate}, [BG_TECTONIC_RAGE] = {gBattleAnimBgImage_InAir, gBattleAnimBgPalette_TectonicRage, gBattleAnimBgTilemap_InAir}, - [BG_BLUE_SKY_DAY] = {gBattleAnimBgImage_SkyDay, gBattleAnimBgPalette_SkyDay, gBattleAnimBgTilemap_SkyDay}, - [BG_BLUE_SKY_AFTERNOON] = {gBattleAnimBgImage_SkyDay, gBattleAnimBgPalette_SkyAfternoon, gBattleAnimBgTilemap_SkyDay}, - [BG_BLUE_SKY_NIGHT] = {gBattleAnimBgImage_SkyDay, gBattleAnimBgPalette_SkyNight, gBattleAnimBgTilemap_SkyDay}, + [BG_ROCK_FIELD_DAY] = {gBattleAnimBgImage_RockField, gBattleAnimBgPalette_RockDay, gBattleAnimBgTilemap_RockField}, + [BG_ROCK_FIELD_AFTERNOON] = {gBattleAnimBgImage_RockField, gBattleAnimBgPalette_RockAfternoon, gBattleAnimBgTilemap_RockField}, + [BG_ROCK_FIELD_NIGHT] = {gBattleAnimBgImage_RockField, gBattleAnimBgPalette_RockNight, gBattleAnimBgTilemap_RockField}, [BG_ZMOVE_MOUNTAIN] = {gBattleAnimBgImage_ZMoveMountain, gBattleAnimBgPalette_ZMoveMountain, gBattleAnimBgTilemap_ZMoveMountain}, [BG_NEVERENDING_NIGHTMARE] = {gBattleAnimBgImage_NeverendingNightmare, gBattleAnimBgPalette_NeverendingNightmare, gBattleAnimBgTilemap_NeverendingNightmare}, [BG_WATER_PULSE] = {gBattleAnimBgImage_WaterPulse, gBattleAnimBgPalette_WaterPulse, gBattleAnimBgTilemap_WaterPulse}, diff --git a/src/data/battle_frontier/battle_pyramid_wild_requirements.h b/src/data/battle_frontier/battle_pyramid_wild_requirements.h index b559daf037..fd5695344a 100644 --- a/src/data/battle_frontier/battle_pyramid_wild_requirements.h +++ b/src/data/battle_frontier/battle_pyramid_wild_requirements.h @@ -13,7 +13,7 @@ struct BattlePyramidRequirement { u8 nEvoItems; }; -// EFFECT_PARALYZE, MOVE_EFFECT_PARALYZE (30% or more) +// MOVE_EFFECT_PARALYZE (30% or more) static const u16 sParalyzingMoves[] = { //MOVE_THUNDER_PUNCH, MOVE_BODY_SLAM, @@ -35,7 +35,7 @@ static const u16 sParalyzingMoves[] = { MOVE_COMBAT_TORQUE, }; -// MOVE_EFFECT_POISON (30% or more), EFFECT_POISON, MOVE_EFFECT_TOXIC, EFFECT_TOXIC, EFFECT_TOXIC_THREAD +// MOVE_EFFECT_POISON (30% or more), MOVE_EFFECT_TOXIC, EFFECT_TOXIC_THREAD static const u16 sPoisoningMoves[] = { MOVE_POISON_STING, //MOVE_TWINEEDLE, @@ -57,7 +57,7 @@ static const u16 sPoisoningMoves[] = { MOVE_TOXIC_THREAD, }; -// MOVE_EFFECT_BURN, EFFECT_WILL_O_WISP +// MOVE_EFFECT_BURN static const u16 sBurningMoves[] = { MOVE_WILL_O_WISP, //MOVE_EMBER, diff --git a/src/data/battle_move_effects.h b/src/data/battle_move_effects.h index 6b4741ab5e..06b1fb3fd6 100644 --- a/src/data/battle_move_effects.h +++ b/src/data/battle_move_effects.h @@ -16,10 +16,10 @@ const struct BattleMoveEffect gBattleMoveEffects[NUM_BATTLE_MOVE_EFFECTS] = .battleTvScore = 1, }, - [EFFECT_SLEEP] = + [EFFECT_NON_VOLATILE_STATUS] = { - .battleScript = BattleScript_EffectSleep, - .battleTvScore = 1, + .battleScript = BattleScript_EffectNonVolatileStatus, + .battleTvScore = 0, // Handled within the battle TV functions }, [EFFECT_ABSORB] = @@ -183,13 +183,6 @@ const struct BattleMoveEffect gBattleMoveEffects[NUM_BATTLE_MOVE_EFFECTS] = .encourageEncore = TRUE, }, - [EFFECT_TOXIC] = - { - .battleScript = BattleScript_EffectToxic, - .battleTvScore = 5, - .encourageEncore = TRUE, - }, - [EFFECT_LIGHT_SCREEN] = { .battleScript = BattleScript_EffectLightScreen, @@ -218,14 +211,14 @@ const struct BattleMoveEffect gBattleMoveEffects[NUM_BATTLE_MOVE_EFFECTS] = [EFFECT_SUPER_FANG] = { - .battleScript = BattleScript_EffectSuperFang, + .battleScript = BattleScript_EffectHit, .battleTvScore = 5, .encourageEncore = TRUE, }, [EFFECT_FIXED_DAMAGE_ARG] = { - .battleScript = BattleScript_EffectFixedDamageArg, + .battleScript = BattleScript_EffectHit, .battleTvScore = 1, }, @@ -366,20 +359,6 @@ const struct BattleMoveEffect gBattleMoveEffects[NUM_BATTLE_MOVE_EFFECTS] = .encourageEncore = TRUE, }, - [EFFECT_POISON] = - { - .battleScript = BattleScript_EffectPoison, - .battleTvScore = 4, - .encourageEncore = TRUE, - }, - - [EFFECT_PARALYZE] = - { - .battleScript = BattleScript_EffectParalyze, - .battleTvScore = 4, - .encourageEncore = TRUE, - }, - [EFFECT_TWO_TURNS_ATTACK] = { .battleScript = BattleScript_EffectTwoTurnsAttack, @@ -454,13 +433,13 @@ const struct BattleMoveEffect gBattleMoveEffects[NUM_BATTLE_MOVE_EFFECTS] = [EFFECT_LEVEL_DAMAGE] = { - .battleScript = BattleScript_EffectLevelDamage, + .battleScript = BattleScript_EffectHit, .battleTvScore = 2, }, [EFFECT_PSYWAVE] = { - .battleScript = BattleScript_EffectPsywave, + .battleScript = BattleScript_EffectHit, .battleTvScore = 1, }, @@ -792,12 +771,6 @@ const struct BattleMoveEffect gBattleMoveEffects[NUM_BATTLE_MOVE_EFFECTS] = .twoTurnEffect = TRUE, }, - [EFFECT_THUNDER] = - { - .battleScript = BattleScript_EffectHit, - .battleTvScore = 1, - }, - [EFFECT_TELEPORT] = { .battleScript = BattleScript_EffectTeleport, @@ -893,13 +866,6 @@ const struct BattleMoveEffect gBattleMoveEffects[NUM_BATTLE_MOVE_EFFECTS] = .battleTvScore = 7, }, - [EFFECT_WILL_O_WISP] = - { - .battleScript = BattleScript_EffectWillOWisp, - .battleTvScore = 5, - .encourageEncore = TRUE, - }, - [EFFECT_MEMENTO] = { .battleScript = BattleScript_EffectMemento, @@ -1080,7 +1046,7 @@ const struct BattleMoveEffect gBattleMoveEffects[NUM_BATTLE_MOVE_EFFECTS] = [EFFECT_HIT_ESCAPE] = { - .battleScript = BattleScript_EffectHitEscape, + .battleScript = BattleScript_EffectHit, .battleTvScore = 4, }, @@ -1909,7 +1875,7 @@ const struct BattleMoveEffect gBattleMoveEffects[NUM_BATTLE_MOVE_EFFECTS] = [EFFECT_PHOTON_GEYSER] = { - .battleScript = BattleScript_EffectDynamicCategory, + .battleScript = BattleScript_EffectHit, .battleTvScore = 0, // TODO: Assign points }, @@ -2146,18 +2112,6 @@ const struct BattleMoveEffect gBattleMoveEffects[NUM_BATTLE_MOVE_EFFECTS] = .battleTvScore = 0, // TODO: Assign points }, - [EFFECT_BLIZZARD] = - { - .battleScript = BattleScript_EffectHit, - .battleTvScore = 0, // TODO: Assign points - }, - - [EFFECT_RAIN_ALWAYS_HIT] = - { - .battleScript = BattleScript_EffectHit, - .battleTvScore = 0, // TODO: Assign points - }, - [EFFECT_SHED_TAIL] = { .battleScript = BattleScript_EffectShedTail, @@ -2201,13 +2155,13 @@ const struct BattleMoveEffect gBattleMoveEffects[NUM_BATTLE_MOVE_EFFECTS] = [EFFECT_TERA_BLAST] = { - .battleScript = BattleScript_EffectDynamicCategory, + .battleScript = BattleScript_EffectHit, .battleTvScore = 0, // TODO: Assign points }, [EFFECT_TERA_STARSTORM] = { - .battleScript = BattleScript_EffectDynamicCategory, + .battleScript = BattleScript_EffectHit, .battleTvScore = 0, // TODO: Assign points }, @@ -2238,7 +2192,7 @@ const struct BattleMoveEffect gBattleMoveEffects[NUM_BATTLE_MOVE_EFFECTS] = [EFFECT_RAPID_SPIN] = { .battleScript = BattleScript_EffectHit, - .battleTvScore = 0, // TODO: Assign points + .battleTvScore = 2, }, [EFFECT_SPECTRAL_THIEF] = @@ -2246,4 +2200,16 @@ const struct BattleMoveEffect gBattleMoveEffects[NUM_BATTLE_MOVE_EFFECTS] = .battleScript = BattleScript_EffectSpectralThief, .battleTvScore = 0, // TODO: Assign points }, + + [EFFECT_RECOIL] = + { + .battleScript = BattleScript_EffectHit, + .battleTvScore = 0, // TODO: Assign points + }, + + [EFFECT_SMACK_DOWN] = + { + .battleScript = BattleScript_EffectHit, + .battleTvScore = 0, // TODO: Assign points + }, }; diff --git a/src/data/decoration/icon.h b/src/data/decoration/icon.h index 03a0e06695..f40ac1c078 100644 --- a/src/data/decoration/icon.h +++ b/src/data/decoration/icon.h @@ -1,4 +1,4 @@ -const u32 *const gDecorIconTable[][2] = +const struct DecorItem gDecorIconTable[] = { [DECOR_NONE] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark}, [DECOR_SMALL_DESK] = {NULL, NULL}, 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 ee00023a51..7173ffbe58 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,7 @@ 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_BallLight; extern const struct SpriteTemplate gFieldEffectObjectTemplate_SlitherTracks; extern const struct SpriteTemplate gFieldEffectObjectTemplate_BugTracks; extern const struct SpriteTemplate gFieldEffectObjectTemplate_SpotTracks; diff --git a/src/data/field_effects/field_effect_objects.h b/src/data/field_effects/field_effect_objects.h index ecea0350c5..5638ea46e2 100755 --- a/src/data/field_effects/field_effect_objects.h +++ b/src/data/field_effects/field_effect_objects.h @@ -28,8 +28,56 @@ static const struct SpriteFrameImage sPicTable_ShadowExtraLarge[] = { obj_frame_tiles(gFieldEffectObjectPic_ShadowExtraLarge), }; -const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowSmall = { +const struct SpriteFrameImage gFieldEffectObjectPicTable_BallLight[] = { + obj_frame_tiles(gFieldEffectObjectPic_BallLight), +}; + +const struct SpriteFrameImage gFieldEffectObjectPicTable_PokeCenterLight[] = { + obj_frame_tiles(gFieldEffectObjectPic_PokeCenterLight), +}; + +const struct SpriteFrameImage gFieldEffectObjectPicTable_MartLight[] = { + obj_frame_tiles(gFieldEffectObjectPic_MartLight), +}; + +const struct SpriteTemplate gFieldEffectObjectTemplate_BallLight = { + .tileTag = OBJ_EVENT_PAL_TAG_LIGHT, + .paletteTag = OBJ_EVENT_PAL_TAG_LIGHT, + .oam = &gObjectEventBaseOam_32x32, + .anims = sAnimTable_Inanimate, + .images = gFieldEffectObjectPicTable_BallLight, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = UpdateLightSprite, +}; + +const struct SpriteTemplate gFieldEffectObjectTemplate_PokeCenterLight = { .tileTag = TAG_NONE, + .paletteTag = OBJ_EVENT_PAL_TAG_NEON_LIGHT, + .oam = &gObjectEventBaseOam_16x16, + .anims = sAnimTable_Inanimate, + .images = gFieldEffectObjectPicTable_PokeCenterLight, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = UpdateLightSprite, +}; + +const struct SpriteTemplate gFieldEffectObjectTemplate_MartLight = { + .tileTag = TAG_NONE, + .paletteTag = OBJ_EVENT_PAL_TAG_NEON_LIGHT, + .oam = &gObjectEventBaseOam_16x16, + .anims = sAnimTable_Inanimate, + .images = gFieldEffectObjectPicTable_MartLight, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = UpdateLightSprite, +}; + +const struct SpriteTemplate *const gFieldEffectLightTemplates[] = { + &gFieldEffectObjectTemplate_BallLight, + &gFieldEffectObjectTemplate_PokeCenterLight, + &gFieldEffectObjectTemplate_MartLight, +}; + +const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowSmall = { + .tileTag = FLDEFF_TILE_TAG_SHADOW_SMALL, .paletteTag = TAG_WEATHER_START, .oam = &gObjectEventBaseOam_8x8, .anims = sAnimTable_Shadow, @@ -39,7 +87,7 @@ const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowSmall = { }; const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowMedium = { - .tileTag = TAG_NONE, + .tileTag = FLDEFF_TILE_TAG_SHADOW_MEDIUM, .paletteTag = TAG_WEATHER_START, .oam = &gObjectEventBaseOam_16x8, .anims = sAnimTable_Shadow, @@ -49,7 +97,7 @@ const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowMedium = { }; const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowLarge = { - .tileTag = TAG_NONE, + .tileTag = FLDEFF_TILE_TAG_SHADOW_LARGE, .paletteTag = TAG_WEATHER_START, .oam = &gObjectEventBaseOam_32x8, .anims = sAnimTable_Shadow, @@ -59,7 +107,7 @@ const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowLarge = { }; const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowExtraLarge = { - .tileTag = TAG_NONE, + .tileTag = FLDEFF_TILE_TAG_SHADOW_EXTRA_LARGE, .paletteTag = TAG_WEATHER_START, .oam = &gObjectEventBaseOam_64x32, .anims = sAnimTable_Shadow, diff --git a/src/data/graphics/battle_environment.h b/src/data/graphics/battle_environment.h index d1abc026de..29339011f5 100644 --- a/src/data/graphics/battle_environment.h +++ b/src/data/graphics/battle_environment.h @@ -1,39 +1,39 @@ const u32 gBattleEnvironmentTiles_TallGrass[] = INCBIN_U32("graphics/battle_environment/tall_grass/tiles.4bpp.lz"); -const u32 gBattleEnvironmentPalette_TallGrass[] = INCBIN_U32("graphics/battle_environment/tall_grass/palette.gbapal.lz"); +const u16 gBattleEnvironmentPalette_TallGrass[] = INCBIN_U16("graphics/battle_environment/tall_grass/palette.gbapal"); const u32 gBattleEnvironmentTilemap_TallGrass[] = INCBIN_U32("graphics/battle_environment/tall_grass/map.bin.lz"); const u32 gBattleEnvironmentTiles_LongGrass[] = INCBIN_U32("graphics/battle_environment/long_grass/tiles.4bpp.lz"); -const u32 gBattleEnvironmentPalette_LongGrass[] = INCBIN_U32("graphics/battle_environment/long_grass/palette.gbapal.lz"); +const u16 gBattleEnvironmentPalette_LongGrass[] = INCBIN_U16("graphics/battle_environment/long_grass/palette.gbapal"); const u32 gBattleEnvironmentTilemap_LongGrass[] = INCBIN_U32("graphics/battle_environment/long_grass/map.bin.lz"); const u32 gBattleEnvironmentTiles_Sand[] = INCBIN_U32("graphics/battle_environment/sand/tiles.4bpp.lz"); -const u32 gBattleEnvironmentPalette_Sand[] = INCBIN_U32("graphics/battle_environment/sand/palette.gbapal.lz"); +const u16 gBattleEnvironmentPalette_Sand[] = INCBIN_U16("graphics/battle_environment/sand/palette.gbapal"); const u32 gBattleEnvironmentTilemap_Sand[] = INCBIN_U32("graphics/battle_environment/sand/map.bin.lz"); const u32 gBattleEnvironmentTiles_Underwater[] = INCBIN_U32("graphics/battle_environment/underwater/tiles.4bpp.lz"); -const u32 gBattleEnvironmentPalette_Underwater[] = INCBIN_U32("graphics/battle_environment/underwater/palette.gbapal.lz"); +const u16 gBattleEnvironmentPalette_Underwater[] = INCBIN_U16("graphics/battle_environment/underwater/palette.gbapal"); const u32 gBattleEnvironmentTilemap_Underwater[] = INCBIN_U32("graphics/battle_environment/underwater/map.bin.lz"); const u32 gBattleEnvironmentTiles_Water[] = INCBIN_U32("graphics/battle_environment/water/tiles.4bpp.lz"); -const u32 gBattleEnvironmentPalette_Water[] = INCBIN_U32("graphics/battle_environment/water/palette.gbapal.lz"); +const u16 gBattleEnvironmentPalette_Water[] = INCBIN_U16("graphics/battle_environment/water/palette.gbapal"); const u32 gBattleEnvironmentTilemap_Water[] = INCBIN_U32("graphics/battle_environment/water/map.bin.lz"); const u32 gBattleEnvironmentTiles_PondWater[] = INCBIN_U32("graphics/battle_environment/pond_water/tiles.4bpp.lz"); -const u32 gBattleEnvironmentPalette_PondWater[] = INCBIN_U32("graphics/battle_environment/pond_water/palette.gbapal.lz"); +const u16 gBattleEnvironmentPalette_PondWater[] = INCBIN_U16("graphics/battle_environment/pond_water/palette.gbapal"); const u32 gBattleEnvironmentTilemap_PondWater[] = INCBIN_U32("graphics/battle_environment/pond_water/map.bin.lz"); const u32 gBattleEnvironmentTiles_Rock[] = INCBIN_U32("graphics/battle_environment/rock/tiles.4bpp.lz"); -const u32 gBattleEnvironmentPalette_Rock[] = INCBIN_U32("graphics/battle_environment/rock/palette.gbapal.lz"); +const u16 gBattleEnvironmentPalette_Rock[] = INCBIN_U16("graphics/battle_environment/rock/palette.gbapal"); const u32 gBattleEnvironmentTilemap_Rock[] = INCBIN_U32("graphics/battle_environment/rock/map.bin.lz"); const u32 gBattleEnvironmentTiles_Cave[] = INCBIN_U32("graphics/battle_environment/cave/tiles.4bpp.lz"); -const u32 gBattleEnvironmentPalette_Cave[] = INCBIN_U32("graphics/battle_environment/cave/palette.gbapal.lz"); +const u16 gBattleEnvironmentPalette_Cave[] = INCBIN_U16("graphics/battle_environment/cave/palette.gbapal"); const u32 gBattleEnvironmentTilemap_Cave[] = INCBIN_U32("graphics/battle_environment/cave/map.bin.lz"); -const u32 gBattleEnvironmentPalette_Plain[] = INCBIN_U32("graphics/battle_environment/plain/palette.gbapal.lz"); +const u16 gBattleEnvironmentPalette_Plain[] = INCBIN_U16("graphics/battle_environment/plain/palette.gbapal"); const u32 gBattleEnvironmentTiles_Building[] = INCBIN_U32("graphics/battle_environment/building/tiles.4bpp.lz"); -const u32 gBattleEnvironmentPalette_Frontier[] = INCBIN_U32("graphics/battle_environment/stadium/battle_frontier.gbapal.lz"); // this is also used for link battles +const u16 gBattleEnvironmentPalette_Frontier[] = INCBIN_U16("graphics/battle_environment/stadium/battle_frontier.gbapal"); // this is also used for link battles const u32 gBattleEnvironmentTilemap_Building[] = INCBIN_U32("graphics/battle_environment/building/map.bin.lz"); const u32 gBattleEnvironmentTiles_Stadium[] = INCBIN_U32("graphics/battle_environment/stadium/tiles.4bpp.lz"); @@ -42,20 +42,20 @@ const u32 gBattleEnvironmentTilemap_Stadium[] = INCBIN_U32("graphics/battle_envi const u32 gBattleEnvironmentTiles_Rayquaza[] = INCBIN_U32("graphics/battle_environment/sky/tiles.4bpp.lz"); const u32 gBattleEnvironmentTilemap_Rayquaza[] = INCBIN_U32("graphics/battle_environment/sky/map.bin.lz"); -const u32 gBattleEnvironmentPalette_Building[] = INCBIN_U32("graphics/battle_environment/building/palette.gbapal.lz"); +const u16 gBattleEnvironmentPalette_Building[] = INCBIN_U16("graphics/battle_environment/building/palette.gbapal"); -const u32 gBattleEnvironmentPalette_Kyogre[] = INCBIN_U32("graphics/battle_environment/water/kyogre.gbapal.lz"); -const u32 gBattleEnvironmentPalette_Groudon[] = INCBIN_U32("graphics/battle_environment/cave/groudon.gbapal.lz"); -const u32 gBattleEnvironmentPalette_BuildingGym[] = INCBIN_U32("graphics/battle_environment/building/palette2.gbapal.lz"); -const u32 gBattleEnvironmentPalette_BuildingLeader[] = INCBIN_U32("graphics/battle_environment/building/palette3.gbapal.lz"); -const u32 gBattleEnvironmentPalette_StadiumAqua[] = INCBIN_U32("graphics/battle_environment/stadium/palette1.gbapal.lz"); -const u32 gBattleEnvironmentPalette_StadiumMagma[] = INCBIN_U32("graphics/battle_environment/stadium/palette2.gbapal.lz"); -const u32 gBattleEnvironmentPalette_StadiumSidney[] = INCBIN_U32("graphics/battle_environment/stadium/palette3.gbapal.lz"); -const u32 gBattleEnvironmentPalette_StadiumPhoebe[] = INCBIN_U32("graphics/battle_environment/stadium/palette4.gbapal.lz"); -const u32 gBattleEnvironmentPalette_StadiumGlacia[] = INCBIN_U32("graphics/battle_environment/stadium/palette5.gbapal.lz"); -const u32 gBattleEnvironmentPalette_StadiumDrake[] = INCBIN_U32("graphics/battle_environment/stadium/palette6.gbapal.lz"); -const u32 gBattleEnvironmentPalette_StadiumWallace[] = INCBIN_U32("graphics/battle_environment/stadium/palette7.gbapal.lz"); -const u32 gBattleEnvironmentPalette_Rayquaza[] = INCBIN_U32("graphics/battle_environment/sky/palette.gbapal.lz"); +const u16 gBattleEnvironmentPalette_Kyogre[] = INCBIN_U16("graphics/battle_environment/water/kyogre.gbapal"); +const u16 gBattleEnvironmentPalette_Groudon[] = INCBIN_U16("graphics/battle_environment/cave/groudon.gbapal"); +const u16 gBattleEnvironmentPalette_BuildingGym[] = INCBIN_U16("graphics/battle_environment/building/palette2.gbapal"); +const u16 gBattleEnvironmentPalette_BuildingLeader[] = INCBIN_U16("graphics/battle_environment/building/palette3.gbapal"); +const u16 gBattleEnvironmentPalette_StadiumAqua[] = INCBIN_U16("graphics/battle_environment/stadium/palette1.gbapal"); +const u16 gBattleEnvironmentPalette_StadiumMagma[] = INCBIN_U16("graphics/battle_environment/stadium/palette2.gbapal"); +const u16 gBattleEnvironmentPalette_StadiumSidney[] = INCBIN_U16("graphics/battle_environment/stadium/palette3.gbapal"); +const u16 gBattleEnvironmentPalette_StadiumPhoebe[] = INCBIN_U16("graphics/battle_environment/stadium/palette4.gbapal"); +const u16 gBattleEnvironmentPalette_StadiumGlacia[] = INCBIN_U16("graphics/battle_environment/stadium/palette5.gbapal"); +const u16 gBattleEnvironmentPalette_StadiumDrake[] = INCBIN_U16("graphics/battle_environment/stadium/palette6.gbapal"); +const u16 gBattleEnvironmentPalette_StadiumWallace[] = INCBIN_U16("graphics/battle_environment/stadium/palette7.gbapal"); +const u16 gBattleEnvironmentPalette_Rayquaza[] = INCBIN_U16("graphics/battle_environment/sky/palette.gbapal"); const u32 gBattleEnvironmentAnimTiles_TallGrass[] = INCBIN_U32("graphics/battle_environment/tall_grass/anim_tiles.4bpp.lz"); const u32 gBattleEnvironmentAnimTilemap_TallGrass[] = INCBIN_U32("graphics/battle_environment/tall_grass/anim_map.bin.lz"); diff --git a/src/data/graphics/berries.h b/src/data/graphics/berries.h index 2bffbbafe8..3001337dfa 100644 --- a/src/data/graphics/berries.h +++ b/src/data/graphics/berries.h @@ -1,5 +1,5 @@ const u32 gBerryCheck_Gfx[] = INCBIN_U32("graphics/bag/check_berry.4bpp.lz"); -const u32 gBerryCheck_Pal[] = INCBIN_U32("graphics/bag/check_berry.gbapal.lz"); +const u16 gBerryCheck_Pal[] = INCBIN_U16("graphics/bag/check_berry.gbapal"); const u32 gBerryTag_Gfx[] = INCBIN_U32("graphics/bag/berry_tag.bin.lz"); const u32 gBerryTag_Tilemap[] = INCBIN_U32("graphics/bag/berry_tag_title.bin.lz"); @@ -74,70 +74,70 @@ const u32 gBerryPic_Rowap[] = INCBIN_U32("graphics/berries/rowap.4bpp.lz"); const u32 gBerryPic_Kee[] = INCBIN_U32("graphics/berries/kee.4bpp.lz"); const u32 gBerryPic_Maranga[] = INCBIN_U32("graphics/berries/maranga.4bpp.lz"); -const u32 gBerryPalette_Cheri[] = INCBIN_U32("graphics/berries/cheri.gbapal.lz"); -const u32 gBerryPalette_Chesto[] = INCBIN_U32("graphics/berries/chesto.gbapal.lz"); -const u32 gBerryPalette_Pecha[] = INCBIN_U32("graphics/berries/pecha.gbapal.lz"); -const u32 gBerryPalette_Rawst[] = INCBIN_U32("graphics/berries/rawst.gbapal.lz"); -const u32 gBerryPalette_Aspear[] = INCBIN_U32("graphics/berries/aspear.gbapal.lz"); -const u32 gBerryPalette_Leppa[] = INCBIN_U32("graphics/berries/leppa.gbapal.lz"); -const u32 gBerryPalette_Oran[] = INCBIN_U32("graphics/berries/oran.gbapal.lz"); -const u32 gBerryPalette_Persim[] = INCBIN_U32("graphics/berries/persim.gbapal.lz"); -const u32 gBerryPalette_Lum[] = INCBIN_U32("graphics/berries/lum.gbapal.lz"); -const u32 gBerryPalette_Sitrus[] = INCBIN_U32("graphics/berries/sitrus.gbapal.lz"); -const u32 gBerryPalette_Figy[] = INCBIN_U32("graphics/berries/figy.gbapal.lz"); -const u32 gBerryPalette_Wiki[] = INCBIN_U32("graphics/berries/wiki.gbapal.lz"); -const u32 gBerryPalette_Mago[] = INCBIN_U32("graphics/berries/mago.gbapal.lz"); -const u32 gBerryPalette_Aguav[] = INCBIN_U32("graphics/berries/aguav.gbapal.lz"); -const u32 gBerryPalette_Iapapa[] = INCBIN_U32("graphics/berries/iapapa.gbapal.lz"); -const u32 gBerryPalette_Razz[] = INCBIN_U32("graphics/berries/razz.gbapal.lz"); -const u32 gBerryPalette_Bluk[] = INCBIN_U32("graphics/berries/bluk.gbapal.lz"); -const u32 gBerryPalette_Nanab[] = INCBIN_U32("graphics/berries/nanab.gbapal.lz"); -const u32 gBerryPalette_Wepear[] = INCBIN_U32("graphics/berries/wepear.gbapal.lz"); -const u32 gBerryPalette_Pinap[] = INCBIN_U32("graphics/berries/pinap.gbapal.lz"); -const u32 gBerryPalette_Pomeg[] = INCBIN_U32("graphics/berries/pomeg.gbapal.lz"); -const u32 gBerryPalette_Kelpsy[] = INCBIN_U32("graphics/berries/kelpsy.gbapal.lz"); -const u32 gBerryPalette_Qualot[] = INCBIN_U32("graphics/berries/qualot.gbapal.lz"); -const u32 gBerryPalette_Hondew[] = INCBIN_U32("graphics/berries/hondew.gbapal.lz"); -const u32 gBerryPalette_Grepa[] = INCBIN_U32("graphics/berries/grepa.gbapal.lz"); -const u32 gBerryPalette_Tamato[] = INCBIN_U32("graphics/berries/tamato.gbapal.lz"); -const u32 gBerryPalette_Cornn[] = INCBIN_U32("graphics/berries/cornn.gbapal.lz"); -const u32 gBerryPalette_Magost[] = INCBIN_U32("graphics/berries/magost.gbapal.lz"); -const u32 gBerryPalette_Rabuta[] = INCBIN_U32("graphics/berries/rabuta.gbapal.lz"); -const u32 gBerryPalette_Nomel[] = INCBIN_U32("graphics/berries/nomel.gbapal.lz"); -const u32 gBerryPalette_Spelon[] = INCBIN_U32("graphics/berries/spelon.gbapal.lz"); -const u32 gBerryPalette_Pamtre[] = INCBIN_U32("graphics/berries/pamtre.gbapal.lz"); -const u32 gBerryPalette_Watmel[] = INCBIN_U32("graphics/berries/watmel.gbapal.lz"); -const u32 gBerryPalette_Durin[] = INCBIN_U32("graphics/berries/durin.gbapal.lz"); -const u32 gBerryPalette_Belue[] = INCBIN_U32("graphics/berries/belue.gbapal.lz"); -const u32 gBerryPalette_Chilan[] = INCBIN_U32("graphics/berries/chilan.gbapal.lz"); -const u32 gBerryPalette_Occa[] = INCBIN_U32("graphics/berries/occa.gbapal.lz"); -const u32 gBerryPalette_Passho[] = INCBIN_U32("graphics/berries/passho.gbapal.lz"); -const u32 gBerryPalette_Wacan[] = INCBIN_U32("graphics/berries/wacan.gbapal.lz"); -const u32 gBerryPalette_Rindo[] = INCBIN_U32("graphics/berries/rindo.gbapal.lz"); -const u32 gBerryPalette_Yache[] = INCBIN_U32("graphics/berries/yache.gbapal.lz"); -const u32 gBerryPalette_Chople[] = INCBIN_U32("graphics/berries/chople.gbapal.lz"); -const u32 gBerryPalette_Kebia[] = INCBIN_U32("graphics/berries/kebia.gbapal.lz"); -const u32 gBerryPalette_Shuca[] = INCBIN_U32("graphics/berries/shuca.gbapal.lz"); -const u32 gBerryPalette_Coba[] = INCBIN_U32("graphics/berries/coba.gbapal.lz"); -const u32 gBerryPalette_Payapa[] = INCBIN_U32("graphics/berries/payapa.gbapal.lz"); -const u32 gBerryPalette_Tanga[] = INCBIN_U32("graphics/berries/tanga.gbapal.lz"); -const u32 gBerryPalette_Charti[] = INCBIN_U32("graphics/berries/charti.gbapal.lz"); -const u32 gBerryPalette_Kasib[] = INCBIN_U32("graphics/berries/kasib.gbapal.lz"); -const u32 gBerryPalette_Haban[] = INCBIN_U32("graphics/berries/haban.gbapal.lz"); -const u32 gBerryPalette_Colbur[] = INCBIN_U32("graphics/berries/colbur.gbapal.lz"); -const u32 gBerryPalette_Babiri[] = INCBIN_U32("graphics/berries/babiri.gbapal.lz"); -const u32 gBerryPalette_Roseli[] = INCBIN_U32("graphics/berries/roseli.gbapal.lz"); -const u32 gBerryPalette_Liechi[] = INCBIN_U32("graphics/berries/liechi.gbapal.lz"); -const u32 gBerryPalette_Ganlon[] = INCBIN_U32("graphics/berries/ganlon.gbapal.lz"); -const u32 gBerryPalette_Salac[] = INCBIN_U32("graphics/berries/salac.gbapal.lz"); -const u32 gBerryPalette_Petaya[] = INCBIN_U32("graphics/berries/petaya.gbapal.lz"); -const u32 gBerryPalette_Apicot[] = INCBIN_U32("graphics/berries/apicot.gbapal.lz"); -const u32 gBerryPalette_Lansat[] = INCBIN_U32("graphics/berries/lansat.gbapal.lz"); -const u32 gBerryPalette_Starf[] = INCBIN_U32("graphics/berries/starf.gbapal.lz"); -const u32 gBerryPalette_Enigma[] = INCBIN_U32("graphics/berries/enigma.gbapal.lz"); -const u32 gBerryPalette_Micle[] = INCBIN_U32("graphics/berries/micle.gbapal.lz"); -const u32 gBerryPalette_Custap[] = INCBIN_U32("graphics/berries/custap.gbapal.lz"); -const u32 gBerryPalette_Jaboca[] = INCBIN_U32("graphics/berries/jaboca.gbapal.lz"); -const u32 gBerryPalette_Rowap[] = INCBIN_U32("graphics/berries/rowap.gbapal.lz"); -const u32 gBerryPalette_Kee[] = INCBIN_U32("graphics/berries/kee.gbapal.lz"); -const u32 gBerryPalette_Maranga[] = INCBIN_U32("graphics/berries/maranga.gbapal.lz"); +const u16 gBerryPalette_Cheri[] = INCBIN_U16("graphics/berries/cheri.gbapal"); +const u16 gBerryPalette_Chesto[] = INCBIN_U16("graphics/berries/chesto.gbapal"); +const u16 gBerryPalette_Pecha[] = INCBIN_U16("graphics/berries/pecha.gbapal"); +const u16 gBerryPalette_Rawst[] = INCBIN_U16("graphics/berries/rawst.gbapal"); +const u16 gBerryPalette_Aspear[] = INCBIN_U16("graphics/berries/aspear.gbapal"); +const u16 gBerryPalette_Leppa[] = INCBIN_U16("graphics/berries/leppa.gbapal"); +const u16 gBerryPalette_Oran[] = INCBIN_U16("graphics/berries/oran.gbapal"); +const u16 gBerryPalette_Persim[] = INCBIN_U16("graphics/berries/persim.gbapal"); +const u16 gBerryPalette_Lum[] = INCBIN_U16("graphics/berries/lum.gbapal"); +const u16 gBerryPalette_Sitrus[] = INCBIN_U16("graphics/berries/sitrus.gbapal"); +const u16 gBerryPalette_Figy[] = INCBIN_U16("graphics/berries/figy.gbapal"); +const u16 gBerryPalette_Wiki[] = INCBIN_U16("graphics/berries/wiki.gbapal"); +const u16 gBerryPalette_Mago[] = INCBIN_U16("graphics/berries/mago.gbapal"); +const u16 gBerryPalette_Aguav[] = INCBIN_U16("graphics/berries/aguav.gbapal"); +const u16 gBerryPalette_Iapapa[] = INCBIN_U16("graphics/berries/iapapa.gbapal"); +const u16 gBerryPalette_Razz[] = INCBIN_U16("graphics/berries/razz.gbapal"); +const u16 gBerryPalette_Bluk[] = INCBIN_U16("graphics/berries/bluk.gbapal"); +const u16 gBerryPalette_Nanab[] = INCBIN_U16("graphics/berries/nanab.gbapal"); +const u16 gBerryPalette_Wepear[] = INCBIN_U16("graphics/berries/wepear.gbapal"); +const u16 gBerryPalette_Pinap[] = INCBIN_U16("graphics/berries/pinap.gbapal"); +const u16 gBerryPalette_Pomeg[] = INCBIN_U16("graphics/berries/pomeg.gbapal"); +const u16 gBerryPalette_Kelpsy[] = INCBIN_U16("graphics/berries/kelpsy.gbapal"); +const u16 gBerryPalette_Qualot[] = INCBIN_U16("graphics/berries/qualot.gbapal"); +const u16 gBerryPalette_Hondew[] = INCBIN_U16("graphics/berries/hondew.gbapal"); +const u16 gBerryPalette_Grepa[] = INCBIN_U16("graphics/berries/grepa.gbapal"); +const u16 gBerryPalette_Tamato[] = INCBIN_U16("graphics/berries/tamato.gbapal"); +const u16 gBerryPalette_Cornn[] = INCBIN_U16("graphics/berries/cornn.gbapal"); +const u16 gBerryPalette_Magost[] = INCBIN_U16("graphics/berries/magost.gbapal"); +const u16 gBerryPalette_Rabuta[] = INCBIN_U16("graphics/berries/rabuta.gbapal"); +const u16 gBerryPalette_Nomel[] = INCBIN_U16("graphics/berries/nomel.gbapal"); +const u16 gBerryPalette_Spelon[] = INCBIN_U16("graphics/berries/spelon.gbapal"); +const u16 gBerryPalette_Pamtre[] = INCBIN_U16("graphics/berries/pamtre.gbapal"); +const u16 gBerryPalette_Watmel[] = INCBIN_U16("graphics/berries/watmel.gbapal"); +const u16 gBerryPalette_Durin[] = INCBIN_U16("graphics/berries/durin.gbapal"); +const u16 gBerryPalette_Belue[] = INCBIN_U16("graphics/berries/belue.gbapal"); +const u16 gBerryPalette_Chilan[] = INCBIN_U16("graphics/berries/chilan.gbapal"); +const u16 gBerryPalette_Occa[] = INCBIN_U16("graphics/berries/occa.gbapal"); +const u16 gBerryPalette_Passho[] = INCBIN_U16("graphics/berries/passho.gbapal"); +const u16 gBerryPalette_Wacan[] = INCBIN_U16("graphics/berries/wacan.gbapal"); +const u16 gBerryPalette_Rindo[] = INCBIN_U16("graphics/berries/rindo.gbapal"); +const u16 gBerryPalette_Yache[] = INCBIN_U16("graphics/berries/yache.gbapal"); +const u16 gBerryPalette_Chople[] = INCBIN_U16("graphics/berries/chople.gbapal"); +const u16 gBerryPalette_Kebia[] = INCBIN_U16("graphics/berries/kebia.gbapal"); +const u16 gBerryPalette_Shuca[] = INCBIN_U16("graphics/berries/shuca.gbapal"); +const u16 gBerryPalette_Coba[] = INCBIN_U16("graphics/berries/coba.gbapal"); +const u16 gBerryPalette_Payapa[] = INCBIN_U16("graphics/berries/payapa.gbapal"); +const u16 gBerryPalette_Tanga[] = INCBIN_U16("graphics/berries/tanga.gbapal"); +const u16 gBerryPalette_Charti[] = INCBIN_U16("graphics/berries/charti.gbapal"); +const u16 gBerryPalette_Kasib[] = INCBIN_U16("graphics/berries/kasib.gbapal"); +const u16 gBerryPalette_Haban[] = INCBIN_U16("graphics/berries/haban.gbapal"); +const u16 gBerryPalette_Colbur[] = INCBIN_U16("graphics/berries/colbur.gbapal"); +const u16 gBerryPalette_Babiri[] = INCBIN_U16("graphics/berries/babiri.gbapal"); +const u16 gBerryPalette_Roseli[] = INCBIN_U16("graphics/berries/roseli.gbapal"); +const u16 gBerryPalette_Liechi[] = INCBIN_U16("graphics/berries/liechi.gbapal"); +const u16 gBerryPalette_Ganlon[] = INCBIN_U16("graphics/berries/ganlon.gbapal"); +const u16 gBerryPalette_Salac[] = INCBIN_U16("graphics/berries/salac.gbapal"); +const u16 gBerryPalette_Petaya[] = INCBIN_U16("graphics/berries/petaya.gbapal"); +const u16 gBerryPalette_Apicot[] = INCBIN_U16("graphics/berries/apicot.gbapal"); +const u16 gBerryPalette_Lansat[] = INCBIN_U16("graphics/berries/lansat.gbapal"); +const u16 gBerryPalette_Starf[] = INCBIN_U16("graphics/berries/starf.gbapal"); +const u16 gBerryPalette_Enigma[] = INCBIN_U16("graphics/berries/enigma.gbapal"); +const u16 gBerryPalette_Micle[] = INCBIN_U16("graphics/berries/micle.gbapal"); +const u16 gBerryPalette_Custap[] = INCBIN_U16("graphics/berries/custap.gbapal"); +const u16 gBerryPalette_Jaboca[] = INCBIN_U16("graphics/berries/jaboca.gbapal"); +const u16 gBerryPalette_Rowap[] = INCBIN_U16("graphics/berries/rowap.gbapal"); +const u16 gBerryPalette_Kee[] = INCBIN_U16("graphics/berries/kee.gbapal"); +const u16 gBerryPalette_Maranga[] = INCBIN_U16("graphics/berries/maranga.gbapal"); diff --git a/src/data/graphics/decorations.h b/src/data/graphics/decorations.h index b18c873481..b8e1343ee5 100644 --- a/src/data/graphics/decorations.h +++ b/src/data/graphics/decorations.h @@ -1,125 +1,125 @@ const u32 gDecorIcon_HeavyDesk[] = INCBIN_U32("graphics/decorations/heavy_desk.4bpp.lz"); -const u32 gDecorIconPalette_HeavyDesk[] = INCBIN_U32("graphics/decorations/heavy_desk.gbapal.lz"); +const u16 gDecorIconPalette_HeavyDesk[] = INCBIN_U16("graphics/decorations/heavy_desk.gbapal"); const u32 gDecorIcon_RaggedDesk[] = INCBIN_U32("graphics/decorations/ragged_desk.4bpp.lz"); -const u32 gDecorIconPalette_RaggedDesk[] = INCBIN_U32("graphics/decorations/ragged_desk.gbapal.lz"); +const u16 gDecorIconPalette_RaggedDesk[] = INCBIN_U16("graphics/decorations/ragged_desk.gbapal"); const u32 gDecorIcon_ComfortDesk[] = INCBIN_U32("graphics/decorations/comfort_desk.4bpp.lz"); -const u32 gDecorIconPalette_ComfortDesk[] = INCBIN_U32("graphics/decorations/comfort_desk.gbapal.lz"); +const u16 gDecorIconPalette_ComfortDesk[] = INCBIN_U16("graphics/decorations/comfort_desk.gbapal"); const u32 gDecorIcon_PrettyDesk[] = INCBIN_U32("graphics/decorations/pretty_desk.4bpp.lz"); -const u32 gDecorIconPalette_PrettyDesk[] = INCBIN_U32("graphics/decorations/pretty_desk.gbapal.lz"); +const u16 gDecorIconPalette_PrettyDesk[] = INCBIN_U16("graphics/decorations/pretty_desk.gbapal"); const u32 gDecorIcon_BrickDesk[] = INCBIN_U32("graphics/decorations/brick_desk.4bpp.lz"); -const u32 gDecorIconPalette_BrickDesk[] = INCBIN_U32("graphics/decorations/brick_desk.gbapal.lz"); +const u16 gDecorIconPalette_BrickDesk[] = INCBIN_U16("graphics/decorations/brick_desk.gbapal"); const u32 gDecorIcon_CampDesk[] = INCBIN_U32("graphics/decorations/camp_desk.4bpp.lz"); -const u32 gDecorIconPalette_CampDesk[] = INCBIN_U32("graphics/decorations/camp_desk.gbapal.lz"); +const u16 gDecorIconPalette_CampDesk[] = INCBIN_U16("graphics/decorations/camp_desk.gbapal"); const u32 gDecorIcon_HardDesk[] = INCBIN_U32("graphics/decorations/hard_desk.4bpp.lz"); -const u32 gDecorIconPalette_HardDesk[] = INCBIN_U32("graphics/decorations/hard_desk.gbapal.lz"); +const u16 gDecorIconPalette_HardDesk[] = INCBIN_U16("graphics/decorations/hard_desk.gbapal"); const u32 gDecorIcon_RedPlant[] = INCBIN_U32("graphics/decorations/red_plant.4bpp.lz"); -const u32 gDecorIconPalette_RedPlant[] = INCBIN_U32("graphics/decorations/red_plant.gbapal.lz"); +const u16 gDecorIconPalette_RedPlant[] = INCBIN_U16("graphics/decorations/red_plant.gbapal"); const u32 gDecorIcon_TropicalPlant[] = INCBIN_U32("graphics/decorations/tropical_plant.4bpp.lz"); -const u32 gDecorIconPalette_TropicalPlant[] = INCBIN_U32("graphics/decorations/tropical_plant.gbapal.lz"); +const u16 gDecorIconPalette_TropicalPlant[] = INCBIN_U16("graphics/decorations/tropical_plant.gbapal"); const u32 gDecorIcon_PrettyFlowers[] = INCBIN_U32("graphics/decorations/pretty_flowers.4bpp.lz"); -const u32 gDecorIconPalette_PrettyFlowers[] = INCBIN_U32("graphics/decorations/pretty_flowers.gbapal.lz"); +const u16 gDecorIconPalette_PrettyFlowers[] = INCBIN_U16("graphics/decorations/pretty_flowers.gbapal"); const u32 gDecorIcon_ColorfulPlant[] = INCBIN_U32("graphics/decorations/colorful_plant.4bpp.lz"); -const u32 gDecorIconPalette_ColorfulPlant[] = INCBIN_U32("graphics/decorations/colorful_plant.gbapal.lz"); +const u16 gDecorIconPalette_ColorfulPlant[] = INCBIN_U16("graphics/decorations/colorful_plant.gbapal"); const u32 gDecorIcon_BigPlant[] = INCBIN_U32("graphics/decorations/big_plant.4bpp.lz"); -const u32 gDecorIconPalette_BigPlant[] = INCBIN_U32("graphics/decorations/big_plant.gbapal.lz"); +const u16 gDecorIconPalette_BigPlant[] = INCBIN_U16("graphics/decorations/big_plant.gbapal"); const u32 gDecorIcon_GorgeousPlant[] = INCBIN_U32("graphics/decorations/gorgeous_plant.4bpp.lz"); -const u32 gDecorIconPalette_GorgeousPlant[] = INCBIN_U32("graphics/decorations/gorgeous_plant.gbapal.lz"); +const u16 gDecorIconPalette_GorgeousPlant[] = INCBIN_U16("graphics/decorations/gorgeous_plant.gbapal"); const u32 gDecorIcon_RedBrick[] = INCBIN_U32("graphics/decorations/red_brick.4bpp.lz"); -const u32 gDecorIconPalette_RedBrick[] = INCBIN_U32("graphics/decorations/red_brick.gbapal.lz"); +const u16 gDecorIconPalette_RedBrick[] = INCBIN_U16("graphics/decorations/red_brick.gbapal"); const u32 gDecorIcon_YellowBrick[] = INCBIN_U32("graphics/decorations/yellow_brick.4bpp.lz"); -const u32 gDecorIconPalette_YellowBrick[] = INCBIN_U32("graphics/decorations/yellow_brick.gbapal.lz"); +const u16 gDecorIconPalette_YellowBrick[] = INCBIN_U16("graphics/decorations/yellow_brick.gbapal"); const u32 gDecorIcon_BlueBrick[] = INCBIN_U32("graphics/decorations/blue_brick.4bpp.lz"); -const u32 gDecorIconPalette_BlueBrick[] = INCBIN_U32("graphics/decorations/blue_brick.gbapal.lz"); +const u16 gDecorIconPalette_BlueBrick[] = INCBIN_U16("graphics/decorations/blue_brick.gbapal"); const u32 gDecorIcon_RedTent[] = INCBIN_U32("graphics/decorations/red_tent.4bpp.lz"); -const u32 gDecorIconPalette_RedTent[] = INCBIN_U32("graphics/decorations/red_tent.gbapal.lz"); +const u16 gDecorIconPalette_RedTent[] = INCBIN_U16("graphics/decorations/red_tent.gbapal"); const u32 gDecorIcon_BlueTent[] = INCBIN_U32("graphics/decorations/blue_tent.4bpp.lz"); -const u32 gDecorIconPalette_BlueTent[] = INCBIN_U32("graphics/decorations/blue_tent.gbapal.lz"); +const u16 gDecorIconPalette_BlueTent[] = INCBIN_U16("graphics/decorations/blue_tent.gbapal"); const u32 gDecorIcon_SolidBoard[] = INCBIN_U32("graphics/decorations/solid_board.4bpp.lz"); -const u32 gDecorIconPalette_SolidBoard[] = INCBIN_U32("graphics/decorations/solid_board.gbapal.lz"); +const u16 gDecorIconPalette_SolidBoard[] = INCBIN_U16("graphics/decorations/solid_board.gbapal"); const u32 gDecorIcon_Slide[] = INCBIN_U32("graphics/decorations/slide.4bpp.lz"); -const u32 gDecorIconPalette_Slide[] = INCBIN_U32("graphics/decorations/slide.gbapal.lz"); +const u16 gDecorIconPalette_Slide[] = INCBIN_U16("graphics/decorations/slide.gbapal"); const u32 gDecorIcon_Tire[] = INCBIN_U32("graphics/decorations/tire.4bpp.lz"); -const u32 gDecorIconPalette_Tire[] = INCBIN_U32("graphics/decorations/tire.gbapal.lz"); +const u16 gDecorIconPalette_Tire[] = INCBIN_U16("graphics/decorations/tire.gbapal"); const u32 gDecorIcon_Stand[] = INCBIN_U32("graphics/decorations/stand.4bpp.lz"); -const u32 gDecorIconPalette_Stand[] = INCBIN_U32("graphics/decorations/stand.gbapal.lz"); +const u16 gDecorIconPalette_Stand[] = INCBIN_U16("graphics/decorations/stand.gbapal"); const u32 gDecorIcon_BreakableDoor[] = INCBIN_U32("graphics/decorations/breakable_door.4bpp.lz"); -const u32 gDecorIconPalette_BreakableDoor[] = INCBIN_U32("graphics/decorations/breakable_door.gbapal.lz"); +const u16 gDecorIconPalette_BreakableDoor[] = INCBIN_U16("graphics/decorations/breakable_door.gbapal"); const u32 gDecorIcon_SandOrnament[] = INCBIN_U32("graphics/decorations/sand_ornament.4bpp.lz"); -const u32 gDecorIconPalette_SandOrnament[] = INCBIN_U32("graphics/decorations/sand_ornament.gbapal.lz"); +const u16 gDecorIconPalette_SandOrnament[] = INCBIN_U16("graphics/decorations/sand_ornament.gbapal"); const u32 gDecorIcon_GlassOrnament[] = INCBIN_U32("graphics/decorations/glass_ornament.4bpp.lz"); -const u32 gDecorIconPalette_GlassOrnament[] = INCBIN_U32("graphics/decorations/glass_ornament.gbapal.lz"); +const u16 gDecorIconPalette_GlassOrnament[] = INCBIN_U16("graphics/decorations/glass_ornament.gbapal"); const u32 gDecorIcon_SurfMat[] = INCBIN_U32("graphics/decorations/surf_mat.4bpp.lz"); -const u32 gDecorIconPalette_SurfMat[] = INCBIN_U32("graphics/decorations/surf_mat.gbapal.lz"); +const u16 gDecorIconPalette_SurfMat[] = INCBIN_U16("graphics/decorations/surf_mat.gbapal"); const u32 gDecorIcon_ThunderMat[] = INCBIN_U32("graphics/decorations/thunder_mat.4bpp.lz"); -const u32 gDecorIconPalette_ThunderMat[] = INCBIN_U32("graphics/decorations/thunder_mat.gbapal.lz"); +const u16 gDecorIconPalette_ThunderMat[] = INCBIN_U16("graphics/decorations/thunder_mat.gbapal"); const u32 gDecorIcon_FireBlastMat[] = INCBIN_U32("graphics/decorations/fire_blast_mat.4bpp.lz"); -const u32 gDecorIconPalette_FireBlastMat[] = INCBIN_U32("graphics/decorations/fire_blast_mat.gbapal.lz"); +const u16 gDecorIconPalette_FireBlastMat[] = INCBIN_U16("graphics/decorations/fire_blast_mat.gbapal"); const u32 gDecorIcon_PowderSnowMat[] = INCBIN_U32("graphics/decorations/powder_snow_mat.4bpp.lz"); -const u32 gDecorIconPalette_PowderSnowMat[] = INCBIN_U32("graphics/decorations/powder_snow_mat.gbapal.lz"); +const u16 gDecorIconPalette_PowderSnowMat[] = INCBIN_U16("graphics/decorations/powder_snow_mat.gbapal"); const u32 gDecorIcon_AttractMat[] = INCBIN_U32("graphics/decorations/attract_mat.4bpp.lz"); -const u32 gDecorIconPalette_AttractMat[] = INCBIN_U32("graphics/decorations/attract_mat.gbapal.lz"); +const u16 gDecorIconPalette_AttractMat[] = INCBIN_U16("graphics/decorations/attract_mat.gbapal"); const u32 gDecorIcon_FissureMat[] = INCBIN_U32("graphics/decorations/fissure_mat.4bpp.lz"); -const u32 gDecorIconPalette_FissureMat[] = INCBIN_U32("graphics/decorations/fissure_mat.gbapal.lz"); +const u16 gDecorIconPalette_FissureMat[] = INCBIN_U16("graphics/decorations/fissure_mat.gbapal"); const u32 gDecorIcon_SpikesMat[] = INCBIN_U32("graphics/decorations/spikes_mat.4bpp.lz"); -const u32 gDecorIconPalette_SpikesMat[] = INCBIN_U32("graphics/decorations/spikes_mat.gbapal.lz"); +const u16 gDecorIconPalette_SpikesMat[] = INCBIN_U16("graphics/decorations/spikes_mat.gbapal"); const u32 gDecorIcon_SnorlaxDoll[] = INCBIN_U32("graphics/decorations/snorlax_doll.4bpp.lz"); -const u32 gDecorIconPalette_SnorlaxDoll[] = INCBIN_U32("graphics/decorations/snorlax_doll.gbapal.lz"); +const u16 gDecorIconPalette_SnorlaxDoll[] = INCBIN_U16("graphics/decorations/snorlax_doll.gbapal"); const u32 gDecorIcon_RhydonDoll[] = INCBIN_U32("graphics/decorations/rhydon_doll.4bpp.lz"); -const u32 gDecorIconPalette_RhydonDoll[] = INCBIN_U32("graphics/decorations/rhydon_doll.gbapal.lz"); +const u16 gDecorIconPalette_RhydonDoll[] = INCBIN_U16("graphics/decorations/rhydon_doll.gbapal"); const u32 gDecorIcon_LaprasDoll[] = INCBIN_U32("graphics/decorations/lapras_doll.4bpp.lz"); -const u32 gDecorIconPalette_LaprasDoll[] = INCBIN_U32("graphics/decorations/lapras_doll.gbapal.lz"); +const u16 gDecorIconPalette_LaprasDoll[] = INCBIN_U16("graphics/decorations/lapras_doll.gbapal"); const u32 gDecorIcon_VenusaurDoll[] = INCBIN_U32("graphics/decorations/venusaur_doll.4bpp.lz"); -const u32 gDecorIconPalette_VenusaurDoll[] = INCBIN_U32("graphics/decorations/venusaur_doll.gbapal.lz"); +const u16 gDecorIconPalette_VenusaurDoll[] = INCBIN_U16("graphics/decorations/venusaur_doll.gbapal"); const u32 gDecorIcon_CharizardDoll[] = INCBIN_U32("graphics/decorations/charizard_doll.4bpp.lz"); -const u32 gDecorIconPalette_CharizardDoll[] = INCBIN_U32("graphics/decorations/charizard_doll.gbapal.lz"); +const u16 gDecorIconPalette_CharizardDoll[] = INCBIN_U16("graphics/decorations/charizard_doll.gbapal"); const u32 gDecorIcon_BlastoiseDoll[] = INCBIN_U32("graphics/decorations/blastoise_doll.4bpp.lz"); -const u32 gDecorIconPalette_BlastoiseDoll[] = INCBIN_U32("graphics/decorations/blastoise_doll.gbapal.lz"); +const u16 gDecorIconPalette_BlastoiseDoll[] = INCBIN_U16("graphics/decorations/blastoise_doll.gbapal"); const u32 gDecorIcon_WailmerDoll[] = INCBIN_U32("graphics/decorations/wailmer_doll.4bpp.lz"); -const u32 gDecorIconPalette_WailmerDoll[] = INCBIN_U32("graphics/decorations/wailmer_doll.gbapal.lz"); +const u16 gDecorIconPalette_WailmerDoll[] = INCBIN_U16("graphics/decorations/wailmer_doll.gbapal"); const u32 gDecorIcon_RegiceDoll[] = INCBIN_U32("graphics/decorations/regice_doll.4bpp.lz"); -const u32 gDecorIconPalette_RegiceDoll[] = INCBIN_U32("graphics/decorations/regice_doll.gbapal.lz"); +const u16 gDecorIconPalette_RegiceDoll[] = INCBIN_U16("graphics/decorations/regice_doll.gbapal"); const u32 gDecorIcon_RegirockDoll[] = INCBIN_U32("graphics/decorations/regirock_doll.4bpp.lz"); -const u32 gDecorIconPalette_RegirockDoll[] = INCBIN_U32("graphics/decorations/regirock_doll.gbapal.lz"); +const u16 gDecorIconPalette_RegirockDoll[] = INCBIN_U16("graphics/decorations/regirock_doll.gbapal"); const u32 gDecorIcon_RegisteelDoll[] = INCBIN_U32("graphics/decorations/registeel_doll.4bpp.lz"); -const u32 gDecorIconPalette_RegisteelDoll[] = INCBIN_U32("graphics/decorations/registeel_doll.gbapal.lz"); +const u16 gDecorIconPalette_RegisteelDoll[] = INCBIN_U16("graphics/decorations/registeel_doll.gbapal"); diff --git a/src/data/graphics/items.h b/src/data/graphics/items.h index b508df90a1..403530effc 100644 --- a/src/data/graphics/items.h +++ b/src/data/graphics/items.h @@ -1,1709 +1,1709 @@ const u32 gItemIcon_QuestionMark[] = INCBIN_U32("graphics/items/icons/question_mark.4bpp.lz"); -const u32 gItemIconPalette_QuestionMark[] = INCBIN_U32("graphics/items/icon_palettes/question_mark.gbapal.lz"); +const u16 gItemIconPalette_QuestionMark[] = INCBIN_U16("graphics/items/icon_palettes/question_mark.gbapal"); const u32 gItemIcon_ReturnToFieldArrow[] = INCBIN_U32("graphics/items/icons/return_to_field_arrow.4bpp.lz"); -const u32 gItemIconPalette_ReturnToFieldArrow[] = INCBIN_U32("graphics/items/icon_palettes/return_to_field_arrow.gbapal.lz"); +const u16 gItemIconPalette_ReturnToFieldArrow[] = INCBIN_U16("graphics/items/icon_palettes/return_to_field_arrow.gbapal"); // Poké Balls const u32 gItemIcon_StrangeBall[] = INCBIN_U32("graphics/items/icons/strange_ball.4bpp.lz"); -const u32 gItemIconPalette_StrangeBall[] = INCBIN_U32("graphics/items/icon_palettes/strange_ball.gbapal.lz"); +const u16 gItemIconPalette_StrangeBall[] = INCBIN_U16("graphics/items/icon_palettes/strange_ball.gbapal"); const u32 gItemIcon_PokeBall[] = INCBIN_U32("graphics/items/icons/poke_ball.4bpp.lz"); -const u32 gItemIconPalette_PokeBall[] = INCBIN_U32("graphics/items/icon_palettes/poke_ball.gbapal.lz"); +const u16 gItemIconPalette_PokeBall[] = INCBIN_U16("graphics/items/icon_palettes/poke_ball.gbapal"); const u32 gItemIcon_GreatBall[] = INCBIN_U32("graphics/items/icons/great_ball.4bpp.lz"); -const u32 gItemIconPalette_GreatBall[] = INCBIN_U32("graphics/items/icon_palettes/great_ball.gbapal.lz"); +const u16 gItemIconPalette_GreatBall[] = INCBIN_U16("graphics/items/icon_palettes/great_ball.gbapal"); const u32 gItemIcon_UltraBall[] = INCBIN_U32("graphics/items/icons/ultra_ball.4bpp.lz"); -const u32 gItemIconPalette_UltraBall[] = INCBIN_U32("graphics/items/icon_palettes/ultra_ball.gbapal.lz"); +const u16 gItemIconPalette_UltraBall[] = INCBIN_U16("graphics/items/icon_palettes/ultra_ball.gbapal"); const u32 gItemIcon_MasterBall[] = INCBIN_U32("graphics/items/icons/master_ball.4bpp.lz"); -const u32 gItemIconPalette_MasterBall[] = INCBIN_U32("graphics/items/icon_palettes/master_ball.gbapal.lz"); +const u16 gItemIconPalette_MasterBall[] = INCBIN_U16("graphics/items/icon_palettes/master_ball.gbapal"); const u32 gItemIcon_PremierBall[] = INCBIN_U32("graphics/items/icons/premier_ball.4bpp.lz"); const u32 gItemIcon_HealBall[] = INCBIN_U32("graphics/items/icons/heal_ball.4bpp.lz"); -const u32 gItemIconPalette_HealBall[] = INCBIN_U32("graphics/items/icon_palettes/heal_ball.gbapal.lz"); +const u16 gItemIconPalette_HealBall[] = INCBIN_U16("graphics/items/icon_palettes/heal_ball.gbapal"); const u32 gItemIcon_NetBall[] = INCBIN_U32("graphics/items/icons/net_ball.4bpp.lz"); -const u32 gItemIconPalette_NetBall[] = INCBIN_U32("graphics/items/icon_palettes/net_ball.gbapal.lz"); +const u16 gItemIconPalette_NetBall[] = INCBIN_U16("graphics/items/icon_palettes/net_ball.gbapal"); const u32 gItemIcon_NestBall[] = INCBIN_U32("graphics/items/icons/nest_ball.4bpp.lz"); -const u32 gItemIconPalette_NestBall[] = INCBIN_U32("graphics/items/icon_palettes/nest_ball.gbapal.lz"); +const u16 gItemIconPalette_NestBall[] = INCBIN_U16("graphics/items/icon_palettes/nest_ball.gbapal"); const u32 gItemIcon_DiveBall[] = INCBIN_U32("graphics/items/icons/dive_ball.4bpp.lz"); -const u32 gItemIconPalette_DiveBall[] = INCBIN_U32("graphics/items/icon_palettes/dive_ball.gbapal.lz"); +const u16 gItemIconPalette_DiveBall[] = INCBIN_U16("graphics/items/icon_palettes/dive_ball.gbapal"); const u32 gItemIcon_DuskBall[] = INCBIN_U32("graphics/items/icons/dusk_ball.4bpp.lz"); -const u32 gItemIconPalette_DuskBall[] = INCBIN_U32("graphics/items/icon_palettes/dusk_ball.gbapal.lz"); +const u16 gItemIconPalette_DuskBall[] = INCBIN_U16("graphics/items/icon_palettes/dusk_ball.gbapal"); const u32 gItemIcon_TimerBall[] = INCBIN_U32("graphics/items/icons/timer_ball.4bpp.lz"); const u32 gItemIcon_QuickBall[] = INCBIN_U32("graphics/items/icons/quick_ball.4bpp.lz"); -const u32 gItemIconPalette_QuickBall[] = INCBIN_U32("graphics/items/icon_palettes/quick_ball.gbapal.lz"); +const u16 gItemIconPalette_QuickBall[] = INCBIN_U16("graphics/items/icon_palettes/quick_ball.gbapal"); const u32 gItemIcon_RepeatBall[] = INCBIN_U32("graphics/items/icons/repeat_ball.4bpp.lz"); -const u32 gItemIconPalette_RepeatBall[] = INCBIN_U32("graphics/items/icon_palettes/repeat_ball.gbapal.lz"); +const u16 gItemIconPalette_RepeatBall[] = INCBIN_U16("graphics/items/icon_palettes/repeat_ball.gbapal"); const u32 gItemIcon_LuxuryBall[] = INCBIN_U32("graphics/items/icons/luxury_ball.4bpp.lz"); -const u32 gItemIconPalette_LuxuryBall[] = INCBIN_U32("graphics/items/icon_palettes/luxury_ball.gbapal.lz"); +const u16 gItemIconPalette_LuxuryBall[] = INCBIN_U16("graphics/items/icon_palettes/luxury_ball.gbapal"); const u32 gItemIcon_LevelBall[] = INCBIN_U32("graphics/items/icons/level_ball.4bpp.lz"); -const u32 gItemIconPalette_LevelBall[] = INCBIN_U32("graphics/items/icon_palettes/level_ball.gbapal.lz"); +const u16 gItemIconPalette_LevelBall[] = INCBIN_U16("graphics/items/icon_palettes/level_ball.gbapal"); const u32 gItemIcon_LureBall[] = INCBIN_U32("graphics/items/icons/lure_ball.4bpp.lz"); -const u32 gItemIconPalette_LureBall[] = INCBIN_U32("graphics/items/icon_palettes/lure_ball.gbapal.lz"); +const u16 gItemIconPalette_LureBall[] = INCBIN_U16("graphics/items/icon_palettes/lure_ball.gbapal"); const u32 gItemIcon_MoonBall[] = INCBIN_U32("graphics/items/icons/moon_ball.4bpp.lz"); -const u32 gItemIconPalette_MoonBall[] = INCBIN_U32("graphics/items/icon_palettes/moon_ball.gbapal.lz"); +const u16 gItemIconPalette_MoonBall[] = INCBIN_U16("graphics/items/icon_palettes/moon_ball.gbapal"); const u32 gItemIcon_FriendBall[] = INCBIN_U32("graphics/items/icons/friend_ball.4bpp.lz"); -const u32 gItemIconPalette_FriendBall[] = INCBIN_U32("graphics/items/icon_palettes/friend_ball.gbapal.lz"); +const u16 gItemIconPalette_FriendBall[] = INCBIN_U16("graphics/items/icon_palettes/friend_ball.gbapal"); const u32 gItemIcon_LoveBall[] = INCBIN_U32("graphics/items/icons/love_ball.4bpp.lz"); -const u32 gItemIconPalette_LoveBall[] = INCBIN_U32("graphics/items/icon_palettes/love_ball.gbapal.lz"); +const u16 gItemIconPalette_LoveBall[] = INCBIN_U16("graphics/items/icon_palettes/love_ball.gbapal"); const u32 gItemIcon_FastBall[] = INCBIN_U32("graphics/items/icons/fast_ball.4bpp.lz"); -const u32 gItemIconPalette_FastBall[] = INCBIN_U32("graphics/items/icon_palettes/fast_ball.gbapal.lz"); +const u16 gItemIconPalette_FastBall[] = INCBIN_U16("graphics/items/icon_palettes/fast_ball.gbapal"); const u32 gItemIcon_HeavyBall[] = INCBIN_U32("graphics/items/icons/heavy_ball.4bpp.lz"); -const u32 gItemIconPalette_HeavyBall[] = INCBIN_U32("graphics/items/icon_palettes/heavy_ball.gbapal.lz"); +const u16 gItemIconPalette_HeavyBall[] = INCBIN_U16("graphics/items/icon_palettes/heavy_ball.gbapal"); const u32 gItemIcon_DreamBall[] = INCBIN_U32("graphics/items/icons/dream_ball.4bpp.lz"); -const u32 gItemIconPalette_DreamBall[] = INCBIN_U32("graphics/items/icon_palettes/dream_ball.gbapal.lz"); +const u16 gItemIconPalette_DreamBall[] = INCBIN_U16("graphics/items/icon_palettes/dream_ball.gbapal"); const u32 gItemIcon_SafariBall[] = INCBIN_U32("graphics/items/icons/safari_ball.4bpp.lz"); -const u32 gItemIconPalette_SafariBall[] = INCBIN_U32("graphics/items/icon_palettes/safari_ball.gbapal.lz"); +const u16 gItemIconPalette_SafariBall[] = INCBIN_U16("graphics/items/icon_palettes/safari_ball.gbapal"); const u32 gItemIcon_SportBall[] = INCBIN_U32("graphics/items/icons/sport_ball.4bpp.lz"); -const u32 gItemIconPalette_SportBall[] = INCBIN_U32("graphics/items/icon_palettes/sport_ball.gbapal.lz"); +const u16 gItemIconPalette_SportBall[] = INCBIN_U16("graphics/items/icon_palettes/sport_ball.gbapal"); const u32 gItemIcon_ParkBall[] = INCBIN_U32("graphics/items/icons/park_ball.4bpp.lz"); -const u32 gItemIconPalette_ParkBall[] = INCBIN_U32("graphics/items/icon_palettes/park_ball.gbapal.lz"); +const u16 gItemIconPalette_ParkBall[] = INCBIN_U16("graphics/items/icon_palettes/park_ball.gbapal"); const u32 gItemIcon_BeastBall[] = INCBIN_U32("graphics/items/icons/beast_ball.4bpp.lz"); -const u32 gItemIconPalette_BeastBall[] = INCBIN_U32("graphics/items/icon_palettes/beast_ball.gbapal.lz"); +const u16 gItemIconPalette_BeastBall[] = INCBIN_U16("graphics/items/icon_palettes/beast_ball.gbapal"); const u32 gItemIcon_CherishBall[] = INCBIN_U32("graphics/items/icons/cherish_ball.4bpp.lz"); -const u32 gItemIconPalette_CherishBall[] = INCBIN_U32("graphics/items/icon_palettes/cherish_ball.gbapal.lz"); +const u16 gItemIconPalette_CherishBall[] = INCBIN_U16("graphics/items/icon_palettes/cherish_ball.gbapal"); // Medicine const u32 gItemIcon_Potion[] = INCBIN_U32("graphics/items/icons/potion.4bpp.lz"); -const u32 gItemIconPalette_Potion[] = INCBIN_U32("graphics/items/icon_palettes/potion.gbapal.lz"); +const u16 gItemIconPalette_Potion[] = INCBIN_U16("graphics/items/icon_palettes/potion.gbapal"); -const u32 gItemIconPalette_SuperPotion[] = INCBIN_U32("graphics/items/icon_palettes/super_potion.gbapal.lz"); +const u16 gItemIconPalette_SuperPotion[] = INCBIN_U16("graphics/items/icon_palettes/super_potion.gbapal"); -const u32 gItemIconPalette_HyperPotion[] = INCBIN_U32("graphics/items/icon_palettes/hyper_potion.gbapal.lz"); +const u16 gItemIconPalette_HyperPotion[] = INCBIN_U16("graphics/items/icon_palettes/hyper_potion.gbapal"); const u32 gItemIcon_LargePotion[] = INCBIN_U32("graphics/items/icons/large_potion.4bpp.lz"); -const u32 gItemIconPalette_MaxPotion[] = INCBIN_U32("graphics/items/icon_palettes/max_potion.gbapal.lz"); +const u16 gItemIconPalette_MaxPotion[] = INCBIN_U16("graphics/items/icon_palettes/max_potion.gbapal"); -const u32 gItemIconPalette_FullRestore[] = INCBIN_U32("graphics/items/icon_palettes/full_restore.gbapal.lz"); +const u16 gItemIconPalette_FullRestore[] = INCBIN_U16("graphics/items/icon_palettes/full_restore.gbapal"); const u32 gItemIcon_Revive[] = INCBIN_U32("graphics/items/icons/revive.4bpp.lz"); -const u32 gItemIconPalette_Revive[] = INCBIN_U32("graphics/items/icon_palettes/revive.gbapal.lz"); +const u16 gItemIconPalette_Revive[] = INCBIN_U16("graphics/items/icon_palettes/revive.gbapal"); const u32 gItemIcon_MaxRevive[] = INCBIN_U32("graphics/items/icons/max_revive.4bpp.lz"); const u32 gItemIcon_FreshWater[] = INCBIN_U32("graphics/items/icons/fresh_water.4bpp.lz"); -const u32 gItemIconPalette_FreshWater[] = INCBIN_U32("graphics/items/icon_palettes/fresh_water.gbapal.lz"); +const u16 gItemIconPalette_FreshWater[] = INCBIN_U16("graphics/items/icon_palettes/fresh_water.gbapal"); const u32 gItemIcon_SodaPop[] = INCBIN_U32("graphics/items/icons/soda_pop.4bpp.lz"); -const u32 gItemIconPalette_SodaPop[] = INCBIN_U32("graphics/items/icon_palettes/soda_pop.gbapal.lz"); +const u16 gItemIconPalette_SodaPop[] = INCBIN_U16("graphics/items/icon_palettes/soda_pop.gbapal"); const u32 gItemIcon_Lemonade[] = INCBIN_U32("graphics/items/icons/lemonade.4bpp.lz"); -const u32 gItemIconPalette_Lemonade[] = INCBIN_U32("graphics/items/icon_palettes/lemonade.gbapal.lz"); +const u16 gItemIconPalette_Lemonade[] = INCBIN_U16("graphics/items/icon_palettes/lemonade.gbapal"); const u32 gItemIcon_MoomooMilk[] = INCBIN_U32("graphics/items/icons/moomoo_milk.4bpp.lz"); -const u32 gItemIconPalette_MoomooMilk[] = INCBIN_U32("graphics/items/icon_palettes/moomoo_milk.gbapal.lz"); +const u16 gItemIconPalette_MoomooMilk[] = INCBIN_U16("graphics/items/icon_palettes/moomoo_milk.gbapal"); const u32 gItemIcon_Powder[] = INCBIN_U32("graphics/items/icons/powder.4bpp.lz"); -const u32 gItemIconPalette_EnergyPowder[] = INCBIN_U32("graphics/items/icon_palettes/energy_powder.gbapal.lz"); +const u16 gItemIconPalette_EnergyPowder[] = INCBIN_U16("graphics/items/icon_palettes/energy_powder.gbapal"); const u32 gItemIcon_EnergyRoot[] = INCBIN_U32("graphics/items/icons/energy_root.4bpp.lz"); -const u32 gItemIconPalette_EnergyRoot[] = INCBIN_U32("graphics/items/icon_palettes/energy_root.gbapal.lz"); +const u16 gItemIconPalette_EnergyRoot[] = INCBIN_U16("graphics/items/icon_palettes/energy_root.gbapal"); -const u32 gItemIconPalette_HealPowder[] = INCBIN_U32("graphics/items/icon_palettes/heal_powder.gbapal.lz"); +const u16 gItemIconPalette_HealPowder[] = INCBIN_U16("graphics/items/icon_palettes/heal_powder.gbapal"); const u32 gItemIcon_RevivalHerb[] = INCBIN_U32("graphics/items/icons/revival_herb.4bpp.lz"); -const u32 gItemIconPalette_RevivalHerb[] = INCBIN_U32("graphics/items/icon_palettes/revival_herb.gbapal.lz"); +const u16 gItemIconPalette_RevivalHerb[] = INCBIN_U16("graphics/items/icon_palettes/revival_herb.gbapal"); const u32 gItemIcon_Antidote[] = INCBIN_U32("graphics/items/icons/antidote.4bpp.lz"); -const u32 gItemIconPalette_Antidote[] = INCBIN_U32("graphics/items/icon_palettes/antidote.gbapal.lz"); +const u16 gItemIconPalette_Antidote[] = INCBIN_U16("graphics/items/icon_palettes/antidote.gbapal"); const u32 gItemIcon_StatusHeal[] = INCBIN_U32("graphics/items/icons/status_heal.4bpp.lz"); -const u32 gItemIconPalette_ParalyzeHeal[] = INCBIN_U32("graphics/items/icon_palettes/paralyze_heal.gbapal.lz"); +const u16 gItemIconPalette_ParalyzeHeal[] = INCBIN_U16("graphics/items/icon_palettes/paralyze_heal.gbapal"); -const u32 gItemIconPalette_BurnHeal[] = INCBIN_U32("graphics/items/icon_palettes/burn_heal.gbapal.lz"); +const u16 gItemIconPalette_BurnHeal[] = INCBIN_U16("graphics/items/icon_palettes/burn_heal.gbapal"); -const u32 gItemIconPalette_IceHeal[] = INCBIN_U32("graphics/items/icon_palettes/ice_heal.gbapal.lz"); +const u16 gItemIconPalette_IceHeal[] = INCBIN_U16("graphics/items/icon_palettes/ice_heal.gbapal"); -const u32 gItemIconPalette_Awakening[] = INCBIN_U32("graphics/items/icon_palettes/awakening.gbapal.lz"); +const u16 gItemIconPalette_Awakening[] = INCBIN_U16("graphics/items/icon_palettes/awakening.gbapal"); const u32 gItemIcon_FullHeal[] = INCBIN_U32("graphics/items/icons/full_heal.4bpp.lz"); -const u32 gItemIconPalette_FullHeal[] = INCBIN_U32("graphics/items/icon_palettes/full_heal.gbapal.lz"); +const u16 gItemIconPalette_FullHeal[] = INCBIN_U16("graphics/items/icon_palettes/full_heal.gbapal"); const u32 gItemIcon_Ether[] = INCBIN_U32("graphics/items/icons/ether.4bpp.lz"); -const u32 gItemIconPalette_Ether[] = INCBIN_U32("graphics/items/icon_palettes/ether.gbapal.lz"); +const u16 gItemIconPalette_Ether[] = INCBIN_U16("graphics/items/icon_palettes/ether.gbapal"); -const u32 gItemIconPalette_MaxEther[] = INCBIN_U32("graphics/items/icon_palettes/max_ether.gbapal.lz"); +const u16 gItemIconPalette_MaxEther[] = INCBIN_U16("graphics/items/icon_palettes/max_ether.gbapal"); -const u32 gItemIconPalette_Elixir[] = INCBIN_U32("graphics/items/icon_palettes/elixir.gbapal.lz"); +const u16 gItemIconPalette_Elixir[] = INCBIN_U16("graphics/items/icon_palettes/elixir.gbapal"); -const u32 gItemIconPalette_MaxElixir[] = INCBIN_U32("graphics/items/icon_palettes/max_elixir.gbapal.lz"); +const u16 gItemIconPalette_MaxElixir[] = INCBIN_U16("graphics/items/icon_palettes/max_elixir.gbapal"); const u32 gItemIcon_BerryJuice[] = INCBIN_U32("graphics/items/icons/berry_juice.4bpp.lz"); -const u32 gItemIconPalette_BerryJuice[] = INCBIN_U32("graphics/items/icon_palettes/berry_juice.gbapal.lz"); +const u16 gItemIconPalette_BerryJuice[] = INCBIN_U16("graphics/items/icon_palettes/berry_juice.gbapal"); const u32 gItemIcon_SacredAsh[] = INCBIN_U32("graphics/items/icons/sacred_ash.4bpp.lz"); -const u32 gItemIconPalette_SacredAsh[] = INCBIN_U32("graphics/items/icon_palettes/sacred_ash.gbapal.lz"); +const u16 gItemIconPalette_SacredAsh[] = INCBIN_U16("graphics/items/icon_palettes/sacred_ash.gbapal"); const u32 gItemIcon_SweetHeart[] = INCBIN_U32("graphics/items/icons/sweet_heart.4bpp.lz"); -const u32 gItemIconPalette_SweetHeart[] = INCBIN_U32("graphics/items/icon_palettes/sweet_heart.gbapal.lz"); +const u16 gItemIconPalette_SweetHeart[] = INCBIN_U16("graphics/items/icon_palettes/sweet_heart.gbapal"); const u32 gItemIcon_MaxHoney[] = INCBIN_U32("graphics/items/icons/max_honey.4bpp.lz"); -const u32 gItemIconPalette_MaxHoney[] = INCBIN_U32("graphics/items/icon_palettes/max_honey.gbapal.lz"); +const u16 gItemIconPalette_MaxHoney[] = INCBIN_U16("graphics/items/icon_palettes/max_honey.gbapal"); // Regional Specialties const u32 gItemIcon_PewterCrunchies[] = INCBIN_U32("graphics/items/icons/pewter_crunchies.4bpp.lz"); -const u32 gItemIconPalette_PewterCrunchies[] = INCBIN_U32("graphics/items/icon_palettes/pewter_crunchies.gbapal.lz"); +const u16 gItemIconPalette_PewterCrunchies[] = INCBIN_U16("graphics/items/icon_palettes/pewter_crunchies.gbapal"); const u32 gItemIcon_RageCandyBar[] = INCBIN_U32("graphics/items/icons/rage_candy_bar.4bpp.lz"); -const u32 gItemIconPalette_RageCandyBar[] = INCBIN_U32("graphics/items/icon_palettes/rage_candy_bar.gbapal.lz"); +const u16 gItemIconPalette_RageCandyBar[] = INCBIN_U16("graphics/items/icon_palettes/rage_candy_bar.gbapal"); const u32 gItemIcon_LavaCookie[] = INCBIN_U32("graphics/items/icons/lava_cookie.4bpp.lz"); -const u32 gItemIconPalette_LavaCookieAndLetter[] = INCBIN_U32("graphics/items/icon_palettes/lava_cookie_and_letter.gbapal.lz"); +const u16 gItemIconPalette_LavaCookieAndLetter[] = INCBIN_U16("graphics/items/icon_palettes/lava_cookie_and_letter.gbapal"); const u32 gItemIcon_OldGateau[] = INCBIN_U32("graphics/items/icons/old_gateau.4bpp.lz"); -const u32 gItemIconPalette_OldGateau[] = INCBIN_U32("graphics/items/icon_palettes/old_gateau.gbapal.lz"); +const u16 gItemIconPalette_OldGateau[] = INCBIN_U16("graphics/items/icon_palettes/old_gateau.gbapal"); const u32 gItemIcon_Casteliacone[] = INCBIN_U32("graphics/items/icons/casteliacone.4bpp.lz"); -const u32 gItemIconPalette_Casteliacone[] = INCBIN_U32("graphics/items/icon_palettes/casteliacone.gbapal.lz"); +const u16 gItemIconPalette_Casteliacone[] = INCBIN_U16("graphics/items/icon_palettes/casteliacone.gbapal"); const u32 gItemIcon_LumioseGalette[] = INCBIN_U32("graphics/items/icons/lumiose_galette.4bpp.lz"); -const u32 gItemIconPalette_LumioseGalette[] = INCBIN_U32("graphics/items/icon_palettes/lumiose_galette.gbapal.lz"); +const u16 gItemIconPalette_LumioseGalette[] = INCBIN_U16("graphics/items/icon_palettes/lumiose_galette.gbapal"); const u32 gItemIcon_ShalourSable[] = INCBIN_U32("graphics/items/icons/shalour_sable.4bpp.lz"); -const u32 gItemIconPalette_ShalourSable[] = INCBIN_U32("graphics/items/icon_palettes/shalour_sable.gbapal.lz"); +const u16 gItemIconPalette_ShalourSable[] = INCBIN_U16("graphics/items/icon_palettes/shalour_sable.gbapal"); const u32 gItemIcon_BigMalasada[] = INCBIN_U32("graphics/items/icons/big_malasada.4bpp.lz"); -const u32 gItemIconPalette_BigMalasada[] = INCBIN_U32("graphics/items/icon_palettes/big_malasada.gbapal.lz"); +const u16 gItemIconPalette_BigMalasada[] = INCBIN_U16("graphics/items/icon_palettes/big_malasada.gbapal"); // Vitamins const u32 gItemIcon_HPUp[] = INCBIN_U32("graphics/items/icons/hp_up.4bpp.lz"); -const u32 gItemIconPalette_HPUp[] = INCBIN_U32("graphics/items/icon_palettes/hp_up.gbapal.lz"); +const u16 gItemIconPalette_HPUp[] = INCBIN_U16("graphics/items/icon_palettes/hp_up.gbapal"); const u32 gItemIcon_Vitamin[] = INCBIN_U32("graphics/items/icons/vitamin.4bpp.lz"); -const u32 gItemIconPalette_Protein[] = INCBIN_U32("graphics/items/icon_palettes/protein.gbapal.lz"); +const u16 gItemIconPalette_Protein[] = INCBIN_U16("graphics/items/icon_palettes/protein.gbapal"); -const u32 gItemIconPalette_Iron[] = INCBIN_U32("graphics/items/icon_palettes/iron.gbapal.lz"); +const u16 gItemIconPalette_Iron[] = INCBIN_U16("graphics/items/icon_palettes/iron.gbapal"); -const u32 gItemIconPalette_Calcium[] = INCBIN_U32("graphics/items/icon_palettes/calcium.gbapal.lz"); +const u16 gItemIconPalette_Calcium[] = INCBIN_U16("graphics/items/icon_palettes/calcium.gbapal"); -const u32 gItemIconPalette_Zinc[] = INCBIN_U32("graphics/items/icon_palettes/zinc.gbapal.lz"); +const u16 gItemIconPalette_Zinc[] = INCBIN_U16("graphics/items/icon_palettes/zinc.gbapal"); -const u32 gItemIconPalette_Carbos[] = INCBIN_U32("graphics/items/icon_palettes/carbos.gbapal.lz"); +const u16 gItemIconPalette_Carbos[] = INCBIN_U16("graphics/items/icon_palettes/carbos.gbapal"); const u32 gItemIcon_PPUp[] = INCBIN_U32("graphics/items/icons/pp_up.4bpp.lz"); -const u32 gItemIconPalette_PPUp[] = INCBIN_U32("graphics/items/icon_palettes/pp_up.gbapal.lz"); +const u16 gItemIconPalette_PPUp[] = INCBIN_U16("graphics/items/icon_palettes/pp_up.gbapal"); const u32 gItemIcon_PPMax[] = INCBIN_U32("graphics/items/icons/pp_max.4bpp.lz"); -const u32 gItemIconPalette_PPMax[] = INCBIN_U32("graphics/items/icon_palettes/pp_max.gbapal.lz"); +const u16 gItemIconPalette_PPMax[] = INCBIN_U16("graphics/items/icon_palettes/pp_max.gbapal"); // EV Feathers const u32 gItemIcon_HealthFeather[] = INCBIN_U32("graphics/items/icons/health_feather.4bpp.lz"); -const u32 gItemIconPalette_HealthFeather[] = INCBIN_U32("graphics/items/icon_palettes/health_feather.gbapal.lz"); +const u16 gItemIconPalette_HealthFeather[] = INCBIN_U16("graphics/items/icon_palettes/health_feather.gbapal"); const u32 gItemIcon_MuscleFeather[] = INCBIN_U32("graphics/items/icons/muscle_feather.4bpp.lz"); -const u32 gItemIconPalette_MuscleFeather[] = INCBIN_U32("graphics/items/icon_palettes/muscle_feather.gbapal.lz"); +const u16 gItemIconPalette_MuscleFeather[] = INCBIN_U16("graphics/items/icon_palettes/muscle_feather.gbapal"); const u32 gItemIcon_ResistFeather[] = INCBIN_U32("graphics/items/icons/resist_feather.4bpp.lz"); -const u32 gItemIconPalette_ResistFeather[] = INCBIN_U32("graphics/items/icon_palettes/resist_feather.gbapal.lz"); +const u16 gItemIconPalette_ResistFeather[] = INCBIN_U16("graphics/items/icon_palettes/resist_feather.gbapal"); const u32 gItemIcon_GeniusFeather[] = INCBIN_U32("graphics/items/icons/genius_feather.4bpp.lz"); -const u32 gItemIconPalette_GeniusFeather[] = INCBIN_U32("graphics/items/icon_palettes/genius_feather.gbapal.lz"); +const u16 gItemIconPalette_GeniusFeather[] = INCBIN_U16("graphics/items/icon_palettes/genius_feather.gbapal"); const u32 gItemIcon_CleverFeather[] = INCBIN_U32("graphics/items/icons/clever_feather.4bpp.lz"); -const u32 gItemIconPalette_CleverFeather[] = INCBIN_U32("graphics/items/icon_palettes/clever_feather.gbapal.lz"); +const u16 gItemIconPalette_CleverFeather[] = INCBIN_U16("graphics/items/icon_palettes/clever_feather.gbapal"); const u32 gItemIcon_SwiftFeather[] = INCBIN_U32("graphics/items/icons/swift_feather.4bpp.lz"); -const u32 gItemIconPalette_SwiftFeather[] = INCBIN_U32("graphics/items/icon_palettes/swift_feather.gbapal.lz"); +const u16 gItemIconPalette_SwiftFeather[] = INCBIN_U16("graphics/items/icon_palettes/swift_feather.gbapal"); // Ability Modifiers const u32 gItemIcon_AbilityCapsule[] = INCBIN_U32("graphics/items/icons/ability_capsule.4bpp.lz"); -const u32 gItemIconPalette_AbilityCapsule[] = INCBIN_U32("graphics/items/icon_palettes/ability_capsule.gbapal.lz"); +const u16 gItemIconPalette_AbilityCapsule[] = INCBIN_U16("graphics/items/icon_palettes/ability_capsule.gbapal"); const u32 gItemIcon_AbilityPatch[] = INCBIN_U32("graphics/items/icons/ability_patch.4bpp.lz"); -const u32 gItemIconPalette_AbilityPatch[] = INCBIN_U32("graphics/items/icon_palettes/ability_patch.gbapal.lz"); +const u16 gItemIconPalette_AbilityPatch[] = INCBIN_U16("graphics/items/icon_palettes/ability_patch.gbapal"); // Mints const u32 gItemIcon_Mint[] = INCBIN_U32("graphics/items/icons/mint.4bpp.lz"); -const u32 gItemIconPalette_RedMint[] = INCBIN_U32("graphics/items/icon_palettes/red_mint.gbapal.lz"); -const u32 gItemIconPalette_BlueMint[] = INCBIN_U32("graphics/items/icon_palettes/blue_mint.gbapal.lz"); -const u32 gItemIconPalette_LightBlueMint[] = INCBIN_U32("graphics/items/icon_palettes/light_blue_mint.gbapal.lz"); -const u32 gItemIconPalette_PinkMint[] = INCBIN_U32("graphics/items/icon_palettes/pink_mint.gbapal.lz"); -const u32 gItemIconPalette_GreenMint[] = INCBIN_U32("graphics/items/icon_palettes/green_mint.gbapal.lz"); -const u32 gItemIconPalette_YellowMint[] = INCBIN_U32("graphics/items/icon_palettes/yellow_mint.gbapal.lz"); +const u16 gItemIconPalette_RedMint[] = INCBIN_U16("graphics/items/icon_palettes/red_mint.gbapal"); +const u16 gItemIconPalette_BlueMint[] = INCBIN_U16("graphics/items/icon_palettes/blue_mint.gbapal"); +const u16 gItemIconPalette_LightBlueMint[] = INCBIN_U16("graphics/items/icon_palettes/light_blue_mint.gbapal"); +const u16 gItemIconPalette_PinkMint[] = INCBIN_U16("graphics/items/icon_palettes/pink_mint.gbapal"); +const u16 gItemIconPalette_GreenMint[] = INCBIN_U16("graphics/items/icon_palettes/green_mint.gbapal"); +const u16 gItemIconPalette_YellowMint[] = INCBIN_U16("graphics/items/icon_palettes/yellow_mint.gbapal"); // Candy const u32 gItemIcon_RareCandy[] = INCBIN_U32("graphics/items/icons/rare_candy.4bpp.lz"); -const u32 gItemIconPalette_RareCandy[] = INCBIN_U32("graphics/items/icon_palettes/rare_candy.gbapal.lz"); +const u16 gItemIconPalette_RareCandy[] = INCBIN_U16("graphics/items/icon_palettes/rare_candy.gbapal"); const u32 gItemIcon_ExpCandyXS[] = INCBIN_U32("graphics/items/icons/exp_candy_xs.4bpp.lz"); const u32 gItemIcon_ExpCandyS[] = INCBIN_U32("graphics/items/icons/exp_candy_s.4bpp.lz"); const u32 gItemIcon_ExpCandyM[] = INCBIN_U32("graphics/items/icons/exp_candy_m.4bpp.lz"); const u32 gItemIcon_ExpCandyL[] = INCBIN_U32("graphics/items/icons/exp_candy_l.4bpp.lz"); const u32 gItemIcon_ExpCandyXL[] = INCBIN_U32("graphics/items/icons/exp_candy_xl.4bpp.lz"); -const u32 gItemIconPalette_ExpCandies[] = INCBIN_U32("graphics/items/icon_palettes/exp_candies.gbapal.lz"); +const u16 gItemIconPalette_ExpCandies[] = INCBIN_U16("graphics/items/icon_palettes/exp_candies.gbapal"); const u32 gItemIcon_DynamaxCandy[] = INCBIN_U32("graphics/items/icons/dynamax_candy.4bpp.lz"); -const u32 gItemIconPalette_DynamaxCandy[] = INCBIN_U32("graphics/items/icon_palettes/dynamax_candy.gbapal.lz"); +const u16 gItemIconPalette_DynamaxCandy[] = INCBIN_U16("graphics/items/icon_palettes/dynamax_candy.gbapal"); // Medicinal Flutes const u32 gItemIcon_Flute[] = INCBIN_U32("graphics/items/icons/flute.4bpp.lz"); -const u32 gItemIconPalette_BlueFlute[] = INCBIN_U32("graphics/items/icon_palettes/blue_flute.gbapal.lz"); +const u16 gItemIconPalette_BlueFlute[] = INCBIN_U16("graphics/items/icon_palettes/blue_flute.gbapal"); -const u32 gItemIconPalette_YellowFlute[] = INCBIN_U32("graphics/items/icon_palettes/yellow_flute.gbapal.lz"); +const u16 gItemIconPalette_YellowFlute[] = INCBIN_U16("graphics/items/icon_palettes/yellow_flute.gbapal"); -const u32 gItemIconPalette_RedFlute[] = INCBIN_U32("graphics/items/icon_palettes/red_flute.gbapal.lz"); +const u16 gItemIconPalette_RedFlute[] = INCBIN_U16("graphics/items/icon_palettes/red_flute.gbapal"); // Encounter-modifying Flutes -const u32 gItemIconPalette_BlackFlute[] = INCBIN_U32("graphics/items/icon_palettes/black_flute.gbapal.lz"); +const u16 gItemIconPalette_BlackFlute[] = INCBIN_U16("graphics/items/icon_palettes/black_flute.gbapal"); -const u32 gItemIconPalette_WhiteFlute[] = INCBIN_U32("graphics/items/icon_palettes/white_flute.gbapal.lz"); +const u16 gItemIconPalette_WhiteFlute[] = INCBIN_U16("graphics/items/icon_palettes/white_flute.gbapal"); // Encounter Modifiers const u32 gItemIcon_Repel[] = INCBIN_U32("graphics/items/icons/repel.4bpp.lz"); -const u32 gItemIconPalette_Repel[] = INCBIN_U32("graphics/items/icon_palettes/repel.gbapal.lz"); +const u16 gItemIconPalette_Repel[] = INCBIN_U16("graphics/items/icon_palettes/repel.gbapal"); -const u32 gItemIconPalette_SuperRepel[] = INCBIN_U32("graphics/items/icon_palettes/super_repel.gbapal.lz"); +const u16 gItemIconPalette_SuperRepel[] = INCBIN_U16("graphics/items/icon_palettes/super_repel.gbapal"); -const u32 gItemIconPalette_MaxRepel[] = INCBIN_U32("graphics/items/icon_palettes/max_repel.gbapal.lz"); +const u16 gItemIconPalette_MaxRepel[] = INCBIN_U16("graphics/items/icon_palettes/max_repel.gbapal"); const u32 gItemIcon_Lure[] = INCBIN_U32("graphics/items/icons/lure.4bpp.lz"); -const u32 gItemIconPalette_Lure[] = INCBIN_U32("graphics/items/icon_palettes/lure.gbapal.lz"); -const u32 gItemIconPalette_SuperLure[] = INCBIN_U32("graphics/items/icon_palettes/super_lure.gbapal.lz"); -const u32 gItemIconPalette_MaxLure[] = INCBIN_U32("graphics/items/icon_palettes/max_lure.gbapal.lz"); +const u16 gItemIconPalette_Lure[] = INCBIN_U16("graphics/items/icon_palettes/lure.gbapal"); +const u16 gItemIconPalette_SuperLure[] = INCBIN_U16("graphics/items/icon_palettes/super_lure.gbapal"); +const u16 gItemIconPalette_MaxLure[] = INCBIN_U16("graphics/items/icon_palettes/max_lure.gbapal"); const u32 gItemIcon_EscapeRope[] = INCBIN_U32("graphics/items/icons/escape_rope.4bpp.lz"); -const u32 gItemIconPalette_EscapeRope[] = INCBIN_U32("graphics/items/icon_palettes/escape_rope.gbapal.lz"); +const u16 gItemIconPalette_EscapeRope[] = INCBIN_U16("graphics/items/icon_palettes/escape_rope.gbapal"); // X Items const u32 gItemIcon_BattleStatItem[] = INCBIN_U32("graphics/items/icons/battle_stat_item.4bpp.lz"); -const u32 gItemIconPalette_XAttack[] = INCBIN_U32("graphics/items/icon_palettes/x_attack.gbapal.lz"); +const u16 gItemIconPalette_XAttack[] = INCBIN_U16("graphics/items/icon_palettes/x_attack.gbapal"); -const u32 gItemIconPalette_XDefend[] = INCBIN_U32("graphics/items/icon_palettes/x_defend.gbapal.lz"); +const u16 gItemIconPalette_XDefend[] = INCBIN_U16("graphics/items/icon_palettes/x_defend.gbapal"); -const u32 gItemIconPalette_XSpecial[] = INCBIN_U32("graphics/items/icon_palettes/x_special.gbapal.lz"); +const u16 gItemIconPalette_XSpecial[] = INCBIN_U16("graphics/items/icon_palettes/x_special.gbapal"); const u32 gItemIcon_XSpecialDefense[] = INCBIN_U32("graphics/items/icons/x_special_defense.4bpp.lz"); -const u32 gItemIconPalette_XSpecialDefense[] = INCBIN_U32("graphics/items/icon_palettes/x_special_defense.gbapal.lz"); +const u16 gItemIconPalette_XSpecialDefense[] = INCBIN_U16("graphics/items/icon_palettes/x_special_defense.gbapal"); -const u32 gItemIconPalette_XSpeed[] = INCBIN_U32("graphics/items/icon_palettes/x_speed.gbapal.lz"); +const u16 gItemIconPalette_XSpeed[] = INCBIN_U16("graphics/items/icon_palettes/x_speed.gbapal"); -const u32 gItemIconPalette_XAccuracy[] = INCBIN_U32("graphics/items/icon_palettes/x_accuracy.gbapal.lz"); +const u16 gItemIconPalette_XAccuracy[] = INCBIN_U16("graphics/items/icon_palettes/x_accuracy.gbapal"); -const u32 gItemIconPalette_DireHit[] = INCBIN_U32("graphics/items/icon_palettes/dire_hit.gbapal.lz"); +const u16 gItemIconPalette_DireHit[] = INCBIN_U16("graphics/items/icon_palettes/dire_hit.gbapal"); -const u32 gItemIconPalette_GuardSpec[] = INCBIN_U32("graphics/items/icon_palettes/guard_spec.gbapal.lz"); +const u16 gItemIconPalette_GuardSpec[] = INCBIN_U16("graphics/items/icon_palettes/guard_spec.gbapal"); // Escape Items const u32 gItemIcon_PokeDoll[] = INCBIN_U32("graphics/items/icons/poke_doll.4bpp.lz"); -const u32 gItemIconPalette_PokeDoll[] = INCBIN_U32("graphics/items/icon_palettes/poke_doll.gbapal.lz"); +const u16 gItemIconPalette_PokeDoll[] = INCBIN_U16("graphics/items/icon_palettes/poke_doll.gbapal"); const u32 gItemIcon_FluffyTail[] = INCBIN_U32("graphics/items/icons/fluffy_tail.4bpp.lz"); -const u32 gItemIconPalette_FluffyTail[] = INCBIN_U32("graphics/items/icon_palettes/fluffy_tail.gbapal.lz"); +const u16 gItemIconPalette_FluffyTail[] = INCBIN_U16("graphics/items/icon_palettes/fluffy_tail.gbapal"); const u32 gItemIcon_PokeToy[] = INCBIN_U32("graphics/items/icons/poke_toy.4bpp.lz"); -const u32 gItemIconPalette_PokeToy[] = INCBIN_U32("graphics/items/icon_palettes/poke_toy.gbapal.lz"); +const u16 gItemIconPalette_PokeToy[] = INCBIN_U16("graphics/items/icon_palettes/poke_toy.gbapal"); const u32 gItemIcon_MaxMushrooms[] = INCBIN_U32("graphics/items/icons/max_mushrooms.4bpp.lz"); -const u32 gItemIconPalette_MaxMushrooms[] = INCBIN_U32("graphics/items/icon_palettes/max_mushrooms.gbapal.lz"); +const u16 gItemIconPalette_MaxMushrooms[] = INCBIN_U16("graphics/items/icon_palettes/max_mushrooms.gbapal"); // Treasures const u32 gItemIcon_BottleCap[] = INCBIN_U32("graphics/items/icons/bottle_cap.4bpp.lz"); -const u32 gItemIconPalette_BottleCap[] = INCBIN_U32("graphics/items/icon_palettes/bottle_cap.gbapal.lz"); -const u32 gItemIconPalette_GoldBottleCap[] = INCBIN_U32("graphics/items/icon_palettes/gold_bottle_cap.gbapal.lz"); +const u16 gItemIconPalette_BottleCap[] = INCBIN_U16("graphics/items/icon_palettes/bottle_cap.gbapal"); +const u16 gItemIconPalette_GoldBottleCap[] = INCBIN_U16("graphics/items/icon_palettes/gold_bottle_cap.gbapal"); const u32 gItemIcon_Nugget[] = INCBIN_U32("graphics/items/icons/nugget.4bpp.lz"); -const u32 gItemIconPalette_Nugget[] = INCBIN_U32("graphics/items/icon_palettes/nugget.gbapal.lz"); +const u16 gItemIconPalette_Nugget[] = INCBIN_U16("graphics/items/icon_palettes/nugget.gbapal"); const u32 gItemIcon_BigNugget[] = INCBIN_U32("graphics/items/icons/big_nugget.4bpp.lz"); -const u32 gItemIconPalette_BigNugget[] = INCBIN_U32("graphics/items/icon_palettes/big_nugget.gbapal.lz"); +const u16 gItemIconPalette_BigNugget[] = INCBIN_U16("graphics/items/icon_palettes/big_nugget.gbapal"); const u32 gItemIcon_TinyMushroom[] = INCBIN_U32("graphics/items/icons/tiny_mushroom.4bpp.lz"); -const u32 gItemIconPalette_Mushroom[] = INCBIN_U32("graphics/items/icon_palettes/mushroom.gbapal.lz"); +const u16 gItemIconPalette_Mushroom[] = INCBIN_U16("graphics/items/icon_palettes/mushroom.gbapal"); const u32 gItemIcon_BigMushroom[] = INCBIN_U32("graphics/items/icons/big_mushroom.4bpp.lz"); const u32 gItemIcon_BalmMushroom[] = INCBIN_U32("graphics/items/icons/balm_mushroom.4bpp.lz"); -const u32 gItemIconPalette_BalmMushroom[] = INCBIN_U32("graphics/items/icon_palettes/balm_mushroom.gbapal.lz"); +const u16 gItemIconPalette_BalmMushroom[] = INCBIN_U16("graphics/items/icon_palettes/balm_mushroom.gbapal"); const u32 gItemIcon_Pearl[] = INCBIN_U32("graphics/items/icons/pearl.4bpp.lz"); -const u32 gItemIconPalette_Pearl[] = INCBIN_U32("graphics/items/icon_palettes/pearl.gbapal.lz"); +const u16 gItemIconPalette_Pearl[] = INCBIN_U16("graphics/items/icon_palettes/pearl.gbapal"); const u32 gItemIcon_BigPearl[] = INCBIN_U32("graphics/items/icons/big_pearl.4bpp.lz"); const u32 gItemIcon_PearlString[] = INCBIN_U32("graphics/items/icons/pearl_string.4bpp.lz"); -const u32 gItemIconPalette_PearlString[] = INCBIN_U32("graphics/items/icon_palettes/pearl_string.gbapal.lz"); +const u16 gItemIconPalette_PearlString[] = INCBIN_U16("graphics/items/icon_palettes/pearl_string.gbapal"); const u32 gItemIcon_Stardust[] = INCBIN_U32("graphics/items/icons/stardust.4bpp.lz"); -const u32 gItemIconPalette_Star[] = INCBIN_U32("graphics/items/icon_palettes/star.gbapal.lz"); +const u16 gItemIconPalette_Star[] = INCBIN_U16("graphics/items/icon_palettes/star.gbapal"); const u32 gItemIcon_StarPiece[] = INCBIN_U32("graphics/items/icons/star_piece.4bpp.lz"); const u32 gItemIcon_CometShard[] = INCBIN_U32("graphics/items/icons/comet_shard.4bpp.lz"); -const u32 gItemIconPalette_CometShard[] = INCBIN_U32("graphics/items/icon_palettes/comet_shard.gbapal.lz"); +const u16 gItemIconPalette_CometShard[] = INCBIN_U16("graphics/items/icon_palettes/comet_shard.gbapal"); -const u32 gItemIconPalette_ShoalSalt[] = INCBIN_U32("graphics/items/icon_palettes/shoal_salt.gbapal.lz"); +const u16 gItemIconPalette_ShoalSalt[] = INCBIN_U16("graphics/items/icon_palettes/shoal_salt.gbapal"); const u32 gItemIcon_ShoalShell[] = INCBIN_U32("graphics/items/icons/shoal_shell.4bpp.lz"); -const u32 gItemIconPalette_Shell[] = INCBIN_U32("graphics/items/icon_palettes/shell.gbapal.lz"); +const u16 gItemIconPalette_Shell[] = INCBIN_U16("graphics/items/icon_palettes/shell.gbapal"); const u32 gItemIcon_Shard[] = INCBIN_U32("graphics/items/icons/shard.4bpp.lz"); -const u32 gItemIconPalette_RedShard[] = INCBIN_U32("graphics/items/icon_palettes/red_shard.gbapal.lz"); +const u16 gItemIconPalette_RedShard[] = INCBIN_U16("graphics/items/icon_palettes/red_shard.gbapal"); -const u32 gItemIconPalette_BlueShard[] = INCBIN_U32("graphics/items/icon_palettes/blue_shard.gbapal.lz"); +const u16 gItemIconPalette_BlueShard[] = INCBIN_U16("graphics/items/icon_palettes/blue_shard.gbapal"); -const u32 gItemIconPalette_YellowShard[] = INCBIN_U32("graphics/items/icon_palettes/yellow_shard.gbapal.lz"); +const u16 gItemIconPalette_YellowShard[] = INCBIN_U16("graphics/items/icon_palettes/yellow_shard.gbapal"); -const u32 gItemIconPalette_GreenShard[] = INCBIN_U32("graphics/items/icon_palettes/green_shard.gbapal.lz"); +const u16 gItemIconPalette_GreenShard[] = INCBIN_U16("graphics/items/icon_palettes/green_shard.gbapal"); const u32 gItemIcon_HeartScale[] = INCBIN_U32("graphics/items/icons/heart_scale.4bpp.lz"); -const u32 gItemIconPalette_HeartScale[] = INCBIN_U32("graphics/items/icon_palettes/heart_scale.gbapal.lz"); +const u16 gItemIconPalette_HeartScale[] = INCBIN_U16("graphics/items/icon_palettes/heart_scale.gbapal"); const u32 gItemIcon_Honey[] = INCBIN_U32("graphics/items/icons/honey.4bpp.lz"); -const u32 gItemIconPalette_Honey[] = INCBIN_U32("graphics/items/icon_palettes/honey.gbapal.lz"); +const u16 gItemIconPalette_Honey[] = INCBIN_U16("graphics/items/icon_palettes/honey.gbapal"); const u32 gItemIcon_RareBone[] = INCBIN_U32("graphics/items/icons/rare_bone.4bpp.lz"); -const u32 gItemIconPalette_RareBone[] = INCBIN_U32("graphics/items/icon_palettes/rare_bone.gbapal.lz"); +const u16 gItemIconPalette_RareBone[] = INCBIN_U16("graphics/items/icon_palettes/rare_bone.gbapal"); const u32 gItemIcon_OddKeystone[] = INCBIN_U32("graphics/items/icons/odd_keystone.4bpp.lz"); -const u32 gItemIconPalette_OddKeystone[] = INCBIN_U32("graphics/items/icon_palettes/odd_keystone.gbapal.lz"); +const u16 gItemIconPalette_OddKeystone[] = INCBIN_U16("graphics/items/icon_palettes/odd_keystone.gbapal"); const u32 gItemIcon_PrettyFeather[] = INCBIN_U32("graphics/items/icons/pretty_feather.4bpp.lz"); -const u32 gItemIconPalette_PrettyFeather[] = INCBIN_U32("graphics/items/icon_palettes/pretty_feather.gbapal.lz"); +const u16 gItemIconPalette_PrettyFeather[] = INCBIN_U16("graphics/items/icon_palettes/pretty_feather.gbapal"); const u32 gItemIcon_RelicCoin[] = INCBIN_U32("graphics/items/icons/relic_coin.4bpp.lz"); -const u32 gItemIconPalette_RelicCopper[] = INCBIN_U32("graphics/items/icon_palettes/relic_copper.gbapal.lz"); -const u32 gItemIconPalette_RelicSilver[] = INCBIN_U32("graphics/items/icon_palettes/relic_silver.gbapal.lz"); -const u32 gItemIconPalette_RelicGold[] = INCBIN_U32("graphics/items/icon_palettes/relic_gold.gbapal.lz"); +const u16 gItemIconPalette_RelicCopper[] = INCBIN_U16("graphics/items/icon_palettes/relic_copper.gbapal"); +const u16 gItemIconPalette_RelicSilver[] = INCBIN_U16("graphics/items/icon_palettes/relic_silver.gbapal"); +const u16 gItemIconPalette_RelicGold[] = INCBIN_U16("graphics/items/icon_palettes/relic_gold.gbapal"); const u32 gItemIcon_RelicVase[] = INCBIN_U32("graphics/items/icons/relic_vase.4bpp.lz"); -const u32 gItemIconPalette_Relics[] = INCBIN_U32("graphics/items/icon_palettes/relics.gbapal.lz"); +const u16 gItemIconPalette_Relics[] = INCBIN_U16("graphics/items/icon_palettes/relics.gbapal"); const u32 gItemIcon_RelicBand[] = INCBIN_U32("graphics/items/icons/relic_band.4bpp.lz"); const u32 gItemIcon_RelicStatue[] = INCBIN_U32("graphics/items/icons/relic_statue.4bpp.lz"); const u32 gItemIcon_RelicCrown[] = INCBIN_U32("graphics/items/icons/relic_crown.4bpp.lz"); const u32 gItemIcon_StrangeSouvenir[] = INCBIN_U32("graphics/items/icons/strange_souvenir.4bpp.lz"); -const u32 gItemIconPalette_StrangeSouvenir[] = INCBIN_U32("graphics/items/icon_palettes/strange_souvenir.gbapal.lz"); +const u16 gItemIconPalette_StrangeSouvenir[] = INCBIN_U16("graphics/items/icon_palettes/strange_souvenir.gbapal"); // Fossils const u32 gItemIcon_HelixFossil[] = INCBIN_U32("graphics/items/icons/helix_fossil.4bpp.lz"); -const u32 gItemIconPalette_KantoFossil[] = INCBIN_U32("graphics/items/icon_palettes/kanto_fossil.gbapal.lz"); +const u16 gItemIconPalette_KantoFossil[] = INCBIN_U16("graphics/items/icon_palettes/kanto_fossil.gbapal"); const u32 gItemIcon_DomeFossil[] = INCBIN_U32("graphics/items/icons/dome_fossil.4bpp.lz"); const u32 gItemIcon_OldAmber[] = INCBIN_U32("graphics/items/icons/old_amber.4bpp.lz"); -const u32 gItemIconPalette_OldAmber[] = INCBIN_U32("graphics/items/icon_palettes/old_amber.gbapal.lz"); +const u16 gItemIconPalette_OldAmber[] = INCBIN_U16("graphics/items/icon_palettes/old_amber.gbapal"); const u32 gItemIcon_RootFossil[] = INCBIN_U32("graphics/items/icons/root_fossil.4bpp.lz"); -const u32 gItemIconPalette_HoennFossil[] = INCBIN_U32("graphics/items/icon_palettes/hoenn_fossil.gbapal.lz"); +const u16 gItemIconPalette_HoennFossil[] = INCBIN_U16("graphics/items/icon_palettes/hoenn_fossil.gbapal"); const u32 gItemIcon_ClawFossil[] = INCBIN_U32("graphics/items/icons/claw_fossil.4bpp.lz"); const u32 gItemIcon_ArmorFossil[] = INCBIN_U32("graphics/items/icons/armor_fossil.4bpp.lz"); -const u32 gItemIconPalette_ArmorFossil[] = INCBIN_U32("graphics/items/icon_palettes/armor_fossil.gbapal.lz"); +const u16 gItemIconPalette_ArmorFossil[] = INCBIN_U16("graphics/items/icon_palettes/armor_fossil.gbapal"); const u32 gItemIcon_SkullFossil[] = INCBIN_U32("graphics/items/icons/skull_fossil.4bpp.lz"); -const u32 gItemIconPalette_SkullFossil[] = INCBIN_U32("graphics/items/icon_palettes/skull_fossil.gbapal.lz"); +const u16 gItemIconPalette_SkullFossil[] = INCBIN_U16("graphics/items/icon_palettes/skull_fossil.gbapal"); const u32 gItemIcon_CoverFossil[] = INCBIN_U32("graphics/items/icons/cover_fossil.4bpp.lz"); -const u32 gItemIconPalette_CoverFossil[] = INCBIN_U32("graphics/items/icon_palettes/cover_fossil.gbapal.lz"); +const u16 gItemIconPalette_CoverFossil[] = INCBIN_U16("graphics/items/icon_palettes/cover_fossil.gbapal"); const u32 gItemIcon_PlumeFossil[] = INCBIN_U32("graphics/items/icons/plume_fossil.4bpp.lz"); -const u32 gItemIconPalette_PlumeFossil[] = INCBIN_U32("graphics/items/icon_palettes/plume_fossil.gbapal.lz"); +const u16 gItemIconPalette_PlumeFossil[] = INCBIN_U16("graphics/items/icon_palettes/plume_fossil.gbapal"); const u32 gItemIcon_JawFossil[] = INCBIN_U32("graphics/items/icons/jaw_fossil.4bpp.lz"); -const u32 gItemIconPalette_JawFossil[] = INCBIN_U32("graphics/items/icon_palettes/jaw_fossil.gbapal.lz"); +const u16 gItemIconPalette_JawFossil[] = INCBIN_U16("graphics/items/icon_palettes/jaw_fossil.gbapal"); const u32 gItemIcon_SailFossil[] = INCBIN_U32("graphics/items/icons/sail_fossil.4bpp.lz"); -const u32 gItemIconPalette_SailFossil[] = INCBIN_U32("graphics/items/icon_palettes/sail_fossil.gbapal.lz"); +const u16 gItemIconPalette_SailFossil[] = INCBIN_U16("graphics/items/icon_palettes/sail_fossil.gbapal"); const u32 gItemIcon_FossilizedBird[] = INCBIN_U32("graphics/items/icons/fossilized_bird.4bpp.lz"); -const u32 gItemIconPalette_FossilizedBird[] = INCBIN_U32("graphics/items/icon_palettes/fossilized_bird.gbapal.lz"); +const u16 gItemIconPalette_FossilizedBird[] = INCBIN_U16("graphics/items/icon_palettes/fossilized_bird.gbapal"); const u32 gItemIcon_FossilizedFish[] = INCBIN_U32("graphics/items/icons/fossilized_fish.4bpp.lz"); -const u32 gItemIconPalette_FossilizedFish[] = INCBIN_U32("graphics/items/icon_palettes/fossilized_fish.gbapal.lz"); +const u16 gItemIconPalette_FossilizedFish[] = INCBIN_U16("graphics/items/icon_palettes/fossilized_fish.gbapal"); const u32 gItemIcon_FossilizedDrake[] = INCBIN_U32("graphics/items/icons/fossilized_drake.4bpp.lz"); -const u32 gItemIconPalette_FossilizedDrake[] = INCBIN_U32("graphics/items/icon_palettes/fossilized_drake.gbapal.lz"); +const u16 gItemIconPalette_FossilizedDrake[] = INCBIN_U16("graphics/items/icon_palettes/fossilized_drake.gbapal"); const u32 gItemIcon_FossilizedDino[] = INCBIN_U32("graphics/items/icons/fossilized_dino.4bpp.lz"); -const u32 gItemIconPalette_FossilizedDino[] = INCBIN_U32("graphics/items/icon_palettes/fossilized_dino.gbapal.lz"); +const u16 gItemIconPalette_FossilizedDino[] = INCBIN_U16("graphics/items/icon_palettes/fossilized_dino.gbapal"); // Mulch const u32 gItemIcon_Mulch[] = INCBIN_U32("graphics/items/icons/mulch.4bpp.lz"); -const u32 gItemIconPalette_GrowthMulch[] = INCBIN_U32("graphics/items/icon_palettes/growth_mulch.gbapal.lz"); -const u32 gItemIconPalette_DampMulch[] = INCBIN_U32("graphics/items/icon_palettes/damp_mulch.gbapal.lz"); +const u16 gItemIconPalette_GrowthMulch[] = INCBIN_U16("graphics/items/icon_palettes/growth_mulch.gbapal"); +const u16 gItemIconPalette_DampMulch[] = INCBIN_U16("graphics/items/icon_palettes/damp_mulch.gbapal"); const u32 gItemIcon_StableMulch[] = INCBIN_U32("graphics/items/icons/stable_mulch.4bpp.lz"); -const u32 gItemIconPalette_StableMulch[] = INCBIN_U32("graphics/items/icon_palettes/stable_mulch.gbapal.lz"); +const u16 gItemIconPalette_StableMulch[] = INCBIN_U16("graphics/items/icon_palettes/stable_mulch.gbapal"); -const u32 gItemIconPalette_GooeyMulch[] = INCBIN_U32("graphics/items/icon_palettes/gooey_mulch.gbapal.lz"); -const u32 gItemIconPalette_RichMulch[] = INCBIN_U32("graphics/items/icon_palettes/rich_mulch.gbapal.lz"); -const u32 gItemIconPalette_SurpriseMulch[] = INCBIN_U32("graphics/items/icon_palettes/surprise_mulch.gbapal.lz"); -const u32 gItemIconPalette_BoostMulch[] = INCBIN_U32("graphics/items/icon_palettes/boost_mulch.gbapal.lz"); -const u32 gItemIconPalette_AmazeMulch[] = INCBIN_U32("graphics/items/icon_palettes/amaze_mulch.gbapal.lz"); +const u16 gItemIconPalette_GooeyMulch[] = INCBIN_U16("graphics/items/icon_palettes/gooey_mulch.gbapal"); +const u16 gItemIconPalette_RichMulch[] = INCBIN_U16("graphics/items/icon_palettes/rich_mulch.gbapal"); +const u16 gItemIconPalette_SurpriseMulch[] = INCBIN_U16("graphics/items/icon_palettes/surprise_mulch.gbapal"); +const u16 gItemIconPalette_BoostMulch[] = INCBIN_U16("graphics/items/icon_palettes/boost_mulch.gbapal"); +const u16 gItemIconPalette_AmazeMulch[] = INCBIN_U16("graphics/items/icon_palettes/amaze_mulch.gbapal"); // Apricorns const u32 gItemIcon_RedApricorn[] = INCBIN_U32("graphics/items/icons/red_apricorn.4bpp.lz"); -const u32 gItemIconPalette_RedApricorn[] = INCBIN_U32("graphics/items/icon_palettes/red_apricorn.gbapal.lz"); +const u16 gItemIconPalette_RedApricorn[] = INCBIN_U16("graphics/items/icon_palettes/red_apricorn.gbapal"); const u32 gItemIcon_BlueApricorn[] = INCBIN_U32("graphics/items/icons/blue_apricorn.4bpp.lz"); -const u32 gItemIconPalette_BlueApricorn[] = INCBIN_U32("graphics/items/icon_palettes/blue_apricorn.gbapal.lz"); +const u16 gItemIconPalette_BlueApricorn[] = INCBIN_U16("graphics/items/icon_palettes/blue_apricorn.gbapal"); const u32 gItemIcon_YellowApricorn[] = INCBIN_U32("graphics/items/icons/yellow_apricorn.4bpp.lz"); -const u32 gItemIconPalette_YellowApricorn[] = INCBIN_U32("graphics/items/icon_palettes/yellow_apricorn.gbapal.lz"); +const u16 gItemIconPalette_YellowApricorn[] = INCBIN_U16("graphics/items/icon_palettes/yellow_apricorn.gbapal"); const u32 gItemIcon_GreenApricorn[] = INCBIN_U32("graphics/items/icons/green_apricorn.4bpp.lz"); -const u32 gItemIconPalette_GreenApricorn[] = INCBIN_U32("graphics/items/icon_palettes/green_apricorn.gbapal.lz"); +const u16 gItemIconPalette_GreenApricorn[] = INCBIN_U16("graphics/items/icon_palettes/green_apricorn.gbapal"); const u32 gItemIcon_PinkApricorn[] = INCBIN_U32("graphics/items/icons/pink_apricorn.4bpp.lz"); -const u32 gItemIconPalette_PinkApricorn[] = INCBIN_U32("graphics/items/icon_palettes/pink_apricorn.gbapal.lz"); +const u16 gItemIconPalette_PinkApricorn[] = INCBIN_U16("graphics/items/icon_palettes/pink_apricorn.gbapal"); const u32 gItemIcon_WhiteApricorn[] = INCBIN_U32("graphics/items/icons/white_apricorn.4bpp.lz"); -const u32 gItemIconPalette_WhiteApricorn[] = INCBIN_U32("graphics/items/icon_palettes/white_apricorn.gbapal.lz"); +const u16 gItemIconPalette_WhiteApricorn[] = INCBIN_U16("graphics/items/icon_palettes/white_apricorn.gbapal"); const u32 gItemIcon_BlackApricorn[] = INCBIN_U32("graphics/items/icons/black_apricorn.4bpp.lz"); -const u32 gItemIconPalette_BlackApricorn[] = INCBIN_U32("graphics/items/icon_palettes/black_apricorn.gbapal.lz"); +const u16 gItemIconPalette_BlackApricorn[] = INCBIN_U16("graphics/items/icon_palettes/black_apricorn.gbapal"); const u32 gItemIcon_WishingPiece[] = INCBIN_U32("graphics/items/icons/wishing_piece.4bpp.lz"); -const u32 gItemIconPalette_WishingPiece[] = INCBIN_U32("graphics/items/icon_palettes/wishing_piece.gbapal.lz"); +const u16 gItemIconPalette_WishingPiece[] = INCBIN_U16("graphics/items/icon_palettes/wishing_piece.gbapal"); const u32 gItemIcon_GalaricaTwig[] = INCBIN_U32("graphics/items/icons/galarica_twig.4bpp.lz"); -const u32 gItemIconPalette_GalaricaItem[] = INCBIN_U32("graphics/items/icon_palettes/galarica_item.gbapal.lz"); +const u16 gItemIconPalette_GalaricaItem[] = INCBIN_U16("graphics/items/icon_palettes/galarica_item.gbapal"); const u32 gItemIcon_ArmoriteOre[] = INCBIN_U32("graphics/items/icons/armorite_ore.4bpp.lz"); -const u32 gItemIconPalette_ArmoriteOre[] = INCBIN_U32("graphics/items/icon_palettes/armorite_ore.gbapal.lz"); +const u16 gItemIconPalette_ArmoriteOre[] = INCBIN_U16("graphics/items/icon_palettes/armorite_ore.gbapal"); const u32 gItemIcon_DyniteOre[] = INCBIN_U32("graphics/items/icons/dynite_ore.4bpp.lz"); -const u32 gItemIconPalette_DyniteOre[] = INCBIN_U32("graphics/items/icon_palettes/dynite_ore.gbapal.lz"); +const u16 gItemIconPalette_DyniteOre[] = INCBIN_U16("graphics/items/icon_palettes/dynite_ore.gbapal"); // Mail const u32 gItemIcon_OrangeMail[] = INCBIN_U32("graphics/items/icons/orange_mail.4bpp.lz"); -const u32 gItemIconPalette_OrangeMail[] = INCBIN_U32("graphics/items/icon_palettes/orange_mail.gbapal.lz"); +const u16 gItemIconPalette_OrangeMail[] = INCBIN_U16("graphics/items/icon_palettes/orange_mail.gbapal"); const u32 gItemIcon_HarborMail[] = INCBIN_U32("graphics/items/icons/harbor_mail.4bpp.lz"); -const u32 gItemIconPalette_HarborMail[] = INCBIN_U32("graphics/items/icon_palettes/harbor_mail.gbapal.lz"); +const u16 gItemIconPalette_HarborMail[] = INCBIN_U16("graphics/items/icon_palettes/harbor_mail.gbapal"); const u32 gItemIcon_GlitterMail[] = INCBIN_U32("graphics/items/icons/glitter_mail.4bpp.lz"); -const u32 gItemIconPalette_GlitterMail[] = INCBIN_U32("graphics/items/icon_palettes/glitter_mail.gbapal.lz"); +const u16 gItemIconPalette_GlitterMail[] = INCBIN_U16("graphics/items/icon_palettes/glitter_mail.gbapal"); const u32 gItemIcon_MechMail[] = INCBIN_U32("graphics/items/icons/mech_mail.4bpp.lz"); -const u32 gItemIconPalette_MechMail[] = INCBIN_U32("graphics/items/icon_palettes/mech_mail.gbapal.lz"); +const u16 gItemIconPalette_MechMail[] = INCBIN_U16("graphics/items/icon_palettes/mech_mail.gbapal"); const u32 gItemIcon_WoodMail[] = INCBIN_U32("graphics/items/icons/wood_mail.4bpp.lz"); -const u32 gItemIconPalette_WoodMail[] = INCBIN_U32("graphics/items/icon_palettes/wood_mail.gbapal.lz"); +const u16 gItemIconPalette_WoodMail[] = INCBIN_U16("graphics/items/icon_palettes/wood_mail.gbapal"); const u32 gItemIcon_WaveMail[] = INCBIN_U32("graphics/items/icons/wave_mail.4bpp.lz"); -const u32 gItemIconPalette_WaveMail[] = INCBIN_U32("graphics/items/icon_palettes/wave_mail.gbapal.lz"); +const u16 gItemIconPalette_WaveMail[] = INCBIN_U16("graphics/items/icon_palettes/wave_mail.gbapal"); const u32 gItemIcon_BeadMail[] = INCBIN_U32("graphics/items/icons/bead_mail.4bpp.lz"); -const u32 gItemIconPalette_BeadMail[] = INCBIN_U32("graphics/items/icon_palettes/bead_mail.gbapal.lz"); +const u16 gItemIconPalette_BeadMail[] = INCBIN_U16("graphics/items/icon_palettes/bead_mail.gbapal"); const u32 gItemIcon_ShadowMail[] = INCBIN_U32("graphics/items/icons/shadow_mail.4bpp.lz"); -const u32 gItemIconPalette_ShadowMail[] = INCBIN_U32("graphics/items/icon_palettes/shadow_mail.gbapal.lz"); +const u16 gItemIconPalette_ShadowMail[] = INCBIN_U16("graphics/items/icon_palettes/shadow_mail.gbapal"); const u32 gItemIcon_TropicMail[] = INCBIN_U32("graphics/items/icons/tropic_mail.4bpp.lz"); -const u32 gItemIconPalette_TropicMail[] = INCBIN_U32("graphics/items/icon_palettes/tropic_mail.gbapal.lz"); +const u16 gItemIconPalette_TropicMail[] = INCBIN_U16("graphics/items/icon_palettes/tropic_mail.gbapal"); const u32 gItemIcon_DreamMail[] = INCBIN_U32("graphics/items/icons/dream_mail.4bpp.lz"); -const u32 gItemIconPalette_DreamMail[] = INCBIN_U32("graphics/items/icon_palettes/dream_mail.gbapal.lz"); +const u16 gItemIconPalette_DreamMail[] = INCBIN_U16("graphics/items/icon_palettes/dream_mail.gbapal"); const u32 gItemIcon_FabMail[] = INCBIN_U32("graphics/items/icons/fab_mail.4bpp.lz"); -const u32 gItemIconPalette_FabMail[] = INCBIN_U32("graphics/items/icon_palettes/fab_mail.gbapal.lz"); +const u16 gItemIconPalette_FabMail[] = INCBIN_U16("graphics/items/icon_palettes/fab_mail.gbapal"); const u32 gItemIcon_RetroMail[] = INCBIN_U32("graphics/items/icons/retro_mail.4bpp.lz"); -const u32 gItemIconPalette_RetroMail[] = INCBIN_U32("graphics/items/icon_palettes/retro_mail.gbapal.lz"); +const u16 gItemIconPalette_RetroMail[] = INCBIN_U16("graphics/items/icon_palettes/retro_mail.gbapal"); // Evolution Items const u32 gItemIcon_FireStone[] = INCBIN_U32("graphics/items/icons/fire_stone.4bpp.lz"); -const u32 gItemIconPalette_FireStone[] = INCBIN_U32("graphics/items/icon_palettes/fire_stone.gbapal.lz"); +const u16 gItemIconPalette_FireStone[] = INCBIN_U16("graphics/items/icon_palettes/fire_stone.gbapal"); const u32 gItemIcon_WaterStone[] = INCBIN_U32("graphics/items/icons/water_stone.4bpp.lz"); -const u32 gItemIconPalette_WaterStone[] = INCBIN_U32("graphics/items/icon_palettes/water_stone.gbapal.lz"); +const u16 gItemIconPalette_WaterStone[] = INCBIN_U16("graphics/items/icon_palettes/water_stone.gbapal"); const u32 gItemIcon_ThunderStone[] = INCBIN_U32("graphics/items/icons/thunder_stone.4bpp.lz"); -const u32 gItemIconPalette_ThunderStone[] = INCBIN_U32("graphics/items/icon_palettes/thunder_stone.gbapal.lz"); +const u16 gItemIconPalette_ThunderStone[] = INCBIN_U16("graphics/items/icon_palettes/thunder_stone.gbapal"); const u32 gItemIcon_LeafStone[] = INCBIN_U32("graphics/items/icons/leaf_stone.4bpp.lz"); -const u32 gItemIconPalette_LeafStone[] = INCBIN_U32("graphics/items/icon_palettes/leaf_stone.gbapal.lz"); +const u16 gItemIconPalette_LeafStone[] = INCBIN_U16("graphics/items/icon_palettes/leaf_stone.gbapal"); const u32 gItemIcon_IceStone[] = INCBIN_U32("graphics/items/icons/ice_stone.4bpp.lz"); -const u32 gItemIconPalette_IceStone[] = INCBIN_U32("graphics/items/icon_palettes/ice_stone.gbapal.lz"); +const u16 gItemIconPalette_IceStone[] = INCBIN_U16("graphics/items/icon_palettes/ice_stone.gbapal"); const u32 gItemIcon_SunStone[] = INCBIN_U32("graphics/items/icons/sun_stone.4bpp.lz"); -const u32 gItemIconPalette_SunStone[] = INCBIN_U32("graphics/items/icon_palettes/sun_stone.gbapal.lz"); +const u16 gItemIconPalette_SunStone[] = INCBIN_U16("graphics/items/icon_palettes/sun_stone.gbapal"); const u32 gItemIcon_MoonStone[] = INCBIN_U32("graphics/items/icons/moon_stone.4bpp.lz"); -const u32 gItemIconPalette_MoonStone[] = INCBIN_U32("graphics/items/icon_palettes/moon_stone.gbapal.lz"); +const u16 gItemIconPalette_MoonStone[] = INCBIN_U16("graphics/items/icon_palettes/moon_stone.gbapal"); const u32 gItemIcon_ShinyStone[] = INCBIN_U32("graphics/items/icons/shiny_stone.4bpp.lz"); -const u32 gItemIconPalette_ShinyStone[] = INCBIN_U32("graphics/items/icon_palettes/shiny_stone.gbapal.lz"); +const u16 gItemIconPalette_ShinyStone[] = INCBIN_U16("graphics/items/icon_palettes/shiny_stone.gbapal"); const u32 gItemIcon_DuskStone[] = INCBIN_U32("graphics/items/icons/dusk_stone.4bpp.lz"); -const u32 gItemIconPalette_DuskStone[] = INCBIN_U32("graphics/items/icon_palettes/dusk_stone.gbapal.lz"); +const u16 gItemIconPalette_DuskStone[] = INCBIN_U16("graphics/items/icon_palettes/dusk_stone.gbapal"); const u32 gItemIcon_DawnStone[] = INCBIN_U32("graphics/items/icons/dawn_stone.4bpp.lz"); -const u32 gItemIconPalette_DawnStone[] = INCBIN_U32("graphics/items/icon_palettes/dawn_stone.gbapal.lz"); +const u16 gItemIconPalette_DawnStone[] = INCBIN_U16("graphics/items/icon_palettes/dawn_stone.gbapal"); const u32 gItemIcon_SweetApple[] = INCBIN_U32("graphics/items/icons/sweet_apple.4bpp.lz"); -const u32 gItemIconPalette_SweetApple[] = INCBIN_U32("graphics/items/icon_palettes/sweet_apple.gbapal.lz"); +const u16 gItemIconPalette_SweetApple[] = INCBIN_U16("graphics/items/icon_palettes/sweet_apple.gbapal"); const u32 gItemIcon_TartApple[] = INCBIN_U32("graphics/items/icons/tart_apple.4bpp.lz"); -const u32 gItemIconPalette_TartApple[] = INCBIN_U32("graphics/items/icon_palettes/tart_apple.gbapal.lz"); +const u16 gItemIconPalette_TartApple[] = INCBIN_U16("graphics/items/icon_palettes/tart_apple.gbapal"); const u32 gItemIcon_CrackedPot[] = INCBIN_U32("graphics/items/icons/cracked_pot.4bpp.lz"); const u32 gItemIcon_ChippedPot[] = INCBIN_U32("graphics/items/icons/chipped_pot.4bpp.lz"); -const u32 gItemIconPalette_Pot[] = INCBIN_U32("graphics/items/icon_palettes/pot.gbapal.lz"); +const u16 gItemIconPalette_Pot[] = INCBIN_U16("graphics/items/icon_palettes/pot.gbapal"); const u32 gItemIcon_GalaricaCuff[] = INCBIN_U32("graphics/items/icons/galarica_cuff.4bpp.lz"); const u32 gItemIcon_GalaricaWreath[] = INCBIN_U32("graphics/items/icons/galarica_wreath.4bpp.lz"); const u32 gItemIcon_DragonScale[] = INCBIN_U32("graphics/items/icons/dragon_scale.4bpp.lz"); -const u32 gItemIconPalette_DragonScale[] = INCBIN_U32("graphics/items/icon_palettes/dragon_scale.gbapal.lz"); +const u16 gItemIconPalette_DragonScale[] = INCBIN_U16("graphics/items/icon_palettes/dragon_scale.gbapal"); const u32 gItemIcon_Upgrade[] = INCBIN_U32("graphics/items/icons/upgrade.4bpp.lz"); -const u32 gItemIconPalette_Upgrade[] = INCBIN_U32("graphics/items/icon_palettes/upgrade.gbapal.lz"); +const u16 gItemIconPalette_Upgrade[] = INCBIN_U16("graphics/items/icon_palettes/upgrade.gbapal"); const u32 gItemIcon_Protector[] = INCBIN_U32("graphics/items/icons/protector.4bpp.lz"); -const u32 gItemIconPalette_Protector[] = INCBIN_U32("graphics/items/icon_palettes/protector.gbapal.lz"); +const u16 gItemIconPalette_Protector[] = INCBIN_U16("graphics/items/icon_palettes/protector.gbapal"); const u32 gItemIcon_Electirizer[] = INCBIN_U32("graphics/items/icons/electirizer.4bpp.lz"); -const u32 gItemIconPalette_Electirizer[] = INCBIN_U32("graphics/items/icon_palettes/electirizer.gbapal.lz"); +const u16 gItemIconPalette_Electirizer[] = INCBIN_U16("graphics/items/icon_palettes/electirizer.gbapal"); const u32 gItemIcon_Magmarizer[] = INCBIN_U32("graphics/items/icons/magmarizer.4bpp.lz"); -const u32 gItemIconPalette_Magmarizer[] = INCBIN_U32("graphics/items/icon_palettes/magmarizer.gbapal.lz"); +const u16 gItemIconPalette_Magmarizer[] = INCBIN_U16("graphics/items/icon_palettes/magmarizer.gbapal"); const u32 gItemIcon_DubiousDisc[] = INCBIN_U32("graphics/items/icons/dubious_disc.4bpp.lz"); -const u32 gItemIconPalette_DubiousDisc[] = INCBIN_U32("graphics/items/icon_palettes/dubious_disc.gbapal.lz"); +const u16 gItemIconPalette_DubiousDisc[] = INCBIN_U16("graphics/items/icon_palettes/dubious_disc.gbapal"); const u32 gItemIcon_ReaperCloth[] = INCBIN_U32("graphics/items/icons/reaper_cloth.4bpp.lz"); -const u32 gItemIconPalette_ReaperCloth[] = INCBIN_U32("graphics/items/icon_palettes/reaper_cloth.gbapal.lz"); +const u16 gItemIconPalette_ReaperCloth[] = INCBIN_U16("graphics/items/icon_palettes/reaper_cloth.gbapal"); const u32 gItemIcon_PrismScale[] = INCBIN_U32("graphics/items/icons/prism_scale.4bpp.lz"); -const u32 gItemIconPalette_PrismScale[] = INCBIN_U32("graphics/items/icon_palettes/prism_scale.gbapal.lz"); +const u16 gItemIconPalette_PrismScale[] = INCBIN_U16("graphics/items/icon_palettes/prism_scale.gbapal"); const u32 gItemIcon_WhippedDream[] = INCBIN_U32("graphics/items/icons/whipped_dream.4bpp.lz"); -const u32 gItemIconPalette_WhippedDream[] = INCBIN_U32("graphics/items/icon_palettes/whipped_dream.gbapal.lz"); +const u16 gItemIconPalette_WhippedDream[] = INCBIN_U16("graphics/items/icon_palettes/whipped_dream.gbapal"); const u32 gItemIcon_Sachet[] = INCBIN_U32("graphics/items/icons/sachet.4bpp.lz"); -const u32 gItemIconPalette_Sachet[] = INCBIN_U32("graphics/items/icon_palettes/sachet.gbapal.lz"); +const u16 gItemIconPalette_Sachet[] = INCBIN_U16("graphics/items/icon_palettes/sachet.gbapal"); const u32 gItemIcon_OvalStone[] = INCBIN_U32("graphics/items/icons/oval_stone.4bpp.lz"); -const u32 gItemIconPalette_OvalStone[] = INCBIN_U32("graphics/items/icon_palettes/oval_stone.gbapal.lz"); +const u16 gItemIconPalette_OvalStone[] = INCBIN_U16("graphics/items/icon_palettes/oval_stone.gbapal"); const u32 gItemIcon_StrawberrySweet[] = INCBIN_U32("graphics/items/icons/strawberry_sweet.4bpp.lz"); -const u32 gItemIconPalette_StrawberrySweet[] = INCBIN_U32("graphics/items/icon_palettes/strawberry_sweet.gbapal.lz"); +const u16 gItemIconPalette_StrawberrySweet[] = INCBIN_U16("graphics/items/icon_palettes/strawberry_sweet.gbapal"); const u32 gItemIcon_LoveSweet[] = INCBIN_U32("graphics/items/icons/love_sweet.4bpp.lz"); -const u32 gItemIconPalette_LoveSweet[] = INCBIN_U32("graphics/items/icon_palettes/love_sweet.gbapal.lz"); +const u16 gItemIconPalette_LoveSweet[] = INCBIN_U16("graphics/items/icon_palettes/love_sweet.gbapal"); const u32 gItemIcon_BerrySweet[] = INCBIN_U32("graphics/items/icons/berry_sweet.4bpp.lz"); -const u32 gItemIconPalette_BerrySweet[] = INCBIN_U32("graphics/items/icon_palettes/berry_sweet.gbapal.lz"); +const u16 gItemIconPalette_BerrySweet[] = INCBIN_U16("graphics/items/icon_palettes/berry_sweet.gbapal"); const u32 gItemIcon_CloverSweet[] = INCBIN_U32("graphics/items/icons/clover_sweet.4bpp.lz"); -const u32 gItemIconPalette_CloverSweet[] = INCBIN_U32("graphics/items/icon_palettes/clover_sweet.gbapal.lz"); +const u16 gItemIconPalette_CloverSweet[] = INCBIN_U16("graphics/items/icon_palettes/clover_sweet.gbapal"); const u32 gItemIcon_FlowerSweet[] = INCBIN_U32("graphics/items/icons/flower_sweet.4bpp.lz"); -const u32 gItemIconPalette_FlowerSweet[] = INCBIN_U32("graphics/items/icon_palettes/flower_sweet.gbapal.lz"); +const u16 gItemIconPalette_FlowerSweet[] = INCBIN_U16("graphics/items/icon_palettes/flower_sweet.gbapal"); const u32 gItemIcon_StarSweet[] = INCBIN_U32("graphics/items/icons/star_sweet.4bpp.lz"); -const u32 gItemIconPalette_StarSweet[] = INCBIN_U32("graphics/items/icon_palettes/star_sweet.gbapal.lz"); +const u16 gItemIconPalette_StarSweet[] = INCBIN_U16("graphics/items/icon_palettes/star_sweet.gbapal"); const u32 gItemIcon_RibbonSweet[] = INCBIN_U32("graphics/items/icons/ribbon_sweet.4bpp.lz"); -const u32 gItemIconPalette_RibbonSweet[] = INCBIN_U32("graphics/items/icon_palettes/ribbon_sweet.gbapal.lz"); +const u16 gItemIconPalette_RibbonSweet[] = INCBIN_U16("graphics/items/icon_palettes/ribbon_sweet.gbapal"); const u32 gItemIcon_Everstone[] = INCBIN_U32("graphics/items/icons/everstone.4bpp.lz"); -const u32 gItemIconPalette_Everstone[] = INCBIN_U32("graphics/items/icon_palettes/everstone.gbapal.lz"); +const u16 gItemIconPalette_Everstone[] = INCBIN_U16("graphics/items/icon_palettes/everstone.gbapal"); const u32 gItemIcon_BlackAugurite[] = INCBIN_U32("graphics/items/icons/black_augurite.4bpp.lz"); -const u32 gItemIconPalette_BlackAugurite[] = INCBIN_U32("graphics/items/icon_palettes/black_augurite.gbapal.lz"); +const u16 gItemIconPalette_BlackAugurite[] = INCBIN_U16("graphics/items/icon_palettes/black_augurite.gbapal"); const u32 gItemIcon_LinkingCord[] = INCBIN_U32("graphics/items/icons/linking_cord.4bpp.lz"); -const u32 gItemIconPalette_LinkingCord[] = INCBIN_U32("graphics/items/icon_palettes/linking_cord.gbapal.lz"); +const u16 gItemIconPalette_LinkingCord[] = INCBIN_U16("graphics/items/icon_palettes/linking_cord.gbapal"); const u32 gItemIcon_PeatBlock[] = INCBIN_U32("graphics/items/icons/peat_block.4bpp.lz"); -const u32 gItemIconPalette_PeatBlock[] = INCBIN_U32("graphics/items/icon_palettes/peat_block.gbapal.lz"); +const u16 gItemIconPalette_PeatBlock[] = INCBIN_U16("graphics/items/icon_palettes/peat_block.gbapal"); const u32 gItemIcon_SyrupyApple[] = INCBIN_U32("graphics/items/icons/syrupy_apple.4bpp.lz"); -const u32 gItemIconPalette_SyrupyApple[] = INCBIN_U32("graphics/items/icon_palettes/syrupy_apple.gbapal.lz"); +const u16 gItemIconPalette_SyrupyApple[] = INCBIN_U16("graphics/items/icon_palettes/syrupy_apple.gbapal"); const u32 gItemIcon_UnremarkableTeacup[] = INCBIN_U32("graphics/items/icons/unremarkable_teacup.4bpp.lz"); -const u32 gItemIconPalette_UnremarkableTeacup[] = INCBIN_U32("graphics/items/icon_palettes/unremarkable_teacup.gbapal.lz"); +const u16 gItemIconPalette_UnremarkableTeacup[] = INCBIN_U16("graphics/items/icon_palettes/unremarkable_teacup.gbapal"); const u32 gItemIcon_MasterpieceTeacup[] = INCBIN_U32("graphics/items/icons/masterpiece_teacup.4bpp.lz"); -const u32 gItemIconPalette_MasterpieceTeacup[] = INCBIN_U32("graphics/items/icon_palettes/masterpiece_teacup.gbapal.lz"); +const u16 gItemIconPalette_MasterpieceTeacup[] = INCBIN_U16("graphics/items/icon_palettes/masterpiece_teacup.gbapal"); const u32 gItemIcon_MetalAlloy[] = INCBIN_U32("graphics/items/icons/metal_alloy.4bpp.lz"); -const u32 gItemIconPalette_MetalAlloy[] = INCBIN_U32("graphics/items/icon_palettes/metal_alloy.gbapal.lz"); +const u16 gItemIconPalette_MetalAlloy[] = INCBIN_U16("graphics/items/icon_palettes/metal_alloy.gbapal"); // Nectars const u32 gItemIcon_RedNectar[] = INCBIN_U32("graphics/items/icons/red_nectar.4bpp.lz"); -const u32 gItemIconPalette_RedNectar[] = INCBIN_U32("graphics/items/icon_palettes/red_nectar.gbapal.lz"); +const u16 gItemIconPalette_RedNectar[] = INCBIN_U16("graphics/items/icon_palettes/red_nectar.gbapal"); const u32 gItemIcon_YellowNectar[] = INCBIN_U32("graphics/items/icons/yellow_nectar.4bpp.lz"); -const u32 gItemIconPalette_YellowNectar[] = INCBIN_U32("graphics/items/icon_palettes/yellow_nectar.gbapal.lz"); +const u16 gItemIconPalette_YellowNectar[] = INCBIN_U16("graphics/items/icon_palettes/yellow_nectar.gbapal"); const u32 gItemIcon_PinkNectar[] = INCBIN_U32("graphics/items/icons/pink_nectar.4bpp.lz"); -const u32 gItemIconPalette_PinkNectar[] = INCBIN_U32("graphics/items/icon_palettes/pink_nectar.gbapal.lz"); +const u16 gItemIconPalette_PinkNectar[] = INCBIN_U16("graphics/items/icon_palettes/pink_nectar.gbapal"); const u32 gItemIcon_PurpleNectar[] = INCBIN_U32("graphics/items/icons/purple_nectar.4bpp.lz"); -const u32 gItemIconPalette_PurpleNectar[] = INCBIN_U32("graphics/items/icon_palettes/purple_nectar.gbapal.lz"); +const u16 gItemIconPalette_PurpleNectar[] = INCBIN_U16("graphics/items/icon_palettes/purple_nectar.gbapal"); // Plates const u32 gItemIcon_FlamePlate[] = INCBIN_U32("graphics/items/icons/flame_plate.4bpp.lz"); -const u32 gItemIconPalette_FlamePlate[] = INCBIN_U32("graphics/items/icon_palettes/flame_plate.gbapal.lz"); +const u16 gItemIconPalette_FlamePlate[] = INCBIN_U16("graphics/items/icon_palettes/flame_plate.gbapal"); const u32 gItemIcon_SplashPlate[] = INCBIN_U32("graphics/items/icons/splash_plate.4bpp.lz"); -const u32 gItemIconPalette_SplashPlate[] = INCBIN_U32("graphics/items/icon_palettes/splash_plate.gbapal.lz"); +const u16 gItemIconPalette_SplashPlate[] = INCBIN_U16("graphics/items/icon_palettes/splash_plate.gbapal"); const u32 gItemIcon_ZapPlate[] = INCBIN_U32("graphics/items/icons/zap_plate.4bpp.lz"); -const u32 gItemIconPalette_ZapPlate[] = INCBIN_U32("graphics/items/icon_palettes/zap_plate.gbapal.lz"); +const u16 gItemIconPalette_ZapPlate[] = INCBIN_U16("graphics/items/icon_palettes/zap_plate.gbapal"); const u32 gItemIcon_MeadowPlate[] = INCBIN_U32("graphics/items/icons/meadow_plate.4bpp.lz"); -const u32 gItemIconPalette_MeadowPlate[] = INCBIN_U32("graphics/items/icon_palettes/meadow_plate.gbapal.lz"); +const u16 gItemIconPalette_MeadowPlate[] = INCBIN_U16("graphics/items/icon_palettes/meadow_plate.gbapal"); const u32 gItemIcon_IciclePlate[] = INCBIN_U32("graphics/items/icons/icicle_plate.4bpp.lz"); -const u32 gItemIconPalette_IciclePlate[] = INCBIN_U32("graphics/items/icon_palettes/icicle_plate.gbapal.lz"); +const u16 gItemIconPalette_IciclePlate[] = INCBIN_U16("graphics/items/icon_palettes/icicle_plate.gbapal"); const u32 gItemIcon_FistPlate[] = INCBIN_U32("graphics/items/icons/fist_plate.4bpp.lz"); -const u32 gItemIconPalette_FistPlate[] = INCBIN_U32("graphics/items/icon_palettes/fist_plate.gbapal.lz"); +const u16 gItemIconPalette_FistPlate[] = INCBIN_U16("graphics/items/icon_palettes/fist_plate.gbapal"); const u32 gItemIcon_ToxicPlate[] = INCBIN_U32("graphics/items/icons/toxic_plate.4bpp.lz"); -const u32 gItemIconPalette_ToxicPlate[] = INCBIN_U32("graphics/items/icon_palettes/toxic_plate.gbapal.lz"); +const u16 gItemIconPalette_ToxicPlate[] = INCBIN_U16("graphics/items/icon_palettes/toxic_plate.gbapal"); const u32 gItemIcon_EarthPlate[] = INCBIN_U32("graphics/items/icons/earth_plate.4bpp.lz"); -const u32 gItemIconPalette_EarthPlate[] = INCBIN_U32("graphics/items/icon_palettes/earth_plate.gbapal.lz"); +const u16 gItemIconPalette_EarthPlate[] = INCBIN_U16("graphics/items/icon_palettes/earth_plate.gbapal"); const u32 gItemIcon_SkyPlate[] = INCBIN_U32("graphics/items/icons/sky_plate.4bpp.lz"); -const u32 gItemIconPalette_SkyPlate[] = INCBIN_U32("graphics/items/icon_palettes/sky_plate.gbapal.lz"); +const u16 gItemIconPalette_SkyPlate[] = INCBIN_U16("graphics/items/icon_palettes/sky_plate.gbapal"); const u32 gItemIcon_MindPlate[] = INCBIN_U32("graphics/items/icons/mind_plate.4bpp.lz"); -const u32 gItemIconPalette_MindPlate[] = INCBIN_U32("graphics/items/icon_palettes/mind_plate.gbapal.lz"); +const u16 gItemIconPalette_MindPlate[] = INCBIN_U16("graphics/items/icon_palettes/mind_plate.gbapal"); const u32 gItemIcon_InsectPlate[] = INCBIN_U32("graphics/items/icons/insect_plate.4bpp.lz"); -const u32 gItemIconPalette_InsectPlate[] = INCBIN_U32("graphics/items/icon_palettes/insect_plate.gbapal.lz"); +const u16 gItemIconPalette_InsectPlate[] = INCBIN_U16("graphics/items/icon_palettes/insect_plate.gbapal"); const u32 gItemIcon_StonePlate[] = INCBIN_U32("graphics/items/icons/stone_plate.4bpp.lz"); -const u32 gItemIconPalette_StonePlate[] = INCBIN_U32("graphics/items/icon_palettes/stone_plate.gbapal.lz"); +const u16 gItemIconPalette_StonePlate[] = INCBIN_U16("graphics/items/icon_palettes/stone_plate.gbapal"); const u32 gItemIcon_SpookyPlate[] = INCBIN_U32("graphics/items/icons/spooky_plate.4bpp.lz"); -const u32 gItemIconPalette_SpookyPlate[] = INCBIN_U32("graphics/items/icon_palettes/spooky_plate.gbapal.lz"); +const u16 gItemIconPalette_SpookyPlate[] = INCBIN_U16("graphics/items/icon_palettes/spooky_plate.gbapal"); const u32 gItemIcon_DracoPlate[] = INCBIN_U32("graphics/items/icons/draco_plate.4bpp.lz"); -const u32 gItemIconPalette_DracoPlate[] = INCBIN_U32("graphics/items/icon_palettes/draco_plate.gbapal.lz"); +const u16 gItemIconPalette_DracoPlate[] = INCBIN_U16("graphics/items/icon_palettes/draco_plate.gbapal"); const u32 gItemIcon_DreadPlate[] = INCBIN_U32("graphics/items/icons/dread_plate.4bpp.lz"); -const u32 gItemIconPalette_DreadPlate[] = INCBIN_U32("graphics/items/icon_palettes/dread_plate.gbapal.lz"); +const u16 gItemIconPalette_DreadPlate[] = INCBIN_U16("graphics/items/icon_palettes/dread_plate.gbapal"); const u32 gItemIcon_IronPlate[] = INCBIN_U32("graphics/items/icons/iron_plate.4bpp.lz"); -const u32 gItemIconPalette_IronPlate[] = INCBIN_U32("graphics/items/icon_palettes/iron_plate.gbapal.lz"); +const u16 gItemIconPalette_IronPlate[] = INCBIN_U16("graphics/items/icon_palettes/iron_plate.gbapal"); const u32 gItemIcon_PixiePlate[] = INCBIN_U32("graphics/items/icons/pixie_plate.4bpp.lz"); -const u32 gItemIconPalette_PixiePlate[] = INCBIN_U32("graphics/items/icon_palettes/pixie_plate.gbapal.lz"); +const u16 gItemIconPalette_PixiePlate[] = INCBIN_U16("graphics/items/icon_palettes/pixie_plate.gbapal"); // Drives const u32 gItemIcon_DouseDrive[] = INCBIN_U32("graphics/items/icons/douse_drive.4bpp.lz"); -const u32 gItemIconPalette_DouseDrive[] = INCBIN_U32("graphics/items/icon_palettes/douse_drive.gbapal.lz"); +const u16 gItemIconPalette_DouseDrive[] = INCBIN_U16("graphics/items/icon_palettes/douse_drive.gbapal"); const u32 gItemIcon_ShockDrive[] = INCBIN_U32("graphics/items/icons/shock_drive.4bpp.lz"); -const u32 gItemIconPalette_ShockDrive[] = INCBIN_U32("graphics/items/icon_palettes/shock_drive.gbapal.lz"); +const u16 gItemIconPalette_ShockDrive[] = INCBIN_U16("graphics/items/icon_palettes/shock_drive.gbapal"); const u32 gItemIcon_BurnDrive[] = INCBIN_U32("graphics/items/icons/burn_drive.4bpp.lz"); -const u32 gItemIconPalette_BurnDrive[] = INCBIN_U32("graphics/items/icon_palettes/burn_drive.gbapal.lz"); +const u16 gItemIconPalette_BurnDrive[] = INCBIN_U16("graphics/items/icon_palettes/burn_drive.gbapal"); const u32 gItemIcon_ChillDrive[] = INCBIN_U32("graphics/items/icons/chill_drive.4bpp.lz"); -const u32 gItemIconPalette_ChillDrive[] = INCBIN_U32("graphics/items/icon_palettes/chill_drive.gbapal.lz"); +const u16 gItemIconPalette_ChillDrive[] = INCBIN_U16("graphics/items/icon_palettes/chill_drive.gbapal"); // Memories const u32 gItemIcon_FireMemory[] = INCBIN_U32("graphics/items/icons/fire_memory.4bpp.lz"); -const u32 gItemIconPalette_FireMemory[] = INCBIN_U32("graphics/items/icon_palettes/fire_memory.gbapal.lz"); +const u16 gItemIconPalette_FireMemory[] = INCBIN_U16("graphics/items/icon_palettes/fire_memory.gbapal"); const u32 gItemIcon_WaterMemory[] = INCBIN_U32("graphics/items/icons/water_memory.4bpp.lz"); -const u32 gItemIconPalette_WaterMemory[] = INCBIN_U32("graphics/items/icon_palettes/water_memory.gbapal.lz"); +const u16 gItemIconPalette_WaterMemory[] = INCBIN_U16("graphics/items/icon_palettes/water_memory.gbapal"); const u32 gItemIcon_ElectricMemory[] = INCBIN_U32("graphics/items/icons/electric_memory.4bpp.lz"); -const u32 gItemIconPalette_ElectricMemory[] = INCBIN_U32("graphics/items/icon_palettes/electric_memory.gbapal.lz"); +const u16 gItemIconPalette_ElectricMemory[] = INCBIN_U16("graphics/items/icon_palettes/electric_memory.gbapal"); const u32 gItemIcon_GrassMemory[] = INCBIN_U32("graphics/items/icons/grass_memory.4bpp.lz"); -const u32 gItemIconPalette_GrassMemory[] = INCBIN_U32("graphics/items/icon_palettes/grass_memory.gbapal.lz"); +const u16 gItemIconPalette_GrassMemory[] = INCBIN_U16("graphics/items/icon_palettes/grass_memory.gbapal"); const u32 gItemIcon_IceMemory[] = INCBIN_U32("graphics/items/icons/ice_memory.4bpp.lz"); -const u32 gItemIconPalette_IceMemory[] = INCBIN_U32("graphics/items/icon_palettes/ice_memory.gbapal.lz"); +const u16 gItemIconPalette_IceMemory[] = INCBIN_U16("graphics/items/icon_palettes/ice_memory.gbapal"); const u32 gItemIcon_FightingMemory[] = INCBIN_U32("graphics/items/icons/fighting_memory.4bpp.lz"); -const u32 gItemIconPalette_FightingMemory[] = INCBIN_U32("graphics/items/icon_palettes/fighting_memory.gbapal.lz"); +const u16 gItemIconPalette_FightingMemory[] = INCBIN_U16("graphics/items/icon_palettes/fighting_memory.gbapal"); const u32 gItemIcon_PoisonMemory[] = INCBIN_U32("graphics/items/icons/poison_memory.4bpp.lz"); -const u32 gItemIconPalette_PoisonMemory[] = INCBIN_U32("graphics/items/icon_palettes/poison_memory.gbapal.lz"); +const u16 gItemIconPalette_PoisonMemory[] = INCBIN_U16("graphics/items/icon_palettes/poison_memory.gbapal"); const u32 gItemIcon_GroundMemory[] = INCBIN_U32("graphics/items/icons/ground_memory.4bpp.lz"); -const u32 gItemIconPalette_GroundMemory[] = INCBIN_U32("graphics/items/icon_palettes/ground_memory.gbapal.lz"); +const u16 gItemIconPalette_GroundMemory[] = INCBIN_U16("graphics/items/icon_palettes/ground_memory.gbapal"); const u32 gItemIcon_FlyingMemory[] = INCBIN_U32("graphics/items/icons/flying_memory.4bpp.lz"); -const u32 gItemIconPalette_FlyingMemory[] = INCBIN_U32("graphics/items/icon_palettes/flying_memory.gbapal.lz"); +const u16 gItemIconPalette_FlyingMemory[] = INCBIN_U16("graphics/items/icon_palettes/flying_memory.gbapal"); const u32 gItemIcon_PsychicMemory[] = INCBIN_U32("graphics/items/icons/psychic_memory.4bpp.lz"); -const u32 gItemIconPalette_PsychicMemory[] = INCBIN_U32("graphics/items/icon_palettes/psychic_memory.gbapal.lz"); +const u16 gItemIconPalette_PsychicMemory[] = INCBIN_U16("graphics/items/icon_palettes/psychic_memory.gbapal"); const u32 gItemIcon_BugMemory[] = INCBIN_U32("graphics/items/icons/bug_memory.4bpp.lz"); -const u32 gItemIconPalette_BugMemory[] = INCBIN_U32("graphics/items/icon_palettes/bug_memory.gbapal.lz"); +const u16 gItemIconPalette_BugMemory[] = INCBIN_U16("graphics/items/icon_palettes/bug_memory.gbapal"); const u32 gItemIcon_RockMemory[] = INCBIN_U32("graphics/items/icons/rock_memory.4bpp.lz"); -const u32 gItemIconPalette_RockMemory[] = INCBIN_U32("graphics/items/icon_palettes/rock_memory.gbapal.lz"); +const u16 gItemIconPalette_RockMemory[] = INCBIN_U16("graphics/items/icon_palettes/rock_memory.gbapal"); const u32 gItemIcon_GhostMemory[] = INCBIN_U32("graphics/items/icons/ghost_memory.4bpp.lz"); -const u32 gItemIconPalette_GhostMemory[] = INCBIN_U32("graphics/items/icon_palettes/ghost_memory.gbapal.lz"); +const u16 gItemIconPalette_GhostMemory[] = INCBIN_U16("graphics/items/icon_palettes/ghost_memory.gbapal"); const u32 gItemIcon_DragonMemory[] = INCBIN_U32("graphics/items/icons/dragon_memory.4bpp.lz"); -const u32 gItemIconPalette_DragonMemory[] = INCBIN_U32("graphics/items/icon_palettes/dragon_memory.gbapal.lz"); +const u16 gItemIconPalette_DragonMemory[] = INCBIN_U16("graphics/items/icon_palettes/dragon_memory.gbapal"); const u32 gItemIcon_DarkMemory[] = INCBIN_U32("graphics/items/icons/dark_memory.4bpp.lz"); -const u32 gItemIconPalette_DarkMemory[] = INCBIN_U32("graphics/items/icon_palettes/dark_memory.gbapal.lz"); +const u16 gItemIconPalette_DarkMemory[] = INCBIN_U16("graphics/items/icon_palettes/dark_memory.gbapal"); const u32 gItemIcon_SteelMemory[] = INCBIN_U32("graphics/items/icons/steel_memory.4bpp.lz"); -const u32 gItemIconPalette_SteelMemory[] = INCBIN_U32("graphics/items/icon_palettes/steel_memory.gbapal.lz"); +const u16 gItemIconPalette_SteelMemory[] = INCBIN_U16("graphics/items/icon_palettes/steel_memory.gbapal"); const u32 gItemIcon_FairyMemory[] = INCBIN_U32("graphics/items/icons/fairy_memory.4bpp.lz"); -const u32 gItemIconPalette_FairyMemory[] = INCBIN_U32("graphics/items/icon_palettes/fairy_memory.gbapal.lz"); +const u16 gItemIconPalette_FairyMemory[] = INCBIN_U16("graphics/items/icon_palettes/fairy_memory.gbapal"); const u32 gItemIcon_RustedSword[] = INCBIN_U32("graphics/items/icons/rusted_sword.4bpp.lz"); const u32 gItemIcon_RustedShield[] = INCBIN_U32("graphics/items/icons/rusted_shield.4bpp.lz"); -const u32 gItemIconPalette_RustedWeapons[] = INCBIN_U32("graphics/items/icon_palettes/rusted_weapons.gbapal.lz"); +const u16 gItemIconPalette_RustedWeapons[] = INCBIN_U16("graphics/items/icon_palettes/rusted_weapons.gbapal"); // Colored Orbs const u32 gItemIcon_RedOrb[] = INCBIN_U32("graphics/items/icons/red_orb.4bpp.lz"); -const u32 gItemIconPalette_RedOrb[] = INCBIN_U32("graphics/items/icon_palettes/red_orb.gbapal.lz"); +const u16 gItemIconPalette_RedOrb[] = INCBIN_U16("graphics/items/icon_palettes/red_orb.gbapal"); const u32 gItemIcon_BlueOrb[] = INCBIN_U32("graphics/items/icons/blue_orb.4bpp.lz"); -const u32 gItemIconPalette_BlueOrb[] = INCBIN_U32("graphics/items/icon_palettes/blue_orb.gbapal.lz"); +const u16 gItemIconPalette_BlueOrb[] = INCBIN_U16("graphics/items/icon_palettes/blue_orb.gbapal"); // Mega Stones const u32 gItemIcon_Venusaurite[] = INCBIN_U32("graphics/items/icons/venusaurite.4bpp.lz"); -const u32 gItemIconPalette_Venusaurite[] = INCBIN_U32("graphics/items/icon_palettes/venusaurite.gbapal.lz"); +const u16 gItemIconPalette_Venusaurite[] = INCBIN_U16("graphics/items/icon_palettes/venusaurite.gbapal"); const u32 gItemIcon_CharizarditeX[] = INCBIN_U32("graphics/items/icons/charizardite_x.4bpp.lz"); -const u32 gItemIconPalette_CharizarditeX[] = INCBIN_U32("graphics/items/icon_palettes/charizardite_x.gbapal.lz"); +const u16 gItemIconPalette_CharizarditeX[] = INCBIN_U16("graphics/items/icon_palettes/charizardite_x.gbapal"); const u32 gItemIcon_CharizarditeY[] = INCBIN_U32("graphics/items/icons/charizardite_y.4bpp.lz"); -const u32 gItemIconPalette_CharizarditeY[] = INCBIN_U32("graphics/items/icon_palettes/charizardite_y.gbapal.lz"); +const u16 gItemIconPalette_CharizarditeY[] = INCBIN_U16("graphics/items/icon_palettes/charizardite_y.gbapal"); const u32 gItemIcon_Blastoisinite[] = INCBIN_U32("graphics/items/icons/blastoisinite.4bpp.lz"); -const u32 gItemIconPalette_Blastoisinite[] = INCBIN_U32("graphics/items/icon_palettes/blastoisinite.gbapal.lz"); +const u16 gItemIconPalette_Blastoisinite[] = INCBIN_U16("graphics/items/icon_palettes/blastoisinite.gbapal"); const u32 gItemIcon_Beedrillite[] = INCBIN_U32("graphics/items/icons/beedrillite.4bpp.lz"); -const u32 gItemIconPalette_Beedrillite[] = INCBIN_U32("graphics/items/icon_palettes/beedrillite.gbapal.lz"); +const u16 gItemIconPalette_Beedrillite[] = INCBIN_U16("graphics/items/icon_palettes/beedrillite.gbapal"); const u32 gItemIcon_Pidgeotite[] = INCBIN_U32("graphics/items/icons/pidgeotite.4bpp.lz"); -const u32 gItemIconPalette_Pidgeotite[] = INCBIN_U32("graphics/items/icon_palettes/pidgeotite.gbapal.lz"); +const u16 gItemIconPalette_Pidgeotite[] = INCBIN_U16("graphics/items/icon_palettes/pidgeotite.gbapal"); const u32 gItemIcon_Alakazite[] = INCBIN_U32("graphics/items/icons/alakazite.4bpp.lz"); -const u32 gItemIconPalette_Alakazite[] = INCBIN_U32("graphics/items/icon_palettes/alakazite.gbapal.lz"); +const u16 gItemIconPalette_Alakazite[] = INCBIN_U16("graphics/items/icon_palettes/alakazite.gbapal"); const u32 gItemIcon_Slowbronite[] = INCBIN_U32("graphics/items/icons/slowbronite.4bpp.lz"); -const u32 gItemIconPalette_Slowbronite[] = INCBIN_U32("graphics/items/icon_palettes/slowbronite.gbapal.lz"); +const u16 gItemIconPalette_Slowbronite[] = INCBIN_U16("graphics/items/icon_palettes/slowbronite.gbapal"); const u32 gItemIcon_Gengarite[] = INCBIN_U32("graphics/items/icons/gengarite.4bpp.lz"); -const u32 gItemIconPalette_Gengarite[] = INCBIN_U32("graphics/items/icon_palettes/gengarite.gbapal.lz"); +const u16 gItemIconPalette_Gengarite[] = INCBIN_U16("graphics/items/icon_palettes/gengarite.gbapal"); const u32 gItemIcon_Kangaskhanite[] = INCBIN_U32("graphics/items/icons/kangaskhanite.4bpp.lz"); -const u32 gItemIconPalette_Kangaskhanite[] = INCBIN_U32("graphics/items/icon_palettes/kangaskhanite.gbapal.lz"); +const u16 gItemIconPalette_Kangaskhanite[] = INCBIN_U16("graphics/items/icon_palettes/kangaskhanite.gbapal"); const u32 gItemIcon_Pinsirite[] = INCBIN_U32("graphics/items/icons/pinsirite.4bpp.lz"); -const u32 gItemIconPalette_Pinsirite[] = INCBIN_U32("graphics/items/icon_palettes/pinsirite.gbapal.lz"); +const u16 gItemIconPalette_Pinsirite[] = INCBIN_U16("graphics/items/icon_palettes/pinsirite.gbapal"); const u32 gItemIcon_Gyaradosite[] = INCBIN_U32("graphics/items/icons/gyaradosite.4bpp.lz"); -const u32 gItemIconPalette_Gyaradosite[] = INCBIN_U32("graphics/items/icon_palettes/gyaradosite.gbapal.lz"); +const u16 gItemIconPalette_Gyaradosite[] = INCBIN_U16("graphics/items/icon_palettes/gyaradosite.gbapal"); const u32 gItemIcon_Aerodactylite[] = INCBIN_U32("graphics/items/icons/aerodactylite.4bpp.lz"); -const u32 gItemIconPalette_Aerodactylite[] = INCBIN_U32("graphics/items/icon_palettes/aerodactylite.gbapal.lz"); +const u16 gItemIconPalette_Aerodactylite[] = INCBIN_U16("graphics/items/icon_palettes/aerodactylite.gbapal"); const u32 gItemIcon_MewtwoniteX[] = INCBIN_U32("graphics/items/icons/mewtwonite_x.4bpp.lz"); -const u32 gItemIconPalette_MewtwoniteX[] = INCBIN_U32("graphics/items/icon_palettes/mewtwonite_x.gbapal.lz"); +const u16 gItemIconPalette_MewtwoniteX[] = INCBIN_U16("graphics/items/icon_palettes/mewtwonite_x.gbapal"); const u32 gItemIcon_MewtwoniteY[] = INCBIN_U32("graphics/items/icons/mewtwonite_y.4bpp.lz"); -const u32 gItemIconPalette_MewtwoniteY[] = INCBIN_U32("graphics/items/icon_palettes/mewtwonite_y.gbapal.lz"); +const u16 gItemIconPalette_MewtwoniteY[] = INCBIN_U16("graphics/items/icon_palettes/mewtwonite_y.gbapal"); const u32 gItemIcon_Ampharosite[] = INCBIN_U32("graphics/items/icons/ampharosite.4bpp.lz"); -const u32 gItemIconPalette_Ampharosite[] = INCBIN_U32("graphics/items/icon_palettes/ampharosite.gbapal.lz"); +const u16 gItemIconPalette_Ampharosite[] = INCBIN_U16("graphics/items/icon_palettes/ampharosite.gbapal"); const u32 gItemIcon_Steelixite[] = INCBIN_U32("graphics/items/icons/steelixite.4bpp.lz"); -const u32 gItemIconPalette_Steelixite[] = INCBIN_U32("graphics/items/icon_palettes/steelixite.gbapal.lz"); +const u16 gItemIconPalette_Steelixite[] = INCBIN_U16("graphics/items/icon_palettes/steelixite.gbapal"); const u32 gItemIcon_Scizorite[] = INCBIN_U32("graphics/items/icons/scizorite.4bpp.lz"); -const u32 gItemIconPalette_Scizorite[] = INCBIN_U32("graphics/items/icon_palettes/scizorite.gbapal.lz"); +const u16 gItemIconPalette_Scizorite[] = INCBIN_U16("graphics/items/icon_palettes/scizorite.gbapal"); const u32 gItemIcon_Heracronite[] = INCBIN_U32("graphics/items/icons/heracronite.4bpp.lz"); -const u32 gItemIconPalette_Heracronite[] = INCBIN_U32("graphics/items/icon_palettes/heracronite.gbapal.lz"); +const u16 gItemIconPalette_Heracronite[] = INCBIN_U16("graphics/items/icon_palettes/heracronite.gbapal"); const u32 gItemIcon_Houndoominite[] = INCBIN_U32("graphics/items/icons/houndoominite.4bpp.lz"); -const u32 gItemIconPalette_Houndoominite[] = INCBIN_U32("graphics/items/icon_palettes/houndoominite.gbapal.lz"); +const u16 gItemIconPalette_Houndoominite[] = INCBIN_U16("graphics/items/icon_palettes/houndoominite.gbapal"); const u32 gItemIcon_Tyranitarite[] = INCBIN_U32("graphics/items/icons/tyranitarite.4bpp.lz"); -const u32 gItemIconPalette_Tyranitarite[] = INCBIN_U32("graphics/items/icon_palettes/tyranitarite.gbapal.lz"); +const u16 gItemIconPalette_Tyranitarite[] = INCBIN_U16("graphics/items/icon_palettes/tyranitarite.gbapal"); const u32 gItemIcon_Sceptilite[] = INCBIN_U32("graphics/items/icons/sceptilite.4bpp.lz"); -const u32 gItemIconPalette_Sceptilite[] = INCBIN_U32("graphics/items/icon_palettes/sceptilite.gbapal.lz"); +const u16 gItemIconPalette_Sceptilite[] = INCBIN_U16("graphics/items/icon_palettes/sceptilite.gbapal"); const u32 gItemIcon_Blazikenite[] = INCBIN_U32("graphics/items/icons/blazikenite.4bpp.lz"); -const u32 gItemIconPalette_Blazikenite[] = INCBIN_U32("graphics/items/icon_palettes/blazikenite.gbapal.lz"); +const u16 gItemIconPalette_Blazikenite[] = INCBIN_U16("graphics/items/icon_palettes/blazikenite.gbapal"); const u32 gItemIcon_Swampertite[] = INCBIN_U32("graphics/items/icons/swampertite.4bpp.lz"); -const u32 gItemIconPalette_Swampertite[] = INCBIN_U32("graphics/items/icon_palettes/swampertite.gbapal.lz"); +const u16 gItemIconPalette_Swampertite[] = INCBIN_U16("graphics/items/icon_palettes/swampertite.gbapal"); const u32 gItemIcon_Gardevoirite[] = INCBIN_U32("graphics/items/icons/gardevoirite.4bpp.lz"); -const u32 gItemIconPalette_Gardevoirite[] = INCBIN_U32("graphics/items/icon_palettes/gardevoirite.gbapal.lz"); +const u16 gItemIconPalette_Gardevoirite[] = INCBIN_U16("graphics/items/icon_palettes/gardevoirite.gbapal"); const u32 gItemIcon_Sablenite[] = INCBIN_U32("graphics/items/icons/sablenite.4bpp.lz"); -const u32 gItemIconPalette_Sablenite[] = INCBIN_U32("graphics/items/icon_palettes/sablenite.gbapal.lz"); +const u16 gItemIconPalette_Sablenite[] = INCBIN_U16("graphics/items/icon_palettes/sablenite.gbapal"); const u32 gItemIcon_Mawilite[] = INCBIN_U32("graphics/items/icons/mawilite.4bpp.lz"); -const u32 gItemIconPalette_Mawilite[] = INCBIN_U32("graphics/items/icon_palettes/mawilite.gbapal.lz"); +const u16 gItemIconPalette_Mawilite[] = INCBIN_U16("graphics/items/icon_palettes/mawilite.gbapal"); const u32 gItemIcon_Aggronite[] = INCBIN_U32("graphics/items/icons/aggronite.4bpp.lz"); -const u32 gItemIconPalette_Aggronite[] = INCBIN_U32("graphics/items/icon_palettes/aggronite.gbapal.lz"); +const u16 gItemIconPalette_Aggronite[] = INCBIN_U16("graphics/items/icon_palettes/aggronite.gbapal"); const u32 gItemIcon_Medichamite[] = INCBIN_U32("graphics/items/icons/medichamite.4bpp.lz"); -const u32 gItemIconPalette_Medichamite[] = INCBIN_U32("graphics/items/icon_palettes/medichamite.gbapal.lz"); +const u16 gItemIconPalette_Medichamite[] = INCBIN_U16("graphics/items/icon_palettes/medichamite.gbapal"); const u32 gItemIcon_Manectite[] = INCBIN_U32("graphics/items/icons/manectite.4bpp.lz"); -const u32 gItemIconPalette_Manectite[] = INCBIN_U32("graphics/items/icon_palettes/manectite.gbapal.lz"); +const u16 gItemIconPalette_Manectite[] = INCBIN_U16("graphics/items/icon_palettes/manectite.gbapal"); const u32 gItemIcon_Sharpedonite[] = INCBIN_U32("graphics/items/icons/sharpedonite.4bpp.lz"); -const u32 gItemIconPalette_Sharpedonite[] = INCBIN_U32("graphics/items/icon_palettes/sharpedonite.gbapal.lz"); +const u16 gItemIconPalette_Sharpedonite[] = INCBIN_U16("graphics/items/icon_palettes/sharpedonite.gbapal"); const u32 gItemIcon_Cameruptite[] = INCBIN_U32("graphics/items/icons/cameruptite.4bpp.lz"); -const u32 gItemIconPalette_Cameruptite[] = INCBIN_U32("graphics/items/icon_palettes/cameruptite.gbapal.lz"); +const u16 gItemIconPalette_Cameruptite[] = INCBIN_U16("graphics/items/icon_palettes/cameruptite.gbapal"); const u32 gItemIcon_Altarianite[] = INCBIN_U32("graphics/items/icons/altarianite.4bpp.lz"); -const u32 gItemIconPalette_Altarianite[] = INCBIN_U32("graphics/items/icon_palettes/altarianite.gbapal.lz"); +const u16 gItemIconPalette_Altarianite[] = INCBIN_U16("graphics/items/icon_palettes/altarianite.gbapal"); const u32 gItemIcon_Banettite[] = INCBIN_U32("graphics/items/icons/banettite.4bpp.lz"); -const u32 gItemIconPalette_Banettite[] = INCBIN_U32("graphics/items/icon_palettes/banettite.gbapal.lz"); +const u16 gItemIconPalette_Banettite[] = INCBIN_U16("graphics/items/icon_palettes/banettite.gbapal"); const u32 gItemIcon_Absolite[] = INCBIN_U32("graphics/items/icons/absolite.4bpp.lz"); -const u32 gItemIconPalette_Absolite[] = INCBIN_U32("graphics/items/icon_palettes/absolite.gbapal.lz"); +const u16 gItemIconPalette_Absolite[] = INCBIN_U16("graphics/items/icon_palettes/absolite.gbapal"); const u32 gItemIcon_Glalitite[] = INCBIN_U32("graphics/items/icons/glalitite.4bpp.lz"); -const u32 gItemIconPalette_Glalitite[] = INCBIN_U32("graphics/items/icon_palettes/glalitite.gbapal.lz"); +const u16 gItemIconPalette_Glalitite[] = INCBIN_U16("graphics/items/icon_palettes/glalitite.gbapal"); const u32 gItemIcon_Salamencite[] = INCBIN_U32("graphics/items/icons/salamencite.4bpp.lz"); -const u32 gItemIconPalette_Salamencite[] = INCBIN_U32("graphics/items/icon_palettes/salamencite.gbapal.lz"); +const u16 gItemIconPalette_Salamencite[] = INCBIN_U16("graphics/items/icon_palettes/salamencite.gbapal"); const u32 gItemIcon_Metagrossite[] = INCBIN_U32("graphics/items/icons/metagrossite.4bpp.lz"); -const u32 gItemIconPalette_Metagrossite[] = INCBIN_U32("graphics/items/icon_palettes/metagrossite.gbapal.lz"); +const u16 gItemIconPalette_Metagrossite[] = INCBIN_U16("graphics/items/icon_palettes/metagrossite.gbapal"); const u32 gItemIcon_Latiasite[] = INCBIN_U32("graphics/items/icons/latiasite.4bpp.lz"); -const u32 gItemIconPalette_Latiasite[] = INCBIN_U32("graphics/items/icon_palettes/latiasite.gbapal.lz"); +const u16 gItemIconPalette_Latiasite[] = INCBIN_U16("graphics/items/icon_palettes/latiasite.gbapal"); const u32 gItemIcon_Latiosite[] = INCBIN_U32("graphics/items/icons/latiosite.4bpp.lz"); -const u32 gItemIconPalette_Latiosite[] = INCBIN_U32("graphics/items/icon_palettes/latiosite.gbapal.lz"); +const u16 gItemIconPalette_Latiosite[] = INCBIN_U16("graphics/items/icon_palettes/latiosite.gbapal"); const u32 gItemIcon_Lopunnite[] = INCBIN_U32("graphics/items/icons/lopunnite.4bpp.lz"); -const u32 gItemIconPalette_Lopunnite[] = INCBIN_U32("graphics/items/icon_palettes/lopunnite.gbapal.lz"); +const u16 gItemIconPalette_Lopunnite[] = INCBIN_U16("graphics/items/icon_palettes/lopunnite.gbapal"); const u32 gItemIcon_Garchompite[] = INCBIN_U32("graphics/items/icons/garchompite.4bpp.lz"); -const u32 gItemIconPalette_Garchompite[] = INCBIN_U32("graphics/items/icon_palettes/garchompite.gbapal.lz"); +const u16 gItemIconPalette_Garchompite[] = INCBIN_U16("graphics/items/icon_palettes/garchompite.gbapal"); const u32 gItemIcon_Lucarionite[] = INCBIN_U32("graphics/items/icons/lucarionite.4bpp.lz"); -const u32 gItemIconPalette_Lucarionite[] = INCBIN_U32("graphics/items/icon_palettes/lucarionite.gbapal.lz"); +const u16 gItemIconPalette_Lucarionite[] = INCBIN_U16("graphics/items/icon_palettes/lucarionite.gbapal"); const u32 gItemIcon_Abomasite[] = INCBIN_U32("graphics/items/icons/abomasite.4bpp.lz"); -const u32 gItemIconPalette_Abomasite[] = INCBIN_U32("graphics/items/icon_palettes/abomasite.gbapal.lz"); +const u16 gItemIconPalette_Abomasite[] = INCBIN_U16("graphics/items/icon_palettes/abomasite.gbapal"); const u32 gItemIcon_Galladite[] = INCBIN_U32("graphics/items/icons/galladite.4bpp.lz"); -const u32 gItemIconPalette_Galladite[] = INCBIN_U32("graphics/items/icon_palettes/galladite.gbapal.lz"); +const u16 gItemIconPalette_Galladite[] = INCBIN_U16("graphics/items/icon_palettes/galladite.gbapal"); const u32 gItemIcon_Audinite[] = INCBIN_U32("graphics/items/icons/audinite.4bpp.lz"); -const u32 gItemIconPalette_Audinite[] = INCBIN_U32("graphics/items/icon_palettes/audinite.gbapal.lz"); +const u16 gItemIconPalette_Audinite[] = INCBIN_U16("graphics/items/icon_palettes/audinite.gbapal"); const u32 gItemIcon_Diancite[] = INCBIN_U32("graphics/items/icons/diancite.4bpp.lz"); -const u32 gItemIconPalette_Diancite[] = INCBIN_U32("graphics/items/icon_palettes/diancite.gbapal.lz"); +const u16 gItemIconPalette_Diancite[] = INCBIN_U16("graphics/items/icon_palettes/diancite.gbapal"); // Gems const u32 gItemIcon_NormalGem[] = INCBIN_U32("graphics/items/icons/normal_gem.4bpp.lz"); -const u32 gItemIconPalette_NormalGem[] = INCBIN_U32("graphics/items/icon_palettes/normal_gem.gbapal.lz"); +const u16 gItemIconPalette_NormalGem[] = INCBIN_U16("graphics/items/icon_palettes/normal_gem.gbapal"); const u32 gItemIcon_FireGem[] = INCBIN_U32("graphics/items/icons/fire_gem.4bpp.lz"); -const u32 gItemIconPalette_FireGem[] = INCBIN_U32("graphics/items/icon_palettes/fire_gem.gbapal.lz"); +const u16 gItemIconPalette_FireGem[] = INCBIN_U16("graphics/items/icon_palettes/fire_gem.gbapal"); const u32 gItemIcon_WaterGem[] = INCBIN_U32("graphics/items/icons/water_gem.4bpp.lz"); -const u32 gItemIconPalette_WaterGem[] = INCBIN_U32("graphics/items/icon_palettes/water_gem.gbapal.lz"); +const u16 gItemIconPalette_WaterGem[] = INCBIN_U16("graphics/items/icon_palettes/water_gem.gbapal"); const u32 gItemIcon_ElectricGem[] = INCBIN_U32("graphics/items/icons/electric_gem.4bpp.lz"); -const u32 gItemIconPalette_ElectricGem[] = INCBIN_U32("graphics/items/icon_palettes/electric_gem.gbapal.lz"); +const u16 gItemIconPalette_ElectricGem[] = INCBIN_U16("graphics/items/icon_palettes/electric_gem.gbapal"); const u32 gItemIcon_GrassGem[] = INCBIN_U32("graphics/items/icons/grass_gem.4bpp.lz"); -const u32 gItemIconPalette_GrassGem[] = INCBIN_U32("graphics/items/icon_palettes/grass_gem.gbapal.lz"); +const u16 gItemIconPalette_GrassGem[] = INCBIN_U16("graphics/items/icon_palettes/grass_gem.gbapal"); const u32 gItemIcon_IceGem[] = INCBIN_U32("graphics/items/icons/ice_gem.4bpp.lz"); -const u32 gItemIconPalette_IceGem[] = INCBIN_U32("graphics/items/icon_palettes/ice_gem.gbapal.lz"); +const u16 gItemIconPalette_IceGem[] = INCBIN_U16("graphics/items/icon_palettes/ice_gem.gbapal"); const u32 gItemIcon_FightingGem[] = INCBIN_U32("graphics/items/icons/fighting_gem.4bpp.lz"); -const u32 gItemIconPalette_FightingGem[] = INCBIN_U32("graphics/items/icon_palettes/fighting_gem.gbapal.lz"); +const u16 gItemIconPalette_FightingGem[] = INCBIN_U16("graphics/items/icon_palettes/fighting_gem.gbapal"); const u32 gItemIcon_PoisonGem[] = INCBIN_U32("graphics/items/icons/poison_gem.4bpp.lz"); -const u32 gItemIconPalette_PoisonGem[] = INCBIN_U32("graphics/items/icon_palettes/poison_gem.gbapal.lz"); +const u16 gItemIconPalette_PoisonGem[] = INCBIN_U16("graphics/items/icon_palettes/poison_gem.gbapal"); const u32 gItemIcon_GroundGem[] = INCBIN_U32("graphics/items/icons/ground_gem.4bpp.lz"); -const u32 gItemIconPalette_GroundGem[] = INCBIN_U32("graphics/items/icon_palettes/ground_gem.gbapal.lz"); +const u16 gItemIconPalette_GroundGem[] = INCBIN_U16("graphics/items/icon_palettes/ground_gem.gbapal"); const u32 gItemIcon_FlyingGem[] = INCBIN_U32("graphics/items/icons/flying_gem.4bpp.lz"); -const u32 gItemIconPalette_FlyingGem[] = INCBIN_U32("graphics/items/icon_palettes/flying_gem.gbapal.lz"); +const u16 gItemIconPalette_FlyingGem[] = INCBIN_U16("graphics/items/icon_palettes/flying_gem.gbapal"); const u32 gItemIcon_PsychicGem[] = INCBIN_U32("graphics/items/icons/psychic_gem.4bpp.lz"); -const u32 gItemIconPalette_PsychicGem[] = INCBIN_U32("graphics/items/icon_palettes/psychic_gem.gbapal.lz"); +const u16 gItemIconPalette_PsychicGem[] = INCBIN_U16("graphics/items/icon_palettes/psychic_gem.gbapal"); const u32 gItemIcon_BugGem[] = INCBIN_U32("graphics/items/icons/bug_gem.4bpp.lz"); -const u32 gItemIconPalette_BugGem[] = INCBIN_U32("graphics/items/icon_palettes/bug_gem.gbapal.lz"); +const u16 gItemIconPalette_BugGem[] = INCBIN_U16("graphics/items/icon_palettes/bug_gem.gbapal"); const u32 gItemIcon_RockGem[] = INCBIN_U32("graphics/items/icons/rock_gem.4bpp.lz"); -const u32 gItemIconPalette_RockGem[] = INCBIN_U32("graphics/items/icon_palettes/rock_gem.gbapal.lz"); +const u16 gItemIconPalette_RockGem[] = INCBIN_U16("graphics/items/icon_palettes/rock_gem.gbapal"); const u32 gItemIcon_GhostGem[] = INCBIN_U32("graphics/items/icons/ghost_gem.4bpp.lz"); -const u32 gItemIconPalette_GhostGem[] = INCBIN_U32("graphics/items/icon_palettes/ghost_gem.gbapal.lz"); +const u16 gItemIconPalette_GhostGem[] = INCBIN_U16("graphics/items/icon_palettes/ghost_gem.gbapal"); const u32 gItemIcon_DragonGem[] = INCBIN_U32("graphics/items/icons/dragon_gem.4bpp.lz"); -const u32 gItemIconPalette_DragonGem[] = INCBIN_U32("graphics/items/icon_palettes/dragon_gem.gbapal.lz"); +const u16 gItemIconPalette_DragonGem[] = INCBIN_U16("graphics/items/icon_palettes/dragon_gem.gbapal"); const u32 gItemIcon_DarkGem[] = INCBIN_U32("graphics/items/icons/dark_gem.4bpp.lz"); -const u32 gItemIconPalette_DarkGem[] = INCBIN_U32("graphics/items/icon_palettes/dark_gem.gbapal.lz"); +const u16 gItemIconPalette_DarkGem[] = INCBIN_U16("graphics/items/icon_palettes/dark_gem.gbapal"); const u32 gItemIcon_SteelGem[] = INCBIN_U32("graphics/items/icons/steel_gem.4bpp.lz"); -const u32 gItemIconPalette_SteelGem[] = INCBIN_U32("graphics/items/icon_palettes/steel_gem.gbapal.lz"); +const u16 gItemIconPalette_SteelGem[] = INCBIN_U16("graphics/items/icon_palettes/steel_gem.gbapal"); const u32 gItemIcon_FairyGem[] = INCBIN_U32("graphics/items/icons/fairy_gem.4bpp.lz"); -const u32 gItemIconPalette_FairyGem[] = INCBIN_U32("graphics/items/icon_palettes/fairy_gem.gbapal.lz"); +const u16 gItemIconPalette_FairyGem[] = INCBIN_U16("graphics/items/icon_palettes/fairy_gem.gbapal"); // Z-Crystals const u32 gItemIcon_NormaliumZ[] = INCBIN_U32("graphics/items/icons/normalium_z.4bpp.lz"); -const u32 gItemIconPalette_NormaliumZ[] = INCBIN_U32("graphics/items/icon_palettes/normalium_z.gbapal.lz"); +const u16 gItemIconPalette_NormaliumZ[] = INCBIN_U16("graphics/items/icon_palettes/normalium_z.gbapal"); const u32 gItemIcon_FiriumZ[] = INCBIN_U32("graphics/items/icons/firium_z.4bpp.lz"); -const u32 gItemIconPalette_FiriumZ[] = INCBIN_U32("graphics/items/icon_palettes/firium_z.gbapal.lz"); +const u16 gItemIconPalette_FiriumZ[] = INCBIN_U16("graphics/items/icon_palettes/firium_z.gbapal"); const u32 gItemIcon_WateriumZ[] = INCBIN_U32("graphics/items/icons/waterium_z.4bpp.lz"); -const u32 gItemIconPalette_WateriumZ[] = INCBIN_U32("graphics/items/icon_palettes/waterium_z.gbapal.lz"); +const u16 gItemIconPalette_WateriumZ[] = INCBIN_U16("graphics/items/icon_palettes/waterium_z.gbapal"); const u32 gItemIcon_ElectriumZ[] = INCBIN_U32("graphics/items/icons/electrium_z.4bpp.lz"); -const u32 gItemIconPalette_ElectriumZ[] = INCBIN_U32("graphics/items/icon_palettes/electrium_z.gbapal.lz"); +const u16 gItemIconPalette_ElectriumZ[] = INCBIN_U16("graphics/items/icon_palettes/electrium_z.gbapal"); const u32 gItemIcon_GrassiumZ[] = INCBIN_U32("graphics/items/icons/grassium_z.4bpp.lz"); -const u32 gItemIconPalette_GrassiumZ[] = INCBIN_U32("graphics/items/icon_palettes/grassium_z.gbapal.lz"); +const u16 gItemIconPalette_GrassiumZ[] = INCBIN_U16("graphics/items/icon_palettes/grassium_z.gbapal"); const u32 gItemIcon_IciumZ[] = INCBIN_U32("graphics/items/icons/icium_z.4bpp.lz"); -const u32 gItemIconPalette_IciumZ[] = INCBIN_U32("graphics/items/icon_palettes/icium_z.gbapal.lz"); +const u16 gItemIconPalette_IciumZ[] = INCBIN_U16("graphics/items/icon_palettes/icium_z.gbapal"); const u32 gItemIcon_FightiniumZ[] = INCBIN_U32("graphics/items/icons/fightinium_z.4bpp.lz"); -const u32 gItemIconPalette_FightiniumZ[] = INCBIN_U32("graphics/items/icon_palettes/fightinium_z.gbapal.lz"); +const u16 gItemIconPalette_FightiniumZ[] = INCBIN_U16("graphics/items/icon_palettes/fightinium_z.gbapal"); const u32 gItemIcon_PoisoniumZ[] = INCBIN_U32("graphics/items/icons/poisonium_z.4bpp.lz"); -const u32 gItemIconPalette_PoisoniumZ[] = INCBIN_U32("graphics/items/icon_palettes/poisonium_z.gbapal.lz"); +const u16 gItemIconPalette_PoisoniumZ[] = INCBIN_U16("graphics/items/icon_palettes/poisonium_z.gbapal"); const u32 gItemIcon_GroundiumZ[] = INCBIN_U32("graphics/items/icons/groundium_z.4bpp.lz"); -const u32 gItemIconPalette_GroundiumZ[] = INCBIN_U32("graphics/items/icon_palettes/groundium_z.gbapal.lz"); +const u16 gItemIconPalette_GroundiumZ[] = INCBIN_U16("graphics/items/icon_palettes/groundium_z.gbapal"); const u32 gItemIcon_FlyiniumZ[] = INCBIN_U32("graphics/items/icons/flyinium_z.4bpp.lz"); -const u32 gItemIconPalette_FlyiniumZ[] = INCBIN_U32("graphics/items/icon_palettes/flyinium_z.gbapal.lz"); +const u16 gItemIconPalette_FlyiniumZ[] = INCBIN_U16("graphics/items/icon_palettes/flyinium_z.gbapal"); const u32 gItemIcon_PsychiumZ[] = INCBIN_U32("graphics/items/icons/psychium_z.4bpp.lz"); -const u32 gItemIconPalette_PsychiumZ[] = INCBIN_U32("graphics/items/icon_palettes/psychium_z.gbapal.lz"); +const u16 gItemIconPalette_PsychiumZ[] = INCBIN_U16("graphics/items/icon_palettes/psychium_z.gbapal"); const u32 gItemIcon_BuginiumZ[] = INCBIN_U32("graphics/items/icons/buginium_z.4bpp.lz"); -const u32 gItemIconPalette_BuginiumZ[] = INCBIN_U32("graphics/items/icon_palettes/buginium_z.gbapal.lz"); +const u16 gItemIconPalette_BuginiumZ[] = INCBIN_U16("graphics/items/icon_palettes/buginium_z.gbapal"); const u32 gItemIcon_RockiumZ[] = INCBIN_U32("graphics/items/icons/rockium_z.4bpp.lz"); -const u32 gItemIconPalette_RockiumZ[] = INCBIN_U32("graphics/items/icon_palettes/rockium_z.gbapal.lz"); +const u16 gItemIconPalette_RockiumZ[] = INCBIN_U16("graphics/items/icon_palettes/rockium_z.gbapal"); const u32 gItemIcon_GhostiumZ[] = INCBIN_U32("graphics/items/icons/ghostium_z.4bpp.lz"); -const u32 gItemIconPalette_GhostiumZ[] = INCBIN_U32("graphics/items/icon_palettes/ghostium_z.gbapal.lz"); +const u16 gItemIconPalette_GhostiumZ[] = INCBIN_U16("graphics/items/icon_palettes/ghostium_z.gbapal"); const u32 gItemIcon_DragoniumZ[] = INCBIN_U32("graphics/items/icons/dragonium_z.4bpp.lz"); -const u32 gItemIconPalette_DragoniumZ[] = INCBIN_U32("graphics/items/icon_palettes/dragonium_z.gbapal.lz"); +const u16 gItemIconPalette_DragoniumZ[] = INCBIN_U16("graphics/items/icon_palettes/dragonium_z.gbapal"); const u32 gItemIcon_DarkiniumZ[] = INCBIN_U32("graphics/items/icons/darkinium_z.4bpp.lz"); -const u32 gItemIconPalette_DarkiniumZ[] = INCBIN_U32("graphics/items/icon_palettes/darkinium_z.gbapal.lz"); +const u16 gItemIconPalette_DarkiniumZ[] = INCBIN_U16("graphics/items/icon_palettes/darkinium_z.gbapal"); const u32 gItemIcon_SteeliumZ[] = INCBIN_U32("graphics/items/icons/steelium_z.4bpp.lz"); -const u32 gItemIconPalette_SteeliumZ[] = INCBIN_U32("graphics/items/icon_palettes/steelium_z.gbapal.lz"); +const u16 gItemIconPalette_SteeliumZ[] = INCBIN_U16("graphics/items/icon_palettes/steelium_z.gbapal"); const u32 gItemIcon_FairiumZ[] = INCBIN_U32("graphics/items/icons/fairium_z.4bpp.lz"); -const u32 gItemIconPalette_FairiumZ[] = INCBIN_U32("graphics/items/icon_palettes/fairium_z.gbapal.lz"); +const u16 gItemIconPalette_FairiumZ[] = INCBIN_U16("graphics/items/icon_palettes/fairium_z.gbapal"); const u32 gItemIcon_PikaniumZ[] = INCBIN_U32("graphics/items/icons/pikanium_z.4bpp.lz"); -const u32 gItemIconPalette_PikaniumZ[] = INCBIN_U32("graphics/items/icon_palettes/pikanium_z.gbapal.lz"); +const u16 gItemIconPalette_PikaniumZ[] = INCBIN_U16("graphics/items/icon_palettes/pikanium_z.gbapal"); const u32 gItemIcon_EeviumZ[] = INCBIN_U32("graphics/items/icons/eevium_z.4bpp.lz"); -const u32 gItemIconPalette_EeviumZ[] = INCBIN_U32("graphics/items/icon_palettes/eevium_z.gbapal.lz"); +const u16 gItemIconPalette_EeviumZ[] = INCBIN_U16("graphics/items/icon_palettes/eevium_z.gbapal"); const u32 gItemIcon_SnorliumZ[] = INCBIN_U32("graphics/items/icons/snorlium_z.4bpp.lz"); -const u32 gItemIconPalette_SnorliumZ[] = INCBIN_U32("graphics/items/icon_palettes/snorlium_z.gbapal.lz"); +const u16 gItemIconPalette_SnorliumZ[] = INCBIN_U16("graphics/items/icon_palettes/snorlium_z.gbapal"); const u32 gItemIcon_MewniumZ[] = INCBIN_U32("graphics/items/icons/mewnium_z.4bpp.lz"); -const u32 gItemIconPalette_MewniumZ[] = INCBIN_U32("graphics/items/icon_palettes/mewnium_z.gbapal.lz"); +const u16 gItemIconPalette_MewniumZ[] = INCBIN_U16("graphics/items/icon_palettes/mewnium_z.gbapal"); const u32 gItemIcon_DecidiumZ[] = INCBIN_U32("graphics/items/icons/decidium_z.4bpp.lz"); -const u32 gItemIconPalette_DecidiumZ[] = INCBIN_U32("graphics/items/icon_palettes/decidium_z.gbapal.lz"); +const u16 gItemIconPalette_DecidiumZ[] = INCBIN_U16("graphics/items/icon_palettes/decidium_z.gbapal"); const u32 gItemIcon_InciniumZ[] = INCBIN_U32("graphics/items/icons/incinium_z.4bpp.lz"); -const u32 gItemIconPalette_InciniumZ[] = INCBIN_U32("graphics/items/icon_palettes/incinium_z.gbapal.lz"); +const u16 gItemIconPalette_InciniumZ[] = INCBIN_U16("graphics/items/icon_palettes/incinium_z.gbapal"); const u32 gItemIcon_PrimariumZ[] = INCBIN_U32("graphics/items/icons/primarium_z.4bpp.lz"); -const u32 gItemIconPalette_PrimariumZ[] = INCBIN_U32("graphics/items/icon_palettes/primarium_z.gbapal.lz"); +const u16 gItemIconPalette_PrimariumZ[] = INCBIN_U16("graphics/items/icon_palettes/primarium_z.gbapal"); const u32 gItemIcon_LycaniumZ[] = INCBIN_U32("graphics/items/icons/lycanium_z.4bpp.lz"); -const u32 gItemIconPalette_LycaniumZ[] = INCBIN_U32("graphics/items/icon_palettes/lycanium_z.gbapal.lz"); +const u16 gItemIconPalette_LycaniumZ[] = INCBIN_U16("graphics/items/icon_palettes/lycanium_z.gbapal"); const u32 gItemIcon_MimikiumZ[] = INCBIN_U32("graphics/items/icons/mimikium_z.4bpp.lz"); -const u32 gItemIconPalette_MimikiumZ[] = INCBIN_U32("graphics/items/icon_palettes/mimikium_z.gbapal.lz"); +const u16 gItemIconPalette_MimikiumZ[] = INCBIN_U16("graphics/items/icon_palettes/mimikium_z.gbapal"); const u32 gItemIcon_KommoniumZ[] = INCBIN_U32("graphics/items/icons/kommonium_z.4bpp.lz"); -const u32 gItemIconPalette_KommoniumZ[] = INCBIN_U32("graphics/items/icon_palettes/kommonium_z.gbapal.lz"); +const u16 gItemIconPalette_KommoniumZ[] = INCBIN_U16("graphics/items/icon_palettes/kommonium_z.gbapal"); const u32 gItemIcon_TapuniumZ[] = INCBIN_U32("graphics/items/icons/tapunium_z.4bpp.lz"); -const u32 gItemIconPalette_TapuniumZ[] = INCBIN_U32("graphics/items/icon_palettes/tapunium_z.gbapal.lz"); +const u16 gItemIconPalette_TapuniumZ[] = INCBIN_U16("graphics/items/icon_palettes/tapunium_z.gbapal"); const u32 gItemIcon_SolganiumZ[] = INCBIN_U32("graphics/items/icons/solganium_z.4bpp.lz"); -const u32 gItemIconPalette_SolganiumZ[] = INCBIN_U32("graphics/items/icon_palettes/solganium_z.gbapal.lz"); +const u16 gItemIconPalette_SolganiumZ[] = INCBIN_U16("graphics/items/icon_palettes/solganium_z.gbapal"); const u32 gItemIcon_LunaliumZ[] = INCBIN_U32("graphics/items/icons/lunalium_z.4bpp.lz"); -const u32 gItemIconPalette_LunaliumZ[] = INCBIN_U32("graphics/items/icon_palettes/lunalium_z.gbapal.lz"); +const u16 gItemIconPalette_LunaliumZ[] = INCBIN_U16("graphics/items/icon_palettes/lunalium_z.gbapal"); const u32 gItemIcon_MarshadiumZ[] = INCBIN_U32("graphics/items/icons/marshadium_z.4bpp.lz"); -const u32 gItemIconPalette_MarshadiumZ[] = INCBIN_U32("graphics/items/icon_palettes/marshadium_z.gbapal.lz"); +const u16 gItemIconPalette_MarshadiumZ[] = INCBIN_U16("graphics/items/icon_palettes/marshadium_z.gbapal"); const u32 gItemIcon_AloraichiumZ[] = INCBIN_U32("graphics/items/icons/aloraichium_z.4bpp.lz"); -const u32 gItemIconPalette_AloraichiumZ[] = INCBIN_U32("graphics/items/icon_palettes/aloraichium_z.gbapal.lz"); +const u16 gItemIconPalette_AloraichiumZ[] = INCBIN_U16("graphics/items/icon_palettes/aloraichium_z.gbapal"); const u32 gItemIcon_PikashuniumZ[] = INCBIN_U32("graphics/items/icons/pikashunium_z.4bpp.lz"); -const u32 gItemIconPalette_PikashuniumZ[] = INCBIN_U32("graphics/items/icon_palettes/pikashunium_z.gbapal.lz"); +const u16 gItemIconPalette_PikashuniumZ[] = INCBIN_U16("graphics/items/icon_palettes/pikashunium_z.gbapal"); const u32 gItemIcon_UltranecroziumZ[] = INCBIN_U32("graphics/items/icons/ultranecrozium_z.4bpp.lz"); -const u32 gItemIconPalette_UltranecroziumZ[] = INCBIN_U32("graphics/items/icon_palettes/ultranecrozium_z.gbapal.lz"); +const u16 gItemIconPalette_UltranecroziumZ[] = INCBIN_U16("graphics/items/icon_palettes/ultranecrozium_z.gbapal"); // Species-specific Held Items const u32 gItemIcon_LightBall[] = INCBIN_U32("graphics/items/icons/light_ball.4bpp.lz"); -const u32 gItemIconPalette_LightBall[] = INCBIN_U32("graphics/items/icon_palettes/light_ball.gbapal.lz"); +const u16 gItemIconPalette_LightBall[] = INCBIN_U16("graphics/items/icon_palettes/light_ball.gbapal"); const u32 gItemIcon_Leek[] = INCBIN_U32("graphics/items/icons/leek.4bpp.lz"); -const u32 gItemIconPalette_Leek[] = INCBIN_U32("graphics/items/icon_palettes/leek.gbapal.lz"); +const u16 gItemIconPalette_Leek[] = INCBIN_U16("graphics/items/icon_palettes/leek.gbapal"); const u32 gItemIcon_ThickClub[] = INCBIN_U32("graphics/items/icons/thick_club.4bpp.lz"); -const u32 gItemIconPalette_ThickClub[] = INCBIN_U32("graphics/items/icon_palettes/thick_club.gbapal.lz"); +const u16 gItemIconPalette_ThickClub[] = INCBIN_U16("graphics/items/icon_palettes/thick_club.gbapal"); const u32 gItemIcon_LuckyPunch[] = INCBIN_U32("graphics/items/icons/lucky_punch.4bpp.lz"); -const u32 gItemIconPalette_LuckyPunch[] = INCBIN_U32("graphics/items/icon_palettes/lucky_punch.gbapal.lz"); +const u16 gItemIconPalette_LuckyPunch[] = INCBIN_U16("graphics/items/icon_palettes/lucky_punch.gbapal"); const u32 gItemIcon_MetalPowder[] = INCBIN_U32("graphics/items/icons/metal_powder.4bpp.lz"); -const u32 gItemIconPalette_MetalPowder[] = INCBIN_U32("graphics/items/icon_palettes/metal_powder.gbapal.lz"); +const u16 gItemIconPalette_MetalPowder[] = INCBIN_U16("graphics/items/icon_palettes/metal_powder.gbapal"); const u32 gItemIcon_QuickPowder[] = INCBIN_U32("graphics/items/icons/quick_powder.4bpp.lz"); -const u32 gItemIconPalette_QuickPowder[] = INCBIN_U32("graphics/items/icon_palettes/quick_powder.gbapal.lz"); +const u16 gItemIconPalette_QuickPowder[] = INCBIN_U16("graphics/items/icon_palettes/quick_powder.gbapal"); const u32 gItemIcon_DeepSeaScale[] = INCBIN_U32("graphics/items/icons/deep_sea_scale.4bpp.lz"); -const u32 gItemIconPalette_DeepSeaScale[] = INCBIN_U32("graphics/items/icon_palettes/deep_sea_scale.gbapal.lz"); +const u16 gItemIconPalette_DeepSeaScale[] = INCBIN_U16("graphics/items/icon_palettes/deep_sea_scale.gbapal"); const u32 gItemIcon_DeepSeaTooth[] = INCBIN_U32("graphics/items/icons/deep_sea_tooth.4bpp.lz"); -const u32 gItemIconPalette_DeepSeaTooth[] = INCBIN_U32("graphics/items/icon_palettes/deep_sea_tooth.gbapal.lz"); +const u16 gItemIconPalette_DeepSeaTooth[] = INCBIN_U16("graphics/items/icon_palettes/deep_sea_tooth.gbapal"); const u32 gItemIcon_SoulDew[] = INCBIN_U32("graphics/items/icons/soul_dew.4bpp.lz"); -const u32 gItemIconPalette_SoulDew[] = INCBIN_U32("graphics/items/icon_palettes/soul_dew.gbapal.lz"); +const u16 gItemIconPalette_SoulDew[] = INCBIN_U16("graphics/items/icon_palettes/soul_dew.gbapal"); const u32 gItemIcon_AdamantOrb[] = INCBIN_U32("graphics/items/icons/adamant_orb.4bpp.lz"); -const u32 gItemIconPalette_AdamantOrb[] = INCBIN_U32("graphics/items/icon_palettes/adamant_orb.gbapal.lz"); +const u16 gItemIconPalette_AdamantOrb[] = INCBIN_U16("graphics/items/icon_palettes/adamant_orb.gbapal"); const u32 gItemIcon_LustrousOrb[] = INCBIN_U32("graphics/items/icons/lustrous_orb.4bpp.lz"); -const u32 gItemIconPalette_LustrousOrb[] = INCBIN_U32("graphics/items/icon_palettes/lustrous_orb.gbapal.lz"); +const u16 gItemIconPalette_LustrousOrb[] = INCBIN_U16("graphics/items/icon_palettes/lustrous_orb.gbapal"); const u32 gItemIcon_GriseousOrb[] = INCBIN_U32("graphics/items/icons/griseous_orb.4bpp.lz"); -const u32 gItemIconPalette_GriseousOrb[] = INCBIN_U32("graphics/items/icon_palettes/griseous_orb.gbapal.lz"); +const u16 gItemIconPalette_GriseousOrb[] = INCBIN_U16("graphics/items/icon_palettes/griseous_orb.gbapal"); // Incenses const u32 gItemIcon_SeaIncense[] = INCBIN_U32("graphics/items/icons/sea_incense.4bpp.lz"); -const u32 gItemIconPalette_SeaIncense[] = INCBIN_U32("graphics/items/icon_palettes/sea_incense.gbapal.lz"); +const u16 gItemIconPalette_SeaIncense[] = INCBIN_U16("graphics/items/icon_palettes/sea_incense.gbapal"); const u32 gItemIcon_LaxIncense[] = INCBIN_U32("graphics/items/icons/lax_incense.4bpp.lz"); -const u32 gItemIconPalette_LaxIncense[] = INCBIN_U32("graphics/items/icon_palettes/lax_incense.gbapal.lz"); +const u16 gItemIconPalette_LaxIncense[] = INCBIN_U16("graphics/items/icon_palettes/lax_incense.gbapal"); const u32 gItemIcon_OddIncense[] = INCBIN_U32("graphics/items/icons/odd_incense.4bpp.lz"); -const u32 gItemIconPalette_OddIncense[] = INCBIN_U32("graphics/items/icon_palettes/odd_incense.gbapal.lz"); +const u16 gItemIconPalette_OddIncense[] = INCBIN_U16("graphics/items/icon_palettes/odd_incense.gbapal"); const u32 gItemIcon_RockIncense[] = INCBIN_U32("graphics/items/icons/rock_incense.4bpp.lz"); -const u32 gItemIconPalette_RockIncense[] = INCBIN_U32("graphics/items/icon_palettes/rock_incense.gbapal.lz"); +const u16 gItemIconPalette_RockIncense[] = INCBIN_U16("graphics/items/icon_palettes/rock_incense.gbapal"); const u32 gItemIcon_FullIncense[] = INCBIN_U32("graphics/items/icons/full_incense.4bpp.lz"); -const u32 gItemIconPalette_FullIncense[] = INCBIN_U32("graphics/items/icon_palettes/full_incense.gbapal.lz"); +const u16 gItemIconPalette_FullIncense[] = INCBIN_U16("graphics/items/icon_palettes/full_incense.gbapal"); const u32 gItemIcon_WaveIncense[] = INCBIN_U32("graphics/items/icons/wave_incense.4bpp.lz"); -const u32 gItemIconPalette_WaveIncense[] = INCBIN_U32("graphics/items/icon_palettes/wave_incense.gbapal.lz"); +const u16 gItemIconPalette_WaveIncense[] = INCBIN_U16("graphics/items/icon_palettes/wave_incense.gbapal"); const u32 gItemIcon_RoseIncense[] = INCBIN_U32("graphics/items/icons/rose_incense.4bpp.lz"); -const u32 gItemIconPalette_RoseIncense[] = INCBIN_U32("graphics/items/icon_palettes/rose_incense.gbapal.lz"); +const u16 gItemIconPalette_RoseIncense[] = INCBIN_U16("graphics/items/icon_palettes/rose_incense.gbapal"); const u32 gItemIcon_LuckIncense[] = INCBIN_U32("graphics/items/icons/luck_incense.4bpp.lz"); -const u32 gItemIconPalette_LuckIncense[] = INCBIN_U32("graphics/items/icon_palettes/luck_incense.gbapal.lz"); +const u16 gItemIconPalette_LuckIncense[] = INCBIN_U16("graphics/items/icon_palettes/luck_incense.gbapal"); const u32 gItemIcon_PureIncense[] = INCBIN_U32("graphics/items/icons/pure_incense.4bpp.lz"); -const u32 gItemIconPalette_PureIncense[] = INCBIN_U32("graphics/items/icon_palettes/pure_incense.gbapal.lz"); +const u16 gItemIconPalette_PureIncense[] = INCBIN_U16("graphics/items/icon_palettes/pure_incense.gbapal"); // Contest Scarves const u32 gItemIcon_Scarf[] = INCBIN_U32("graphics/items/icons/scarf.4bpp.lz"); -const u32 gItemIconPalette_RedScarf[] = INCBIN_U32("graphics/items/icon_palettes/red_scarf.gbapal.lz"); +const u16 gItemIconPalette_RedScarf[] = INCBIN_U16("graphics/items/icon_palettes/red_scarf.gbapal"); -const u32 gItemIconPalette_BlueScarf[] = INCBIN_U32("graphics/items/icon_palettes/blue_scarf.gbapal.lz"); +const u16 gItemIconPalette_BlueScarf[] = INCBIN_U16("graphics/items/icon_palettes/blue_scarf.gbapal"); -const u32 gItemIconPalette_PinkScarf[] = INCBIN_U32("graphics/items/icon_palettes/pink_scarf.gbapal.lz"); +const u16 gItemIconPalette_PinkScarf[] = INCBIN_U16("graphics/items/icon_palettes/pink_scarf.gbapal"); -const u32 gItemIconPalette_GreenScarf[] = INCBIN_U32("graphics/items/icon_palettes/green_scarf.gbapal.lz"); +const u16 gItemIconPalette_GreenScarf[] = INCBIN_U16("graphics/items/icon_palettes/green_scarf.gbapal"); -const u32 gItemIconPalette_YellowScarf[] = INCBIN_U32("graphics/items/icon_palettes/yellow_scarf.gbapal.lz"); +const u16 gItemIconPalette_YellowScarf[] = INCBIN_U16("graphics/items/icon_palettes/yellow_scarf.gbapal"); // EV Gain Modifiers const u32 gItemIcon_MachoBrace[] = INCBIN_U32("graphics/items/icons/macho_brace.4bpp.lz"); -const u32 gItemIconPalette_MachoBrace[] = INCBIN_U32("graphics/items/icon_palettes/macho_brace.gbapal.lz"); +const u16 gItemIconPalette_MachoBrace[] = INCBIN_U16("graphics/items/icon_palettes/macho_brace.gbapal"); const u32 gItemIcon_PowerWeight[] = INCBIN_U32("graphics/items/icons/power_weight.4bpp.lz"); -const u32 gItemIconPalette_PowerWeight[] = INCBIN_U32("graphics/items/icon_palettes/power_weight.gbapal.lz"); +const u16 gItemIconPalette_PowerWeight[] = INCBIN_U16("graphics/items/icon_palettes/power_weight.gbapal"); const u32 gItemIcon_PowerBracer[] = INCBIN_U32("graphics/items/icons/power_bracer.4bpp.lz"); -const u32 gItemIconPalette_PowerBracer[] = INCBIN_U32("graphics/items/icon_palettes/power_bracer.gbapal.lz"); +const u16 gItemIconPalette_PowerBracer[] = INCBIN_U16("graphics/items/icon_palettes/power_bracer.gbapal"); const u32 gItemIcon_PowerBelt[] = INCBIN_U32("graphics/items/icons/power_belt.4bpp.lz"); -const u32 gItemIconPalette_PowerBelt[] = INCBIN_U32("graphics/items/icon_palettes/power_belt.gbapal.lz"); +const u16 gItemIconPalette_PowerBelt[] = INCBIN_U16("graphics/items/icon_palettes/power_belt.gbapal"); const u32 gItemIcon_PowerLens[] = INCBIN_U32("graphics/items/icons/power_lens.4bpp.lz"); -const u32 gItemIconPalette_PowerLens[] = INCBIN_U32("graphics/items/icon_palettes/power_lens.gbapal.lz"); +const u16 gItemIconPalette_PowerLens[] = INCBIN_U16("graphics/items/icon_palettes/power_lens.gbapal"); const u32 gItemIcon_PowerBand[] = INCBIN_U32("graphics/items/icons/power_band.4bpp.lz"); -const u32 gItemIconPalette_PowerBand[] = INCBIN_U32("graphics/items/icon_palettes/power_band.gbapal.lz"); +const u16 gItemIconPalette_PowerBand[] = INCBIN_U16("graphics/items/icon_palettes/power_band.gbapal"); const u32 gItemIcon_PowerAnklet[] = INCBIN_U32("graphics/items/icons/power_anklet.4bpp.lz"); -const u32 gItemIconPalette_PowerAnklet[] = INCBIN_U32("graphics/items/icon_palettes/power_anklet.gbapal.lz"); +const u16 gItemIconPalette_PowerAnklet[] = INCBIN_U16("graphics/items/icon_palettes/power_anklet.gbapal"); // Type-boosting Held Items const u32 gItemIcon_SilkScarf[] = INCBIN_U32("graphics/items/icons/silk_scarf.4bpp.lz"); -const u32 gItemIconPalette_SilkScarf[] = INCBIN_U32("graphics/items/icon_palettes/silk_scarf.gbapal.lz"); +const u16 gItemIconPalette_SilkScarf[] = INCBIN_U16("graphics/items/icon_palettes/silk_scarf.gbapal"); const u32 gItemIcon_Charcoal[] = INCBIN_U32("graphics/items/icons/charcoal.4bpp.lz"); -const u32 gItemIconPalette_Charcoal[] = INCBIN_U32("graphics/items/icon_palettes/charcoal.gbapal.lz"); +const u16 gItemIconPalette_Charcoal[] = INCBIN_U16("graphics/items/icon_palettes/charcoal.gbapal"); const u32 gItemIcon_MysticWater[] = INCBIN_U32("graphics/items/icons/mystic_water.4bpp.lz"); -const u32 gItemIconPalette_MysticWater[] = INCBIN_U32("graphics/items/icon_palettes/mystic_water.gbapal.lz"); +const u16 gItemIconPalette_MysticWater[] = INCBIN_U16("graphics/items/icon_palettes/mystic_water.gbapal"); const u32 gItemIcon_Magnet[] = INCBIN_U32("graphics/items/icons/magnet.4bpp.lz"); -const u32 gItemIconPalette_Magnet[] = INCBIN_U32("graphics/items/icon_palettes/magnet.gbapal.lz"); +const u16 gItemIconPalette_Magnet[] = INCBIN_U16("graphics/items/icon_palettes/magnet.gbapal"); const u32 gItemIcon_MiracleSeed[] = INCBIN_U32("graphics/items/icons/miracle_seed.4bpp.lz"); -const u32 gItemIconPalette_MiracleSeed[] = INCBIN_U32("graphics/items/icon_palettes/miracle_seed.gbapal.lz"); +const u16 gItemIconPalette_MiracleSeed[] = INCBIN_U16("graphics/items/icon_palettes/miracle_seed.gbapal"); const u32 gItemIcon_NeverMeltIce[] = INCBIN_U32("graphics/items/icons/never_melt_ice.4bpp.lz"); -const u32 gItemIconPalette_NeverMeltIce[] = INCBIN_U32("graphics/items/icon_palettes/never_melt_ice.gbapal.lz"); +const u16 gItemIconPalette_NeverMeltIce[] = INCBIN_U16("graphics/items/icon_palettes/never_melt_ice.gbapal"); const u32 gItemIcon_BlackBelt[] = INCBIN_U32("graphics/items/icons/black_belt.4bpp.lz"); -const u32 gItemIconPalette_BlackTypeEnhancingItem[] = INCBIN_U32("graphics/items/icon_palettes/black_type_enhancing_item.gbapal.lz"); +const u16 gItemIconPalette_BlackTypeEnhancingItem[] = INCBIN_U16("graphics/items/icon_palettes/black_type_enhancing_item.gbapal"); const u32 gItemIcon_PoisonBarb[] = INCBIN_U32("graphics/items/icons/poison_barb.4bpp.lz"); -const u32 gItemIconPalette_PoisonBarb[] = INCBIN_U32("graphics/items/icon_palettes/poison_barb.gbapal.lz"); +const u16 gItemIconPalette_PoisonBarb[] = INCBIN_U16("graphics/items/icon_palettes/poison_barb.gbapal"); const u32 gItemIcon_SoftSand[] = INCBIN_U32("graphics/items/icons/soft_sand.4bpp.lz"); -const u32 gItemIconPalette_SoftSand[] = INCBIN_U32("graphics/items/icon_palettes/soft_sand.gbapal.lz"); +const u16 gItemIconPalette_SoftSand[] = INCBIN_U16("graphics/items/icon_palettes/soft_sand.gbapal"); const u32 gItemIcon_SharpBeak[] = INCBIN_U32("graphics/items/icons/sharp_beak.4bpp.lz"); -const u32 gItemIconPalette_SharpBeak[] = INCBIN_U32("graphics/items/icon_palettes/sharp_beak.gbapal.lz"); +const u16 gItemIconPalette_SharpBeak[] = INCBIN_U16("graphics/items/icon_palettes/sharp_beak.gbapal"); const u32 gItemIcon_TwistedSpoon[] = INCBIN_U32("graphics/items/icons/twisted_spoon.4bpp.lz"); -const u32 gItemIconPalette_TwistedSpoon[] = INCBIN_U32("graphics/items/icon_palettes/twisted_spoon.gbapal.lz"); +const u16 gItemIconPalette_TwistedSpoon[] = INCBIN_U16("graphics/items/icon_palettes/twisted_spoon.gbapal"); const u32 gItemIcon_SilverPowder[] = INCBIN_U32("graphics/items/icons/silver_powder.4bpp.lz"); -const u32 gItemIconPalette_SilverPowder[] = INCBIN_U32("graphics/items/icon_palettes/silver_powder.gbapal.lz"); +const u16 gItemIconPalette_SilverPowder[] = INCBIN_U16("graphics/items/icon_palettes/silver_powder.gbapal"); const u32 gItemIcon_HardStone[] = INCBIN_U32("graphics/items/icons/hard_stone.4bpp.lz"); -const u32 gItemIconPalette_HardStone[] = INCBIN_U32("graphics/items/icon_palettes/hard_stone.gbapal.lz"); +const u16 gItemIconPalette_HardStone[] = INCBIN_U16("graphics/items/icon_palettes/hard_stone.gbapal"); const u32 gItemIcon_SpellTag[] = INCBIN_U32("graphics/items/icons/spell_tag.4bpp.lz"); -const u32 gItemIconPalette_SpellTag[] = INCBIN_U32("graphics/items/icon_palettes/spell_tag.gbapal.lz"); +const u16 gItemIconPalette_SpellTag[] = INCBIN_U16("graphics/items/icon_palettes/spell_tag.gbapal"); const u32 gItemIcon_DragonFang[] = INCBIN_U32("graphics/items/icons/dragon_fang.4bpp.lz"); -const u32 gItemIconPalette_DragonFang[] = INCBIN_U32("graphics/items/icon_palettes/dragon_fang.gbapal.lz"); +const u16 gItemIconPalette_DragonFang[] = INCBIN_U16("graphics/items/icon_palettes/dragon_fang.gbapal"); const u32 gItemIcon_BlackGlasses[] = INCBIN_U32("graphics/items/icons/black_glasses.4bpp.lz"); const u32 gItemIcon_MetalCoat[] = INCBIN_U32("graphics/items/icons/metal_coat.4bpp.lz"); -const u32 gItemIconPalette_MetalCoat[] = INCBIN_U32("graphics/items/icon_palettes/metal_coat.gbapal.lz"); +const u16 gItemIconPalette_MetalCoat[] = INCBIN_U16("graphics/items/icon_palettes/metal_coat.gbapal"); // Choice Items const u32 gItemIcon_ChoiceBand[] = INCBIN_U32("graphics/items/icons/choice_band.4bpp.lz"); -const u32 gItemIconPalette_ChoiceBand[] = INCBIN_U32("graphics/items/icon_palettes/choice_band.gbapal.lz"); +const u16 gItemIconPalette_ChoiceBand[] = INCBIN_U16("graphics/items/icon_palettes/choice_band.gbapal"); const u32 gItemIcon_ChoiceSpecs[] = INCBIN_U32("graphics/items/icons/choice_specs.4bpp.lz"); -const u32 gItemIconPalette_ChoiceSpecs[] = INCBIN_U32("graphics/items/icon_palettes/choice_specs.gbapal.lz"); +const u16 gItemIconPalette_ChoiceSpecs[] = INCBIN_U16("graphics/items/icon_palettes/choice_specs.gbapal"); const u32 gItemIcon_ChoiceScarf[] = INCBIN_U32("graphics/items/icons/choice_scarf.4bpp.lz"); -const u32 gItemIconPalette_ChoiceScarf[] = INCBIN_U32("graphics/items/icon_palettes/choice_scarf.gbapal.lz"); +const u16 gItemIconPalette_ChoiceScarf[] = INCBIN_U16("graphics/items/icon_palettes/choice_scarf.gbapal"); // Status Orbs const u32 gItemIcon_FlameOrb[] = INCBIN_U32("graphics/items/icons/flame_orb.4bpp.lz"); -const u32 gItemIconPalette_FlameOrb[] = INCBIN_U32("graphics/items/icon_palettes/flame_orb.gbapal.lz"); +const u16 gItemIconPalette_FlameOrb[] = INCBIN_U16("graphics/items/icon_palettes/flame_orb.gbapal"); const u32 gItemIcon_ToxicOrb[] = INCBIN_U32("graphics/items/icons/toxic_orb.4bpp.lz"); -const u32 gItemIconPalette_ToxicOrb[] = INCBIN_U32("graphics/items/icon_palettes/toxic_orb.gbapal.lz"); +const u16 gItemIconPalette_ToxicOrb[] = INCBIN_U16("graphics/items/icon_palettes/toxic_orb.gbapal"); // Weather Rocks const u32 gItemIcon_DampRock[] = INCBIN_U32("graphics/items/icons/damp_rock.4bpp.lz"); -const u32 gItemIconPalette_DampRock[] = INCBIN_U32("graphics/items/icon_palettes/damp_rock.gbapal.lz"); +const u16 gItemIconPalette_DampRock[] = INCBIN_U16("graphics/items/icon_palettes/damp_rock.gbapal"); const u32 gItemIcon_HeatRock[] = INCBIN_U32("graphics/items/icons/heat_rock.4bpp.lz"); -const u32 gItemIconPalette_HeatRock[] = INCBIN_U32("graphics/items/icon_palettes/heat_rock.gbapal.lz"); +const u16 gItemIconPalette_HeatRock[] = INCBIN_U16("graphics/items/icon_palettes/heat_rock.gbapal"); const u32 gItemIcon_SmoothRock[] = INCBIN_U32("graphics/items/icons/smooth_rock.4bpp.lz"); -const u32 gItemIconPalette_SmoothRock[] = INCBIN_U32("graphics/items/icon_palettes/smooth_rock.gbapal.lz"); +const u16 gItemIconPalette_SmoothRock[] = INCBIN_U16("graphics/items/icon_palettes/smooth_rock.gbapal"); const u32 gItemIcon_IcyRock[] = INCBIN_U32("graphics/items/icons/icy_rock.4bpp.lz"); -const u32 gItemIconPalette_IcyRock[] = INCBIN_U32("graphics/items/icon_palettes/icy_rock.gbapal.lz"); +const u16 gItemIconPalette_IcyRock[] = INCBIN_U16("graphics/items/icon_palettes/icy_rock.gbapal"); // Terrain Seeds const u32 gItemIcon_ElectricSeed[] = INCBIN_U32("graphics/items/icons/electric_seed.4bpp.lz"); -const u32 gItemIconPalette_ElectricSeed[] = INCBIN_U32("graphics/items/icon_palettes/electric_seed.gbapal.lz"); +const u16 gItemIconPalette_ElectricSeed[] = INCBIN_U16("graphics/items/icon_palettes/electric_seed.gbapal"); const u32 gItemIcon_PsychicSeed[] = INCBIN_U32("graphics/items/icons/psychic_seed.4bpp.lz"); -const u32 gItemIconPalette_PsychicSeed[] = INCBIN_U32("graphics/items/icon_palettes/psychic_seed.gbapal.lz"); +const u16 gItemIconPalette_PsychicSeed[] = INCBIN_U16("graphics/items/icon_palettes/psychic_seed.gbapal"); const u32 gItemIcon_MistySeed[] = INCBIN_U32("graphics/items/icons/misty_seed.4bpp.lz"); -const u32 gItemIconPalette_MistySeed[] = INCBIN_U32("graphics/items/icon_palettes/misty_seed.gbapal.lz"); +const u16 gItemIconPalette_MistySeed[] = INCBIN_U16("graphics/items/icon_palettes/misty_seed.gbapal"); const u32 gItemIcon_GrassySeed[] = INCBIN_U32("graphics/items/icons/grassy_seed.4bpp.lz"); -const u32 gItemIconPalette_GrassySeed[] = INCBIN_U32("graphics/items/icon_palettes/grassy_seed.gbapal.lz"); +const u16 gItemIconPalette_GrassySeed[] = INCBIN_U16("graphics/items/icon_palettes/grassy_seed.gbapal"); // Type-activated Stat Modifiers const u32 gItemIcon_AbsorbBulb[] = INCBIN_U32("graphics/items/icons/absorb_bulb.4bpp.lz"); -const u32 gItemIconPalette_AbsorbBulb[] = INCBIN_U32("graphics/items/icon_palettes/absorb_bulb.gbapal.lz"); +const u16 gItemIconPalette_AbsorbBulb[] = INCBIN_U16("graphics/items/icon_palettes/absorb_bulb.gbapal"); const u32 gItemIcon_CellBattery[] = INCBIN_U32("graphics/items/icons/cell_battery.4bpp.lz"); -const u32 gItemIconPalette_CellBattery[] = INCBIN_U32("graphics/items/icon_palettes/cell_battery.gbapal.lz"); +const u16 gItemIconPalette_CellBattery[] = INCBIN_U16("graphics/items/icon_palettes/cell_battery.gbapal"); const u32 gItemIcon_LuminousMoss[] = INCBIN_U32("graphics/items/icons/luminous_moss.4bpp.lz"); -const u32 gItemIconPalette_LuminousMoss[] = INCBIN_U32("graphics/items/icon_palettes/luminous_moss.gbapal.lz"); +const u16 gItemIconPalette_LuminousMoss[] = INCBIN_U16("graphics/items/icon_palettes/luminous_moss.gbapal"); const u32 gItemIcon_Snowball[] = INCBIN_U32("graphics/items/icons/snowball.4bpp.lz"); -const u32 gItemIconPalette_Snowball[] = INCBIN_U32("graphics/items/icon_palettes/snowball.gbapal.lz"); +const u16 gItemIconPalette_Snowball[] = INCBIN_U16("graphics/items/icon_palettes/snowball.gbapal"); // Misc. Held Items const u32 gItemIcon_BrightPowder[] = INCBIN_U32("graphics/items/icons/bright_powder.4bpp.lz"); -const u32 gItemIconPalette_BrightPowder[] = INCBIN_U32("graphics/items/icon_palettes/bright_powder.gbapal.lz"); +const u16 gItemIconPalette_BrightPowder[] = INCBIN_U16("graphics/items/icon_palettes/bright_powder.gbapal"); const u32 gItemIcon_InBattleHerb[] = INCBIN_U32("graphics/items/icons/in_battle_herb.4bpp.lz"); -const u32 gItemIconPalette_WhiteHerb[] = INCBIN_U32("graphics/items/icon_palettes/white_herb.gbapal.lz"); +const u16 gItemIconPalette_WhiteHerb[] = INCBIN_U16("graphics/items/icon_palettes/white_herb.gbapal"); const u32 gItemIcon_ExpShare[] = INCBIN_U32("graphics/items/icons/exp_share.4bpp.lz"); -const u32 gItemIconPalette_ExpShare[] = INCBIN_U32("graphics/items/icon_palettes/exp_share.gbapal.lz"); +const u16 gItemIconPalette_ExpShare[] = INCBIN_U16("graphics/items/icon_palettes/exp_share.gbapal"); const u32 gItemIcon_QuickClaw[] = INCBIN_U32("graphics/items/icons/quick_claw.4bpp.lz"); -const u32 gItemIconPalette_QuickClaw[] = INCBIN_U32("graphics/items/icon_palettes/quick_claw.gbapal.lz"); +const u16 gItemIconPalette_QuickClaw[] = INCBIN_U16("graphics/items/icon_palettes/quick_claw.gbapal"); const u32 gItemIcon_SootheBell[] = INCBIN_U32("graphics/items/icons/soothe_bell.4bpp.lz"); -const u32 gItemIconPalette_SootheBell[] = INCBIN_U32("graphics/items/icon_palettes/soothe_bell.gbapal.lz"); +const u16 gItemIconPalette_SootheBell[] = INCBIN_U16("graphics/items/icon_palettes/soothe_bell.gbapal"); -const u32 gItemIconPalette_MentalHerb[] = INCBIN_U32("graphics/items/icon_palettes/mental_herb.gbapal.lz"); +const u16 gItemIconPalette_MentalHerb[] = INCBIN_U16("graphics/items/icon_palettes/mental_herb.gbapal"); const u32 gItemIcon_KingsRock[] = INCBIN_U32("graphics/items/icons/kings_rock.4bpp.lz"); -const u32 gItemIconPalette_KingsRock[] = INCBIN_U32("graphics/items/icon_palettes/kings_rock.gbapal.lz"); +const u16 gItemIconPalette_KingsRock[] = INCBIN_U16("graphics/items/icon_palettes/kings_rock.gbapal"); const u32 gItemIcon_AmuletCoin[] = INCBIN_U32("graphics/items/icons/amulet_coin.4bpp.lz"); -const u32 gItemIconPalette_AmuletCoin[] = INCBIN_U32("graphics/items/icon_palettes/amulet_coin.gbapal.lz"); +const u16 gItemIconPalette_AmuletCoin[] = INCBIN_U16("graphics/items/icon_palettes/amulet_coin.gbapal"); const u32 gItemIcon_CleanseTag[] = INCBIN_U32("graphics/items/icons/cleanse_tag.4bpp.lz"); -const u32 gItemIconPalette_CleanseTag[] = INCBIN_U32("graphics/items/icon_palettes/cleanse_tag.gbapal.lz"); +const u16 gItemIconPalette_CleanseTag[] = INCBIN_U16("graphics/items/icon_palettes/cleanse_tag.gbapal"); const u32 gItemIcon_SmokeBall[] = INCBIN_U32("graphics/items/icons/smoke_ball.4bpp.lz"); -const u32 gItemIconPalette_SmokeBall[] = INCBIN_U32("graphics/items/icon_palettes/smoke_ball.gbapal.lz"); +const u16 gItemIconPalette_SmokeBall[] = INCBIN_U16("graphics/items/icon_palettes/smoke_ball.gbapal"); const u32 gItemIcon_FocusBand[] = INCBIN_U32("graphics/items/icons/focus_band.4bpp.lz"); -const u32 gItemIconPalette_FocusBand[] = INCBIN_U32("graphics/items/icon_palettes/focus_band.gbapal.lz"); +const u16 gItemIconPalette_FocusBand[] = INCBIN_U16("graphics/items/icon_palettes/focus_band.gbapal"); const u32 gItemIcon_LuckyEgg[] = INCBIN_U32("graphics/items/icons/lucky_egg.4bpp.lz"); -const u32 gItemIconPalette_LuckyEgg[] = INCBIN_U32("graphics/items/icon_palettes/lucky_egg.gbapal.lz"); +const u16 gItemIconPalette_LuckyEgg[] = INCBIN_U16("graphics/items/icon_palettes/lucky_egg.gbapal"); const u32 gItemIcon_ScopeLens[] = INCBIN_U32("graphics/items/icons/scope_lens.4bpp.lz"); -const u32 gItemIconPalette_ScopeLens[] = INCBIN_U32("graphics/items/icon_palettes/scope_lens.gbapal.lz"); +const u16 gItemIconPalette_ScopeLens[] = INCBIN_U16("graphics/items/icon_palettes/scope_lens.gbapal"); const u32 gItemIcon_Leftovers[] = INCBIN_U32("graphics/items/icons/leftovers.4bpp.lz"); -const u32 gItemIconPalette_Leftovers[] = INCBIN_U32("graphics/items/icon_palettes/leftovers.gbapal.lz"); +const u16 gItemIconPalette_Leftovers[] = INCBIN_U16("graphics/items/icon_palettes/leftovers.gbapal"); const u32 gItemIcon_ShellBell[] = INCBIN_U32("graphics/items/icons/shell_bell.4bpp.lz"); const u32 gItemIcon_WideLens[] = INCBIN_U32("graphics/items/icons/wide_lens.4bpp.lz"); -const u32 gItemIconPalette_WideLens[] = INCBIN_U32("graphics/items/icon_palettes/wide_lens.gbapal.lz"); +const u16 gItemIconPalette_WideLens[] = INCBIN_U16("graphics/items/icon_palettes/wide_lens.gbapal"); const u32 gItemIcon_MuscleBand[] = INCBIN_U32("graphics/items/icons/muscle_band.4bpp.lz"); -const u32 gItemIconPalette_MuscleBand[] = INCBIN_U32("graphics/items/icon_palettes/muscle_band.gbapal.lz"); +const u16 gItemIconPalette_MuscleBand[] = INCBIN_U16("graphics/items/icon_palettes/muscle_band.gbapal"); const u32 gItemIcon_WiseGlasses[] = INCBIN_U32("graphics/items/icons/wise_glasses.4bpp.lz"); -const u32 gItemIconPalette_WiseGlasses[] = INCBIN_U32("graphics/items/icon_palettes/wise_glasses.gbapal.lz"); +const u16 gItemIconPalette_WiseGlasses[] = INCBIN_U16("graphics/items/icon_palettes/wise_glasses.gbapal"); const u32 gItemIcon_ExpertBelt[] = INCBIN_U32("graphics/items/icons/expert_belt.4bpp.lz"); -const u32 gItemIconPalette_ExpertBelt[] = INCBIN_U32("graphics/items/icon_palettes/expert_belt.gbapal.lz"); +const u16 gItemIconPalette_ExpertBelt[] = INCBIN_U16("graphics/items/icon_palettes/expert_belt.gbapal"); const u32 gItemIcon_LightClay[] = INCBIN_U32("graphics/items/icons/light_clay.4bpp.lz"); -const u32 gItemIconPalette_LightClay[] = INCBIN_U32("graphics/items/icon_palettes/light_clay.gbapal.lz"); +const u16 gItemIconPalette_LightClay[] = INCBIN_U16("graphics/items/icon_palettes/light_clay.gbapal"); const u32 gItemIcon_LifeOrb[] = INCBIN_U32("graphics/items/icons/life_orb.4bpp.lz"); -const u32 gItemIconPalette_LifeOrb[] = INCBIN_U32("graphics/items/icon_palettes/life_orb.gbapal.lz"); +const u16 gItemIconPalette_LifeOrb[] = INCBIN_U16("graphics/items/icon_palettes/life_orb.gbapal"); const u32 gItemIcon_PowerHerb[] = INCBIN_U32("graphics/items/icons/power_herb.4bpp.lz"); -const u32 gItemIconPalette_PowerHerb[] = INCBIN_U32("graphics/items/icon_palettes/power_herb.gbapal.lz"); +const u16 gItemIconPalette_PowerHerb[] = INCBIN_U16("graphics/items/icon_palettes/power_herb.gbapal"); const u32 gItemIcon_FocusSash[] = INCBIN_U32("graphics/items/icons/focus_sash.4bpp.lz"); -const u32 gItemIconPalette_FocusSash[] = INCBIN_U32("graphics/items/icon_palettes/focus_sash.gbapal.lz"); +const u16 gItemIconPalette_FocusSash[] = INCBIN_U16("graphics/items/icon_palettes/focus_sash.gbapal"); const u32 gItemIcon_ZoomLens[] = INCBIN_U32("graphics/items/icons/zoom_lens.4bpp.lz"); -const u32 gItemIconPalette_ZoomLens[] = INCBIN_U32("graphics/items/icon_palettes/zoom_lens.gbapal.lz"); +const u16 gItemIconPalette_ZoomLens[] = INCBIN_U16("graphics/items/icon_palettes/zoom_lens.gbapal"); const u32 gItemIcon_Metronome[] = INCBIN_U32("graphics/items/icons/metronome.4bpp.lz"); -const u32 gItemIconPalette_Metronome[] = INCBIN_U32("graphics/items/icon_palettes/metronome.gbapal.lz"); +const u16 gItemIconPalette_Metronome[] = INCBIN_U16("graphics/items/icon_palettes/metronome.gbapal"); const u32 gItemIcon_IronBall[] = INCBIN_U32("graphics/items/icons/iron_ball.4bpp.lz"); -const u32 gItemIconPalette_IronBall[] = INCBIN_U32("graphics/items/icon_palettes/iron_ball.gbapal.lz"); +const u16 gItemIconPalette_IronBall[] = INCBIN_U16("graphics/items/icon_palettes/iron_ball.gbapal"); const u32 gItemIcon_LaggingTail[] = INCBIN_U32("graphics/items/icons/lagging_tail.4bpp.lz"); -const u32 gItemIconPalette_LaggingTail[] = INCBIN_U32("graphics/items/icon_palettes/lagging_tail.gbapal.lz"); +const u16 gItemIconPalette_LaggingTail[] = INCBIN_U16("graphics/items/icon_palettes/lagging_tail.gbapal"); const u32 gItemIcon_DestinyKnot[] = INCBIN_U32("graphics/items/icons/destiny_knot.4bpp.lz"); -const u32 gItemIconPalette_DestinyKnot[] = INCBIN_U32("graphics/items/icon_palettes/destiny_knot.gbapal.lz"); +const u16 gItemIconPalette_DestinyKnot[] = INCBIN_U16("graphics/items/icon_palettes/destiny_knot.gbapal"); const u32 gItemIcon_BlackSludge[] = INCBIN_U32("graphics/items/icons/black_sludge.4bpp.lz"); -const u32 gItemIconPalette_BlackSludge[] = INCBIN_U32("graphics/items/icon_palettes/black_sludge.gbapal.lz"); +const u16 gItemIconPalette_BlackSludge[] = INCBIN_U16("graphics/items/icon_palettes/black_sludge.gbapal"); const u32 gItemIcon_GripClaw[] = INCBIN_U32("graphics/items/icons/grip_claw.4bpp.lz"); -const u32 gItemIconPalette_GripClaw[] = INCBIN_U32("graphics/items/icon_palettes/grip_claw.gbapal.lz"); +const u16 gItemIconPalette_GripClaw[] = INCBIN_U16("graphics/items/icon_palettes/grip_claw.gbapal"); const u32 gItemIcon_StickyBarb[] = INCBIN_U32("graphics/items/icons/sticky_barb.4bpp.lz"); -const u32 gItemIconPalette_StickyBarb[] = INCBIN_U32("graphics/items/icon_palettes/sticky_barb.gbapal.lz"); +const u16 gItemIconPalette_StickyBarb[] = INCBIN_U16("graphics/items/icon_palettes/sticky_barb.gbapal"); const u32 gItemIcon_ShedShell[] = INCBIN_U32("graphics/items/icons/shed_shell.4bpp.lz"); -const u32 gItemIconPalette_ShedShell[] = INCBIN_U32("graphics/items/icon_palettes/shed_shell.gbapal.lz"); +const u16 gItemIconPalette_ShedShell[] = INCBIN_U16("graphics/items/icon_palettes/shed_shell.gbapal"); const u32 gItemIcon_BigRoot[] = INCBIN_U32("graphics/items/icons/big_root.4bpp.lz"); -const u32 gItemIconPalette_BigRoot[] = INCBIN_U32("graphics/items/icon_palettes/big_root.gbapal.lz"); +const u16 gItemIconPalette_BigRoot[] = INCBIN_U16("graphics/items/icon_palettes/big_root.gbapal"); const u32 gItemIcon_RazorClaw[] = INCBIN_U32("graphics/items/icons/razor_claw.4bpp.lz"); -const u32 gItemIconPalette_RazorClaw[] = INCBIN_U32("graphics/items/icon_palettes/razor_claw.gbapal.lz"); +const u16 gItemIconPalette_RazorClaw[] = INCBIN_U16("graphics/items/icon_palettes/razor_claw.gbapal"); const u32 gItemIcon_RazorFang[] = INCBIN_U32("graphics/items/icons/razor_fang.4bpp.lz"); -const u32 gItemIconPalette_RazorFang[] = INCBIN_U32("graphics/items/icon_palettes/razor_fang.gbapal.lz"); +const u16 gItemIconPalette_RazorFang[] = INCBIN_U16("graphics/items/icon_palettes/razor_fang.gbapal"); const u32 gItemIcon_Eviolite[] = INCBIN_U32("graphics/items/icons/eviolite.4bpp.lz"); -const u32 gItemIconPalette_Eviolite[] = INCBIN_U32("graphics/items/icon_palettes/eviolite.gbapal.lz"); +const u16 gItemIconPalette_Eviolite[] = INCBIN_U16("graphics/items/icon_palettes/eviolite.gbapal"); const u32 gItemIcon_FloatStone[] = INCBIN_U32("graphics/items/icons/float_stone.4bpp.lz"); -const u32 gItemIconPalette_FloatStone[] = INCBIN_U32("graphics/items/icon_palettes/float_stone.gbapal.lz"); +const u16 gItemIconPalette_FloatStone[] = INCBIN_U16("graphics/items/icon_palettes/float_stone.gbapal"); const u32 gItemIcon_RockyHelmet[] = INCBIN_U32("graphics/items/icons/rocky_helmet.4bpp.lz"); -const u32 gItemIconPalette_RockyHelmet[] = INCBIN_U32("graphics/items/icon_palettes/rocky_helmet.gbapal.lz"); +const u16 gItemIconPalette_RockyHelmet[] = INCBIN_U16("graphics/items/icon_palettes/rocky_helmet.gbapal"); const u32 gItemIcon_AirBalloon[] = INCBIN_U32("graphics/items/icons/air_balloon.4bpp.lz"); -const u32 gItemIconPalette_AirBalloon[] = INCBIN_U32("graphics/items/icon_palettes/air_balloon.gbapal.lz"); +const u16 gItemIconPalette_AirBalloon[] = INCBIN_U16("graphics/items/icon_palettes/air_balloon.gbapal"); const u32 gItemIcon_RedCard[] = INCBIN_U32("graphics/items/icons/red_card.4bpp.lz"); -const u32 gItemIconPalette_RedCard[] = INCBIN_U32("graphics/items/icon_palettes/red_card.gbapal.lz"); +const u16 gItemIconPalette_RedCard[] = INCBIN_U16("graphics/items/icon_palettes/red_card.gbapal"); const u32 gItemIcon_RingTarget[] = INCBIN_U32("graphics/items/icons/ring_target.4bpp.lz"); -const u32 gItemIconPalette_RingTarget[] = INCBIN_U32("graphics/items/icon_palettes/ring_target.gbapal.lz"); +const u16 gItemIconPalette_RingTarget[] = INCBIN_U16("graphics/items/icon_palettes/ring_target.gbapal"); const u32 gItemIcon_BindingBand[] = INCBIN_U32("graphics/items/icons/binding_band.4bpp.lz"); -const u32 gItemIconPalette_BindingBand[] = INCBIN_U32("graphics/items/icon_palettes/binding_band.gbapal.lz"); +const u16 gItemIconPalette_BindingBand[] = INCBIN_U16("graphics/items/icon_palettes/binding_band.gbapal"); const u32 gItemIcon_EjectButton[] = INCBIN_U32("graphics/items/icons/eject_button.4bpp.lz"); -const u32 gItemIconPalette_EjectButton[] = INCBIN_U32("graphics/items/icon_palettes/eject_button.gbapal.lz"); +const u16 gItemIconPalette_EjectButton[] = INCBIN_U16("graphics/items/icon_palettes/eject_button.gbapal"); const u32 gItemIcon_WeaknessPolicy[] = INCBIN_U32("graphics/items/icons/weakness_policy.4bpp.lz"); -const u32 gItemIconPalette_WeaknessPolicy[] = INCBIN_U32("graphics/items/icon_palettes/weakness_policy.gbapal.lz"); +const u16 gItemIconPalette_WeaknessPolicy[] = INCBIN_U16("graphics/items/icon_palettes/weakness_policy.gbapal"); const u32 gItemIcon_AssaultVest[] = INCBIN_U32("graphics/items/icons/assault_vest.4bpp.lz"); -const u32 gItemIconPalette_AssaultVest[] = INCBIN_U32("graphics/items/icon_palettes/assault_vest.gbapal.lz"); +const u16 gItemIconPalette_AssaultVest[] = INCBIN_U16("graphics/items/icon_palettes/assault_vest.gbapal"); const u32 gItemIcon_SafetyGoggles[] = INCBIN_U32("graphics/items/icons/safety_goggles.4bpp.lz"); -const u32 gItemIconPalette_SafetyGoggles[] = INCBIN_U32("graphics/items/icon_palettes/safety_goggles.gbapal.lz"); +const u16 gItemIconPalette_SafetyGoggles[] = INCBIN_U16("graphics/items/icon_palettes/safety_goggles.gbapal"); const u32 gItemIcon_AdrenalineOrb[] = INCBIN_U32("graphics/items/icons/adrenaline_orb.4bpp.lz"); -const u32 gItemIconPalette_AdrenalineOrb[] = INCBIN_U32("graphics/items/icon_palettes/adrenaline_orb.gbapal.lz"); +const u16 gItemIconPalette_AdrenalineOrb[] = INCBIN_U16("graphics/items/icon_palettes/adrenaline_orb.gbapal"); const u32 gItemIcon_TerrainExtender[] = INCBIN_U32("graphics/items/icons/terrain_extender.4bpp.lz"); -const u32 gItemIconPalette_TerrainExtender[] = INCBIN_U32("graphics/items/icon_palettes/terrain_extender.gbapal.lz"); +const u16 gItemIconPalette_TerrainExtender[] = INCBIN_U16("graphics/items/icon_palettes/terrain_extender.gbapal"); const u32 gItemIcon_ProtectivePads[] = INCBIN_U32("graphics/items/icons/protective_pads.4bpp.lz"); -const u32 gItemIconPalette_ProtectivePads[] = INCBIN_U32("graphics/items/icon_palettes/protective_pads.gbapal.lz"); +const u16 gItemIconPalette_ProtectivePads[] = INCBIN_U16("graphics/items/icon_palettes/protective_pads.gbapal"); const u32 gItemIcon_ThroatSpray[] = INCBIN_U32("graphics/items/icons/throat_spray.4bpp.lz"); -const u32 gItemIconPalette_ThroatSpray[] = INCBIN_U32("graphics/items/icon_palettes/throat_spray.gbapal.lz"); +const u16 gItemIconPalette_ThroatSpray[] = INCBIN_U16("graphics/items/icon_palettes/throat_spray.gbapal"); const u32 gItemIcon_EjectPack[] = INCBIN_U32("graphics/items/icons/eject_pack.4bpp.lz"); -const u32 gItemIconPalette_EjectPack[] = INCBIN_U32("graphics/items/icon_palettes/eject_pack.gbapal.lz"); +const u16 gItemIconPalette_EjectPack[] = INCBIN_U16("graphics/items/icon_palettes/eject_pack.gbapal"); const u32 gItemIcon_HeavyDutyBoots[] = INCBIN_U32("graphics/items/icons/heavy_duty_boots.4bpp.lz"); -const u32 gItemIconPalette_HeavyDutyBoots[] = INCBIN_U32("graphics/items/icon_palettes/heavy_duty_boots.gbapal.lz"); +const u16 gItemIconPalette_HeavyDutyBoots[] = INCBIN_U16("graphics/items/icon_palettes/heavy_duty_boots.gbapal"); const u32 gItemIcon_BlunderPolicy[] = INCBIN_U32("graphics/items/icons/blunder_policy.4bpp.lz"); -const u32 gItemIconPalette_BlunderPolicy[] = INCBIN_U32("graphics/items/icon_palettes/blunder_policy.gbapal.lz"); +const u16 gItemIconPalette_BlunderPolicy[] = INCBIN_U16("graphics/items/icon_palettes/blunder_policy.gbapal"); const u32 gItemIcon_RoomService[] = INCBIN_U32("graphics/items/icons/room_service.4bpp.lz"); -const u32 gItemIconPalette_RoomService[] = INCBIN_U32("graphics/items/icon_palettes/room_service.gbapal.lz"); +const u16 gItemIconPalette_RoomService[] = INCBIN_U16("graphics/items/icon_palettes/room_service.gbapal"); const u32 gItemIcon_UtilityUmbrella[] = INCBIN_U32("graphics/items/icons/utility_umbrella.4bpp.lz"); -const u32 gItemIconPalette_UtilityUmbrella[] = INCBIN_U32("graphics/items/icon_palettes/utility_umbrella.gbapal.lz"); +const u16 gItemIconPalette_UtilityUmbrella[] = INCBIN_U16("graphics/items/icon_palettes/utility_umbrella.gbapal"); // Berries const u32 gItemIcon_CheriBerry[] = INCBIN_U32("graphics/items/icons/cheri_berry.4bpp.lz"); -const u32 gItemIconPalette_CheriBerry[] = INCBIN_U32("graphics/items/icon_palettes/cheri_berry.gbapal.lz"); +const u16 gItemIconPalette_CheriBerry[] = INCBIN_U16("graphics/items/icon_palettes/cheri_berry.gbapal"); const u32 gItemIcon_ChestoBerry[] = INCBIN_U32("graphics/items/icons/chesto_berry.4bpp.lz"); -const u32 gItemIconPalette_ChestoBerry[] = INCBIN_U32("graphics/items/icon_palettes/chesto_berry.gbapal.lz"); +const u16 gItemIconPalette_ChestoBerry[] = INCBIN_U16("graphics/items/icon_palettes/chesto_berry.gbapal"); const u32 gItemIcon_PechaBerry[] = INCBIN_U32("graphics/items/icons/pecha_berry.4bpp.lz"); -const u32 gItemIconPalette_PechaBerry[] = INCBIN_U32("graphics/items/icon_palettes/pecha_berry.gbapal.lz"); +const u16 gItemIconPalette_PechaBerry[] = INCBIN_U16("graphics/items/icon_palettes/pecha_berry.gbapal"); const u32 gItemIcon_RawstBerry[] = INCBIN_U32("graphics/items/icons/rawst_berry.4bpp.lz"); -const u32 gItemIconPalette_RawstBerry[] = INCBIN_U32("graphics/items/icon_palettes/rawst_berry.gbapal.lz"); +const u16 gItemIconPalette_RawstBerry[] = INCBIN_U16("graphics/items/icon_palettes/rawst_berry.gbapal"); const u32 gItemIcon_AspearBerry[] = INCBIN_U32("graphics/items/icons/aspear_berry.4bpp.lz"); -const u32 gItemIconPalette_AspearBerry[] = INCBIN_U32("graphics/items/icon_palettes/aspear_berry.gbapal.lz"); +const u16 gItemIconPalette_AspearBerry[] = INCBIN_U16("graphics/items/icon_palettes/aspear_berry.gbapal"); const u32 gItemIcon_LeppaBerry[] = INCBIN_U32("graphics/items/icons/leppa_berry.4bpp.lz"); -const u32 gItemIconPalette_LeppaBerry[] = INCBIN_U32("graphics/items/icon_palettes/leppa_berry.gbapal.lz"); +const u16 gItemIconPalette_LeppaBerry[] = INCBIN_U16("graphics/items/icon_palettes/leppa_berry.gbapal"); const u32 gItemIcon_OranBerry[] = INCBIN_U32("graphics/items/icons/oran_berry.4bpp.lz"); -const u32 gItemIconPalette_OranBerry[] = INCBIN_U32("graphics/items/icon_palettes/oran_berry.gbapal.lz"); +const u16 gItemIconPalette_OranBerry[] = INCBIN_U16("graphics/items/icon_palettes/oran_berry.gbapal"); const u32 gItemIcon_PersimBerry[] = INCBIN_U32("graphics/items/icons/persim_berry.4bpp.lz"); -const u32 gItemIconPalette_PersimBerry[] = INCBIN_U32("graphics/items/icon_palettes/persim_berry.gbapal.lz"); +const u16 gItemIconPalette_PersimBerry[] = INCBIN_U16("graphics/items/icon_palettes/persim_berry.gbapal"); const u32 gItemIcon_LumBerry[] = INCBIN_U32("graphics/items/icons/lum_berry.4bpp.lz"); -const u32 gItemIconPalette_LumBerry[] = INCBIN_U32("graphics/items/icon_palettes/lum_berry.gbapal.lz"); +const u16 gItemIconPalette_LumBerry[] = INCBIN_U16("graphics/items/icon_palettes/lum_berry.gbapal"); const u32 gItemIcon_SitrusBerry[] = INCBIN_U32("graphics/items/icons/sitrus_berry.4bpp.lz"); -const u32 gItemIconPalette_SitrusBerry[] = INCBIN_U32("graphics/items/icon_palettes/sitrus_berry.gbapal.lz"); +const u16 gItemIconPalette_SitrusBerry[] = INCBIN_U16("graphics/items/icon_palettes/sitrus_berry.gbapal"); const u32 gItemIcon_FigyBerry[] = INCBIN_U32("graphics/items/icons/figy_berry.4bpp.lz"); -const u32 gItemIconPalette_FigyBerry[] = INCBIN_U32("graphics/items/icon_palettes/figy_berry.gbapal.lz"); +const u16 gItemIconPalette_FigyBerry[] = INCBIN_U16("graphics/items/icon_palettes/figy_berry.gbapal"); const u32 gItemIcon_WikiBerry[] = INCBIN_U32("graphics/items/icons/wiki_berry.4bpp.lz"); -const u32 gItemIconPalette_WikiBerry[] = INCBIN_U32("graphics/items/icon_palettes/wiki_berry.gbapal.lz"); +const u16 gItemIconPalette_WikiBerry[] = INCBIN_U16("graphics/items/icon_palettes/wiki_berry.gbapal"); const u32 gItemIcon_MagoBerry[] = INCBIN_U32("graphics/items/icons/mago_berry.4bpp.lz"); -const u32 gItemIconPalette_MagoBerry[] = INCBIN_U32("graphics/items/icon_palettes/mago_berry.gbapal.lz"); +const u16 gItemIconPalette_MagoBerry[] = INCBIN_U16("graphics/items/icon_palettes/mago_berry.gbapal"); const u32 gItemIcon_AguavBerry[] = INCBIN_U32("graphics/items/icons/aguav_berry.4bpp.lz"); -const u32 gItemIconPalette_AguavBerry[] = INCBIN_U32("graphics/items/icon_palettes/aguav_berry.gbapal.lz"); +const u16 gItemIconPalette_AguavBerry[] = INCBIN_U16("graphics/items/icon_palettes/aguav_berry.gbapal"); const u32 gItemIcon_IapapaBerry[] = INCBIN_U32("graphics/items/icons/iapapa_berry.4bpp.lz"); -const u32 gItemIconPalette_IapapaBerry[] = INCBIN_U32("graphics/items/icon_palettes/iapapa_berry.gbapal.lz"); +const u16 gItemIconPalette_IapapaBerry[] = INCBIN_U16("graphics/items/icon_palettes/iapapa_berry.gbapal"); const u32 gItemIcon_RazzBerry[] = INCBIN_U32("graphics/items/icons/razz_berry.4bpp.lz"); -const u32 gItemIconPalette_RazzBerry[] = INCBIN_U32("graphics/items/icon_palettes/razz_berry.gbapal.lz"); +const u16 gItemIconPalette_RazzBerry[] = INCBIN_U16("graphics/items/icon_palettes/razz_berry.gbapal"); const u32 gItemIcon_BlukBerry[] = INCBIN_U32("graphics/items/icons/bluk_berry.4bpp.lz"); -const u32 gItemIconPalette_BlukBerry[] = INCBIN_U32("graphics/items/icon_palettes/bluk_berry.gbapal.lz"); +const u16 gItemIconPalette_BlukBerry[] = INCBIN_U16("graphics/items/icon_palettes/bluk_berry.gbapal"); const u32 gItemIcon_NanabBerry[] = INCBIN_U32("graphics/items/icons/nanab_berry.4bpp.lz"); -const u32 gItemIconPalette_NanabBerry[] = INCBIN_U32("graphics/items/icon_palettes/nanab_berry.gbapal.lz"); +const u16 gItemIconPalette_NanabBerry[] = INCBIN_U16("graphics/items/icon_palettes/nanab_berry.gbapal"); const u32 gItemIcon_WepearBerry[] = INCBIN_U32("graphics/items/icons/wepear_berry.4bpp.lz"); -const u32 gItemIconPalette_WepearBerry[] = INCBIN_U32("graphics/items/icon_palettes/wepear_berry.gbapal.lz"); +const u16 gItemIconPalette_WepearBerry[] = INCBIN_U16("graphics/items/icon_palettes/wepear_berry.gbapal"); const u32 gItemIcon_PinapBerry[] = INCBIN_U32("graphics/items/icons/pinap_berry.4bpp.lz"); -const u32 gItemIconPalette_PinapBerry[] = INCBIN_U32("graphics/items/icon_palettes/pinap_berry.gbapal.lz"); +const u16 gItemIconPalette_PinapBerry[] = INCBIN_U16("graphics/items/icon_palettes/pinap_berry.gbapal"); const u32 gItemIcon_PomegBerry[] = INCBIN_U32("graphics/items/icons/pomeg_berry.4bpp.lz"); -const u32 gItemIconPalette_PomegBerry[] = INCBIN_U32("graphics/items/icon_palettes/pomeg_berry.gbapal.lz"); +const u16 gItemIconPalette_PomegBerry[] = INCBIN_U16("graphics/items/icon_palettes/pomeg_berry.gbapal"); const u32 gItemIcon_KelpsyBerry[] = INCBIN_U32("graphics/items/icons/kelpsy_berry.4bpp.lz"); -const u32 gItemIconPalette_KelpsyBerry[] = INCBIN_U32("graphics/items/icon_palettes/kelpsy_berry.gbapal.lz"); +const u16 gItemIconPalette_KelpsyBerry[] = INCBIN_U16("graphics/items/icon_palettes/kelpsy_berry.gbapal"); const u32 gItemIcon_QualotBerry[] = INCBIN_U32("graphics/items/icons/qualot_berry.4bpp.lz"); -const u32 gItemIconPalette_QualotBerry[] = INCBIN_U32("graphics/items/icon_palettes/qualot_berry.gbapal.lz"); +const u16 gItemIconPalette_QualotBerry[] = INCBIN_U16("graphics/items/icon_palettes/qualot_berry.gbapal"); const u32 gItemIcon_HondewBerry[] = INCBIN_U32("graphics/items/icons/hondew_berry.4bpp.lz"); -const u32 gItemIconPalette_HondewBerry[] = INCBIN_U32("graphics/items/icon_palettes/hondew_berry.gbapal.lz"); +const u16 gItemIconPalette_HondewBerry[] = INCBIN_U16("graphics/items/icon_palettes/hondew_berry.gbapal"); const u32 gItemIcon_GrepaBerry[] = INCBIN_U32("graphics/items/icons/grepa_berry.4bpp.lz"); -const u32 gItemIconPalette_GrepaBerry[] = INCBIN_U32("graphics/items/icon_palettes/grepa_berry.gbapal.lz"); +const u16 gItemIconPalette_GrepaBerry[] = INCBIN_U16("graphics/items/icon_palettes/grepa_berry.gbapal"); const u32 gItemIcon_TamatoBerry[] = INCBIN_U32("graphics/items/icons/tamato_berry.4bpp.lz"); -const u32 gItemIconPalette_TamatoBerry[] = INCBIN_U32("graphics/items/icon_palettes/tamato_berry.gbapal.lz"); +const u16 gItemIconPalette_TamatoBerry[] = INCBIN_U16("graphics/items/icon_palettes/tamato_berry.gbapal"); const u32 gItemIcon_CornnBerry[] = INCBIN_U32("graphics/items/icons/cornn_berry.4bpp.lz"); -const u32 gItemIconPalette_CornnBerry[] = INCBIN_U32("graphics/items/icon_palettes/cornn_berry.gbapal.lz"); +const u16 gItemIconPalette_CornnBerry[] = INCBIN_U16("graphics/items/icon_palettes/cornn_berry.gbapal"); const u32 gItemIcon_MagostBerry[] = INCBIN_U32("graphics/items/icons/magost_berry.4bpp.lz"); -const u32 gItemIconPalette_MagostBerry[] = INCBIN_U32("graphics/items/icon_palettes/magost_berry.gbapal.lz"); +const u16 gItemIconPalette_MagostBerry[] = INCBIN_U16("graphics/items/icon_palettes/magost_berry.gbapal"); const u32 gItemIcon_RabutaBerry[] = INCBIN_U32("graphics/items/icons/rabuta_berry.4bpp.lz"); -const u32 gItemIconPalette_RabutaBerry[] = INCBIN_U32("graphics/items/icon_palettes/rabuta_berry.gbapal.lz"); +const u16 gItemIconPalette_RabutaBerry[] = INCBIN_U16("graphics/items/icon_palettes/rabuta_berry.gbapal"); const u32 gItemIcon_NomelBerry[] = INCBIN_U32("graphics/items/icons/nomel_berry.4bpp.lz"); -const u32 gItemIconPalette_NomelBerry[] = INCBIN_U32("graphics/items/icon_palettes/nomel_berry.gbapal.lz"); +const u16 gItemIconPalette_NomelBerry[] = INCBIN_U16("graphics/items/icon_palettes/nomel_berry.gbapal"); const u32 gItemIcon_SpelonBerry[] = INCBIN_U32("graphics/items/icons/spelon_berry.4bpp.lz"); -const u32 gItemIconPalette_SpelonBerry[] = INCBIN_U32("graphics/items/icon_palettes/spelon_berry.gbapal.lz"); +const u16 gItemIconPalette_SpelonBerry[] = INCBIN_U16("graphics/items/icon_palettes/spelon_berry.gbapal"); const u32 gItemIcon_PamtreBerry[] = INCBIN_U32("graphics/items/icons/pamtre_berry.4bpp.lz"); -const u32 gItemIconPalette_PamtreBerry[] = INCBIN_U32("graphics/items/icon_palettes/pamtre_berry.gbapal.lz"); +const u16 gItemIconPalette_PamtreBerry[] = INCBIN_U16("graphics/items/icon_palettes/pamtre_berry.gbapal"); const u32 gItemIcon_WatmelBerry[] = INCBIN_U32("graphics/items/icons/watmel_berry.4bpp.lz"); -const u32 gItemIconPalette_WatmelBerry[] = INCBIN_U32("graphics/items/icon_palettes/watmel_berry.gbapal.lz"); +const u16 gItemIconPalette_WatmelBerry[] = INCBIN_U16("graphics/items/icon_palettes/watmel_berry.gbapal"); const u32 gItemIcon_DurinBerry[] = INCBIN_U32("graphics/items/icons/durin_berry.4bpp.lz"); -const u32 gItemIconPalette_DurinBerry[] = INCBIN_U32("graphics/items/icon_palettes/durin_berry.gbapal.lz"); +const u16 gItemIconPalette_DurinBerry[] = INCBIN_U16("graphics/items/icon_palettes/durin_berry.gbapal"); const u32 gItemIcon_BelueBerry[] = INCBIN_U32("graphics/items/icons/belue_berry.4bpp.lz"); -const u32 gItemIconPalette_BelueBerry[] = INCBIN_U32("graphics/items/icon_palettes/belue_berry.gbapal.lz"); +const u16 gItemIconPalette_BelueBerry[] = INCBIN_U16("graphics/items/icon_palettes/belue_berry.gbapal"); const u32 gItemIcon_ChilanBerry[] = INCBIN_U32("graphics/items/icons/chilan_berry.4bpp.lz"); -const u32 gItemIconPalette_ChilanBerry[] = INCBIN_U32("graphics/items/icon_palettes/chilan_berry.gbapal.lz"); +const u16 gItemIconPalette_ChilanBerry[] = INCBIN_U16("graphics/items/icon_palettes/chilan_berry.gbapal"); const u32 gItemIcon_OccaBerry[] = INCBIN_U32("graphics/items/icons/occa_berry.4bpp.lz"); -const u32 gItemIconPalette_OccaBerry[] = INCBIN_U32("graphics/items/icon_palettes/occa_berry.gbapal.lz"); +const u16 gItemIconPalette_OccaBerry[] = INCBIN_U16("graphics/items/icon_palettes/occa_berry.gbapal"); const u32 gItemIcon_PasshoBerry[] = INCBIN_U32("graphics/items/icons/passho_berry.4bpp.lz"); -const u32 gItemIconPalette_PasshoBerry[] = INCBIN_U32("graphics/items/icon_palettes/passho_berry.gbapal.lz"); +const u16 gItemIconPalette_PasshoBerry[] = INCBIN_U16("graphics/items/icon_palettes/passho_berry.gbapal"); const u32 gItemIcon_WacanBerry[] = INCBIN_U32("graphics/items/icons/wacan_berry.4bpp.lz"); -const u32 gItemIconPalette_WacanBerry[] = INCBIN_U32("graphics/items/icon_palettes/wacan_berry.gbapal.lz"); +const u16 gItemIconPalette_WacanBerry[] = INCBIN_U16("graphics/items/icon_palettes/wacan_berry.gbapal"); const u32 gItemIcon_RindoBerry[] = INCBIN_U32("graphics/items/icons/rindo_berry.4bpp.lz"); -const u32 gItemIconPalette_RindoBerry[] = INCBIN_U32("graphics/items/icon_palettes/rindo_berry.gbapal.lz"); +const u16 gItemIconPalette_RindoBerry[] = INCBIN_U16("graphics/items/icon_palettes/rindo_berry.gbapal"); const u32 gItemIcon_YacheBerry[] = INCBIN_U32("graphics/items/icons/yache_berry.4bpp.lz"); -const u32 gItemIconPalette_YacheBerry[] = INCBIN_U32("graphics/items/icon_palettes/yache_berry.gbapal.lz"); +const u16 gItemIconPalette_YacheBerry[] = INCBIN_U16("graphics/items/icon_palettes/yache_berry.gbapal"); const u32 gItemIcon_ChopleBerry[] = INCBIN_U32("graphics/items/icons/chople_berry.4bpp.lz"); -const u32 gItemIconPalette_ChopleBerry[] = INCBIN_U32("graphics/items/icon_palettes/chople_berry.gbapal.lz"); +const u16 gItemIconPalette_ChopleBerry[] = INCBIN_U16("graphics/items/icon_palettes/chople_berry.gbapal"); const u32 gItemIcon_KebiaBerry[] = INCBIN_U32("graphics/items/icons/kebia_berry.4bpp.lz"); -const u32 gItemIconPalette_KebiaBerry[] = INCBIN_U32("graphics/items/icon_palettes/kebia_berry.gbapal.lz"); +const u16 gItemIconPalette_KebiaBerry[] = INCBIN_U16("graphics/items/icon_palettes/kebia_berry.gbapal"); const u32 gItemIcon_ShucaBerry[] = INCBIN_U32("graphics/items/icons/shuca_berry.4bpp.lz"); -const u32 gItemIconPalette_ShucaBerry[] = INCBIN_U32("graphics/items/icon_palettes/shuca_berry.gbapal.lz"); +const u16 gItemIconPalette_ShucaBerry[] = INCBIN_U16("graphics/items/icon_palettes/shuca_berry.gbapal"); const u32 gItemIcon_CobaBerry[] = INCBIN_U32("graphics/items/icons/coba_berry.4bpp.lz"); -const u32 gItemIconPalette_CobaBerry[] = INCBIN_U32("graphics/items/icon_palettes/coba_berry.gbapal.lz"); +const u16 gItemIconPalette_CobaBerry[] = INCBIN_U16("graphics/items/icon_palettes/coba_berry.gbapal"); const u32 gItemIcon_PayapaBerry[] = INCBIN_U32("graphics/items/icons/payapa_berry.4bpp.lz"); -const u32 gItemIconPalette_PayapaBerry[] = INCBIN_U32("graphics/items/icon_palettes/payapa_berry.gbapal.lz"); +const u16 gItemIconPalette_PayapaBerry[] = INCBIN_U16("graphics/items/icon_palettes/payapa_berry.gbapal"); const u32 gItemIcon_TangaBerry[] = INCBIN_U32("graphics/items/icons/tanga_berry.4bpp.lz"); -const u32 gItemIconPalette_TangaBerry[] = INCBIN_U32("graphics/items/icon_palettes/tanga_berry.gbapal.lz"); +const u16 gItemIconPalette_TangaBerry[] = INCBIN_U16("graphics/items/icon_palettes/tanga_berry.gbapal"); const u32 gItemIcon_ChartiBerry[] = INCBIN_U32("graphics/items/icons/charti_berry.4bpp.lz"); -const u32 gItemIconPalette_ChartiBerry[] = INCBIN_U32("graphics/items/icon_palettes/charti_berry.gbapal.lz"); +const u16 gItemIconPalette_ChartiBerry[] = INCBIN_U16("graphics/items/icon_palettes/charti_berry.gbapal"); const u32 gItemIcon_KasibBerry[] = INCBIN_U32("graphics/items/icons/kasib_berry.4bpp.lz"); -const u32 gItemIconPalette_KasibBerry[] = INCBIN_U32("graphics/items/icon_palettes/kasib_berry.gbapal.lz"); +const u16 gItemIconPalette_KasibBerry[] = INCBIN_U16("graphics/items/icon_palettes/kasib_berry.gbapal"); const u32 gItemIcon_HabanBerry[] = INCBIN_U32("graphics/items/icons/haban_berry.4bpp.lz"); -const u32 gItemIconPalette_HabanBerry[] = INCBIN_U32("graphics/items/icon_palettes/haban_berry.gbapal.lz"); +const u16 gItemIconPalette_HabanBerry[] = INCBIN_U16("graphics/items/icon_palettes/haban_berry.gbapal"); const u32 gItemIcon_ColburBerry[] = INCBIN_U32("graphics/items/icons/colbur_berry.4bpp.lz"); -const u32 gItemIconPalette_ColburBerry[] = INCBIN_U32("graphics/items/icon_palettes/colbur_berry.gbapal.lz"); +const u16 gItemIconPalette_ColburBerry[] = INCBIN_U16("graphics/items/icon_palettes/colbur_berry.gbapal"); const u32 gItemIcon_BabiriBerry[] = INCBIN_U32("graphics/items/icons/babiri_berry.4bpp.lz"); -const u32 gItemIconPalette_BabiriBerry[] = INCBIN_U32("graphics/items/icon_palettes/babiri_berry.gbapal.lz"); +const u16 gItemIconPalette_BabiriBerry[] = INCBIN_U16("graphics/items/icon_palettes/babiri_berry.gbapal"); const u32 gItemIcon_RoseliBerry[] = INCBIN_U32("graphics/items/icons/roseli_berry.4bpp.lz"); -const u32 gItemIconPalette_RoseliBerry[] = INCBIN_U32("graphics/items/icon_palettes/roseli_berry.gbapal.lz"); +const u16 gItemIconPalette_RoseliBerry[] = INCBIN_U16("graphics/items/icon_palettes/roseli_berry.gbapal"); const u32 gItemIcon_LiechiBerry[] = INCBIN_U32("graphics/items/icons/liechi_berry.4bpp.lz"); -const u32 gItemIconPalette_LiechiBerry[] = INCBIN_U32("graphics/items/icon_palettes/liechi_berry.gbapal.lz"); +const u16 gItemIconPalette_LiechiBerry[] = INCBIN_U16("graphics/items/icon_palettes/liechi_berry.gbapal"); const u32 gItemIcon_GanlonBerry[] = INCBIN_U32("graphics/items/icons/ganlon_berry.4bpp.lz"); -const u32 gItemIconPalette_GanlonBerry[] = INCBIN_U32("graphics/items/icon_palettes/ganlon_berry.gbapal.lz"); +const u16 gItemIconPalette_GanlonBerry[] = INCBIN_U16("graphics/items/icon_palettes/ganlon_berry.gbapal"); const u32 gItemIcon_SalacBerry[] = INCBIN_U32("graphics/items/icons/salac_berry.4bpp.lz"); -const u32 gItemIconPalette_SalacBerry[] = INCBIN_U32("graphics/items/icon_palettes/salac_berry.gbapal.lz"); +const u16 gItemIconPalette_SalacBerry[] = INCBIN_U16("graphics/items/icon_palettes/salac_berry.gbapal"); const u32 gItemIcon_PetayaBerry[] = INCBIN_U32("graphics/items/icons/petaya_berry.4bpp.lz"); -const u32 gItemIconPalette_PetayaBerry[] = INCBIN_U32("graphics/items/icon_palettes/petaya_berry.gbapal.lz"); +const u16 gItemIconPalette_PetayaBerry[] = INCBIN_U16("graphics/items/icon_palettes/petaya_berry.gbapal"); const u32 gItemIcon_ApicotBerry[] = INCBIN_U32("graphics/items/icons/apicot_berry.4bpp.lz"); -const u32 gItemIconPalette_ApicotBerry[] = INCBIN_U32("graphics/items/icon_palettes/apicot_berry.gbapal.lz"); +const u16 gItemIconPalette_ApicotBerry[] = INCBIN_U16("graphics/items/icon_palettes/apicot_berry.gbapal"); const u32 gItemIcon_LansatBerry[] = INCBIN_U32("graphics/items/icons/lansat_berry.4bpp.lz"); -const u32 gItemIconPalette_LansatBerry[] = INCBIN_U32("graphics/items/icon_palettes/lansat_berry.gbapal.lz"); +const u16 gItemIconPalette_LansatBerry[] = INCBIN_U16("graphics/items/icon_palettes/lansat_berry.gbapal"); const u32 gItemIcon_StarfBerry[] = INCBIN_U32("graphics/items/icons/starf_berry.4bpp.lz"); -const u32 gItemIconPalette_StarfBerry[] = INCBIN_U32("graphics/items/icon_palettes/starf_berry.gbapal.lz"); +const u16 gItemIconPalette_StarfBerry[] = INCBIN_U16("graphics/items/icon_palettes/starf_berry.gbapal"); const u32 gItemIcon_EnigmaBerry[] = INCBIN_U32("graphics/items/icons/enigma_berry.4bpp.lz"); -const u32 gItemIconPalette_EnigmaBerry[] = INCBIN_U32("graphics/items/icon_palettes/enigma_berry.gbapal.lz"); +const u16 gItemIconPalette_EnigmaBerry[] = INCBIN_U16("graphics/items/icon_palettes/enigma_berry.gbapal"); const u32 gItemIcon_MicleBerry[] = INCBIN_U32("graphics/items/icons/micle_berry.4bpp.lz"); -const u32 gItemIconPalette_MicleBerry[] = INCBIN_U32("graphics/items/icon_palettes/micle_berry.gbapal.lz"); +const u16 gItemIconPalette_MicleBerry[] = INCBIN_U16("graphics/items/icon_palettes/micle_berry.gbapal"); const u32 gItemIcon_CustapBerry[] = INCBIN_U32("graphics/items/icons/custap_berry.4bpp.lz"); -const u32 gItemIconPalette_CustapBerry[] = INCBIN_U32("graphics/items/icon_palettes/custap_berry.gbapal.lz"); +const u16 gItemIconPalette_CustapBerry[] = INCBIN_U16("graphics/items/icon_palettes/custap_berry.gbapal"); const u32 gItemIcon_JabocaBerry[] = INCBIN_U32("graphics/items/icons/jaboca_berry.4bpp.lz"); -const u32 gItemIconPalette_JabocaBerry[] = INCBIN_U32("graphics/items/icon_palettes/jaboca_berry.gbapal.lz"); +const u16 gItemIconPalette_JabocaBerry[] = INCBIN_U16("graphics/items/icon_palettes/jaboca_berry.gbapal"); const u32 gItemIcon_RowapBerry[] = INCBIN_U32("graphics/items/icons/rowap_berry.4bpp.lz"); -const u32 gItemIconPalette_RowapBerry[] = INCBIN_U32("graphics/items/icon_palettes/rowap_berry.gbapal.lz"); +const u16 gItemIconPalette_RowapBerry[] = INCBIN_U16("graphics/items/icon_palettes/rowap_berry.gbapal"); const u32 gItemIcon_KeeBerry[] = INCBIN_U32("graphics/items/icons/kee_berry.4bpp.lz"); -const u32 gItemIconPalette_KeeBerry[] = INCBIN_U32("graphics/items/icon_palettes/kee_berry.gbapal.lz"); +const u16 gItemIconPalette_KeeBerry[] = INCBIN_U16("graphics/items/icon_palettes/kee_berry.gbapal"); const u32 gItemIcon_MarangaBerry[] = INCBIN_U32("graphics/items/icons/maranga_berry.4bpp.lz"); -const u32 gItemIconPalette_MarangaBerry[] = INCBIN_U32("graphics/items/icon_palettes/maranga_berry.gbapal.lz"); +const u16 gItemIconPalette_MarangaBerry[] = INCBIN_U16("graphics/items/icon_palettes/maranga_berry.gbapal"); // TMs/HMs @@ -1711,203 +1711,203 @@ const u32 gItemIcon_TM[] = INCBIN_U32("graphics/items/icons/tm.4bpp.lz"); const u32 gItemIcon_HM[] = INCBIN_U32("graphics/items/icons/hm.4bpp.lz"); -const u32 gItemIconPalette_NormalTMHM[] = INCBIN_U32("graphics/items/icon_palettes/normal_tm_hm.gbapal.lz"); +const u16 gItemIconPalette_NormalTMHM[] = INCBIN_U16("graphics/items/icon_palettes/normal_tm_hm.gbapal"); -const u32 gItemIconPalette_FireTMHM[] = INCBIN_U32("graphics/items/icon_palettes/fire_tm_hm.gbapal.lz"); +const u16 gItemIconPalette_FireTMHM[] = INCBIN_U16("graphics/items/icon_palettes/fire_tm_hm.gbapal"); -const u32 gItemIconPalette_WaterTMHM[] = INCBIN_U32("graphics/items/icon_palettes/water_tm_hm.gbapal.lz"); +const u16 gItemIconPalette_WaterTMHM[] = INCBIN_U16("graphics/items/icon_palettes/water_tm_hm.gbapal"); -const u32 gItemIconPalette_ElectricTMHM[] = INCBIN_U32("graphics/items/icon_palettes/electric_tm_hm.gbapal.lz"); +const u16 gItemIconPalette_ElectricTMHM[] = INCBIN_U16("graphics/items/icon_palettes/electric_tm_hm.gbapal"); -const u32 gItemIconPalette_GrassTMHM[] = INCBIN_U32("graphics/items/icon_palettes/grass_tm_hm.gbapal.lz"); +const u16 gItemIconPalette_GrassTMHM[] = INCBIN_U16("graphics/items/icon_palettes/grass_tm_hm.gbapal"); -const u32 gItemIconPalette_IceTMHM[] = INCBIN_U32("graphics/items/icon_palettes/ice_tm_hm.gbapal.lz"); +const u16 gItemIconPalette_IceTMHM[] = INCBIN_U16("graphics/items/icon_palettes/ice_tm_hm.gbapal"); -const u32 gItemIconPalette_FightingTMHM[] = INCBIN_U32("graphics/items/icon_palettes/fighting_tm_hm.gbapal.lz"); +const u16 gItemIconPalette_FightingTMHM[] = INCBIN_U16("graphics/items/icon_palettes/fighting_tm_hm.gbapal"); -const u32 gItemIconPalette_PoisonTMHM[] = INCBIN_U32("graphics/items/icon_palettes/poison_tm_hm.gbapal.lz"); +const u16 gItemIconPalette_PoisonTMHM[] = INCBIN_U16("graphics/items/icon_palettes/poison_tm_hm.gbapal"); -const u32 gItemIconPalette_GroundTMHM[] = INCBIN_U32("graphics/items/icon_palettes/ground_tm_hm.gbapal.lz"); +const u16 gItemIconPalette_GroundTMHM[] = INCBIN_U16("graphics/items/icon_palettes/ground_tm_hm.gbapal"); -const u32 gItemIconPalette_FlyingTMHM[] = INCBIN_U32("graphics/items/icon_palettes/flying_tm_hm.gbapal.lz"); +const u16 gItemIconPalette_FlyingTMHM[] = INCBIN_U16("graphics/items/icon_palettes/flying_tm_hm.gbapal"); -const u32 gItemIconPalette_PsychicTMHM[] = INCBIN_U32("graphics/items/icon_palettes/psychic_tm_hm.gbapal.lz"); +const u16 gItemIconPalette_PsychicTMHM[] = INCBIN_U16("graphics/items/icon_palettes/psychic_tm_hm.gbapal"); -const u32 gItemIconPalette_BugTMHM[] = INCBIN_U32("graphics/items/icon_palettes/bug_tm_hm.gbapal.lz"); +const u16 gItemIconPalette_BugTMHM[] = INCBIN_U16("graphics/items/icon_palettes/bug_tm_hm.gbapal"); -const u32 gItemIconPalette_RockTMHM[] = INCBIN_U32("graphics/items/icon_palettes/rock_tm_hm.gbapal.lz"); +const u16 gItemIconPalette_RockTMHM[] = INCBIN_U16("graphics/items/icon_palettes/rock_tm_hm.gbapal"); -const u32 gItemIconPalette_GhostTMHM[] = INCBIN_U32("graphics/items/icon_palettes/ghost_tm_hm.gbapal.lz"); +const u16 gItemIconPalette_GhostTMHM[] = INCBIN_U16("graphics/items/icon_palettes/ghost_tm_hm.gbapal"); -const u32 gItemIconPalette_DragonTMHM[] = INCBIN_U32("graphics/items/icon_palettes/dragon_tm_hm.gbapal.lz"); +const u16 gItemIconPalette_DragonTMHM[] = INCBIN_U16("graphics/items/icon_palettes/dragon_tm_hm.gbapal"); -const u32 gItemIconPalette_DarkTMHM[] = INCBIN_U32("graphics/items/icon_palettes/dark_tm_hm.gbapal.lz"); +const u16 gItemIconPalette_DarkTMHM[] = INCBIN_U16("graphics/items/icon_palettes/dark_tm_hm.gbapal"); -const u32 gItemIconPalette_SteelTMHM[] = INCBIN_U32("graphics/items/icon_palettes/steel_tm_hm.gbapal.lz"); +const u16 gItemIconPalette_SteelTMHM[] = INCBIN_U16("graphics/items/icon_palettes/steel_tm_hm.gbapal"); -const u32 gItemIconPalette_FairyTMHM[] = INCBIN_U32("graphics/items/icon_palettes/fairy_tm_hm.gbapal.lz"); +const u16 gItemIconPalette_FairyTMHM[] = INCBIN_U16("graphics/items/icon_palettes/fairy_tm_hm.gbapal"); // Charms const u32 gItemIcon_OvalCharm[] = INCBIN_U32("graphics/items/icons/oval_charm.4bpp.lz"); -const u32 gItemIconPalette_OvalCharm[] = INCBIN_U32("graphics/items/icon_palettes/oval_charm.gbapal.lz"); +const u16 gItemIconPalette_OvalCharm[] = INCBIN_U16("graphics/items/icon_palettes/oval_charm.gbapal"); const u32 gItemIcon_ShinyCharm[] = INCBIN_U32("graphics/items/icons/shiny_charm.4bpp.lz"); -const u32 gItemIconPalette_ShinyCharm[] = INCBIN_U32("graphics/items/icon_palettes/shiny_charm.gbapal.lz"); +const u16 gItemIconPalette_ShinyCharm[] = INCBIN_U16("graphics/items/icon_palettes/shiny_charm.gbapal"); const u32 gItemIcon_CatchingCharm[] = INCBIN_U32("graphics/items/icons/catching_charm.4bpp.lz"); -const u32 gItemIconPalette_CatchingCharm[] = INCBIN_U32("graphics/items/icon_palettes/catching_charm.gbapal.lz"); +const u16 gItemIconPalette_CatchingCharm[] = INCBIN_U16("graphics/items/icon_palettes/catching_charm.gbapal"); const u32 gItemIcon_ExpCharm[] = INCBIN_U32("graphics/items/icons/exp_charm.4bpp.lz"); -const u32 gItemIconPalette_ExpCharm[] = INCBIN_U32("graphics/items/icon_palettes/exp_charm.gbapal.lz"); +const u16 gItemIconPalette_ExpCharm[] = INCBIN_U16("graphics/items/icon_palettes/exp_charm.gbapal"); const u32 gItemIcon_GlimmeringCharm[] = INCBIN_U32("graphics/items/icons/glimmering_charm.4bpp.lz"); -const u32 gItemIconPalette_GlimmeringCharm[] = INCBIN_U32("graphics/items/icon_palettes/glimmering_charm.gbapal.lz"); +const u16 gItemIconPalette_GlimmeringCharm[] = INCBIN_U16("graphics/items/icon_palettes/glimmering_charm.gbapal"); // Form-changing Key Items const u32 gItemIcon_RotomCatalog[] = INCBIN_U32("graphics/items/icons/rotom_catalog.4bpp.lz"); -const u32 gItemIconPalette_RotomCatalog[] = INCBIN_U32("graphics/items/icon_palettes/rotom_catalog.gbapal.lz"); +const u16 gItemIconPalette_RotomCatalog[] = INCBIN_U16("graphics/items/icon_palettes/rotom_catalog.gbapal"); const u32 gItemIcon_Gracidea[] = INCBIN_U32("graphics/items/icons/gracidea.4bpp.lz"); -const u32 gItemIconPalette_Gracidea[] = INCBIN_U32("graphics/items/icon_palettes/gracidea.gbapal.lz"); +const u16 gItemIconPalette_Gracidea[] = INCBIN_U16("graphics/items/icon_palettes/gracidea.gbapal"); const u32 gItemIcon_RevealGlass[] = INCBIN_U32("graphics/items/icons/reveal_glass.4bpp.lz"); -const u32 gItemIconPalette_RevealGlass[] = INCBIN_U32("graphics/items/icon_palettes/reveal_glass.gbapal.lz"); +const u16 gItemIconPalette_RevealGlass[] = INCBIN_U16("graphics/items/icon_palettes/reveal_glass.gbapal"); const u32 gItemIcon_DNASplicers[] = INCBIN_U32("graphics/items/icons/dna_splicers.4bpp.lz"); -const u32 gItemIconPalette_DNASplicers[] = INCBIN_U32("graphics/items/icon_palettes/dna_splicers.gbapal.lz"); +const u16 gItemIconPalette_DNASplicers[] = INCBIN_U16("graphics/items/icon_palettes/dna_splicers.gbapal"); const u32 gItemIcon_ZygardeCube[] = INCBIN_U32("graphics/items/icons/zygarde_cube.4bpp.lz"); -const u32 gItemIconPalette_ZygardeCube[] = INCBIN_U32("graphics/items/icon_palettes/zygarde_cube.gbapal.lz"); +const u16 gItemIconPalette_ZygardeCube[] = INCBIN_U16("graphics/items/icon_palettes/zygarde_cube.gbapal"); const u32 gItemIcon_PrisonBottle[] = INCBIN_U32("graphics/items/icons/prison_bottle.4bpp.lz"); -const u32 gItemIconPalette_PrisonBottle[] = INCBIN_U32("graphics/items/icon_palettes/prison_bottle.gbapal.lz"); +const u16 gItemIconPalette_PrisonBottle[] = INCBIN_U16("graphics/items/icon_palettes/prison_bottle.gbapal"); const u32 gItemIcon_NecrozmaFuser[] = INCBIN_U32("graphics/items/icons/necrozma_fuser.4bpp.lz"); -const u32 gItemIconPalette_NSolarizer[] = INCBIN_U32("graphics/items/icon_palettes/n_solarizer.gbapal.lz"); -const u32 gItemIconPalette_NLunarizer[] = INCBIN_U32("graphics/items/icon_palettes/n_lunarizer.gbapal.lz"); +const u16 gItemIconPalette_NSolarizer[] = INCBIN_U16("graphics/items/icon_palettes/n_solarizer.gbapal"); +const u16 gItemIconPalette_NLunarizer[] = INCBIN_U16("graphics/items/icon_palettes/n_lunarizer.gbapal"); const u32 gItemIcon_ReinsOfUnity[] = INCBIN_U32("graphics/items/icons/reins_of_unity.4bpp.lz"); -const u32 gItemIconPalette_ReinsOfUnity[] = INCBIN_U32("graphics/items/icon_palettes/reins_of_unity.gbapal.lz"); +const u16 gItemIconPalette_ReinsOfUnity[] = INCBIN_U16("graphics/items/icon_palettes/reins_of_unity.gbapal"); // Battle Mechanic Key Items const u32 gItemIcon_MegaRing[] = INCBIN_U32("graphics/items/icons/mega_ring.4bpp.lz"); -const u32 gItemIconPalette_MegaRing[] = INCBIN_U32("graphics/items/icon_palettes/mega_ring.gbapal.lz"); +const u16 gItemIconPalette_MegaRing[] = INCBIN_U16("graphics/items/icon_palettes/mega_ring.gbapal"); const u32 gItemIcon_ZPowerRing[] = INCBIN_U32("graphics/items/icons/z_power_ring.4bpp.lz"); -const u32 gItemIconPalette_ZPowerRing[] = INCBIN_U32("graphics/items/icon_palettes/z_power_ring.gbapal.lz"); +const u16 gItemIconPalette_ZPowerRing[] = INCBIN_U16("graphics/items/icon_palettes/z_power_ring.gbapal"); const u32 gItemIcon_ZRing[] = INCBIN_U32("graphics/items/icons/z_ring.4bpp.lz"); // Remove -const u32 gItemIconPalette_ZRing[] = INCBIN_U32("graphics/items/icon_palettes/z_ring.gbapal.lz"); // Remove +const u16 gItemIconPalette_ZRing[] = INCBIN_U16("graphics/items/icon_palettes/z_ring.gbapal"); // Remove const u32 gItemIcon_DynamaxBand[] = INCBIN_U32("graphics/items/icons/dynamax_band.4bpp.lz"); -const u32 gItemIconPalette_DynamaxBand[] = INCBIN_U32("graphics/items/icon_palettes/dynamax_band.gbapal.lz"); +const u16 gItemIconPalette_DynamaxBand[] = INCBIN_U16("graphics/items/icon_palettes/dynamax_band.gbapal"); // Misc. Key Items const u32 gItemIcon_Bicycle[] = INCBIN_U32("graphics/items/icons/bicycle.4bpp.lz"); -const u32 gItemIconPalette_Bicycle[] = INCBIN_U32("graphics/items/icon_palettes/bicycle.gbapal.lz"); +const u16 gItemIconPalette_Bicycle[] = INCBIN_U16("graphics/items/icon_palettes/bicycle.gbapal"); const u32 gItemIcon_MachBike[] = INCBIN_U32("graphics/items/icons/mach_bike.4bpp.lz"); -const u32 gItemIconPalette_MachBike[] = INCBIN_U32("graphics/items/icon_palettes/mach_bike.gbapal.lz"); +const u16 gItemIconPalette_MachBike[] = INCBIN_U16("graphics/items/icon_palettes/mach_bike.gbapal"); const u32 gItemIcon_AcroBike[] = INCBIN_U32("graphics/items/icons/acro_bike.4bpp.lz"); -const u32 gItemIconPalette_AcroBike[] = INCBIN_U32("graphics/items/icon_palettes/acro_bike.gbapal.lz"); +const u16 gItemIconPalette_AcroBike[] = INCBIN_U16("graphics/items/icon_palettes/acro_bike.gbapal"); const u32 gItemIcon_OldRod[] = INCBIN_U32("graphics/items/icons/old_rod.4bpp.lz"); -const u32 gItemIconPalette_OldRod[] = INCBIN_U32("graphics/items/icon_palettes/old_rod.gbapal.lz"); +const u16 gItemIconPalette_OldRod[] = INCBIN_U16("graphics/items/icon_palettes/old_rod.gbapal"); const u32 gItemIcon_GoodRod[] = INCBIN_U32("graphics/items/icons/good_rod.4bpp.lz"); -const u32 gItemIconPalette_GoodRod[] = INCBIN_U32("graphics/items/icon_palettes/good_rod.gbapal.lz"); +const u16 gItemIconPalette_GoodRod[] = INCBIN_U16("graphics/items/icon_palettes/good_rod.gbapal"); const u32 gItemIcon_SuperRod[] = INCBIN_U32("graphics/items/icons/super_rod.4bpp.lz"); -const u32 gItemIconPalette_SuperRod[] = INCBIN_U32("graphics/items/icon_palettes/super_rod.gbapal.lz"); +const u16 gItemIconPalette_SuperRod[] = INCBIN_U16("graphics/items/icon_palettes/super_rod.gbapal"); const u32 gItemIcon_DowsingMachine[] = INCBIN_U32("graphics/items/icons/dowsing_machine.4bpp.lz"); -const u32 gItemIconPalette_DowsingMachine[] = INCBIN_U32("graphics/items/icon_palettes/dowsing_machine.gbapal.lz"); +const u16 gItemIconPalette_DowsingMachine[] = INCBIN_U16("graphics/items/icon_palettes/dowsing_machine.gbapal"); const u32 gItemIcon_TownMap[] = INCBIN_U32("graphics/items/icons/town_map.4bpp.lz"); -const u32 gItemIconPalette_TownMap[] = INCBIN_U32("graphics/items/icon_palettes/town_map.gbapal.lz"); +const u16 gItemIconPalette_TownMap[] = INCBIN_U16("graphics/items/icon_palettes/town_map.gbapal"); const u32 gItemIcon_VsSeeker[] = INCBIN_U32("graphics/items/icons/vs_seeker.4bpp.lz"); -const u32 gItemIconPalette_VsSeeker[] = INCBIN_U32("graphics/items/icon_palettes/vs_seeker.gbapal.lz"); +const u16 gItemIconPalette_VsSeeker[] = INCBIN_U16("graphics/items/icon_palettes/vs_seeker.gbapal"); const u32 gItemIcon_TMCase[] = INCBIN_U32("graphics/items/icons/tm_case.4bpp.lz"); -const u32 gItemIconPalette_TMCase[] = INCBIN_U32("graphics/items/icon_palettes/tm_case.gbapal.lz"); +const u16 gItemIconPalette_TMCase[] = INCBIN_U16("graphics/items/icon_palettes/tm_case.gbapal"); const u32 gItemIcon_BerryPouch[] = INCBIN_U32("graphics/items/icons/berry_pouch.4bpp.lz"); -const u32 gItemIconPalette_BerryPouch[] = INCBIN_U32("graphics/items/icon_palettes/berry_pouch.gbapal.lz"); +const u16 gItemIconPalette_BerryPouch[] = INCBIN_U16("graphics/items/icon_palettes/berry_pouch.gbapal"); const u32 gItemIcon_PokemonBoxLink[] = INCBIN_U32("graphics/items/icons/pokemon_box_link.4bpp.lz"); -const u32 gItemIconPalette_PokemonBoxLink[] = INCBIN_U32("graphics/items/icon_palettes/pokemon_box_link.gbapal.lz"); +const u16 gItemIconPalette_PokemonBoxLink[] = INCBIN_U16("graphics/items/icon_palettes/pokemon_box_link.gbapal"); const u32 gItemIcon_CoinCase[] = INCBIN_U32("graphics/items/icons/coin_case.4bpp.lz"); -const u32 gItemIconPalette_CoinCase[] = INCBIN_U32("graphics/items/icon_palettes/coin_case.gbapal.lz"); +const u16 gItemIconPalette_CoinCase[] = INCBIN_U16("graphics/items/icon_palettes/coin_case.gbapal"); const u32 gItemIcon_PowderJar[] = INCBIN_U32("graphics/items/icons/powder_jar.4bpp.lz"); -const u32 gItemIconPalette_PowderJar[] = INCBIN_U32("graphics/items/icon_palettes/powder_jar.gbapal.lz"); +const u16 gItemIconPalette_PowderJar[] = INCBIN_U16("graphics/items/icon_palettes/powder_jar.gbapal"); const u32 gItemIcon_WailmerPail[] = INCBIN_U32("graphics/items/icons/wailmer_pail.4bpp.lz"); -const u32 gItemIconPalette_WailmerPail[] = INCBIN_U32("graphics/items/icon_palettes/wailmer_pail.gbapal.lz"); +const u16 gItemIconPalette_WailmerPail[] = INCBIN_U16("graphics/items/icon_palettes/wailmer_pail.gbapal"); const u32 gItemIcon_PokeRadar[] = INCBIN_U32("graphics/items/icons/poke_radar.4bpp.lz"); -const u32 gItemIconPalette_PokeRadar[] = INCBIN_U32("graphics/items/icon_palettes/poke_radar.gbapal.lz"); +const u16 gItemIconPalette_PokeRadar[] = INCBIN_U16("graphics/items/icon_palettes/poke_radar.gbapal"); const u32 gItemIcon_PokeblockCase[] = INCBIN_U32("graphics/items/icons/pokeblock_case.4bpp.lz"); -const u32 gItemIconPalette_PokeblockCase[] = INCBIN_U32("graphics/items/icon_palettes/pokeblock_case.gbapal.lz"); +const u16 gItemIconPalette_PokeblockCase[] = INCBIN_U16("graphics/items/icon_palettes/pokeblock_case.gbapal"); const u32 gItemIcon_SootSack[] = INCBIN_U32("graphics/items/icons/soot_sack.4bpp.lz"); -const u32 gItemIconPalette_SootSack[] = INCBIN_U32("graphics/items/icon_palettes/soot_sack.gbapal.lz"); +const u16 gItemIconPalette_SootSack[] = INCBIN_U16("graphics/items/icon_palettes/soot_sack.gbapal"); const u32 gItemIcon_PokeFlute[] = INCBIN_U32("graphics/items/icons/poke_flute.4bpp.lz"); -const u32 gItemIconPalette_PokeFlute[] = INCBIN_U32("graphics/items/icon_palettes/poke_flute.gbapal.lz"); +const u16 gItemIconPalette_PokeFlute[] = INCBIN_U16("graphics/items/icon_palettes/poke_flute.gbapal"); const u32 gItemIcon_FameChecker[] = INCBIN_U32("graphics/items/icons/fame_checker.4bpp.lz"); -const u32 gItemIconPalette_FameChecker[] = INCBIN_U32("graphics/items/icon_palettes/fame_checker.gbapal.lz"); +const u16 gItemIconPalette_FameChecker[] = INCBIN_U16("graphics/items/icon_palettes/fame_checker.gbapal"); const u32 gItemIcon_TeachyTV[] = INCBIN_U32("graphics/items/icons/teachy_tv.4bpp.lz"); -const u32 gItemIconPalette_TeachyTV[] = INCBIN_U32("graphics/items/icon_palettes/teachy_tv.gbapal.lz"); +const u16 gItemIconPalette_TeachyTV[] = INCBIN_U16("graphics/items/icon_palettes/teachy_tv.gbapal"); // Story Key Items const u32 gItemIcon_SSTicket[] = INCBIN_U32("graphics/items/icons/ss_ticket.4bpp.lz"); -const u32 gItemIconPalette_SSTicket[] = INCBIN_U32("graphics/items/icon_palettes/ss_ticket.gbapal.lz"); +const u16 gItemIconPalette_SSTicket[] = INCBIN_U16("graphics/items/icon_palettes/ss_ticket.gbapal"); const u32 gItemIcon_EonTicket[] = INCBIN_U32("graphics/items/icons/eon_ticket.4bpp.lz"); -const u32 gItemIconPalette_EonTicket[] = INCBIN_U32("graphics/items/icon_palettes/eon_ticket.gbapal.lz"); +const u16 gItemIconPalette_EonTicket[] = INCBIN_U16("graphics/items/icon_palettes/eon_ticket.gbapal"); const u32 gItemIcon_MysticTicket[] = INCBIN_U32("graphics/items/icons/mystic_ticket.4bpp.lz"); -const u32 gItemIconPalette_MysticTicket[] = INCBIN_U32("graphics/items/icon_palettes/mystic_ticket.gbapal.lz"); +const u16 gItemIconPalette_MysticTicket[] = INCBIN_U16("graphics/items/icon_palettes/mystic_ticket.gbapal"); const u32 gItemIcon_AuroraTicket[] = INCBIN_U32("graphics/items/icons/aurora_ticket.4bpp.lz"); -const u32 gItemIconPalette_AuroraTicket[] = INCBIN_U32("graphics/items/icon_palettes/aurora_ticket.gbapal.lz"); +const u16 gItemIconPalette_AuroraTicket[] = INCBIN_U16("graphics/items/icon_palettes/aurora_ticket.gbapal"); const u32 gItemIcon_OldSeaMap[] = INCBIN_U32("graphics/items/icons/old_sea_map.4bpp.lz"); -const u32 gItemIconPalette_OldSeaMap[] = INCBIN_U32("graphics/items/icon_palettes/old_sea_map.gbapal.lz"); +const u16 gItemIconPalette_OldSeaMap[] = INCBIN_U16("graphics/items/icon_palettes/old_sea_map.gbapal"); const u32 gItemIcon_Letter[] = INCBIN_U32("graphics/items/icons/letter.4bpp.lz"); const u32 gItemIcon_DevonParts[] = INCBIN_U32("graphics/items/icons/devon_parts.4bpp.lz"); -const u32 gItemIconPalette_DevonParts[] = INCBIN_U32("graphics/items/icon_palettes/devon_parts.gbapal.lz"); +const u16 gItemIconPalette_DevonParts[] = INCBIN_U16("graphics/items/icon_palettes/devon_parts.gbapal"); const u32 gItemIcon_GoGoggles[] = INCBIN_U32("graphics/items/icons/go_goggles.4bpp.lz"); -const u32 gItemIconPalette_GoGoggles[] = INCBIN_U32("graphics/items/icon_palettes/go_goggles.gbapal.lz"); +const u16 gItemIconPalette_GoGoggles[] = INCBIN_U16("graphics/items/icon_palettes/go_goggles.gbapal"); const u32 gItemIcon_DevonScope[] = INCBIN_U32("graphics/items/icons/devon_scope.4bpp.lz"); -const u32 gItemIconPalette_DevonScope[] = INCBIN_U32("graphics/items/icon_palettes/devon_scope.gbapal.lz"); +const u16 gItemIconPalette_DevonScope[] = INCBIN_U16("graphics/items/icon_palettes/devon_scope.gbapal"); const u32 gItemIcon_BasementKey[] = INCBIN_U32("graphics/items/icons/basement_key.4bpp.lz"); -const u32 gItemIconPalette_OldKey[] = INCBIN_U32("graphics/items/icon_palettes/old_key.gbapal.lz"); +const u16 gItemIconPalette_OldKey[] = INCBIN_U16("graphics/items/icon_palettes/old_key.gbapal"); const u32 gItemIcon_Scanner[] = INCBIN_U32("graphics/items/icons/scanner.4bpp.lz"); -const u32 gItemIconPalette_Scanner[] = INCBIN_U32("graphics/items/icon_palettes/scanner.gbapal.lz"); +const u16 gItemIconPalette_Scanner[] = INCBIN_U16("graphics/items/icon_palettes/scanner.gbapal"); const u32 gItemIcon_StorageKey[] = INCBIN_U32("graphics/items/icons/storage_key.4bpp.lz"); const u32 gItemIcon_KeyToRoom1[] = INCBIN_U32("graphics/items/icons/key_to_room_1.4bpp.lz"); -const u32 gItemIconPalette_Key[] = INCBIN_U32("graphics/items/icon_palettes/key.gbapal.lz"); +const u16 gItemIconPalette_Key[] = INCBIN_U16("graphics/items/icon_palettes/key.gbapal"); const u32 gItemIcon_KeyToRoom2[] = INCBIN_U32("graphics/items/icons/key_to_room_2.4bpp.lz"); @@ -1916,186 +1916,186 @@ const u32 gItemIcon_KeyToRoom4[] = INCBIN_U32("graphics/items/icons/key_to_room_ const u32 gItemIcon_KeyToRoom6[] = INCBIN_U32("graphics/items/icons/key_to_room_6.4bpp.lz"); const u32 gItemIcon_Meteorite[] = INCBIN_U32("graphics/items/icons/meteorite.4bpp.lz"); -const u32 gItemIconPalette_Meteorite[] = INCBIN_U32("graphics/items/icon_palettes/meteorite.gbapal.lz"); +const u16 gItemIconPalette_Meteorite[] = INCBIN_U16("graphics/items/icon_palettes/meteorite.gbapal"); const u32 gItemIcon_MagmaEmblem[] = INCBIN_U32("graphics/items/icons/magma_emblem.4bpp.lz"); -const u32 gItemIconPalette_MagmaEmblem[] = INCBIN_U32("graphics/items/icon_palettes/magma_emblem.gbapal.lz"); +const u16 gItemIconPalette_MagmaEmblem[] = INCBIN_U16("graphics/items/icon_palettes/magma_emblem.gbapal"); const u32 gItemIcon_ContestPass[] = INCBIN_U32("graphics/items/icons/contest_pass.4bpp.lz"); -const u32 gItemIconPalette_ContestPass[] = INCBIN_U32("graphics/items/icon_palettes/contest_pass.gbapal.lz"); +const u16 gItemIconPalette_ContestPass[] = INCBIN_U16("graphics/items/icon_palettes/contest_pass.gbapal"); const u32 gItemIcon_Parcel[] = INCBIN_U32("graphics/items/icons/parcel.4bpp.lz"); -const u32 gItemIconPalette_Parcel[] = INCBIN_U32("graphics/items/icon_palettes/parcel.gbapal.lz"); +const u16 gItemIconPalette_Parcel[] = INCBIN_U16("graphics/items/icon_palettes/parcel.gbapal"); const u32 gItemIcon_SecretKey[] = INCBIN_U32("graphics/items/icons/secret_key.4bpp.lz"); -const u32 gItemIconPalette_SecretKey[] = INCBIN_U32("graphics/items/icon_palettes/secret_key.gbapal.lz"); +const u16 gItemIconPalette_SecretKey[] = INCBIN_U16("graphics/items/icon_palettes/secret_key.gbapal"); const u32 gItemIcon_BikeVoucher[] = INCBIN_U32("graphics/items/icons/bike_voucher.4bpp.lz"); -const u32 gItemIconPalette_BikeVoucher[] = INCBIN_U32("graphics/items/icon_palettes/bike_voucher.gbapal.lz"); +const u16 gItemIconPalette_BikeVoucher[] = INCBIN_U16("graphics/items/icon_palettes/bike_voucher.gbapal"); const u32 gItemIcon_GoldTeeth[] = INCBIN_U32("graphics/items/icons/gold_teeth.4bpp.lz"); -const u32 gItemIconPalette_GoldTeeth[] = INCBIN_U32("graphics/items/icon_palettes/gold_teeth.gbapal.lz"); +const u16 gItemIconPalette_GoldTeeth[] = INCBIN_U16("graphics/items/icon_palettes/gold_teeth.gbapal"); const u32 gItemIcon_CardKey[] = INCBIN_U32("graphics/items/icons/card_key.4bpp.lz"); -const u32 gItemIconPalette_CardKey[] = INCBIN_U32("graphics/items/icon_palettes/card_key.gbapal.lz"); +const u16 gItemIconPalette_CardKey[] = INCBIN_U16("graphics/items/icon_palettes/card_key.gbapal"); const u32 gItemIcon_LiftKey[] = INCBIN_U32("graphics/items/icons/lift_key.4bpp.lz"); const u32 gItemIcon_SilphScope[] = INCBIN_U32("graphics/items/icons/silph_scope.4bpp.lz"); -const u32 gItemIconPalette_SilphScope[] = INCBIN_U32("graphics/items/icon_palettes/silph_scope.gbapal.lz"); +const u16 gItemIconPalette_SilphScope[] = INCBIN_U16("graphics/items/icon_palettes/silph_scope.gbapal"); const u32 gItemIcon_TriPass[] = INCBIN_U32("graphics/items/icons/tri_pass.4bpp.lz"); -const u32 gItemIconPalette_TriPass[] = INCBIN_U32("graphics/items/icon_palettes/tri_pass.gbapal.lz"); +const u16 gItemIconPalette_TriPass[] = INCBIN_U16("graphics/items/icon_palettes/tri_pass.gbapal"); const u32 gItemIcon_RainbowPass[] = INCBIN_U32("graphics/items/icons/rainbow_pass.4bpp.lz"); -const u32 gItemIconPalette_RainbowPass[] = INCBIN_U32("graphics/items/icon_palettes/rainbow_pass.gbapal.lz"); +const u16 gItemIconPalette_RainbowPass[] = INCBIN_U16("graphics/items/icon_palettes/rainbow_pass.gbapal"); const u32 gItemIcon_Tea[] = INCBIN_U32("graphics/items/icons/tea.4bpp.lz"); -const u32 gItemIconPalette_Tea[] = INCBIN_U32("graphics/items/icon_palettes/tea.gbapal.lz"); +const u16 gItemIconPalette_Tea[] = INCBIN_U16("graphics/items/icon_palettes/tea.gbapal"); const u32 gItemIcon_Gem[] = INCBIN_U32("graphics/items/icons/gem.4bpp.lz"); -const u32 gItemIconPalette_Ruby[] = INCBIN_U32("graphics/items/icon_palettes/ruby.gbapal.lz"); +const u16 gItemIconPalette_Ruby[] = INCBIN_U16("graphics/items/icon_palettes/ruby.gbapal"); -const u32 gItemIconPalette_Sapphire[] = INCBIN_U32("graphics/items/icon_palettes/sapphire.gbapal.lz"); +const u16 gItemIconPalette_Sapphire[] = INCBIN_U16("graphics/items/icon_palettes/sapphire.gbapal"); const u32 gItemIcon_AbilityShield[] = INCBIN_U32("graphics/items/icons/ability_shield.4bpp.lz"); -const u32 gItemIconPalette_AbilityShield[] = INCBIN_U32("graphics/items/icon_palettes/ability_shield.gbapal.lz"); +const u16 gItemIconPalette_AbilityShield[] = INCBIN_U16("graphics/items/icon_palettes/ability_shield.gbapal"); const u32 gItemIcon_ClearAmulet[] = INCBIN_U32("graphics/items/icons/clear_amulet.4bpp.lz"); -const u32 gItemIconPalette_ClearAmulet[] = INCBIN_U32("graphics/items/icon_palettes/clear_amulet.gbapal.lz"); +const u16 gItemIconPalette_ClearAmulet[] = INCBIN_U16("graphics/items/icon_palettes/clear_amulet.gbapal"); const u32 gItemIcon_PunchingGlove[] = INCBIN_U32("graphics/items/icons/punching_glove.4bpp.lz"); -const u32 gItemIconPalette_PunchingGlove[] = INCBIN_U32("graphics/items/icon_palettes/punching_glove.gbapal.lz"); +const u16 gItemIconPalette_PunchingGlove[] = INCBIN_U16("graphics/items/icon_palettes/punching_glove.gbapal"); const u32 gItemIcon_CovertCloak[] = INCBIN_U32("graphics/items/icons/covert_cloak.4bpp.lz"); -const u32 gItemIconPalette_CovertCloak[] = INCBIN_U32("graphics/items/icon_palettes/covert_cloak.gbapal.lz"); +const u16 gItemIconPalette_CovertCloak[] = INCBIN_U16("graphics/items/icon_palettes/covert_cloak.gbapal"); const u32 gItemIcon_LoadedDice[] = INCBIN_U32("graphics/items/icons/loaded_dice.4bpp.lz"); -const u32 gItemIconPalette_LoadedDice[] = INCBIN_U32("graphics/items/icon_palettes/loaded_dice.gbapal.lz"); +const u16 gItemIconPalette_LoadedDice[] = INCBIN_U16("graphics/items/icon_palettes/loaded_dice.gbapal"); const u32 gItemIcon_AuspiciousArmor[] = INCBIN_U32("graphics/items/icons/auspicious_armor.4bpp.lz"); -const u32 gItemIconPalette_AuspiciousArmor[] = INCBIN_U32("graphics/items/icon_palettes/auspicious_armor.gbapal.lz"); +const u16 gItemIconPalette_AuspiciousArmor[] = INCBIN_U16("graphics/items/icon_palettes/auspicious_armor.gbapal"); const u32 gItemIcon_BigBambooShoot[] = INCBIN_U32("graphics/items/icons/big_bamboo_shoot.4bpp.lz"); -const u32 gItemIconPalette_BigBambooShoot[] = INCBIN_U32("graphics/items/icon_palettes/big_bamboo_shoot.gbapal.lz"); +const u16 gItemIconPalette_BigBambooShoot[] = INCBIN_U16("graphics/items/icon_palettes/big_bamboo_shoot.gbapal"); const u32 gItemIcon_BoosterEnergy[] = INCBIN_U32("graphics/items/icons/booster_energy.4bpp.lz"); -const u32 gItemIconPalette_BoosterEnergy[] = INCBIN_U32("graphics/items/icon_palettes/booster_energy.gbapal.lz"); +const u16 gItemIconPalette_BoosterEnergy[] = INCBIN_U16("graphics/items/icon_palettes/booster_energy.gbapal"); const u32 gItemIcon_GimmighoulCoin[] = INCBIN_U32("graphics/items/icons/gimmighoul_coin.4bpp.lz"); -const u32 gItemIconPalette_GimmighoulCoin[] = INCBIN_U32("graphics/items/icon_palettes/gimmighoul_coin.gbapal.lz"); +const u16 gItemIconPalette_GimmighoulCoin[] = INCBIN_U16("graphics/items/icon_palettes/gimmighoul_coin.gbapal"); const u32 gItemIcon_LeadersCrest[] = INCBIN_U32("graphics/items/icons/leaders_crest.4bpp.lz"); -const u32 gItemIconPalette_LeadersCrest[] = INCBIN_U32("graphics/items/icon_palettes/leaders_crest.gbapal.lz"); +const u16 gItemIconPalette_LeadersCrest[] = INCBIN_U16("graphics/items/icon_palettes/leaders_crest.gbapal"); const u32 gItemIcon_MaliciousArmor[] = INCBIN_U32("graphics/items/icons/malicious_armor.4bpp.lz"); -const u32 gItemIconPalette_MaliciousArmor[] = INCBIN_U32("graphics/items/icon_palettes/malicious_armor.gbapal.lz"); +const u16 gItemIconPalette_MaliciousArmor[] = INCBIN_U16("graphics/items/icon_palettes/malicious_armor.gbapal"); const u32 gItemIcon_MirrorHerb[] = INCBIN_U32("graphics/items/icons/mirror_herb.4bpp.lz"); -const u32 gItemIconPalette_MirrorHerb[] = INCBIN_U32("graphics/items/icon_palettes/mirror_herb.gbapal.lz"); +const u16 gItemIconPalette_MirrorHerb[] = INCBIN_U16("graphics/items/icon_palettes/mirror_herb.gbapal"); const u32 gItemIcon_ScrollOfDarkness[] = INCBIN_U32("graphics/items/icons/scroll_of_darkness.4bpp.lz"); -const u32 gItemIconPalette_ScrollOfDarkness[] = INCBIN_U32("graphics/items/icon_palettes/scroll_of_darkness.gbapal.lz"); +const u16 gItemIconPalette_ScrollOfDarkness[] = INCBIN_U16("graphics/items/icon_palettes/scroll_of_darkness.gbapal"); const u32 gItemIcon_ScrollOfWaters[] = INCBIN_U32("graphics/items/icons/scroll_of_waters.4bpp.lz"); -const u32 gItemIconPalette_ScrollOfWaters[] = INCBIN_U32("graphics/items/icon_palettes/scroll_of_waters.gbapal.lz"); +const u16 gItemIconPalette_ScrollOfWaters[] = INCBIN_U16("graphics/items/icon_palettes/scroll_of_waters.gbapal"); const u32 gItemIcon_TeraOrb[] = INCBIN_U32("graphics/items/icons/tera_orb.4bpp.lz"); -const u32 gItemIconPalette_TeraOrb[] = INCBIN_U32("graphics/items/icon_palettes/tera_orb.gbapal.lz"); +const u16 gItemIconPalette_TeraOrb[] = INCBIN_U16("graphics/items/icon_palettes/tera_orb.gbapal"); const u32 gItemIcon_TinyBambooShoot[] = INCBIN_U32("graphics/items/icons/tiny_bamboo_shoot.4bpp.lz"); -const u32 gItemIconPalette_TinyBambooShoot[] = INCBIN_U32("graphics/items/icon_palettes/tiny_bamboo_shoot.gbapal.lz"); +const u16 gItemIconPalette_TinyBambooShoot[] = INCBIN_U16("graphics/items/icon_palettes/tiny_bamboo_shoot.gbapal"); // Tera Shards const u32 gItemIcon_TeraShard[] = INCBIN_U32("graphics/items/icons/tera_shard.4bpp.lz"); -const u32 gItemIconPalette_NormalTeraShard[] = INCBIN_U32("graphics/items/icon_palettes/normal_tera_shard.gbapal.lz"); -const u32 gItemIconPalette_FireTeraShard[] = INCBIN_U32("graphics/items/icon_palettes/fire_tera_shard.gbapal.lz"); -const u32 gItemIconPalette_WaterTeraShard[] = INCBIN_U32("graphics/items/icon_palettes/water_tera_shard.gbapal.lz"); -const u32 gItemIconPalette_GrassTeraShard[] = INCBIN_U32("graphics/items/icon_palettes/grass_tera_shard.gbapal.lz"); -const u32 gItemIconPalette_ElectricTeraShard[] = INCBIN_U32("graphics/items/icon_palettes/electric_tera_shard.gbapal.lz"); -const u32 gItemIconPalette_IceTeraShard[] = INCBIN_U32("graphics/items/icon_palettes/ice_tera_shard.gbapal.lz"); -const u32 gItemIconPalette_FightingTeraShard[] = INCBIN_U32("graphics/items/icon_palettes/fighting_tera_shard.gbapal.lz"); -const u32 gItemIconPalette_PoisonTeraShard[] = INCBIN_U32("graphics/items/icon_palettes/poison_tera_shard.gbapal.lz"); -const u32 gItemIconPalette_GroundTeraShard[] = INCBIN_U32("graphics/items/icon_palettes/ground_tera_shard.gbapal.lz"); -const u32 gItemIconPalette_FlyingTeraShard[] = INCBIN_U32("graphics/items/icon_palettes/flying_tera_shard.gbapal.lz"); -const u32 gItemIconPalette_PsychicTeraShard[] = INCBIN_U32("graphics/items/icon_palettes/psychic_tera_shard.gbapal.lz"); -const u32 gItemIconPalette_BugTeraShard[] = INCBIN_U32("graphics/items/icon_palettes/bug_tera_shard.gbapal.lz"); -const u32 gItemIconPalette_RockTeraShard[] = INCBIN_U32("graphics/items/icon_palettes/rock_tera_shard.gbapal.lz"); -const u32 gItemIconPalette_GhostTeraShard[] = INCBIN_U32("graphics/items/icon_palettes/ghost_tera_shard.gbapal.lz"); -const u32 gItemIconPalette_DarkTeraShard[] = INCBIN_U32("graphics/items/icon_palettes/dark_tera_shard.gbapal.lz"); -const u32 gItemIconPalette_DragonTeraShard[] = INCBIN_U32("graphics/items/icon_palettes/dragon_tera_shard.gbapal.lz"); -const u32 gItemIconPalette_SteelTeraShard[] = INCBIN_U32("graphics/items/icon_palettes/steel_tera_shard.gbapal.lz"); -const u32 gItemIconPalette_FairyTeraShard[] = INCBIN_U32("graphics/items/icon_palettes/fairy_tera_shard.gbapal.lz"); +const u16 gItemIconPalette_NormalTeraShard[] = INCBIN_U16("graphics/items/icon_palettes/normal_tera_shard.gbapal"); +const u16 gItemIconPalette_FireTeraShard[] = INCBIN_U16("graphics/items/icon_palettes/fire_tera_shard.gbapal"); +const u16 gItemIconPalette_WaterTeraShard[] = INCBIN_U16("graphics/items/icon_palettes/water_tera_shard.gbapal"); +const u16 gItemIconPalette_GrassTeraShard[] = INCBIN_U16("graphics/items/icon_palettes/grass_tera_shard.gbapal"); +const u16 gItemIconPalette_ElectricTeraShard[] = INCBIN_U16("graphics/items/icon_palettes/electric_tera_shard.gbapal"); +const u16 gItemIconPalette_IceTeraShard[] = INCBIN_U16("graphics/items/icon_palettes/ice_tera_shard.gbapal"); +const u16 gItemIconPalette_FightingTeraShard[] = INCBIN_U16("graphics/items/icon_palettes/fighting_tera_shard.gbapal"); +const u16 gItemIconPalette_PoisonTeraShard[] = INCBIN_U16("graphics/items/icon_palettes/poison_tera_shard.gbapal"); +const u16 gItemIconPalette_GroundTeraShard[] = INCBIN_U16("graphics/items/icon_palettes/ground_tera_shard.gbapal"); +const u16 gItemIconPalette_FlyingTeraShard[] = INCBIN_U16("graphics/items/icon_palettes/flying_tera_shard.gbapal"); +const u16 gItemIconPalette_PsychicTeraShard[] = INCBIN_U16("graphics/items/icon_palettes/psychic_tera_shard.gbapal"); +const u16 gItemIconPalette_BugTeraShard[] = INCBIN_U16("graphics/items/icon_palettes/bug_tera_shard.gbapal"); +const u16 gItemIconPalette_RockTeraShard[] = INCBIN_U16("graphics/items/icon_palettes/rock_tera_shard.gbapal"); +const u16 gItemIconPalette_GhostTeraShard[] = INCBIN_U16("graphics/items/icon_palettes/ghost_tera_shard.gbapal"); +const u16 gItemIconPalette_DarkTeraShard[] = INCBIN_U16("graphics/items/icon_palettes/dark_tera_shard.gbapal"); +const u16 gItemIconPalette_DragonTeraShard[] = INCBIN_U16("graphics/items/icon_palettes/dragon_tera_shard.gbapal"); +const u16 gItemIconPalette_SteelTeraShard[] = INCBIN_U16("graphics/items/icon_palettes/steel_tera_shard.gbapal"); +const u16 gItemIconPalette_FairyTeraShard[] = INCBIN_U16("graphics/items/icon_palettes/fairy_tera_shard.gbapal"); const u32 gItemIcon_StellarTeraShard[] = INCBIN_U32("graphics/items/icons/stellar_tera_shard.4bpp.lz"); -const u32 gItemIconPalette_StellarTeraShard[] = INCBIN_U32("graphics/items/icon_palettes/stellar_tera_shard.gbapal.lz"); +const u16 gItemIconPalette_StellarTeraShard[] = INCBIN_U16("graphics/items/icon_palettes/stellar_tera_shard.gbapal"); // Mochi const u32 gItemIcon_Mochi[] = INCBIN_U32("graphics/items/icons/mochi.4bpp.lz"); -const u32 gItemIconPalette_HealthMochi[] = INCBIN_U32("graphics/items/icon_palettes/health_mochi.gbapal.lz"); -const u32 gItemIconPalette_MuscleMochi[] = INCBIN_U32("graphics/items/icon_palettes/muscle_mochi.gbapal.lz"); -const u32 gItemIconPalette_ResistMochi[] = INCBIN_U32("graphics/items/icon_palettes/resist_mochi.gbapal.lz"); -const u32 gItemIconPalette_GeniusMochi[] = INCBIN_U32("graphics/items/icon_palettes/genius_mochi.gbapal.lz"); -const u32 gItemIconPalette_CleverMochi[] = INCBIN_U32("graphics/items/icon_palettes/clever_mochi.gbapal.lz"); -const u32 gItemIconPalette_SwiftMochi[] = INCBIN_U32("graphics/items/icon_palettes/swift_mochi.gbapal.lz"); -const u32 gItemIconPalette_FreshStartMochi[] = INCBIN_U32("graphics/items/icon_palettes/fresh_start_mochi.gbapal.lz"); +const u16 gItemIconPalette_HealthMochi[] = INCBIN_U16("graphics/items/icon_palettes/health_mochi.gbapal"); +const u16 gItemIconPalette_MuscleMochi[] = INCBIN_U16("graphics/items/icon_palettes/muscle_mochi.gbapal"); +const u16 gItemIconPalette_ResistMochi[] = INCBIN_U16("graphics/items/icon_palettes/resist_mochi.gbapal"); +const u16 gItemIconPalette_GeniusMochi[] = INCBIN_U16("graphics/items/icon_palettes/genius_mochi.gbapal"); +const u16 gItemIconPalette_CleverMochi[] = INCBIN_U16("graphics/items/icon_palettes/clever_mochi.gbapal"); +const u16 gItemIconPalette_SwiftMochi[] = INCBIN_U16("graphics/items/icon_palettes/swift_mochi.gbapal"); +const u16 gItemIconPalette_FreshStartMochi[] = INCBIN_U16("graphics/items/icon_palettes/fresh_start_mochi.gbapal"); // Ogerpon masks const u32 gItemIcon_WellspringMask[] = INCBIN_U32("graphics/items/icons/wellspring_mask.4bpp.lz"); -const u32 gItemIconPalette_WellspringMask[] = INCBIN_U32("graphics/items/icon_palettes/wellspring_mask.gbapal.lz"); +const u16 gItemIconPalette_WellspringMask[] = INCBIN_U16("graphics/items/icon_palettes/wellspring_mask.gbapal"); const u32 gItemIcon_HearthflameMask[] = INCBIN_U32("graphics/items/icons/hearthflame_mask.4bpp.lz"); -const u32 gItemIconPalette_HearthflameMask[] = INCBIN_U32("graphics/items/icon_palettes/hearthflame_mask.gbapal.lz"); +const u16 gItemIconPalette_HearthflameMask[] = INCBIN_U16("graphics/items/icon_palettes/hearthflame_mask.gbapal"); const u32 gItemIcon_CornerstoneMask[] = INCBIN_U32("graphics/items/icons/cornerstone_mask.4bpp.lz"); -const u32 gItemIconPalette_CornerstoneMask[] = INCBIN_U32("graphics/items/icon_palettes/cornerstone_mask.gbapal.lz"); +const u16 gItemIconPalette_CornerstoneMask[] = INCBIN_U16("graphics/items/icon_palettes/cornerstone_mask.gbapal"); // Misc. Items const u32 gItemIcon_AdamantCrystal[] = INCBIN_U32("graphics/items/icons/adamant_crystal.4bpp.lz"); -const u32 gItemIconPalette_AdamantCrystal[] = INCBIN_U32("graphics/items/icon_palettes/adamant_crystal.gbapal.lz"); +const u16 gItemIconPalette_AdamantCrystal[] = INCBIN_U16("graphics/items/icon_palettes/adamant_crystal.gbapal"); const u32 gItemIcon_GriseousCore[] = INCBIN_U32("graphics/items/icons/griseous_core.4bpp.lz"); -const u32 gItemIconPalette_GriseousCore[] = INCBIN_U32("graphics/items/icon_palettes/griseous_core.gbapal.lz"); +const u16 gItemIconPalette_GriseousCore[] = INCBIN_U16("graphics/items/icon_palettes/griseous_core.gbapal"); const u32 gItemIcon_LustrousGlobe[] = INCBIN_U32("graphics/items/icons/lustrous_globe.4bpp.lz"); -const u32 gItemIconPalette_LustrousGlobe[] = INCBIN_U32("graphics/items/icon_palettes/lustrous_globe.gbapal.lz"); +const u16 gItemIconPalette_LustrousGlobe[] = INCBIN_U16("graphics/items/icon_palettes/lustrous_globe.gbapal"); const u32 gItemIcon_BerserkGene[] = INCBIN_U32("graphics/items/icons/berserk_gene.4bpp.lz"); -const u32 gItemIconPalette_BerserkGene[] = INCBIN_U32("graphics/items/icon_palettes/berserk_gene.gbapal.lz"); +const u16 gItemIconPalette_BerserkGene[] = INCBIN_U16("graphics/items/icon_palettes/berserk_gene.gbapal"); const u32 gItemIcon_FairyFeather[] = INCBIN_U32("graphics/items/icons/fairy_feather.4bpp.lz"); -const u32 gItemIconPalette_FairyFeather[] = INCBIN_U32("graphics/items/icon_palettes/fairy_feather.gbapal.lz"); +const u16 gItemIconPalette_FairyFeather[] = INCBIN_U16("graphics/items/icon_palettes/fairy_feather.gbapal"); const u32 gItemIcon_Remedy[] = INCBIN_U32("graphics/items/icons/remedy.4bpp.lz"); -const u32 gItemIconPalette_Remedy[] = INCBIN_U32("graphics/items/icon_palettes/remedy.gbapal.lz"); +const u16 gItemIconPalette_Remedy[] = INCBIN_U16("graphics/items/icon_palettes/remedy.gbapal"); const u32 gItemIcon_FineRemedy[] = INCBIN_U32("graphics/items/icons/fine_remedy.4bpp.lz"); -const u32 gItemIconPalette_FineRemedy[] = INCBIN_U32("graphics/items/icon_palettes/fine_remedy.gbapal.lz"); +const u16 gItemIconPalette_FineRemedy[] = INCBIN_U16("graphics/items/icon_palettes/fine_remedy.gbapal"); const u32 gItemIcon_SuperbRemedy[] = INCBIN_U32("graphics/items/icons/superb_remedy.4bpp.lz"); -const u32 gItemIconPalette_SuperbRemedy[] = INCBIN_U32("graphics/items/icon_palettes/superb_remedy.gbapal.lz"); +const u16 gItemIconPalette_SuperbRemedy[] = INCBIN_U16("graphics/items/icon_palettes/superb_remedy.gbapal"); const u32 gItemIcon_AuxBottle[] = INCBIN_U32("graphics/items/icons/aux_bottle.4bpp.lz"); -const u32 gItemIconPalette_AuxEvasion[] = INCBIN_U32("graphics/items/icon_palettes/aux_evasion.gbapal.lz"); -const u32 gItemIconPalette_AuxGuard[] = INCBIN_U32("graphics/items/icon_palettes/aux_guard.gbapal.lz"); -const u32 gItemIconPalette_AuxPower[] = INCBIN_U32("graphics/items/icon_palettes/aux_power.gbapal.lz"); +const u16 gItemIconPalette_AuxEvasion[] = INCBIN_U16("graphics/items/icon_palettes/aux_evasion.gbapal"); +const u16 gItemIconPalette_AuxGuard[] = INCBIN_U16("graphics/items/icon_palettes/aux_guard.gbapal"); +const u16 gItemIconPalette_AuxPower[] = INCBIN_U16("graphics/items/icon_palettes/aux_power.gbapal"); const u32 gItemIcon_AuxPowerguard[] = INCBIN_U32("graphics/items/icons/aux_powerguard.4bpp.lz"); -const u32 gItemIconPalette_AuxPowerguard[] = INCBIN_U32("graphics/items/icon_palettes/aux_powerguard.gbapal.lz"); +const u16 gItemIconPalette_AuxPowerguard[] = INCBIN_U16("graphics/items/icon_palettes/aux_powerguard.gbapal"); const u32 gItemIcon_ChoiceDumpling[] = INCBIN_U32("graphics/items/icons/choice_dumpling.4bpp.lz"); -const u32 gItemIconPalette_ChoiceDumpling[] = INCBIN_U32("graphics/items/icon_palettes/choice_dumpling.gbapal.lz"); +const u16 gItemIconPalette_ChoiceDumpling[] = INCBIN_U16("graphics/items/icon_palettes/choice_dumpling.gbapal"); const u32 gItemIcon_JubilifeMuffin[] = INCBIN_U32("graphics/items/icons/jubilife_muffin.4bpp.lz"); -const u32 gItemIconPalette_JubilifeMuffin[] = INCBIN_U32("graphics/items/icon_palettes/jubilife_muffin.gbapal.lz"); +const u16 gItemIconPalette_JubilifeMuffin[] = INCBIN_U16("graphics/items/icon_palettes/jubilife_muffin.gbapal"); const u32 gItemIcon_PokeshiDoll[] = INCBIN_U32("graphics/items/icons/pokeshi_doll.4bpp.lz"); -const u32 gItemIconPalette_PokeshiDoll[] = INCBIN_U32("graphics/items/icon_palettes/pokeshi_doll.gbapal.lz"); +const u16 gItemIconPalette_PokeshiDoll[] = INCBIN_U16("graphics/items/icon_palettes/pokeshi_doll.gbapal"); const u32 gItemIcon_SwapSnack[] = INCBIN_U32("graphics/items/icons/swap_snack.4bpp.lz"); -const u32 gItemIconPalette_SwapSnack[] = INCBIN_U32("graphics/items/icon_palettes/swap_snack.gbapal.lz"); +const u16 gItemIconPalette_SwapSnack[] = INCBIN_U16("graphics/items/icon_palettes/swap_snack.gbapal"); const u32 gItemIcon_TwiceSpicedRadish[] = INCBIN_U32("graphics/items/icons/twice_spiced_radish.4bpp.lz"); -const u32 gItemIconPalette_TwiceSpicedRadish[] = INCBIN_U32("graphics/items/icon_palettes/twice_spiced_radish.gbapal.lz"); +const u16 gItemIconPalette_TwiceSpicedRadish[] = INCBIN_U16("graphics/items/icon_palettes/twice_spiced_radish.gbapal"); diff --git a/src/data/graphics/pokeballs.h b/src/data/graphics/pokeballs.h index f09d635d21..8ea57defe5 100644 --- a/src/data/graphics/pokeballs.h +++ b/src/data/graphics/pokeballs.h @@ -1,85 +1,85 @@ const u32 gBallGfx_Strange[] = INCBIN_U32("graphics/balls/strange.4bpp.lz"); -const u32 gBallPal_Strange[] = INCBIN_U32("graphics/balls/strange.gbapal.lz"); +const u16 gBallPal_Strange[] = INCBIN_U16("graphics/balls/strange.gbapal"); const u32 gBallGfx_Poke[] = INCBIN_U32("graphics/balls/poke.4bpp.lz"); -const u32 gBallPal_Poke[] = INCBIN_U32("graphics/balls/poke.gbapal.lz"); +const u16 gBallPal_Poke[] = INCBIN_U16("graphics/balls/poke.gbapal"); const u32 gBallGfx_Great[] = INCBIN_U32("graphics/balls/great.4bpp.lz"); -const u32 gBallPal_Great[] = INCBIN_U32("graphics/balls/great.gbapal.lz"); +const u16 gBallPal_Great[] = INCBIN_U16("graphics/balls/great.gbapal"); const u32 gBallGfx_Ultra[] = INCBIN_U32("graphics/balls/ultra.4bpp.lz"); -const u32 gBallPal_Ultra[] = INCBIN_U32("graphics/balls/ultra.gbapal.lz"); +const u16 gBallPal_Ultra[] = INCBIN_U16("graphics/balls/ultra.gbapal"); const u32 gBallGfx_Master[] = INCBIN_U32("graphics/balls/master.4bpp.lz"); -const u32 gBallPal_Master[] = INCBIN_U32("graphics/balls/master.gbapal.lz"); +const u16 gBallPal_Master[] = INCBIN_U16("graphics/balls/master.gbapal"); const u32 gBallGfx_Premier[] = INCBIN_U32("graphics/balls/premier.4bpp.lz"); -const u32 gBallPal_Premier[] = INCBIN_U32("graphics/balls/premier.gbapal.lz"); +const u16 gBallPal_Premier[] = INCBIN_U16("graphics/balls/premier.gbapal"); const u32 gBallGfx_Heal[] = INCBIN_U32("graphics/balls/heal.4bpp.lz"); -const u32 gBallPal_Heal[] = INCBIN_U32("graphics/balls/heal.gbapal.lz"); +const u16 gBallPal_Heal[] = INCBIN_U16("graphics/balls/heal.gbapal"); const u32 gBallGfx_Net[] = INCBIN_U32("graphics/balls/net.4bpp.lz"); -const u32 gBallPal_Net[] = INCBIN_U32("graphics/balls/net.gbapal.lz"); +const u16 gBallPal_Net[] = INCBIN_U16("graphics/balls/net.gbapal"); const u32 gBallGfx_Nest[] = INCBIN_U32("graphics/balls/nest.4bpp.lz"); -const u32 gBallPal_Nest[] = INCBIN_U32("graphics/balls/nest.gbapal.lz"); +const u16 gBallPal_Nest[] = INCBIN_U16("graphics/balls/nest.gbapal"); const u32 gBallGfx_Dive[] = INCBIN_U32("graphics/balls/dive.4bpp.lz"); -const u32 gBallPal_Dive[] = INCBIN_U32("graphics/balls/dive.gbapal.lz"); +const u16 gBallPal_Dive[] = INCBIN_U16("graphics/balls/dive.gbapal"); const u32 gBallGfx_Dusk[] = INCBIN_U32("graphics/balls/dusk.4bpp.lz"); -const u32 gBallPal_Dusk[] = INCBIN_U32("graphics/balls/dusk.gbapal.lz"); +const u16 gBallPal_Dusk[] = INCBIN_U16("graphics/balls/dusk.gbapal"); const u32 gBallGfx_Timer[] = INCBIN_U32("graphics/balls/timer.4bpp.lz"); -const u32 gBallPal_Timer[] = INCBIN_U32("graphics/balls/timer.gbapal.lz"); +const u16 gBallPal_Timer[] = INCBIN_U16("graphics/balls/timer.gbapal"); const u32 gBallGfx_Quick[] = INCBIN_U32("graphics/balls/quick.4bpp.lz"); -const u32 gBallPal_Quick[] = INCBIN_U32("graphics/balls/quick.gbapal.lz"); +const u16 gBallPal_Quick[] = INCBIN_U16("graphics/balls/quick.gbapal"); const u32 gBallGfx_Repeat[] = INCBIN_U32("graphics/balls/repeat.4bpp.lz"); -const u32 gBallPal_Repeat[] = INCBIN_U32("graphics/balls/repeat.gbapal.lz"); +const u16 gBallPal_Repeat[] = INCBIN_U16("graphics/balls/repeat.gbapal"); const u32 gBallGfx_Luxury[] = INCBIN_U32("graphics/balls/luxury.4bpp.lz"); -const u32 gBallPal_Luxury[] = INCBIN_U32("graphics/balls/luxury.gbapal.lz"); +const u16 gBallPal_Luxury[] = INCBIN_U16("graphics/balls/luxury.gbapal"); const u32 gBallGfx_Level[] = INCBIN_U32("graphics/balls/level.4bpp.lz"); -const u32 gBallPal_Level[] = INCBIN_U32("graphics/balls/level.gbapal.lz"); +const u16 gBallPal_Level[] = INCBIN_U16("graphics/balls/level.gbapal"); const u32 gBallGfx_Lure[] = INCBIN_U32("graphics/balls/lure.4bpp.lz"); -const u32 gBallPal_Lure[] = INCBIN_U32("graphics/balls/lure.gbapal.lz"); +const u16 gBallPal_Lure[] = INCBIN_U16("graphics/balls/lure.gbapal"); const u32 gBallGfx_Moon[] = INCBIN_U32("graphics/balls/moon.4bpp.lz"); -const u32 gBallPal_Moon[] = INCBIN_U32("graphics/balls/moon.gbapal.lz"); +const u16 gBallPal_Moon[] = INCBIN_U16("graphics/balls/moon.gbapal"); const u32 gBallGfx_Friend[] = INCBIN_U32("graphics/balls/friend.4bpp.lz"); -const u32 gBallPal_Friend[] = INCBIN_U32("graphics/balls/friend.gbapal.lz"); +const u16 gBallPal_Friend[] = INCBIN_U16("graphics/balls/friend.gbapal"); const u32 gBallGfx_Love[] = INCBIN_U32("graphics/balls/love.4bpp.lz"); -const u32 gBallPal_Love[] = INCBIN_U32("graphics/balls/love.gbapal.lz"); +const u16 gBallPal_Love[] = INCBIN_U16("graphics/balls/love.gbapal"); const u32 gBallGfx_Fast[] = INCBIN_U32("graphics/balls/fast.4bpp.lz"); -const u32 gBallPal_Fast[] = INCBIN_U32("graphics/balls/fast.gbapal.lz"); +const u16 gBallPal_Fast[] = INCBIN_U16("graphics/balls/fast.gbapal"); const u32 gBallGfx_Heavy[] = INCBIN_U32("graphics/balls/heavy.4bpp.lz"); -const u32 gBallPal_Heavy[] = INCBIN_U32("graphics/balls/heavy.gbapal.lz"); +const u16 gBallPal_Heavy[] = INCBIN_U16("graphics/balls/heavy.gbapal"); const u32 gBallGfx_Dream[] = INCBIN_U32("graphics/balls/dream.4bpp.lz"); -const u32 gBallPal_Dream[] = INCBIN_U32("graphics/balls/dream.gbapal.lz"); +const u16 gBallPal_Dream[] = INCBIN_U16("graphics/balls/dream.gbapal"); const u32 gBallGfx_Safari[] = INCBIN_U32("graphics/balls/safari.4bpp.lz"); -const u32 gBallPal_Safari[] = INCBIN_U32("graphics/balls/safari.gbapal.lz"); +const u16 gBallPal_Safari[] = INCBIN_U16("graphics/balls/safari.gbapal"); const u32 gBallGfx_Sport[] = INCBIN_U32("graphics/balls/sport.4bpp.lz"); -const u32 gBallPal_Sport[] = INCBIN_U32("graphics/balls/sport.gbapal.lz"); +const u16 gBallPal_Sport[] = INCBIN_U16("graphics/balls/sport.gbapal"); const u32 gBallGfx_Park[] = INCBIN_U32("graphics/balls/park.4bpp.lz"); -const u32 gBallPal_Park[] = INCBIN_U32("graphics/balls/park.gbapal.lz"); +const u16 gBallPal_Park[] = INCBIN_U16("graphics/balls/park.gbapal"); const u32 gBallGfx_Beast[] = INCBIN_U32("graphics/balls/beast.4bpp.lz"); -const u32 gBallPal_Beast[] = INCBIN_U32("graphics/balls/beast.gbapal.lz"); +const u16 gBallPal_Beast[] = INCBIN_U16("graphics/balls/beast.gbapal"); const u32 gBallGfx_Cherish[] = INCBIN_U32("graphics/balls/cherish.4bpp.lz"); -const u32 gBallPal_Cherish[] = INCBIN_U32("graphics/balls/cherish.gbapal.lz"); +const u16 gBallPal_Cherish[] = INCBIN_U16("graphics/balls/cherish.gbapal"); const u32 gOpenPokeballGfx[] = INCBIN_U32("graphics/balls/open.4bpp.lz"); diff --git a/src/data/graphics/pokemon.h b/src/data/graphics/pokemon.h index ea1e49cda7..c04b914736 100644 --- a/src/data/graphics/pokemon.h +++ b/src/data/graphics/pokemon.h @@ -6,8 +6,8 @@ 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"); -const u32 gMonShinyPalette_CircledQuestionMark[] = INCBIN_U32("graphics/pokemon/question_mark/circled/shiny.gbapal.lz"); +const u16 gMonPalette_CircledQuestionMark[] = INCBIN_U16("graphics/pokemon/question_mark/circled/normal.gbapal"); +const u16 gMonShinyPalette_CircledQuestionMark[] = INCBIN_U16("graphics/pokemon/question_mark/circled/shiny.gbapal"); const u8 gMonIcon_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mark/icon.4bpp"); #if P_FOOTPRINTS #if !P_GBA_STYLE_SPECIES_FOOTPRINTS @@ -21,14 +21,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_BULBASAUR #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Bulbasaur[] = INCBIN_U32("graphics/pokemon/bulbasaur/anim_front.4bpp.lz"); - const u32 gMonPalette_Bulbasaur[] = INCBIN_U32("graphics/pokemon/bulbasaur/normal.gbapal.lz"); + const u16 gMonPalette_Bulbasaur[] = INCBIN_U16("graphics/pokemon/bulbasaur/normal.gbapal"); const u32 gMonBackPic_Bulbasaur[] = INCBIN_U32("graphics/pokemon/bulbasaur/back.4bpp.lz"); - const u32 gMonShinyPalette_Bulbasaur[] = INCBIN_U32("graphics/pokemon/bulbasaur/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Bulbasaur[] = INCBIN_U16("graphics/pokemon/bulbasaur/shiny.gbapal"); #else const u32 gMonFrontPic_Bulbasaur[] = INCBIN_U32("graphics/pokemon/bulbasaur/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Bulbasaur[] = INCBIN_U32("graphics/pokemon/bulbasaur/normal_gba.gbapal.lz"); + const u16 gMonPalette_Bulbasaur[] = INCBIN_U16("graphics/pokemon/bulbasaur/normal_gba.gbapal"); const u32 gMonBackPic_Bulbasaur[] = INCBIN_U32("graphics/pokemon/bulbasaur/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Bulbasaur[] = INCBIN_U32("graphics/pokemon/bulbasaur/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Bulbasaur[] = INCBIN_U16("graphics/pokemon/bulbasaur/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Bulbasaur[] = INCBIN_U8("graphics/pokemon/bulbasaur/icon.4bpp"); @@ -41,21 +41,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Bulbasaur[] = INCBIN_U16("graphics/pokemon/bulbasaur/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Bulbasaur[] = INCBIN_U16("graphics/pokemon/bulbasaur/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Ivysaur[] = INCBIN_U32("graphics/pokemon/ivysaur/anim_front.4bpp.lz"); - const u32 gMonPalette_Ivysaur[] = INCBIN_U32("graphics/pokemon/ivysaur/normal.gbapal.lz"); + const u16 gMonPalette_Ivysaur[] = INCBIN_U16("graphics/pokemon/ivysaur/normal.gbapal"); const u32 gMonBackPic_Ivysaur[] = INCBIN_U32("graphics/pokemon/ivysaur/back.4bpp.lz"); - const u32 gMonShinyPalette_Ivysaur[] = INCBIN_U32("graphics/pokemon/ivysaur/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Ivysaur[] = INCBIN_U16("graphics/pokemon/ivysaur/shiny.gbapal"); #else const u32 gMonFrontPic_Ivysaur[] = INCBIN_U32("graphics/pokemon/ivysaur/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Ivysaur[] = INCBIN_U32("graphics/pokemon/ivysaur/normal_gba.gbapal.lz"); + const u16 gMonPalette_Ivysaur[] = INCBIN_U16("graphics/pokemon/ivysaur/normal_gba.gbapal"); const u32 gMonBackPic_Ivysaur[] = INCBIN_U32("graphics/pokemon/ivysaur/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Ivysaur[] = INCBIN_U32("graphics/pokemon/ivysaur/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Ivysaur[] = INCBIN_U16("graphics/pokemon/ivysaur/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Ivysaur[] = INCBIN_U8("graphics/pokemon/ivysaur/icon.4bpp"); @@ -68,21 +68,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Ivysaur[] = INCBIN_U16("graphics/pokemon/ivysaur/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Ivysaur[] = INCBIN_U16("graphics/pokemon/ivysaur/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Venusaur[] = INCBIN_U32("graphics/pokemon/venusaur/anim_front.4bpp.lz"); - const u32 gMonPalette_Venusaur[] = INCBIN_U32("graphics/pokemon/venusaur/normal.gbapal.lz"); + const u16 gMonPalette_Venusaur[] = INCBIN_U16("graphics/pokemon/venusaur/normal.gbapal"); const u32 gMonBackPic_Venusaur[] = INCBIN_U32("graphics/pokemon/venusaur/back.4bpp.lz"); - const u32 gMonShinyPalette_Venusaur[] = INCBIN_U32("graphics/pokemon/venusaur/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Venusaur[] = INCBIN_U16("graphics/pokemon/venusaur/shiny.gbapal"); #else const u32 gMonFrontPic_Venusaur[] = INCBIN_U32("graphics/pokemon/venusaur/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Venusaur[] = INCBIN_U32("graphics/pokemon/venusaur/normal_gba.gbapal.lz"); + const u16 gMonPalette_Venusaur[] = INCBIN_U16("graphics/pokemon/venusaur/normal_gba.gbapal"); const u32 gMonBackPic_Venusaur[] = INCBIN_U32("graphics/pokemon/venusaur/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Venusaur[] = INCBIN_U32("graphics/pokemon/venusaur/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Venusaur[] = INCBIN_U16("graphics/pokemon/venusaur/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Venusaur[] = INCBIN_U8("graphics/pokemon/venusaur/icon.4bpp"); @@ -95,8 +95,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Venusaur[] = INCBIN_U16("graphics/pokemon/venusaur/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Venusaur[] = INCBIN_U16("graphics/pokemon/venusaur/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -110,15 +110,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_MEGA_EVOLUTIONS const u32 gMonFrontPic_VenusaurMega[] = INCBIN_U32("graphics/pokemon/venusaur/mega/front.4bpp.lz"); - const u32 gMonPalette_VenusaurMega[] = INCBIN_U32("graphics/pokemon/venusaur/mega/normal.gbapal.lz"); + const u16 gMonPalette_VenusaurMega[] = INCBIN_U16("graphics/pokemon/venusaur/mega/normal.gbapal"); 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 u16 gMonShinyPalette_VenusaurMega[] = INCBIN_U16("graphics/pokemon/venusaur/mega/shiny.gbapal"); const u8 gMonIcon_VenusaurMega[] = INCBIN_U8("graphics/pokemon/venusaur/mega/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS 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"); + const u16 gOverworldPalette_VenusaurMega[] = INCBIN_U16("graphics/pokemon/venusaur/mega/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_VenusaurMega[] = INCBIN_U16("graphics/pokemon/venusaur/mega/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS #endif //P_MEGA_EVOLUTIONS @@ -126,14 +126,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_GIGANTAMAX_FORMS const u32 gMonFrontPic_VenusaurGmax[] = INCBIN_U32("graphics/pokemon/venusaur/gmax/front.4bpp.lz"); const u32 gMonBackPic_VenusaurGmax[] = INCBIN_U32("graphics/pokemon/venusaur/gmax/back.4bpp.lz"); - const u32 gMonPalette_VenusaurGmax[] = INCBIN_U32("graphics/pokemon/venusaur/gmax/normal.gbapal.lz"); - const u32 gMonShinyPalette_VenusaurGmax[] = INCBIN_U32("graphics/pokemon/venusaur/gmax/shiny.gbapal.lz"); + const u16 gMonPalette_VenusaurGmax[] = INCBIN_U16("graphics/pokemon/venusaur/gmax/normal.gbapal"); + const u16 gMonShinyPalette_VenusaurGmax[] = INCBIN_U16("graphics/pokemon/venusaur/gmax/shiny.gbapal"); const u8 gMonIcon_VenusaurGmax[] = INCBIN_U8("graphics/pokemon/venusaur/gmax/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS // const u32 gObjectEventPic_VenusaurGmax[] = INCBIN_COMP("graphics/pokemon/venusaur/gmax/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - // const u32 gOverworldPalette_VenusaurGmax[] = INCBIN_U32("graphics/pokemon/venusaur/gmax/overworld_normal.gbapal.lz"); - // const u32 gShinyOverworldPalette_VenusaurGmax[] = INCBIN_U32("graphics/pokemon/venusaur/gmax/overworld_shiny.gbapal.lz"); + // const u16 gOverworldPalette_VenusaurGmax[] = INCBIN_U16("graphics/pokemon/venusaur/gmax/overworld_normal.gbapal"); + // const u16 gShinyOverworldPalette_VenusaurGmax[] = INCBIN_U16("graphics/pokemon/venusaur/gmax/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GIGANTAMAX_FORMS @@ -142,14 +142,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_CHARMANDER #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Charmander[] = INCBIN_U32("graphics/pokemon/charmander/anim_front.4bpp.lz"); - const u32 gMonPalette_Charmander[] = INCBIN_U32("graphics/pokemon/charmander/normal.gbapal.lz"); + const u16 gMonPalette_Charmander[] = INCBIN_U16("graphics/pokemon/charmander/normal.gbapal"); const u32 gMonBackPic_Charmander[] = INCBIN_U32("graphics/pokemon/charmander/back.4bpp.lz"); - const u32 gMonShinyPalette_Charmander[] = INCBIN_U32("graphics/pokemon/charmander/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Charmander[] = INCBIN_U16("graphics/pokemon/charmander/shiny.gbapal"); #else const u32 gMonFrontPic_Charmander[] = INCBIN_U32("graphics/pokemon/charmander/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Charmander[] = INCBIN_U32("graphics/pokemon/charmander/normal_gba.gbapal.lz"); + const u16 gMonPalette_Charmander[] = INCBIN_U16("graphics/pokemon/charmander/normal_gba.gbapal"); const u32 gMonBackPic_Charmander[] = INCBIN_U32("graphics/pokemon/charmander/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Charmander[] = INCBIN_U32("graphics/pokemon/charmander/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Charmander[] = INCBIN_U16("graphics/pokemon/charmander/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Charmander[] = INCBIN_U8("graphics/pokemon/charmander/icon.4bpp"); @@ -162,21 +162,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Charmander[] = INCBIN_U16("graphics/pokemon/charmander/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Charmander[] = INCBIN_U16("graphics/pokemon/charmander/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Charmeleon[] = INCBIN_U32("graphics/pokemon/charmeleon/anim_front.4bpp.lz"); - const u32 gMonPalette_Charmeleon[] = INCBIN_U32("graphics/pokemon/charmeleon/normal.gbapal.lz"); + const u16 gMonPalette_Charmeleon[] = INCBIN_U16("graphics/pokemon/charmeleon/normal.gbapal"); const u32 gMonBackPic_Charmeleon[] = INCBIN_U32("graphics/pokemon/charmeleon/back.4bpp.lz"); - const u32 gMonShinyPalette_Charmeleon[] = INCBIN_U32("graphics/pokemon/charmeleon/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Charmeleon[] = INCBIN_U16("graphics/pokemon/charmeleon/shiny.gbapal"); #else const u32 gMonFrontPic_Charmeleon[] = INCBIN_U32("graphics/pokemon/charmeleon/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Charmeleon[] = INCBIN_U32("graphics/pokemon/charmeleon/normal_gba.gbapal.lz"); + const u16 gMonPalette_Charmeleon[] = INCBIN_U16("graphics/pokemon/charmeleon/normal_gba.gbapal"); const u32 gMonBackPic_Charmeleon[] = INCBIN_U32("graphics/pokemon/charmeleon/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Charmeleon[] = INCBIN_U32("graphics/pokemon/charmeleon/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Charmeleon[] = INCBIN_U16("graphics/pokemon/charmeleon/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Charmeleon[] = INCBIN_U8("graphics/pokemon/charmeleon/icon.4bpp"); @@ -189,21 +189,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Charmeleon[] = INCBIN_U16("graphics/pokemon/charmeleon/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Charmeleon[] = INCBIN_U16("graphics/pokemon/charmeleon/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Charizard[] = INCBIN_U32("graphics/pokemon/charizard/anim_front.4bpp.lz"); - const u32 gMonPalette_Charizard[] = INCBIN_U32("graphics/pokemon/charizard/normal.gbapal.lz"); + const u16 gMonPalette_Charizard[] = INCBIN_U16("graphics/pokemon/charizard/normal.gbapal"); const u32 gMonBackPic_Charizard[] = INCBIN_U32("graphics/pokemon/charizard/back.4bpp.lz"); - const u32 gMonShinyPalette_Charizard[] = INCBIN_U32("graphics/pokemon/charizard/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Charizard[] = INCBIN_U16("graphics/pokemon/charizard/shiny.gbapal"); #else const u32 gMonFrontPic_Charizard[] = INCBIN_U32("graphics/pokemon/charizard/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Charizard[] = INCBIN_U32("graphics/pokemon/charizard/normal_gba.gbapal.lz"); + const u16 gMonPalette_Charizard[] = INCBIN_U16("graphics/pokemon/charizard/normal_gba.gbapal"); const u32 gMonBackPic_Charizard[] = INCBIN_U32("graphics/pokemon/charizard/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Charizard[] = INCBIN_U32("graphics/pokemon/charizard/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Charizard[] = INCBIN_U16("graphics/pokemon/charizard/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Charizard[] = INCBIN_U8("graphics/pokemon/charizard/icon.4bpp"); @@ -216,35 +216,35 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Charizard[] = INCBIN_U16("graphics/pokemon/charizard/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Charizard[] = INCBIN_U16("graphics/pokemon/charizard/overworld_shiny.gbapal"); #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"); - const u32 gMonPalette_CharizardMegaX[] = INCBIN_U32("graphics/pokemon/charizard/mega_x/normal.gbapal.lz"); + const u16 gMonPalette_CharizardMegaX[] = INCBIN_U16("graphics/pokemon/charizard/mega_x/normal.gbapal"); 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 u16 gMonShinyPalette_CharizardMegaX[] = INCBIN_U16("graphics/pokemon/charizard/mega_x/shiny.gbapal"); const u8 gMonIcon_CharizardMegaX[] = INCBIN_U8("graphics/pokemon/charizard/mega_x/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS 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"); + const u16 gOverworldPalette_CharizardMegaX[] = INCBIN_U16("graphics/pokemon/charizard/mega_x/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_CharizardMegaX[] = INCBIN_U16("graphics/pokemon/charizard/mega_x/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS 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 u16 gMonPalette_CharizardMegaY[] = INCBIN_U16("graphics/pokemon/charizard/mega_y/normal.gbapal"); 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 u16 gMonShinyPalette_CharizardMegaY[] = INCBIN_U16("graphics/pokemon/charizard/mega_y/shiny.gbapal"); const u8 gMonIcon_CharizardMegaY[] = INCBIN_U8("graphics/pokemon/charizard/mega_y/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS 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"); + const u16 gOverworldPalette_CharizardMegaY[] = INCBIN_U16("graphics/pokemon/charizard/mega_y/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_CharizardMegaY[] = INCBIN_U16("graphics/pokemon/charizard/mega_y/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS #endif //P_MEGA_EVOLUTIONS @@ -252,14 +252,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_GIGANTAMAX_FORMS const u32 gMonFrontPic_CharizardGmax[] = INCBIN_U32("graphics/pokemon/charizard/gmax/front.4bpp.lz"); const u32 gMonBackPic_CharizardGmax[] = INCBIN_U32("graphics/pokemon/charizard/gmax/back.4bpp.lz"); - const u32 gMonPalette_CharizardGmax[] = INCBIN_U32("graphics/pokemon/charizard/gmax/normal.gbapal.lz"); - const u32 gMonShinyPalette_CharizardGmax[] = INCBIN_U32("graphics/pokemon/charizard/gmax/shiny.gbapal.lz"); + const u16 gMonPalette_CharizardGmax[] = INCBIN_U16("graphics/pokemon/charizard/gmax/normal.gbapal"); + const u16 gMonShinyPalette_CharizardGmax[] = INCBIN_U16("graphics/pokemon/charizard/gmax/shiny.gbapal"); const u8 gMonIcon_CharizardGmax[] = INCBIN_U8("graphics/pokemon/charizard/gmax/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS // const u32 gObjectEventPic_CharizardGmax[] = INCBIN_COMP("graphics/pokemon/charizard/gmax/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - // const u32 gOverworldPalette_CharizardGmax[] = INCBIN_U32("graphics/pokemon/charizard/gmax/overworld_normal.gbapal.lz"); - // const u32 gShinyOverworldPalette_CharizardGmax[] = INCBIN_U32("graphics/pokemon/charizard/gmax/overworld_shiny.gbapal.lz"); + // const u16 gOverworldPalette_CharizardGmax[] = INCBIN_U16("graphics/pokemon/charizard/gmax/overworld_normal.gbapal"); + // const u16 gShinyOverworldPalette_CharizardGmax[] = INCBIN_U16("graphics/pokemon/charizard/gmax/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GIGANTAMAX_FORMS @@ -268,14 +268,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_SQUIRTLE #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Squirtle[] = INCBIN_U32("graphics/pokemon/squirtle/anim_front.4bpp.lz"); - const u32 gMonPalette_Squirtle[] = INCBIN_U32("graphics/pokemon/squirtle/normal.gbapal.lz"); + const u16 gMonPalette_Squirtle[] = INCBIN_U16("graphics/pokemon/squirtle/normal.gbapal"); const u32 gMonBackPic_Squirtle[] = INCBIN_U32("graphics/pokemon/squirtle/back.4bpp.lz"); - const u32 gMonShinyPalette_Squirtle[] = INCBIN_U32("graphics/pokemon/squirtle/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Squirtle[] = INCBIN_U16("graphics/pokemon/squirtle/shiny.gbapal"); #else const u32 gMonFrontPic_Squirtle[] = INCBIN_U32("graphics/pokemon/squirtle/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Squirtle[] = INCBIN_U32("graphics/pokemon/squirtle/normal_gba.gbapal.lz"); + const u16 gMonPalette_Squirtle[] = INCBIN_U16("graphics/pokemon/squirtle/normal_gba.gbapal"); const u32 gMonBackPic_Squirtle[] = INCBIN_U32("graphics/pokemon/squirtle/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Squirtle[] = INCBIN_U32("graphics/pokemon/squirtle/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Squirtle[] = INCBIN_U16("graphics/pokemon/squirtle/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Squirtle[] = INCBIN_U8("graphics/pokemon/squirtle/icon.4bpp"); @@ -288,21 +288,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Squirtle[] = INCBIN_U16("graphics/pokemon/squirtle/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Squirtle[] = INCBIN_U16("graphics/pokemon/squirtle/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Wartortle[] = INCBIN_U32("graphics/pokemon/wartortle/anim_front.4bpp.lz"); - const u32 gMonPalette_Wartortle[] = INCBIN_U32("graphics/pokemon/wartortle/normal.gbapal.lz"); + const u16 gMonPalette_Wartortle[] = INCBIN_U16("graphics/pokemon/wartortle/normal.gbapal"); const u32 gMonBackPic_Wartortle[] = INCBIN_U32("graphics/pokemon/wartortle/back.4bpp.lz"); - const u32 gMonShinyPalette_Wartortle[] = INCBIN_U32("graphics/pokemon/wartortle/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Wartortle[] = INCBIN_U16("graphics/pokemon/wartortle/shiny.gbapal"); #else const u32 gMonFrontPic_Wartortle[] = INCBIN_U32("graphics/pokemon/wartortle/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Wartortle[] = INCBIN_U32("graphics/pokemon/wartortle/normal_gba.gbapal.lz"); + const u16 gMonPalette_Wartortle[] = INCBIN_U16("graphics/pokemon/wartortle/normal_gba.gbapal"); const u32 gMonBackPic_Wartortle[] = INCBIN_U32("graphics/pokemon/wartortle/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Wartortle[] = INCBIN_U32("graphics/pokemon/wartortle/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Wartortle[] = INCBIN_U16("graphics/pokemon/wartortle/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Wartortle[] = INCBIN_U8("graphics/pokemon/wartortle/icon.4bpp"); @@ -315,21 +315,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Wartortle[] = INCBIN_U16("graphics/pokemon/wartortle/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Wartortle[] = INCBIN_U16("graphics/pokemon/wartortle/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Blastoise[] = INCBIN_U32("graphics/pokemon/blastoise/anim_front.4bpp.lz"); - const u32 gMonPalette_Blastoise[] = INCBIN_U32("graphics/pokemon/blastoise/normal.gbapal.lz"); + const u16 gMonPalette_Blastoise[] = INCBIN_U16("graphics/pokemon/blastoise/normal.gbapal"); const u32 gMonBackPic_Blastoise[] = INCBIN_U32("graphics/pokemon/blastoise/back.4bpp.lz"); - const u32 gMonShinyPalette_Blastoise[] = INCBIN_U32("graphics/pokemon/blastoise/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Blastoise[] = INCBIN_U16("graphics/pokemon/blastoise/shiny.gbapal"); #else const u32 gMonFrontPic_Blastoise[] = INCBIN_U32("graphics/pokemon/blastoise/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Blastoise[] = INCBIN_U32("graphics/pokemon/blastoise/normal_gba.gbapal.lz"); + const u16 gMonPalette_Blastoise[] = INCBIN_U16("graphics/pokemon/blastoise/normal_gba.gbapal"); const u32 gMonBackPic_Blastoise[] = INCBIN_U32("graphics/pokemon/blastoise/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Blastoise[] = INCBIN_U32("graphics/pokemon/blastoise/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Blastoise[] = INCBIN_U16("graphics/pokemon/blastoise/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Blastoise[] = INCBIN_U8("graphics/pokemon/blastoise/icon.4bpp"); @@ -342,22 +342,22 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Blastoise[] = INCBIN_U16("graphics/pokemon/blastoise/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Blastoise[] = INCBIN_U16("graphics/pokemon/blastoise/overworld_shiny.gbapal"); #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"); - const u32 gMonPalette_BlastoiseMega[] = INCBIN_U32("graphics/pokemon/blastoise/mega/normal.gbapal.lz"); + const u16 gMonPalette_BlastoiseMega[] = INCBIN_U16("graphics/pokemon/blastoise/mega/normal.gbapal"); 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 u16 gMonShinyPalette_BlastoiseMega[] = INCBIN_U16("graphics/pokemon/blastoise/mega/shiny.gbapal"); const u8 gMonIcon_BlastoiseMega[] = INCBIN_U8("graphics/pokemon/blastoise/mega/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS 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"); + const u16 gOverworldPalette_BlastoiseMega[] = INCBIN_U16("graphics/pokemon/blastoise/mega/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_BlastoiseMega[] = INCBIN_U16("graphics/pokemon/blastoise/mega/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS #endif //P_MEGA_EVOLUTIONS @@ -365,14 +365,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_GIGANTAMAX_FORMS const u32 gMonFrontPic_BlastoiseGmax[] = INCBIN_U32("graphics/pokemon/blastoise/gmax/front.4bpp.lz"); const u32 gMonBackPic_BlastoiseGmax[] = INCBIN_U32("graphics/pokemon/blastoise/gmax/back.4bpp.lz"); - const u32 gMonPalette_BlastoiseGmax[] = INCBIN_U32("graphics/pokemon/blastoise/gmax/normal.gbapal.lz"); - const u32 gMonShinyPalette_BlastoiseGmax[] = INCBIN_U32("graphics/pokemon/blastoise/gmax/shiny.gbapal.lz"); + const u16 gMonPalette_BlastoiseGmax[] = INCBIN_U16("graphics/pokemon/blastoise/gmax/normal.gbapal"); + const u16 gMonShinyPalette_BlastoiseGmax[] = INCBIN_U16("graphics/pokemon/blastoise/gmax/shiny.gbapal"); const u8 gMonIcon_BlastoiseGmax[] = INCBIN_U8("graphics/pokemon/blastoise/gmax/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS // const u32 gObjectEventPic_BlastoiseGmax[] = INCBIN_COMP("graphics/pokemon/blastoise/gmax/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - // const u32 gOverworldPalette_BlastoiseGmax[] = INCBIN_U32("graphics/pokemon/blastoise/gmax/overworld_normal.gbapal.lz"); - // const u32 gShinyOverworldPalette_BlastoiseGmax[] = INCBIN_U32("graphics/pokemon/blastoise/gmax/overworld_shiny.gbapal.lz"); + // const u16 gOverworldPalette_BlastoiseGmax[] = INCBIN_U16("graphics/pokemon/blastoise/gmax/overworld_normal.gbapal"); + // const u16 gShinyOverworldPalette_BlastoiseGmax[] = INCBIN_U16("graphics/pokemon/blastoise/gmax/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GIGANTAMAX_FORMS @@ -381,14 +381,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_CATERPIE #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Caterpie[] = INCBIN_U32("graphics/pokemon/caterpie/anim_front.4bpp.lz"); - const u32 gMonPalette_Caterpie[] = INCBIN_U32("graphics/pokemon/caterpie/normal.gbapal.lz"); + const u16 gMonPalette_Caterpie[] = INCBIN_U16("graphics/pokemon/caterpie/normal.gbapal"); const u32 gMonBackPic_Caterpie[] = INCBIN_U32("graphics/pokemon/caterpie/back.4bpp.lz"); - const u32 gMonShinyPalette_Caterpie[] = INCBIN_U32("graphics/pokemon/caterpie/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Caterpie[] = INCBIN_U16("graphics/pokemon/caterpie/shiny.gbapal"); #else const u32 gMonFrontPic_Caterpie[] = INCBIN_U32("graphics/pokemon/caterpie/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Caterpie[] = INCBIN_U32("graphics/pokemon/caterpie/normal_gba.gbapal.lz"); + const u16 gMonPalette_Caterpie[] = INCBIN_U16("graphics/pokemon/caterpie/normal_gba.gbapal"); const u32 gMonBackPic_Caterpie[] = INCBIN_U32("graphics/pokemon/caterpie/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Caterpie[] = INCBIN_U32("graphics/pokemon/caterpie/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Caterpie[] = INCBIN_U16("graphics/pokemon/caterpie/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Caterpie[] = INCBIN_U8("graphics/pokemon/caterpie/icon.4bpp"); @@ -401,21 +401,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Caterpie[] = INCBIN_U16("graphics/pokemon/caterpie/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Caterpie[] = INCBIN_U16("graphics/pokemon/caterpie/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Metapod[] = INCBIN_U32("graphics/pokemon/metapod/anim_front.4bpp.lz"); - const u32 gMonPalette_Metapod[] = INCBIN_U32("graphics/pokemon/metapod/normal.gbapal.lz"); + const u16 gMonPalette_Metapod[] = INCBIN_U16("graphics/pokemon/metapod/normal.gbapal"); const u32 gMonBackPic_Metapod[] = INCBIN_U32("graphics/pokemon/metapod/back.4bpp.lz"); - const u32 gMonShinyPalette_Metapod[] = INCBIN_U32("graphics/pokemon/metapod/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Metapod[] = INCBIN_U16("graphics/pokemon/metapod/shiny.gbapal"); #else const u32 gMonFrontPic_Metapod[] = INCBIN_U32("graphics/pokemon/metapod/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Metapod[] = INCBIN_U32("graphics/pokemon/metapod/normal_gba.gbapal.lz"); + const u16 gMonPalette_Metapod[] = INCBIN_U16("graphics/pokemon/metapod/normal_gba.gbapal"); const u32 gMonBackPic_Metapod[] = INCBIN_U32("graphics/pokemon/metapod/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Metapod[] = INCBIN_U32("graphics/pokemon/metapod/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Metapod[] = INCBIN_U16("graphics/pokemon/metapod/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX const u8 gMonIcon_Metapod[] = INCBIN_U8( "graphics/pokemon/metapod/icon.4bpp"); #if P_FOOTPRINTS @@ -424,21 +424,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Metapod[] = INCBIN_U16("graphics/pokemon/metapod/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Metapod[] = INCBIN_U16("graphics/pokemon/metapod/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Butterfree[] = INCBIN_U32("graphics/pokemon/butterfree/anim_front.4bpp.lz"); - const u32 gMonPalette_Butterfree[] = INCBIN_U32("graphics/pokemon/butterfree/normal.gbapal.lz"); + const u16 gMonPalette_Butterfree[] = INCBIN_U16("graphics/pokemon/butterfree/normal.gbapal"); const u32 gMonBackPic_Butterfree[] = INCBIN_U32("graphics/pokemon/butterfree/back.4bpp.lz"); - const u32 gMonShinyPalette_Butterfree[] = INCBIN_U32("graphics/pokemon/butterfree/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Butterfree[] = INCBIN_U16("graphics/pokemon/butterfree/shiny.gbapal"); #else const u32 gMonFrontPic_Butterfree[] = INCBIN_U32("graphics/pokemon/butterfree/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Butterfree[] = INCBIN_U32("graphics/pokemon/butterfree/normal_gba.gbapal.lz"); + const u16 gMonPalette_Butterfree[] = INCBIN_U16("graphics/pokemon/butterfree/normal_gba.gbapal"); const u32 gMonBackPic_Butterfree[] = INCBIN_U32("graphics/pokemon/butterfree/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Butterfree[] = INCBIN_U32("graphics/pokemon/butterfree/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Butterfree[] = INCBIN_U16("graphics/pokemon/butterfree/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Butterfree[] = INCBIN_U8("graphics/pokemon/butterfree/icon.4bpp"); @@ -451,8 +451,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Butterfree[] = INCBIN_U16("graphics/pokemon/butterfree/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Butterfree[] = INCBIN_U16("graphics/pokemon/butterfree/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -467,14 +467,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_GIGANTAMAX_FORMS const u32 gMonFrontPic_ButterfreeGmax[] = INCBIN_U32("graphics/pokemon/butterfree/gmax/front.4bpp.lz"); const u32 gMonBackPic_ButterfreeGmax[] = INCBIN_U32("graphics/pokemon/butterfree/gmax/back.4bpp.lz"); - const u32 gMonPalette_ButterfreeGmax[] = INCBIN_U32("graphics/pokemon/butterfree/gmax/normal.gbapal.lz"); - const u32 gMonShinyPalette_ButterfreeGmax[] = INCBIN_U32("graphics/pokemon/butterfree/gmax/shiny.gbapal.lz"); + const u16 gMonPalette_ButterfreeGmax[] = INCBIN_U16("graphics/pokemon/butterfree/gmax/normal.gbapal"); + const u16 gMonShinyPalette_ButterfreeGmax[] = INCBIN_U16("graphics/pokemon/butterfree/gmax/shiny.gbapal"); const u8 gMonIcon_ButterfreeGmax[] = INCBIN_U8("graphics/pokemon/butterfree/gmax/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS // const u32 gObjectEventPic_ButterfreeGmax[] = INCBIN_COMP("graphics/pokemon/butterfree/gmax/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - // const u32 gOverworldPalette_ButterfreeGmax[] = INCBIN_U32("graphics/pokemon/butterfree/gmax/overworld_normal.gbapal.lz"); - // const u32 gShinyOverworldPalette_ButterfreeGmax[] = INCBIN_U32("graphics/pokemon/butterfree/gmax/overworld_shiny.gbapal.lz"); + // const u16 gOverworldPalette_ButterfreeGmax[] = INCBIN_U16("graphics/pokemon/butterfree/gmax/overworld_normal.gbapal"); + // const u16 gShinyOverworldPalette_ButterfreeGmax[] = INCBIN_U16("graphics/pokemon/butterfree/gmax/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GIGANTAMAX_FORMS @@ -483,14 +483,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_WEEDLE #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Weedle[] = INCBIN_U32("graphics/pokemon/weedle/anim_front.4bpp.lz"); - const u32 gMonPalette_Weedle[] = INCBIN_U32("graphics/pokemon/weedle/normal.gbapal.lz"); + const u16 gMonPalette_Weedle[] = INCBIN_U16("graphics/pokemon/weedle/normal.gbapal"); const u32 gMonBackPic_Weedle[] = INCBIN_U32("graphics/pokemon/weedle/back.4bpp.lz"); - const u32 gMonShinyPalette_Weedle[] = INCBIN_U32("graphics/pokemon/weedle/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Weedle[] = INCBIN_U16("graphics/pokemon/weedle/shiny.gbapal"); #else const u32 gMonFrontPic_Weedle[] = INCBIN_U32("graphics/pokemon/weedle/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Weedle[] = INCBIN_U32("graphics/pokemon/weedle/normal_gba.gbapal.lz"); + const u16 gMonPalette_Weedle[] = INCBIN_U16("graphics/pokemon/weedle/normal_gba.gbapal"); const u32 gMonBackPic_Weedle[] = INCBIN_U32("graphics/pokemon/weedle/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Weedle[] = INCBIN_U32("graphics/pokemon/weedle/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Weedle[] = INCBIN_U16("graphics/pokemon/weedle/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Weedle[] = INCBIN_U8("graphics/pokemon/weedle/icon.4bpp"); @@ -503,21 +503,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Weedle[] = INCBIN_U16("graphics/pokemon/weedle/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Weedle[] = INCBIN_U16("graphics/pokemon/weedle/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Kakuna[] = INCBIN_U32("graphics/pokemon/kakuna/anim_front.4bpp.lz"); - const u32 gMonPalette_Kakuna[] = INCBIN_U32("graphics/pokemon/kakuna/normal.gbapal.lz"); + const u16 gMonPalette_Kakuna[] = INCBIN_U16("graphics/pokemon/kakuna/normal.gbapal"); const u32 gMonBackPic_Kakuna[] = INCBIN_U32("graphics/pokemon/kakuna/back.4bpp.lz"); - const u32 gMonShinyPalette_Kakuna[] = INCBIN_U32("graphics/pokemon/kakuna/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Kakuna[] = INCBIN_U16("graphics/pokemon/kakuna/shiny.gbapal"); #else const u32 gMonFrontPic_Kakuna[] = INCBIN_U32("graphics/pokemon/kakuna/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Kakuna[] = INCBIN_U32("graphics/pokemon/kakuna/normal_gba.gbapal.lz"); + const u16 gMonPalette_Kakuna[] = INCBIN_U16("graphics/pokemon/kakuna/normal_gba.gbapal"); const u32 gMonBackPic_Kakuna[] = INCBIN_U32("graphics/pokemon/kakuna/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Kakuna[] = INCBIN_U32("graphics/pokemon/kakuna/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Kakuna[] = INCBIN_U16("graphics/pokemon/kakuna/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Kakuna[] = INCBIN_U8("graphics/pokemon/kakuna/icon.4bpp"); @@ -530,21 +530,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Kakuna[] = INCBIN_U16("graphics/pokemon/kakuna/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Kakuna[] = INCBIN_U16("graphics/pokemon/kakuna/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Beedrill[] = INCBIN_U32("graphics/pokemon/beedrill/anim_front.4bpp.lz"); - const u32 gMonPalette_Beedrill[] = INCBIN_U32("graphics/pokemon/beedrill/normal.gbapal.lz"); + const u16 gMonPalette_Beedrill[] = INCBIN_U16("graphics/pokemon/beedrill/normal.gbapal"); const u32 gMonBackPic_Beedrill[] = INCBIN_U32("graphics/pokemon/beedrill/back.4bpp.lz"); - const u32 gMonShinyPalette_Beedrill[] = INCBIN_U32("graphics/pokemon/beedrill/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Beedrill[] = INCBIN_U16("graphics/pokemon/beedrill/shiny.gbapal"); #else const u32 gMonFrontPic_Beedrill[] = INCBIN_U32("graphics/pokemon/beedrill/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Beedrill[] = INCBIN_U32("graphics/pokemon/beedrill/normal_gba.gbapal.lz"); + const u16 gMonPalette_Beedrill[] = INCBIN_U16("graphics/pokemon/beedrill/normal_gba.gbapal"); const u32 gMonBackPic_Beedrill[] = INCBIN_U32("graphics/pokemon/beedrill/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Beedrill[] = INCBIN_U32("graphics/pokemon/beedrill/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Beedrill[] = INCBIN_U16("graphics/pokemon/beedrill/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Beedrill[] = INCBIN_U8("graphics/pokemon/beedrill/icon.4bpp"); @@ -557,22 +557,22 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Beedrill[] = INCBIN_U16("graphics/pokemon/beedrill/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Beedrill[] = INCBIN_U16("graphics/pokemon/beedrill/overworld_shiny.gbapal"); #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"); - const u32 gMonPalette_BeedrillMega[] = INCBIN_U32("graphics/pokemon/beedrill/mega/normal.gbapal.lz"); + const u16 gMonPalette_BeedrillMega[] = INCBIN_U16("graphics/pokemon/beedrill/mega/normal.gbapal"); 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 u16 gMonShinyPalette_BeedrillMega[] = INCBIN_U16("graphics/pokemon/beedrill/mega/shiny.gbapal"); const u8 gMonIcon_BeedrillMega[] = INCBIN_U8("graphics/pokemon/beedrill/mega/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS 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"); + const u16 gOverworldPalette_BeedrillMega[] = INCBIN_U16("graphics/pokemon/beedrill/mega/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_BeedrillMega[] = INCBIN_U16("graphics/pokemon/beedrill/mega/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS #endif //P_MEGA_EVOLUTIONS @@ -581,14 +581,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_PIDGEY #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Pidgey[] = INCBIN_U32("graphics/pokemon/pidgey/anim_front.4bpp.lz"); - const u32 gMonPalette_Pidgey[] = INCBIN_U32("graphics/pokemon/pidgey/normal.gbapal.lz"); + const u16 gMonPalette_Pidgey[] = INCBIN_U16("graphics/pokemon/pidgey/normal.gbapal"); const u32 gMonBackPic_Pidgey[] = INCBIN_U32("graphics/pokemon/pidgey/back.4bpp.lz"); - const u32 gMonShinyPalette_Pidgey[] = INCBIN_U32("graphics/pokemon/pidgey/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Pidgey[] = INCBIN_U16("graphics/pokemon/pidgey/shiny.gbapal"); #else const u32 gMonFrontPic_Pidgey[] = INCBIN_U32("graphics/pokemon/pidgey/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Pidgey[] = INCBIN_U32("graphics/pokemon/pidgey/normal_gba.gbapal.lz"); + const u16 gMonPalette_Pidgey[] = INCBIN_U16("graphics/pokemon/pidgey/normal_gba.gbapal"); const u32 gMonBackPic_Pidgey[] = INCBIN_U32("graphics/pokemon/pidgey/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Pidgey[] = INCBIN_U32("graphics/pokemon/pidgey/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Pidgey[] = INCBIN_U16("graphics/pokemon/pidgey/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Pidgey[] = INCBIN_U8("graphics/pokemon/pidgey/icon.4bpp"); @@ -601,21 +601,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Pidgey[] = INCBIN_U16("graphics/pokemon/pidgey/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Pidgey[] = INCBIN_U16("graphics/pokemon/pidgey/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Pidgeotto[] = INCBIN_U32("graphics/pokemon/pidgeotto/anim_front.4bpp.lz"); - const u32 gMonPalette_Pidgeotto[] = INCBIN_U32("graphics/pokemon/pidgeotto/normal.gbapal.lz"); + const u16 gMonPalette_Pidgeotto[] = INCBIN_U16("graphics/pokemon/pidgeotto/normal.gbapal"); const u32 gMonBackPic_Pidgeotto[] = INCBIN_U32("graphics/pokemon/pidgeotto/back.4bpp.lz"); - const u32 gMonShinyPalette_Pidgeotto[] = INCBIN_U32("graphics/pokemon/pidgeotto/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Pidgeotto[] = INCBIN_U16("graphics/pokemon/pidgeotto/shiny.gbapal"); #else const u32 gMonFrontPic_Pidgeotto[] = INCBIN_U32("graphics/pokemon/pidgeotto/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Pidgeotto[] = INCBIN_U32("graphics/pokemon/pidgeotto/normal_gba.gbapal.lz"); + const u16 gMonPalette_Pidgeotto[] = INCBIN_U16("graphics/pokemon/pidgeotto/normal_gba.gbapal"); const u32 gMonBackPic_Pidgeotto[] = INCBIN_U32("graphics/pokemon/pidgeotto/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Pidgeotto[] = INCBIN_U32("graphics/pokemon/pidgeotto/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Pidgeotto[] = INCBIN_U16("graphics/pokemon/pidgeotto/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Pidgeotto[] = INCBIN_U8("graphics/pokemon/pidgeotto/icon.4bpp"); @@ -628,21 +628,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Pidgeotto[] = INCBIN_U16("graphics/pokemon/pidgeotto/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Pidgeotto[] = INCBIN_U16("graphics/pokemon/pidgeotto/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Pidgeot[] = INCBIN_U32("graphics/pokemon/pidgeot/anim_front.4bpp.lz"); - const u32 gMonPalette_Pidgeot[] = INCBIN_U32("graphics/pokemon/pidgeot/normal.gbapal.lz"); + const u16 gMonPalette_Pidgeot[] = INCBIN_U16("graphics/pokemon/pidgeot/normal.gbapal"); const u32 gMonBackPic_Pidgeot[] = INCBIN_U32("graphics/pokemon/pidgeot/back.4bpp.lz"); - const u32 gMonShinyPalette_Pidgeot[] = INCBIN_U32("graphics/pokemon/pidgeot/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Pidgeot[] = INCBIN_U16("graphics/pokemon/pidgeot/shiny.gbapal"); #else const u32 gMonFrontPic_Pidgeot[] = INCBIN_U32("graphics/pokemon/pidgeot/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Pidgeot[] = INCBIN_U32("graphics/pokemon/pidgeot/normal_gba.gbapal.lz"); + const u16 gMonPalette_Pidgeot[] = INCBIN_U16("graphics/pokemon/pidgeot/normal_gba.gbapal"); const u32 gMonBackPic_Pidgeot[] = INCBIN_U32("graphics/pokemon/pidgeot/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Pidgeot[] = INCBIN_U32("graphics/pokemon/pidgeot/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Pidgeot[] = INCBIN_U16("graphics/pokemon/pidgeot/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Pidgeot[] = INCBIN_U8("graphics/pokemon/pidgeot/icon.4bpp"); @@ -655,22 +655,22 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Pidgeot[] = INCBIN_U16("graphics/pokemon/pidgeot/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Pidgeot[] = INCBIN_U16("graphics/pokemon/pidgeot/overworld_shiny.gbapal"); #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"); - const u32 gMonPalette_PidgeotMega[] = INCBIN_U32("graphics/pokemon/pidgeot/mega/normal.gbapal.lz"); + const u16 gMonPalette_PidgeotMega[] = INCBIN_U16("graphics/pokemon/pidgeot/mega/normal.gbapal"); 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 u16 gMonShinyPalette_PidgeotMega[] = INCBIN_U16("graphics/pokemon/pidgeot/mega/shiny.gbapal"); const u8 gMonIcon_PidgeotMega[] = INCBIN_U8("graphics/pokemon/pidgeot/mega/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS 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"); + const u16 gOverworldPalette_PidgeotMega[] = INCBIN_U16("graphics/pokemon/pidgeot/mega/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_PidgeotMega[] = INCBIN_U16("graphics/pokemon/pidgeot/mega/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS #endif //P_MEGA_EVOLUTIONS @@ -679,14 +679,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_RATTATA #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Rattata[] = INCBIN_U32("graphics/pokemon/rattata/anim_front.4bpp.lz"); - const u32 gMonPalette_Rattata[] = INCBIN_U32("graphics/pokemon/rattata/normal.gbapal.lz"); + const u16 gMonPalette_Rattata[] = INCBIN_U16("graphics/pokemon/rattata/normal.gbapal"); const u32 gMonBackPic_Rattata[] = INCBIN_U32("graphics/pokemon/rattata/back.4bpp.lz"); - const u32 gMonShinyPalette_Rattata[] = INCBIN_U32("graphics/pokemon/rattata/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Rattata[] = INCBIN_U16("graphics/pokemon/rattata/shiny.gbapal"); #else const u32 gMonFrontPic_Rattata[] = INCBIN_U32("graphics/pokemon/rattata/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Rattata[] = INCBIN_U32("graphics/pokemon/rattata/normal_gba.gbapal.lz"); + const u16 gMonPalette_Rattata[] = INCBIN_U16("graphics/pokemon/rattata/normal_gba.gbapal"); const u32 gMonBackPic_Rattata[] = INCBIN_U32("graphics/pokemon/rattata/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Rattata[] = INCBIN_U32("graphics/pokemon/rattata/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Rattata[] = INCBIN_U16("graphics/pokemon/rattata/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Rattata[] = INCBIN_U8("graphics/pokemon/rattata/icon.4bpp"); @@ -699,8 +699,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Rattata[] = INCBIN_U16("graphics/pokemon/rattata/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Rattata[] = INCBIN_U16("graphics/pokemon/rattata/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -714,14 +714,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Raticate[] = INCBIN_U32("graphics/pokemon/raticate/anim_front.4bpp.lz"); - const u32 gMonPalette_Raticate[] = INCBIN_U32("graphics/pokemon/raticate/normal.gbapal.lz"); + const u16 gMonPalette_Raticate[] = INCBIN_U16("graphics/pokemon/raticate/normal.gbapal"); const u32 gMonBackPic_Raticate[] = INCBIN_U32("graphics/pokemon/raticate/back.4bpp.lz"); - const u32 gMonShinyPalette_Raticate[] = INCBIN_U32("graphics/pokemon/raticate/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Raticate[] = INCBIN_U16("graphics/pokemon/raticate/shiny.gbapal"); #else const u32 gMonFrontPic_Raticate[] = INCBIN_U32("graphics/pokemon/raticate/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Raticate[] = INCBIN_U32("graphics/pokemon/raticate/normal_gba.gbapal.lz"); + const u16 gMonPalette_Raticate[] = INCBIN_U16("graphics/pokemon/raticate/normal_gba.gbapal"); const u32 gMonBackPic_Raticate[] = INCBIN_U32("graphics/pokemon/raticate/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Raticate[] = INCBIN_U32("graphics/pokemon/raticate/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Raticate[] = INCBIN_U16("graphics/pokemon/raticate/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Raticate[] = INCBIN_U8("graphics/pokemon/raticate/icon.4bpp"); @@ -734,8 +734,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Raticate[] = INCBIN_U16("graphics/pokemon/raticate/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Raticate[] = INCBIN_U16("graphics/pokemon/raticate/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -749,28 +749,28 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_ALOLAN_FORMS const u32 gMonFrontPic_RattataAlola[] = INCBIN_U32("graphics/pokemon/rattata/alola/front.4bpp.lz"); - const u32 gMonPalette_RattataAlola[] = INCBIN_U32("graphics/pokemon/rattata/alola/normal.gbapal.lz"); + const u16 gMonPalette_RattataAlola[] = INCBIN_U16("graphics/pokemon/rattata/alola/normal.gbapal"); const u32 gMonBackPic_RattataAlola[] = INCBIN_U32("graphics/pokemon/rattata/alola/back.4bpp.lz"); - const u32 gMonShinyPalette_RattataAlola[] = INCBIN_U32("graphics/pokemon/rattata/alola/shiny.gbapal.lz"); + const u16 gMonShinyPalette_RattataAlola[] = INCBIN_U16("graphics/pokemon/rattata/alola/shiny.gbapal"); const u8 gMonIcon_RattataAlola[] = INCBIN_U8("graphics/pokemon/rattata/alola/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS const u32 gObjectEventPic_RattataAlola[] = INCBIN_COMP("graphics/pokemon/rattata/alola/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - const u32 gOverworldPalette_RattataAlola[] = INCBIN_U32("graphics/pokemon/rattata/alola/overworld_normal.gbapal.lz"); - const u32 gShinyOverworldPalette_RattataAlola[] = INCBIN_U32("graphics/pokemon/rattata/alola/overworld_shiny.gbapal.lz"); + const u16 gOverworldPalette_RattataAlola[] = INCBIN_U16("graphics/pokemon/rattata/alola/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_RattataAlola[] = INCBIN_U16("graphics/pokemon/rattata/alola/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_RaticateAlola[] = INCBIN_U32("graphics/pokemon/raticate/alola/front.4bpp.lz"); - const u32 gMonPalette_RaticateAlola[] = INCBIN_U32("graphics/pokemon/raticate/alola/normal.gbapal.lz"); + const u16 gMonPalette_RaticateAlola[] = INCBIN_U16("graphics/pokemon/raticate/alola/normal.gbapal"); const u32 gMonBackPic_RaticateAlola[] = INCBIN_U32("graphics/pokemon/raticate/alola/back.4bpp.lz"); - const u32 gMonShinyPalette_RaticateAlola[] = INCBIN_U32("graphics/pokemon/raticate/alola/shiny.gbapal.lz"); + const u16 gMonShinyPalette_RaticateAlola[] = INCBIN_U16("graphics/pokemon/raticate/alola/shiny.gbapal"); const u8 gMonIcon_RaticateAlola[] = INCBIN_U8("graphics/pokemon/raticate/alola/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS const u32 gObjectEventPic_RaticateAlola[] = INCBIN_COMP("graphics/pokemon/raticate/alola/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - const u32 gOverworldPalette_RaticateAlola[] = INCBIN_U32("graphics/pokemon/raticate/alola/overworld_normal.gbapal.lz"); - const u32 gShinyOverworldPalette_RaticateAlola[] = INCBIN_U32("graphics/pokemon/raticate/alola/overworld_shiny.gbapal.lz"); + const u16 gOverworldPalette_RaticateAlola[] = INCBIN_U16("graphics/pokemon/raticate/alola/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_RaticateAlola[] = INCBIN_U16("graphics/pokemon/raticate/alola/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_ALOLAN_FORMS @@ -779,14 +779,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_SPEAROW #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Spearow[] = INCBIN_U32("graphics/pokemon/spearow/anim_front.4bpp.lz"); - const u32 gMonPalette_Spearow[] = INCBIN_U32("graphics/pokemon/spearow/normal.gbapal.lz"); + const u16 gMonPalette_Spearow[] = INCBIN_U16("graphics/pokemon/spearow/normal.gbapal"); const u32 gMonBackPic_Spearow[] = INCBIN_U32("graphics/pokemon/spearow/back.4bpp.lz"); - const u32 gMonShinyPalette_Spearow[] = INCBIN_U32("graphics/pokemon/spearow/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Spearow[] = INCBIN_U16("graphics/pokemon/spearow/shiny.gbapal"); #else const u32 gMonFrontPic_Spearow[] = INCBIN_U32("graphics/pokemon/spearow/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Spearow[] = INCBIN_U32("graphics/pokemon/spearow/normal_gba.gbapal.lz"); + const u16 gMonPalette_Spearow[] = INCBIN_U16("graphics/pokemon/spearow/normal_gba.gbapal"); const u32 gMonBackPic_Spearow[] = INCBIN_U32("graphics/pokemon/spearow/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Spearow[] = INCBIN_U32("graphics/pokemon/spearow/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Spearow[] = INCBIN_U16("graphics/pokemon/spearow/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Spearow[] = INCBIN_U8("graphics/pokemon/spearow/icon.4bpp"); @@ -799,21 +799,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Spearow[] = INCBIN_U16("graphics/pokemon/spearow/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Spearow[] = INCBIN_U16("graphics/pokemon/spearow/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Fearow[] = INCBIN_U32("graphics/pokemon/fearow/anim_front.4bpp.lz"); - const u32 gMonPalette_Fearow[] = INCBIN_U32("graphics/pokemon/fearow/normal.gbapal.lz"); + const u16 gMonPalette_Fearow[] = INCBIN_U16("graphics/pokemon/fearow/normal.gbapal"); const u32 gMonBackPic_Fearow[] = INCBIN_U32("graphics/pokemon/fearow/back.4bpp.lz"); - const u32 gMonShinyPalette_Fearow[] = INCBIN_U32("graphics/pokemon/fearow/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Fearow[] = INCBIN_U16("graphics/pokemon/fearow/shiny.gbapal"); #else const u32 gMonFrontPic_Fearow[] = INCBIN_U32("graphics/pokemon/fearow/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Fearow[] = INCBIN_U32("graphics/pokemon/fearow/normal_gba.gbapal.lz"); + const u16 gMonPalette_Fearow[] = INCBIN_U16("graphics/pokemon/fearow/normal_gba.gbapal"); const u32 gMonBackPic_Fearow[] = INCBIN_U32("graphics/pokemon/fearow/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Fearow[] = INCBIN_U32("graphics/pokemon/fearow/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Fearow[] = INCBIN_U16("graphics/pokemon/fearow/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Fearow[] = INCBIN_U8("graphics/pokemon/fearow/icon.4bpp"); @@ -826,8 +826,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Fearow[] = INCBIN_U16("graphics/pokemon/fearow/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Fearow[] = INCBIN_U16("graphics/pokemon/fearow/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SPEAROW @@ -835,14 +835,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_EKANS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Ekans[] = INCBIN_U32("graphics/pokemon/ekans/anim_front.4bpp.lz"); - const u32 gMonPalette_Ekans[] = INCBIN_U32("graphics/pokemon/ekans/normal.gbapal.lz"); + const u16 gMonPalette_Ekans[] = INCBIN_U16("graphics/pokemon/ekans/normal.gbapal"); const u32 gMonBackPic_Ekans[] = INCBIN_U32("graphics/pokemon/ekans/back.4bpp.lz"); - const u32 gMonShinyPalette_Ekans[] = INCBIN_U32("graphics/pokemon/ekans/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Ekans[] = INCBIN_U16("graphics/pokemon/ekans/shiny.gbapal"); #else const u32 gMonFrontPic_Ekans[] = INCBIN_U32("graphics/pokemon/ekans/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Ekans[] = INCBIN_U32("graphics/pokemon/ekans/normal_gba.gbapal.lz"); + const u16 gMonPalette_Ekans[] = INCBIN_U16("graphics/pokemon/ekans/normal_gba.gbapal"); const u32 gMonBackPic_Ekans[] = INCBIN_U32("graphics/pokemon/ekans/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Ekans[] = INCBIN_U32("graphics/pokemon/ekans/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Ekans[] = INCBIN_U16("graphics/pokemon/ekans/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Ekans[] = INCBIN_U8("graphics/pokemon/ekans/icon.4bpp"); @@ -855,21 +855,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Ekans[] = INCBIN_U16("graphics/pokemon/ekans/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Ekans[] = INCBIN_U16("graphics/pokemon/ekans/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Arbok[] = INCBIN_U32("graphics/pokemon/arbok/anim_front.4bpp.lz"); - const u32 gMonPalette_Arbok[] = INCBIN_U32("graphics/pokemon/arbok/normal.gbapal.lz"); + const u16 gMonPalette_Arbok[] = INCBIN_U16("graphics/pokemon/arbok/normal.gbapal"); const u32 gMonBackPic_Arbok[] = INCBIN_U32("graphics/pokemon/arbok/back.4bpp.lz"); - const u32 gMonShinyPalette_Arbok[] = INCBIN_U32("graphics/pokemon/arbok/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Arbok[] = INCBIN_U16("graphics/pokemon/arbok/shiny.gbapal"); #else const u32 gMonFrontPic_Arbok[] = INCBIN_U32("graphics/pokemon/arbok/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Arbok[] = INCBIN_U32("graphics/pokemon/arbok/normal_gba.gbapal.lz"); + const u16 gMonPalette_Arbok[] = INCBIN_U16("graphics/pokemon/arbok/normal_gba.gbapal"); const u32 gMonBackPic_Arbok[] = INCBIN_U32("graphics/pokemon/arbok/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Arbok[] = INCBIN_U32("graphics/pokemon/arbok/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Arbok[] = INCBIN_U16("graphics/pokemon/arbok/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Arbok[] = INCBIN_U8("graphics/pokemon/arbok/icon.4bpp"); @@ -882,8 +882,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Arbok[] = INCBIN_U16("graphics/pokemon/arbok/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Arbok[] = INCBIN_U16("graphics/pokemon/arbok/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_EKANS @@ -892,14 +892,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_GEN_2_CROSS_EVOS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Pichu[] = INCBIN_U32("graphics/pokemon/pichu/anim_front.4bpp.lz"); - const u32 gMonPalette_Pichu[] = INCBIN_U32("graphics/pokemon/pichu/normal.gbapal.lz"); + const u16 gMonPalette_Pichu[] = INCBIN_U16("graphics/pokemon/pichu/normal.gbapal"); const u32 gMonBackPic_Pichu[] = INCBIN_U32("graphics/pokemon/pichu/back.4bpp.lz"); - const u32 gMonShinyPalette_Pichu[] = INCBIN_U32("graphics/pokemon/pichu/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Pichu[] = INCBIN_U16("graphics/pokemon/pichu/shiny.gbapal"); #else const u32 gMonFrontPic_Pichu[] = INCBIN_U32("graphics/pokemon/pichu/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Pichu[] = INCBIN_U32("graphics/pokemon/pichu/normal_gba.gbapal.lz"); + const u16 gMonPalette_Pichu[] = INCBIN_U16("graphics/pokemon/pichu/normal_gba.gbapal"); const u32 gMonBackPic_Pichu[] = INCBIN_U32("graphics/pokemon/pichu/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Pichu[] = INCBIN_U32("graphics/pokemon/pichu/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Pichu[] = INCBIN_U16("graphics/pokemon/pichu/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Pichu[] = INCBIN_U8("graphics/pokemon/pichu/icon.4bpp"); @@ -912,35 +912,35 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Pichu[] = INCBIN_U16("graphics/pokemon/pichu/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Pichu[] = INCBIN_U16("graphics/pokemon/pichu/overworld_shiny.gbapal"); #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 u16 gMonPalette_PichuSpikyEared[] = INCBIN_U16("graphics/pokemon/pichu/spiky_eared/normal.gbapal"); 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 u16 gMonShinyPalette_PichuSpikyEared[] = INCBIN_U16("graphics/pokemon/pichu/spiky_eared/shiny.gbapal"); 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"); + const u16 gOverworldPalette_PichuSpikyEared[] = INCBIN_U16("graphics/pokemon/pichu/spiky_eared/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_PichuSpikyEared[] = INCBIN_U16("graphics/pokemon/pichu/spiky_eared/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_2_CROSS_EVOS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Pikachu[] = INCBIN_U32("graphics/pokemon/pikachu/anim_front.4bpp.lz"); - const u32 gMonPalette_Pikachu[] = INCBIN_U32("graphics/pokemon/pikachu/normal.gbapal.lz"); + const u16 gMonPalette_Pikachu[] = INCBIN_U16("graphics/pokemon/pikachu/normal.gbapal"); const u32 gMonBackPic_Pikachu[] = INCBIN_U32("graphics/pokemon/pikachu/back.4bpp.lz"); - const u32 gMonShinyPalette_Pikachu[] = INCBIN_U32("graphics/pokemon/pikachu/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Pikachu[] = INCBIN_U16("graphics/pokemon/pikachu/shiny.gbapal"); #else const u32 gMonFrontPic_Pikachu[] = INCBIN_U32("graphics/pokemon/pikachu/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Pikachu[] = INCBIN_U32("graphics/pokemon/pikachu/normal_gba.gbapal.lz"); + const u16 gMonPalette_Pikachu[] = INCBIN_U16("graphics/pokemon/pikachu/normal_gba.gbapal"); const u32 gMonBackPic_Pikachu[] = INCBIN_U32("graphics/pokemon/pikachu/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Pikachu[] = INCBIN_U32("graphics/pokemon/pikachu/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Pikachu[] = INCBIN_U16("graphics/pokemon/pikachu/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Pikachu[] = INCBIN_U8("graphics/pokemon/pikachu/icon.4bpp"); @@ -953,8 +953,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Pikachu[] = INCBIN_U16("graphics/pokemon/pikachu/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Pikachu[] = INCBIN_U16("graphics/pokemon/pikachu/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -971,39 +971,39 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_COSPLAY_PIKACHU_FORMS const u32 gMonFrontPic_PikachuCosplay[] = INCBIN_U32("graphics/pokemon/pikachu/cosplay/front.4bpp.lz"); - const u32 gMonPalette_PikachuCosplay[] = INCBIN_U32("graphics/pokemon/pikachu/cosplay/normal.gbapal.lz"); + const u16 gMonPalette_PikachuCosplay[] = INCBIN_U16("graphics/pokemon/pikachu/cosplay/normal.gbapal"); const u32 gMonBackPic_PikachuCosplay[] = INCBIN_U32("graphics/pokemon/pikachu/cosplay/back.4bpp.lz"); - const u32 gMonShinyPalette_PikachuCosplay[] = INCBIN_U32("graphics/pokemon/pikachu/cosplay/shiny.gbapal.lz"); + const u16 gMonShinyPalette_PikachuCosplay[] = INCBIN_U16("graphics/pokemon/pikachu/cosplay/shiny.gbapal"); const u8 gMonIcon_PikachuCosplay[] = INCBIN_U8("graphics/pokemon/pikachu/cosplay/icon.4bpp"); const u32 gMonFrontPic_PikachuRockStar[] = INCBIN_U32("graphics/pokemon/pikachu/rock_star/front.4bpp.lz"); - const u32 gMonPalette_PikachuRockStar[] = INCBIN_U32("graphics/pokemon/pikachu/rock_star/normal.gbapal.lz"); + const u16 gMonPalette_PikachuRockStar[] = INCBIN_U16("graphics/pokemon/pikachu/rock_star/normal.gbapal"); const u32 gMonBackPic_PikachuRockStar[] = INCBIN_U32("graphics/pokemon/pikachu/rock_star/back.4bpp.lz"); - const u32 gMonShinyPalette_PikachuRockStar[] = INCBIN_U32("graphics/pokemon/pikachu/rock_star/shiny.gbapal.lz"); + const u16 gMonShinyPalette_PikachuRockStar[] = INCBIN_U16("graphics/pokemon/pikachu/rock_star/shiny.gbapal"); const u8 gMonIcon_PikachuRockStar[] = INCBIN_U8("graphics/pokemon/pikachu/rock_star/icon.4bpp"); const u32 gMonFrontPic_PikachuBelle[] = INCBIN_U32("graphics/pokemon/pikachu/belle/front.4bpp.lz"); - const u32 gMonPalette_PikachuBelle[] = INCBIN_U32("graphics/pokemon/pikachu/belle/normal.gbapal.lz"); + const u16 gMonPalette_PikachuBelle[] = INCBIN_U16("graphics/pokemon/pikachu/belle/normal.gbapal"); const u32 gMonBackPic_PikachuBelle[] = INCBIN_U32("graphics/pokemon/pikachu/belle/back.4bpp.lz"); - const u32 gMonShinyPalette_PikachuBelle[] = INCBIN_U32("graphics/pokemon/pikachu/belle/shiny.gbapal.lz"); + const u16 gMonShinyPalette_PikachuBelle[] = INCBIN_U16("graphics/pokemon/pikachu/belle/shiny.gbapal"); const u8 gMonIcon_PikachuBelle[] = INCBIN_U8("graphics/pokemon/pikachu/belle/icon.4bpp"); const u32 gMonFrontPic_PikachuPopStar[] = INCBIN_U32("graphics/pokemon/pikachu/pop_star/front.4bpp.lz"); - const u32 gMonPalette_PikachuPopStar[] = INCBIN_U32("graphics/pokemon/pikachu/pop_star/normal.gbapal.lz"); + const u16 gMonPalette_PikachuPopStar[] = INCBIN_U16("graphics/pokemon/pikachu/pop_star/normal.gbapal"); const u32 gMonBackPic_PikachuPopStar[] = INCBIN_U32("graphics/pokemon/pikachu/pop_star/back.4bpp.lz"); - const u32 gMonShinyPalette_PikachuPopStar[] = INCBIN_U32("graphics/pokemon/pikachu/pop_star/shiny.gbapal.lz"); + const u16 gMonShinyPalette_PikachuPopStar[] = INCBIN_U16("graphics/pokemon/pikachu/pop_star/shiny.gbapal"); const u8 gMonIcon_PikachuPopStar[] = INCBIN_U8("graphics/pokemon/pikachu/pop_star/icon.4bpp"); const u32 gMonFrontPic_PikachuPhD[] = INCBIN_U32("graphics/pokemon/pikachu/phd/front.4bpp.lz"); - const u32 gMonPalette_PikachuPhD[] = INCBIN_U32("graphics/pokemon/pikachu/phd/normal.gbapal.lz"); + const u16 gMonPalette_PikachuPhD[] = INCBIN_U16("graphics/pokemon/pikachu/phd/normal.gbapal"); const u32 gMonBackPic_PikachuPhD[] = INCBIN_U32("graphics/pokemon/pikachu/phd/back.4bpp.lz"); - const u32 gMonShinyPalette_PikachuPhD[] = INCBIN_U32("graphics/pokemon/pikachu/phd/shiny.gbapal.lz"); + const u16 gMonShinyPalette_PikachuPhD[] = INCBIN_U16("graphics/pokemon/pikachu/phd/shiny.gbapal"); const u8 gMonIcon_PikachuPhD[] = INCBIN_U8("graphics/pokemon/pikachu/phd/icon.4bpp"); const u32 gMonFrontPic_PikachuLibre[] = INCBIN_U32("graphics/pokemon/pikachu/libre/front.4bpp.lz"); - const u32 gMonPalette_PikachuLibre[] = INCBIN_U32("graphics/pokemon/pikachu/libre/normal.gbapal.lz"); + const u16 gMonPalette_PikachuLibre[] = INCBIN_U16("graphics/pokemon/pikachu/libre/normal.gbapal"); 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 u16 gMonShinyPalette_PikachuLibre[] = INCBIN_U16("graphics/pokemon/pikachu/libre/shiny.gbapal"); const u8 gMonIcon_PikachuLibre[] = INCBIN_U8("graphics/pokemon/pikachu/libre/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS @@ -1018,51 +1018,51 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_CAP_PIKACHU_FORMS const u32 gMonFrontPic_PikachuOriginal[] = INCBIN_U32("graphics/pokemon/pikachu/original/front.4bpp.lz"); - const u32 gMonPalette_PikachuOriginal[] = INCBIN_U32("graphics/pokemon/pikachu/original/normal.gbapal.lz"); + const u16 gMonPalette_PikachuOriginal[] = INCBIN_U16("graphics/pokemon/pikachu/original/normal.gbapal"); const u32 gMonBackPic_PikachuOriginal[] = INCBIN_U32("graphics/pokemon/pikachu/original/back.4bpp.lz"); - const u32 gMonShinyPalette_PikachuOriginal[] = INCBIN_U32("graphics/pokemon/pikachu/original/shiny.gbapal.lz"); + const u16 gMonShinyPalette_PikachuOriginal[] = INCBIN_U16("graphics/pokemon/pikachu/original/shiny.gbapal"); const u8 gMonIcon_PikachuOriginal[] = INCBIN_U8("graphics/pokemon/pikachu/original/icon.4bpp"); const u32 gMonFrontPic_PikachuHoenn[] = INCBIN_U32("graphics/pokemon/pikachu/hoenn/front.4bpp.lz"); - const u32 gMonPalette_PikachuHoenn[] = INCBIN_U32("graphics/pokemon/pikachu/hoenn/normal.gbapal.lz"); + const u16 gMonPalette_PikachuHoenn[] = INCBIN_U16("graphics/pokemon/pikachu/hoenn/normal.gbapal"); const u32 gMonBackPic_PikachuHoenn[] = INCBIN_U32("graphics/pokemon/pikachu/hoenn/back.4bpp.lz"); - const u32 gMonShinyPalette_PikachuHoenn[] = INCBIN_U32("graphics/pokemon/pikachu/hoenn/shiny.gbapal.lz"); + const u16 gMonShinyPalette_PikachuHoenn[] = INCBIN_U16("graphics/pokemon/pikachu/hoenn/shiny.gbapal"); const u8 gMonIcon_PikachuHoenn[] = INCBIN_U8("graphics/pokemon/pikachu/hoenn/icon.4bpp"); const u32 gMonFrontPic_PikachuSinnoh[] = INCBIN_U32("graphics/pokemon/pikachu/sinnoh/front.4bpp.lz"); - const u32 gMonPalette_PikachuSinnoh[] = INCBIN_U32("graphics/pokemon/pikachu/sinnoh/normal.gbapal.lz"); + const u16 gMonPalette_PikachuSinnoh[] = INCBIN_U16("graphics/pokemon/pikachu/sinnoh/normal.gbapal"); const u32 gMonBackPic_PikachuSinnoh[] = INCBIN_U32("graphics/pokemon/pikachu/sinnoh/back.4bpp.lz"); - const u32 gMonShinyPalette_PikachuSinnoh[] = INCBIN_U32("graphics/pokemon/pikachu/sinnoh/shiny.gbapal.lz"); + const u16 gMonShinyPalette_PikachuSinnoh[] = INCBIN_U16("graphics/pokemon/pikachu/sinnoh/shiny.gbapal"); const u8 gMonIcon_PikachuSinnoh[] = INCBIN_U8("graphics/pokemon/pikachu/sinnoh/icon.4bpp"); const u32 gMonFrontPic_PikachuUnova[] = INCBIN_U32("graphics/pokemon/pikachu/unova/front.4bpp.lz"); - const u32 gMonPalette_PikachuUnova[] = INCBIN_U32("graphics/pokemon/pikachu/unova/normal.gbapal.lz"); + const u16 gMonPalette_PikachuUnova[] = INCBIN_U16("graphics/pokemon/pikachu/unova/normal.gbapal"); const u32 gMonBackPic_PikachuUnova[] = INCBIN_U32("graphics/pokemon/pikachu/unova/back.4bpp.lz"); - const u32 gMonShinyPalette_PikachuUnova[] = INCBIN_U32("graphics/pokemon/pikachu/unova/shiny.gbapal.lz"); + const u16 gMonShinyPalette_PikachuUnova[] = INCBIN_U16("graphics/pokemon/pikachu/unova/shiny.gbapal"); const u8 gMonIcon_PikachuUnova[] = INCBIN_U8("graphics/pokemon/pikachu/unova/icon.4bpp"); const u32 gMonFrontPic_PikachuKalos[] = INCBIN_U32("graphics/pokemon/pikachu/kalos/front.4bpp.lz"); - const u32 gMonPalette_PikachuKalos[] = INCBIN_U32("graphics/pokemon/pikachu/kalos/normal.gbapal.lz"); + const u16 gMonPalette_PikachuKalos[] = INCBIN_U16("graphics/pokemon/pikachu/kalos/normal.gbapal"); const u32 gMonBackPic_PikachuKalos[] = INCBIN_U32("graphics/pokemon/pikachu/kalos/back.4bpp.lz"); - const u32 gMonShinyPalette_PikachuKalos[] = INCBIN_U32("graphics/pokemon/pikachu/kalos/shiny.gbapal.lz"); + const u16 gMonShinyPalette_PikachuKalos[] = INCBIN_U16("graphics/pokemon/pikachu/kalos/shiny.gbapal"); const u8 gMonIcon_PikachuKalos[] = INCBIN_U8("graphics/pokemon/pikachu/kalos/icon.4bpp"); const u32 gMonFrontPic_PikachuAlola[] = INCBIN_U32("graphics/pokemon/pikachu/alola/front.4bpp.lz"); - const u32 gMonPalette_PikachuAlola[] = INCBIN_U32("graphics/pokemon/pikachu/alola/normal.gbapal.lz"); + const u16 gMonPalette_PikachuAlola[] = INCBIN_U16("graphics/pokemon/pikachu/alola/normal.gbapal"); const u32 gMonBackPic_PikachuAlola[] = INCBIN_U32("graphics/pokemon/pikachu/alola/back.4bpp.lz"); - const u32 gMonShinyPalette_PikachuAlola[] = INCBIN_U32("graphics/pokemon/pikachu/alola/shiny.gbapal.lz"); + const u16 gMonShinyPalette_PikachuAlola[] = INCBIN_U16("graphics/pokemon/pikachu/alola/shiny.gbapal"); const u8 gMonIcon_PikachuAlola[] = INCBIN_U8("graphics/pokemon/pikachu/alola/icon.4bpp"); const u32 gMonFrontPic_PikachuPartner[] = INCBIN_U32("graphics/pokemon/pikachu/partner/front.4bpp.lz"); - const u32 gMonPalette_PikachuPartner[] = INCBIN_U32("graphics/pokemon/pikachu/partner/normal.gbapal.lz"); + const u16 gMonPalette_PikachuPartner[] = INCBIN_U16("graphics/pokemon/pikachu/partner/normal.gbapal"); const u32 gMonBackPic_PikachuPartner[] = INCBIN_U32("graphics/pokemon/pikachu/partner/back.4bpp.lz"); - const u32 gMonShinyPalette_PikachuPartner[] = INCBIN_U32("graphics/pokemon/pikachu/partner/shiny.gbapal.lz"); + const u16 gMonShinyPalette_PikachuPartner[] = INCBIN_U16("graphics/pokemon/pikachu/partner/shiny.gbapal"); const u8 gMonIcon_PikachuPartner[] = INCBIN_U8("graphics/pokemon/pikachu/partner/icon.4bpp"); const u32 gMonFrontPic_PikachuWorld[] = INCBIN_U32("graphics/pokemon/pikachu/world/front.4bpp.lz"); - const u32 gMonPalette_PikachuWorld[] = INCBIN_U32("graphics/pokemon/pikachu/world/normal.gbapal.lz"); + const u16 gMonPalette_PikachuWorld[] = INCBIN_U16("graphics/pokemon/pikachu/world/normal.gbapal"); const u32 gMonBackPic_PikachuWorld[] = INCBIN_U32("graphics/pokemon/pikachu/world/back.4bpp.lz"); - const u32 gMonShinyPalette_PikachuWorld[] = INCBIN_U32("graphics/pokemon/pikachu/world/shiny.gbapal.lz"); + const u16 gMonShinyPalette_PikachuWorld[] = INCBIN_U16("graphics/pokemon/pikachu/world/shiny.gbapal"); const u8 gMonIcon_PikachuWorld[] = INCBIN_U8("graphics/pokemon/pikachu/world/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS @@ -1080,14 +1080,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_GIGANTAMAX_FORMS const u32 gMonFrontPic_PikachuGmax[] = INCBIN_U32("graphics/pokemon/pikachu/gmax/front.4bpp.lz"); const u32 gMonBackPic_PikachuGmax[] = INCBIN_U32("graphics/pokemon/pikachu/gmax/back.4bpp.lz"); - const u32 gMonPalette_PikachuGmax[] = INCBIN_U32("graphics/pokemon/pikachu/gmax/normal.gbapal.lz"); - const u32 gMonShinyPalette_PikachuGmax[] = INCBIN_U32("graphics/pokemon/pikachu/gmax/shiny.gbapal.lz"); + const u16 gMonPalette_PikachuGmax[] = INCBIN_U16("graphics/pokemon/pikachu/gmax/normal.gbapal"); + const u16 gMonShinyPalette_PikachuGmax[] = INCBIN_U16("graphics/pokemon/pikachu/gmax/shiny.gbapal"); const u8 gMonIcon_PikachuGmax[] = INCBIN_U8("graphics/pokemon/pikachu/gmax/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS // const u32 gObjectEventPic_PikachuGmax[] = INCBIN_COMP("graphics/pokemon/pikachu/gmax/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - // const u32 gOverworldPalette_PikachuGmax[] = INCBIN_U32("graphics/pokemon/pikachu/gmax/overworld_normal.gbapal.lz"); - // const u32 gShinyOverworldPalette_PikachuGmax[] = INCBIN_U32("graphics/pokemon/pikachu/gmax/overworld_shiny.gbapal.lz"); + // const u16 gOverworldPalette_PikachuGmax[] = INCBIN_U16("graphics/pokemon/pikachu/gmax/overworld_normal.gbapal"); + // const u16 gShinyOverworldPalette_PikachuGmax[] = INCBIN_U16("graphics/pokemon/pikachu/gmax/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GIGANTAMAX_FORMS @@ -1099,14 +1099,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Raichu[] = INCBIN_U32("graphics/pokemon/raichu/anim_front.4bpp.lz"); - const u32 gMonPalette_Raichu[] = INCBIN_U32("graphics/pokemon/raichu/normal.gbapal.lz"); + const u16 gMonPalette_Raichu[] = INCBIN_U16("graphics/pokemon/raichu/normal.gbapal"); const u32 gMonBackPic_Raichu[] = INCBIN_U32("graphics/pokemon/raichu/back.4bpp.lz"); - const u32 gMonShinyPalette_Raichu[] = INCBIN_U32("graphics/pokemon/raichu/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Raichu[] = INCBIN_U16("graphics/pokemon/raichu/shiny.gbapal"); #else const u32 gMonFrontPic_Raichu[] = INCBIN_U32("graphics/pokemon/raichu/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Raichu[] = INCBIN_U32("graphics/pokemon/raichu/normal_gba.gbapal.lz"); + const u16 gMonPalette_Raichu[] = INCBIN_U16("graphics/pokemon/raichu/normal_gba.gbapal"); const u32 gMonBackPic_Raichu[] = INCBIN_U32("graphics/pokemon/raichu/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Raichu[] = INCBIN_U32("graphics/pokemon/raichu/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Raichu[] = INCBIN_U16("graphics/pokemon/raichu/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Raichu[] = INCBIN_U8("graphics/pokemon/raichu/icon.4bpp"); @@ -1119,8 +1119,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Raichu[] = INCBIN_U16("graphics/pokemon/raichu/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Raichu[] = INCBIN_U16("graphics/pokemon/raichu/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -1133,15 +1133,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_ALOLAN_FORMS const u32 gMonFrontPic_RaichuAlola[] = INCBIN_U32("graphics/pokemon/raichu/alola/front.4bpp.lz"); - const u32 gMonPalette_RaichuAlola[] = INCBIN_U32("graphics/pokemon/raichu/alola/normal.gbapal.lz"); + const u16 gMonPalette_RaichuAlola[] = INCBIN_U16("graphics/pokemon/raichu/alola/normal.gbapal"); const u32 gMonBackPic_RaichuAlola[] = INCBIN_U32("graphics/pokemon/raichu/alola/back.4bpp.lz"); - const u32 gMonShinyPalette_RaichuAlola[] = INCBIN_U32("graphics/pokemon/raichu/alola/shiny.gbapal.lz"); + const u16 gMonShinyPalette_RaichuAlola[] = INCBIN_U16("graphics/pokemon/raichu/alola/shiny.gbapal"); const u8 gMonIcon_RaichuAlola[] = INCBIN_U8("graphics/pokemon/raichu/alola/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS const u32 gObjectEventPic_RaichuAlola[] = INCBIN_COMP("graphics/pokemon/raichu/alola/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - const u32 gOverworldPalette_RaichuAlola[] = INCBIN_U32("graphics/pokemon/raichu/alola/overworld_normal.gbapal.lz"); - const u32 gShinyOverworldPalette_RaichuAlola[] = INCBIN_U32("graphics/pokemon/raichu/alola/overworld_shiny.gbapal.lz"); + const u16 gOverworldPalette_RaichuAlola[] = INCBIN_U16("graphics/pokemon/raichu/alola/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_RaichuAlola[] = INCBIN_U16("graphics/pokemon/raichu/alola/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_ALOLAN_FORMS @@ -1150,14 +1150,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_SANDSHREW #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Sandshrew[] = INCBIN_U32("graphics/pokemon/sandshrew/anim_front.4bpp.lz"); - const u32 gMonPalette_Sandshrew[] = INCBIN_U32("graphics/pokemon/sandshrew/normal.gbapal.lz"); + const u16 gMonPalette_Sandshrew[] = INCBIN_U16("graphics/pokemon/sandshrew/normal.gbapal"); const u32 gMonBackPic_Sandshrew[] = INCBIN_U32("graphics/pokemon/sandshrew/back.4bpp.lz"); - const u32 gMonShinyPalette_Sandshrew[] = INCBIN_U32("graphics/pokemon/sandshrew/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Sandshrew[] = INCBIN_U16("graphics/pokemon/sandshrew/shiny.gbapal"); #else const u32 gMonFrontPic_Sandshrew[] = INCBIN_U32("graphics/pokemon/sandshrew/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Sandshrew[] = INCBIN_U32("graphics/pokemon/sandshrew/normal_gba.gbapal.lz"); + const u16 gMonPalette_Sandshrew[] = INCBIN_U16("graphics/pokemon/sandshrew/normal_gba.gbapal"); const u32 gMonBackPic_Sandshrew[] = INCBIN_U32("graphics/pokemon/sandshrew/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Sandshrew[] = INCBIN_U32("graphics/pokemon/sandshrew/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Sandshrew[] = INCBIN_U16("graphics/pokemon/sandshrew/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Sandshrew[] = INCBIN_U8("graphics/pokemon/sandshrew/icon.4bpp"); @@ -1170,21 +1170,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Sandshrew[] = INCBIN_U16("graphics/pokemon/sandshrew/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Sandshrew[] = INCBIN_U16("graphics/pokemon/sandshrew/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Sandslash[] = INCBIN_U32("graphics/pokemon/sandslash/anim_front.4bpp.lz"); - const u32 gMonPalette_Sandslash[] = INCBIN_U32("graphics/pokemon/sandslash/normal.gbapal.lz"); + const u16 gMonPalette_Sandslash[] = INCBIN_U16("graphics/pokemon/sandslash/normal.gbapal"); const u32 gMonBackPic_Sandslash[] = INCBIN_U32("graphics/pokemon/sandslash/back.4bpp.lz"); - const u32 gMonShinyPalette_Sandslash[] = INCBIN_U32("graphics/pokemon/sandslash/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Sandslash[] = INCBIN_U16("graphics/pokemon/sandslash/shiny.gbapal"); #else const u32 gMonFrontPic_Sandslash[] = INCBIN_U32("graphics/pokemon/sandslash/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Sandslash[] = INCBIN_U32("graphics/pokemon/sandslash/normal_gba.gbapal.lz"); + const u16 gMonPalette_Sandslash[] = INCBIN_U16("graphics/pokemon/sandslash/normal_gba.gbapal"); const u32 gMonBackPic_Sandslash[] = INCBIN_U32("graphics/pokemon/sandslash/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Sandslash[] = INCBIN_U32("graphics/pokemon/sandslash/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Sandslash[] = INCBIN_U16("graphics/pokemon/sandslash/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Sandslash[] = INCBIN_U8("graphics/pokemon/sandslash/icon.4bpp"); @@ -1197,35 +1197,35 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Sandslash[] = INCBIN_U16("graphics/pokemon/sandslash/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Sandslash[] = INCBIN_U16("graphics/pokemon/sandslash/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if P_ALOLAN_FORMS const u32 gMonFrontPic_SandshrewAlola[] = INCBIN_U32("graphics/pokemon/sandshrew/alola/front.4bpp.lz"); - const u32 gMonPalette_SandshrewAlola[] = INCBIN_U32("graphics/pokemon/sandshrew/alola/normal.gbapal.lz"); + const u16 gMonPalette_SandshrewAlola[] = INCBIN_U16("graphics/pokemon/sandshrew/alola/normal.gbapal"); const u32 gMonBackPic_SandshrewAlola[] = INCBIN_U32("graphics/pokemon/sandshrew/alola/back.4bpp.lz"); - const u32 gMonShinyPalette_SandshrewAlola[] = INCBIN_U32("graphics/pokemon/sandshrew/alola/shiny.gbapal.lz"); + const u16 gMonShinyPalette_SandshrewAlola[] = INCBIN_U16("graphics/pokemon/sandshrew/alola/shiny.gbapal"); const u8 gMonIcon_SandshrewAlola[] = INCBIN_U8("graphics/pokemon/sandshrew/alola/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS const u32 gObjectEventPic_SandshrewAlola[] = INCBIN_COMP("graphics/pokemon/sandshrew/alola/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - const u32 gOverworldPalette_SandshrewAlola[] = INCBIN_U32("graphics/pokemon/sandshrew/alola/overworld_normal.gbapal.lz"); - const u32 gShinyOverworldPalette_SandshrewAlola[] = INCBIN_U32("graphics/pokemon/sandshrew/alola/overworld_shiny.gbapal.lz"); + const u16 gOverworldPalette_SandshrewAlola[] = INCBIN_U16("graphics/pokemon/sandshrew/alola/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_SandshrewAlola[] = INCBIN_U16("graphics/pokemon/sandshrew/alola/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_SandslashAlola[] = INCBIN_U32("graphics/pokemon/sandslash/alola/front.4bpp.lz"); - const u32 gMonPalette_SandslashAlola[] = INCBIN_U32("graphics/pokemon/sandslash/alola/normal.gbapal.lz"); + const u16 gMonPalette_SandslashAlola[] = INCBIN_U16("graphics/pokemon/sandslash/alola/normal.gbapal"); const u32 gMonBackPic_SandslashAlola[] = INCBIN_U32("graphics/pokemon/sandslash/alola/back.4bpp.lz"); - const u32 gMonShinyPalette_SandslashAlola[] = INCBIN_U32("graphics/pokemon/sandslash/alola/shiny.gbapal.lz"); + const u16 gMonShinyPalette_SandslashAlola[] = INCBIN_U16("graphics/pokemon/sandslash/alola/shiny.gbapal"); const u8 gMonIcon_SandslashAlola[] = INCBIN_U8("graphics/pokemon/sandslash/alola/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS const u32 gObjectEventPic_SandslashAlola[] = INCBIN_COMP("graphics/pokemon/sandslash/alola/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - const u32 gOverworldPalette_SandslashAlola[] = INCBIN_U32("graphics/pokemon/sandslash/alola/overworld_normal.gbapal.lz"); - const u32 gShinyOverworldPalette_SandslashAlola[] = INCBIN_U32("graphics/pokemon/sandslash/alola/overworld_shiny.gbapal.lz"); + const u16 gOverworldPalette_SandslashAlola[] = INCBIN_U16("graphics/pokemon/sandslash/alola/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_SandslashAlola[] = INCBIN_U16("graphics/pokemon/sandslash/alola/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_ALOLAN_FORMS @@ -1234,14 +1234,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_NIDORAN #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_NidoranF[] = INCBIN_U32("graphics/pokemon/nidoran_f/anim_front.4bpp.lz"); - const u32 gMonPalette_NidoranF[] = INCBIN_U32("graphics/pokemon/nidoran_f/normal.gbapal.lz"); + const u16 gMonPalette_NidoranF[] = INCBIN_U16("graphics/pokemon/nidoran_f/normal.gbapal"); const u32 gMonBackPic_NidoranF[] = INCBIN_U32("graphics/pokemon/nidoran_f/back.4bpp.lz"); - const u32 gMonShinyPalette_NidoranF[] = INCBIN_U32("graphics/pokemon/nidoran_f/shiny.gbapal.lz"); + const u16 gMonShinyPalette_NidoranF[] = INCBIN_U16("graphics/pokemon/nidoran_f/shiny.gbapal"); #else const u32 gMonFrontPic_NidoranF[] = INCBIN_U32("graphics/pokemon/nidoran_f/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_NidoranF[] = INCBIN_U32("graphics/pokemon/nidoran_f/normal_gba.gbapal.lz"); + const u16 gMonPalette_NidoranF[] = INCBIN_U16("graphics/pokemon/nidoran_f/normal_gba.gbapal"); const u32 gMonBackPic_NidoranF[] = INCBIN_U32("graphics/pokemon/nidoran_f/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_NidoranF[] = INCBIN_U32("graphics/pokemon/nidoran_f/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_NidoranF[] = INCBIN_U16("graphics/pokemon/nidoran_f/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_NidoranF[] = INCBIN_U8("graphics/pokemon/nidoran_f/icon.4bpp"); @@ -1254,21 +1254,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_NidoranF[] = INCBIN_U16("graphics/pokemon/nidoran_f/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_NidoranF[] = INCBIN_U16("graphics/pokemon/nidoran_f/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Nidorina[] = INCBIN_U32("graphics/pokemon/nidorina/anim_front.4bpp.lz"); - const u32 gMonPalette_Nidorina[] = INCBIN_U32("graphics/pokemon/nidorina/normal.gbapal.lz"); + const u16 gMonPalette_Nidorina[] = INCBIN_U16("graphics/pokemon/nidorina/normal.gbapal"); const u32 gMonBackPic_Nidorina[] = INCBIN_U32("graphics/pokemon/nidorina/back.4bpp.lz"); - const u32 gMonShinyPalette_Nidorina[] = INCBIN_U32("graphics/pokemon/nidorina/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Nidorina[] = INCBIN_U16("graphics/pokemon/nidorina/shiny.gbapal"); #else const u32 gMonFrontPic_Nidorina[] = INCBIN_U32("graphics/pokemon/nidorina/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Nidorina[] = INCBIN_U32("graphics/pokemon/nidorina/normal_gba.gbapal.lz"); + const u16 gMonPalette_Nidorina[] = INCBIN_U16("graphics/pokemon/nidorina/normal_gba.gbapal"); const u32 gMonBackPic_Nidorina[] = INCBIN_U32("graphics/pokemon/nidorina/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Nidorina[] = INCBIN_U32("graphics/pokemon/nidorina/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Nidorina[] = INCBIN_U16("graphics/pokemon/nidorina/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Nidorina[] = INCBIN_U8("graphics/pokemon/nidorina/icon.4bpp"); @@ -1281,21 +1281,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Nidorina[] = INCBIN_U16("graphics/pokemon/nidorina/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Nidorina[] = INCBIN_U16("graphics/pokemon/nidorina/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Nidoqueen[] = INCBIN_U32("graphics/pokemon/nidoqueen/anim_front.4bpp.lz"); - const u32 gMonPalette_Nidoqueen[] = INCBIN_U32("graphics/pokemon/nidoqueen/normal.gbapal.lz"); + const u16 gMonPalette_Nidoqueen[] = INCBIN_U16("graphics/pokemon/nidoqueen/normal.gbapal"); const u32 gMonBackPic_Nidoqueen[] = INCBIN_U32("graphics/pokemon/nidoqueen/back.4bpp.lz"); - const u32 gMonShinyPalette_Nidoqueen[] = INCBIN_U32("graphics/pokemon/nidoqueen/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Nidoqueen[] = INCBIN_U16("graphics/pokemon/nidoqueen/shiny.gbapal"); #else const u32 gMonFrontPic_Nidoqueen[] = INCBIN_U32("graphics/pokemon/nidoqueen/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Nidoqueen[] = INCBIN_U32("graphics/pokemon/nidoqueen/normal_gba.gbapal.lz"); + const u16 gMonPalette_Nidoqueen[] = INCBIN_U16("graphics/pokemon/nidoqueen/normal_gba.gbapal"); const u32 gMonBackPic_Nidoqueen[] = INCBIN_U32("graphics/pokemon/nidoqueen/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Nidoqueen[] = INCBIN_U32("graphics/pokemon/nidoqueen/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Nidoqueen[] = INCBIN_U16("graphics/pokemon/nidoqueen/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Nidoqueen[] = INCBIN_U8("graphics/pokemon/nidoqueen/icon.4bpp"); @@ -1308,21 +1308,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Nidoqueen[] = INCBIN_U16("graphics/pokemon/nidoqueen/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Nidoqueen[] = INCBIN_U16("graphics/pokemon/nidoqueen/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_NidoranM[] = INCBIN_U32("graphics/pokemon/nidoran_m/anim_front.4bpp.lz"); - const u32 gMonPalette_NidoranM[] = INCBIN_U32("graphics/pokemon/nidoran_m/normal.gbapal.lz"); + const u16 gMonPalette_NidoranM[] = INCBIN_U16("graphics/pokemon/nidoran_m/normal.gbapal"); const u32 gMonBackPic_NidoranM[] = INCBIN_U32("graphics/pokemon/nidoran_m/back.4bpp.lz"); - const u32 gMonShinyPalette_NidoranM[] = INCBIN_U32("graphics/pokemon/nidoran_m/shiny.gbapal.lz"); + const u16 gMonShinyPalette_NidoranM[] = INCBIN_U16("graphics/pokemon/nidoran_m/shiny.gbapal"); #else const u32 gMonFrontPic_NidoranM[] = INCBIN_U32("graphics/pokemon/nidoran_m/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_NidoranM[] = INCBIN_U32("graphics/pokemon/nidoran_m/normal_gba.gbapal.lz"); + const u16 gMonPalette_NidoranM[] = INCBIN_U16("graphics/pokemon/nidoran_m/normal_gba.gbapal"); const u32 gMonBackPic_NidoranM[] = INCBIN_U32("graphics/pokemon/nidoran_m/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_NidoranM[] = INCBIN_U32("graphics/pokemon/nidoran_m/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_NidoranM[] = INCBIN_U16("graphics/pokemon/nidoran_m/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_NidoranM[] = INCBIN_U8("graphics/pokemon/nidoran_m/icon.4bpp"); @@ -1335,21 +1335,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_NidoranM[] = INCBIN_U16("graphics/pokemon/nidoran_m/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_NidoranM[] = INCBIN_U16("graphics/pokemon/nidoran_m/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Nidorino[] = INCBIN_U32("graphics/pokemon/nidorino/anim_front.4bpp.lz"); - const u32 gMonPalette_Nidorino[] = INCBIN_U32("graphics/pokemon/nidorino/normal.gbapal.lz"); + const u16 gMonPalette_Nidorino[] = INCBIN_U16("graphics/pokemon/nidorino/normal.gbapal"); const u32 gMonBackPic_Nidorino[] = INCBIN_U32("graphics/pokemon/nidorino/back.4bpp.lz"); - const u32 gMonShinyPalette_Nidorino[] = INCBIN_U32("graphics/pokemon/nidorino/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Nidorino[] = INCBIN_U16("graphics/pokemon/nidorino/shiny.gbapal"); #else const u32 gMonFrontPic_Nidorino[] = INCBIN_U32("graphics/pokemon/nidorino/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Nidorino[] = INCBIN_U32("graphics/pokemon/nidorino/normal_gba.gbapal.lz"); + const u16 gMonPalette_Nidorino[] = INCBIN_U16("graphics/pokemon/nidorino/normal_gba.gbapal"); const u32 gMonBackPic_Nidorino[] = INCBIN_U32("graphics/pokemon/nidorino/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Nidorino[] = INCBIN_U32("graphics/pokemon/nidorino/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Nidorino[] = INCBIN_U16("graphics/pokemon/nidorino/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Nidorino[] = INCBIN_U8("graphics/pokemon/nidorino/icon.4bpp"); @@ -1362,21 +1362,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Nidorino[] = INCBIN_U16("graphics/pokemon/nidorino/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Nidorino[] = INCBIN_U16("graphics/pokemon/nidorino/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Nidoking[] = INCBIN_U32("graphics/pokemon/nidoking/anim_front.4bpp.lz"); - const u32 gMonPalette_Nidoking[] = INCBIN_U32("graphics/pokemon/nidoking/normal.gbapal.lz"); + const u16 gMonPalette_Nidoking[] = INCBIN_U16("graphics/pokemon/nidoking/normal.gbapal"); const u32 gMonBackPic_Nidoking[] = INCBIN_U32("graphics/pokemon/nidoking/back.4bpp.lz"); - const u32 gMonShinyPalette_Nidoking[] = INCBIN_U32("graphics/pokemon/nidoking/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Nidoking[] = INCBIN_U16("graphics/pokemon/nidoking/shiny.gbapal"); #else const u32 gMonFrontPic_Nidoking[] = INCBIN_U32("graphics/pokemon/nidoking/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Nidoking[] = INCBIN_U32("graphics/pokemon/nidoking/normal_gba.gbapal.lz"); + const u16 gMonPalette_Nidoking[] = INCBIN_U16("graphics/pokemon/nidoking/normal_gba.gbapal"); const u32 gMonBackPic_Nidoking[] = INCBIN_U32("graphics/pokemon/nidoking/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Nidoking[] = INCBIN_U32("graphics/pokemon/nidoking/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Nidoking[] = INCBIN_U16("graphics/pokemon/nidoking/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Nidoking[] = INCBIN_U8("graphics/pokemon/nidoking/icon.4bpp"); @@ -1389,8 +1389,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Nidoking[] = INCBIN_U16("graphics/pokemon/nidoking/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Nidoking[] = INCBIN_U16("graphics/pokemon/nidoking/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_NIDORAN @@ -1399,14 +1399,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_GEN_2_CROSS_EVOS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Cleffa[] = INCBIN_U32("graphics/pokemon/cleffa/anim_front.4bpp.lz"); - const u32 gMonPalette_Cleffa[] = INCBIN_U32("graphics/pokemon/cleffa/normal.gbapal.lz"); + const u16 gMonPalette_Cleffa[] = INCBIN_U16("graphics/pokemon/cleffa/normal.gbapal"); const u32 gMonBackPic_Cleffa[] = INCBIN_U32("graphics/pokemon/cleffa/back.4bpp.lz"); - const u32 gMonShinyPalette_Cleffa[] = INCBIN_U32("graphics/pokemon/cleffa/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Cleffa[] = INCBIN_U16("graphics/pokemon/cleffa/shiny.gbapal"); #else const u32 gMonFrontPic_Cleffa[] = INCBIN_U32("graphics/pokemon/cleffa/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Cleffa[] = INCBIN_U32("graphics/pokemon/cleffa/normal_gba.gbapal.lz"); + const u16 gMonPalette_Cleffa[] = INCBIN_U16("graphics/pokemon/cleffa/normal_gba.gbapal"); const u32 gMonBackPic_Cleffa[] = INCBIN_U32("graphics/pokemon/cleffa/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Cleffa[] = INCBIN_U32("graphics/pokemon/cleffa/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Cleffa[] = INCBIN_U16("graphics/pokemon/cleffa/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Cleffa[] = INCBIN_U8("graphics/pokemon/cleffa/icon.4bpp"); @@ -1419,22 +1419,22 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Cleffa[] = INCBIN_U16("graphics/pokemon/cleffa/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Cleffa[] = INCBIN_U16("graphics/pokemon/cleffa/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_2_CROSS_EVOS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Clefairy[] = INCBIN_U32("graphics/pokemon/clefairy/anim_front.4bpp.lz"); - const u32 gMonPalette_Clefairy[] = INCBIN_U32("graphics/pokemon/clefairy/normal.gbapal.lz"); + const u16 gMonPalette_Clefairy[] = INCBIN_U16("graphics/pokemon/clefairy/normal.gbapal"); const u32 gMonBackPic_Clefairy[] = INCBIN_U32("graphics/pokemon/clefairy/back.4bpp.lz"); - const u32 gMonShinyPalette_Clefairy[] = INCBIN_U32("graphics/pokemon/clefairy/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Clefairy[] = INCBIN_U16("graphics/pokemon/clefairy/shiny.gbapal"); #else const u32 gMonFrontPic_Clefairy[] = INCBIN_U32("graphics/pokemon/clefairy/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Clefairy[] = INCBIN_U32("graphics/pokemon/clefairy/normal_gba.gbapal.lz"); + const u16 gMonPalette_Clefairy[] = INCBIN_U16("graphics/pokemon/clefairy/normal_gba.gbapal"); const u32 gMonBackPic_Clefairy[] = INCBIN_U32("graphics/pokemon/clefairy/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Clefairy[] = INCBIN_U32("graphics/pokemon/clefairy/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Clefairy[] = INCBIN_U16("graphics/pokemon/clefairy/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Clefairy[] = INCBIN_U8("graphics/pokemon/clefairy/icon.4bpp"); @@ -1447,21 +1447,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Clefairy[] = INCBIN_U16("graphics/pokemon/clefairy/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Clefairy[] = INCBIN_U16("graphics/pokemon/clefairy/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Clefable[] = INCBIN_U32("graphics/pokemon/clefable/anim_front.4bpp.lz"); - const u32 gMonPalette_Clefable[] = INCBIN_U32("graphics/pokemon/clefable/normal.gbapal.lz"); + const u16 gMonPalette_Clefable[] = INCBIN_U16("graphics/pokemon/clefable/normal.gbapal"); const u32 gMonBackPic_Clefable[] = INCBIN_U32("graphics/pokemon/clefable/back.4bpp.lz"); - const u32 gMonShinyPalette_Clefable[] = INCBIN_U32("graphics/pokemon/clefable/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Clefable[] = INCBIN_U16("graphics/pokemon/clefable/shiny.gbapal"); #else const u32 gMonFrontPic_Clefable[] = INCBIN_U32("graphics/pokemon/clefable/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Clefable[] = INCBIN_U32("graphics/pokemon/clefable/normal_gba.gbapal.lz"); + const u16 gMonPalette_Clefable[] = INCBIN_U16("graphics/pokemon/clefable/normal_gba.gbapal"); const u32 gMonBackPic_Clefable[] = INCBIN_U32("graphics/pokemon/clefable/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Clefable[] = INCBIN_U32("graphics/pokemon/clefable/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Clefable[] = INCBIN_U16("graphics/pokemon/clefable/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Clefable[] = INCBIN_U8("graphics/pokemon/clefable/icon.4bpp"); @@ -1474,8 +1474,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Clefable[] = INCBIN_U16("graphics/pokemon/clefable/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Clefable[] = INCBIN_U16("graphics/pokemon/clefable/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_CLEFAIRY @@ -1483,14 +1483,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_VULPIX #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Vulpix[] = INCBIN_U32("graphics/pokemon/vulpix/anim_front.4bpp.lz"); - const u32 gMonPalette_Vulpix[] = INCBIN_U32("graphics/pokemon/vulpix/normal.gbapal.lz"); + const u16 gMonPalette_Vulpix[] = INCBIN_U16("graphics/pokemon/vulpix/normal.gbapal"); const u32 gMonBackPic_Vulpix[] = INCBIN_U32("graphics/pokemon/vulpix/back.4bpp.lz"); - const u32 gMonShinyPalette_Vulpix[] = INCBIN_U32("graphics/pokemon/vulpix/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Vulpix[] = INCBIN_U16("graphics/pokemon/vulpix/shiny.gbapal"); #else const u32 gMonFrontPic_Vulpix[] = INCBIN_U32("graphics/pokemon/vulpix/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Vulpix[] = INCBIN_U32("graphics/pokemon/vulpix/normal_gba.gbapal.lz"); + const u16 gMonPalette_Vulpix[] = INCBIN_U16("graphics/pokemon/vulpix/normal_gba.gbapal"); const u32 gMonBackPic_Vulpix[] = INCBIN_U32("graphics/pokemon/vulpix/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Vulpix[] = INCBIN_U32("graphics/pokemon/vulpix/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Vulpix[] = INCBIN_U16("graphics/pokemon/vulpix/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Vulpix[] = INCBIN_U8("graphics/pokemon/vulpix/icon.4bpp"); @@ -1503,21 +1503,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Vulpix[] = INCBIN_U16("graphics/pokemon/vulpix/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Vulpix[] = INCBIN_U16("graphics/pokemon/vulpix/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Ninetales[] = INCBIN_U32("graphics/pokemon/ninetales/anim_front.4bpp.lz"); - const u32 gMonPalette_Ninetales[] = INCBIN_U32("graphics/pokemon/ninetales/normal.gbapal.lz"); + const u16 gMonPalette_Ninetales[] = INCBIN_U16("graphics/pokemon/ninetales/normal.gbapal"); const u32 gMonBackPic_Ninetales[] = INCBIN_U32("graphics/pokemon/ninetales/back.4bpp.lz"); - const u32 gMonShinyPalette_Ninetales[] = INCBIN_U32("graphics/pokemon/ninetales/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Ninetales[] = INCBIN_U16("graphics/pokemon/ninetales/shiny.gbapal"); #else const u32 gMonFrontPic_Ninetales[] = INCBIN_U32("graphics/pokemon/ninetales/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Ninetales[] = INCBIN_U32("graphics/pokemon/ninetales/normal_gba.gbapal.lz"); + const u16 gMonPalette_Ninetales[] = INCBIN_U16("graphics/pokemon/ninetales/normal_gba.gbapal"); const u32 gMonBackPic_Ninetales[] = INCBIN_U32("graphics/pokemon/ninetales/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Ninetales[] = INCBIN_U32("graphics/pokemon/ninetales/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Ninetales[] = INCBIN_U16("graphics/pokemon/ninetales/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Ninetales[] = INCBIN_U8("graphics/pokemon/ninetales/icon.4bpp"); @@ -1530,35 +1530,35 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Ninetales[] = INCBIN_U16("graphics/pokemon/ninetales/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Ninetales[] = INCBIN_U16("graphics/pokemon/ninetales/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if P_ALOLAN_FORMS const u32 gMonFrontPic_VulpixAlola[] = INCBIN_U32("graphics/pokemon/vulpix/alola/front.4bpp.lz"); - const u32 gMonPalette_VulpixAlola[] = INCBIN_U32("graphics/pokemon/vulpix/alola/normal.gbapal.lz"); + const u16 gMonPalette_VulpixAlola[] = INCBIN_U16("graphics/pokemon/vulpix/alola/normal.gbapal"); const u32 gMonBackPic_VulpixAlola[] = INCBIN_U32("graphics/pokemon/vulpix/alola/back.4bpp.lz"); - const u32 gMonShinyPalette_VulpixAlola[] = INCBIN_U32("graphics/pokemon/vulpix/alola/shiny.gbapal.lz"); + const u16 gMonShinyPalette_VulpixAlola[] = INCBIN_U16("graphics/pokemon/vulpix/alola/shiny.gbapal"); const u8 gMonIcon_VulpixAlola[] = INCBIN_U8("graphics/pokemon/vulpix/alola/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS const u32 gObjectEventPic_VulpixAlola[] = INCBIN_COMP("graphics/pokemon/vulpix/alola/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - const u32 gOverworldPalette_VulpixAlola[] = INCBIN_U32("graphics/pokemon/vulpix/alola/overworld_normal.gbapal.lz"); - const u32 gShinyOverworldPalette_VulpixAlola[] = INCBIN_U32("graphics/pokemon/vulpix/alola/overworld_shiny.gbapal.lz"); + const u16 gOverworldPalette_VulpixAlola[] = INCBIN_U16("graphics/pokemon/vulpix/alola/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_VulpixAlola[] = INCBIN_U16("graphics/pokemon/vulpix/alola/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_NinetalesAlola[] = INCBIN_U32("graphics/pokemon/ninetales/alola/front.4bpp.lz"); - const u32 gMonPalette_NinetalesAlola[] = INCBIN_U32("graphics/pokemon/ninetales/alola/normal.gbapal.lz"); + const u16 gMonPalette_NinetalesAlola[] = INCBIN_U16("graphics/pokemon/ninetales/alola/normal.gbapal"); const u32 gMonBackPic_NinetalesAlola[] = INCBIN_U32("graphics/pokemon/ninetales/alola/back.4bpp.lz"); - const u32 gMonShinyPalette_NinetalesAlola[] = INCBIN_U32("graphics/pokemon/ninetales/alola/shiny.gbapal.lz"); + const u16 gMonShinyPalette_NinetalesAlola[] = INCBIN_U16("graphics/pokemon/ninetales/alola/shiny.gbapal"); const u8 gMonIcon_NinetalesAlola[] = INCBIN_U8("graphics/pokemon/ninetales/alola/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS const u32 gObjectEventPic_NinetalesAlola[] = INCBIN_COMP("graphics/pokemon/ninetales/alola/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - const u32 gOverworldPalette_NinetalesAlola[] = INCBIN_U32("graphics/pokemon/ninetales/alola/overworld_normal.gbapal.lz"); - const u32 gShinyOverworldPalette_NinetalesAlola[] = INCBIN_U32("graphics/pokemon/ninetales/alola/overworld_shiny.gbapal.lz"); + const u16 gOverworldPalette_NinetalesAlola[] = INCBIN_U16("graphics/pokemon/ninetales/alola/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_NinetalesAlola[] = INCBIN_U16("graphics/pokemon/ninetales/alola/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_ALOLAN_FORMS @@ -1568,14 +1568,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_GEN_2_CROSS_EVOS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Igglybuff[] = INCBIN_U32("graphics/pokemon/igglybuff/anim_front.4bpp.lz"); - const u32 gMonPalette_Igglybuff[] = INCBIN_U32("graphics/pokemon/igglybuff/normal.gbapal.lz"); + const u16 gMonPalette_Igglybuff[] = INCBIN_U16("graphics/pokemon/igglybuff/normal.gbapal"); const u32 gMonBackPic_Igglybuff[] = INCBIN_U32("graphics/pokemon/igglybuff/back.4bpp.lz"); - const u32 gMonShinyPalette_Igglybuff[] = INCBIN_U32("graphics/pokemon/igglybuff/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Igglybuff[] = INCBIN_U16("graphics/pokemon/igglybuff/shiny.gbapal"); #else const u32 gMonFrontPic_Igglybuff[] = INCBIN_U32("graphics/pokemon/igglybuff/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Igglybuff[] = INCBIN_U32("graphics/pokemon/igglybuff/normal_gba.gbapal.lz"); + const u16 gMonPalette_Igglybuff[] = INCBIN_U16("graphics/pokemon/igglybuff/normal_gba.gbapal"); const u32 gMonBackPic_Igglybuff[] = INCBIN_U32("graphics/pokemon/igglybuff/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Igglybuff[] = INCBIN_U32("graphics/pokemon/igglybuff/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Igglybuff[] = INCBIN_U16("graphics/pokemon/igglybuff/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Igglybuff[] = INCBIN_U8("graphics/pokemon/igglybuff/icon.4bpp"); @@ -1588,22 +1588,22 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Igglybuff[] = INCBIN_U16("graphics/pokemon/igglybuff/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Igglybuff[] = INCBIN_U16("graphics/pokemon/igglybuff/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_2_CROSS_EVOS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Jigglypuff[] = INCBIN_U32("graphics/pokemon/jigglypuff/anim_front.4bpp.lz"); - const u32 gMonPalette_Jigglypuff[] = INCBIN_U32("graphics/pokemon/jigglypuff/normal.gbapal.lz"); + const u16 gMonPalette_Jigglypuff[] = INCBIN_U16("graphics/pokemon/jigglypuff/normal.gbapal"); const u32 gMonBackPic_Jigglypuff[] = INCBIN_U32("graphics/pokemon/jigglypuff/back.4bpp.lz"); - const u32 gMonShinyPalette_Jigglypuff[] = INCBIN_U32("graphics/pokemon/jigglypuff/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Jigglypuff[] = INCBIN_U16("graphics/pokemon/jigglypuff/shiny.gbapal"); #else const u32 gMonFrontPic_Jigglypuff[] = INCBIN_U32("graphics/pokemon/jigglypuff/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Jigglypuff[] = INCBIN_U32("graphics/pokemon/jigglypuff/normal_gba.gbapal.lz"); + const u16 gMonPalette_Jigglypuff[] = INCBIN_U16("graphics/pokemon/jigglypuff/normal_gba.gbapal"); const u32 gMonBackPic_Jigglypuff[] = INCBIN_U32("graphics/pokemon/jigglypuff/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Jigglypuff[] = INCBIN_U32("graphics/pokemon/jigglypuff/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Jigglypuff[] = INCBIN_U16("graphics/pokemon/jigglypuff/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Jigglypuff[] = INCBIN_U8("graphics/pokemon/jigglypuff/icon.4bpp"); @@ -1616,21 +1616,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Jigglypuff[] = INCBIN_U16("graphics/pokemon/jigglypuff/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Jigglypuff[] = INCBIN_U16("graphics/pokemon/jigglypuff/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Wigglytuff[] = INCBIN_U32("graphics/pokemon/wigglytuff/anim_front.4bpp.lz"); - const u32 gMonPalette_Wigglytuff[] = INCBIN_U32("graphics/pokemon/wigglytuff/normal.gbapal.lz"); + const u16 gMonPalette_Wigglytuff[] = INCBIN_U16("graphics/pokemon/wigglytuff/normal.gbapal"); const u32 gMonBackPic_Wigglytuff[] = INCBIN_U32("graphics/pokemon/wigglytuff/back.4bpp.lz"); - const u32 gMonShinyPalette_Wigglytuff[] = INCBIN_U32("graphics/pokemon/wigglytuff/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Wigglytuff[] = INCBIN_U16("graphics/pokemon/wigglytuff/shiny.gbapal"); #else const u32 gMonFrontPic_Wigglytuff[] = INCBIN_U32("graphics/pokemon/wigglytuff/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Wigglytuff[] = INCBIN_U32("graphics/pokemon/wigglytuff/normal_gba.gbapal.lz"); + const u16 gMonPalette_Wigglytuff[] = INCBIN_U16("graphics/pokemon/wigglytuff/normal_gba.gbapal"); const u32 gMonBackPic_Wigglytuff[] = INCBIN_U32("graphics/pokemon/wigglytuff/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Wigglytuff[] = INCBIN_U32("graphics/pokemon/wigglytuff/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Wigglytuff[] = INCBIN_U16("graphics/pokemon/wigglytuff/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Wigglytuff[] = INCBIN_U8("graphics/pokemon/wigglytuff/icon.4bpp"); @@ -1643,8 +1643,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Wigglytuff[] = INCBIN_U16("graphics/pokemon/wigglytuff/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Wigglytuff[] = INCBIN_U16("graphics/pokemon/wigglytuff/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_JIGGLYPUFF @@ -1652,14 +1652,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_ZUBAT #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Zubat[] = INCBIN_U32("graphics/pokemon/zubat/anim_front.4bpp.lz"); - const u32 gMonPalette_Zubat[] = INCBIN_U32("graphics/pokemon/zubat/normal.gbapal.lz"); + const u16 gMonPalette_Zubat[] = INCBIN_U16("graphics/pokemon/zubat/normal.gbapal"); const u32 gMonBackPic_Zubat[] = INCBIN_U32("graphics/pokemon/zubat/back.4bpp.lz"); - const u32 gMonShinyPalette_Zubat[] = INCBIN_U32("graphics/pokemon/zubat/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Zubat[] = INCBIN_U16("graphics/pokemon/zubat/shiny.gbapal"); #else const u32 gMonFrontPic_Zubat[] = INCBIN_U32("graphics/pokemon/zubat/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Zubat[] = INCBIN_U32("graphics/pokemon/zubat/normal_gba.gbapal.lz"); + const u16 gMonPalette_Zubat[] = INCBIN_U16("graphics/pokemon/zubat/normal_gba.gbapal"); const u32 gMonBackPic_Zubat[] = INCBIN_U32("graphics/pokemon/zubat/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Zubat[] = INCBIN_U32("graphics/pokemon/zubat/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Zubat[] = INCBIN_U16("graphics/pokemon/zubat/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Zubat[] = INCBIN_U8("graphics/pokemon/zubat/icon.4bpp"); @@ -1672,8 +1672,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Zubat[] = INCBIN_U16("graphics/pokemon/zubat/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Zubat[] = INCBIN_U16("graphics/pokemon/zubat/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -1687,14 +1687,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Golbat[] = INCBIN_U32("graphics/pokemon/golbat/anim_front.4bpp.lz"); - const u32 gMonPalette_Golbat[] = INCBIN_U32("graphics/pokemon/golbat/normal.gbapal.lz"); + const u16 gMonPalette_Golbat[] = INCBIN_U16("graphics/pokemon/golbat/normal.gbapal"); const u32 gMonBackPic_Golbat[] = INCBIN_U32("graphics/pokemon/golbat/back.4bpp.lz"); - const u32 gMonShinyPalette_Golbat[] = INCBIN_U32("graphics/pokemon/golbat/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Golbat[] = INCBIN_U16("graphics/pokemon/golbat/shiny.gbapal"); #else const u32 gMonFrontPic_Golbat[] = INCBIN_U32("graphics/pokemon/golbat/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Golbat[] = INCBIN_U32("graphics/pokemon/golbat/normal_gba.gbapal.lz"); + const u16 gMonPalette_Golbat[] = INCBIN_U16("graphics/pokemon/golbat/normal_gba.gbapal"); const u32 gMonBackPic_Golbat[] = INCBIN_U32("graphics/pokemon/golbat/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Golbat[] = INCBIN_U32("graphics/pokemon/golbat/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Golbat[] = INCBIN_U16("graphics/pokemon/golbat/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Golbat[] = INCBIN_U8("graphics/pokemon/golbat/icon.4bpp"); @@ -1707,8 +1707,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Golbat[] = INCBIN_U16("graphics/pokemon/golbat/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Golbat[] = INCBIN_U16("graphics/pokemon/golbat/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -1723,14 +1723,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_GEN_2_CROSS_EVOS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Crobat[] = INCBIN_U32("graphics/pokemon/crobat/anim_front.4bpp.lz"); - const u32 gMonPalette_Crobat[] = INCBIN_U32("graphics/pokemon/crobat/normal.gbapal.lz"); + const u16 gMonPalette_Crobat[] = INCBIN_U16("graphics/pokemon/crobat/normal.gbapal"); const u32 gMonBackPic_Crobat[] = INCBIN_U32("graphics/pokemon/crobat/back.4bpp.lz"); - const u32 gMonShinyPalette_Crobat[] = INCBIN_U32("graphics/pokemon/crobat/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Crobat[] = INCBIN_U16("graphics/pokemon/crobat/shiny.gbapal"); #else const u32 gMonFrontPic_Crobat[] = INCBIN_U32("graphics/pokemon/crobat/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Crobat[] = INCBIN_U32("graphics/pokemon/crobat/normal_gba.gbapal.lz"); + const u16 gMonPalette_Crobat[] = INCBIN_U16("graphics/pokemon/crobat/normal_gba.gbapal"); const u32 gMonBackPic_Crobat[] = INCBIN_U32("graphics/pokemon/crobat/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Crobat[] = INCBIN_U32("graphics/pokemon/crobat/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Crobat[] = INCBIN_U16("graphics/pokemon/crobat/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Crobat[] = INCBIN_U8("graphics/pokemon/crobat/icon.4bpp"); @@ -1743,8 +1743,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Crobat[] = INCBIN_U16("graphics/pokemon/crobat/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Crobat[] = INCBIN_U16("graphics/pokemon/crobat/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_2_CROSS_EVOS @@ -1753,14 +1753,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_ODDISH #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Oddish[] = INCBIN_U32("graphics/pokemon/oddish/anim_front.4bpp.lz"); - const u32 gMonPalette_Oddish[] = INCBIN_U32("graphics/pokemon/oddish/normal.gbapal.lz"); + const u16 gMonPalette_Oddish[] = INCBIN_U16("graphics/pokemon/oddish/normal.gbapal"); const u32 gMonBackPic_Oddish[] = INCBIN_U32("graphics/pokemon/oddish/back.4bpp.lz"); - const u32 gMonShinyPalette_Oddish[] = INCBIN_U32("graphics/pokemon/oddish/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Oddish[] = INCBIN_U16("graphics/pokemon/oddish/shiny.gbapal"); #else const u32 gMonFrontPic_Oddish[] = INCBIN_U32("graphics/pokemon/oddish/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Oddish[] = INCBIN_U32("graphics/pokemon/oddish/normal_gba.gbapal.lz"); + const u16 gMonPalette_Oddish[] = INCBIN_U16("graphics/pokemon/oddish/normal_gba.gbapal"); const u32 gMonBackPic_Oddish[] = INCBIN_U32("graphics/pokemon/oddish/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Oddish[] = INCBIN_U32("graphics/pokemon/oddish/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Oddish[] = INCBIN_U16("graphics/pokemon/oddish/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Oddish[] = INCBIN_U8("graphics/pokemon/oddish/icon.4bpp"); @@ -1773,21 +1773,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Oddish[] = INCBIN_U16("graphics/pokemon/oddish/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Oddish[] = INCBIN_U16("graphics/pokemon/oddish/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Gloom[] = INCBIN_U32("graphics/pokemon/gloom/anim_front.4bpp.lz"); - const u32 gMonPalette_Gloom[] = INCBIN_U32("graphics/pokemon/gloom/normal.gbapal.lz"); + const u16 gMonPalette_Gloom[] = INCBIN_U16("graphics/pokemon/gloom/normal.gbapal"); const u32 gMonBackPic_Gloom[] = INCBIN_U32("graphics/pokemon/gloom/back.4bpp.lz"); - const u32 gMonShinyPalette_Gloom[] = INCBIN_U32("graphics/pokemon/gloom/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Gloom[] = INCBIN_U16("graphics/pokemon/gloom/shiny.gbapal"); #else const u32 gMonFrontPic_Gloom[] = INCBIN_U32("graphics/pokemon/gloom/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Gloom[] = INCBIN_U32("graphics/pokemon/gloom/normal_gba.gbapal.lz"); + const u16 gMonPalette_Gloom[] = INCBIN_U16("graphics/pokemon/gloom/normal_gba.gbapal"); const u32 gMonBackPic_Gloom[] = INCBIN_U32("graphics/pokemon/gloom/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Gloom[] = INCBIN_U32("graphics/pokemon/gloom/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Gloom[] = INCBIN_U16("graphics/pokemon/gloom/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Gloom[] = INCBIN_U8("graphics/pokemon/gloom/icon.4bpp"); @@ -1800,8 +1800,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Gloom[] = INCBIN_U16("graphics/pokemon/gloom/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Gloom[] = INCBIN_U16("graphics/pokemon/gloom/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -1815,14 +1815,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Vileplume[] = INCBIN_U32("graphics/pokemon/vileplume/anim_front.4bpp.lz"); - const u32 gMonPalette_Vileplume[] = INCBIN_U32("graphics/pokemon/vileplume/normal.gbapal.lz"); + const u16 gMonPalette_Vileplume[] = INCBIN_U16("graphics/pokemon/vileplume/normal.gbapal"); const u32 gMonBackPic_Vileplume[] = INCBIN_U32("graphics/pokemon/vileplume/back.4bpp.lz"); - const u32 gMonShinyPalette_Vileplume[] = INCBIN_U32("graphics/pokemon/vileplume/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Vileplume[] = INCBIN_U16("graphics/pokemon/vileplume/shiny.gbapal"); #else const u32 gMonFrontPic_Vileplume[] = INCBIN_U32("graphics/pokemon/vileplume/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Vileplume[] = INCBIN_U32("graphics/pokemon/vileplume/normal_gba.gbapal.lz"); + const u16 gMonPalette_Vileplume[] = INCBIN_U16("graphics/pokemon/vileplume/normal_gba.gbapal"); const u32 gMonBackPic_Vileplume[] = INCBIN_U32("graphics/pokemon/vileplume/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Vileplume[] = INCBIN_U32("graphics/pokemon/vileplume/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Vileplume[] = INCBIN_U16("graphics/pokemon/vileplume/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Vileplume[] = INCBIN_U8("graphics/pokemon/vileplume/icon.4bpp"); @@ -1835,8 +1835,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Vileplume[] = INCBIN_U16("graphics/pokemon/vileplume/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Vileplume[] = INCBIN_U16("graphics/pokemon/vileplume/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -1851,14 +1851,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_GEN_2_CROSS_EVOS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Bellossom[] = INCBIN_U32("graphics/pokemon/bellossom/anim_front.4bpp.lz"); - const u32 gMonPalette_Bellossom[] = INCBIN_U32("graphics/pokemon/bellossom/normal.gbapal.lz"); + const u16 gMonPalette_Bellossom[] = INCBIN_U16("graphics/pokemon/bellossom/normal.gbapal"); const u32 gMonBackPic_Bellossom[] = INCBIN_U32("graphics/pokemon/bellossom/back.4bpp.lz"); - const u32 gMonShinyPalette_Bellossom[] = INCBIN_U32("graphics/pokemon/bellossom/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Bellossom[] = INCBIN_U16("graphics/pokemon/bellossom/shiny.gbapal"); #else const u32 gMonFrontPic_Bellossom[] = INCBIN_U32("graphics/pokemon/bellossom/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Bellossom[] = INCBIN_U32("graphics/pokemon/bellossom/normal_gba.gbapal.lz"); + const u16 gMonPalette_Bellossom[] = INCBIN_U16("graphics/pokemon/bellossom/normal_gba.gbapal"); const u32 gMonBackPic_Bellossom[] = INCBIN_U32("graphics/pokemon/bellossom/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Bellossom[] = INCBIN_U32("graphics/pokemon/bellossom/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Bellossom[] = INCBIN_U16("graphics/pokemon/bellossom/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Bellossom[] = INCBIN_U8("graphics/pokemon/bellossom/icon.4bpp"); @@ -1871,8 +1871,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Bellossom[] = INCBIN_U16("graphics/pokemon/bellossom/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Bellossom[] = INCBIN_U16("graphics/pokemon/bellossom/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_2_CROSS_EVOS @@ -1881,14 +1881,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_PARAS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Paras[] = INCBIN_U32("graphics/pokemon/paras/anim_front.4bpp.lz"); - const u32 gMonPalette_Paras[] = INCBIN_U32("graphics/pokemon/paras/normal.gbapal.lz"); + const u16 gMonPalette_Paras[] = INCBIN_U16("graphics/pokemon/paras/normal.gbapal"); const u32 gMonBackPic_Paras[] = INCBIN_U32("graphics/pokemon/paras/back.4bpp.lz"); - const u32 gMonShinyPalette_Paras[] = INCBIN_U32("graphics/pokemon/paras/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Paras[] = INCBIN_U16("graphics/pokemon/paras/shiny.gbapal"); #else const u32 gMonFrontPic_Paras[] = INCBIN_U32("graphics/pokemon/paras/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Paras[] = INCBIN_U32("graphics/pokemon/paras/normal_gba.gbapal.lz"); + const u16 gMonPalette_Paras[] = INCBIN_U16("graphics/pokemon/paras/normal_gba.gbapal"); const u32 gMonBackPic_Paras[] = INCBIN_U32("graphics/pokemon/paras/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Paras[] = INCBIN_U32("graphics/pokemon/paras/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Paras[] = INCBIN_U16("graphics/pokemon/paras/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Paras[] = INCBIN_U8("graphics/pokemon/paras/icon.4bpp"); @@ -1901,21 +1901,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Paras[] = INCBIN_U16("graphics/pokemon/paras/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Paras[] = INCBIN_U16("graphics/pokemon/paras/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Parasect[] = INCBIN_U32("graphics/pokemon/parasect/anim_front.4bpp.lz"); - const u32 gMonPalette_Parasect[] = INCBIN_U32("graphics/pokemon/parasect/normal.gbapal.lz"); + const u16 gMonPalette_Parasect[] = INCBIN_U16("graphics/pokemon/parasect/normal.gbapal"); const u32 gMonBackPic_Parasect[] = INCBIN_U32("graphics/pokemon/parasect/back.4bpp.lz"); - const u32 gMonShinyPalette_Parasect[] = INCBIN_U32("graphics/pokemon/parasect/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Parasect[] = INCBIN_U16("graphics/pokemon/parasect/shiny.gbapal"); #else const u32 gMonFrontPic_Parasect[] = INCBIN_U32("graphics/pokemon/parasect/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Parasect[] = INCBIN_U32("graphics/pokemon/parasect/normal_gba.gbapal.lz"); + const u16 gMonPalette_Parasect[] = INCBIN_U16("graphics/pokemon/parasect/normal_gba.gbapal"); const u32 gMonBackPic_Parasect[] = INCBIN_U32("graphics/pokemon/parasect/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Parasect[] = INCBIN_U32("graphics/pokemon/parasect/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Parasect[] = INCBIN_U16("graphics/pokemon/parasect/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Parasect[] = INCBIN_U8("graphics/pokemon/parasect/icon.4bpp"); @@ -1928,8 +1928,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Parasect[] = INCBIN_U16("graphics/pokemon/parasect/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Parasect[] = INCBIN_U16("graphics/pokemon/parasect/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_PARAS @@ -1937,14 +1937,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_VENONAT #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Venonat[] = INCBIN_U32("graphics/pokemon/venonat/anim_front.4bpp.lz"); - const u32 gMonPalette_Venonat[] = INCBIN_U32("graphics/pokemon/venonat/normal.gbapal.lz"); + const u16 gMonPalette_Venonat[] = INCBIN_U16("graphics/pokemon/venonat/normal.gbapal"); const u32 gMonBackPic_Venonat[] = INCBIN_U32("graphics/pokemon/venonat/back.4bpp.lz"); - const u32 gMonShinyPalette_Venonat[] = INCBIN_U32("graphics/pokemon/venonat/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Venonat[] = INCBIN_U16("graphics/pokemon/venonat/shiny.gbapal"); #else const u32 gMonFrontPic_Venonat[] = INCBIN_U32("graphics/pokemon/venonat/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Venonat[] = INCBIN_U32("graphics/pokemon/venonat/normal_gba.gbapal.lz"); + const u16 gMonPalette_Venonat[] = INCBIN_U16("graphics/pokemon/venonat/normal_gba.gbapal"); const u32 gMonBackPic_Venonat[] = INCBIN_U32("graphics/pokemon/venonat/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Venonat[] = INCBIN_U32("graphics/pokemon/venonat/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Venonat[] = INCBIN_U16("graphics/pokemon/venonat/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Venonat[] = INCBIN_U8("graphics/pokemon/venonat/icon.4bpp"); @@ -1957,21 +1957,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Venonat[] = INCBIN_U16("graphics/pokemon/venonat/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Venonat[] = INCBIN_U16("graphics/pokemon/venonat/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Venomoth[] = INCBIN_U32("graphics/pokemon/venomoth/anim_front.4bpp.lz"); - const u32 gMonPalette_Venomoth[] = INCBIN_U32("graphics/pokemon/venomoth/normal.gbapal.lz"); + const u16 gMonPalette_Venomoth[] = INCBIN_U16("graphics/pokemon/venomoth/normal.gbapal"); const u32 gMonBackPic_Venomoth[] = INCBIN_U32("graphics/pokemon/venomoth/back.4bpp.lz"); - const u32 gMonShinyPalette_Venomoth[] = INCBIN_U32("graphics/pokemon/venomoth/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Venomoth[] = INCBIN_U16("graphics/pokemon/venomoth/shiny.gbapal"); #else const u32 gMonFrontPic_Venomoth[] = INCBIN_U32("graphics/pokemon/venomoth/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Venomoth[] = INCBIN_U32("graphics/pokemon/venomoth/normal_gba.gbapal.lz"); + const u16 gMonPalette_Venomoth[] = INCBIN_U16("graphics/pokemon/venomoth/normal_gba.gbapal"); const u32 gMonBackPic_Venomoth[] = INCBIN_U32("graphics/pokemon/venomoth/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Venomoth[] = INCBIN_U32("graphics/pokemon/venomoth/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Venomoth[] = INCBIN_U16("graphics/pokemon/venomoth/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Venomoth[] = INCBIN_U8("graphics/pokemon/venomoth/icon.4bpp"); @@ -1984,8 +1984,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Venomoth[] = INCBIN_U16("graphics/pokemon/venomoth/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Venomoth[] = INCBIN_U16("graphics/pokemon/venomoth/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_VENONAT @@ -1993,14 +1993,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_DIGLETT #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Diglett[] = INCBIN_U32("graphics/pokemon/diglett/anim_front.4bpp.lz"); - const u32 gMonPalette_Diglett[] = INCBIN_U32("graphics/pokemon/diglett/normal.gbapal.lz"); + const u16 gMonPalette_Diglett[] = INCBIN_U16("graphics/pokemon/diglett/normal.gbapal"); const u32 gMonBackPic_Diglett[] = INCBIN_U32("graphics/pokemon/diglett/back.4bpp.lz"); - const u32 gMonShinyPalette_Diglett[] = INCBIN_U32("graphics/pokemon/diglett/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Diglett[] = INCBIN_U16("graphics/pokemon/diglett/shiny.gbapal"); #else const u32 gMonFrontPic_Diglett[] = INCBIN_U32("graphics/pokemon/diglett/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Diglett[] = INCBIN_U32("graphics/pokemon/diglett/normal_gba.gbapal.lz"); + const u16 gMonPalette_Diglett[] = INCBIN_U16("graphics/pokemon/diglett/normal_gba.gbapal"); const u32 gMonBackPic_Diglett[] = INCBIN_U32("graphics/pokemon/diglett/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Diglett[] = INCBIN_U32("graphics/pokemon/diglett/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Diglett[] = INCBIN_U16("graphics/pokemon/diglett/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Diglett[] = INCBIN_U8("graphics/pokemon/diglett/icon.4bpp"); @@ -2013,21 +2013,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Diglett[] = INCBIN_U16("graphics/pokemon/diglett/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Diglett[] = INCBIN_U16("graphics/pokemon/diglett/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Dugtrio[] = INCBIN_U32("graphics/pokemon/dugtrio/anim_front.4bpp.lz"); - const u32 gMonPalette_Dugtrio[] = INCBIN_U32("graphics/pokemon/dugtrio/normal.gbapal.lz"); + const u16 gMonPalette_Dugtrio[] = INCBIN_U16("graphics/pokemon/dugtrio/normal.gbapal"); const u32 gMonBackPic_Dugtrio[] = INCBIN_U32("graphics/pokemon/dugtrio/back.4bpp.lz"); - const u32 gMonShinyPalette_Dugtrio[] = INCBIN_U32("graphics/pokemon/dugtrio/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Dugtrio[] = INCBIN_U16("graphics/pokemon/dugtrio/shiny.gbapal"); #else const u32 gMonFrontPic_Dugtrio[] = INCBIN_U32("graphics/pokemon/dugtrio/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Dugtrio[] = INCBIN_U32("graphics/pokemon/dugtrio/normal_gba.gbapal.lz"); + const u16 gMonPalette_Dugtrio[] = INCBIN_U16("graphics/pokemon/dugtrio/normal_gba.gbapal"); const u32 gMonBackPic_Dugtrio[] = INCBIN_U32("graphics/pokemon/dugtrio/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Dugtrio[] = INCBIN_U32("graphics/pokemon/dugtrio/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Dugtrio[] = INCBIN_U16("graphics/pokemon/dugtrio/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Dugtrio[] = INCBIN_U8("graphics/pokemon/dugtrio/icon.4bpp"); @@ -2040,35 +2040,35 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Dugtrio[] = INCBIN_U16("graphics/pokemon/dugtrio/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Dugtrio[] = INCBIN_U16("graphics/pokemon/dugtrio/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if P_ALOLAN_FORMS const u32 gMonFrontPic_DiglettAlola[] = INCBIN_U32("graphics/pokemon/diglett/alola/front.4bpp.lz"); - const u32 gMonPalette_DiglettAlola[] = INCBIN_U32("graphics/pokemon/diglett/alola/normal.gbapal.lz"); + const u16 gMonPalette_DiglettAlola[] = INCBIN_U16("graphics/pokemon/diglett/alola/normal.gbapal"); const u32 gMonBackPic_DiglettAlola[] = INCBIN_U32("graphics/pokemon/diglett/alola/back.4bpp.lz"); - const u32 gMonShinyPalette_DiglettAlola[] = INCBIN_U32("graphics/pokemon/diglett/alola/shiny.gbapal.lz"); + const u16 gMonShinyPalette_DiglettAlola[] = INCBIN_U16("graphics/pokemon/diglett/alola/shiny.gbapal"); const u8 gMonIcon_DiglettAlola[] = INCBIN_U8("graphics/pokemon/diglett/alola/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS const u32 gObjectEventPic_DiglettAlola[] = INCBIN_COMP("graphics/pokemon/diglett/alola/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - const u32 gOverworldPalette_DiglettAlola[] = INCBIN_U32("graphics/pokemon/diglett/alola/overworld_normal.gbapal.lz"); - const u32 gShinyOverworldPalette_DiglettAlola[] = INCBIN_U32("graphics/pokemon/diglett/alola/overworld_shiny.gbapal.lz"); + const u16 gOverworldPalette_DiglettAlola[] = INCBIN_U16("graphics/pokemon/diglett/alola/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_DiglettAlola[] = INCBIN_U16("graphics/pokemon/diglett/alola/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_DugtrioAlola[] = INCBIN_U32("graphics/pokemon/dugtrio/alola/front.4bpp.lz"); - const u32 gMonPalette_DugtrioAlola[] = INCBIN_U32("graphics/pokemon/dugtrio/alola/normal.gbapal.lz"); + const u16 gMonPalette_DugtrioAlola[] = INCBIN_U16("graphics/pokemon/dugtrio/alola/normal.gbapal"); const u32 gMonBackPic_DugtrioAlola[] = INCBIN_U32("graphics/pokemon/dugtrio/alola/back.4bpp.lz"); - const u32 gMonShinyPalette_DugtrioAlola[] = INCBIN_U32("graphics/pokemon/dugtrio/alola/shiny.gbapal.lz"); + const u16 gMonShinyPalette_DugtrioAlola[] = INCBIN_U16("graphics/pokemon/dugtrio/alola/shiny.gbapal"); const u8 gMonIcon_DugtrioAlola[] = INCBIN_U8("graphics/pokemon/dugtrio/alola/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS const u32 gObjectEventPic_DugtrioAlola[] = INCBIN_COMP("graphics/pokemon/dugtrio/alola/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - const u32 gOverworldPalette_DugtrioAlola[] = INCBIN_U32("graphics/pokemon/dugtrio/alola/overworld_normal.gbapal.lz"); - const u32 gShinyOverworldPalette_DugtrioAlola[] = INCBIN_U32("graphics/pokemon/dugtrio/alola/overworld_shiny.gbapal.lz"); + const u16 gOverworldPalette_DugtrioAlola[] = INCBIN_U16("graphics/pokemon/dugtrio/alola/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_DugtrioAlola[] = INCBIN_U16("graphics/pokemon/dugtrio/alola/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_ALOLAN_FORMS @@ -2077,14 +2077,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_MEOWTH #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Meowth[] = INCBIN_U32("graphics/pokemon/meowth/anim_front.4bpp.lz"); - const u32 gMonPalette_Meowth[] = INCBIN_U32("graphics/pokemon/meowth/normal.gbapal.lz"); + const u16 gMonPalette_Meowth[] = INCBIN_U16("graphics/pokemon/meowth/normal.gbapal"); const u32 gMonBackPic_Meowth[] = INCBIN_U32("graphics/pokemon/meowth/back.4bpp.lz"); - const u32 gMonShinyPalette_Meowth[] = INCBIN_U32("graphics/pokemon/meowth/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Meowth[] = INCBIN_U16("graphics/pokemon/meowth/shiny.gbapal"); #else const u32 gMonFrontPic_Meowth[] = INCBIN_U32("graphics/pokemon/meowth/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Meowth[] = INCBIN_U32("graphics/pokemon/meowth/normal_gba.gbapal.lz"); + const u16 gMonPalette_Meowth[] = INCBIN_U16("graphics/pokemon/meowth/normal_gba.gbapal"); const u32 gMonBackPic_Meowth[] = INCBIN_U32("graphics/pokemon/meowth/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Meowth[] = INCBIN_U32("graphics/pokemon/meowth/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Meowth[] = INCBIN_U16("graphics/pokemon/meowth/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Meowth[] = INCBIN_U8("graphics/pokemon/meowth/icon.4bpp"); @@ -2097,21 +2097,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Meowth[] = INCBIN_U16("graphics/pokemon/meowth/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Meowth[] = INCBIN_U16("graphics/pokemon/meowth/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Persian[] = INCBIN_U32("graphics/pokemon/persian/anim_front.4bpp.lz"); - const u32 gMonPalette_Persian[] = INCBIN_U32("graphics/pokemon/persian/normal.gbapal.lz"); + const u16 gMonPalette_Persian[] = INCBIN_U16("graphics/pokemon/persian/normal.gbapal"); const u32 gMonBackPic_Persian[] = INCBIN_U32("graphics/pokemon/persian/back.4bpp.lz"); - const u32 gMonShinyPalette_Persian[] = INCBIN_U32("graphics/pokemon/persian/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Persian[] = INCBIN_U16("graphics/pokemon/persian/shiny.gbapal"); #else const u32 gMonFrontPic_Persian[] = INCBIN_U32("graphics/pokemon/persian/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Persian[] = INCBIN_U32("graphics/pokemon/persian/normal_gba.gbapal.lz"); + const u16 gMonPalette_Persian[] = INCBIN_U16("graphics/pokemon/persian/normal_gba.gbapal"); const u32 gMonBackPic_Persian[] = INCBIN_U32("graphics/pokemon/persian/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Persian[] = INCBIN_U32("graphics/pokemon/persian/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Persian[] = INCBIN_U16("graphics/pokemon/persian/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Persian[] = INCBIN_U8("graphics/pokemon/persian/icon.4bpp"); @@ -2124,57 +2124,57 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Persian[] = INCBIN_U16("graphics/pokemon/persian/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Persian[] = INCBIN_U16("graphics/pokemon/persian/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if P_ALOLAN_FORMS const u32 gMonFrontPic_MeowthAlola[] = INCBIN_U32("graphics/pokemon/meowth/alola/front.4bpp.lz"); - const u32 gMonPalette_MeowthAlola[] = INCBIN_U32("graphics/pokemon/meowth/alola/normal.gbapal.lz"); + const u16 gMonPalette_MeowthAlola[] = INCBIN_U16("graphics/pokemon/meowth/alola/normal.gbapal"); const u32 gMonBackPic_MeowthAlola[] = INCBIN_U32("graphics/pokemon/meowth/alola/back.4bpp.lz"); - const u32 gMonShinyPalette_MeowthAlola[] = INCBIN_U32("graphics/pokemon/meowth/alola/shiny.gbapal.lz"); + const u16 gMonShinyPalette_MeowthAlola[] = INCBIN_U16("graphics/pokemon/meowth/alola/shiny.gbapal"); const u8 gMonIcon_MeowthAlola[] = INCBIN_U8("graphics/pokemon/meowth/alola/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS const u32 gObjectEventPic_MeowthAlola[] = INCBIN_COMP("graphics/pokemon/meowth/alola/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - const u32 gOverworldPalette_MeowthAlola[] = INCBIN_U32("graphics/pokemon/meowth/alola/overworld_normal.gbapal.lz"); - const u32 gShinyOverworldPalette_MeowthAlola[] = INCBIN_U32("graphics/pokemon/meowth/alola/overworld_shiny.gbapal.lz"); + const u16 gOverworldPalette_MeowthAlola[] = INCBIN_U16("graphics/pokemon/meowth/alola/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_MeowthAlola[] = INCBIN_U16("graphics/pokemon/meowth/alola/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_PersianAlola[] = INCBIN_U32("graphics/pokemon/persian/alola/front.4bpp.lz"); - const u32 gMonPalette_PersianAlola[] = INCBIN_U32("graphics/pokemon/persian/alola/normal.gbapal.lz"); + const u16 gMonPalette_PersianAlola[] = INCBIN_U16("graphics/pokemon/persian/alola/normal.gbapal"); const u32 gMonBackPic_PersianAlola[] = INCBIN_U32("graphics/pokemon/persian/alola/back.4bpp.lz"); - const u32 gMonShinyPalette_PersianAlola[] = INCBIN_U32("graphics/pokemon/persian/alola/shiny.gbapal.lz"); + const u16 gMonShinyPalette_PersianAlola[] = INCBIN_U16("graphics/pokemon/persian/alola/shiny.gbapal"); const u8 gMonIcon_PersianAlola[] = INCBIN_U8("graphics/pokemon/persian/alola/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS const u32 gObjectEventPic_PersianAlola[] = INCBIN_COMP("graphics/pokemon/persian/alola/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - const u32 gOverworldPalette_PersianAlola[] = INCBIN_U32("graphics/pokemon/persian/alola/overworld_normal.gbapal.lz"); - const u32 gShinyOverworldPalette_PersianAlola[] = INCBIN_U32("graphics/pokemon/persian/alola/overworld_shiny.gbapal.lz"); + const u16 gOverworldPalette_PersianAlola[] = INCBIN_U16("graphics/pokemon/persian/alola/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_PersianAlola[] = INCBIN_U16("graphics/pokemon/persian/alola/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_ALOLAN_FORMS #if P_GALARIAN_FORMS const u32 gMonFrontPic_MeowthGalar[] = INCBIN_U32("graphics/pokemon/meowth/galar/front.4bpp.lz"); - const u32 gMonPalette_MeowthGalar[] = INCBIN_U32("graphics/pokemon/meowth/galar/normal.gbapal.lz"); + const u16 gMonPalette_MeowthGalar[] = INCBIN_U16("graphics/pokemon/meowth/galar/normal.gbapal"); const u32 gMonBackPic_MeowthGalar[] = INCBIN_U32("graphics/pokemon/meowth/galar/back.4bpp.lz"); - const u32 gMonShinyPalette_MeowthGalar[] = INCBIN_U32("graphics/pokemon/meowth/galar/shiny.gbapal.lz"); + const u16 gMonShinyPalette_MeowthGalar[] = INCBIN_U16("graphics/pokemon/meowth/galar/shiny.gbapal"); const u8 gMonIcon_MeowthGalar[] = INCBIN_U8("graphics/pokemon/meowth/galar/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS const u32 gObjectEventPic_MeowthGalar[] = INCBIN_COMP("graphics/pokemon/meowth/galar/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - const u32 gOverworldPalette_MeowthGalar[] = INCBIN_U32("graphics/pokemon/meowth/galar/overworld_normal.gbapal.lz"); - const u32 gShinyOverworldPalette_MeowthGalar[] = INCBIN_U32("graphics/pokemon/meowth/galar/overworld_shiny.gbapal.lz"); + const u16 gOverworldPalette_MeowthGalar[] = INCBIN_U16("graphics/pokemon/meowth/galar/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_MeowthGalar[] = INCBIN_U16("graphics/pokemon/meowth/galar/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Perrserker[] = INCBIN_U16("graphics/pokemon/perrserker/normal.gbapal"); const u32 gMonBackPic_Perrserker[] = INCBIN_U32("graphics/pokemon/perrserker/back.4bpp.lz"); - const u32 gMonShinyPalette_Perrserker[] = INCBIN_U32("graphics/pokemon/perrserker/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Perrserker[] = INCBIN_U16("graphics/pokemon/perrserker/shiny.gbapal"); const u8 gMonIcon_Perrserker[] = INCBIN_U8("graphics/pokemon/perrserker/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Perrserker[] = INCBIN_U8("graphics/pokemon/perrserker/footprint.1bpp"); @@ -2182,8 +2182,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Perrserker[] = INCBIN_U16("graphics/pokemon/perrserker/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Perrserker[] = INCBIN_U16("graphics/pokemon/perrserker/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GALARIAN_FORMS @@ -2191,14 +2191,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_GIGANTAMAX_FORMS const u32 gMonFrontPic_MeowthGmax[] = INCBIN_U32("graphics/pokemon/meowth/gmax/front.4bpp.lz"); const u32 gMonBackPic_MeowthGmax[] = INCBIN_U32("graphics/pokemon/meowth/gmax/back.4bpp.lz"); - const u32 gMonPalette_MeowthGmax[] = INCBIN_U32("graphics/pokemon/meowth/gmax/normal.gbapal.lz"); - const u32 gMonShinyPalette_MeowthGmax[] = INCBIN_U32("graphics/pokemon/meowth/gmax/shiny.gbapal.lz"); + const u16 gMonPalette_MeowthGmax[] = INCBIN_U16("graphics/pokemon/meowth/gmax/normal.gbapal"); + const u16 gMonShinyPalette_MeowthGmax[] = INCBIN_U16("graphics/pokemon/meowth/gmax/shiny.gbapal"); const u8 gMonIcon_MeowthGmax[] = INCBIN_U8("graphics/pokemon/meowth/gmax/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS // const u32 gObjectEventPic_MeowthGmax[] = INCBIN_COMP("graphics/pokemon/meowth/gmax/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - // const u32 gOverworldPalette_MeowthGmax[] = INCBIN_U32("graphics/pokemon/meowth/gmax/overworld_normal.gbapal.lz"); - // const u32 gShinyOverworldPalette_MeowthGmax[] = INCBIN_U32("graphics/pokemon/meowth/gmax/overworld_shiny.gbapal.lz"); + // const u16 gOverworldPalette_MeowthGmax[] = INCBIN_U16("graphics/pokemon/meowth/gmax/overworld_normal.gbapal"); + // const u16 gShinyOverworldPalette_MeowthGmax[] = INCBIN_U16("graphics/pokemon/meowth/gmax/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GIGANTAMAX_FORMS @@ -2207,14 +2207,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_PSYDUCK #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Psyduck[] = INCBIN_U32("graphics/pokemon/psyduck/anim_front.4bpp.lz"); - const u32 gMonPalette_Psyduck[] = INCBIN_U32("graphics/pokemon/psyduck/normal.gbapal.lz"); + const u16 gMonPalette_Psyduck[] = INCBIN_U16("graphics/pokemon/psyduck/normal.gbapal"); const u32 gMonBackPic_Psyduck[] = INCBIN_U32("graphics/pokemon/psyduck/back.4bpp.lz"); - const u32 gMonShinyPalette_Psyduck[] = INCBIN_U32("graphics/pokemon/psyduck/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Psyduck[] = INCBIN_U16("graphics/pokemon/psyduck/shiny.gbapal"); #else const u32 gMonFrontPic_Psyduck[] = INCBIN_U32("graphics/pokemon/psyduck/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Psyduck[] = INCBIN_U32("graphics/pokemon/psyduck/normal_gba.gbapal.lz"); + const u16 gMonPalette_Psyduck[] = INCBIN_U16("graphics/pokemon/psyduck/normal_gba.gbapal"); const u32 gMonBackPic_Psyduck[] = INCBIN_U32("graphics/pokemon/psyduck/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Psyduck[] = INCBIN_U32("graphics/pokemon/psyduck/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Psyduck[] = INCBIN_U16("graphics/pokemon/psyduck/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Psyduck[] = INCBIN_U8("graphics/pokemon/psyduck/icon.4bpp"); @@ -2227,21 +2227,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Psyduck[] = INCBIN_U16("graphics/pokemon/psyduck/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Psyduck[] = INCBIN_U16("graphics/pokemon/psyduck/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Golduck[] = INCBIN_U32("graphics/pokemon/golduck/anim_front.4bpp.lz"); - const u32 gMonPalette_Golduck[] = INCBIN_U32("graphics/pokemon/golduck/normal.gbapal.lz"); + const u16 gMonPalette_Golduck[] = INCBIN_U16("graphics/pokemon/golduck/normal.gbapal"); const u32 gMonBackPic_Golduck[] = INCBIN_U32("graphics/pokemon/golduck/back.4bpp.lz"); - const u32 gMonShinyPalette_Golduck[] = INCBIN_U32("graphics/pokemon/golduck/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Golduck[] = INCBIN_U16("graphics/pokemon/golduck/shiny.gbapal"); #else const u32 gMonFrontPic_Golduck[] = INCBIN_U32("graphics/pokemon/golduck/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Golduck[] = INCBIN_U32("graphics/pokemon/golduck/normal_gba.gbapal.lz"); + const u16 gMonPalette_Golduck[] = INCBIN_U16("graphics/pokemon/golduck/normal_gba.gbapal"); const u32 gMonBackPic_Golduck[] = INCBIN_U32("graphics/pokemon/golduck/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Golduck[] = INCBIN_U32("graphics/pokemon/golduck/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Golduck[] = INCBIN_U16("graphics/pokemon/golduck/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Golduck[] = INCBIN_U8("graphics/pokemon/golduck/icon.4bpp"); @@ -2254,8 +2254,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Golduck[] = INCBIN_U16("graphics/pokemon/golduck/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Golduck[] = INCBIN_U16("graphics/pokemon/golduck/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_PSYDUCK @@ -2263,14 +2263,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_MANKEY #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Mankey[] = INCBIN_U32("graphics/pokemon/mankey/anim_front.4bpp.lz"); - const u32 gMonPalette_Mankey[] = INCBIN_U32("graphics/pokemon/mankey/normal.gbapal.lz"); + const u16 gMonPalette_Mankey[] = INCBIN_U16("graphics/pokemon/mankey/normal.gbapal"); const u32 gMonBackPic_Mankey[] = INCBIN_U32("graphics/pokemon/mankey/back.4bpp.lz"); - const u32 gMonShinyPalette_Mankey[] = INCBIN_U32("graphics/pokemon/mankey/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Mankey[] = INCBIN_U16("graphics/pokemon/mankey/shiny.gbapal"); #else const u32 gMonFrontPic_Mankey[] = INCBIN_U32("graphics/pokemon/mankey/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Mankey[] = INCBIN_U32("graphics/pokemon/mankey/normal_gba.gbapal.lz"); + const u16 gMonPalette_Mankey[] = INCBIN_U16("graphics/pokemon/mankey/normal_gba.gbapal"); const u32 gMonBackPic_Mankey[] = INCBIN_U32("graphics/pokemon/mankey/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Mankey[] = INCBIN_U32("graphics/pokemon/mankey/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Mankey[] = INCBIN_U16("graphics/pokemon/mankey/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Mankey[] = INCBIN_U8("graphics/pokemon/mankey/icon.4bpp"); @@ -2283,21 +2283,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Mankey[] = INCBIN_U16("graphics/pokemon/mankey/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Mankey[] = INCBIN_U16("graphics/pokemon/mankey/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Primeape[] = INCBIN_U32("graphics/pokemon/primeape/anim_front.4bpp.lz"); - const u32 gMonPalette_Primeape[] = INCBIN_U32("graphics/pokemon/primeape/normal.gbapal.lz"); + const u16 gMonPalette_Primeape[] = INCBIN_U16("graphics/pokemon/primeape/normal.gbapal"); const u32 gMonBackPic_Primeape[] = INCBIN_U32("graphics/pokemon/primeape/back.4bpp.lz"); - const u32 gMonShinyPalette_Primeape[] = INCBIN_U32("graphics/pokemon/primeape/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Primeape[] = INCBIN_U16("graphics/pokemon/primeape/shiny.gbapal"); #else const u32 gMonFrontPic_Primeape[] = INCBIN_U32("graphics/pokemon/primeape/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Primeape[] = INCBIN_U32("graphics/pokemon/primeape/normal_gba.gbapal.lz"); + const u16 gMonPalette_Primeape[] = INCBIN_U16("graphics/pokemon/primeape/normal_gba.gbapal"); const u32 gMonBackPic_Primeape[] = INCBIN_U32("graphics/pokemon/primeape/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Primeape[] = INCBIN_U32("graphics/pokemon/primeape/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Primeape[] = INCBIN_U16("graphics/pokemon/primeape/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Primeape[] = INCBIN_U8("graphics/pokemon/primeape/icon.4bpp"); @@ -2310,16 +2310,16 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Primeape[] = INCBIN_U16("graphics/pokemon/primeape/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Primeape[] = INCBIN_U16("graphics/pokemon/primeape/overworld_shiny.gbapal"); #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"); - const u32 gMonPalette_Annihilape[] = INCBIN_U32("graphics/pokemon/annihilape/normal.gbapal.lz"); + const u16 gMonPalette_Annihilape[] = INCBIN_U16("graphics/pokemon/annihilape/normal.gbapal"); const u32 gMonBackPic_Annihilape[] = INCBIN_U32("graphics/pokemon/annihilape/back.4bpp.lz"); - const u32 gMonShinyPalette_Annihilape[] = INCBIN_U32("graphics/pokemon/annihilape/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Annihilape[] = INCBIN_U16("graphics/pokemon/annihilape/shiny.gbapal"); const u8 gMonIcon_Annihilape[] = INCBIN_U8("graphics/pokemon/annihilape/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Annihilape[] = INCBIN_U8("graphics/pokemon/annihilape/footprint.1bpp"); @@ -2327,8 +2327,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Annihilape[] = INCBIN_U16("graphics/pokemon/annihilape/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Annihilape[] = INCBIN_U16("graphics/pokemon/annihilape/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_9_CROSS_EVOS @@ -2337,14 +2337,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_GROWLITHE #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Growlithe[] = INCBIN_U32("graphics/pokemon/growlithe/anim_front.4bpp.lz"); - const u32 gMonPalette_Growlithe[] = INCBIN_U32("graphics/pokemon/growlithe/normal.gbapal.lz"); + const u16 gMonPalette_Growlithe[] = INCBIN_U16("graphics/pokemon/growlithe/normal.gbapal"); const u32 gMonBackPic_Growlithe[] = INCBIN_U32("graphics/pokemon/growlithe/back.4bpp.lz"); - const u32 gMonShinyPalette_Growlithe[] = INCBIN_U32("graphics/pokemon/growlithe/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Growlithe[] = INCBIN_U16("graphics/pokemon/growlithe/shiny.gbapal"); #else const u32 gMonFrontPic_Growlithe[] = INCBIN_U32("graphics/pokemon/growlithe/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Growlithe[] = INCBIN_U32("graphics/pokemon/growlithe/normal_gba.gbapal.lz"); + const u16 gMonPalette_Growlithe[] = INCBIN_U16("graphics/pokemon/growlithe/normal_gba.gbapal"); const u32 gMonBackPic_Growlithe[] = INCBIN_U32("graphics/pokemon/growlithe/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Growlithe[] = INCBIN_U32("graphics/pokemon/growlithe/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Growlithe[] = INCBIN_U16("graphics/pokemon/growlithe/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Growlithe[] = INCBIN_U8("graphics/pokemon/growlithe/icon.4bpp"); @@ -2357,21 +2357,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Growlithe[] = INCBIN_U16("graphics/pokemon/growlithe/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Growlithe[] = INCBIN_U16("graphics/pokemon/growlithe/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Arcanine[] = INCBIN_U32("graphics/pokemon/arcanine/anim_front.4bpp.lz"); - const u32 gMonPalette_Arcanine[] = INCBIN_U32("graphics/pokemon/arcanine/normal.gbapal.lz"); + const u16 gMonPalette_Arcanine[] = INCBIN_U16("graphics/pokemon/arcanine/normal.gbapal"); const u32 gMonBackPic_Arcanine[] = INCBIN_U32("graphics/pokemon/arcanine/back.4bpp.lz"); - const u32 gMonShinyPalette_Arcanine[] = INCBIN_U32("graphics/pokemon/arcanine/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Arcanine[] = INCBIN_U16("graphics/pokemon/arcanine/shiny.gbapal"); #else const u32 gMonFrontPic_Arcanine[] = INCBIN_U32("graphics/pokemon/arcanine/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Arcanine[] = INCBIN_U32("graphics/pokemon/arcanine/normal_gba.gbapal.lz"); + const u16 gMonPalette_Arcanine[] = INCBIN_U16("graphics/pokemon/arcanine/normal_gba.gbapal"); const u32 gMonBackPic_Arcanine[] = INCBIN_U32("graphics/pokemon/arcanine/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Arcanine[] = INCBIN_U32("graphics/pokemon/arcanine/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Arcanine[] = INCBIN_U16("graphics/pokemon/arcanine/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Arcanine[] = INCBIN_U8("graphics/pokemon/arcanine/icon.4bpp"); @@ -2384,35 +2384,35 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Arcanine[] = INCBIN_U16("graphics/pokemon/arcanine/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Arcanine[] = INCBIN_U16("graphics/pokemon/arcanine/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if P_HISUIAN_FORMS const u32 gMonFrontPic_GrowlitheHisui[] = INCBIN_U32("graphics/pokemon/growlithe/hisui/front.4bpp.lz"); - const u32 gMonPalette_GrowlitheHisui[] = INCBIN_U32("graphics/pokemon/growlithe/hisui/normal.gbapal.lz"); + const u16 gMonPalette_GrowlitheHisui[] = INCBIN_U16("graphics/pokemon/growlithe/hisui/normal.gbapal"); const u32 gMonBackPic_GrowlitheHisui[] = INCBIN_U32("graphics/pokemon/growlithe/hisui/back.4bpp.lz"); - const u32 gMonShinyPalette_GrowlitheHisui[] = INCBIN_U32("graphics/pokemon/growlithe/hisui/shiny.gbapal.lz"); + const u16 gMonShinyPalette_GrowlitheHisui[] = INCBIN_U16("graphics/pokemon/growlithe/hisui/shiny.gbapal"); const u8 gMonIcon_GrowlitheHisui[] = INCBIN_U8("graphics/pokemon/growlithe/hisui/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS const u32 gObjectEventPic_GrowlitheHisui[] = INCBIN_COMP("graphics/pokemon/growlithe/hisui/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - const u32 gOverworldPalette_GrowlitheHisui[] = INCBIN_U32("graphics/pokemon/growlithe/hisui/overworld_normal.gbapal.lz"); - const u32 gShinyOverworldPalette_GrowlitheHisui[] = INCBIN_U32("graphics/pokemon/growlithe/hisui/overworld_shiny.gbapal.lz"); + const u16 gOverworldPalette_GrowlitheHisui[] = INCBIN_U16("graphics/pokemon/growlithe/hisui/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_GrowlitheHisui[] = INCBIN_U16("graphics/pokemon/growlithe/hisui/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_ArcanineHisui[] = INCBIN_U32("graphics/pokemon/arcanine/hisui/front.4bpp.lz"); - const u32 gMonPalette_ArcanineHisui[] = INCBIN_U32("graphics/pokemon/arcanine/hisui/normal.gbapal.lz"); + const u16 gMonPalette_ArcanineHisui[] = INCBIN_U16("graphics/pokemon/arcanine/hisui/normal.gbapal"); const u32 gMonBackPic_ArcanineHisui[] = INCBIN_U32("graphics/pokemon/arcanine/hisui/back.4bpp.lz"); - const u32 gMonShinyPalette_ArcanineHisui[] = INCBIN_U32("graphics/pokemon/arcanine/hisui/shiny.gbapal.lz"); + const u16 gMonShinyPalette_ArcanineHisui[] = INCBIN_U16("graphics/pokemon/arcanine/hisui/shiny.gbapal"); const u8 gMonIcon_ArcanineHisui[] = INCBIN_U8("graphics/pokemon/arcanine/hisui/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS const u32 gObjectEventPic_ArcanineHisui[] = INCBIN_COMP("graphics/pokemon/arcanine/hisui/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - const u32 gOverworldPalette_ArcanineHisui[] = INCBIN_U32("graphics/pokemon/arcanine/hisui/overworld_normal.gbapal.lz"); - const u32 gShinyOverworldPalette_ArcanineHisui[] = INCBIN_U32("graphics/pokemon/arcanine/hisui/overworld_shiny.gbapal.lz"); + const u16 gOverworldPalette_ArcanineHisui[] = INCBIN_U16("graphics/pokemon/arcanine/hisui/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_ArcanineHisui[] = INCBIN_U16("graphics/pokemon/arcanine/hisui/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_HISUIAN_FORMS @@ -2421,14 +2421,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_POLIWAG #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Poliwag[] = INCBIN_U32("graphics/pokemon/poliwag/anim_front.4bpp.lz"); - const u32 gMonPalette_Poliwag[] = INCBIN_U32("graphics/pokemon/poliwag/normal.gbapal.lz"); + const u16 gMonPalette_Poliwag[] = INCBIN_U16("graphics/pokemon/poliwag/normal.gbapal"); const u32 gMonBackPic_Poliwag[] = INCBIN_U32("graphics/pokemon/poliwag/back.4bpp.lz"); - const u32 gMonShinyPalette_Poliwag[] = INCBIN_U32("graphics/pokemon/poliwag/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Poliwag[] = INCBIN_U16("graphics/pokemon/poliwag/shiny.gbapal"); #else const u32 gMonFrontPic_Poliwag[] = INCBIN_U32("graphics/pokemon/poliwag/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Poliwag[] = INCBIN_U32("graphics/pokemon/poliwag/normal_gba.gbapal.lz"); + const u16 gMonPalette_Poliwag[] = INCBIN_U16("graphics/pokemon/poliwag/normal_gba.gbapal"); const u32 gMonBackPic_Poliwag[] = INCBIN_U32("graphics/pokemon/poliwag/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Poliwag[] = INCBIN_U32("graphics/pokemon/poliwag/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Poliwag[] = INCBIN_U16("graphics/pokemon/poliwag/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Poliwag[] = INCBIN_U8("graphics/pokemon/poliwag/icon.4bpp"); @@ -2441,21 +2441,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Poliwag[] = INCBIN_U16("graphics/pokemon/poliwag/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Poliwag[] = INCBIN_U16("graphics/pokemon/poliwag/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Poliwhirl[] = INCBIN_U32("graphics/pokemon/poliwhirl/anim_front.4bpp.lz"); - const u32 gMonPalette_Poliwhirl[] = INCBIN_U32("graphics/pokemon/poliwhirl/normal.gbapal.lz"); + const u16 gMonPalette_Poliwhirl[] = INCBIN_U16("graphics/pokemon/poliwhirl/normal.gbapal"); const u32 gMonBackPic_Poliwhirl[] = INCBIN_U32("graphics/pokemon/poliwhirl/back.4bpp.lz"); - const u32 gMonShinyPalette_Poliwhirl[] = INCBIN_U32("graphics/pokemon/poliwhirl/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Poliwhirl[] = INCBIN_U16("graphics/pokemon/poliwhirl/shiny.gbapal"); #else const u32 gMonFrontPic_Poliwhirl[] = INCBIN_U32("graphics/pokemon/poliwhirl/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Poliwhirl[] = INCBIN_U32("graphics/pokemon/poliwhirl/normal_gba.gbapal.lz"); + const u16 gMonPalette_Poliwhirl[] = INCBIN_U16("graphics/pokemon/poliwhirl/normal_gba.gbapal"); const u32 gMonBackPic_Poliwhirl[] = INCBIN_U32("graphics/pokemon/poliwhirl/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Poliwhirl[] = INCBIN_U32("graphics/pokemon/poliwhirl/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Poliwhirl[] = INCBIN_U16("graphics/pokemon/poliwhirl/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Poliwhirl[] = INCBIN_U8("graphics/pokemon/poliwhirl/icon.4bpp"); @@ -2468,21 +2468,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Poliwhirl[] = INCBIN_U16("graphics/pokemon/poliwhirl/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Poliwhirl[] = INCBIN_U16("graphics/pokemon/poliwhirl/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Poliwrath[] = INCBIN_U32("graphics/pokemon/poliwrath/anim_front.4bpp.lz"); - const u32 gMonPalette_Poliwrath[] = INCBIN_U32("graphics/pokemon/poliwrath/normal.gbapal.lz"); + const u16 gMonPalette_Poliwrath[] = INCBIN_U16("graphics/pokemon/poliwrath/normal.gbapal"); const u32 gMonBackPic_Poliwrath[] = INCBIN_U32("graphics/pokemon/poliwrath/back.4bpp.lz"); - const u32 gMonShinyPalette_Poliwrath[] = INCBIN_U32("graphics/pokemon/poliwrath/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Poliwrath[] = INCBIN_U16("graphics/pokemon/poliwrath/shiny.gbapal"); #else const u32 gMonFrontPic_Poliwrath[] = INCBIN_U32("graphics/pokemon/poliwrath/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Poliwrath[] = INCBIN_U32("graphics/pokemon/poliwrath/normal_gba.gbapal.lz"); + const u16 gMonPalette_Poliwrath[] = INCBIN_U16("graphics/pokemon/poliwrath/normal_gba.gbapal"); const u32 gMonBackPic_Poliwrath[] = INCBIN_U32("graphics/pokemon/poliwrath/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Poliwrath[] = INCBIN_U32("graphics/pokemon/poliwrath/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Poliwrath[] = INCBIN_U16("graphics/pokemon/poliwrath/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Poliwrath[] = INCBIN_U8("graphics/pokemon/poliwrath/icon.4bpp"); @@ -2495,22 +2495,22 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Poliwrath[] = INCBIN_U16("graphics/pokemon/poliwrath/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Poliwrath[] = INCBIN_U16("graphics/pokemon/poliwrath/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if P_GEN_2_CROSS_EVOS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Politoed[] = INCBIN_U32("graphics/pokemon/politoed/anim_front.4bpp.lz"); - const u32 gMonPalette_Politoed[] = INCBIN_U32("graphics/pokemon/politoed/normal.gbapal.lz"); + const u16 gMonPalette_Politoed[] = INCBIN_U16("graphics/pokemon/politoed/normal.gbapal"); const u32 gMonBackPic_Politoed[] = INCBIN_U32("graphics/pokemon/politoed/back.4bpp.lz"); - const u32 gMonShinyPalette_Politoed[] = INCBIN_U32("graphics/pokemon/politoed/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Politoed[] = INCBIN_U16("graphics/pokemon/politoed/shiny.gbapal"); #else const u32 gMonFrontPic_Politoed[] = INCBIN_U32("graphics/pokemon/politoed/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Politoed[] = INCBIN_U32("graphics/pokemon/politoed/normal_gba.gbapal.lz"); + const u16 gMonPalette_Politoed[] = INCBIN_U16("graphics/pokemon/politoed/normal_gba.gbapal"); const u32 gMonBackPic_Politoed[] = INCBIN_U32("graphics/pokemon/politoed/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Politoed[] = INCBIN_U32("graphics/pokemon/politoed/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Politoed[] = INCBIN_U16("graphics/pokemon/politoed/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Politoed[] = INCBIN_U8("graphics/pokemon/politoed/icon.4bpp"); @@ -2523,8 +2523,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Politoed[] = INCBIN_U16("graphics/pokemon/politoed/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Politoed[] = INCBIN_U16("graphics/pokemon/politoed/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -2541,14 +2541,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_ABRA #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Abra[] = INCBIN_U32("graphics/pokemon/abra/anim_front.4bpp.lz"); - const u32 gMonPalette_Abra[] = INCBIN_U32("graphics/pokemon/abra/normal.gbapal.lz"); + const u16 gMonPalette_Abra[] = INCBIN_U16("graphics/pokemon/abra/normal.gbapal"); const u32 gMonBackPic_Abra[] = INCBIN_U32("graphics/pokemon/abra/back.4bpp.lz"); - const u32 gMonShinyPalette_Abra[] = INCBIN_U32("graphics/pokemon/abra/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Abra[] = INCBIN_U16("graphics/pokemon/abra/shiny.gbapal"); #else const u32 gMonFrontPic_Abra[] = INCBIN_U32("graphics/pokemon/abra/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Abra[] = INCBIN_U32("graphics/pokemon/abra/normal_gba.gbapal.lz"); + const u16 gMonPalette_Abra[] = INCBIN_U16("graphics/pokemon/abra/normal_gba.gbapal"); const u32 gMonBackPic_Abra[] = INCBIN_U32("graphics/pokemon/abra/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Abra[] = INCBIN_U32("graphics/pokemon/abra/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Abra[] = INCBIN_U16("graphics/pokemon/abra/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Abra[] = INCBIN_U8("graphics/pokemon/abra/icon.4bpp"); @@ -2561,21 +2561,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Abra[] = INCBIN_U16("graphics/pokemon/abra/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Abra[] = INCBIN_U16("graphics/pokemon/abra/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Kadabra[] = INCBIN_U32("graphics/pokemon/kadabra/anim_front.4bpp.lz"); - const u32 gMonPalette_Kadabra[] = INCBIN_U32("graphics/pokemon/kadabra/normal.gbapal.lz"); + const u16 gMonPalette_Kadabra[] = INCBIN_U16("graphics/pokemon/kadabra/normal.gbapal"); const u32 gMonBackPic_Kadabra[] = INCBIN_U32("graphics/pokemon/kadabra/back.4bpp.lz"); - const u32 gMonShinyPalette_Kadabra[] = INCBIN_U32("graphics/pokemon/kadabra/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Kadabra[] = INCBIN_U16("graphics/pokemon/kadabra/shiny.gbapal"); #else const u32 gMonFrontPic_Kadabra[] = INCBIN_U32("graphics/pokemon/kadabra/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Kadabra[] = INCBIN_U32("graphics/pokemon/kadabra/normal_gba.gbapal.lz"); + const u16 gMonPalette_Kadabra[] = INCBIN_U16("graphics/pokemon/kadabra/normal_gba.gbapal"); const u32 gMonBackPic_Kadabra[] = INCBIN_U32("graphics/pokemon/kadabra/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Kadabra[] = INCBIN_U32("graphics/pokemon/kadabra/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Kadabra[] = INCBIN_U16("graphics/pokemon/kadabra/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Kadabra[] = INCBIN_U8("graphics/pokemon/kadabra/icon.4bpp"); @@ -2588,8 +2588,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Kadabra[] = INCBIN_U16("graphics/pokemon/kadabra/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Kadabra[] = INCBIN_U16("graphics/pokemon/kadabra/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -2603,14 +2603,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Alakazam[] = INCBIN_U32("graphics/pokemon/alakazam/anim_front.4bpp.lz"); - const u32 gMonPalette_Alakazam[] = INCBIN_U32("graphics/pokemon/alakazam/normal.gbapal.lz"); + const u16 gMonPalette_Alakazam[] = INCBIN_U16("graphics/pokemon/alakazam/normal.gbapal"); const u32 gMonBackPic_Alakazam[] = INCBIN_U32("graphics/pokemon/alakazam/back.4bpp.lz"); - const u32 gMonShinyPalette_Alakazam[] = INCBIN_U32("graphics/pokemon/alakazam/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Alakazam[] = INCBIN_U16("graphics/pokemon/alakazam/shiny.gbapal"); #else const u32 gMonFrontPic_Alakazam[] = INCBIN_U32("graphics/pokemon/alakazam/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Alakazam[] = INCBIN_U32("graphics/pokemon/alakazam/normal_gba.gbapal.lz"); + const u16 gMonPalette_Alakazam[] = INCBIN_U16("graphics/pokemon/alakazam/normal_gba.gbapal"); const u32 gMonBackPic_Alakazam[] = INCBIN_U32("graphics/pokemon/alakazam/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Alakazam[] = INCBIN_U32("graphics/pokemon/alakazam/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Alakazam[] = INCBIN_U16("graphics/pokemon/alakazam/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Alakazam[] = INCBIN_U8("graphics/pokemon/alakazam/icon.4bpp"); @@ -2623,8 +2623,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Alakazam[] = INCBIN_U16("graphics/pokemon/alakazam/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Alakazam[] = INCBIN_U16("graphics/pokemon/alakazam/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -2638,15 +2638,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_MEGA_EVOLUTIONS const u32 gMonFrontPic_AlakazamMega[] = INCBIN_U32("graphics/pokemon/alakazam/mega/front.4bpp.lz"); - const u32 gMonPalette_AlakazamMega[] = INCBIN_U32("graphics/pokemon/alakazam/mega/normal.gbapal.lz"); + const u16 gMonPalette_AlakazamMega[] = INCBIN_U16("graphics/pokemon/alakazam/mega/normal.gbapal"); 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 u16 gMonShinyPalette_AlakazamMega[] = INCBIN_U16("graphics/pokemon/alakazam/mega/shiny.gbapal"); const u8 gMonIcon_AlakazamMega[] = INCBIN_U8("graphics/pokemon/alakazam/mega/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS 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"); + const u16 gOverworldPalette_AlakazamMega[] = INCBIN_U16("graphics/pokemon/alakazam/mega/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_AlakazamMega[] = INCBIN_U16("graphics/pokemon/alakazam/mega/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS #endif //P_MEGA_EVOLUTIONS @@ -2655,14 +2655,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_MACHOP #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Machop[] = INCBIN_U32("graphics/pokemon/machop/anim_front.4bpp.lz"); - const u32 gMonPalette_Machop[] = INCBIN_U32("graphics/pokemon/machop/normal.gbapal.lz"); + const u16 gMonPalette_Machop[] = INCBIN_U16("graphics/pokemon/machop/normal.gbapal"); const u32 gMonBackPic_Machop[] = INCBIN_U32("graphics/pokemon/machop/back.4bpp.lz"); - const u32 gMonShinyPalette_Machop[] = INCBIN_U32("graphics/pokemon/machop/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Machop[] = INCBIN_U16("graphics/pokemon/machop/shiny.gbapal"); #else const u32 gMonFrontPic_Machop[] = INCBIN_U32("graphics/pokemon/machop/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Machop[] = INCBIN_U32("graphics/pokemon/machop/normal_gba.gbapal.lz"); + const u16 gMonPalette_Machop[] = INCBIN_U16("graphics/pokemon/machop/normal_gba.gbapal"); const u32 gMonBackPic_Machop[] = INCBIN_U32("graphics/pokemon/machop/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Machop[] = INCBIN_U32("graphics/pokemon/machop/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Machop[] = INCBIN_U16("graphics/pokemon/machop/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Machop[] = INCBIN_U8("graphics/pokemon/machop/icon.4bpp"); @@ -2675,21 +2675,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Machop[] = INCBIN_U16("graphics/pokemon/machop/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Machop[] = INCBIN_U16("graphics/pokemon/machop/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Machoke[] = INCBIN_U32("graphics/pokemon/machoke/anim_front.4bpp.lz"); - const u32 gMonPalette_Machoke[] = INCBIN_U32("graphics/pokemon/machoke/normal.gbapal.lz"); + const u16 gMonPalette_Machoke[] = INCBIN_U16("graphics/pokemon/machoke/normal.gbapal"); const u32 gMonBackPic_Machoke[] = INCBIN_U32("graphics/pokemon/machoke/back.4bpp.lz"); - const u32 gMonShinyPalette_Machoke[] = INCBIN_U32("graphics/pokemon/machoke/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Machoke[] = INCBIN_U16("graphics/pokemon/machoke/shiny.gbapal"); #else const u32 gMonFrontPic_Machoke[] = INCBIN_U32("graphics/pokemon/machoke/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Machoke[] = INCBIN_U32("graphics/pokemon/machoke/normal_gba.gbapal.lz"); + const u16 gMonPalette_Machoke[] = INCBIN_U16("graphics/pokemon/machoke/normal_gba.gbapal"); const u32 gMonBackPic_Machoke[] = INCBIN_U32("graphics/pokemon/machoke/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Machoke[] = INCBIN_U32("graphics/pokemon/machoke/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Machoke[] = INCBIN_U16("graphics/pokemon/machoke/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Machoke[] = INCBIN_U8("graphics/pokemon/machoke/icon.4bpp"); @@ -2702,21 +2702,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Machoke[] = INCBIN_U16("graphics/pokemon/machoke/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Machoke[] = INCBIN_U16("graphics/pokemon/machoke/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Machamp[] = INCBIN_U32("graphics/pokemon/machamp/anim_front.4bpp.lz"); - const u32 gMonPalette_Machamp[] = INCBIN_U32("graphics/pokemon/machamp/normal.gbapal.lz"); + const u16 gMonPalette_Machamp[] = INCBIN_U16("graphics/pokemon/machamp/normal.gbapal"); const u32 gMonBackPic_Machamp[] = INCBIN_U32("graphics/pokemon/machamp/back.4bpp.lz"); - const u32 gMonShinyPalette_Machamp[] = INCBIN_U32("graphics/pokemon/machamp/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Machamp[] = INCBIN_U16("graphics/pokemon/machamp/shiny.gbapal"); #else const u32 gMonFrontPic_Machamp[] = INCBIN_U32("graphics/pokemon/machamp/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Machamp[] = INCBIN_U32("graphics/pokemon/machamp/normal_gba.gbapal.lz"); + const u16 gMonPalette_Machamp[] = INCBIN_U16("graphics/pokemon/machamp/normal_gba.gbapal"); const u32 gMonBackPic_Machamp[] = INCBIN_U32("graphics/pokemon/machamp/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Machamp[] = INCBIN_U32("graphics/pokemon/machamp/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Machamp[] = INCBIN_U16("graphics/pokemon/machamp/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Machamp[] = INCBIN_U8("graphics/pokemon/machamp/icon.4bpp"); @@ -2729,22 +2729,22 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Machamp[] = INCBIN_U16("graphics/pokemon/machamp/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Machamp[] = INCBIN_U16("graphics/pokemon/machamp/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if P_GIGANTAMAX_FORMS const u32 gMonFrontPic_MachampGmax[] = INCBIN_U32("graphics/pokemon/machamp/gmax/front.4bpp.lz"); const u32 gMonBackPic_MachampGmax[] = INCBIN_U32("graphics/pokemon/machamp/gmax/back.4bpp.lz"); - const u32 gMonPalette_MachampGmax[] = INCBIN_U32("graphics/pokemon/machamp/gmax/normal.gbapal.lz"); - const u32 gMonShinyPalette_MachampGmax[] = INCBIN_U32("graphics/pokemon/machamp/gmax/shiny.gbapal.lz"); + const u16 gMonPalette_MachampGmax[] = INCBIN_U16("graphics/pokemon/machamp/gmax/normal.gbapal"); + const u16 gMonShinyPalette_MachampGmax[] = INCBIN_U16("graphics/pokemon/machamp/gmax/shiny.gbapal"); const u8 gMonIcon_MachampGmax[] = INCBIN_U8("graphics/pokemon/machamp/gmax/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS // const u32 gObjectEventPic_MachampGmax[] = INCBIN_COMP("graphics/pokemon/machamp/gmax/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - // const u32 gOverworldPalette_MachampGmax[] = INCBIN_U32("graphics/pokemon/machamp/gmax/overworld_normal.gbapal.lz"); - // const u32 gShinyOverworldPalette_MachampGmax[] = INCBIN_U32("graphics/pokemon/machamp/gmax/overworld_shiny.gbapal.lz"); + // const u16 gOverworldPalette_MachampGmax[] = INCBIN_U16("graphics/pokemon/machamp/gmax/overworld_normal.gbapal"); + // const u16 gShinyOverworldPalette_MachampGmax[] = INCBIN_U16("graphics/pokemon/machamp/gmax/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GIGANTAMAX_FORMS @@ -2753,14 +2753,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_BELLSPROUT #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Bellsprout[] = INCBIN_U32("graphics/pokemon/bellsprout/anim_front.4bpp.lz"); - const u32 gMonPalette_Bellsprout[] = INCBIN_U32("graphics/pokemon/bellsprout/normal.gbapal.lz"); + const u16 gMonPalette_Bellsprout[] = INCBIN_U16("graphics/pokemon/bellsprout/normal.gbapal"); const u32 gMonBackPic_Bellsprout[] = INCBIN_U32("graphics/pokemon/bellsprout/back.4bpp.lz"); - const u32 gMonShinyPalette_Bellsprout[] = INCBIN_U32("graphics/pokemon/bellsprout/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Bellsprout[] = INCBIN_U16("graphics/pokemon/bellsprout/shiny.gbapal"); #else const u32 gMonFrontPic_Bellsprout[] = INCBIN_U32("graphics/pokemon/bellsprout/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Bellsprout[] = INCBIN_U32("graphics/pokemon/bellsprout/normal_gba.gbapal.lz"); + const u16 gMonPalette_Bellsprout[] = INCBIN_U16("graphics/pokemon/bellsprout/normal_gba.gbapal"); const u32 gMonBackPic_Bellsprout[] = INCBIN_U32("graphics/pokemon/bellsprout/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Bellsprout[] = INCBIN_U32("graphics/pokemon/bellsprout/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Bellsprout[] = INCBIN_U16("graphics/pokemon/bellsprout/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Bellsprout[] = INCBIN_U8("graphics/pokemon/bellsprout/icon.4bpp"); @@ -2773,21 +2773,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Bellsprout[] = INCBIN_U16("graphics/pokemon/bellsprout/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Bellsprout[] = INCBIN_U16("graphics/pokemon/bellsprout/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Weepinbell[] = INCBIN_U32("graphics/pokemon/weepinbell/anim_front.4bpp.lz"); - const u32 gMonPalette_Weepinbell[] = INCBIN_U32("graphics/pokemon/weepinbell/normal.gbapal.lz"); + const u16 gMonPalette_Weepinbell[] = INCBIN_U16("graphics/pokemon/weepinbell/normal.gbapal"); const u32 gMonBackPic_Weepinbell[] = INCBIN_U32("graphics/pokemon/weepinbell/back.4bpp.lz"); - const u32 gMonShinyPalette_Weepinbell[] = INCBIN_U32("graphics/pokemon/weepinbell/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Weepinbell[] = INCBIN_U16("graphics/pokemon/weepinbell/shiny.gbapal"); #else const u32 gMonFrontPic_Weepinbell[] = INCBIN_U32("graphics/pokemon/weepinbell/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Weepinbell[] = INCBIN_U32("graphics/pokemon/weepinbell/normal_gba.gbapal.lz"); + const u16 gMonPalette_Weepinbell[] = INCBIN_U16("graphics/pokemon/weepinbell/normal_gba.gbapal"); const u32 gMonBackPic_Weepinbell[] = INCBIN_U32("graphics/pokemon/weepinbell/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Weepinbell[] = INCBIN_U32("graphics/pokemon/weepinbell/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Weepinbell[] = INCBIN_U16("graphics/pokemon/weepinbell/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Weepinbell[] = INCBIN_U8("graphics/pokemon/weepinbell/icon.4bpp"); @@ -2800,21 +2800,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Weepinbell[] = INCBIN_U16("graphics/pokemon/weepinbell/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Weepinbell[] = INCBIN_U16("graphics/pokemon/weepinbell/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Victreebel[] = INCBIN_U32("graphics/pokemon/victreebel/anim_front.4bpp.lz"); - const u32 gMonPalette_Victreebel[] = INCBIN_U32("graphics/pokemon/victreebel/normal.gbapal.lz"); + const u16 gMonPalette_Victreebel[] = INCBIN_U16("graphics/pokemon/victreebel/normal.gbapal"); const u32 gMonBackPic_Victreebel[] = INCBIN_U32("graphics/pokemon/victreebel/back.4bpp.lz"); - const u32 gMonShinyPalette_Victreebel[] = INCBIN_U32("graphics/pokemon/victreebel/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Victreebel[] = INCBIN_U16("graphics/pokemon/victreebel/shiny.gbapal"); #else const u32 gMonFrontPic_Victreebel[] = INCBIN_U32("graphics/pokemon/victreebel/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Victreebel[] = INCBIN_U32("graphics/pokemon/victreebel/normal_gba.gbapal.lz"); + const u16 gMonPalette_Victreebel[] = INCBIN_U16("graphics/pokemon/victreebel/normal_gba.gbapal"); const u32 gMonBackPic_Victreebel[] = INCBIN_U32("graphics/pokemon/victreebel/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Victreebel[] = INCBIN_U32("graphics/pokemon/victreebel/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Victreebel[] = INCBIN_U16("graphics/pokemon/victreebel/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Victreebel[] = INCBIN_U8("graphics/pokemon/victreebel/icon.4bpp"); @@ -2827,8 +2827,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Victreebel[] = INCBIN_U16("graphics/pokemon/victreebel/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Victreebel[] = INCBIN_U16("graphics/pokemon/victreebel/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_BELLSPROUT @@ -2836,14 +2836,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_TENTACOOL #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Tentacool[] = INCBIN_U32("graphics/pokemon/tentacool/anim_front.4bpp.lz"); - const u32 gMonPalette_Tentacool[] = INCBIN_U32("graphics/pokemon/tentacool/normal.gbapal.lz"); + const u16 gMonPalette_Tentacool[] = INCBIN_U16("graphics/pokemon/tentacool/normal.gbapal"); const u32 gMonBackPic_Tentacool[] = INCBIN_U32("graphics/pokemon/tentacool/back.4bpp.lz"); - const u32 gMonShinyPalette_Tentacool[] = INCBIN_U32("graphics/pokemon/tentacool/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Tentacool[] = INCBIN_U16("graphics/pokemon/tentacool/shiny.gbapal"); #else const u32 gMonFrontPic_Tentacool[] = INCBIN_U32("graphics/pokemon/tentacool/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Tentacool[] = INCBIN_U32("graphics/pokemon/tentacool/normal_gba.gbapal.lz"); + const u16 gMonPalette_Tentacool[] = INCBIN_U16("graphics/pokemon/tentacool/normal_gba.gbapal"); const u32 gMonBackPic_Tentacool[] = INCBIN_U32("graphics/pokemon/tentacool/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Tentacool[] = INCBIN_U32("graphics/pokemon/tentacool/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Tentacool[] = INCBIN_U16("graphics/pokemon/tentacool/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Tentacool[] = INCBIN_U8("graphics/pokemon/tentacool/icon.4bpp"); @@ -2856,21 +2856,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Tentacool[] = INCBIN_U16("graphics/pokemon/tentacool/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Tentacool[] = INCBIN_U16("graphics/pokemon/tentacool/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Tentacruel[] = INCBIN_U32("graphics/pokemon/tentacruel/anim_front.4bpp.lz"); - const u32 gMonPalette_Tentacruel[] = INCBIN_U32("graphics/pokemon/tentacruel/normal.gbapal.lz"); + const u16 gMonPalette_Tentacruel[] = INCBIN_U16("graphics/pokemon/tentacruel/normal.gbapal"); const u32 gMonBackPic_Tentacruel[] = INCBIN_U32("graphics/pokemon/tentacruel/back.4bpp.lz"); - const u32 gMonShinyPalette_Tentacruel[] = INCBIN_U32("graphics/pokemon/tentacruel/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Tentacruel[] = INCBIN_U16("graphics/pokemon/tentacruel/shiny.gbapal"); #else const u32 gMonFrontPic_Tentacruel[] = INCBIN_U32("graphics/pokemon/tentacruel/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Tentacruel[] = INCBIN_U32("graphics/pokemon/tentacruel/normal_gba.gbapal.lz"); + const u16 gMonPalette_Tentacruel[] = INCBIN_U16("graphics/pokemon/tentacruel/normal_gba.gbapal"); const u32 gMonBackPic_Tentacruel[] = INCBIN_U32("graphics/pokemon/tentacruel/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Tentacruel[] = INCBIN_U32("graphics/pokemon/tentacruel/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Tentacruel[] = INCBIN_U16("graphics/pokemon/tentacruel/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Tentacruel[] = INCBIN_U8("graphics/pokemon/tentacruel/icon.4bpp"); @@ -2883,8 +2883,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Tentacruel[] = INCBIN_U16("graphics/pokemon/tentacruel/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Tentacruel[] = INCBIN_U16("graphics/pokemon/tentacruel/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_TENTACOOL @@ -2892,14 +2892,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_GEODUDE #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Geodude[] = INCBIN_U32("graphics/pokemon/geodude/anim_front.4bpp.lz"); - const u32 gMonPalette_Geodude[] = INCBIN_U32("graphics/pokemon/geodude/normal.gbapal.lz"); + const u16 gMonPalette_Geodude[] = INCBIN_U16("graphics/pokemon/geodude/normal.gbapal"); const u32 gMonBackPic_Geodude[] = INCBIN_U32("graphics/pokemon/geodude/back.4bpp.lz"); - const u32 gMonShinyPalette_Geodude[] = INCBIN_U32("graphics/pokemon/geodude/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Geodude[] = INCBIN_U16("graphics/pokemon/geodude/shiny.gbapal"); #else const u32 gMonFrontPic_Geodude[] = INCBIN_U32("graphics/pokemon/geodude/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Geodude[] = INCBIN_U32("graphics/pokemon/geodude/normal_gba.gbapal.lz"); + const u16 gMonPalette_Geodude[] = INCBIN_U16("graphics/pokemon/geodude/normal_gba.gbapal"); const u32 gMonBackPic_Geodude[] = INCBIN_U32("graphics/pokemon/geodude/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Geodude[] = INCBIN_U32("graphics/pokemon/geodude/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Geodude[] = INCBIN_U16("graphics/pokemon/geodude/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Geodude[] = INCBIN_U8("graphics/pokemon/geodude/icon.4bpp"); @@ -2912,21 +2912,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Geodude[] = INCBIN_U16("graphics/pokemon/geodude/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Geodude[] = INCBIN_U16("graphics/pokemon/geodude/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Graveler[] = INCBIN_U32("graphics/pokemon/graveler/anim_front.4bpp.lz"); - const u32 gMonPalette_Graveler[] = INCBIN_U32("graphics/pokemon/graveler/normal.gbapal.lz"); + const u16 gMonPalette_Graveler[] = INCBIN_U16("graphics/pokemon/graveler/normal.gbapal"); const u32 gMonBackPic_Graveler[] = INCBIN_U32("graphics/pokemon/graveler/back.4bpp.lz"); - const u32 gMonShinyPalette_Graveler[] = INCBIN_U32("graphics/pokemon/graveler/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Graveler[] = INCBIN_U16("graphics/pokemon/graveler/shiny.gbapal"); #else const u32 gMonFrontPic_Graveler[] = INCBIN_U32("graphics/pokemon/graveler/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Graveler[] = INCBIN_U32("graphics/pokemon/graveler/normal_gba.gbapal.lz"); + const u16 gMonPalette_Graveler[] = INCBIN_U16("graphics/pokemon/graveler/normal_gba.gbapal"); const u32 gMonBackPic_Graveler[] = INCBIN_U32("graphics/pokemon/graveler/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Graveler[] = INCBIN_U32("graphics/pokemon/graveler/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Graveler[] = INCBIN_U16("graphics/pokemon/graveler/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Graveler[] = INCBIN_U8("graphics/pokemon/graveler/icon.4bpp"); @@ -2939,21 +2939,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Graveler[] = INCBIN_U16("graphics/pokemon/graveler/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Graveler[] = INCBIN_U16("graphics/pokemon/graveler/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Golem[] = INCBIN_U32("graphics/pokemon/golem/anim_front.4bpp.lz"); - const u32 gMonPalette_Golem[] = INCBIN_U32("graphics/pokemon/golem/normal.gbapal.lz"); + const u16 gMonPalette_Golem[] = INCBIN_U16("graphics/pokemon/golem/normal.gbapal"); const u32 gMonBackPic_Golem[] = INCBIN_U32("graphics/pokemon/golem/back.4bpp.lz"); - const u32 gMonShinyPalette_Golem[] = INCBIN_U32("graphics/pokemon/golem/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Golem[] = INCBIN_U16("graphics/pokemon/golem/shiny.gbapal"); #else const u32 gMonFrontPic_Golem[] = INCBIN_U32("graphics/pokemon/golem/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Golem[] = INCBIN_U32("graphics/pokemon/golem/normal_gba.gbapal.lz"); + const u16 gMonPalette_Golem[] = INCBIN_U16("graphics/pokemon/golem/normal_gba.gbapal"); const u32 gMonBackPic_Golem[] = INCBIN_U32("graphics/pokemon/golem/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Golem[] = INCBIN_U32("graphics/pokemon/golem/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Golem[] = INCBIN_U16("graphics/pokemon/golem/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Golem[] = INCBIN_U8("graphics/pokemon/golem/icon.4bpp"); @@ -2970,48 +2970,48 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Golem[] = INCBIN_U16("graphics/pokemon/golem/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Golem[] = INCBIN_U16("graphics/pokemon/golem/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if P_ALOLAN_FORMS const u32 gMonFrontPic_GeodudeAlola[] = INCBIN_U32("graphics/pokemon/geodude/alola/front.4bpp.lz"); - const u32 gMonPalette_GeodudeAlola[] = INCBIN_U32("graphics/pokemon/geodude/alola/normal.gbapal.lz"); + const u16 gMonPalette_GeodudeAlola[] = INCBIN_U16("graphics/pokemon/geodude/alola/normal.gbapal"); const u32 gMonBackPic_GeodudeAlola[] = INCBIN_U32("graphics/pokemon/geodude/alola/back.4bpp.lz"); - const u32 gMonShinyPalette_GeodudeAlola[] = INCBIN_U32("graphics/pokemon/geodude/alola/shiny.gbapal.lz"); + const u16 gMonShinyPalette_GeodudeAlola[] = INCBIN_U16("graphics/pokemon/geodude/alola/shiny.gbapal"); const u8 gMonIcon_GeodudeAlola[] = INCBIN_U8("graphics/pokemon/geodude/alola/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS const u32 gObjectEventPic_GeodudeAlola[] = INCBIN_COMP("graphics/pokemon/geodude/alola/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - const u32 gOverworldPalette_GeodudeAlola[] = INCBIN_U32("graphics/pokemon/geodude/alola/overworld_normal.gbapal.lz"); - const u32 gShinyOverworldPalette_GeodudeAlola[] = INCBIN_U32("graphics/pokemon/geodude/alola/overworld_shiny.gbapal.lz"); + const u16 gOverworldPalette_GeodudeAlola[] = INCBIN_U16("graphics/pokemon/geodude/alola/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_GeodudeAlola[] = INCBIN_U16("graphics/pokemon/geodude/alola/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_GravelerAlola[] = INCBIN_U32("graphics/pokemon/graveler/alola/front.4bpp.lz"); - const u32 gMonPalette_GravelerAlola[] = INCBIN_U32("graphics/pokemon/graveler/alola/normal.gbapal.lz"); + const u16 gMonPalette_GravelerAlola[] = INCBIN_U16("graphics/pokemon/graveler/alola/normal.gbapal"); const u32 gMonBackPic_GravelerAlola[] = INCBIN_U32("graphics/pokemon/graveler/alola/back.4bpp.lz"); - const u32 gMonShinyPalette_GravelerAlola[] = INCBIN_U32("graphics/pokemon/graveler/alola/shiny.gbapal.lz"); + const u16 gMonShinyPalette_GravelerAlola[] = INCBIN_U16("graphics/pokemon/graveler/alola/shiny.gbapal"); const u8 gMonIcon_GravelerAlola[] = INCBIN_U8("graphics/pokemon/graveler/alola/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS const u32 gObjectEventPic_GravelerAlola[] = INCBIN_COMP("graphics/pokemon/graveler/alola/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - const u32 gOverworldPalette_GravelerAlola[] = INCBIN_U32("graphics/pokemon/graveler/alola/overworld_normal.gbapal.lz"); - const u32 gShinyOverworldPalette_GravelerAlola[] = INCBIN_U32("graphics/pokemon/graveler/alola/overworld_shiny.gbapal.lz"); + const u16 gOverworldPalette_GravelerAlola[] = INCBIN_U16("graphics/pokemon/graveler/alola/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_GravelerAlola[] = INCBIN_U16("graphics/pokemon/graveler/alola/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_GolemAlola[] = INCBIN_U32("graphics/pokemon/golem/alola/front.4bpp.lz"); - const u32 gMonPalette_GolemAlola[] = INCBIN_U32("graphics/pokemon/golem/alola/normal.gbapal.lz"); + const u16 gMonPalette_GolemAlola[] = INCBIN_U16("graphics/pokemon/golem/alola/normal.gbapal"); const u32 gMonBackPic_GolemAlola[] = INCBIN_U32("graphics/pokemon/golem/alola/back.4bpp.lz"); - const u32 gMonShinyPalette_GolemAlola[] = INCBIN_U32("graphics/pokemon/golem/alola/shiny.gbapal.lz"); + const u16 gMonShinyPalette_GolemAlola[] = INCBIN_U16("graphics/pokemon/golem/alola/shiny.gbapal"); const u8 gMonIcon_GolemAlola[] = INCBIN_U8("graphics/pokemon/golem/alola/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS const u32 gObjectEventPic_GolemAlola[] = INCBIN_COMP("graphics/pokemon/golem/alola/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - const u32 gOverworldPalette_GolemAlola[] = INCBIN_U32("graphics/pokemon/golem/alola/overworld_normal.gbapal.lz"); - const u32 gShinyOverworldPalette_GolemAlola[] = INCBIN_U32("graphics/pokemon/golem/alola/overworld_shiny.gbapal.lz"); + const u16 gOverworldPalette_GolemAlola[] = INCBIN_U16("graphics/pokemon/golem/alola/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_GolemAlola[] = INCBIN_U16("graphics/pokemon/golem/alola/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_ALOLAN_FORMS @@ -3020,14 +3020,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_PONYTA #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Ponyta[] = INCBIN_U32("graphics/pokemon/ponyta/anim_front.4bpp.lz"); - const u32 gMonPalette_Ponyta[] = INCBIN_U32("graphics/pokemon/ponyta/normal.gbapal.lz"); + const u16 gMonPalette_Ponyta[] = INCBIN_U16("graphics/pokemon/ponyta/normal.gbapal"); const u32 gMonBackPic_Ponyta[] = INCBIN_U32("graphics/pokemon/ponyta/back.4bpp.lz"); - const u32 gMonShinyPalette_Ponyta[] = INCBIN_U32("graphics/pokemon/ponyta/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Ponyta[] = INCBIN_U16("graphics/pokemon/ponyta/shiny.gbapal"); #else const u32 gMonFrontPic_Ponyta[] = INCBIN_U32("graphics/pokemon/ponyta/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Ponyta[] = INCBIN_U32("graphics/pokemon/ponyta/normal_gba.gbapal.lz"); + const u16 gMonPalette_Ponyta[] = INCBIN_U16("graphics/pokemon/ponyta/normal_gba.gbapal"); const u32 gMonBackPic_Ponyta[] = INCBIN_U32("graphics/pokemon/ponyta/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Ponyta[] = INCBIN_U32("graphics/pokemon/ponyta/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Ponyta[] = INCBIN_U16("graphics/pokemon/ponyta/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Ponyta[] = INCBIN_U8("graphics/pokemon/ponyta/icon.4bpp"); @@ -3040,21 +3040,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Ponyta[] = INCBIN_U16("graphics/pokemon/ponyta/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Ponyta[] = INCBIN_U16("graphics/pokemon/ponyta/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Rapidash[] = INCBIN_U32("graphics/pokemon/rapidash/anim_front.4bpp.lz"); - const u32 gMonPalette_Rapidash[] = INCBIN_U32("graphics/pokemon/rapidash/normal.gbapal.lz"); + const u16 gMonPalette_Rapidash[] = INCBIN_U16("graphics/pokemon/rapidash/normal.gbapal"); const u32 gMonBackPic_Rapidash[] = INCBIN_U32("graphics/pokemon/rapidash/back.4bpp.lz"); - const u32 gMonShinyPalette_Rapidash[] = INCBIN_U32("graphics/pokemon/rapidash/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Rapidash[] = INCBIN_U16("graphics/pokemon/rapidash/shiny.gbapal"); #else const u32 gMonFrontPic_Rapidash[] = INCBIN_U32("graphics/pokemon/rapidash/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Rapidash[] = INCBIN_U32("graphics/pokemon/rapidash/normal_gba.gbapal.lz"); + const u16 gMonPalette_Rapidash[] = INCBIN_U16("graphics/pokemon/rapidash/normal_gba.gbapal"); const u32 gMonBackPic_Rapidash[] = INCBIN_U32("graphics/pokemon/rapidash/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Rapidash[] = INCBIN_U32("graphics/pokemon/rapidash/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Rapidash[] = INCBIN_U16("graphics/pokemon/rapidash/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Rapidash[] = INCBIN_U8("graphics/pokemon/rapidash/icon.4bpp"); @@ -3067,35 +3067,35 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Rapidash[] = INCBIN_U16("graphics/pokemon/rapidash/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Rapidash[] = INCBIN_U16("graphics/pokemon/rapidash/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if P_GALARIAN_FORMS const u32 gMonFrontPic_PonytaGalar[] = INCBIN_U32("graphics/pokemon/ponyta/galar/front.4bpp.lz"); - const u32 gMonPalette_PonytaGalar[] = INCBIN_U32("graphics/pokemon/ponyta/galar/normal.gbapal.lz"); + const u16 gMonPalette_PonytaGalar[] = INCBIN_U16("graphics/pokemon/ponyta/galar/normal.gbapal"); const u32 gMonBackPic_PonytaGalar[] = INCBIN_U32("graphics/pokemon/ponyta/galar/back.4bpp.lz"); - const u32 gMonShinyPalette_PonytaGalar[] = INCBIN_U32("graphics/pokemon/ponyta/galar/shiny.gbapal.lz"); + const u16 gMonShinyPalette_PonytaGalar[] = INCBIN_U16("graphics/pokemon/ponyta/galar/shiny.gbapal"); const u8 gMonIcon_PonytaGalar[] = INCBIN_U8("graphics/pokemon/ponyta/galar/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS const u32 gObjectEventPic_PonytaGalar[] = INCBIN_COMP("graphics/pokemon/ponyta/galar/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - const u32 gOverworldPalette_PonytaGalar[] = INCBIN_U32("graphics/pokemon/ponyta/galar/overworld_normal.gbapal.lz"); - const u32 gShinyOverworldPalette_PonytaGalar[] = INCBIN_U32("graphics/pokemon/ponyta/galar/overworld_shiny.gbapal.lz"); + const u16 gOverworldPalette_PonytaGalar[] = INCBIN_U16("graphics/pokemon/ponyta/galar/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_PonytaGalar[] = INCBIN_U16("graphics/pokemon/ponyta/galar/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_RapidashGalar[] = INCBIN_U32("graphics/pokemon/rapidash/galar/front.4bpp.lz"); - const u32 gMonPalette_RapidashGalar[] = INCBIN_U32("graphics/pokemon/rapidash/galar/normal.gbapal.lz"); + const u16 gMonPalette_RapidashGalar[] = INCBIN_U16("graphics/pokemon/rapidash/galar/normal.gbapal"); const u32 gMonBackPic_RapidashGalar[] = INCBIN_U32("graphics/pokemon/rapidash/galar/back.4bpp.lz"); - const u32 gMonShinyPalette_RapidashGalar[] = INCBIN_U32("graphics/pokemon/rapidash/galar/shiny.gbapal.lz"); + const u16 gMonShinyPalette_RapidashGalar[] = INCBIN_U16("graphics/pokemon/rapidash/galar/shiny.gbapal"); const u8 gMonIcon_RapidashGalar[] = INCBIN_U8("graphics/pokemon/rapidash/galar/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS const u32 gObjectEventPic_RapidashGalar[] = INCBIN_COMP("graphics/pokemon/rapidash/galar/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - const u32 gOverworldPalette_RapidashGalar[] = INCBIN_U32("graphics/pokemon/rapidash/galar/overworld_normal.gbapal.lz"); - const u32 gShinyOverworldPalette_RapidashGalar[] = INCBIN_U32("graphics/pokemon/rapidash/galar/overworld_shiny.gbapal.lz"); + const u16 gOverworldPalette_RapidashGalar[] = INCBIN_U16("graphics/pokemon/rapidash/galar/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_RapidashGalar[] = INCBIN_U16("graphics/pokemon/rapidash/galar/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GALARIAN_FORMS @@ -3104,14 +3104,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_SLOWPOKE #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Slowpoke[] = INCBIN_U32("graphics/pokemon/slowpoke/anim_front.4bpp.lz"); - const u32 gMonPalette_Slowpoke[] = INCBIN_U32("graphics/pokemon/slowpoke/normal.gbapal.lz"); + const u16 gMonPalette_Slowpoke[] = INCBIN_U16("graphics/pokemon/slowpoke/normal.gbapal"); const u32 gMonBackPic_Slowpoke[] = INCBIN_U32("graphics/pokemon/slowpoke/back.4bpp.lz"); - const u32 gMonShinyPalette_Slowpoke[] = INCBIN_U32("graphics/pokemon/slowpoke/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Slowpoke[] = INCBIN_U16("graphics/pokemon/slowpoke/shiny.gbapal"); #else const u32 gMonFrontPic_Slowpoke[] = INCBIN_U32("graphics/pokemon/slowpoke/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Slowpoke[] = INCBIN_U32("graphics/pokemon/slowpoke/normal_gba.gbapal.lz"); + const u16 gMonPalette_Slowpoke[] = INCBIN_U16("graphics/pokemon/slowpoke/normal_gba.gbapal"); const u32 gMonBackPic_Slowpoke[] = INCBIN_U32("graphics/pokemon/slowpoke/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Slowpoke[] = INCBIN_U32("graphics/pokemon/slowpoke/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Slowpoke[] = INCBIN_U16("graphics/pokemon/slowpoke/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Slowpoke[] = INCBIN_U8("graphics/pokemon/slowpoke/icon.4bpp"); @@ -3124,21 +3124,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Slowpoke[] = INCBIN_U16("graphics/pokemon/slowpoke/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Slowpoke[] = INCBIN_U16("graphics/pokemon/slowpoke/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Slowbro[] = INCBIN_U32("graphics/pokemon/slowbro/anim_front.4bpp.lz"); - const u32 gMonPalette_Slowbro[] = INCBIN_U32("graphics/pokemon/slowbro/normal.gbapal.lz"); + const u16 gMonPalette_Slowbro[] = INCBIN_U16("graphics/pokemon/slowbro/normal.gbapal"); const u32 gMonBackPic_Slowbro[] = INCBIN_U32("graphics/pokemon/slowbro/back.4bpp.lz"); - const u32 gMonShinyPalette_Slowbro[] = INCBIN_U32("graphics/pokemon/slowbro/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Slowbro[] = INCBIN_U16("graphics/pokemon/slowbro/shiny.gbapal"); #else const u32 gMonFrontPic_Slowbro[] = INCBIN_U32("graphics/pokemon/slowbro/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Slowbro[] = INCBIN_U32("graphics/pokemon/slowbro/normal_gba.gbapal.lz"); + const u16 gMonPalette_Slowbro[] = INCBIN_U16("graphics/pokemon/slowbro/normal_gba.gbapal"); const u32 gMonBackPic_Slowbro[] = INCBIN_U32("graphics/pokemon/slowbro/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Slowbro[] = INCBIN_U32("graphics/pokemon/slowbro/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Slowbro[] = INCBIN_U16("graphics/pokemon/slowbro/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Slowbro[] = INCBIN_U8("graphics/pokemon/slowbro/icon.4bpp"); @@ -3151,22 +3151,22 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Slowbro[] = INCBIN_U16("graphics/pokemon/slowbro/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Slowbro[] = INCBIN_U16("graphics/pokemon/slowbro/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if P_GEN_2_CROSS_EVOS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Slowking[] = INCBIN_U32("graphics/pokemon/slowking/anim_front.4bpp.lz"); - const u32 gMonPalette_Slowking[] = INCBIN_U32("graphics/pokemon/slowking/normal.gbapal.lz"); + const u16 gMonPalette_Slowking[] = INCBIN_U16("graphics/pokemon/slowking/normal.gbapal"); const u32 gMonBackPic_Slowking[] = INCBIN_U32("graphics/pokemon/slowking/back.4bpp.lz"); - const u32 gMonShinyPalette_Slowking[] = INCBIN_U32("graphics/pokemon/slowking/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Slowking[] = INCBIN_U16("graphics/pokemon/slowking/shiny.gbapal"); #else const u32 gMonFrontPic_Slowking[] = INCBIN_U32("graphics/pokemon/slowking/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Slowking[] = INCBIN_U32("graphics/pokemon/slowking/normal_gba.gbapal.lz"); + const u16 gMonPalette_Slowking[] = INCBIN_U16("graphics/pokemon/slowking/normal_gba.gbapal"); const u32 gMonBackPic_Slowking[] = INCBIN_U32("graphics/pokemon/slowking/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Slowking[] = INCBIN_U32("graphics/pokemon/slowking/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Slowking[] = INCBIN_U16("graphics/pokemon/slowking/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Slowking[] = INCBIN_U8("graphics/pokemon/slowking/icon.4bpp"); @@ -3179,65 +3179,65 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Slowking[] = INCBIN_U16("graphics/pokemon/slowking/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Slowking[] = INCBIN_U16("graphics/pokemon/slowking/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_2_CROSS_EVOS #if P_MEGA_EVOLUTIONS const u32 gMonFrontPic_SlowbroMega[] = INCBIN_U32("graphics/pokemon/slowbro/mega/front.4bpp.lz"); - const u32 gMonPalette_SlowbroMega[] = INCBIN_U32("graphics/pokemon/slowbro/mega/normal.gbapal.lz"); + const u16 gMonPalette_SlowbroMega[] = INCBIN_U16("graphics/pokemon/slowbro/mega/normal.gbapal"); 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 u16 gMonShinyPalette_SlowbroMega[] = INCBIN_U16("graphics/pokemon/slowbro/mega/shiny.gbapal"); const u8 gMonIcon_SlowbroMega[] = INCBIN_U8("graphics/pokemon/slowbro/mega/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS 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"); + const u16 gOverworldPalette_SlowbroMega[] = INCBIN_U16("graphics/pokemon/slowbro/mega/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_SlowbroMega[] = INCBIN_U16("graphics/pokemon/slowbro/mega/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS #endif //P_MEGA_EVOLUTIONS #if P_GALARIAN_FORMS const u32 gMonFrontPic_SlowpokeGalar[] = INCBIN_U32("graphics/pokemon/slowpoke/galar/front.4bpp.lz"); - const u32 gMonPalette_SlowpokeGalar[] = INCBIN_U32("graphics/pokemon/slowpoke/galar/normal.gbapal.lz"); + const u16 gMonPalette_SlowpokeGalar[] = INCBIN_U16("graphics/pokemon/slowpoke/galar/normal.gbapal"); const u32 gMonBackPic_SlowpokeGalar[] = INCBIN_U32("graphics/pokemon/slowpoke/galar/back.4bpp.lz"); - const u32 gMonShinyPalette_SlowpokeGalar[] = INCBIN_U32("graphics/pokemon/slowpoke/galar/shiny.gbapal.lz"); + const u16 gMonShinyPalette_SlowpokeGalar[] = INCBIN_U16("graphics/pokemon/slowpoke/galar/shiny.gbapal"); const u8 gMonIcon_SlowpokeGalar[] = INCBIN_U8("graphics/pokemon/slowpoke/galar/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS const u32 gObjectEventPic_SlowpokeGalar[] = INCBIN_COMP("graphics/pokemon/slowpoke/galar/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - const u32 gOverworldPalette_SlowpokeGalar[] = INCBIN_U32("graphics/pokemon/slowpoke/galar/overworld_normal.gbapal.lz"); - const u32 gShinyOverworldPalette_SlowpokeGalar[] = INCBIN_U32("graphics/pokemon/slowpoke/galar/overworld_shiny.gbapal.lz"); + const u16 gOverworldPalette_SlowpokeGalar[] = INCBIN_U16("graphics/pokemon/slowpoke/galar/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_SlowpokeGalar[] = INCBIN_U16("graphics/pokemon/slowpoke/galar/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_SlowbroGalar[] = INCBIN_U32("graphics/pokemon/slowbro/galar/front.4bpp.lz"); - const u32 gMonPalette_SlowbroGalar[] = INCBIN_U32("graphics/pokemon/slowbro/galar/normal.gbapal.lz"); + const u16 gMonPalette_SlowbroGalar[] = INCBIN_U16("graphics/pokemon/slowbro/galar/normal.gbapal"); const u32 gMonBackPic_SlowbroGalar[] = INCBIN_U32("graphics/pokemon/slowbro/galar/back.4bpp.lz"); - const u32 gMonShinyPalette_SlowbroGalar[] = INCBIN_U32("graphics/pokemon/slowbro/galar/shiny.gbapal.lz"); + const u16 gMonShinyPalette_SlowbroGalar[] = INCBIN_U16("graphics/pokemon/slowbro/galar/shiny.gbapal"); const u8 gMonIcon_SlowbroGalar[] = INCBIN_U8("graphics/pokemon/slowbro/galar/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS const u32 gObjectEventPic_SlowbroGalar[] = INCBIN_COMP("graphics/pokemon/slowbro/galar/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - const u32 gOverworldPalette_SlowbroGalar[] = INCBIN_U32("graphics/pokemon/slowbro/galar/overworld_normal.gbapal.lz"); - const u32 gShinyOverworldPalette_SlowbroGalar[] = INCBIN_U32("graphics/pokemon/slowbro/galar/overworld_shiny.gbapal.lz"); + const u16 gOverworldPalette_SlowbroGalar[] = INCBIN_U16("graphics/pokemon/slowbro/galar/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_SlowbroGalar[] = INCBIN_U16("graphics/pokemon/slowbro/galar/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if P_GEN_2_CROSS_EVOS const u32 gMonFrontPic_SlowkingGalar[] = INCBIN_U32("graphics/pokemon/slowking/galar/front.4bpp.lz"); - const u32 gMonPalette_SlowkingGalar[] = INCBIN_U32("graphics/pokemon/slowking/galar/normal.gbapal.lz"); + const u16 gMonPalette_SlowkingGalar[] = INCBIN_U16("graphics/pokemon/slowking/galar/normal.gbapal"); const u32 gMonBackPic_SlowkingGalar[] = INCBIN_U32("graphics/pokemon/slowking/galar/back.4bpp.lz"); - const u32 gMonShinyPalette_SlowkingGalar[] = INCBIN_U32("graphics/pokemon/slowking/galar/shiny.gbapal.lz"); + const u16 gMonShinyPalette_SlowkingGalar[] = INCBIN_U16("graphics/pokemon/slowking/galar/shiny.gbapal"); const u8 gMonIcon_SlowkingGalar[] = INCBIN_U8("graphics/pokemon/slowking/galar/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS const u32 gObjectEventPic_SlowkingGalar[] = INCBIN_COMP("graphics/pokemon/slowking/galar/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - const u32 gOverworldPalette_SlowkingGalar[] = INCBIN_U32("graphics/pokemon/slowking/galar/overworld_normal.gbapal.lz"); - const u32 gShinyOverworldPalette_SlowkingGalar[] = INCBIN_U32("graphics/pokemon/slowking/galar/overworld_shiny.gbapal.lz"); + const u16 gOverworldPalette_SlowkingGalar[] = INCBIN_U16("graphics/pokemon/slowking/galar/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_SlowkingGalar[] = INCBIN_U16("graphics/pokemon/slowking/galar/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_2_CROSS_EVOS @@ -3247,14 +3247,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_MAGNEMITE #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Magnemite[] = INCBIN_U32("graphics/pokemon/magnemite/anim_front.4bpp.lz"); - const u32 gMonPalette_Magnemite[] = INCBIN_U32("graphics/pokemon/magnemite/normal.gbapal.lz"); + const u16 gMonPalette_Magnemite[] = INCBIN_U16("graphics/pokemon/magnemite/normal.gbapal"); const u32 gMonBackPic_Magnemite[] = INCBIN_U32("graphics/pokemon/magnemite/back.4bpp.lz"); - const u32 gMonShinyPalette_Magnemite[] = INCBIN_U32("graphics/pokemon/magnemite/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Magnemite[] = INCBIN_U16("graphics/pokemon/magnemite/shiny.gbapal"); #else const u32 gMonFrontPic_Magnemite[] = INCBIN_U32("graphics/pokemon/magnemite/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Magnemite[] = INCBIN_U32("graphics/pokemon/magnemite/normal_gba.gbapal.lz"); + const u16 gMonPalette_Magnemite[] = INCBIN_U16("graphics/pokemon/magnemite/normal_gba.gbapal"); const u32 gMonBackPic_Magnemite[] = INCBIN_U32("graphics/pokemon/magnemite/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Magnemite[] = INCBIN_U32("graphics/pokemon/magnemite/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Magnemite[] = INCBIN_U16("graphics/pokemon/magnemite/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Magnemite[] = INCBIN_U8("graphics/pokemon/magnemite/icon.4bpp"); @@ -3267,21 +3267,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Magnemite[] = INCBIN_U16("graphics/pokemon/magnemite/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Magnemite[] = INCBIN_U16("graphics/pokemon/magnemite/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Magneton[] = INCBIN_U32("graphics/pokemon/magneton/anim_front.4bpp.lz"); - const u32 gMonPalette_Magneton[] = INCBIN_U32("graphics/pokemon/magneton/normal.gbapal.lz"); + const u16 gMonPalette_Magneton[] = INCBIN_U16("graphics/pokemon/magneton/normal.gbapal"); const u32 gMonBackPic_Magneton[] = INCBIN_U32("graphics/pokemon/magneton/back.4bpp.lz"); - const u32 gMonShinyPalette_Magneton[] = INCBIN_U32("graphics/pokemon/magneton/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Magneton[] = INCBIN_U16("graphics/pokemon/magneton/shiny.gbapal"); #else const u32 gMonFrontPic_Magneton[] = INCBIN_U32("graphics/pokemon/magneton/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Magneton[] = INCBIN_U32("graphics/pokemon/magneton/normal_gba.gbapal.lz"); + const u16 gMonPalette_Magneton[] = INCBIN_U16("graphics/pokemon/magneton/normal_gba.gbapal"); const u32 gMonBackPic_Magneton[] = INCBIN_U32("graphics/pokemon/magneton/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Magneton[] = INCBIN_U32("graphics/pokemon/magneton/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Magneton[] = INCBIN_U16("graphics/pokemon/magneton/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Magneton[] = INCBIN_U8("graphics/pokemon/magneton/icon.4bpp"); @@ -3294,16 +3294,16 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Magneton[] = INCBIN_U16("graphics/pokemon/magneton/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Magneton[] = INCBIN_U16("graphics/pokemon/magneton/overworld_shiny.gbapal"); #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"); - const u32 gMonPalette_Magnezone[] = INCBIN_U32("graphics/pokemon/magnezone/normal.gbapal.lz"); + const u16 gMonPalette_Magnezone[] = INCBIN_U16("graphics/pokemon/magnezone/normal.gbapal"); const u32 gMonBackPic_Magnezone[] = INCBIN_U32("graphics/pokemon/magnezone/back.4bpp.lz"); - const u32 gMonShinyPalette_Magnezone[] = INCBIN_U32("graphics/pokemon/magnezone/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Magnezone[] = INCBIN_U16("graphics/pokemon/magnezone/shiny.gbapal"); const u8 gMonIcon_Magnezone[] = INCBIN_U8("graphics/pokemon/magnezone/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Magnezone[] = INCBIN_U8("graphics/pokemon/magnezone/footprint.1bpp"); @@ -3311,8 +3311,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Magnezone[] = INCBIN_U16("graphics/pokemon/magnezone/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Magnezone[] = INCBIN_U16("graphics/pokemon/magnezone/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_4_CROSS_EVOS @@ -3321,14 +3321,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_FARFETCHD #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Farfetchd[] = INCBIN_U32("graphics/pokemon/farfetchd/anim_front.4bpp.lz"); - const u32 gMonPalette_Farfetchd[] = INCBIN_U32("graphics/pokemon/farfetchd/normal.gbapal.lz"); + const u16 gMonPalette_Farfetchd[] = INCBIN_U16("graphics/pokemon/farfetchd/normal.gbapal"); const u32 gMonBackPic_Farfetchd[] = INCBIN_U32("graphics/pokemon/farfetchd/back.4bpp.lz"); - const u32 gMonShinyPalette_Farfetchd[] = INCBIN_U32("graphics/pokemon/farfetchd/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Farfetchd[] = INCBIN_U16("graphics/pokemon/farfetchd/shiny.gbapal"); #else const u32 gMonFrontPic_Farfetchd[] = INCBIN_U32("graphics/pokemon/farfetchd/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Farfetchd[] = INCBIN_U32("graphics/pokemon/farfetchd/normal_gba.gbapal.lz"); + const u16 gMonPalette_Farfetchd[] = INCBIN_U16("graphics/pokemon/farfetchd/normal_gba.gbapal"); const u32 gMonBackPic_Farfetchd[] = INCBIN_U32("graphics/pokemon/farfetchd/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Farfetchd[] = INCBIN_U32("graphics/pokemon/farfetchd/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Farfetchd[] = INCBIN_U16("graphics/pokemon/farfetchd/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Farfetchd[] = INCBIN_U8("graphics/pokemon/farfetchd/icon.4bpp"); @@ -3341,29 +3341,29 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Farfetchd[] = INCBIN_U16("graphics/pokemon/farfetchd/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Farfetchd[] = INCBIN_U16("graphics/pokemon/farfetchd/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if P_GALARIAN_FORMS const u32 gMonFrontPic_FarfetchdGalar[] = INCBIN_U32("graphics/pokemon/farfetchd/galar/front.4bpp.lz"); - const u32 gMonPalette_FarfetchdGalar[] = INCBIN_U32("graphics/pokemon/farfetchd/galar/normal.gbapal.lz"); + const u16 gMonPalette_FarfetchdGalar[] = INCBIN_U16("graphics/pokemon/farfetchd/galar/normal.gbapal"); const u32 gMonBackPic_FarfetchdGalar[] = INCBIN_U32("graphics/pokemon/farfetchd/galar/back.4bpp.lz"); - const u32 gMonShinyPalette_FarfetchdGalar[] = INCBIN_U32("graphics/pokemon/farfetchd/galar/shiny.gbapal.lz"); + const u16 gMonShinyPalette_FarfetchdGalar[] = INCBIN_U16("graphics/pokemon/farfetchd/galar/shiny.gbapal"); const u8 gMonIcon_FarfetchdGalar[] = INCBIN_U8("graphics/pokemon/farfetchd/galar/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS const u32 gObjectEventPic_FarfetchdGalar[] = INCBIN_COMP("graphics/pokemon/farfetchd/galar/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - const u32 gOverworldPalette_FarfetchdGalar[] = INCBIN_U32("graphics/pokemon/farfetchd/galar/overworld_normal.gbapal.lz"); - const u32 gShinyOverworldPalette_FarfetchdGalar[] = INCBIN_U32("graphics/pokemon/farfetchd/galar/overworld_shiny.gbapal.lz"); + const u16 gOverworldPalette_FarfetchdGalar[] = INCBIN_U16("graphics/pokemon/farfetchd/galar/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_FarfetchdGalar[] = INCBIN_U16("graphics/pokemon/farfetchd/galar/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Sirfetchd[] = INCBIN_U16("graphics/pokemon/sirfetchd/normal.gbapal"); const u32 gMonBackPic_Sirfetchd[] = INCBIN_U32("graphics/pokemon/sirfetchd/back.4bpp.lz"); - const u32 gMonShinyPalette_Sirfetchd[] = INCBIN_U32("graphics/pokemon/sirfetchd/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Sirfetchd[] = INCBIN_U16("graphics/pokemon/sirfetchd/shiny.gbapal"); const u8 gMonIcon_Sirfetchd[] = INCBIN_U8("graphics/pokemon/sirfetchd/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Sirfetchd[] = INCBIN_U8("graphics/pokemon/sirfetchd/footprint.1bpp"); @@ -3371,8 +3371,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Sirfetchd[] = INCBIN_U16("graphics/pokemon/sirfetchd/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Sirfetchd[] = INCBIN_U16("graphics/pokemon/sirfetchd/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GALARIAN_FORMS @@ -3381,14 +3381,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_DODUO #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Doduo[] = INCBIN_U32("graphics/pokemon/doduo/anim_front.4bpp.lz"); - const u32 gMonPalette_Doduo[] = INCBIN_U32("graphics/pokemon/doduo/normal.gbapal.lz"); + const u16 gMonPalette_Doduo[] = INCBIN_U16("graphics/pokemon/doduo/normal.gbapal"); const u32 gMonBackPic_Doduo[] = INCBIN_U32("graphics/pokemon/doduo/back.4bpp.lz"); - const u32 gMonShinyPalette_Doduo[] = INCBIN_U32("graphics/pokemon/doduo/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Doduo[] = INCBIN_U16("graphics/pokemon/doduo/shiny.gbapal"); #else const u32 gMonFrontPic_Doduo[] = INCBIN_U32("graphics/pokemon/doduo/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Doduo[] = INCBIN_U32("graphics/pokemon/doduo/normal_gba.gbapal.lz"); + const u16 gMonPalette_Doduo[] = INCBIN_U16("graphics/pokemon/doduo/normal_gba.gbapal"); const u32 gMonBackPic_Doduo[] = INCBIN_U32("graphics/pokemon/doduo/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Doduo[] = INCBIN_U32("graphics/pokemon/doduo/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Doduo[] = INCBIN_U16("graphics/pokemon/doduo/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Doduo[] = INCBIN_U8("graphics/pokemon/doduo/icon.4bpp"); @@ -3401,8 +3401,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Doduo[] = INCBIN_U16("graphics/pokemon/doduo/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Doduo[] = INCBIN_U16("graphics/pokemon/doduo/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -3416,14 +3416,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Dodrio[] = INCBIN_U32("graphics/pokemon/dodrio/anim_front.4bpp.lz"); - const u32 gMonPalette_Dodrio[] = INCBIN_U32("graphics/pokemon/dodrio/normal.gbapal.lz"); + const u16 gMonPalette_Dodrio[] = INCBIN_U16("graphics/pokemon/dodrio/normal.gbapal"); const u32 gMonBackPic_Dodrio[] = INCBIN_U32("graphics/pokemon/dodrio/back.4bpp.lz"); - const u32 gMonShinyPalette_Dodrio[] = INCBIN_U32("graphics/pokemon/dodrio/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Dodrio[] = INCBIN_U16("graphics/pokemon/dodrio/shiny.gbapal"); #else const u32 gMonFrontPic_Dodrio[] = INCBIN_U32("graphics/pokemon/dodrio/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Dodrio[] = INCBIN_U32("graphics/pokemon/dodrio/normal_gba.gbapal.lz"); + const u16 gMonPalette_Dodrio[] = INCBIN_U16("graphics/pokemon/dodrio/normal_gba.gbapal"); const u32 gMonBackPic_Dodrio[] = INCBIN_U32("graphics/pokemon/dodrio/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Dodrio[] = INCBIN_U32("graphics/pokemon/dodrio/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Dodrio[] = INCBIN_U16("graphics/pokemon/dodrio/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Dodrio[] = INCBIN_U8("graphics/pokemon/dodrio/icon.4bpp"); @@ -3436,8 +3436,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Dodrio[] = INCBIN_U16("graphics/pokemon/dodrio/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Dodrio[] = INCBIN_U16("graphics/pokemon/dodrio/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -3453,14 +3453,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_SEEL #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Seel[] = INCBIN_U32("graphics/pokemon/seel/anim_front.4bpp.lz"); - const u32 gMonPalette_Seel[] = INCBIN_U32("graphics/pokemon/seel/normal.gbapal.lz"); + const u16 gMonPalette_Seel[] = INCBIN_U16("graphics/pokemon/seel/normal.gbapal"); const u32 gMonBackPic_Seel[] = INCBIN_U32("graphics/pokemon/seel/back.4bpp.lz"); - const u32 gMonShinyPalette_Seel[] = INCBIN_U32("graphics/pokemon/seel/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Seel[] = INCBIN_U16("graphics/pokemon/seel/shiny.gbapal"); #else const u32 gMonFrontPic_Seel[] = INCBIN_U32("graphics/pokemon/seel/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Seel[] = INCBIN_U32("graphics/pokemon/seel/normal_gba.gbapal.lz"); + const u16 gMonPalette_Seel[] = INCBIN_U16("graphics/pokemon/seel/normal_gba.gbapal"); const u32 gMonBackPic_Seel[] = INCBIN_U32("graphics/pokemon/seel/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Seel[] = INCBIN_U32("graphics/pokemon/seel/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Seel[] = INCBIN_U16("graphics/pokemon/seel/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Seel[] = INCBIN_U8("graphics/pokemon/seel/icon.4bpp"); @@ -3473,21 +3473,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Seel[] = INCBIN_U16("graphics/pokemon/seel/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Seel[] = INCBIN_U16("graphics/pokemon/seel/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Dewgong[] = INCBIN_U32("graphics/pokemon/dewgong/anim_front.4bpp.lz"); - const u32 gMonPalette_Dewgong[] = INCBIN_U32("graphics/pokemon/dewgong/normal.gbapal.lz"); + const u16 gMonPalette_Dewgong[] = INCBIN_U16("graphics/pokemon/dewgong/normal.gbapal"); const u32 gMonBackPic_Dewgong[] = INCBIN_U32("graphics/pokemon/dewgong/back.4bpp.lz"); - const u32 gMonShinyPalette_Dewgong[] = INCBIN_U32("graphics/pokemon/dewgong/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Dewgong[] = INCBIN_U16("graphics/pokemon/dewgong/shiny.gbapal"); #else const u32 gMonFrontPic_Dewgong[] = INCBIN_U32("graphics/pokemon/dewgong/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Dewgong[] = INCBIN_U32("graphics/pokemon/dewgong/normal_gba.gbapal.lz"); + const u16 gMonPalette_Dewgong[] = INCBIN_U16("graphics/pokemon/dewgong/normal_gba.gbapal"); const u32 gMonBackPic_Dewgong[] = INCBIN_U32("graphics/pokemon/dewgong/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Dewgong[] = INCBIN_U32("graphics/pokemon/dewgong/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Dewgong[] = INCBIN_U16("graphics/pokemon/dewgong/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Dewgong[] = INCBIN_U8("graphics/pokemon/dewgong/icon.4bpp"); @@ -3500,8 +3500,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Dewgong[] = INCBIN_U16("graphics/pokemon/dewgong/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Dewgong[] = INCBIN_U16("graphics/pokemon/dewgong/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SEEL @@ -3509,14 +3509,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_GRIMER #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Grimer[] = INCBIN_U32("graphics/pokemon/grimer/anim_front.4bpp.lz"); - const u32 gMonPalette_Grimer[] = INCBIN_U32("graphics/pokemon/grimer/normal.gbapal.lz"); + const u16 gMonPalette_Grimer[] = INCBIN_U16("graphics/pokemon/grimer/normal.gbapal"); const u32 gMonBackPic_Grimer[] = INCBIN_U32("graphics/pokemon/grimer/back.4bpp.lz"); - const u32 gMonShinyPalette_Grimer[] = INCBIN_U32("graphics/pokemon/grimer/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Grimer[] = INCBIN_U16("graphics/pokemon/grimer/shiny.gbapal"); #else const u32 gMonFrontPic_Grimer[] = INCBIN_U32("graphics/pokemon/grimer/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Grimer[] = INCBIN_U32("graphics/pokemon/grimer/normal_gba.gbapal.lz"); + const u16 gMonPalette_Grimer[] = INCBIN_U16("graphics/pokemon/grimer/normal_gba.gbapal"); const u32 gMonBackPic_Grimer[] = INCBIN_U32("graphics/pokemon/grimer/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Grimer[] = INCBIN_U32("graphics/pokemon/grimer/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Grimer[] = INCBIN_U16("graphics/pokemon/grimer/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Grimer[] = INCBIN_U8("graphics/pokemon/grimer/icon.4bpp"); @@ -3529,21 +3529,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Grimer[] = INCBIN_U16("graphics/pokemon/grimer/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Grimer[] = INCBIN_U16("graphics/pokemon/grimer/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Muk[] = INCBIN_U32("graphics/pokemon/muk/anim_front.4bpp.lz"); - const u32 gMonPalette_Muk[] = INCBIN_U32("graphics/pokemon/muk/normal.gbapal.lz"); + const u16 gMonPalette_Muk[] = INCBIN_U16("graphics/pokemon/muk/normal.gbapal"); const u32 gMonBackPic_Muk[] = INCBIN_U32("graphics/pokemon/muk/back.4bpp.lz"); - const u32 gMonShinyPalette_Muk[] = INCBIN_U32("graphics/pokemon/muk/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Muk[] = INCBIN_U16("graphics/pokemon/muk/shiny.gbapal"); #else const u32 gMonFrontPic_Muk[] = INCBIN_U32("graphics/pokemon/muk/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Muk[] = INCBIN_U32("graphics/pokemon/muk/normal_gba.gbapal.lz"); + const u16 gMonPalette_Muk[] = INCBIN_U16("graphics/pokemon/muk/normal_gba.gbapal"); const u32 gMonBackPic_Muk[] = INCBIN_U32("graphics/pokemon/muk/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Muk[] = INCBIN_U32("graphics/pokemon/muk/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Muk[] = INCBIN_U16("graphics/pokemon/muk/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Muk[] = INCBIN_U8("graphics/pokemon/muk/icon.4bpp"); @@ -3556,35 +3556,35 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Muk[] = INCBIN_U16("graphics/pokemon/muk/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Muk[] = INCBIN_U16("graphics/pokemon/muk/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if P_ALOLAN_FORMS const u32 gMonFrontPic_GrimerAlola[] = INCBIN_U32("graphics/pokemon/grimer/alola/front.4bpp.lz"); - const u32 gMonPalette_GrimerAlola[] = INCBIN_U32("graphics/pokemon/grimer/alola/normal.gbapal.lz"); + const u16 gMonPalette_GrimerAlola[] = INCBIN_U16("graphics/pokemon/grimer/alola/normal.gbapal"); const u32 gMonBackPic_GrimerAlola[] = INCBIN_U32("graphics/pokemon/grimer/alola/back.4bpp.lz"); - const u32 gMonShinyPalette_GrimerAlola[] = INCBIN_U32("graphics/pokemon/grimer/alola/shiny.gbapal.lz"); + const u16 gMonShinyPalette_GrimerAlola[] = INCBIN_U16("graphics/pokemon/grimer/alola/shiny.gbapal"); const u8 gMonIcon_GrimerAlola[] = INCBIN_U8("graphics/pokemon/grimer/alola/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS const u32 gObjectEventPic_GrimerAlola[] = INCBIN_COMP("graphics/pokemon/grimer/alola/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - const u32 gOverworldPalette_GrimerAlola[] = INCBIN_U32("graphics/pokemon/grimer/alola/overworld_normal.gbapal.lz"); - const u32 gShinyOverworldPalette_GrimerAlola[] = INCBIN_U32("graphics/pokemon/grimer/alola/overworld_shiny.gbapal.lz"); + const u16 gOverworldPalette_GrimerAlola[] = INCBIN_U16("graphics/pokemon/grimer/alola/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_GrimerAlola[] = INCBIN_U16("graphics/pokemon/grimer/alola/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_MukAlola[] = INCBIN_U32("graphics/pokemon/muk/alola/front.4bpp.lz"); - const u32 gMonPalette_MukAlola[] = INCBIN_U32("graphics/pokemon/muk/alola/normal.gbapal.lz"); + const u16 gMonPalette_MukAlola[] = INCBIN_U16("graphics/pokemon/muk/alola/normal.gbapal"); const u32 gMonBackPic_MukAlola[] = INCBIN_U32("graphics/pokemon/muk/alola/back.4bpp.lz"); - const u32 gMonShinyPalette_MukAlola[] = INCBIN_U32("graphics/pokemon/muk/alola/shiny.gbapal.lz"); + const u16 gMonShinyPalette_MukAlola[] = INCBIN_U16("graphics/pokemon/muk/alola/shiny.gbapal"); const u8 gMonIcon_MukAlola[] = INCBIN_U8("graphics/pokemon/muk/alola/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS const u32 gObjectEventPic_MukAlola[] = INCBIN_COMP("graphics/pokemon/muk/alola/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - const u32 gOverworldPalette_MukAlola[] = INCBIN_U32("graphics/pokemon/muk/alola/overworld_normal.gbapal.lz"); - const u32 gShinyOverworldPalette_MukAlola[] = INCBIN_U32("graphics/pokemon/muk/alola/overworld_shiny.gbapal.lz"); + const u16 gOverworldPalette_MukAlola[] = INCBIN_U16("graphics/pokemon/muk/alola/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_MukAlola[] = INCBIN_U16("graphics/pokemon/muk/alola/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_ALOLAN_FORMS @@ -3593,14 +3593,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_SHELLDER #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Shellder[] = INCBIN_U32("graphics/pokemon/shellder/anim_front.4bpp.lz"); - const u32 gMonPalette_Shellder[] = INCBIN_U32("graphics/pokemon/shellder/normal.gbapal.lz"); + const u16 gMonPalette_Shellder[] = INCBIN_U16("graphics/pokemon/shellder/normal.gbapal"); const u32 gMonBackPic_Shellder[] = INCBIN_U32("graphics/pokemon/shellder/back.4bpp.lz"); - const u32 gMonShinyPalette_Shellder[] = INCBIN_U32("graphics/pokemon/shellder/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Shellder[] = INCBIN_U16("graphics/pokemon/shellder/shiny.gbapal"); #else const u32 gMonFrontPic_Shellder[] = INCBIN_U32("graphics/pokemon/shellder/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Shellder[] = INCBIN_U32("graphics/pokemon/shellder/normal_gba.gbapal.lz"); + const u16 gMonPalette_Shellder[] = INCBIN_U16("graphics/pokemon/shellder/normal_gba.gbapal"); const u32 gMonBackPic_Shellder[] = INCBIN_U32("graphics/pokemon/shellder/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Shellder[] = INCBIN_U32("graphics/pokemon/shellder/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Shellder[] = INCBIN_U16("graphics/pokemon/shellder/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Shellder[] = INCBIN_U8("graphics/pokemon/shellder/icon.4bpp"); @@ -3613,21 +3613,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Shellder[] = INCBIN_U16("graphics/pokemon/shellder/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Shellder[] = INCBIN_U16("graphics/pokemon/shellder/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Cloyster[] = INCBIN_U32("graphics/pokemon/cloyster/anim_front.4bpp.lz"); - const u32 gMonPalette_Cloyster[] = INCBIN_U32("graphics/pokemon/cloyster/normal.gbapal.lz"); + const u16 gMonPalette_Cloyster[] = INCBIN_U16("graphics/pokemon/cloyster/normal.gbapal"); const u32 gMonBackPic_Cloyster[] = INCBIN_U32("graphics/pokemon/cloyster/back.4bpp.lz"); - const u32 gMonShinyPalette_Cloyster[] = INCBIN_U32("graphics/pokemon/cloyster/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Cloyster[] = INCBIN_U16("graphics/pokemon/cloyster/shiny.gbapal"); #else const u32 gMonFrontPic_Cloyster[] = INCBIN_U32("graphics/pokemon/cloyster/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Cloyster[] = INCBIN_U32("graphics/pokemon/cloyster/normal_gba.gbapal.lz"); + const u16 gMonPalette_Cloyster[] = INCBIN_U16("graphics/pokemon/cloyster/normal_gba.gbapal"); const u32 gMonBackPic_Cloyster[] = INCBIN_U32("graphics/pokemon/cloyster/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Cloyster[] = INCBIN_U32("graphics/pokemon/cloyster/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Cloyster[] = INCBIN_U16("graphics/pokemon/cloyster/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Cloyster[] = INCBIN_U8("graphics/pokemon/cloyster/icon.4bpp"); @@ -3640,8 +3640,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Cloyster[] = INCBIN_U16("graphics/pokemon/cloyster/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Cloyster[] = INCBIN_U16("graphics/pokemon/cloyster/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SHELLDER @@ -3649,14 +3649,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_GASTLY #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Gastly[] = INCBIN_U32("graphics/pokemon/gastly/anim_front.4bpp.lz"); - const u32 gMonPalette_Gastly[] = INCBIN_U32("graphics/pokemon/gastly/normal.gbapal.lz"); + const u16 gMonPalette_Gastly[] = INCBIN_U16("graphics/pokemon/gastly/normal.gbapal"); const u32 gMonBackPic_Gastly[] = INCBIN_U32("graphics/pokemon/gastly/back.4bpp.lz"); - const u32 gMonShinyPalette_Gastly[] = INCBIN_U32("graphics/pokemon/gastly/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Gastly[] = INCBIN_U16("graphics/pokemon/gastly/shiny.gbapal"); #else const u32 gMonFrontPic_Gastly[] = INCBIN_U32("graphics/pokemon/gastly/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Gastly[] = INCBIN_U32("graphics/pokemon/gastly/normal_gba.gbapal.lz"); + const u16 gMonPalette_Gastly[] = INCBIN_U16("graphics/pokemon/gastly/normal_gba.gbapal"); const u32 gMonBackPic_Gastly[] = INCBIN_U32("graphics/pokemon/gastly/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Gastly[] = INCBIN_U32("graphics/pokemon/gastly/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Gastly[] = INCBIN_U16("graphics/pokemon/gastly/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Gastly[] = INCBIN_U8("graphics/pokemon/gastly/icon.4bpp"); @@ -3669,21 +3669,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Gastly[] = INCBIN_U16("graphics/pokemon/gastly/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Gastly[] = INCBIN_U16("graphics/pokemon/gastly/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Haunter[] = INCBIN_U32("graphics/pokemon/haunter/anim_front.4bpp.lz"); - const u32 gMonPalette_Haunter[] = INCBIN_U32("graphics/pokemon/haunter/normal.gbapal.lz"); + const u16 gMonPalette_Haunter[] = INCBIN_U16("graphics/pokemon/haunter/normal.gbapal"); const u32 gMonBackPic_Haunter[] = INCBIN_U32("graphics/pokemon/haunter/back.4bpp.lz"); - const u32 gMonShinyPalette_Haunter[] = INCBIN_U32("graphics/pokemon/haunter/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Haunter[] = INCBIN_U16("graphics/pokemon/haunter/shiny.gbapal"); #else const u32 gMonFrontPic_Haunter[] = INCBIN_U32("graphics/pokemon/haunter/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Haunter[] = INCBIN_U32("graphics/pokemon/haunter/normal_gba.gbapal.lz"); + const u16 gMonPalette_Haunter[] = INCBIN_U16("graphics/pokemon/haunter/normal_gba.gbapal"); const u32 gMonBackPic_Haunter[] = INCBIN_U32("graphics/pokemon/haunter/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Haunter[] = INCBIN_U32("graphics/pokemon/haunter/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Haunter[] = INCBIN_U16("graphics/pokemon/haunter/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Haunter[] = INCBIN_U8("graphics/pokemon/haunter/icon.4bpp"); @@ -3696,21 +3696,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Haunter[] = INCBIN_U16("graphics/pokemon/haunter/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Haunter[] = INCBIN_U16("graphics/pokemon/haunter/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Gengar[] = INCBIN_U32("graphics/pokemon/gengar/anim_front.4bpp.lz"); - const u32 gMonPalette_Gengar[] = INCBIN_U32("graphics/pokemon/gengar/normal.gbapal.lz"); + const u16 gMonPalette_Gengar[] = INCBIN_U16("graphics/pokemon/gengar/normal.gbapal"); const u32 gMonBackPic_Gengar[] = INCBIN_U32("graphics/pokemon/gengar/back.4bpp.lz"); - const u32 gMonShinyPalette_Gengar[] = INCBIN_U32("graphics/pokemon/gengar/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Gengar[] = INCBIN_U16("graphics/pokemon/gengar/shiny.gbapal"); #else const u32 gMonFrontPic_Gengar[] = INCBIN_U32("graphics/pokemon/gengar/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Gengar[] = INCBIN_U32("graphics/pokemon/gengar/normal_gba.gbapal.lz"); + const u16 gMonPalette_Gengar[] = INCBIN_U16("graphics/pokemon/gengar/normal_gba.gbapal"); const u32 gMonBackPic_Gengar[] = INCBIN_U32("graphics/pokemon/gengar/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Gengar[] = INCBIN_U32("graphics/pokemon/gengar/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Gengar[] = INCBIN_U16("graphics/pokemon/gengar/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Gengar[] = INCBIN_U8("graphics/pokemon/gengar/icon.4bpp"); @@ -3723,22 +3723,22 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Gengar[] = INCBIN_U16("graphics/pokemon/gengar/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Gengar[] = INCBIN_U16("graphics/pokemon/gengar/overworld_shiny.gbapal"); #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"); - const u32 gMonPalette_GengarMega[] = INCBIN_U32("graphics/pokemon/gengar/mega/normal.gbapal.lz"); + const u16 gMonPalette_GengarMega[] = INCBIN_U16("graphics/pokemon/gengar/mega/normal.gbapal"); 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 u16 gMonShinyPalette_GengarMega[] = INCBIN_U16("graphics/pokemon/gengar/mega/shiny.gbapal"); const u8 gMonIcon_GengarMega[] = INCBIN_U8("graphics/pokemon/gengar/mega/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS 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"); + const u16 gOverworldPalette_GengarMega[] = INCBIN_U16("graphics/pokemon/gengar/mega/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_GengarMega[] = INCBIN_U16("graphics/pokemon/gengar/mega/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS #endif //P_MEGA_EVOLUTIONS @@ -3746,14 +3746,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_GIGANTAMAX_FORMS const u32 gMonFrontPic_GengarGmax[] = INCBIN_U32("graphics/pokemon/gengar/gmax/front.4bpp.lz"); const u32 gMonBackPic_GengarGmax[] = INCBIN_U32("graphics/pokemon/gengar/gmax/back.4bpp.lz"); - const u32 gMonPalette_GengarGmax[] = INCBIN_U32("graphics/pokemon/gengar/gmax/normal.gbapal.lz"); - const u32 gMonShinyPalette_GengarGmax[] = INCBIN_U32("graphics/pokemon/gengar/gmax/shiny.gbapal.lz"); + const u16 gMonPalette_GengarGmax[] = INCBIN_U16("graphics/pokemon/gengar/gmax/normal.gbapal"); + const u16 gMonShinyPalette_GengarGmax[] = INCBIN_U16("graphics/pokemon/gengar/gmax/shiny.gbapal"); const u8 gMonIcon_GengarGmax[] = INCBIN_U8("graphics/pokemon/gengar/gmax/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS // const u32 gObjectEventPic_GengarGmax[] = INCBIN_COMP("graphics/pokemon/gengar/gmax/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - // const u32 gOverworldPalette_GengarGmax[] = INCBIN_U32("graphics/pokemon/gengar/gmax/overworld_normal.gbapal.lz"); - // const u32 gShinyOverworldPalette_GengarGmax[] = INCBIN_U32("graphics/pokemon/gengar/gmax/overworld_shiny.gbapal.lz"); + // const u16 gOverworldPalette_GengarGmax[] = INCBIN_U16("graphics/pokemon/gengar/gmax/overworld_normal.gbapal"); + // const u16 gShinyOverworldPalette_GengarGmax[] = INCBIN_U16("graphics/pokemon/gengar/gmax/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GIGANTAMAX_FORMS @@ -3762,14 +3762,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_ONIX #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Onix[] = INCBIN_U32("graphics/pokemon/onix/anim_front.4bpp.lz"); - const u32 gMonPalette_Onix[] = INCBIN_U32("graphics/pokemon/onix/normal.gbapal.lz"); + const u16 gMonPalette_Onix[] = INCBIN_U16("graphics/pokemon/onix/normal.gbapal"); const u32 gMonBackPic_Onix[] = INCBIN_U32("graphics/pokemon/onix/back.4bpp.lz"); - const u32 gMonShinyPalette_Onix[] = INCBIN_U32("graphics/pokemon/onix/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Onix[] = INCBIN_U16("graphics/pokemon/onix/shiny.gbapal"); #else const u32 gMonFrontPic_Onix[] = INCBIN_U32("graphics/pokemon/onix/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Onix[] = INCBIN_U32("graphics/pokemon/onix/normal_gba.gbapal.lz"); + const u16 gMonPalette_Onix[] = INCBIN_U16("graphics/pokemon/onix/normal_gba.gbapal"); const u32 gMonBackPic_Onix[] = INCBIN_U32("graphics/pokemon/onix/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Onix[] = INCBIN_U32("graphics/pokemon/onix/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Onix[] = INCBIN_U16("graphics/pokemon/onix/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Onix[] = INCBIN_U8("graphics/pokemon/onix/icon.4bpp"); @@ -3782,22 +3782,22 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Onix[] = INCBIN_U16("graphics/pokemon/onix/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Onix[] = INCBIN_U16("graphics/pokemon/onix/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if P_GEN_2_CROSS_EVOS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Steelix[] = INCBIN_U32("graphics/pokemon/steelix/anim_front.4bpp.lz"); - const u32 gMonPalette_Steelix[] = INCBIN_U32("graphics/pokemon/steelix/normal.gbapal.lz"); + const u16 gMonPalette_Steelix[] = INCBIN_U16("graphics/pokemon/steelix/normal.gbapal"); const u32 gMonBackPic_Steelix[] = INCBIN_U32("graphics/pokemon/steelix/back.4bpp.lz"); - const u32 gMonShinyPalette_Steelix[] = INCBIN_U32("graphics/pokemon/steelix/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Steelix[] = INCBIN_U16("graphics/pokemon/steelix/shiny.gbapal"); #else const u32 gMonFrontPic_Steelix[] = INCBIN_U32("graphics/pokemon/steelix/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Steelix[] = INCBIN_U32("graphics/pokemon/steelix/normal_gba.gbapal.lz"); + const u16 gMonPalette_Steelix[] = INCBIN_U16("graphics/pokemon/steelix/normal_gba.gbapal"); const u32 gMonBackPic_Steelix[] = INCBIN_U32("graphics/pokemon/steelix/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Steelix[] = INCBIN_U32("graphics/pokemon/steelix/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Steelix[] = INCBIN_U16("graphics/pokemon/steelix/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Steelix[] = INCBIN_U8("graphics/pokemon/steelix/icon.4bpp"); @@ -3810,8 +3810,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Steelix[] = INCBIN_U16("graphics/pokemon/steelix/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Steelix[] = INCBIN_U16("graphics/pokemon/steelix/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -3825,15 +3825,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_MEGA_EVOLUTIONS const u32 gMonFrontPic_SteelixMega[] = INCBIN_U32("graphics/pokemon/steelix/mega/front.4bpp.lz"); - const u32 gMonPalette_SteelixMega[] = INCBIN_U32("graphics/pokemon/steelix/mega/normal.gbapal.lz"); + const u16 gMonPalette_SteelixMega[] = INCBIN_U16("graphics/pokemon/steelix/mega/normal.gbapal"); 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 u16 gMonShinyPalette_SteelixMega[] = INCBIN_U16("graphics/pokemon/steelix/mega/shiny.gbapal"); const u8 gMonIcon_SteelixMega[] = INCBIN_U8("graphics/pokemon/steelix/mega/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS 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"); + const u16 gOverworldPalette_SteelixMega[] = INCBIN_U16("graphics/pokemon/steelix/mega/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_SteelixMega[] = INCBIN_U16("graphics/pokemon/steelix/mega/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS #endif //P_MEGA_EVOLUTIONS @@ -3843,14 +3843,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_DROWZEE #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Drowzee[] = INCBIN_U32("graphics/pokemon/drowzee/anim_front.4bpp.lz"); - const u32 gMonPalette_Drowzee[] = INCBIN_U32("graphics/pokemon/drowzee/normal.gbapal.lz"); + const u16 gMonPalette_Drowzee[] = INCBIN_U16("graphics/pokemon/drowzee/normal.gbapal"); const u32 gMonBackPic_Drowzee[] = INCBIN_U32("graphics/pokemon/drowzee/back.4bpp.lz"); - const u32 gMonShinyPalette_Drowzee[] = INCBIN_U32("graphics/pokemon/drowzee/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Drowzee[] = INCBIN_U16("graphics/pokemon/drowzee/shiny.gbapal"); #else const u32 gMonFrontPic_Drowzee[] = INCBIN_U32("graphics/pokemon/drowzee/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Drowzee[] = INCBIN_U32("graphics/pokemon/drowzee/normal_gba.gbapal.lz"); + const u16 gMonPalette_Drowzee[] = INCBIN_U16("graphics/pokemon/drowzee/normal_gba.gbapal"); const u32 gMonBackPic_Drowzee[] = INCBIN_U32("graphics/pokemon/drowzee/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Drowzee[] = INCBIN_U32("graphics/pokemon/drowzee/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Drowzee[] = INCBIN_U16("graphics/pokemon/drowzee/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Drowzee[] = INCBIN_U8("graphics/pokemon/drowzee/icon.4bpp"); @@ -3863,21 +3863,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Drowzee[] = INCBIN_U16("graphics/pokemon/drowzee/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Drowzee[] = INCBIN_U16("graphics/pokemon/drowzee/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Hypno[] = INCBIN_U32("graphics/pokemon/hypno/anim_front.4bpp.lz"); - const u32 gMonPalette_Hypno[] = INCBIN_U32("graphics/pokemon/hypno/normal.gbapal.lz"); + const u16 gMonPalette_Hypno[] = INCBIN_U16("graphics/pokemon/hypno/normal.gbapal"); const u32 gMonBackPic_Hypno[] = INCBIN_U32("graphics/pokemon/hypno/back.4bpp.lz"); - const u32 gMonShinyPalette_Hypno[] = INCBIN_U32("graphics/pokemon/hypno/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Hypno[] = INCBIN_U16("graphics/pokemon/hypno/shiny.gbapal"); #else const u32 gMonFrontPic_Hypno[] = INCBIN_U32("graphics/pokemon/hypno/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Hypno[] = INCBIN_U32("graphics/pokemon/hypno/normal_gba.gbapal.lz"); + const u16 gMonPalette_Hypno[] = INCBIN_U16("graphics/pokemon/hypno/normal_gba.gbapal"); const u32 gMonBackPic_Hypno[] = INCBIN_U32("graphics/pokemon/hypno/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Hypno[] = INCBIN_U32("graphics/pokemon/hypno/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Hypno[] = INCBIN_U16("graphics/pokemon/hypno/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Hypno[] = INCBIN_U8("graphics/pokemon/hypno/icon.4bpp"); @@ -3890,8 +3890,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Hypno[] = INCBIN_U16("graphics/pokemon/hypno/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Hypno[] = INCBIN_U16("graphics/pokemon/hypno/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -3907,14 +3907,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_KRABBY #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Krabby[] = INCBIN_U32("graphics/pokemon/krabby/anim_front.4bpp.lz"); - const u32 gMonPalette_Krabby[] = INCBIN_U32("graphics/pokemon/krabby/normal.gbapal.lz"); + const u16 gMonPalette_Krabby[] = INCBIN_U16("graphics/pokemon/krabby/normal.gbapal"); const u32 gMonBackPic_Krabby[] = INCBIN_U32("graphics/pokemon/krabby/back.4bpp.lz"); - const u32 gMonShinyPalette_Krabby[] = INCBIN_U32("graphics/pokemon/krabby/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Krabby[] = INCBIN_U16("graphics/pokemon/krabby/shiny.gbapal"); #else const u32 gMonFrontPic_Krabby[] = INCBIN_U32("graphics/pokemon/krabby/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Krabby[] = INCBIN_U32("graphics/pokemon/krabby/normal_gba.gbapal.lz"); + const u16 gMonPalette_Krabby[] = INCBIN_U16("graphics/pokemon/krabby/normal_gba.gbapal"); const u32 gMonBackPic_Krabby[] = INCBIN_U32("graphics/pokemon/krabby/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Krabby[] = INCBIN_U32("graphics/pokemon/krabby/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Krabby[] = INCBIN_U16("graphics/pokemon/krabby/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Krabby[] = INCBIN_U8("graphics/pokemon/krabby/icon.4bpp"); @@ -3927,21 +3927,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Krabby[] = INCBIN_U16("graphics/pokemon/krabby/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Krabby[] = INCBIN_U16("graphics/pokemon/krabby/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Kingler[] = INCBIN_U32("graphics/pokemon/kingler/anim_front.4bpp.lz"); - const u32 gMonPalette_Kingler[] = INCBIN_U32("graphics/pokemon/kingler/normal.gbapal.lz"); + const u16 gMonPalette_Kingler[] = INCBIN_U16("graphics/pokemon/kingler/normal.gbapal"); const u32 gMonBackPic_Kingler[] = INCBIN_U32("graphics/pokemon/kingler/back.4bpp.lz"); - const u32 gMonShinyPalette_Kingler[] = INCBIN_U32("graphics/pokemon/kingler/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Kingler[] = INCBIN_U16("graphics/pokemon/kingler/shiny.gbapal"); #else const u32 gMonFrontPic_Kingler[] = INCBIN_U32("graphics/pokemon/kingler/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Kingler[] = INCBIN_U32("graphics/pokemon/kingler/normal_gba.gbapal.lz"); + const u16 gMonPalette_Kingler[] = INCBIN_U16("graphics/pokemon/kingler/normal_gba.gbapal"); const u32 gMonBackPic_Kingler[] = INCBIN_U32("graphics/pokemon/kingler/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Kingler[] = INCBIN_U32("graphics/pokemon/kingler/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Kingler[] = INCBIN_U16("graphics/pokemon/kingler/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Kingler[] = INCBIN_U8("graphics/pokemon/kingler/icon.4bpp"); @@ -3954,22 +3954,22 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Kingler[] = INCBIN_U16("graphics/pokemon/kingler/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Kingler[] = INCBIN_U16("graphics/pokemon/kingler/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if P_GIGANTAMAX_FORMS const u32 gMonFrontPic_KinglerGmax[] = INCBIN_U32("graphics/pokemon/kingler/gmax/front.4bpp.lz"); const u32 gMonBackPic_KinglerGmax[] = INCBIN_U32("graphics/pokemon/kingler/gmax/back.4bpp.lz"); - const u32 gMonPalette_KinglerGmax[] = INCBIN_U32("graphics/pokemon/kingler/gmax/normal.gbapal.lz"); - const u32 gMonShinyPalette_KinglerGmax[] = INCBIN_U32("graphics/pokemon/kingler/gmax/shiny.gbapal.lz"); + const u16 gMonPalette_KinglerGmax[] = INCBIN_U16("graphics/pokemon/kingler/gmax/normal.gbapal"); + const u16 gMonShinyPalette_KinglerGmax[] = INCBIN_U16("graphics/pokemon/kingler/gmax/shiny.gbapal"); const u8 gMonIcon_KinglerGmax[] = INCBIN_U8("graphics/pokemon/kingler/gmax/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS // const u32 gObjectEventPic_KinglerGmax[] = INCBIN_COMP("graphics/pokemon/kingler/gmax/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - // const u32 gOverworldPalette_KinglerGmax[] = INCBIN_U32("graphics/pokemon/kingler/gmax/overworld_normal.gbapal.lz"); - // const u32 gShinyOverworldPalette_KinglerGmax[] = INCBIN_U32("graphics/pokemon/kingler/gmax/overworld_shiny.gbapal.lz"); + // const u16 gOverworldPalette_KinglerGmax[] = INCBIN_U16("graphics/pokemon/kingler/gmax/overworld_normal.gbapal"); + // const u16 gShinyOverworldPalette_KinglerGmax[] = INCBIN_U16("graphics/pokemon/kingler/gmax/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GIGANTAMAX_FORMS @@ -3978,14 +3978,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_VOLTORB #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Voltorb[] = INCBIN_U32("graphics/pokemon/voltorb/anim_front.4bpp.lz"); - const u32 gMonPalette_Voltorb[] = INCBIN_U32("graphics/pokemon/voltorb/normal.gbapal.lz"); + const u16 gMonPalette_Voltorb[] = INCBIN_U16("graphics/pokemon/voltorb/normal.gbapal"); const u32 gMonBackPic_Voltorb[] = INCBIN_U32("graphics/pokemon/voltorb/back.4bpp.lz"); - const u32 gMonShinyPalette_Voltorb[] = INCBIN_U32("graphics/pokemon/voltorb/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Voltorb[] = INCBIN_U16("graphics/pokemon/voltorb/shiny.gbapal"); #else const u32 gMonFrontPic_Voltorb[] = INCBIN_U32("graphics/pokemon/voltorb/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Voltorb[] = INCBIN_U32("graphics/pokemon/voltorb/normal_gba.gbapal.lz"); + const u16 gMonPalette_Voltorb[] = INCBIN_U16("graphics/pokemon/voltorb/normal_gba.gbapal"); const u32 gMonBackPic_Voltorb[] = INCBIN_U32("graphics/pokemon/voltorb/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Voltorb[] = INCBIN_U32("graphics/pokemon/voltorb/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Voltorb[] = INCBIN_U16("graphics/pokemon/voltorb/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Voltorb[] = INCBIN_U8("graphics/pokemon/voltorb/icon.4bpp"); @@ -3998,21 +3998,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Voltorb[] = INCBIN_U16("graphics/pokemon/voltorb/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Voltorb[] = INCBIN_U16("graphics/pokemon/voltorb/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Electrode[] = INCBIN_U32("graphics/pokemon/electrode/anim_front.4bpp.lz"); - const u32 gMonPalette_Electrode[] = INCBIN_U32("graphics/pokemon/electrode/normal.gbapal.lz"); + const u16 gMonPalette_Electrode[] = INCBIN_U16("graphics/pokemon/electrode/normal.gbapal"); const u32 gMonBackPic_Electrode[] = INCBIN_U32("graphics/pokemon/electrode/back.4bpp.lz"); - const u32 gMonShinyPalette_Electrode[] = INCBIN_U32("graphics/pokemon/electrode/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Electrode[] = INCBIN_U16("graphics/pokemon/electrode/shiny.gbapal"); #else const u32 gMonFrontPic_Electrode[] = INCBIN_U32("graphics/pokemon/electrode/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Electrode[] = INCBIN_U32("graphics/pokemon/electrode/normal_gba.gbapal.lz"); + const u16 gMonPalette_Electrode[] = INCBIN_U16("graphics/pokemon/electrode/normal_gba.gbapal"); const u32 gMonBackPic_Electrode[] = INCBIN_U32("graphics/pokemon/electrode/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Electrode[] = INCBIN_U32("graphics/pokemon/electrode/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Electrode[] = INCBIN_U16("graphics/pokemon/electrode/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Electrode[] = INCBIN_U8("graphics/pokemon/electrode/icon.4bpp"); @@ -4025,35 +4025,35 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Electrode[] = INCBIN_U16("graphics/pokemon/electrode/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Electrode[] = INCBIN_U16("graphics/pokemon/electrode/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if P_HISUIAN_FORMS const u32 gMonFrontPic_VoltorbHisui[] = INCBIN_U32("graphics/pokemon/voltorb/hisui/front.4bpp.lz"); - const u32 gMonPalette_VoltorbHisui[] = INCBIN_U32("graphics/pokemon/voltorb/hisui/normal.gbapal.lz"); + const u16 gMonPalette_VoltorbHisui[] = INCBIN_U16("graphics/pokemon/voltorb/hisui/normal.gbapal"); const u32 gMonBackPic_VoltorbHisui[] = INCBIN_U32("graphics/pokemon/voltorb/hisui/back.4bpp.lz"); - const u32 gMonShinyPalette_VoltorbHisui[] = INCBIN_U32("graphics/pokemon/voltorb/hisui/shiny.gbapal.lz"); + const u16 gMonShinyPalette_VoltorbHisui[] = INCBIN_U16("graphics/pokemon/voltorb/hisui/shiny.gbapal"); const u8 gMonIcon_VoltorbHisui[] = INCBIN_U8("graphics/pokemon/voltorb/hisui/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS const u32 gObjectEventPic_VoltorbHisui[] = INCBIN_COMP("graphics/pokemon/voltorb/hisui/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - const u32 gOverworldPalette_VoltorbHisui[] = INCBIN_U32("graphics/pokemon/voltorb/hisui/overworld_normal.gbapal.lz"); - const u32 gShinyOverworldPalette_VoltorbHisui[] = INCBIN_U32("graphics/pokemon/voltorb/hisui/overworld_shiny.gbapal.lz"); + const u16 gOverworldPalette_VoltorbHisui[] = INCBIN_U16("graphics/pokemon/voltorb/hisui/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_VoltorbHisui[] = INCBIN_U16("graphics/pokemon/voltorb/hisui/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_ElectrodeHisui[] = INCBIN_U32("graphics/pokemon/electrode/hisui/front.4bpp.lz"); - const u32 gMonPalette_ElectrodeHisui[] = INCBIN_U32("graphics/pokemon/electrode/hisui/normal.gbapal.lz"); + const u16 gMonPalette_ElectrodeHisui[] = INCBIN_U16("graphics/pokemon/electrode/hisui/normal.gbapal"); const u32 gMonBackPic_ElectrodeHisui[] = INCBIN_U32("graphics/pokemon/electrode/hisui/back.4bpp.lz"); - const u32 gMonShinyPalette_ElectrodeHisui[] = INCBIN_U32("graphics/pokemon/electrode/hisui/shiny.gbapal.lz"); + const u16 gMonShinyPalette_ElectrodeHisui[] = INCBIN_U16("graphics/pokemon/electrode/hisui/shiny.gbapal"); const u8 gMonIcon_ElectrodeHisui[] = INCBIN_U8("graphics/pokemon/electrode/hisui/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS const u32 gObjectEventPic_ElectrodeHisui[] = INCBIN_COMP("graphics/pokemon/electrode/hisui/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - const u32 gOverworldPalette_ElectrodeHisui[] = INCBIN_U32("graphics/pokemon/electrode/hisui/overworld_normal.gbapal.lz"); - const u32 gShinyOverworldPalette_ElectrodeHisui[] = INCBIN_U32("graphics/pokemon/electrode/hisui/overworld_shiny.gbapal.lz"); + const u16 gOverworldPalette_ElectrodeHisui[] = INCBIN_U16("graphics/pokemon/electrode/hisui/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_ElectrodeHisui[] = INCBIN_U16("graphics/pokemon/electrode/hisui/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_HISUIAN_FORMS @@ -4062,14 +4062,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_EXEGGCUTE #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Exeggcute[] = INCBIN_U32("graphics/pokemon/exeggcute/anim_front.4bpp.lz"); - const u32 gMonPalette_Exeggcute[] = INCBIN_U32("graphics/pokemon/exeggcute/normal.gbapal.lz"); + const u16 gMonPalette_Exeggcute[] = INCBIN_U16("graphics/pokemon/exeggcute/normal.gbapal"); const u32 gMonBackPic_Exeggcute[] = INCBIN_U32("graphics/pokemon/exeggcute/back.4bpp.lz"); - const u32 gMonShinyPalette_Exeggcute[] = INCBIN_U32("graphics/pokemon/exeggcute/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Exeggcute[] = INCBIN_U16("graphics/pokemon/exeggcute/shiny.gbapal"); #else const u32 gMonFrontPic_Exeggcute[] = INCBIN_U32("graphics/pokemon/exeggcute/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Exeggcute[] = INCBIN_U32("graphics/pokemon/exeggcute/normal_gba.gbapal.lz"); + const u16 gMonPalette_Exeggcute[] = INCBIN_U16("graphics/pokemon/exeggcute/normal_gba.gbapal"); const u32 gMonBackPic_Exeggcute[] = INCBIN_U32("graphics/pokemon/exeggcute/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Exeggcute[] = INCBIN_U32("graphics/pokemon/exeggcute/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Exeggcute[] = INCBIN_U16("graphics/pokemon/exeggcute/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Exeggcute[] = INCBIN_U8("graphics/pokemon/exeggcute/icon.4bpp"); @@ -4082,21 +4082,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Exeggcute[] = INCBIN_U16("graphics/pokemon/exeggcute/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Exeggcute[] = INCBIN_U16("graphics/pokemon/exeggcute/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Exeggutor[] = INCBIN_U32("graphics/pokemon/exeggutor/anim_front.4bpp.lz"); - const u32 gMonPalette_Exeggutor[] = INCBIN_U32("graphics/pokemon/exeggutor/normal.gbapal.lz"); + const u16 gMonPalette_Exeggutor[] = INCBIN_U16("graphics/pokemon/exeggutor/normal.gbapal"); const u32 gMonBackPic_Exeggutor[] = INCBIN_U32("graphics/pokemon/exeggutor/back.4bpp.lz"); - const u32 gMonShinyPalette_Exeggutor[] = INCBIN_U32("graphics/pokemon/exeggutor/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Exeggutor[] = INCBIN_U16("graphics/pokemon/exeggutor/shiny.gbapal"); #else const u32 gMonFrontPic_Exeggutor[] = INCBIN_U32("graphics/pokemon/exeggutor/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Exeggutor[] = INCBIN_U32("graphics/pokemon/exeggutor/normal_gba.gbapal.lz"); + const u16 gMonPalette_Exeggutor[] = INCBIN_U16("graphics/pokemon/exeggutor/normal_gba.gbapal"); const u32 gMonBackPic_Exeggutor[] = INCBIN_U32("graphics/pokemon/exeggutor/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Exeggutor[] = INCBIN_U32("graphics/pokemon/exeggutor/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Exeggutor[] = INCBIN_U16("graphics/pokemon/exeggutor/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Exeggutor[] = INCBIN_U8("graphics/pokemon/exeggutor/icon.4bpp"); @@ -4109,22 +4109,22 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Exeggutor[] = INCBIN_U16("graphics/pokemon/exeggutor/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Exeggutor[] = INCBIN_U16("graphics/pokemon/exeggutor/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if P_ALOLAN_FORMS const u32 gMonFrontPic_ExeggutorAlola[] = INCBIN_U32("graphics/pokemon/exeggutor/alola/anim_front.4bpp.lz"); - const u32 gMonPalette_ExeggutorAlola[] = INCBIN_U32("graphics/pokemon/exeggutor/alola/normal.gbapal.lz"); + const u16 gMonPalette_ExeggutorAlola[] = INCBIN_U16("graphics/pokemon/exeggutor/alola/normal.gbapal"); const u32 gMonBackPic_ExeggutorAlola[] = INCBIN_U32("graphics/pokemon/exeggutor/alola/back.4bpp.lz"); - const u32 gMonShinyPalette_ExeggutorAlola[] = INCBIN_U32("graphics/pokemon/exeggutor/alola/shiny.gbapal.lz"); + const u16 gMonShinyPalette_ExeggutorAlola[] = INCBIN_U16("graphics/pokemon/exeggutor/alola/shiny.gbapal"); const u8 gMonIcon_ExeggutorAlola[] = INCBIN_U8("graphics/pokemon/exeggutor/alola/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS const u32 gObjectEventPic_ExeggutorAlola[] = INCBIN_COMP("graphics/pokemon/exeggutor/alola/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - const u32 gOverworldPalette_ExeggutorAlola[] = INCBIN_U32("graphics/pokemon/exeggutor/alola/overworld_normal.gbapal.lz"); - const u32 gShinyOverworldPalette_ExeggutorAlola[] = INCBIN_U32("graphics/pokemon/exeggutor/alola/overworld_shiny.gbapal.lz"); + const u16 gOverworldPalette_ExeggutorAlola[] = INCBIN_U16("graphics/pokemon/exeggutor/alola/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_ExeggutorAlola[] = INCBIN_U16("graphics/pokemon/exeggutor/alola/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_ALOLAN_FORMS @@ -4133,14 +4133,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_CUBONE #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Cubone[] = INCBIN_U32("graphics/pokemon/cubone/anim_front.4bpp.lz"); - const u32 gMonPalette_Cubone[] = INCBIN_U32("graphics/pokemon/cubone/normal.gbapal.lz"); + const u16 gMonPalette_Cubone[] = INCBIN_U16("graphics/pokemon/cubone/normal.gbapal"); const u32 gMonBackPic_Cubone[] = INCBIN_U32("graphics/pokemon/cubone/back.4bpp.lz"); - const u32 gMonShinyPalette_Cubone[] = INCBIN_U32("graphics/pokemon/cubone/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Cubone[] = INCBIN_U16("graphics/pokemon/cubone/shiny.gbapal"); #else const u32 gMonFrontPic_Cubone[] = INCBIN_U32("graphics/pokemon/cubone/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Cubone[] = INCBIN_U32("graphics/pokemon/cubone/normal_gba.gbapal.lz"); + const u16 gMonPalette_Cubone[] = INCBIN_U16("graphics/pokemon/cubone/normal_gba.gbapal"); const u32 gMonBackPic_Cubone[] = INCBIN_U32("graphics/pokemon/cubone/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Cubone[] = INCBIN_U32("graphics/pokemon/cubone/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Cubone[] = INCBIN_U16("graphics/pokemon/cubone/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Cubone[] = INCBIN_U8("graphics/pokemon/cubone/icon.4bpp"); @@ -4153,21 +4153,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Cubone[] = INCBIN_U16("graphics/pokemon/cubone/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Cubone[] = INCBIN_U16("graphics/pokemon/cubone/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Marowak[] = INCBIN_U32("graphics/pokemon/marowak/anim_front.4bpp.lz"); - const u32 gMonPalette_Marowak[] = INCBIN_U32("graphics/pokemon/marowak/normal.gbapal.lz"); + const u16 gMonPalette_Marowak[] = INCBIN_U16("graphics/pokemon/marowak/normal.gbapal"); const u32 gMonBackPic_Marowak[] = INCBIN_U32("graphics/pokemon/marowak/back.4bpp.lz"); - const u32 gMonShinyPalette_Marowak[] = INCBIN_U32("graphics/pokemon/marowak/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Marowak[] = INCBIN_U16("graphics/pokemon/marowak/shiny.gbapal"); #else const u32 gMonFrontPic_Marowak[] = INCBIN_U32("graphics/pokemon/marowak/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Marowak[] = INCBIN_U32("graphics/pokemon/marowak/normal_gba.gbapal.lz"); + const u16 gMonPalette_Marowak[] = INCBIN_U16("graphics/pokemon/marowak/normal_gba.gbapal"); const u32 gMonBackPic_Marowak[] = INCBIN_U32("graphics/pokemon/marowak/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Marowak[] = INCBIN_U32("graphics/pokemon/marowak/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Marowak[] = INCBIN_U16("graphics/pokemon/marowak/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Marowak[] = INCBIN_U8("graphics/pokemon/marowak/icon.4bpp"); @@ -4180,22 +4180,22 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Marowak[] = INCBIN_U16("graphics/pokemon/marowak/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Marowak[] = INCBIN_U16("graphics/pokemon/marowak/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if P_ALOLAN_FORMS const u32 gMonFrontPic_MarowakAlola[] = INCBIN_U32("graphics/pokemon/marowak/alola/front.4bpp.lz"); - const u32 gMonPalette_MarowakAlola[] = INCBIN_U32("graphics/pokemon/marowak/alola/normal.gbapal.lz"); + const u16 gMonPalette_MarowakAlola[] = INCBIN_U16("graphics/pokemon/marowak/alola/normal.gbapal"); const u32 gMonBackPic_MarowakAlola[] = INCBIN_U32("graphics/pokemon/marowak/alola/back.4bpp.lz"); - const u32 gMonShinyPalette_MarowakAlola[] = INCBIN_U32("graphics/pokemon/marowak/alola/shiny.gbapal.lz"); + const u16 gMonShinyPalette_MarowakAlola[] = INCBIN_U16("graphics/pokemon/marowak/alola/shiny.gbapal"); const u8 gMonIcon_MarowakAlola[] = INCBIN_U8("graphics/pokemon/marowak/alola/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS const u32 gObjectEventPic_MarowakAlola[] = INCBIN_COMP("graphics/pokemon/marowak/alola/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - const u32 gOverworldPalette_MarowakAlola[] = INCBIN_U32("graphics/pokemon/marowak/alola/overworld_normal.gbapal.lz"); - const u32 gShinyOverworldPalette_MarowakAlola[] = INCBIN_U32("graphics/pokemon/marowak/alola/overworld_shiny.gbapal.lz"); + const u16 gOverworldPalette_MarowakAlola[] = INCBIN_U16("graphics/pokemon/marowak/alola/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_MarowakAlola[] = INCBIN_U16("graphics/pokemon/marowak/alola/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_ALOLAN_FORMS @@ -4205,14 +4205,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_GEN_2_CROSS_EVOS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Tyrogue[] = INCBIN_U32("graphics/pokemon/tyrogue/anim_front.4bpp.lz"); - const u32 gMonPalette_Tyrogue[] = INCBIN_U32("graphics/pokemon/tyrogue/normal.gbapal.lz"); + const u16 gMonPalette_Tyrogue[] = INCBIN_U16("graphics/pokemon/tyrogue/normal.gbapal"); const u32 gMonBackPic_Tyrogue[] = INCBIN_U32("graphics/pokemon/tyrogue/back.4bpp.lz"); - const u32 gMonShinyPalette_Tyrogue[] = INCBIN_U32("graphics/pokemon/tyrogue/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Tyrogue[] = INCBIN_U16("graphics/pokemon/tyrogue/shiny.gbapal"); #else const u32 gMonFrontPic_Tyrogue[] = INCBIN_U32("graphics/pokemon/tyrogue/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Tyrogue[] = INCBIN_U32("graphics/pokemon/tyrogue/normal_gba.gbapal.lz"); + const u16 gMonPalette_Tyrogue[] = INCBIN_U16("graphics/pokemon/tyrogue/normal_gba.gbapal"); const u32 gMonBackPic_Tyrogue[] = INCBIN_U32("graphics/pokemon/tyrogue/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Tyrogue[] = INCBIN_U32("graphics/pokemon/tyrogue/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Tyrogue[] = INCBIN_U16("graphics/pokemon/tyrogue/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Tyrogue[] = INCBIN_U8("graphics/pokemon/tyrogue/icon.4bpp"); @@ -4225,22 +4225,22 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Tyrogue[] = INCBIN_U16("graphics/pokemon/tyrogue/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Tyrogue[] = INCBIN_U16("graphics/pokemon/tyrogue/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_2_CROSS_EVOS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Hitmonlee[] = INCBIN_U32("graphics/pokemon/hitmonlee/anim_front.4bpp.lz"); - const u32 gMonPalette_Hitmonlee[] = INCBIN_U32("graphics/pokemon/hitmonlee/normal.gbapal.lz"); + const u16 gMonPalette_Hitmonlee[] = INCBIN_U16("graphics/pokemon/hitmonlee/normal.gbapal"); const u32 gMonBackPic_Hitmonlee[] = INCBIN_U32("graphics/pokemon/hitmonlee/back.4bpp.lz"); - const u32 gMonShinyPalette_Hitmonlee[] = INCBIN_U32("graphics/pokemon/hitmonlee/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Hitmonlee[] = INCBIN_U16("graphics/pokemon/hitmonlee/shiny.gbapal"); #else const u32 gMonFrontPic_Hitmonlee[] = INCBIN_U32("graphics/pokemon/hitmonlee/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Hitmonlee[] = INCBIN_U32("graphics/pokemon/hitmonlee/normal_gba.gbapal.lz"); + const u16 gMonPalette_Hitmonlee[] = INCBIN_U16("graphics/pokemon/hitmonlee/normal_gba.gbapal"); const u32 gMonBackPic_Hitmonlee[] = INCBIN_U32("graphics/pokemon/hitmonlee/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Hitmonlee[] = INCBIN_U32("graphics/pokemon/hitmonlee/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Hitmonlee[] = INCBIN_U16("graphics/pokemon/hitmonlee/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Hitmonlee[] = INCBIN_U8("graphics/pokemon/hitmonlee/icon.4bpp"); @@ -4253,21 +4253,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Hitmonlee[] = INCBIN_U16("graphics/pokemon/hitmonlee/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Hitmonlee[] = INCBIN_U16("graphics/pokemon/hitmonlee/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Hitmonchan[] = INCBIN_U32("graphics/pokemon/hitmonchan/anim_front.4bpp.lz"); - const u32 gMonPalette_Hitmonchan[] = INCBIN_U32("graphics/pokemon/hitmonchan/normal.gbapal.lz"); + const u16 gMonPalette_Hitmonchan[] = INCBIN_U16("graphics/pokemon/hitmonchan/normal.gbapal"); const u32 gMonBackPic_Hitmonchan[] = INCBIN_U32("graphics/pokemon/hitmonchan/back.4bpp.lz"); - const u32 gMonShinyPalette_Hitmonchan[] = INCBIN_U32("graphics/pokemon/hitmonchan/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Hitmonchan[] = INCBIN_U16("graphics/pokemon/hitmonchan/shiny.gbapal"); #else const u32 gMonFrontPic_Hitmonchan[] = INCBIN_U32("graphics/pokemon/hitmonchan/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Hitmonchan[] = INCBIN_U32("graphics/pokemon/hitmonchan/normal_gba.gbapal.lz"); + const u16 gMonPalette_Hitmonchan[] = INCBIN_U16("graphics/pokemon/hitmonchan/normal_gba.gbapal"); const u32 gMonBackPic_Hitmonchan[] = INCBIN_U32("graphics/pokemon/hitmonchan/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Hitmonchan[] = INCBIN_U32("graphics/pokemon/hitmonchan/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Hitmonchan[] = INCBIN_U16("graphics/pokemon/hitmonchan/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Hitmonchan[] = INCBIN_U8("graphics/pokemon/hitmonchan/icon.4bpp"); @@ -4280,22 +4280,22 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Hitmonchan[] = INCBIN_U16("graphics/pokemon/hitmonchan/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Hitmonchan[] = INCBIN_U16("graphics/pokemon/hitmonchan/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if P_GEN_2_CROSS_EVOS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Hitmontop[] = INCBIN_U32("graphics/pokemon/hitmontop/anim_front.4bpp.lz"); - const u32 gMonPalette_Hitmontop[] = INCBIN_U32("graphics/pokemon/hitmontop/normal.gbapal.lz"); + const u16 gMonPalette_Hitmontop[] = INCBIN_U16("graphics/pokemon/hitmontop/normal.gbapal"); const u32 gMonBackPic_Hitmontop[] = INCBIN_U32("graphics/pokemon/hitmontop/back.4bpp.lz"); - const u32 gMonShinyPalette_Hitmontop[] = INCBIN_U32("graphics/pokemon/hitmontop/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Hitmontop[] = INCBIN_U16("graphics/pokemon/hitmontop/shiny.gbapal"); #else const u32 gMonFrontPic_Hitmontop[] = INCBIN_U32("graphics/pokemon/hitmontop/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Hitmontop[] = INCBIN_U32("graphics/pokemon/hitmontop/normal_gba.gbapal.lz"); + const u16 gMonPalette_Hitmontop[] = INCBIN_U16("graphics/pokemon/hitmontop/normal_gba.gbapal"); const u32 gMonBackPic_Hitmontop[] = INCBIN_U32("graphics/pokemon/hitmontop/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Hitmontop[] = INCBIN_U32("graphics/pokemon/hitmontop/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Hitmontop[] = INCBIN_U16("graphics/pokemon/hitmontop/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Hitmontop[] = INCBIN_U8("graphics/pokemon/hitmontop/icon.4bpp"); @@ -4308,8 +4308,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Hitmontop[] = INCBIN_U16("graphics/pokemon/hitmontop/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Hitmontop[] = INCBIN_U16("graphics/pokemon/hitmontop/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_2_CROSS_EVOS @@ -4318,14 +4318,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_LICKITUNG #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Lickitung[] = INCBIN_U32("graphics/pokemon/lickitung/anim_front.4bpp.lz"); - const u32 gMonPalette_Lickitung[] = INCBIN_U32("graphics/pokemon/lickitung/normal.gbapal.lz"); + const u16 gMonPalette_Lickitung[] = INCBIN_U16("graphics/pokemon/lickitung/normal.gbapal"); const u32 gMonBackPic_Lickitung[] = INCBIN_U32("graphics/pokemon/lickitung/back.4bpp.lz"); - const u32 gMonShinyPalette_Lickitung[] = INCBIN_U32("graphics/pokemon/lickitung/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Lickitung[] = INCBIN_U16("graphics/pokemon/lickitung/shiny.gbapal"); #else const u32 gMonFrontPic_Lickitung[] = INCBIN_U32("graphics/pokemon/lickitung/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Lickitung[] = INCBIN_U32("graphics/pokemon/lickitung/normal_gba.gbapal.lz"); + const u16 gMonPalette_Lickitung[] = INCBIN_U16("graphics/pokemon/lickitung/normal_gba.gbapal"); const u32 gMonBackPic_Lickitung[] = INCBIN_U32("graphics/pokemon/lickitung/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Lickitung[] = INCBIN_U32("graphics/pokemon/lickitung/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Lickitung[] = INCBIN_U16("graphics/pokemon/lickitung/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Lickitung[] = INCBIN_U8("graphics/pokemon/lickitung/icon.4bpp"); @@ -4338,16 +4338,16 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Lickitung[] = INCBIN_U16("graphics/pokemon/lickitung/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Lickitung[] = INCBIN_U16("graphics/pokemon/lickitung/overworld_shiny.gbapal"); #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"); - const u32 gMonPalette_Lickilicky[] = INCBIN_U32("graphics/pokemon/lickilicky/normal.gbapal.lz"); + const u16 gMonPalette_Lickilicky[] = INCBIN_U16("graphics/pokemon/lickilicky/normal.gbapal"); const u32 gMonBackPic_Lickilicky[] = INCBIN_U32("graphics/pokemon/lickilicky/back.4bpp.lz"); - const u32 gMonShinyPalette_Lickilicky[] = INCBIN_U32("graphics/pokemon/lickilicky/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Lickilicky[] = INCBIN_U16("graphics/pokemon/lickilicky/shiny.gbapal"); const u8 gMonIcon_Lickilicky[] = INCBIN_U8("graphics/pokemon/lickilicky/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Lickilicky[] = INCBIN_U8("graphics/pokemon/lickilicky/footprint.1bpp"); @@ -4355,8 +4355,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Lickilicky[] = INCBIN_U16("graphics/pokemon/lickilicky/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Lickilicky[] = INCBIN_U16("graphics/pokemon/lickilicky/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_4_CROSS_EVOS @@ -4365,14 +4365,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_KOFFING #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Koffing[] = INCBIN_U32("graphics/pokemon/koffing/anim_front.4bpp.lz"); - const u32 gMonPalette_Koffing[] = INCBIN_U32("graphics/pokemon/koffing/normal.gbapal.lz"); + const u16 gMonPalette_Koffing[] = INCBIN_U16("graphics/pokemon/koffing/normal.gbapal"); const u32 gMonBackPic_Koffing[] = INCBIN_U32("graphics/pokemon/koffing/back.4bpp.lz"); - const u32 gMonShinyPalette_Koffing[] = INCBIN_U32("graphics/pokemon/koffing/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Koffing[] = INCBIN_U16("graphics/pokemon/koffing/shiny.gbapal"); #else const u32 gMonFrontPic_Koffing[] = INCBIN_U32("graphics/pokemon/koffing/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Koffing[] = INCBIN_U32("graphics/pokemon/koffing/normal_gba.gbapal.lz"); + const u16 gMonPalette_Koffing[] = INCBIN_U16("graphics/pokemon/koffing/normal_gba.gbapal"); const u32 gMonBackPic_Koffing[] = INCBIN_U32("graphics/pokemon/koffing/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Koffing[] = INCBIN_U32("graphics/pokemon/koffing/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Koffing[] = INCBIN_U16("graphics/pokemon/koffing/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Koffing[] = INCBIN_U8("graphics/pokemon/koffing/icon.4bpp"); @@ -4385,21 +4385,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Koffing[] = INCBIN_U16("graphics/pokemon/koffing/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Koffing[] = INCBIN_U16("graphics/pokemon/koffing/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Weezing[] = INCBIN_U32("graphics/pokemon/weezing/anim_front.4bpp.lz"); - const u32 gMonPalette_Weezing[] = INCBIN_U32("graphics/pokemon/weezing/normal.gbapal.lz"); + const u16 gMonPalette_Weezing[] = INCBIN_U16("graphics/pokemon/weezing/normal.gbapal"); const u32 gMonBackPic_Weezing[] = INCBIN_U32("graphics/pokemon/weezing/back.4bpp.lz"); - const u32 gMonShinyPalette_Weezing[] = INCBIN_U32("graphics/pokemon/weezing/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Weezing[] = INCBIN_U16("graphics/pokemon/weezing/shiny.gbapal"); #else const u32 gMonFrontPic_Weezing[] = INCBIN_U32("graphics/pokemon/weezing/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Weezing[] = INCBIN_U32("graphics/pokemon/weezing/normal_gba.gbapal.lz"); + const u16 gMonPalette_Weezing[] = INCBIN_U16("graphics/pokemon/weezing/normal_gba.gbapal"); const u32 gMonBackPic_Weezing[] = INCBIN_U32("graphics/pokemon/weezing/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Weezing[] = INCBIN_U32("graphics/pokemon/weezing/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Weezing[] = INCBIN_U16("graphics/pokemon/weezing/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Weezing[] = INCBIN_U8("graphics/pokemon/weezing/icon.4bpp"); @@ -4412,22 +4412,22 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Weezing[] = INCBIN_U16("graphics/pokemon/weezing/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Weezing[] = INCBIN_U16("graphics/pokemon/weezing/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if P_GALARIAN_FORMS const u32 gMonFrontPic_WeezingGalar[] = INCBIN_U32("graphics/pokemon/weezing/galar/front.4bpp.lz"); - const u32 gMonPalette_WeezingGalar[] = INCBIN_U32("graphics/pokemon/weezing/galar/normal.gbapal.lz"); + const u16 gMonPalette_WeezingGalar[] = INCBIN_U16("graphics/pokemon/weezing/galar/normal.gbapal"); const u32 gMonBackPic_WeezingGalar[] = INCBIN_U32("graphics/pokemon/weezing/galar/back.4bpp.lz"); - const u32 gMonShinyPalette_WeezingGalar[] = INCBIN_U32("graphics/pokemon/weezing/galar/shiny.gbapal.lz"); + const u16 gMonShinyPalette_WeezingGalar[] = INCBIN_U16("graphics/pokemon/weezing/galar/shiny.gbapal"); const u8 gMonIcon_WeezingGalar[] = INCBIN_U8("graphics/pokemon/weezing/galar/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS const u32 gObjectEventPic_WeezingGalar[] = INCBIN_COMP("graphics/pokemon/weezing/galar/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - const u32 gOverworldPalette_WeezingGalar[] = INCBIN_U32("graphics/pokemon/weezing/galar/overworld_normal.gbapal.lz"); - const u32 gShinyOverworldPalette_WeezingGalar[] = INCBIN_U32("graphics/pokemon/weezing/galar/overworld_shiny.gbapal.lz"); + const u16 gOverworldPalette_WeezingGalar[] = INCBIN_U16("graphics/pokemon/weezing/galar/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_WeezingGalar[] = INCBIN_U16("graphics/pokemon/weezing/galar/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GALARIAN_FORMS @@ -4436,14 +4436,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_RHYHORN #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Rhyhorn[] = INCBIN_U32("graphics/pokemon/rhyhorn/anim_front.4bpp.lz"); - const u32 gMonPalette_Rhyhorn[] = INCBIN_U32("graphics/pokemon/rhyhorn/normal.gbapal.lz"); + const u16 gMonPalette_Rhyhorn[] = INCBIN_U16("graphics/pokemon/rhyhorn/normal.gbapal"); const u32 gMonBackPic_Rhyhorn[] = INCBIN_U32("graphics/pokemon/rhyhorn/back.4bpp.lz"); - const u32 gMonShinyPalette_Rhyhorn[] = INCBIN_U32("graphics/pokemon/rhyhorn/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Rhyhorn[] = INCBIN_U16("graphics/pokemon/rhyhorn/shiny.gbapal"); #else const u32 gMonFrontPic_Rhyhorn[] = INCBIN_U32("graphics/pokemon/rhyhorn/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Rhyhorn[] = INCBIN_U32("graphics/pokemon/rhyhorn/normal_gba.gbapal.lz"); + const u16 gMonPalette_Rhyhorn[] = INCBIN_U16("graphics/pokemon/rhyhorn/normal_gba.gbapal"); const u32 gMonBackPic_Rhyhorn[] = INCBIN_U32("graphics/pokemon/rhyhorn/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Rhyhorn[] = INCBIN_U32("graphics/pokemon/rhyhorn/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Rhyhorn[] = INCBIN_U16("graphics/pokemon/rhyhorn/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Rhyhorn[] = INCBIN_U8("graphics/pokemon/rhyhorn/icon.4bpp"); @@ -4456,8 +4456,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Rhyhorn[] = INCBIN_U16("graphics/pokemon/rhyhorn/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Rhyhorn[] = INCBIN_U16("graphics/pokemon/rhyhorn/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -4471,14 +4471,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Rhydon[] = INCBIN_U32("graphics/pokemon/rhydon/anim_front.4bpp.lz"); - const u32 gMonPalette_Rhydon[] = INCBIN_U32("graphics/pokemon/rhydon/normal.gbapal.lz"); + const u16 gMonPalette_Rhydon[] = INCBIN_U16("graphics/pokemon/rhydon/normal.gbapal"); const u32 gMonBackPic_Rhydon[] = INCBIN_U32("graphics/pokemon/rhydon/back.4bpp.lz"); - const u32 gMonShinyPalette_Rhydon[] = INCBIN_U32("graphics/pokemon/rhydon/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Rhydon[] = INCBIN_U16("graphics/pokemon/rhydon/shiny.gbapal"); #else const u32 gMonFrontPic_Rhydon[] = INCBIN_U32("graphics/pokemon/rhydon/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Rhydon[] = INCBIN_U32("graphics/pokemon/rhydon/normal_gba.gbapal.lz"); + const u16 gMonPalette_Rhydon[] = INCBIN_U16("graphics/pokemon/rhydon/normal_gba.gbapal"); const u32 gMonBackPic_Rhydon[] = INCBIN_U32("graphics/pokemon/rhydon/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Rhydon[] = INCBIN_U32("graphics/pokemon/rhydon/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Rhydon[] = INCBIN_U16("graphics/pokemon/rhydon/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Rhydon[] = INCBIN_U8("graphics/pokemon/rhydon/icon.4bpp"); @@ -4491,8 +4491,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Rhydon[] = INCBIN_U16("graphics/pokemon/rhydon/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Rhydon[] = INCBIN_U16("graphics/pokemon/rhydon/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -4506,9 +4506,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_GEN_4_CROSS_EVOS const u32 gMonFrontPic_Rhyperior[] = INCBIN_U32("graphics/pokemon/rhyperior/anim_front.4bpp.lz"); - const u32 gMonPalette_Rhyperior[] = INCBIN_U32("graphics/pokemon/rhyperior/normal.gbapal.lz"); + const u16 gMonPalette_Rhyperior[] = INCBIN_U16("graphics/pokemon/rhyperior/normal.gbapal"); const u32 gMonBackPic_Rhyperior[] = INCBIN_U32("graphics/pokemon/rhyperior/back.4bpp.lz"); - const u32 gMonShinyPalette_Rhyperior[] = INCBIN_U32("graphics/pokemon/rhyperior/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Rhyperior[] = INCBIN_U16("graphics/pokemon/rhyperior/shiny.gbapal"); const u8 gMonIcon_Rhyperior[] = INCBIN_U8("graphics/pokemon/rhyperior/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Rhyperior[] = INCBIN_U8("graphics/pokemon/rhyperior/footprint.1bpp"); @@ -4516,8 +4516,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Rhyperior[] = INCBIN_U16("graphics/pokemon/rhyperior/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Rhyperior[] = INCBIN_U16("graphics/pokemon/rhyperior/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -4534,9 +4534,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_CHANSEY #if P_GEN_4_CROSS_EVOS const u32 gMonFrontPic_Happiny[] = INCBIN_U32("graphics/pokemon/happiny/anim_front.4bpp.lz"); - const u32 gMonPalette_Happiny[] = INCBIN_U32("graphics/pokemon/happiny/normal.gbapal.lz"); + const u16 gMonPalette_Happiny[] = INCBIN_U16("graphics/pokemon/happiny/normal.gbapal"); const u32 gMonBackPic_Happiny[] = INCBIN_U32("graphics/pokemon/happiny/back.4bpp.lz"); - const u32 gMonShinyPalette_Happiny[] = INCBIN_U32("graphics/pokemon/happiny/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Happiny[] = INCBIN_U16("graphics/pokemon/happiny/shiny.gbapal"); const u8 gMonIcon_Happiny[] = INCBIN_U8("graphics/pokemon/happiny/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Happiny[] = INCBIN_U8("graphics/pokemon/happiny/footprint.1bpp"); @@ -4544,22 +4544,22 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Happiny[] = INCBIN_U16("graphics/pokemon/happiny/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Happiny[] = INCBIN_U16("graphics/pokemon/happiny/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_4_CROSS_EVOS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Chansey[] = INCBIN_U32("graphics/pokemon/chansey/anim_front.4bpp.lz"); - const u32 gMonPalette_Chansey[] = INCBIN_U32("graphics/pokemon/chansey/normal.gbapal.lz"); + const u16 gMonPalette_Chansey[] = INCBIN_U16("graphics/pokemon/chansey/normal.gbapal"); const u32 gMonBackPic_Chansey[] = INCBIN_U32("graphics/pokemon/chansey/back.4bpp.lz"); - const u32 gMonShinyPalette_Chansey[] = INCBIN_U32("graphics/pokemon/chansey/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Chansey[] = INCBIN_U16("graphics/pokemon/chansey/shiny.gbapal"); #else const u32 gMonFrontPic_Chansey[] = INCBIN_U32("graphics/pokemon/chansey/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Chansey[] = INCBIN_U32("graphics/pokemon/chansey/normal_gba.gbapal.lz"); + const u16 gMonPalette_Chansey[] = INCBIN_U16("graphics/pokemon/chansey/normal_gba.gbapal"); const u32 gMonBackPic_Chansey[] = INCBIN_U32("graphics/pokemon/chansey/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Chansey[] = INCBIN_U32("graphics/pokemon/chansey/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Chansey[] = INCBIN_U16("graphics/pokemon/chansey/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Chansey[] = INCBIN_U8("graphics/pokemon/chansey/icon.4bpp"); @@ -4572,22 +4572,22 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Chansey[] = INCBIN_U16("graphics/pokemon/chansey/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Chansey[] = INCBIN_U16("graphics/pokemon/chansey/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if P_GEN_2_CROSS_EVOS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Blissey[] = INCBIN_U32("graphics/pokemon/blissey/anim_front.4bpp.lz"); - const u32 gMonPalette_Blissey[] = INCBIN_U32("graphics/pokemon/blissey/normal.gbapal.lz"); + const u16 gMonPalette_Blissey[] = INCBIN_U16("graphics/pokemon/blissey/normal.gbapal"); const u32 gMonBackPic_Blissey[] = INCBIN_U32("graphics/pokemon/blissey/back.4bpp.lz"); - const u32 gMonShinyPalette_Blissey[] = INCBIN_U32("graphics/pokemon/blissey/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Blissey[] = INCBIN_U16("graphics/pokemon/blissey/shiny.gbapal"); #else const u32 gMonFrontPic_Blissey[] = INCBIN_U32("graphics/pokemon/blissey/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Blissey[] = INCBIN_U32("graphics/pokemon/blissey/normal_gba.gbapal.lz"); + const u16 gMonPalette_Blissey[] = INCBIN_U16("graphics/pokemon/blissey/normal_gba.gbapal"); const u32 gMonBackPic_Blissey[] = INCBIN_U32("graphics/pokemon/blissey/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Blissey[] = INCBIN_U32("graphics/pokemon/blissey/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Blissey[] = INCBIN_U16("graphics/pokemon/blissey/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Blissey[] = INCBIN_U8("graphics/pokemon/blissey/icon.4bpp"); @@ -4600,8 +4600,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Blissey[] = INCBIN_U16("graphics/pokemon/blissey/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Blissey[] = INCBIN_U16("graphics/pokemon/blissey/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_2_CROSS_EVOS @@ -4610,14 +4610,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_TANGELA #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Tangela[] = INCBIN_U32("graphics/pokemon/tangela/anim_front.4bpp.lz"); - const u32 gMonPalette_Tangela[] = INCBIN_U32("graphics/pokemon/tangela/normal.gbapal.lz"); + const u16 gMonPalette_Tangela[] = INCBIN_U16("graphics/pokemon/tangela/normal.gbapal"); const u32 gMonBackPic_Tangela[] = INCBIN_U32("graphics/pokemon/tangela/back.4bpp.lz"); - const u32 gMonShinyPalette_Tangela[] = INCBIN_U32("graphics/pokemon/tangela/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Tangela[] = INCBIN_U16("graphics/pokemon/tangela/shiny.gbapal"); #else const u32 gMonFrontPic_Tangela[] = INCBIN_U32("graphics/pokemon/tangela/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Tangela[] = INCBIN_U32("graphics/pokemon/tangela/normal_gba.gbapal.lz"); + const u16 gMonPalette_Tangela[] = INCBIN_U16("graphics/pokemon/tangela/normal_gba.gbapal"); const u32 gMonBackPic_Tangela[] = INCBIN_U32("graphics/pokemon/tangela/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Tangela[] = INCBIN_U32("graphics/pokemon/tangela/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Tangela[] = INCBIN_U16("graphics/pokemon/tangela/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Tangela[] = INCBIN_U8("graphics/pokemon/tangela/icon.4bpp"); @@ -4630,16 +4630,16 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Tangela[] = INCBIN_U16("graphics/pokemon/tangela/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Tangela[] = INCBIN_U16("graphics/pokemon/tangela/overworld_shiny.gbapal"); #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"); - const u32 gMonPalette_Tangrowth[] = INCBIN_U32("graphics/pokemon/tangrowth/normal.gbapal.lz"); + const u16 gMonPalette_Tangrowth[] = INCBIN_U16("graphics/pokemon/tangrowth/normal.gbapal"); const u32 gMonBackPic_Tangrowth[] = INCBIN_U32("graphics/pokemon/tangrowth/back.4bpp.lz"); - const u32 gMonShinyPalette_Tangrowth[] = INCBIN_U32("graphics/pokemon/tangrowth/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Tangrowth[] = INCBIN_U16("graphics/pokemon/tangrowth/shiny.gbapal"); const u8 gMonIcon_Tangrowth[] = INCBIN_U8("graphics/pokemon/tangrowth/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Tangrowth[] = INCBIN_U8("graphics/pokemon/tangrowth/footprint.1bpp"); @@ -4647,8 +4647,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Tangrowth[] = INCBIN_U16("graphics/pokemon/tangrowth/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Tangrowth[] = INCBIN_U16("graphics/pokemon/tangrowth/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -4664,14 +4664,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_KANGASKHAN #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Kangaskhan[] = INCBIN_U32("graphics/pokemon/kangaskhan/anim_front.4bpp.lz"); - const u32 gMonPalette_Kangaskhan[] = INCBIN_U32("graphics/pokemon/kangaskhan/normal.gbapal.lz"); + const u16 gMonPalette_Kangaskhan[] = INCBIN_U16("graphics/pokemon/kangaskhan/normal.gbapal"); const u32 gMonBackPic_Kangaskhan[] = INCBIN_U32("graphics/pokemon/kangaskhan/back.4bpp.lz"); - const u32 gMonShinyPalette_Kangaskhan[] = INCBIN_U32("graphics/pokemon/kangaskhan/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Kangaskhan[] = INCBIN_U16("graphics/pokemon/kangaskhan/shiny.gbapal"); #else const u32 gMonFrontPic_Kangaskhan[] = INCBIN_U32("graphics/pokemon/kangaskhan/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Kangaskhan[] = INCBIN_U32("graphics/pokemon/kangaskhan/normal_gba.gbapal.lz"); + const u16 gMonPalette_Kangaskhan[] = INCBIN_U16("graphics/pokemon/kangaskhan/normal_gba.gbapal"); const u32 gMonBackPic_Kangaskhan[] = INCBIN_U32("graphics/pokemon/kangaskhan/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Kangaskhan[] = INCBIN_U32("graphics/pokemon/kangaskhan/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Kangaskhan[] = INCBIN_U16("graphics/pokemon/kangaskhan/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Kangaskhan[] = INCBIN_U8("graphics/pokemon/kangaskhan/icon.4bpp"); @@ -4684,22 +4684,22 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Kangaskhan[] = INCBIN_U16("graphics/pokemon/kangaskhan/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Kangaskhan[] = INCBIN_U16("graphics/pokemon/kangaskhan/overworld_shiny.gbapal"); #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"); - const u32 gMonPalette_KangaskhanMega[] = INCBIN_U32("graphics/pokemon/kangaskhan/mega/normal.gbapal.lz"); + const u16 gMonPalette_KangaskhanMega[] = INCBIN_U16("graphics/pokemon/kangaskhan/mega/normal.gbapal"); 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 u16 gMonShinyPalette_KangaskhanMega[] = INCBIN_U16("graphics/pokemon/kangaskhan/mega/shiny.gbapal"); const u8 gMonIcon_KangaskhanMega[] = INCBIN_U8("graphics/pokemon/kangaskhan/mega/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS 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"); + const u16 gOverworldPalette_KangaskhanMega[] = INCBIN_U16("graphics/pokemon/kangaskhan/mega/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_KangaskhanMega[] = INCBIN_U16("graphics/pokemon/kangaskhan/mega/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS #endif //P_MEGA_EVOLUTIONS @@ -4708,14 +4708,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_HORSEA #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Horsea[] = INCBIN_U32("graphics/pokemon/horsea/anim_front.4bpp.lz"); - const u32 gMonPalette_Horsea[] = INCBIN_U32("graphics/pokemon/horsea/normal.gbapal.lz"); + const u16 gMonPalette_Horsea[] = INCBIN_U16("graphics/pokemon/horsea/normal.gbapal"); const u32 gMonBackPic_Horsea[] = INCBIN_U32("graphics/pokemon/horsea/back.4bpp.lz"); - const u32 gMonShinyPalette_Horsea[] = INCBIN_U32("graphics/pokemon/horsea/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Horsea[] = INCBIN_U16("graphics/pokemon/horsea/shiny.gbapal"); #else const u32 gMonFrontPic_Horsea[] = INCBIN_U32("graphics/pokemon/horsea/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Horsea[] = INCBIN_U32("graphics/pokemon/horsea/normal_gba.gbapal.lz"); + const u16 gMonPalette_Horsea[] = INCBIN_U16("graphics/pokemon/horsea/normal_gba.gbapal"); const u32 gMonBackPic_Horsea[] = INCBIN_U32("graphics/pokemon/horsea/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Horsea[] = INCBIN_U32("graphics/pokemon/horsea/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Horsea[] = INCBIN_U16("graphics/pokemon/horsea/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Horsea[] = INCBIN_U8("graphics/pokemon/horsea/icon.4bpp"); @@ -4728,21 +4728,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Horsea[] = INCBIN_U16("graphics/pokemon/horsea/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Horsea[] = INCBIN_U16("graphics/pokemon/horsea/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Seadra[] = INCBIN_U32("graphics/pokemon/seadra/anim_front.4bpp.lz"); - const u32 gMonPalette_Seadra[] = INCBIN_U32("graphics/pokemon/seadra/normal.gbapal.lz"); + const u16 gMonPalette_Seadra[] = INCBIN_U16("graphics/pokemon/seadra/normal.gbapal"); const u32 gMonBackPic_Seadra[] = INCBIN_U32("graphics/pokemon/seadra/back.4bpp.lz"); - const u32 gMonShinyPalette_Seadra[] = INCBIN_U32("graphics/pokemon/seadra/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Seadra[] = INCBIN_U16("graphics/pokemon/seadra/shiny.gbapal"); #else const u32 gMonFrontPic_Seadra[] = INCBIN_U32("graphics/pokemon/seadra/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Seadra[] = INCBIN_U32("graphics/pokemon/seadra/normal_gba.gbapal.lz"); + const u16 gMonPalette_Seadra[] = INCBIN_U16("graphics/pokemon/seadra/normal_gba.gbapal"); const u32 gMonBackPic_Seadra[] = INCBIN_U32("graphics/pokemon/seadra/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Seadra[] = INCBIN_U32("graphics/pokemon/seadra/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Seadra[] = INCBIN_U16("graphics/pokemon/seadra/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Seadra[] = INCBIN_U8("graphics/pokemon/seadra/icon.4bpp"); @@ -4755,22 +4755,22 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Seadra[] = INCBIN_U16("graphics/pokemon/seadra/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Seadra[] = INCBIN_U16("graphics/pokemon/seadra/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if P_GEN_2_CROSS_EVOS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Kingdra[] = INCBIN_U32("graphics/pokemon/kingdra/anim_front.4bpp.lz"); - const u32 gMonPalette_Kingdra[] = INCBIN_U32("graphics/pokemon/kingdra/normal.gbapal.lz"); + const u16 gMonPalette_Kingdra[] = INCBIN_U16("graphics/pokemon/kingdra/normal.gbapal"); const u32 gMonBackPic_Kingdra[] = INCBIN_U32("graphics/pokemon/kingdra/back.4bpp.lz"); - const u32 gMonShinyPalette_Kingdra[] = INCBIN_U32("graphics/pokemon/kingdra/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Kingdra[] = INCBIN_U16("graphics/pokemon/kingdra/shiny.gbapal"); #else const u32 gMonFrontPic_Kingdra[] = INCBIN_U32("graphics/pokemon/kingdra/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Kingdra[] = INCBIN_U32("graphics/pokemon/kingdra/normal_gba.gbapal.lz"); + const u16 gMonPalette_Kingdra[] = INCBIN_U16("graphics/pokemon/kingdra/normal_gba.gbapal"); const u32 gMonBackPic_Kingdra[] = INCBIN_U32("graphics/pokemon/kingdra/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Kingdra[] = INCBIN_U32("graphics/pokemon/kingdra/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Kingdra[] = INCBIN_U16("graphics/pokemon/kingdra/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Kingdra[] = INCBIN_U8("graphics/pokemon/kingdra/icon.4bpp"); @@ -4783,8 +4783,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Kingdra[] = INCBIN_U16("graphics/pokemon/kingdra/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Kingdra[] = INCBIN_U16("graphics/pokemon/kingdra/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_2_CROSS_EVOS @@ -4793,14 +4793,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_GOLDEEN #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Goldeen[] = INCBIN_U32("graphics/pokemon/goldeen/anim_front.4bpp.lz"); - const u32 gMonPalette_Goldeen[] = INCBIN_U32("graphics/pokemon/goldeen/normal.gbapal.lz"); + const u16 gMonPalette_Goldeen[] = INCBIN_U16("graphics/pokemon/goldeen/normal.gbapal"); const u32 gMonBackPic_Goldeen[] = INCBIN_U32("graphics/pokemon/goldeen/back.4bpp.lz"); - const u32 gMonShinyPalette_Goldeen[] = INCBIN_U32("graphics/pokemon/goldeen/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Goldeen[] = INCBIN_U16("graphics/pokemon/goldeen/shiny.gbapal"); #else const u32 gMonFrontPic_Goldeen[] = INCBIN_U32("graphics/pokemon/goldeen/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Goldeen[] = INCBIN_U32("graphics/pokemon/goldeen/normal_gba.gbapal.lz"); + const u16 gMonPalette_Goldeen[] = INCBIN_U16("graphics/pokemon/goldeen/normal_gba.gbapal"); const u32 gMonBackPic_Goldeen[] = INCBIN_U32("graphics/pokemon/goldeen/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Goldeen[] = INCBIN_U32("graphics/pokemon/goldeen/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Goldeen[] = INCBIN_U16("graphics/pokemon/goldeen/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Goldeen[] = INCBIN_U8("graphics/pokemon/goldeen/icon.4bpp"); @@ -4813,8 +4813,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Goldeen[] = INCBIN_U16("graphics/pokemon/goldeen/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Goldeen[] = INCBIN_U16("graphics/pokemon/goldeen/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -4828,14 +4828,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Seaking[] = INCBIN_U32("graphics/pokemon/seaking/anim_front.4bpp.lz"); - const u32 gMonPalette_Seaking[] = INCBIN_U32("graphics/pokemon/seaking/normal.gbapal.lz"); + const u16 gMonPalette_Seaking[] = INCBIN_U16("graphics/pokemon/seaking/normal.gbapal"); const u32 gMonBackPic_Seaking[] = INCBIN_U32("graphics/pokemon/seaking/back.4bpp.lz"); - const u32 gMonShinyPalette_Seaking[] = INCBIN_U32("graphics/pokemon/seaking/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Seaking[] = INCBIN_U16("graphics/pokemon/seaking/shiny.gbapal"); #else const u32 gMonFrontPic_Seaking[] = INCBIN_U32("graphics/pokemon/seaking/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Seaking[] = INCBIN_U32("graphics/pokemon/seaking/normal_gba.gbapal.lz"); + const u16 gMonPalette_Seaking[] = INCBIN_U16("graphics/pokemon/seaking/normal_gba.gbapal"); const u32 gMonBackPic_Seaking[] = INCBIN_U32("graphics/pokemon/seaking/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Seaking[] = INCBIN_U32("graphics/pokemon/seaking/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Seaking[] = INCBIN_U16("graphics/pokemon/seaking/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Seaking[] = INCBIN_U8("graphics/pokemon/seaking/icon.4bpp"); @@ -4848,8 +4848,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Seaking[] = INCBIN_U16("graphics/pokemon/seaking/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Seaking[] = INCBIN_U16("graphics/pokemon/seaking/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -4865,14 +4865,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_STARYU #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Staryu[] = INCBIN_U32("graphics/pokemon/staryu/anim_front.4bpp.lz"); - const u32 gMonPalette_Staryu[] = INCBIN_U32("graphics/pokemon/staryu/normal.gbapal.lz"); + const u16 gMonPalette_Staryu[] = INCBIN_U16("graphics/pokemon/staryu/normal.gbapal"); const u32 gMonBackPic_Staryu[] = INCBIN_U32("graphics/pokemon/staryu/back.4bpp.lz"); - const u32 gMonShinyPalette_Staryu[] = INCBIN_U32("graphics/pokemon/staryu/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Staryu[] = INCBIN_U16("graphics/pokemon/staryu/shiny.gbapal"); #else const u32 gMonFrontPic_Staryu[] = INCBIN_U32("graphics/pokemon/staryu/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Staryu[] = INCBIN_U32("graphics/pokemon/staryu/normal_gba.gbapal.lz"); + const u16 gMonPalette_Staryu[] = INCBIN_U16("graphics/pokemon/staryu/normal_gba.gbapal"); const u32 gMonBackPic_Staryu[] = INCBIN_U32("graphics/pokemon/staryu/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Staryu[] = INCBIN_U32("graphics/pokemon/staryu/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Staryu[] = INCBIN_U16("graphics/pokemon/staryu/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Staryu[] = INCBIN_U8("graphics/pokemon/staryu/icon.4bpp"); @@ -4885,21 +4885,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Staryu[] = INCBIN_U16("graphics/pokemon/staryu/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Staryu[] = INCBIN_U16("graphics/pokemon/staryu/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Starmie[] = INCBIN_U32("graphics/pokemon/starmie/anim_front.4bpp.lz"); - const u32 gMonPalette_Starmie[] = INCBIN_U32("graphics/pokemon/starmie/normal.gbapal.lz"); + const u16 gMonPalette_Starmie[] = INCBIN_U16("graphics/pokemon/starmie/normal.gbapal"); const u32 gMonBackPic_Starmie[] = INCBIN_U32("graphics/pokemon/starmie/back.4bpp.lz"); - const u32 gMonShinyPalette_Starmie[] = INCBIN_U32("graphics/pokemon/starmie/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Starmie[] = INCBIN_U16("graphics/pokemon/starmie/shiny.gbapal"); #else const u32 gMonFrontPic_Starmie[] = INCBIN_U32("graphics/pokemon/starmie/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Starmie[] = INCBIN_U32("graphics/pokemon/starmie/normal_gba.gbapal.lz"); + const u16 gMonPalette_Starmie[] = INCBIN_U16("graphics/pokemon/starmie/normal_gba.gbapal"); const u32 gMonBackPic_Starmie[] = INCBIN_U32("graphics/pokemon/starmie/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Starmie[] = INCBIN_U32("graphics/pokemon/starmie/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Starmie[] = INCBIN_U16("graphics/pokemon/starmie/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Starmie[] = INCBIN_U8("graphics/pokemon/starmie/icon.4bpp"); @@ -4912,8 +4912,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Starmie[] = INCBIN_U16("graphics/pokemon/starmie/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Starmie[] = INCBIN_U16("graphics/pokemon/starmie/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_STARYU @@ -4921,9 +4921,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_MR_MIME #if P_GEN_4_CROSS_EVOS const u32 gMonFrontPic_MimeJr[] = INCBIN_U32("graphics/pokemon/mime_jr/anim_front.4bpp.lz"); - const u32 gMonPalette_MimeJr[] = INCBIN_U32("graphics/pokemon/mime_jr/normal.gbapal.lz"); + const u16 gMonPalette_MimeJr[] = INCBIN_U16("graphics/pokemon/mime_jr/normal.gbapal"); const u32 gMonBackPic_MimeJr[] = INCBIN_U32("graphics/pokemon/mime_jr/back.4bpp.lz"); - const u32 gMonShinyPalette_MimeJr[] = INCBIN_U32("graphics/pokemon/mime_jr/shiny.gbapal.lz"); + const u16 gMonShinyPalette_MimeJr[] = INCBIN_U16("graphics/pokemon/mime_jr/shiny.gbapal"); const u8 gMonIcon_MimeJr[] = INCBIN_U8("graphics/pokemon/mime_jr/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_MimeJr[] = INCBIN_U8("graphics/pokemon/mime_jr/footprint.1bpp"); @@ -4931,22 +4931,22 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_MimeJr[] = INCBIN_U16("graphics/pokemon/mime_jr/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_MimeJr[] = INCBIN_U16("graphics/pokemon/mime_jr/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_4_CROSS_EVOS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_MrMime[] = INCBIN_U32("graphics/pokemon/mr_mime/anim_front.4bpp.lz"); - const u32 gMonPalette_MrMime[] = INCBIN_U32("graphics/pokemon/mr_mime/normal.gbapal.lz"); + const u16 gMonPalette_MrMime[] = INCBIN_U16("graphics/pokemon/mr_mime/normal.gbapal"); const u32 gMonBackPic_MrMime[] = INCBIN_U32("graphics/pokemon/mr_mime/back.4bpp.lz"); - const u32 gMonShinyPalette_MrMime[] = INCBIN_U32("graphics/pokemon/mr_mime/shiny.gbapal.lz"); + const u16 gMonShinyPalette_MrMime[] = INCBIN_U16("graphics/pokemon/mr_mime/shiny.gbapal"); #else const u32 gMonFrontPic_MrMime[] = INCBIN_U32("graphics/pokemon/mr_mime/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_MrMime[] = INCBIN_U32("graphics/pokemon/mr_mime/normal_gba.gbapal.lz"); + const u16 gMonPalette_MrMime[] = INCBIN_U16("graphics/pokemon/mr_mime/normal_gba.gbapal"); const u32 gMonBackPic_MrMime[] = INCBIN_U32("graphics/pokemon/mr_mime/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_MrMime[] = INCBIN_U32("graphics/pokemon/mr_mime/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_MrMime[] = INCBIN_U16("graphics/pokemon/mr_mime/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_MrMime[] = INCBIN_U8("graphics/pokemon/mr_mime/icon.4bpp"); @@ -4959,29 +4959,29 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_MrMime[] = INCBIN_U16("graphics/pokemon/mr_mime/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_MrMime[] = INCBIN_U16("graphics/pokemon/mr_mime/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if P_GALARIAN_FORMS const u32 gMonFrontPic_MrMimeGalar[] = INCBIN_U32("graphics/pokemon/mr_mime/galar/front.4bpp.lz"); - const u32 gMonPalette_MrMimeGalar[] = INCBIN_U32("graphics/pokemon/mr_mime/galar/normal.gbapal.lz"); + const u16 gMonPalette_MrMimeGalar[] = INCBIN_U16("graphics/pokemon/mr_mime/galar/normal.gbapal"); const u32 gMonBackPic_MrMimeGalar[] = INCBIN_U32("graphics/pokemon/mr_mime/galar/back.4bpp.lz"); - const u32 gMonShinyPalette_MrMimeGalar[] = INCBIN_U32("graphics/pokemon/mr_mime/galar/shiny.gbapal.lz"); + const u16 gMonShinyPalette_MrMimeGalar[] = INCBIN_U16("graphics/pokemon/mr_mime/galar/shiny.gbapal"); const u8 gMonIcon_MrMimeGalar[] = INCBIN_U8("graphics/pokemon/mr_mime/galar/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS const u32 gObjectEventPic_MrMimeGalar[] = INCBIN_COMP("graphics/pokemon/mr_mime/galar/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - const u32 gOverworldPalette_MrMimeGalar[] = INCBIN_U32("graphics/pokemon/mr_mime/galar/overworld_normal.gbapal.lz"); - const u32 gShinyOverworldPalette_MrMimeGalar[] = INCBIN_U32("graphics/pokemon/mr_mime/galar/overworld_shiny.gbapal.lz"); + const u16 gOverworldPalette_MrMimeGalar[] = INCBIN_U16("graphics/pokemon/mr_mime/galar/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_MrMimeGalar[] = INCBIN_U16("graphics/pokemon/mr_mime/galar/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_MrRime[] = INCBIN_U16("graphics/pokemon/mr_rime/normal.gbapal"); const u32 gMonBackPic_MrRime[] = INCBIN_U32("graphics/pokemon/mr_rime/back.4bpp.lz"); - const u32 gMonShinyPalette_MrRime[] = INCBIN_U32("graphics/pokemon/mr_rime/shiny.gbapal.lz"); + const u16 gMonShinyPalette_MrRime[] = INCBIN_U16("graphics/pokemon/mr_rime/shiny.gbapal"); const u8 gMonIcon_MrRime[] = INCBIN_U8("graphics/pokemon/mr_rime/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_MrRime[] = INCBIN_U8("graphics/pokemon/mr_rime/footprint.1bpp"); @@ -4989,8 +4989,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_MrRime[] = INCBIN_U16("graphics/pokemon/mr_rime/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_MrRime[] = INCBIN_U16("graphics/pokemon/mr_rime/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GALARIAN_FORMS @@ -4999,14 +4999,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_SCYTHER #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Scyther[] = INCBIN_U32("graphics/pokemon/scyther/anim_front.4bpp.lz"); - const u32 gMonPalette_Scyther[] = INCBIN_U32("graphics/pokemon/scyther/normal.gbapal.lz"); + const u16 gMonPalette_Scyther[] = INCBIN_U16("graphics/pokemon/scyther/normal.gbapal"); const u32 gMonBackPic_Scyther[] = INCBIN_U32("graphics/pokemon/scyther/back.4bpp.lz"); - const u32 gMonShinyPalette_Scyther[] = INCBIN_U32("graphics/pokemon/scyther/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Scyther[] = INCBIN_U16("graphics/pokemon/scyther/shiny.gbapal"); #else const u32 gMonFrontPic_Scyther[] = INCBIN_U32("graphics/pokemon/scyther/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Scyther[] = INCBIN_U32("graphics/pokemon/scyther/normal_gba.gbapal.lz"); + const u16 gMonPalette_Scyther[] = INCBIN_U16("graphics/pokemon/scyther/normal_gba.gbapal"); const u32 gMonBackPic_Scyther[] = INCBIN_U32("graphics/pokemon/scyther/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Scyther[] = INCBIN_U32("graphics/pokemon/scyther/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Scyther[] = INCBIN_U16("graphics/pokemon/scyther/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Scyther[] = INCBIN_U8("graphics/pokemon/scyther/icon.4bpp"); @@ -5019,8 +5019,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Scyther[] = INCBIN_U16("graphics/pokemon/scyther/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Scyther[] = INCBIN_U16("graphics/pokemon/scyther/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -5034,14 +5034,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_GEN_2_CROSS_EVOS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Scizor[] = INCBIN_U32("graphics/pokemon/scizor/anim_front.4bpp.lz"); - const u32 gMonPalette_Scizor[] = INCBIN_U32("graphics/pokemon/scizor/normal.gbapal.lz"); + const u16 gMonPalette_Scizor[] = INCBIN_U16("graphics/pokemon/scizor/normal.gbapal"); const u32 gMonBackPic_Scizor[] = INCBIN_U32("graphics/pokemon/scizor/back.4bpp.lz"); - const u32 gMonShinyPalette_Scizor[] = INCBIN_U32("graphics/pokemon/scizor/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Scizor[] = INCBIN_U16("graphics/pokemon/scizor/shiny.gbapal"); #else const u32 gMonFrontPic_Scizor[] = INCBIN_U32("graphics/pokemon/scizor/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Scizor[] = INCBIN_U32("graphics/pokemon/scizor/normal_gba.gbapal.lz"); + const u16 gMonPalette_Scizor[] = INCBIN_U16("graphics/pokemon/scizor/normal_gba.gbapal"); const u32 gMonBackPic_Scizor[] = INCBIN_U32("graphics/pokemon/scizor/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Scizor[] = INCBIN_U32("graphics/pokemon/scizor/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Scizor[] = INCBIN_U16("graphics/pokemon/scizor/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Scizor[] = INCBIN_U8("graphics/pokemon/scizor/icon.4bpp"); @@ -5054,8 +5054,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Scizor[] = INCBIN_U16("graphics/pokemon/scizor/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Scizor[] = INCBIN_U16("graphics/pokemon/scizor/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -5068,15 +5068,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_MEGA_EVOLUTIONS const u32 gMonFrontPic_ScizorMega[] = INCBIN_U32("graphics/pokemon/scizor/mega/front.4bpp.lz"); - const u32 gMonPalette_ScizorMega[] = INCBIN_U32("graphics/pokemon/scizor/mega/normal.gbapal.lz"); + const u16 gMonPalette_ScizorMega[] = INCBIN_U16("graphics/pokemon/scizor/mega/normal.gbapal"); 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 u16 gMonShinyPalette_ScizorMega[] = INCBIN_U16("graphics/pokemon/scizor/mega/shiny.gbapal"); const u8 gMonIcon_ScizorMega[] = INCBIN_U8("graphics/pokemon/scizor/mega/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS 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"); + const u16 gOverworldPalette_ScizorMega[] = INCBIN_U16("graphics/pokemon/scizor/mega/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_ScizorMega[] = INCBIN_U16("graphics/pokemon/scizor/mega/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS #endif //P_MEGA_EVOLUTIONS @@ -5084,9 +5084,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_GEN_8_CROSS_EVOS const u32 gMonFrontPic_Kleavor[] = INCBIN_U32("graphics/pokemon/kleavor/front.4bpp.lz"); - const u32 gMonPalette_Kleavor[] = INCBIN_U32("graphics/pokemon/kleavor/normal.gbapal.lz"); + const u16 gMonPalette_Kleavor[] = INCBIN_U16("graphics/pokemon/kleavor/normal.gbapal"); const u32 gMonBackPic_Kleavor[] = INCBIN_U32("graphics/pokemon/kleavor/back.4bpp.lz"); - const u32 gMonShinyPalette_Kleavor[] = INCBIN_U32("graphics/pokemon/kleavor/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Kleavor[] = INCBIN_U16("graphics/pokemon/kleavor/shiny.gbapal"); const u8 gMonIcon_Kleavor[] = INCBIN_U8("graphics/pokemon/kleavor/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Kleavor[] = INCBIN_U8("graphics/pokemon/kleavor/footprint.1bpp"); @@ -5094,8 +5094,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Kleavor[] = INCBIN_U16("graphics/pokemon/kleavor/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Kleavor[] = INCBIN_U16("graphics/pokemon/kleavor/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_8_CROSS_EVOS @@ -5105,14 +5105,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_GEN_2_CROSS_EVOS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Smoochum[] = INCBIN_U32("graphics/pokemon/smoochum/anim_front.4bpp.lz"); - const u32 gMonPalette_Smoochum[] = INCBIN_U32("graphics/pokemon/smoochum/normal.gbapal.lz"); + const u16 gMonPalette_Smoochum[] = INCBIN_U16("graphics/pokemon/smoochum/normal.gbapal"); const u32 gMonBackPic_Smoochum[] = INCBIN_U32("graphics/pokemon/smoochum/back.4bpp.lz"); - const u32 gMonShinyPalette_Smoochum[] = INCBIN_U32("graphics/pokemon/smoochum/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Smoochum[] = INCBIN_U16("graphics/pokemon/smoochum/shiny.gbapal"); #else const u32 gMonFrontPic_Smoochum[] = INCBIN_U32("graphics/pokemon/smoochum/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Smoochum[] = INCBIN_U32("graphics/pokemon/smoochum/normal_gba.gbapal.lz"); + const u16 gMonPalette_Smoochum[] = INCBIN_U16("graphics/pokemon/smoochum/normal_gba.gbapal"); const u32 gMonBackPic_Smoochum[] = INCBIN_U32("graphics/pokemon/smoochum/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Smoochum[] = INCBIN_U32("graphics/pokemon/smoochum/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Smoochum[] = INCBIN_U16("graphics/pokemon/smoochum/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Smoochum[] = INCBIN_U8("graphics/pokemon/smoochum/icon.4bpp"); @@ -5125,22 +5125,22 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Smoochum[] = INCBIN_U16("graphics/pokemon/smoochum/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Smoochum[] = INCBIN_U16("graphics/pokemon/smoochum/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_2_CROSS_EVOS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Jynx[] = INCBIN_U32("graphics/pokemon/jynx/anim_front.4bpp.lz"); - const u32 gMonPalette_Jynx[] = INCBIN_U32("graphics/pokemon/jynx/normal.gbapal.lz"); + const u16 gMonPalette_Jynx[] = INCBIN_U16("graphics/pokemon/jynx/normal.gbapal"); const u32 gMonBackPic_Jynx[] = INCBIN_U32("graphics/pokemon/jynx/back.4bpp.lz"); - const u32 gMonShinyPalette_Jynx[] = INCBIN_U32("graphics/pokemon/jynx/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Jynx[] = INCBIN_U16("graphics/pokemon/jynx/shiny.gbapal"); #else const u32 gMonFrontPic_Jynx[] = INCBIN_U32("graphics/pokemon/jynx/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Jynx[] = INCBIN_U32("graphics/pokemon/jynx/normal_gba.gbapal.lz"); + const u16 gMonPalette_Jynx[] = INCBIN_U16("graphics/pokemon/jynx/normal_gba.gbapal"); const u32 gMonBackPic_Jynx[] = INCBIN_U32("graphics/pokemon/jynx/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Jynx[] = INCBIN_U32("graphics/pokemon/jynx/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Jynx[] = INCBIN_U16("graphics/pokemon/jynx/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Jynx[] = INCBIN_U8("graphics/pokemon/jynx/icon.4bpp"); @@ -5153,8 +5153,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Jynx[] = INCBIN_U16("graphics/pokemon/jynx/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Jynx[] = INCBIN_U16("graphics/pokemon/jynx/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_JYNX @@ -5163,14 +5163,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_GEN_2_CROSS_EVOS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Elekid[] = INCBIN_U32("graphics/pokemon/elekid/anim_front.4bpp.lz"); - const u32 gMonPalette_Elekid[] = INCBIN_U32("graphics/pokemon/elekid/normal.gbapal.lz"); + const u16 gMonPalette_Elekid[] = INCBIN_U16("graphics/pokemon/elekid/normal.gbapal"); const u32 gMonBackPic_Elekid[] = INCBIN_U32("graphics/pokemon/elekid/back.4bpp.lz"); - const u32 gMonShinyPalette_Elekid[] = INCBIN_U32("graphics/pokemon/elekid/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Elekid[] = INCBIN_U16("graphics/pokemon/elekid/shiny.gbapal"); #else const u32 gMonFrontPic_Elekid[] = INCBIN_U32("graphics/pokemon/elekid/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Elekid[] = INCBIN_U32("graphics/pokemon/elekid/normal_gba.gbapal.lz"); + const u16 gMonPalette_Elekid[] = INCBIN_U16("graphics/pokemon/elekid/normal_gba.gbapal"); const u32 gMonBackPic_Elekid[] = INCBIN_U32("graphics/pokemon/elekid/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Elekid[] = INCBIN_U32("graphics/pokemon/elekid/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Elekid[] = INCBIN_U16("graphics/pokemon/elekid/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Elekid[] = INCBIN_U8("graphics/pokemon/elekid/icon.4bpp"); @@ -5183,22 +5183,22 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Elekid[] = INCBIN_U16("graphics/pokemon/elekid/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Elekid[] = INCBIN_U16("graphics/pokemon/elekid/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_2_CROSS_EVOS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Electabuzz[] = INCBIN_U32("graphics/pokemon/electabuzz/anim_front.4bpp.lz"); - const u32 gMonPalette_Electabuzz[] = INCBIN_U32("graphics/pokemon/electabuzz/normal.gbapal.lz"); + const u16 gMonPalette_Electabuzz[] = INCBIN_U16("graphics/pokemon/electabuzz/normal.gbapal"); const u32 gMonBackPic_Electabuzz[] = INCBIN_U32("graphics/pokemon/electabuzz/back.4bpp.lz"); - const u32 gMonShinyPalette_Electabuzz[] = INCBIN_U32("graphics/pokemon/electabuzz/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Electabuzz[] = INCBIN_U16("graphics/pokemon/electabuzz/shiny.gbapal"); #else const u32 gMonFrontPic_Electabuzz[] = INCBIN_U32("graphics/pokemon/electabuzz/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Electabuzz[] = INCBIN_U32("graphics/pokemon/electabuzz/normal_gba.gbapal.lz"); + const u16 gMonPalette_Electabuzz[] = INCBIN_U16("graphics/pokemon/electabuzz/normal_gba.gbapal"); const u32 gMonBackPic_Electabuzz[] = INCBIN_U32("graphics/pokemon/electabuzz/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Electabuzz[] = INCBIN_U32("graphics/pokemon/electabuzz/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Electabuzz[] = INCBIN_U16("graphics/pokemon/electabuzz/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Electabuzz[] = INCBIN_U8("graphics/pokemon/electabuzz/icon.4bpp"); @@ -5211,16 +5211,16 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Electabuzz[] = INCBIN_U16("graphics/pokemon/electabuzz/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Electabuzz[] = INCBIN_U16("graphics/pokemon/electabuzz/overworld_shiny.gbapal"); #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"); - const u32 gMonPalette_Electivire[] = INCBIN_U32("graphics/pokemon/electivire/normal.gbapal.lz"); + const u16 gMonPalette_Electivire[] = INCBIN_U16("graphics/pokemon/electivire/normal.gbapal"); const u32 gMonBackPic_Electivire[] = INCBIN_U32("graphics/pokemon/electivire/back.4bpp.lz"); - const u32 gMonShinyPalette_Electivire[] = INCBIN_U32("graphics/pokemon/electivire/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Electivire[] = INCBIN_U16("graphics/pokemon/electivire/shiny.gbapal"); const u8 gMonIcon_Electivire[] = INCBIN_U8("graphics/pokemon/electivire/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Electivire[] = INCBIN_U8("graphics/pokemon/electivire/footprint.1bpp"); @@ -5228,8 +5228,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Electivire[] = INCBIN_U16("graphics/pokemon/electivire/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Electivire[] = INCBIN_U16("graphics/pokemon/electivire/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_4_CROSS_EVOS @@ -5239,14 +5239,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_GEN_2_CROSS_EVOS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Magby[] = INCBIN_U32("graphics/pokemon/magby/anim_front.4bpp.lz"); - const u32 gMonPalette_Magby[] = INCBIN_U32("graphics/pokemon/magby/normal.gbapal.lz"); + const u16 gMonPalette_Magby[] = INCBIN_U16("graphics/pokemon/magby/normal.gbapal"); const u32 gMonBackPic_Magby[] = INCBIN_U32("graphics/pokemon/magby/back.4bpp.lz"); - const u32 gMonShinyPalette_Magby[] = INCBIN_U32("graphics/pokemon/magby/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Magby[] = INCBIN_U16("graphics/pokemon/magby/shiny.gbapal"); #else const u32 gMonFrontPic_Magby[] = INCBIN_U32("graphics/pokemon/magby/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Magby[] = INCBIN_U32("graphics/pokemon/magby/normal_gba.gbapal.lz"); + const u16 gMonPalette_Magby[] = INCBIN_U16("graphics/pokemon/magby/normal_gba.gbapal"); const u32 gMonBackPic_Magby[] = INCBIN_U32("graphics/pokemon/magby/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Magby[] = INCBIN_U32("graphics/pokemon/magby/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Magby[] = INCBIN_U16("graphics/pokemon/magby/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Magby[] = INCBIN_U8("graphics/pokemon/magby/icon.4bpp"); @@ -5259,22 +5259,22 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Magby[] = INCBIN_U16("graphics/pokemon/magby/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Magby[] = INCBIN_U16("graphics/pokemon/magby/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_2_CROSS_EVOS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Magmar[] = INCBIN_U32("graphics/pokemon/magmar/anim_front.4bpp.lz"); - const u32 gMonPalette_Magmar[] = INCBIN_U32("graphics/pokemon/magmar/normal.gbapal.lz"); + const u16 gMonPalette_Magmar[] = INCBIN_U16("graphics/pokemon/magmar/normal.gbapal"); const u32 gMonBackPic_Magmar[] = INCBIN_U32("graphics/pokemon/magmar/back.4bpp.lz"); - const u32 gMonShinyPalette_Magmar[] = INCBIN_U32("graphics/pokemon/magmar/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Magmar[] = INCBIN_U16("graphics/pokemon/magmar/shiny.gbapal"); #else const u32 gMonFrontPic_Magmar[] = INCBIN_U32("graphics/pokemon/magmar/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Magmar[] = INCBIN_U32("graphics/pokemon/magmar/normal_gba.gbapal.lz"); + const u16 gMonPalette_Magmar[] = INCBIN_U16("graphics/pokemon/magmar/normal_gba.gbapal"); const u32 gMonBackPic_Magmar[] = INCBIN_U32("graphics/pokemon/magmar/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Magmar[] = INCBIN_U32("graphics/pokemon/magmar/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Magmar[] = INCBIN_U16("graphics/pokemon/magmar/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Magmar[] = INCBIN_U8("graphics/pokemon/magmar/icon.4bpp"); @@ -5287,16 +5287,16 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Magmar[] = INCBIN_U16("graphics/pokemon/magmar/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Magmar[] = INCBIN_U16("graphics/pokemon/magmar/overworld_shiny.gbapal"); #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"); - const u32 gMonPalette_Magmortar[] = INCBIN_U32("graphics/pokemon/magmortar/normal.gbapal.lz"); + const u16 gMonPalette_Magmortar[] = INCBIN_U16("graphics/pokemon/magmortar/normal.gbapal"); const u32 gMonBackPic_Magmortar[] = INCBIN_U32("graphics/pokemon/magmortar/back.4bpp.lz"); - const u32 gMonShinyPalette_Magmortar[] = INCBIN_U32("graphics/pokemon/magmortar/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Magmortar[] = INCBIN_U16("graphics/pokemon/magmortar/shiny.gbapal"); const u8 gMonIcon_Magmortar[] = INCBIN_U8("graphics/pokemon/magmortar/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Magmortar[] = INCBIN_U8("graphics/pokemon/magmortar/footprint.1bpp"); @@ -5304,8 +5304,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Magmortar[] = INCBIN_U16("graphics/pokemon/magmortar/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Magmortar[] = INCBIN_U16("graphics/pokemon/magmortar/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_4_CROSS_EVOS @@ -5314,14 +5314,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_PINSIR #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Pinsir[] = INCBIN_U32("graphics/pokemon/pinsir/anim_front.4bpp.lz"); - const u32 gMonPalette_Pinsir[] = INCBIN_U32("graphics/pokemon/pinsir/normal.gbapal.lz"); + const u16 gMonPalette_Pinsir[] = INCBIN_U16("graphics/pokemon/pinsir/normal.gbapal"); const u32 gMonBackPic_Pinsir[] = INCBIN_U32("graphics/pokemon/pinsir/back.4bpp.lz"); - const u32 gMonShinyPalette_Pinsir[] = INCBIN_U32("graphics/pokemon/pinsir/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Pinsir[] = INCBIN_U16("graphics/pokemon/pinsir/shiny.gbapal"); #else const u32 gMonFrontPic_Pinsir[] = INCBIN_U32("graphics/pokemon/pinsir/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Pinsir[] = INCBIN_U32("graphics/pokemon/pinsir/normal_gba.gbapal.lz"); + const u16 gMonPalette_Pinsir[] = INCBIN_U16("graphics/pokemon/pinsir/normal_gba.gbapal"); const u32 gMonBackPic_Pinsir[] = INCBIN_U32("graphics/pokemon/pinsir/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Pinsir[] = INCBIN_U32("graphics/pokemon/pinsir/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Pinsir[] = INCBIN_U16("graphics/pokemon/pinsir/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Pinsir[] = INCBIN_U8("graphics/pokemon/pinsir/icon.4bpp"); @@ -5334,22 +5334,22 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Pinsir[] = INCBIN_U16("graphics/pokemon/pinsir/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Pinsir[] = INCBIN_U16("graphics/pokemon/pinsir/overworld_shiny.gbapal"); #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"); - const u32 gMonPalette_PinsirMega[] = INCBIN_U32("graphics/pokemon/pinsir/mega/normal.gbapal.lz"); + const u16 gMonPalette_PinsirMega[] = INCBIN_U16("graphics/pokemon/pinsir/mega/normal.gbapal"); 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 u16 gMonShinyPalette_PinsirMega[] = INCBIN_U16("graphics/pokemon/pinsir/mega/shiny.gbapal"); const u8 gMonIcon_PinsirMega[] = INCBIN_U8("graphics/pokemon/pinsir/mega/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS 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"); + const u16 gOverworldPalette_PinsirMega[] = INCBIN_U16("graphics/pokemon/pinsir/mega/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_PinsirMega[] = INCBIN_U16("graphics/pokemon/pinsir/mega/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS #endif //P_MEGA_EVOLUTIONS @@ -5358,14 +5358,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_TAUROS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Tauros[] = INCBIN_U32("graphics/pokemon/tauros/anim_front.4bpp.lz"); - const u32 gMonPalette_Tauros[] = INCBIN_U32("graphics/pokemon/tauros/normal.gbapal.lz"); + const u16 gMonPalette_Tauros[] = INCBIN_U16("graphics/pokemon/tauros/normal.gbapal"); const u32 gMonBackPic_Tauros[] = INCBIN_U32("graphics/pokemon/tauros/back.4bpp.lz"); - const u32 gMonShinyPalette_Tauros[] = INCBIN_U32("graphics/pokemon/tauros/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Tauros[] = INCBIN_U16("graphics/pokemon/tauros/shiny.gbapal"); #else const u32 gMonFrontPic_Tauros[] = INCBIN_U32("graphics/pokemon/tauros/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Tauros[] = INCBIN_U32("graphics/pokemon/tauros/normal_gba.gbapal.lz"); + const u16 gMonPalette_Tauros[] = INCBIN_U16("graphics/pokemon/tauros/normal_gba.gbapal"); const u32 gMonBackPic_Tauros[] = INCBIN_U32("graphics/pokemon/tauros/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Tauros[] = INCBIN_U32("graphics/pokemon/tauros/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Tauros[] = INCBIN_U16("graphics/pokemon/tauros/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Tauros[] = INCBIN_U8("graphics/pokemon/tauros/icon.4bpp"); @@ -5378,28 +5378,28 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Tauros[] = INCBIN_U16("graphics/pokemon/tauros/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Tauros[] = INCBIN_U16("graphics/pokemon/tauros/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if P_PALDEAN_FORMS const u32 gMonFrontPic_TaurosPaldeaCombat[] = INCBIN_U32("graphics/pokemon/tauros/paldea_combat/front.4bpp.lz"); - const u32 gMonPalette_TaurosPaldeaCombat[] = INCBIN_U32("graphics/pokemon/tauros/paldea_combat/normal.gbapal.lz"); + const u16 gMonPalette_TaurosPaldeaCombat[] = INCBIN_U16("graphics/pokemon/tauros/paldea_combat/normal.gbapal"); const u32 gMonBackPic_TaurosPaldeaCombat[] = INCBIN_U32("graphics/pokemon/tauros/paldea_combat/back.4bpp.lz"); - const u32 gMonShinyPalette_TaurosPaldeaCombat[] = INCBIN_U32("graphics/pokemon/tauros/paldea_combat/shiny.gbapal.lz"); + const u16 gMonShinyPalette_TaurosPaldeaCombat[] = INCBIN_U16("graphics/pokemon/tauros/paldea_combat/shiny.gbapal"); const u8 gMonIcon_TaurosPaldeaCombat[] = INCBIN_U8("graphics/pokemon/tauros/paldea_combat/icon.4bpp"); const u32 gMonFrontPic_TaurosPaldeaBlaze[] = INCBIN_U32("graphics/pokemon/tauros/paldea_blaze/front.4bpp.lz"); - const u32 gMonPalette_TaurosPaldeaBlaze[] = INCBIN_U32("graphics/pokemon/tauros/paldea_blaze/normal.gbapal.lz"); + const u16 gMonPalette_TaurosPaldeaBlaze[] = INCBIN_U16("graphics/pokemon/tauros/paldea_blaze/normal.gbapal"); const u32 gMonBackPic_TaurosPaldeaBlaze[] = INCBIN_U32("graphics/pokemon/tauros/paldea_blaze/back.4bpp.lz"); - const u32 gMonShinyPalette_TaurosPaldeaBlaze[] = INCBIN_U32("graphics/pokemon/tauros/paldea_blaze/shiny.gbapal.lz"); + const u16 gMonShinyPalette_TaurosPaldeaBlaze[] = INCBIN_U16("graphics/pokemon/tauros/paldea_blaze/shiny.gbapal"); const u8 gMonIcon_TaurosPaldeaBlaze[] = INCBIN_U8("graphics/pokemon/tauros/paldea_blaze/icon.4bpp"); const u32 gMonFrontPic_TaurosPaldeaAqua[] = INCBIN_U32("graphics/pokemon/tauros/paldea_aqua/front.4bpp.lz"); - const u32 gMonPalette_TaurosPaldeaAqua[] = INCBIN_U32("graphics/pokemon/tauros/paldea_aqua/normal.gbapal.lz"); + const u16 gMonPalette_TaurosPaldeaAqua[] = INCBIN_U16("graphics/pokemon/tauros/paldea_aqua/normal.gbapal"); const u32 gMonBackPic_TaurosPaldeaAqua[] = INCBIN_U32("graphics/pokemon/tauros/paldea_aqua/back.4bpp.lz"); - const u32 gMonShinyPalette_TaurosPaldeaAqua[] = INCBIN_U32("graphics/pokemon/tauros/paldea_aqua/shiny.gbapal.lz"); + const u16 gMonShinyPalette_TaurosPaldeaAqua[] = INCBIN_U16("graphics/pokemon/tauros/paldea_aqua/shiny.gbapal"); const u8 gMonIcon_TaurosPaldeaAqua[] = INCBIN_U8("graphics/pokemon/tauros/paldea_aqua/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS @@ -5407,12 +5407,12 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gObjectEventPic_TaurosPaldeaBlaze[] = INCBIN_COMP("graphics/pokemon/tauros/paldea_blaze/overworld.4bpp"); const u32 gObjectEventPic_TaurosPaldeaAqua[] = INCBIN_COMP("graphics/pokemon/tauros/paldea_aqua/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - const u32 gOverworldPalette_TaurosPaldeaCombat[] = INCBIN_U32("graphics/pokemon/tauros/paldea_combat/overworld_normal.gbapal.lz"); - const u32 gOverworldPalette_TaurosPaldeaBlaze[] = INCBIN_U32("graphics/pokemon/tauros/paldea_blaze/overworld_normal.gbapal.lz"); - const u32 gOverworldPalette_TaurosPaldeaAqua[] = INCBIN_U32("graphics/pokemon/tauros/paldea_aqua/overworld_normal.gbapal.lz"); - const u32 gShinyOverworldPalette_TaurosPaldeaCombat[] = INCBIN_U32("graphics/pokemon/tauros/paldea_combat/overworld_shiny.gbapal.lz"); - const u32 gShinyOverworldPalette_TaurosPaldeaBlaze[] = INCBIN_U32("graphics/pokemon/tauros/paldea_blaze/overworld_shiny.gbapal.lz"); - const u32 gShinyOverworldPalette_TaurosPaldeaAqua[] = INCBIN_U32("graphics/pokemon/tauros/paldea_aqua/overworld_shiny.gbapal.lz"); + const u16 gOverworldPalette_TaurosPaldeaCombat[] = INCBIN_U16("graphics/pokemon/tauros/paldea_combat/overworld_normal.gbapal"); + const u16 gOverworldPalette_TaurosPaldeaBlaze[] = INCBIN_U16("graphics/pokemon/tauros/paldea_blaze/overworld_normal.gbapal"); + const u16 gOverworldPalette_TaurosPaldeaAqua[] = INCBIN_U16("graphics/pokemon/tauros/paldea_aqua/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_TaurosPaldeaCombat[] = INCBIN_U16("graphics/pokemon/tauros/paldea_combat/overworld_shiny.gbapal"); + const u16 gShinyOverworldPalette_TaurosPaldeaBlaze[] = INCBIN_U16("graphics/pokemon/tauros/paldea_blaze/overworld_shiny.gbapal"); + const u16 gShinyOverworldPalette_TaurosPaldeaAqua[] = INCBIN_U16("graphics/pokemon/tauros/paldea_aqua/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_PALDEAN_FORMS @@ -5421,14 +5421,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_MAGIKARP #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Magikarp[] = INCBIN_U32("graphics/pokemon/magikarp/anim_front.4bpp.lz"); - const u32 gMonPalette_Magikarp[] = INCBIN_U32("graphics/pokemon/magikarp/normal.gbapal.lz"); + const u16 gMonPalette_Magikarp[] = INCBIN_U16("graphics/pokemon/magikarp/normal.gbapal"); const u32 gMonBackPic_Magikarp[] = INCBIN_U32("graphics/pokemon/magikarp/back.4bpp.lz"); - const u32 gMonShinyPalette_Magikarp[] = INCBIN_U32("graphics/pokemon/magikarp/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Magikarp[] = INCBIN_U16("graphics/pokemon/magikarp/shiny.gbapal"); #else const u32 gMonFrontPic_Magikarp[] = INCBIN_U32("graphics/pokemon/magikarp/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Magikarp[] = INCBIN_U32("graphics/pokemon/magikarp/normal_gba.gbapal.lz"); + const u16 gMonPalette_Magikarp[] = INCBIN_U16("graphics/pokemon/magikarp/normal_gba.gbapal"); const u32 gMonBackPic_Magikarp[] = INCBIN_U32("graphics/pokemon/magikarp/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Magikarp[] = INCBIN_U32("graphics/pokemon/magikarp/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Magikarp[] = INCBIN_U16("graphics/pokemon/magikarp/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Magikarp[] = INCBIN_U8("graphics/pokemon/magikarp/icon.4bpp"); @@ -5441,8 +5441,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Magikarp[] = INCBIN_U16("graphics/pokemon/magikarp/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Magikarp[] = INCBIN_U16("graphics/pokemon/magikarp/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -5456,14 +5456,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Gyarados[] = INCBIN_U32("graphics/pokemon/gyarados/anim_front.4bpp.lz"); - const u32 gMonPalette_Gyarados[] = INCBIN_U32("graphics/pokemon/gyarados/normal.gbapal.lz"); + const u16 gMonPalette_Gyarados[] = INCBIN_U16("graphics/pokemon/gyarados/normal.gbapal"); const u32 gMonBackPic_Gyarados[] = INCBIN_U32("graphics/pokemon/gyarados/back.4bpp.lz"); - const u32 gMonShinyPalette_Gyarados[] = INCBIN_U32("graphics/pokemon/gyarados/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Gyarados[] = INCBIN_U16("graphics/pokemon/gyarados/shiny.gbapal"); #else const u32 gMonFrontPic_Gyarados[] = INCBIN_U32("graphics/pokemon/gyarados/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Gyarados[] = INCBIN_U32("graphics/pokemon/gyarados/normal_gba.gbapal.lz"); + const u16 gMonPalette_Gyarados[] = INCBIN_U16("graphics/pokemon/gyarados/normal_gba.gbapal"); const u32 gMonBackPic_Gyarados[] = INCBIN_U32("graphics/pokemon/gyarados/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Gyarados[] = INCBIN_U32("graphics/pokemon/gyarados/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Gyarados[] = INCBIN_U16("graphics/pokemon/gyarados/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Gyarados[] = INCBIN_U8("graphics/pokemon/gyarados/icon.4bpp"); @@ -5476,8 +5476,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Gyarados[] = INCBIN_U16("graphics/pokemon/gyarados/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Gyarados[] = INCBIN_U16("graphics/pokemon/gyarados/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -5491,15 +5491,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_MEGA_EVOLUTIONS const u32 gMonFrontPic_GyaradosMega[] = INCBIN_U32("graphics/pokemon/gyarados/mega/front.4bpp.lz"); - const u32 gMonPalette_GyaradosMega[] = INCBIN_U32("graphics/pokemon/gyarados/mega/normal.gbapal.lz"); + const u16 gMonPalette_GyaradosMega[] = INCBIN_U16("graphics/pokemon/gyarados/mega/normal.gbapal"); 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 u16 gMonShinyPalette_GyaradosMega[] = INCBIN_U16("graphics/pokemon/gyarados/mega/shiny.gbapal"); const u8 gMonIcon_GyaradosMega[] = INCBIN_U8("graphics/pokemon/gyarados/mega/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS 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"); + const u16 gOverworldPalette_GyaradosMega[] = INCBIN_U16("graphics/pokemon/gyarados/mega/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_GyaradosMega[] = INCBIN_U16("graphics/pokemon/gyarados/mega/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS #endif //P_MEGA_EVOLUTIONS @@ -5508,14 +5508,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_LAPRAS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Lapras[] = INCBIN_U32("graphics/pokemon/lapras/anim_front.4bpp.lz"); - const u32 gMonPalette_Lapras[] = INCBIN_U32("graphics/pokemon/lapras/normal.gbapal.lz"); + const u16 gMonPalette_Lapras[] = INCBIN_U16("graphics/pokemon/lapras/normal.gbapal"); const u32 gMonBackPic_Lapras[] = INCBIN_U32("graphics/pokemon/lapras/back.4bpp.lz"); - const u32 gMonShinyPalette_Lapras[] = INCBIN_U32("graphics/pokemon/lapras/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Lapras[] = INCBIN_U16("graphics/pokemon/lapras/shiny.gbapal"); #else const u32 gMonFrontPic_Lapras[] = INCBIN_U32("graphics/pokemon/lapras/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Lapras[] = INCBIN_U32("graphics/pokemon/lapras/normal_gba.gbapal.lz"); + const u16 gMonPalette_Lapras[] = INCBIN_U16("graphics/pokemon/lapras/normal_gba.gbapal"); const u32 gMonBackPic_Lapras[] = INCBIN_U32("graphics/pokemon/lapras/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Lapras[] = INCBIN_U32("graphics/pokemon/lapras/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Lapras[] = INCBIN_U16("graphics/pokemon/lapras/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Lapras[] = INCBIN_U8("graphics/pokemon/lapras/icon.4bpp"); @@ -5528,22 +5528,22 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Lapras[] = INCBIN_U16("graphics/pokemon/lapras/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Lapras[] = INCBIN_U16("graphics/pokemon/lapras/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if P_GIGANTAMAX_FORMS const u32 gMonFrontPic_LaprasGmax[] = INCBIN_U32("graphics/pokemon/lapras/gmax/front.4bpp.lz"); const u32 gMonBackPic_LaprasGmax[] = INCBIN_U32("graphics/pokemon/lapras/gmax/back.4bpp.lz"); - const u32 gMonPalette_LaprasGmax[] = INCBIN_U32("graphics/pokemon/lapras/gmax/normal.gbapal.lz"); - const u32 gMonShinyPalette_LaprasGmax[] = INCBIN_U32("graphics/pokemon/lapras/gmax/shiny.gbapal.lz"); + const u16 gMonPalette_LaprasGmax[] = INCBIN_U16("graphics/pokemon/lapras/gmax/normal.gbapal"); + const u16 gMonShinyPalette_LaprasGmax[] = INCBIN_U16("graphics/pokemon/lapras/gmax/shiny.gbapal"); const u8 gMonIcon_LaprasGmax[] = INCBIN_U8("graphics/pokemon/lapras/gmax/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS // const u32 gObjectEventPic_LaprasGmax[] = INCBIN_COMP("graphics/pokemon/lapras/gmax/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - // const u32 gOverworldPalette_LaprasGmax[] = INCBIN_U32("graphics/pokemon/lapras/gmax/overworld_normal.gbapal.lz"); - // const u32 gShinyOverworldPalette_LaprasGmax[] = INCBIN_U32("graphics/pokemon/lapras/gmax/overworld_shiny.gbapal.lz"); + // const u16 gOverworldPalette_LaprasGmax[] = INCBIN_U16("graphics/pokemon/lapras/gmax/overworld_normal.gbapal"); + // const u16 gShinyOverworldPalette_LaprasGmax[] = INCBIN_U16("graphics/pokemon/lapras/gmax/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GIGANTAMAX_FORMS @@ -5552,14 +5552,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_DITTO #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Ditto[] = INCBIN_U32("graphics/pokemon/ditto/anim_front.4bpp.lz"); - const u32 gMonPalette_Ditto[] = INCBIN_U32("graphics/pokemon/ditto/normal.gbapal.lz"); + const u16 gMonPalette_Ditto[] = INCBIN_U16("graphics/pokemon/ditto/normal.gbapal"); const u32 gMonBackPic_Ditto[] = INCBIN_U32("graphics/pokemon/ditto/back.4bpp.lz"); - const u32 gMonShinyPalette_Ditto[] = INCBIN_U32("graphics/pokemon/ditto/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Ditto[] = INCBIN_U16("graphics/pokemon/ditto/shiny.gbapal"); #else const u32 gMonFrontPic_Ditto[] = INCBIN_U32("graphics/pokemon/ditto/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Ditto[] = INCBIN_U32("graphics/pokemon/ditto/normal_gba.gbapal.lz"); + const u16 gMonPalette_Ditto[] = INCBIN_U16("graphics/pokemon/ditto/normal_gba.gbapal"); const u32 gMonBackPic_Ditto[] = INCBIN_U32("graphics/pokemon/ditto/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Ditto[] = INCBIN_U32("graphics/pokemon/ditto/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Ditto[] = INCBIN_U16("graphics/pokemon/ditto/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Ditto[] = INCBIN_U8("graphics/pokemon/ditto/icon.4bpp"); @@ -5572,8 +5572,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Ditto[] = INCBIN_U16("graphics/pokemon/ditto/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Ditto[] = INCBIN_U16("graphics/pokemon/ditto/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_DITTO @@ -5581,14 +5581,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_EEVEE #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Eevee[] = INCBIN_U32("graphics/pokemon/eevee/anim_front.4bpp.lz"); - const u32 gMonPalette_Eevee[] = INCBIN_U32("graphics/pokemon/eevee/normal.gbapal.lz"); + const u16 gMonPalette_Eevee[] = INCBIN_U16("graphics/pokemon/eevee/normal.gbapal"); const u32 gMonBackPic_Eevee[] = INCBIN_U32("graphics/pokemon/eevee/back.4bpp.lz"); - const u32 gMonShinyPalette_Eevee[] = INCBIN_U32("graphics/pokemon/eevee/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Eevee[] = INCBIN_U16("graphics/pokemon/eevee/shiny.gbapal"); #else const u32 gMonFrontPic_Eevee[] = INCBIN_U32("graphics/pokemon/eevee/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Eevee[] = INCBIN_U32("graphics/pokemon/eevee/normal_gba.gbapal.lz"); + const u16 gMonPalette_Eevee[] = INCBIN_U16("graphics/pokemon/eevee/normal_gba.gbapal"); const u32 gMonBackPic_Eevee[] = INCBIN_U32("graphics/pokemon/eevee/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Eevee[] = INCBIN_U32("graphics/pokemon/eevee/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Eevee[] = INCBIN_U16("graphics/pokemon/eevee/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Eevee[] = INCBIN_U8("graphics/pokemon/eevee/icon.4bpp"); @@ -5601,8 +5601,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Eevee[] = INCBIN_U16("graphics/pokemon/eevee/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Eevee[] = INCBIN_U16("graphics/pokemon/eevee/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -5617,14 +5617,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_GIGANTAMAX_FORMS const u32 gMonFrontPic_EeveeGmax[] = INCBIN_U32("graphics/pokemon/eevee/gmax/front.4bpp.lz"); const u32 gMonBackPic_EeveeGmax[] = INCBIN_U32("graphics/pokemon/eevee/gmax/back.4bpp.lz"); - const u32 gMonPalette_EeveeGmax[] = INCBIN_U32("graphics/pokemon/eevee/gmax/normal.gbapal.lz"); - const u32 gMonShinyPalette_EeveeGmax[] = INCBIN_U32("graphics/pokemon/eevee/gmax/shiny.gbapal.lz"); + const u16 gMonPalette_EeveeGmax[] = INCBIN_U16("graphics/pokemon/eevee/gmax/normal.gbapal"); + const u16 gMonShinyPalette_EeveeGmax[] = INCBIN_U16("graphics/pokemon/eevee/gmax/shiny.gbapal"); const u8 gMonIcon_EeveeGmax[] = INCBIN_U8("graphics/pokemon/eevee/gmax/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS // const u32 gObjectEventPic_EeveeGmax[] = INCBIN_COMP("graphics/pokemon/eevee/gmax/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - // const u32 gOverworldPalette_EeveeGmax[] = INCBIN_U32("graphics/pokemon/eevee/gmax/overworld_normal.gbapal.lz"); - // const u32 gShinyOverworldPalette_EeveeGmax[] = INCBIN_U32("graphics/pokemon/eevee/gmax/overworld_shiny.gbapal.lz"); + // const u16 gOverworldPalette_EeveeGmax[] = INCBIN_U16("graphics/pokemon/eevee/gmax/overworld_normal.gbapal"); + // const u16 gShinyOverworldPalette_EeveeGmax[] = INCBIN_U16("graphics/pokemon/eevee/gmax/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GIGANTAMAX_FORMS @@ -5636,14 +5636,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Vaporeon[] = INCBIN_U32("graphics/pokemon/vaporeon/anim_front.4bpp.lz"); - const u32 gMonPalette_Vaporeon[] = INCBIN_U32("graphics/pokemon/vaporeon/normal.gbapal.lz"); + const u16 gMonPalette_Vaporeon[] = INCBIN_U16("graphics/pokemon/vaporeon/normal.gbapal"); const u32 gMonBackPic_Vaporeon[] = INCBIN_U32("graphics/pokemon/vaporeon/back.4bpp.lz"); - const u32 gMonShinyPalette_Vaporeon[] = INCBIN_U32("graphics/pokemon/vaporeon/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Vaporeon[] = INCBIN_U16("graphics/pokemon/vaporeon/shiny.gbapal"); #else const u32 gMonFrontPic_Vaporeon[] = INCBIN_U32("graphics/pokemon/vaporeon/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Vaporeon[] = INCBIN_U32("graphics/pokemon/vaporeon/normal_gba.gbapal.lz"); + const u16 gMonPalette_Vaporeon[] = INCBIN_U16("graphics/pokemon/vaporeon/normal_gba.gbapal"); const u32 gMonBackPic_Vaporeon[] = INCBIN_U32("graphics/pokemon/vaporeon/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Vaporeon[] = INCBIN_U32("graphics/pokemon/vaporeon/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Vaporeon[] = INCBIN_U16("graphics/pokemon/vaporeon/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Vaporeon[] = INCBIN_U8("graphics/pokemon/vaporeon/icon.4bpp"); @@ -5656,21 +5656,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Vaporeon[] = INCBIN_U16("graphics/pokemon/vaporeon/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Vaporeon[] = INCBIN_U16("graphics/pokemon/vaporeon/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Jolteon[] = INCBIN_U32("graphics/pokemon/jolteon/anim_front.4bpp.lz"); - const u32 gMonPalette_Jolteon[] = INCBIN_U32("graphics/pokemon/jolteon/normal.gbapal.lz"); + const u16 gMonPalette_Jolteon[] = INCBIN_U16("graphics/pokemon/jolteon/normal.gbapal"); const u32 gMonBackPic_Jolteon[] = INCBIN_U32("graphics/pokemon/jolteon/back.4bpp.lz"); - const u32 gMonShinyPalette_Jolteon[] = INCBIN_U32("graphics/pokemon/jolteon/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Jolteon[] = INCBIN_U16("graphics/pokemon/jolteon/shiny.gbapal"); #else const u32 gMonFrontPic_Jolteon[] = INCBIN_U32("graphics/pokemon/jolteon/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Jolteon[] = INCBIN_U32("graphics/pokemon/jolteon/normal_gba.gbapal.lz"); + const u16 gMonPalette_Jolteon[] = INCBIN_U16("graphics/pokemon/jolteon/normal_gba.gbapal"); const u32 gMonBackPic_Jolteon[] = INCBIN_U32("graphics/pokemon/jolteon/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Jolteon[] = INCBIN_U32("graphics/pokemon/jolteon/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Jolteon[] = INCBIN_U16("graphics/pokemon/jolteon/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Jolteon[] = INCBIN_U8("graphics/pokemon/jolteon/icon.4bpp"); @@ -5683,21 +5683,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Jolteon[] = INCBIN_U16("graphics/pokemon/jolteon/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Jolteon[] = INCBIN_U16("graphics/pokemon/jolteon/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Flareon[] = INCBIN_U32("graphics/pokemon/flareon/anim_front.4bpp.lz"); - const u32 gMonPalette_Flareon[] = INCBIN_U32("graphics/pokemon/flareon/normal.gbapal.lz"); + const u16 gMonPalette_Flareon[] = INCBIN_U16("graphics/pokemon/flareon/normal.gbapal"); const u32 gMonBackPic_Flareon[] = INCBIN_U32("graphics/pokemon/flareon/back.4bpp.lz"); - const u32 gMonShinyPalette_Flareon[] = INCBIN_U32("graphics/pokemon/flareon/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Flareon[] = INCBIN_U16("graphics/pokemon/flareon/shiny.gbapal"); #else const u32 gMonFrontPic_Flareon[] = INCBIN_U32("graphics/pokemon/flareon/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Flareon[] = INCBIN_U32("graphics/pokemon/flareon/normal_gba.gbapal.lz"); + const u16 gMonPalette_Flareon[] = INCBIN_U16("graphics/pokemon/flareon/normal_gba.gbapal"); const u32 gMonBackPic_Flareon[] = INCBIN_U32("graphics/pokemon/flareon/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Flareon[] = INCBIN_U32("graphics/pokemon/flareon/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Flareon[] = INCBIN_U16("graphics/pokemon/flareon/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Flareon[] = INCBIN_U8("graphics/pokemon/flareon/icon.4bpp"); @@ -5710,22 +5710,22 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Flareon[] = INCBIN_U16("graphics/pokemon/flareon/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Flareon[] = INCBIN_U16("graphics/pokemon/flareon/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if P_GEN_2_CROSS_EVOS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Espeon[] = INCBIN_U32("graphics/pokemon/espeon/anim_front.4bpp.lz"); - const u32 gMonPalette_Espeon[] = INCBIN_U32("graphics/pokemon/espeon/normal.gbapal.lz"); + const u16 gMonPalette_Espeon[] = INCBIN_U16("graphics/pokemon/espeon/normal.gbapal"); const u32 gMonBackPic_Espeon[] = INCBIN_U32("graphics/pokemon/espeon/back.4bpp.lz"); - const u32 gMonShinyPalette_Espeon[] = INCBIN_U32("graphics/pokemon/espeon/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Espeon[] = INCBIN_U16("graphics/pokemon/espeon/shiny.gbapal"); #else const u32 gMonFrontPic_Espeon[] = INCBIN_U32("graphics/pokemon/espeon/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Espeon[] = INCBIN_U32("graphics/pokemon/espeon/normal_gba.gbapal.lz"); + const u16 gMonPalette_Espeon[] = INCBIN_U16("graphics/pokemon/espeon/normal_gba.gbapal"); const u32 gMonBackPic_Espeon[] = INCBIN_U32("graphics/pokemon/espeon/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Espeon[] = INCBIN_U32("graphics/pokemon/espeon/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Espeon[] = INCBIN_U16("graphics/pokemon/espeon/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Espeon[] = INCBIN_U8("graphics/pokemon/espeon/icon.4bpp"); @@ -5738,21 +5738,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Espeon[] = INCBIN_U16("graphics/pokemon/espeon/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Espeon[] = INCBIN_U16("graphics/pokemon/espeon/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Umbreon[] = INCBIN_U32("graphics/pokemon/umbreon/anim_front.4bpp.lz"); - const u32 gMonPalette_Umbreon[] = INCBIN_U32("graphics/pokemon/umbreon/normal.gbapal.lz"); + const u16 gMonPalette_Umbreon[] = INCBIN_U16("graphics/pokemon/umbreon/normal.gbapal"); const u32 gMonBackPic_Umbreon[] = INCBIN_U32("graphics/pokemon/umbreon/back.4bpp.lz"); - const u32 gMonShinyPalette_Umbreon[] = INCBIN_U32("graphics/pokemon/umbreon/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Umbreon[] = INCBIN_U16("graphics/pokemon/umbreon/shiny.gbapal"); #else const u32 gMonFrontPic_Umbreon[] = INCBIN_U32("graphics/pokemon/umbreon/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Umbreon[] = INCBIN_U32("graphics/pokemon/umbreon/normal_gba.gbapal.lz"); + const u16 gMonPalette_Umbreon[] = INCBIN_U16("graphics/pokemon/umbreon/normal_gba.gbapal"); const u32 gMonBackPic_Umbreon[] = INCBIN_U32("graphics/pokemon/umbreon/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Umbreon[] = INCBIN_U32("graphics/pokemon/umbreon/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Umbreon[] = INCBIN_U16("graphics/pokemon/umbreon/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Umbreon[] = INCBIN_U8("graphics/pokemon/umbreon/icon.4bpp"); @@ -5765,17 +5765,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Umbreon[] = INCBIN_U16("graphics/pokemon/umbreon/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Umbreon[] = INCBIN_U16("graphics/pokemon/umbreon/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_2_CROSS_EVOS #if P_GEN_4_CROSS_EVOS const u32 gMonFrontPic_Leafeon[] = INCBIN_U32("graphics/pokemon/leafeon/anim_front.4bpp.lz"); - const u32 gMonPalette_Leafeon[] = INCBIN_U32("graphics/pokemon/leafeon/normal.gbapal.lz"); + const u16 gMonPalette_Leafeon[] = INCBIN_U16("graphics/pokemon/leafeon/normal.gbapal"); const u32 gMonBackPic_Leafeon[] = INCBIN_U32("graphics/pokemon/leafeon/back.4bpp.lz"); - const u32 gMonShinyPalette_Leafeon[] = INCBIN_U32("graphics/pokemon/leafeon/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Leafeon[] = INCBIN_U16("graphics/pokemon/leafeon/shiny.gbapal"); const u8 gMonIcon_Leafeon[] = INCBIN_U8("graphics/pokemon/leafeon/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Leafeon[] = INCBIN_U8("graphics/pokemon/leafeon/footprint.1bpp"); @@ -5783,15 +5783,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Leafeon[] = INCBIN_U16("graphics/pokemon/leafeon/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Leafeon[] = INCBIN_U16("graphics/pokemon/leafeon/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Glaceon[] = INCBIN_U16("graphics/pokemon/glaceon/normal.gbapal"); const u32 gMonBackPic_Glaceon[] = INCBIN_U32("graphics/pokemon/glaceon/back.4bpp.lz"); - const u32 gMonShinyPalette_Glaceon[] = INCBIN_U32("graphics/pokemon/glaceon/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Glaceon[] = INCBIN_U16("graphics/pokemon/glaceon/shiny.gbapal"); const u8 gMonIcon_Glaceon[] = INCBIN_U8("graphics/pokemon/glaceon/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Glaceon[] = INCBIN_U8("graphics/pokemon/glaceon/footprint.1bpp"); @@ -5799,17 +5799,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Glaceon[] = INCBIN_U16("graphics/pokemon/glaceon/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Glaceon[] = INCBIN_U16("graphics/pokemon/glaceon/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_4_CROSS_EVOS #if P_GEN_6_CROSS_EVOS const u32 gMonFrontPic_Sylveon[] = INCBIN_U32("graphics/pokemon/sylveon/anim_front.4bpp.lz"); - const u32 gMonPalette_Sylveon[] = INCBIN_U32("graphics/pokemon/sylveon/normal.gbapal.lz"); + const u16 gMonPalette_Sylveon[] = INCBIN_U16("graphics/pokemon/sylveon/normal.gbapal"); const u32 gMonBackPic_Sylveon[] = INCBIN_U32("graphics/pokemon/sylveon/back.4bpp.lz"); - const u32 gMonShinyPalette_Sylveon[] = INCBIN_U32("graphics/pokemon/sylveon/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Sylveon[] = INCBIN_U16("graphics/pokemon/sylveon/shiny.gbapal"); const u8 gMonIcon_Sylveon[] = INCBIN_U8("graphics/pokemon/sylveon/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Sylveon[] = INCBIN_U8("graphics/pokemon/sylveon/footprint.1bpp"); @@ -5817,8 +5817,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Sylveon[] = INCBIN_U16("graphics/pokemon/sylveon/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Sylveon[] = INCBIN_U16("graphics/pokemon/sylveon/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_6_CROSS_EVOS @@ -5827,14 +5827,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_PORYGON #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Porygon[] = INCBIN_U32("graphics/pokemon/porygon/anim_front.4bpp.lz"); - const u32 gMonPalette_Porygon[] = INCBIN_U32("graphics/pokemon/porygon/normal.gbapal.lz"); + const u16 gMonPalette_Porygon[] = INCBIN_U16("graphics/pokemon/porygon/normal.gbapal"); const u32 gMonBackPic_Porygon[] = INCBIN_U32("graphics/pokemon/porygon/back.4bpp.lz"); - const u32 gMonShinyPalette_Porygon[] = INCBIN_U32("graphics/pokemon/porygon/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Porygon[] = INCBIN_U16("graphics/pokemon/porygon/shiny.gbapal"); #else const u32 gMonFrontPic_Porygon[] = INCBIN_U32("graphics/pokemon/porygon/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Porygon[] = INCBIN_U32("graphics/pokemon/porygon/normal_gba.gbapal.lz"); + const u16 gMonPalette_Porygon[] = INCBIN_U16("graphics/pokemon/porygon/normal_gba.gbapal"); const u32 gMonBackPic_Porygon[] = INCBIN_U32("graphics/pokemon/porygon/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Porygon[] = INCBIN_U32("graphics/pokemon/porygon/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Porygon[] = INCBIN_U16("graphics/pokemon/porygon/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Porygon[] = INCBIN_U8("graphics/pokemon/porygon/icon.4bpp"); @@ -5847,22 +5847,22 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Porygon[] = INCBIN_U16("graphics/pokemon/porygon/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Porygon[] = INCBIN_U16("graphics/pokemon/porygon/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if P_GEN_2_CROSS_EVOS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Porygon2[] = INCBIN_U32("graphics/pokemon/porygon2/anim_front.4bpp.lz"); - const u32 gMonPalette_Porygon2[] = INCBIN_U32("graphics/pokemon/porygon2/normal.gbapal.lz"); + const u16 gMonPalette_Porygon2[] = INCBIN_U16("graphics/pokemon/porygon2/normal.gbapal"); const u32 gMonBackPic_Porygon2[] = INCBIN_U32("graphics/pokemon/porygon2/back.4bpp.lz"); - const u32 gMonShinyPalette_Porygon2[] = INCBIN_U32("graphics/pokemon/porygon2/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Porygon2[] = INCBIN_U16("graphics/pokemon/porygon2/shiny.gbapal"); #else const u32 gMonFrontPic_Porygon2[] = INCBIN_U32("graphics/pokemon/porygon2/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Porygon2[] = INCBIN_U32("graphics/pokemon/porygon2/normal_gba.gbapal.lz"); + const u16 gMonPalette_Porygon2[] = INCBIN_U16("graphics/pokemon/porygon2/normal_gba.gbapal"); const u32 gMonBackPic_Porygon2[] = INCBIN_U32("graphics/pokemon/porygon2/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Porygon2[] = INCBIN_U32("graphics/pokemon/porygon2/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Porygon2[] = INCBIN_U16("graphics/pokemon/porygon2/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Porygon2[] = INCBIN_U8("graphics/pokemon/porygon2/icon.4bpp"); @@ -5875,16 +5875,16 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Porygon2[] = INCBIN_U16("graphics/pokemon/porygon2/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Porygon2[] = INCBIN_U16("graphics/pokemon/porygon2/overworld_shiny.gbapal"); #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"); - const u32 gMonPalette_PorygonZ[] = INCBIN_U32("graphics/pokemon/porygon_z/normal.gbapal.lz"); + const u16 gMonPalette_PorygonZ[] = INCBIN_U16("graphics/pokemon/porygon_z/normal.gbapal"); const u32 gMonBackPic_PorygonZ[] = INCBIN_U32("graphics/pokemon/porygon_z/back.4bpp.lz"); - const u32 gMonShinyPalette_PorygonZ[] = INCBIN_U32("graphics/pokemon/porygon_z/shiny.gbapal.lz"); + const u16 gMonShinyPalette_PorygonZ[] = INCBIN_U16("graphics/pokemon/porygon_z/shiny.gbapal"); const u8 gMonIcon_PorygonZ[] = INCBIN_U8("graphics/pokemon/porygon_z/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_PorygonZ[] = INCBIN_U8("graphics/pokemon/porygon_z/footprint.1bpp"); @@ -5892,8 +5892,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_PorygonZ[] = INCBIN_U16("graphics/pokemon/porygon_z/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_PorygonZ[] = INCBIN_U16("graphics/pokemon/porygon_z/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_4_CROSS_EVOS @@ -5903,14 +5903,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_OMANYTE #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Omanyte[] = INCBIN_U32("graphics/pokemon/omanyte/anim_front.4bpp.lz"); - const u32 gMonPalette_Omanyte[] = INCBIN_U32("graphics/pokemon/omanyte/normal.gbapal.lz"); + const u16 gMonPalette_Omanyte[] = INCBIN_U16("graphics/pokemon/omanyte/normal.gbapal"); const u32 gMonBackPic_Omanyte[] = INCBIN_U32("graphics/pokemon/omanyte/back.4bpp.lz"); - const u32 gMonShinyPalette_Omanyte[] = INCBIN_U32("graphics/pokemon/omanyte/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Omanyte[] = INCBIN_U16("graphics/pokemon/omanyte/shiny.gbapal"); #else const u32 gMonFrontPic_Omanyte[] = INCBIN_U32("graphics/pokemon/omanyte/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Omanyte[] = INCBIN_U32("graphics/pokemon/omanyte/normal_gba.gbapal.lz"); + const u16 gMonPalette_Omanyte[] = INCBIN_U16("graphics/pokemon/omanyte/normal_gba.gbapal"); const u32 gMonBackPic_Omanyte[] = INCBIN_U32("graphics/pokemon/omanyte/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Omanyte[] = INCBIN_U32("graphics/pokemon/omanyte/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Omanyte[] = INCBIN_U16("graphics/pokemon/omanyte/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Omanyte[] = INCBIN_U8("graphics/pokemon/omanyte/icon.4bpp"); @@ -5923,21 +5923,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Omanyte[] = INCBIN_U16("graphics/pokemon/omanyte/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Omanyte[] = INCBIN_U16("graphics/pokemon/omanyte/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Omastar[] = INCBIN_U32("graphics/pokemon/omastar/anim_front.4bpp.lz"); - const u32 gMonPalette_Omastar[] = INCBIN_U32("graphics/pokemon/omastar/normal.gbapal.lz"); + const u16 gMonPalette_Omastar[] = INCBIN_U16("graphics/pokemon/omastar/normal.gbapal"); const u32 gMonBackPic_Omastar[] = INCBIN_U32("graphics/pokemon/omastar/back.4bpp.lz"); - const u32 gMonShinyPalette_Omastar[] = INCBIN_U32("graphics/pokemon/omastar/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Omastar[] = INCBIN_U16("graphics/pokemon/omastar/shiny.gbapal"); #else const u32 gMonFrontPic_Omastar[] = INCBIN_U32("graphics/pokemon/omastar/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Omastar[] = INCBIN_U32("graphics/pokemon/omastar/normal_gba.gbapal.lz"); + const u16 gMonPalette_Omastar[] = INCBIN_U16("graphics/pokemon/omastar/normal_gba.gbapal"); const u32 gMonBackPic_Omastar[] = INCBIN_U32("graphics/pokemon/omastar/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Omastar[] = INCBIN_U32("graphics/pokemon/omastar/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Omastar[] = INCBIN_U16("graphics/pokemon/omastar/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Omastar[] = INCBIN_U8("graphics/pokemon/omastar/icon.4bpp"); @@ -5950,8 +5950,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Omastar[] = INCBIN_U16("graphics/pokemon/omastar/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Omastar[] = INCBIN_U16("graphics/pokemon/omastar/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_OMANYTE @@ -5959,14 +5959,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_KABUTO #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Kabuto[] = INCBIN_U32("graphics/pokemon/kabuto/anim_front.4bpp.lz"); - const u32 gMonPalette_Kabuto[] = INCBIN_U32("graphics/pokemon/kabuto/normal.gbapal.lz"); + const u16 gMonPalette_Kabuto[] = INCBIN_U16("graphics/pokemon/kabuto/normal.gbapal"); const u32 gMonBackPic_Kabuto[] = INCBIN_U32("graphics/pokemon/kabuto/back.4bpp.lz"); - const u32 gMonShinyPalette_Kabuto[] = INCBIN_U32("graphics/pokemon/kabuto/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Kabuto[] = INCBIN_U16("graphics/pokemon/kabuto/shiny.gbapal"); #else const u32 gMonFrontPic_Kabuto[] = INCBIN_U32("graphics/pokemon/kabuto/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Kabuto[] = INCBIN_U32("graphics/pokemon/kabuto/normal_gba.gbapal.lz"); + const u16 gMonPalette_Kabuto[] = INCBIN_U16("graphics/pokemon/kabuto/normal_gba.gbapal"); const u32 gMonBackPic_Kabuto[] = INCBIN_U32("graphics/pokemon/kabuto/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Kabuto[] = INCBIN_U32("graphics/pokemon/kabuto/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Kabuto[] = INCBIN_U16("graphics/pokemon/kabuto/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Kabuto[] = INCBIN_U8("graphics/pokemon/kabuto/icon.4bpp"); @@ -5979,21 +5979,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Kabuto[] = INCBIN_U16("graphics/pokemon/kabuto/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Kabuto[] = INCBIN_U16("graphics/pokemon/kabuto/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Kabutops[] = INCBIN_U32("graphics/pokemon/kabutops/anim_front.4bpp.lz"); - const u32 gMonPalette_Kabutops[] = INCBIN_U32("graphics/pokemon/kabutops/normal.gbapal.lz"); + const u16 gMonPalette_Kabutops[] = INCBIN_U16("graphics/pokemon/kabutops/normal.gbapal"); const u32 gMonBackPic_Kabutops[] = INCBIN_U32("graphics/pokemon/kabutops/back.4bpp.lz"); - const u32 gMonShinyPalette_Kabutops[] = INCBIN_U32("graphics/pokemon/kabutops/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Kabutops[] = INCBIN_U16("graphics/pokemon/kabutops/shiny.gbapal"); #else const u32 gMonFrontPic_Kabutops[] = INCBIN_U32("graphics/pokemon/kabutops/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Kabutops[] = INCBIN_U32("graphics/pokemon/kabutops/normal_gba.gbapal.lz"); + const u16 gMonPalette_Kabutops[] = INCBIN_U16("graphics/pokemon/kabutops/normal_gba.gbapal"); const u32 gMonBackPic_Kabutops[] = INCBIN_U32("graphics/pokemon/kabutops/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Kabutops[] = INCBIN_U32("graphics/pokemon/kabutops/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Kabutops[] = INCBIN_U16("graphics/pokemon/kabutops/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Kabutops[] = INCBIN_U8("graphics/pokemon/kabutops/icon.4bpp"); @@ -6006,8 +6006,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Kabutops[] = INCBIN_U16("graphics/pokemon/kabutops/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Kabutops[] = INCBIN_U16("graphics/pokemon/kabutops/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_KABUTO @@ -6015,14 +6015,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_AERODACTYL #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Aerodactyl[] = INCBIN_U32("graphics/pokemon/aerodactyl/anim_front.4bpp.lz"); - const u32 gMonPalette_Aerodactyl[] = INCBIN_U32("graphics/pokemon/aerodactyl/normal.gbapal.lz"); + const u16 gMonPalette_Aerodactyl[] = INCBIN_U16("graphics/pokemon/aerodactyl/normal.gbapal"); const u32 gMonBackPic_Aerodactyl[] = INCBIN_U32("graphics/pokemon/aerodactyl/back.4bpp.lz"); - const u32 gMonShinyPalette_Aerodactyl[] = INCBIN_U32("graphics/pokemon/aerodactyl/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Aerodactyl[] = INCBIN_U16("graphics/pokemon/aerodactyl/shiny.gbapal"); #else const u32 gMonFrontPic_Aerodactyl[] = INCBIN_U32("graphics/pokemon/aerodactyl/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Aerodactyl[] = INCBIN_U32("graphics/pokemon/aerodactyl/normal_gba.gbapal.lz"); + const u16 gMonPalette_Aerodactyl[] = INCBIN_U16("graphics/pokemon/aerodactyl/normal_gba.gbapal"); const u32 gMonBackPic_Aerodactyl[] = INCBIN_U32("graphics/pokemon/aerodactyl/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Aerodactyl[] = INCBIN_U32("graphics/pokemon/aerodactyl/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Aerodactyl[] = INCBIN_U16("graphics/pokemon/aerodactyl/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Aerodactyl[] = INCBIN_U8("graphics/pokemon/aerodactyl/icon.4bpp"); @@ -6035,22 +6035,22 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Aerodactyl[] = INCBIN_U16("graphics/pokemon/aerodactyl/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Aerodactyl[] = INCBIN_U16("graphics/pokemon/aerodactyl/overworld_shiny.gbapal"); #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"); - const u32 gMonPalette_AerodactylMega[] = INCBIN_U32("graphics/pokemon/aerodactyl/mega/normal.gbapal.lz"); + const u16 gMonPalette_AerodactylMega[] = INCBIN_U16("graphics/pokemon/aerodactyl/mega/normal.gbapal"); 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 u16 gMonShinyPalette_AerodactylMega[] = INCBIN_U16("graphics/pokemon/aerodactyl/mega/shiny.gbapal"); const u8 gMonIcon_AerodactylMega[] = INCBIN_U8("graphics/pokemon/aerodactyl/mega/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS 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"); + const u16 gOverworldPalette_AerodactylMega[] = INCBIN_U16("graphics/pokemon/aerodactyl/mega/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_AerodactylMega[] = INCBIN_U16("graphics/pokemon/aerodactyl/mega/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS #endif //P_MEGA_EVOLUTIONS @@ -6059,9 +6059,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_SNORLAX #if P_GEN_4_CROSS_EVOS const u32 gMonFrontPic_Munchlax[] = INCBIN_U32("graphics/pokemon/munchlax/anim_front.4bpp.lz"); - const u32 gMonPalette_Munchlax[] = INCBIN_U32("graphics/pokemon/munchlax/normal.gbapal.lz"); + const u16 gMonPalette_Munchlax[] = INCBIN_U16("graphics/pokemon/munchlax/normal.gbapal"); const u32 gMonBackPic_Munchlax[] = INCBIN_U32("graphics/pokemon/munchlax/back.4bpp.lz"); - const u32 gMonShinyPalette_Munchlax[] = INCBIN_U32("graphics/pokemon/munchlax/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Munchlax[] = INCBIN_U16("graphics/pokemon/munchlax/shiny.gbapal"); const u8 gMonIcon_Munchlax[] = INCBIN_U8("graphics/pokemon/munchlax/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Munchlax[] = INCBIN_U8("graphics/pokemon/munchlax/footprint.1bpp"); @@ -6069,22 +6069,22 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Munchlax[] = INCBIN_U16("graphics/pokemon/munchlax/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Munchlax[] = INCBIN_U16("graphics/pokemon/munchlax/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_4_CROSS_EVOS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Snorlax[] = INCBIN_U32("graphics/pokemon/snorlax/anim_front.4bpp.lz"); - const u32 gMonPalette_Snorlax[] = INCBIN_U32("graphics/pokemon/snorlax/normal.gbapal.lz"); + const u16 gMonPalette_Snorlax[] = INCBIN_U16("graphics/pokemon/snorlax/normal.gbapal"); const u32 gMonBackPic_Snorlax[] = INCBIN_U32("graphics/pokemon/snorlax/back.4bpp.lz"); - const u32 gMonShinyPalette_Snorlax[] = INCBIN_U32("graphics/pokemon/snorlax/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Snorlax[] = INCBIN_U16("graphics/pokemon/snorlax/shiny.gbapal"); #else const u32 gMonFrontPic_Snorlax[] = INCBIN_U32("graphics/pokemon/snorlax/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Snorlax[] = INCBIN_U32("graphics/pokemon/snorlax/normal_gba.gbapal.lz"); + const u16 gMonPalette_Snorlax[] = INCBIN_U16("graphics/pokemon/snorlax/normal_gba.gbapal"); const u32 gMonBackPic_Snorlax[] = INCBIN_U32("graphics/pokemon/snorlax/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Snorlax[] = INCBIN_U32("graphics/pokemon/snorlax/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Snorlax[] = INCBIN_U16("graphics/pokemon/snorlax/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Snorlax[] = INCBIN_U8("graphics/pokemon/snorlax/icon.4bpp"); @@ -6097,22 +6097,22 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Snorlax[] = INCBIN_U16("graphics/pokemon/snorlax/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Snorlax[] = INCBIN_U16("graphics/pokemon/snorlax/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if P_GIGANTAMAX_FORMS const u32 gMonFrontPic_SnorlaxGmax[] = INCBIN_U32("graphics/pokemon/snorlax/gmax/front.4bpp.lz"); const u32 gMonBackPic_SnorlaxGmax[] = INCBIN_U32("graphics/pokemon/snorlax/gmax/back.4bpp.lz"); - const u32 gMonPalette_SnorlaxGmax[] = INCBIN_U32("graphics/pokemon/snorlax/gmax/normal.gbapal.lz"); - const u32 gMonShinyPalette_SnorlaxGmax[] = INCBIN_U32("graphics/pokemon/snorlax/gmax/shiny.gbapal.lz"); + const u16 gMonPalette_SnorlaxGmax[] = INCBIN_U16("graphics/pokemon/snorlax/gmax/normal.gbapal"); + const u16 gMonShinyPalette_SnorlaxGmax[] = INCBIN_U16("graphics/pokemon/snorlax/gmax/shiny.gbapal"); const u8 gMonIcon_SnorlaxGmax[] = INCBIN_U8("graphics/pokemon/snorlax/gmax/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS // const u32 gObjectEventPic_SnorlaxGmax[] = INCBIN_COMP("graphics/pokemon/snorlax/gmax/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - // const u32 gOverworldPalette_SnorlaxGmax[] = INCBIN_U32("graphics/pokemon/snorlax/gmax/overworld_normal.gbapal.lz"); - // const u32 gShinyOverworldPalette_SnorlaxGmax[] = INCBIN_U32("graphics/pokemon/snorlax/gmax/overworld_shiny.gbapal.lz"); + // const u16 gOverworldPalette_SnorlaxGmax[] = INCBIN_U16("graphics/pokemon/snorlax/gmax/overworld_normal.gbapal"); + // const u16 gShinyOverworldPalette_SnorlaxGmax[] = INCBIN_U16("graphics/pokemon/snorlax/gmax/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GIGANTAMAX_FORMS @@ -6121,14 +6121,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_ARTICUNO #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Articuno[] = INCBIN_U32("graphics/pokemon/articuno/anim_front.4bpp.lz"); - const u32 gMonPalette_Articuno[] = INCBIN_U32("graphics/pokemon/articuno/normal.gbapal.lz"); + const u16 gMonPalette_Articuno[] = INCBIN_U16("graphics/pokemon/articuno/normal.gbapal"); const u32 gMonBackPic_Articuno[] = INCBIN_U32("graphics/pokemon/articuno/back.4bpp.lz"); - const u32 gMonShinyPalette_Articuno[] = INCBIN_U32("graphics/pokemon/articuno/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Articuno[] = INCBIN_U16("graphics/pokemon/articuno/shiny.gbapal"); #else const u32 gMonFrontPic_Articuno[] = INCBIN_U32("graphics/pokemon/articuno/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Articuno[] = INCBIN_U32("graphics/pokemon/articuno/normal_gba.gbapal.lz"); + const u16 gMonPalette_Articuno[] = INCBIN_U16("graphics/pokemon/articuno/normal_gba.gbapal"); const u32 gMonBackPic_Articuno[] = INCBIN_U32("graphics/pokemon/articuno/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Articuno[] = INCBIN_U32("graphics/pokemon/articuno/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Articuno[] = INCBIN_U16("graphics/pokemon/articuno/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Articuno[] = INCBIN_U8("graphics/pokemon/articuno/icon.4bpp"); @@ -6141,22 +6141,22 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Articuno[] = INCBIN_U16("graphics/pokemon/articuno/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Articuno[] = INCBIN_U16("graphics/pokemon/articuno/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if P_GALARIAN_FORMS const u32 gMonFrontPic_ArticunoGalar[] = INCBIN_U32("graphics/pokemon/articuno/galar/front.4bpp.lz"); - const u32 gMonPalette_ArticunoGalar[] = INCBIN_U32("graphics/pokemon/articuno/galar/normal.gbapal.lz"); + const u16 gMonPalette_ArticunoGalar[] = INCBIN_U16("graphics/pokemon/articuno/galar/normal.gbapal"); const u32 gMonBackPic_ArticunoGalar[] = INCBIN_U32("graphics/pokemon/articuno/galar/back.4bpp.lz"); - const u32 gMonShinyPalette_ArticunoGalar[] = INCBIN_U32("graphics/pokemon/articuno/galar/shiny.gbapal.lz"); + const u16 gMonShinyPalette_ArticunoGalar[] = INCBIN_U16("graphics/pokemon/articuno/galar/shiny.gbapal"); const u8 gMonIcon_ArticunoGalar[] = INCBIN_U8("graphics/pokemon/articuno/galar/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS const u32 gObjectEventPic_ArticunoGalar[] = INCBIN_COMP("graphics/pokemon/articuno/galar/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - const u32 gOverworldPalette_ArticunoGalar[] = INCBIN_U32("graphics/pokemon/articuno/galar/overworld_normal.gbapal.lz"); - const u32 gShinyOverworldPalette_ArticunoGalar[] = INCBIN_U32("graphics/pokemon/articuno/galar/overworld_shiny.gbapal.lz"); + const u16 gOverworldPalette_ArticunoGalar[] = INCBIN_U16("graphics/pokemon/articuno/galar/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_ArticunoGalar[] = INCBIN_U16("graphics/pokemon/articuno/galar/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GALARIAN_FORMS @@ -6165,14 +6165,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_ZAPDOS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Zapdos[] = INCBIN_U32("graphics/pokemon/zapdos/anim_front.4bpp.lz"); - const u32 gMonPalette_Zapdos[] = INCBIN_U32("graphics/pokemon/zapdos/normal.gbapal.lz"); + const u16 gMonPalette_Zapdos[] = INCBIN_U16("graphics/pokemon/zapdos/normal.gbapal"); const u32 gMonBackPic_Zapdos[] = INCBIN_U32("graphics/pokemon/zapdos/back.4bpp.lz"); - const u32 gMonShinyPalette_Zapdos[] = INCBIN_U32("graphics/pokemon/zapdos/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Zapdos[] = INCBIN_U16("graphics/pokemon/zapdos/shiny.gbapal"); #else const u32 gMonFrontPic_Zapdos[] = INCBIN_U32("graphics/pokemon/zapdos/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Zapdos[] = INCBIN_U32("graphics/pokemon/zapdos/normal_gba.gbapal.lz"); + const u16 gMonPalette_Zapdos[] = INCBIN_U16("graphics/pokemon/zapdos/normal_gba.gbapal"); const u32 gMonBackPic_Zapdos[] = INCBIN_U32("graphics/pokemon/zapdos/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Zapdos[] = INCBIN_U32("graphics/pokemon/zapdos/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Zapdos[] = INCBIN_U16("graphics/pokemon/zapdos/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Zapdos[] = INCBIN_U8("graphics/pokemon/zapdos/icon.4bpp"); @@ -6185,22 +6185,22 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Zapdos[] = INCBIN_U16("graphics/pokemon/zapdos/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Zapdos[] = INCBIN_U16("graphics/pokemon/zapdos/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if P_GALARIAN_FORMS const u32 gMonFrontPic_ZapdosGalar[] = INCBIN_U32("graphics/pokemon/zapdos/galar/front.4bpp.lz"); - const u32 gMonPalette_ZapdosGalar[] = INCBIN_U32("graphics/pokemon/zapdos/galar/normal.gbapal.lz"); + const u16 gMonPalette_ZapdosGalar[] = INCBIN_U16("graphics/pokemon/zapdos/galar/normal.gbapal"); const u32 gMonBackPic_ZapdosGalar[] = INCBIN_U32("graphics/pokemon/zapdos/galar/back.4bpp.lz"); - const u32 gMonShinyPalette_ZapdosGalar[] = INCBIN_U32("graphics/pokemon/zapdos/galar/shiny.gbapal.lz"); + const u16 gMonShinyPalette_ZapdosGalar[] = INCBIN_U16("graphics/pokemon/zapdos/galar/shiny.gbapal"); const u8 gMonIcon_ZapdosGalar[] = INCBIN_U8("graphics/pokemon/zapdos/galar/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS const u32 gObjectEventPic_ZapdosGalar[] = INCBIN_COMP("graphics/pokemon/zapdos/galar/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - const u32 gOverworldPalette_ZapdosGalar[] = INCBIN_U32("graphics/pokemon/zapdos/galar/overworld_normal.gbapal.lz"); - const u32 gShinyOverworldPalette_ZapdosGalar[] = INCBIN_U32("graphics/pokemon/zapdos/galar/overworld_shiny.gbapal.lz"); + const u16 gOverworldPalette_ZapdosGalar[] = INCBIN_U16("graphics/pokemon/zapdos/galar/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_ZapdosGalar[] = INCBIN_U16("graphics/pokemon/zapdos/galar/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GALARIAN_FORMS @@ -6209,14 +6209,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_MOLTRES #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Moltres[] = INCBIN_U32("graphics/pokemon/moltres/anim_front.4bpp.lz"); - const u32 gMonPalette_Moltres[] = INCBIN_U32("graphics/pokemon/moltres/normal.gbapal.lz"); + const u16 gMonPalette_Moltres[] = INCBIN_U16("graphics/pokemon/moltres/normal.gbapal"); const u32 gMonBackPic_Moltres[] = INCBIN_U32("graphics/pokemon/moltres/back.4bpp.lz"); - const u32 gMonShinyPalette_Moltres[] = INCBIN_U32("graphics/pokemon/moltres/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Moltres[] = INCBIN_U16("graphics/pokemon/moltres/shiny.gbapal"); #else const u32 gMonFrontPic_Moltres[] = INCBIN_U32("graphics/pokemon/moltres/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Moltres[] = INCBIN_U32("graphics/pokemon/moltres/normal_gba.gbapal.lz"); + const u16 gMonPalette_Moltres[] = INCBIN_U16("graphics/pokemon/moltres/normal_gba.gbapal"); const u32 gMonBackPic_Moltres[] = INCBIN_U32("graphics/pokemon/moltres/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Moltres[] = INCBIN_U32("graphics/pokemon/moltres/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Moltres[] = INCBIN_U16("graphics/pokemon/moltres/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Moltres[] = INCBIN_U8("graphics/pokemon/moltres/icon.4bpp"); @@ -6229,22 +6229,22 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Moltres[] = INCBIN_U16("graphics/pokemon/moltres/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Moltres[] = INCBIN_U16("graphics/pokemon/moltres/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if P_GALARIAN_FORMS const u32 gMonFrontPic_MoltresGalar[] = INCBIN_U32("graphics/pokemon/moltres/galar/front.4bpp.lz"); - const u32 gMonPalette_MoltresGalar[] = INCBIN_U32("graphics/pokemon/moltres/galar/normal.gbapal.lz"); + const u16 gMonPalette_MoltresGalar[] = INCBIN_U16("graphics/pokemon/moltres/galar/normal.gbapal"); const u32 gMonBackPic_MoltresGalar[] = INCBIN_U32("graphics/pokemon/moltres/galar/back.4bpp.lz"); - const u32 gMonShinyPalette_MoltresGalar[] = INCBIN_U32("graphics/pokemon/moltres/galar/shiny.gbapal.lz"); + const u16 gMonShinyPalette_MoltresGalar[] = INCBIN_U16("graphics/pokemon/moltres/galar/shiny.gbapal"); const u8 gMonIcon_MoltresGalar[] = INCBIN_U8("graphics/pokemon/moltres/galar/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS const u32 gObjectEventPic_MoltresGalar[] = INCBIN_COMP("graphics/pokemon/moltres/galar/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - const u32 gOverworldPalette_MoltresGalar[] = INCBIN_U32("graphics/pokemon/moltres/galar/overworld_normal.gbapal.lz"); - const u32 gShinyOverworldPalette_MoltresGalar[] = INCBIN_U32("graphics/pokemon/moltres/galar/overworld_shiny.gbapal.lz"); + const u16 gOverworldPalette_MoltresGalar[] = INCBIN_U16("graphics/pokemon/moltres/galar/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_MoltresGalar[] = INCBIN_U16("graphics/pokemon/moltres/galar/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GALARIAN_FORMS @@ -6253,14 +6253,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_DRATINI #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Dratini[] = INCBIN_U32("graphics/pokemon/dratini/anim_front.4bpp.lz"); - const u32 gMonPalette_Dratini[] = INCBIN_U32("graphics/pokemon/dratini/normal.gbapal.lz"); + const u16 gMonPalette_Dratini[] = INCBIN_U16("graphics/pokemon/dratini/normal.gbapal"); const u32 gMonBackPic_Dratini[] = INCBIN_U32("graphics/pokemon/dratini/back.4bpp.lz"); - const u32 gMonShinyPalette_Dratini[] = INCBIN_U32("graphics/pokemon/dratini/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Dratini[] = INCBIN_U16("graphics/pokemon/dratini/shiny.gbapal"); #else const u32 gMonFrontPic_Dratini[] = INCBIN_U32("graphics/pokemon/dratini/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Dratini[] = INCBIN_U32("graphics/pokemon/dratini/normal_gba.gbapal.lz"); + const u16 gMonPalette_Dratini[] = INCBIN_U16("graphics/pokemon/dratini/normal_gba.gbapal"); const u32 gMonBackPic_Dratini[] = INCBIN_U32("graphics/pokemon/dratini/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Dratini[] = INCBIN_U32("graphics/pokemon/dratini/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Dratini[] = INCBIN_U16("graphics/pokemon/dratini/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Dratini[] = INCBIN_U8("graphics/pokemon/dratini/icon.4bpp"); @@ -6273,21 +6273,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Dratini[] = INCBIN_U16("graphics/pokemon/dratini/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Dratini[] = INCBIN_U16("graphics/pokemon/dratini/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Dragonair[] = INCBIN_U32("graphics/pokemon/dragonair/anim_front.4bpp.lz"); - const u32 gMonPalette_Dragonair[] = INCBIN_U32("graphics/pokemon/dragonair/normal.gbapal.lz"); + const u16 gMonPalette_Dragonair[] = INCBIN_U16("graphics/pokemon/dragonair/normal.gbapal"); const u32 gMonBackPic_Dragonair[] = INCBIN_U32("graphics/pokemon/dragonair/back.4bpp.lz"); - const u32 gMonShinyPalette_Dragonair[] = INCBIN_U32("graphics/pokemon/dragonair/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Dragonair[] = INCBIN_U16("graphics/pokemon/dragonair/shiny.gbapal"); #else const u32 gMonFrontPic_Dragonair[] = INCBIN_U32("graphics/pokemon/dragonair/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Dragonair[] = INCBIN_U32("graphics/pokemon/dragonair/normal_gba.gbapal.lz"); + const u16 gMonPalette_Dragonair[] = INCBIN_U16("graphics/pokemon/dragonair/normal_gba.gbapal"); const u32 gMonBackPic_Dragonair[] = INCBIN_U32("graphics/pokemon/dragonair/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Dragonair[] = INCBIN_U32("graphics/pokemon/dragonair/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Dragonair[] = INCBIN_U16("graphics/pokemon/dragonair/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Dragonair[] = INCBIN_U8("graphics/pokemon/dragonair/icon.4bpp"); @@ -6300,21 +6300,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Dragonair[] = INCBIN_U16("graphics/pokemon/dragonair/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Dragonair[] = INCBIN_U16("graphics/pokemon/dragonair/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Dragonite[] = INCBIN_U32("graphics/pokemon/dragonite/anim_front.4bpp.lz"); - const u32 gMonPalette_Dragonite[] = INCBIN_U32("graphics/pokemon/dragonite/normal.gbapal.lz"); + const u16 gMonPalette_Dragonite[] = INCBIN_U16("graphics/pokemon/dragonite/normal.gbapal"); const u32 gMonBackPic_Dragonite[] = INCBIN_U32("graphics/pokemon/dragonite/back.4bpp.lz"); - const u32 gMonShinyPalette_Dragonite[] = INCBIN_U32("graphics/pokemon/dragonite/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Dragonite[] = INCBIN_U16("graphics/pokemon/dragonite/shiny.gbapal"); #else const u32 gMonFrontPic_Dragonite[] = INCBIN_U32("graphics/pokemon/dragonite/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Dragonite[] = INCBIN_U32("graphics/pokemon/dragonite/normal_gba.gbapal.lz"); + const u16 gMonPalette_Dragonite[] = INCBIN_U16("graphics/pokemon/dragonite/normal_gba.gbapal"); const u32 gMonBackPic_Dragonite[] = INCBIN_U32("graphics/pokemon/dragonite/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Dragonite[] = INCBIN_U32("graphics/pokemon/dragonite/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Dragonite[] = INCBIN_U16("graphics/pokemon/dragonite/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Dragonite[] = INCBIN_U8("graphics/pokemon/dragonite/icon.4bpp"); @@ -6327,8 +6327,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Dragonite[] = INCBIN_U16("graphics/pokemon/dragonite/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Dragonite[] = INCBIN_U16("graphics/pokemon/dragonite/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_DRATINI @@ -6336,14 +6336,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_MEWTWO #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Mewtwo[] = INCBIN_U32("graphics/pokemon/mewtwo/anim_front.4bpp.lz"); - const u32 gMonPalette_Mewtwo[] = INCBIN_U32("graphics/pokemon/mewtwo/normal.gbapal.lz"); + const u16 gMonPalette_Mewtwo[] = INCBIN_U16("graphics/pokemon/mewtwo/normal.gbapal"); const u32 gMonBackPic_Mewtwo[] = INCBIN_U32("graphics/pokemon/mewtwo/back.4bpp.lz"); - const u32 gMonShinyPalette_Mewtwo[] = INCBIN_U32("graphics/pokemon/mewtwo/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Mewtwo[] = INCBIN_U16("graphics/pokemon/mewtwo/shiny.gbapal"); #else const u32 gMonFrontPic_Mewtwo[] = INCBIN_U32("graphics/pokemon/mewtwo/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Mewtwo[] = INCBIN_U32("graphics/pokemon/mewtwo/normal_gba.gbapal.lz"); + const u16 gMonPalette_Mewtwo[] = INCBIN_U16("graphics/pokemon/mewtwo/normal_gba.gbapal"); const u32 gMonBackPic_Mewtwo[] = INCBIN_U32("graphics/pokemon/mewtwo/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Mewtwo[] = INCBIN_U32("graphics/pokemon/mewtwo/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Mewtwo[] = INCBIN_U16("graphics/pokemon/mewtwo/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Mewtwo[] = INCBIN_U8("graphics/pokemon/mewtwo/icon.4bpp"); @@ -6356,35 +6356,35 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Mewtwo[] = INCBIN_U16("graphics/pokemon/mewtwo/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Mewtwo[] = INCBIN_U16("graphics/pokemon/mewtwo/overworld_shiny.gbapal"); #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"); - const u32 gMonPalette_MewtwoMegaX[] = INCBIN_U32("graphics/pokemon/mewtwo/mega_x/normal.gbapal.lz"); + const u16 gMonPalette_MewtwoMegaX[] = INCBIN_U16("graphics/pokemon/mewtwo/mega_x/normal.gbapal"); 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 u16 gMonShinyPalette_MewtwoMegaX[] = INCBIN_U16("graphics/pokemon/mewtwo/mega_x/shiny.gbapal"); const u8 gMonIcon_MewtwoMegaX[] = INCBIN_U8("graphics/pokemon/mewtwo/mega_x/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS 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"); + const u16 gOverworldPalette_MewtwoMegaX[] = INCBIN_U16("graphics/pokemon/mewtwo/mega_x/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_MewtwoMegaX[] = INCBIN_U16("graphics/pokemon/mewtwo/mega_x/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS 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 u16 gMonPalette_MewtwoMegaY[] = INCBIN_U16("graphics/pokemon/mewtwo/mega_y/normal.gbapal"); 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 u16 gMonShinyPalette_MewtwoMegaY[] = INCBIN_U16("graphics/pokemon/mewtwo/mega_y/shiny.gbapal"); const u8 gMonIcon_MewtwoMegaY[] = INCBIN_U8("graphics/pokemon/mewtwo/mega_y/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS 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"); + const u16 gOverworldPalette_MewtwoMegaY[] = INCBIN_U16("graphics/pokemon/mewtwo/mega_y/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_MewtwoMegaY[] = INCBIN_U16("graphics/pokemon/mewtwo/mega_y/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS #endif //P_MEGA_EVOLUTIONS @@ -6393,14 +6393,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_MEW #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Mew[] = INCBIN_U32("graphics/pokemon/mew/anim_front.4bpp.lz"); - const u32 gMonPalette_Mew[] = INCBIN_U32("graphics/pokemon/mew/normal.gbapal.lz"); + const u16 gMonPalette_Mew[] = INCBIN_U16("graphics/pokemon/mew/normal.gbapal"); const u32 gMonBackPic_Mew[] = INCBIN_U32("graphics/pokemon/mew/back.4bpp.lz"); - const u32 gMonShinyPalette_Mew[] = INCBIN_U32("graphics/pokemon/mew/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Mew[] = INCBIN_U16("graphics/pokemon/mew/shiny.gbapal"); #else const u32 gMonFrontPic_Mew[] = INCBIN_U32("graphics/pokemon/mew/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Mew[] = INCBIN_U32("graphics/pokemon/mew/normal_gba.gbapal.lz"); + const u16 gMonPalette_Mew[] = INCBIN_U16("graphics/pokemon/mew/normal_gba.gbapal"); const u32 gMonBackPic_Mew[] = INCBIN_U32("graphics/pokemon/mew/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Mew[] = INCBIN_U32("graphics/pokemon/mew/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Mew[] = INCBIN_U16("graphics/pokemon/mew/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Mew[] = INCBIN_U8("graphics/pokemon/mew/icon.4bpp"); @@ -6413,8 +6413,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Mew[] = INCBIN_U16("graphics/pokemon/mew/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Mew[] = INCBIN_U16("graphics/pokemon/mew/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_MEW @@ -6422,14 +6422,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_CHIKORITA #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Chikorita[] = INCBIN_U32("graphics/pokemon/chikorita/anim_front.4bpp.lz"); - const u32 gMonPalette_Chikorita[] = INCBIN_U32("graphics/pokemon/chikorita/normal.gbapal.lz"); + const u16 gMonPalette_Chikorita[] = INCBIN_U16("graphics/pokemon/chikorita/normal.gbapal"); const u32 gMonBackPic_Chikorita[] = INCBIN_U32("graphics/pokemon/chikorita/back.4bpp.lz"); - const u32 gMonShinyPalette_Chikorita[] = INCBIN_U32("graphics/pokemon/chikorita/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Chikorita[] = INCBIN_U16("graphics/pokemon/chikorita/shiny.gbapal"); #else const u32 gMonFrontPic_Chikorita[] = INCBIN_U32("graphics/pokemon/chikorita/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Chikorita[] = INCBIN_U32("graphics/pokemon/chikorita/normal_gba.gbapal.lz"); + const u16 gMonPalette_Chikorita[] = INCBIN_U16("graphics/pokemon/chikorita/normal_gba.gbapal"); const u32 gMonBackPic_Chikorita[] = INCBIN_U32("graphics/pokemon/chikorita/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Chikorita[] = INCBIN_U32("graphics/pokemon/chikorita/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Chikorita[] = INCBIN_U16("graphics/pokemon/chikorita/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Chikorita[] = INCBIN_U8("graphics/pokemon/chikorita/icon.4bpp"); @@ -6442,21 +6442,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Chikorita[] = INCBIN_U16("graphics/pokemon/chikorita/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Chikorita[] = INCBIN_U16("graphics/pokemon/chikorita/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Bayleef[] = INCBIN_U32("graphics/pokemon/bayleef/anim_front.4bpp.lz"); - const u32 gMonPalette_Bayleef[] = INCBIN_U32("graphics/pokemon/bayleef/normal.gbapal.lz"); + const u16 gMonPalette_Bayleef[] = INCBIN_U16("graphics/pokemon/bayleef/normal.gbapal"); const u32 gMonBackPic_Bayleef[] = INCBIN_U32("graphics/pokemon/bayleef/back.4bpp.lz"); - const u32 gMonShinyPalette_Bayleef[] = INCBIN_U32("graphics/pokemon/bayleef/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Bayleef[] = INCBIN_U16("graphics/pokemon/bayleef/shiny.gbapal"); #else const u32 gMonFrontPic_Bayleef[] = INCBIN_U32("graphics/pokemon/bayleef/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Bayleef[] = INCBIN_U32("graphics/pokemon/bayleef/normal_gba.gbapal.lz"); + const u16 gMonPalette_Bayleef[] = INCBIN_U16("graphics/pokemon/bayleef/normal_gba.gbapal"); const u32 gMonBackPic_Bayleef[] = INCBIN_U32("graphics/pokemon/bayleef/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Bayleef[] = INCBIN_U32("graphics/pokemon/bayleef/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Bayleef[] = INCBIN_U16("graphics/pokemon/bayleef/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Bayleef[] = INCBIN_U8("graphics/pokemon/bayleef/icon.4bpp"); @@ -6469,21 +6469,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Bayleef[] = INCBIN_U16("graphics/pokemon/bayleef/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Bayleef[] = INCBIN_U16("graphics/pokemon/bayleef/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Meganium[] = INCBIN_U32("graphics/pokemon/meganium/anim_front.4bpp.lz"); - const u32 gMonPalette_Meganium[] = INCBIN_U32("graphics/pokemon/meganium/normal.gbapal.lz"); + const u16 gMonPalette_Meganium[] = INCBIN_U16("graphics/pokemon/meganium/normal.gbapal"); const u32 gMonBackPic_Meganium[] = INCBIN_U32("graphics/pokemon/meganium/back.4bpp.lz"); - const u32 gMonShinyPalette_Meganium[] = INCBIN_U32("graphics/pokemon/meganium/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Meganium[] = INCBIN_U16("graphics/pokemon/meganium/shiny.gbapal"); #else const u32 gMonFrontPic_Meganium[] = INCBIN_U32("graphics/pokemon/meganium/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Meganium[] = INCBIN_U32("graphics/pokemon/meganium/normal_gba.gbapal.lz"); + const u16 gMonPalette_Meganium[] = INCBIN_U16("graphics/pokemon/meganium/normal_gba.gbapal"); const u32 gMonBackPic_Meganium[] = INCBIN_U32("graphics/pokemon/meganium/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Meganium[] = INCBIN_U32("graphics/pokemon/meganium/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Meganium[] = INCBIN_U16("graphics/pokemon/meganium/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Meganium[] = INCBIN_U8("graphics/pokemon/meganium/icon.4bpp"); @@ -6496,8 +6496,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Meganium[] = INCBIN_U16("graphics/pokemon/meganium/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Meganium[] = INCBIN_U16("graphics/pokemon/meganium/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -6513,14 +6513,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_CYNDAQUIL #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Cyndaquil[] = INCBIN_U32("graphics/pokemon/cyndaquil/anim_front.4bpp.lz"); - const u32 gMonPalette_Cyndaquil[] = INCBIN_U32("graphics/pokemon/cyndaquil/normal.gbapal.lz"); + const u16 gMonPalette_Cyndaquil[] = INCBIN_U16("graphics/pokemon/cyndaquil/normal.gbapal"); const u32 gMonBackPic_Cyndaquil[] = INCBIN_U32("graphics/pokemon/cyndaquil/back.4bpp.lz"); - const u32 gMonShinyPalette_Cyndaquil[] = INCBIN_U32("graphics/pokemon/cyndaquil/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Cyndaquil[] = INCBIN_U16("graphics/pokemon/cyndaquil/shiny.gbapal"); #else const u32 gMonFrontPic_Cyndaquil[] = INCBIN_U32("graphics/pokemon/cyndaquil/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Cyndaquil[] = INCBIN_U32("graphics/pokemon/cyndaquil/normal_gba.gbapal.lz"); + const u16 gMonPalette_Cyndaquil[] = INCBIN_U16("graphics/pokemon/cyndaquil/normal_gba.gbapal"); const u32 gMonBackPic_Cyndaquil[] = INCBIN_U32("graphics/pokemon/cyndaquil/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Cyndaquil[] = INCBIN_U32("graphics/pokemon/cyndaquil/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Cyndaquil[] = INCBIN_U16("graphics/pokemon/cyndaquil/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Cyndaquil[] = INCBIN_U8("graphics/pokemon/cyndaquil/icon.4bpp"); @@ -6533,21 +6533,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Cyndaquil[] = INCBIN_U16("graphics/pokemon/cyndaquil/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Cyndaquil[] = INCBIN_U16("graphics/pokemon/cyndaquil/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Quilava[] = INCBIN_U32("graphics/pokemon/quilava/anim_front.4bpp.lz"); - const u32 gMonPalette_Quilava[] = INCBIN_U32("graphics/pokemon/quilava/normal.gbapal.lz"); + const u16 gMonPalette_Quilava[] = INCBIN_U16("graphics/pokemon/quilava/normal.gbapal"); const u32 gMonBackPic_Quilava[] = INCBIN_U32("graphics/pokemon/quilava/back.4bpp.lz"); - const u32 gMonShinyPalette_Quilava[] = INCBIN_U32("graphics/pokemon/quilava/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Quilava[] = INCBIN_U16("graphics/pokemon/quilava/shiny.gbapal"); #else const u32 gMonFrontPic_Quilava[] = INCBIN_U32("graphics/pokemon/quilava/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Quilava[] = INCBIN_U32("graphics/pokemon/quilava/normal_gba.gbapal.lz"); + const u16 gMonPalette_Quilava[] = INCBIN_U16("graphics/pokemon/quilava/normal_gba.gbapal"); const u32 gMonBackPic_Quilava[] = INCBIN_U32("graphics/pokemon/quilava/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Quilava[] = INCBIN_U32("graphics/pokemon/quilava/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Quilava[] = INCBIN_U16("graphics/pokemon/quilava/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Quilava[] = INCBIN_U8("graphics/pokemon/quilava/icon.4bpp"); @@ -6560,21 +6560,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Quilava[] = INCBIN_U16("graphics/pokemon/quilava/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Quilava[] = INCBIN_U16("graphics/pokemon/quilava/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Typhlosion[] = INCBIN_U32("graphics/pokemon/typhlosion/anim_front.4bpp.lz"); - const u32 gMonPalette_Typhlosion[] = INCBIN_U32("graphics/pokemon/typhlosion/normal.gbapal.lz"); + const u16 gMonPalette_Typhlosion[] = INCBIN_U16("graphics/pokemon/typhlosion/normal.gbapal"); const u32 gMonBackPic_Typhlosion[] = INCBIN_U32("graphics/pokemon/typhlosion/back.4bpp.lz"); - const u32 gMonShinyPalette_Typhlosion[] = INCBIN_U32("graphics/pokemon/typhlosion/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Typhlosion[] = INCBIN_U16("graphics/pokemon/typhlosion/shiny.gbapal"); #else const u32 gMonFrontPic_Typhlosion[] = INCBIN_U32("graphics/pokemon/typhlosion/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Typhlosion[] = INCBIN_U32("graphics/pokemon/typhlosion/normal_gba.gbapal.lz"); + const u16 gMonPalette_Typhlosion[] = INCBIN_U16("graphics/pokemon/typhlosion/normal_gba.gbapal"); const u32 gMonBackPic_Typhlosion[] = INCBIN_U32("graphics/pokemon/typhlosion/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Typhlosion[] = INCBIN_U32("graphics/pokemon/typhlosion/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Typhlosion[] = INCBIN_U16("graphics/pokemon/typhlosion/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Typhlosion[] = INCBIN_U8("graphics/pokemon/typhlosion/icon.4bpp"); @@ -6587,22 +6587,22 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Typhlosion[] = INCBIN_U16("graphics/pokemon/typhlosion/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Typhlosion[] = INCBIN_U16("graphics/pokemon/typhlosion/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if P_HISUIAN_FORMS const u32 gMonFrontPic_TyphlosionHisui[] = INCBIN_U32("graphics/pokemon/typhlosion/hisui/front.4bpp.lz"); - const u32 gMonPalette_TyphlosionHisui[] = INCBIN_U32("graphics/pokemon/typhlosion/hisui/normal.gbapal.lz"); + const u16 gMonPalette_TyphlosionHisui[] = INCBIN_U16("graphics/pokemon/typhlosion/hisui/normal.gbapal"); const u32 gMonBackPic_TyphlosionHisui[] = INCBIN_U32("graphics/pokemon/typhlosion/hisui/back.4bpp.lz"); - const u32 gMonShinyPalette_TyphlosionHisui[] = INCBIN_U32("graphics/pokemon/typhlosion/hisui/shiny.gbapal.lz"); + const u16 gMonShinyPalette_TyphlosionHisui[] = INCBIN_U16("graphics/pokemon/typhlosion/hisui/shiny.gbapal"); const u8 gMonIcon_TyphlosionHisui[] = INCBIN_U8("graphics/pokemon/typhlosion/hisui/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS const u32 gObjectEventPic_TyphlosionHisui[] = INCBIN_COMP("graphics/pokemon/typhlosion/hisui/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - const u32 gOverworldPalette_TyphlosionHisui[] = INCBIN_U32("graphics/pokemon/typhlosion/hisui/overworld_normal.gbapal.lz"); - const u32 gShinyOverworldPalette_TyphlosionHisui[] = INCBIN_U32("graphics/pokemon/typhlosion/hisui/overworld_shiny.gbapal.lz"); + const u16 gOverworldPalette_TyphlosionHisui[] = INCBIN_U16("graphics/pokemon/typhlosion/hisui/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_TyphlosionHisui[] = INCBIN_U16("graphics/pokemon/typhlosion/hisui/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_HISUIAN_FORMS @@ -6611,14 +6611,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_TOTODILE #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Totodile[] = INCBIN_U32("graphics/pokemon/totodile/anim_front.4bpp.lz"); - const u32 gMonPalette_Totodile[] = INCBIN_U32("graphics/pokemon/totodile/normal.gbapal.lz"); + const u16 gMonPalette_Totodile[] = INCBIN_U16("graphics/pokemon/totodile/normal.gbapal"); const u32 gMonBackPic_Totodile[] = INCBIN_U32("graphics/pokemon/totodile/back.4bpp.lz"); - const u32 gMonShinyPalette_Totodile[] = INCBIN_U32("graphics/pokemon/totodile/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Totodile[] = INCBIN_U16("graphics/pokemon/totodile/shiny.gbapal"); #else const u32 gMonFrontPic_Totodile[] = INCBIN_U32("graphics/pokemon/totodile/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Totodile[] = INCBIN_U32("graphics/pokemon/totodile/normal_gba.gbapal.lz"); + const u16 gMonPalette_Totodile[] = INCBIN_U16("graphics/pokemon/totodile/normal_gba.gbapal"); const u32 gMonBackPic_Totodile[] = INCBIN_U32("graphics/pokemon/totodile/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Totodile[] = INCBIN_U32("graphics/pokemon/totodile/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Totodile[] = INCBIN_U16("graphics/pokemon/totodile/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Totodile[] = INCBIN_U8("graphics/pokemon/totodile/icon.4bpp"); @@ -6631,21 +6631,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Totodile[] = INCBIN_U16("graphics/pokemon/totodile/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Totodile[] = INCBIN_U16("graphics/pokemon/totodile/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Croconaw[] = INCBIN_U32("graphics/pokemon/croconaw/anim_front.4bpp.lz"); - const u32 gMonPalette_Croconaw[] = INCBIN_U32("graphics/pokemon/croconaw/normal.gbapal.lz"); + const u16 gMonPalette_Croconaw[] = INCBIN_U16("graphics/pokemon/croconaw/normal.gbapal"); const u32 gMonBackPic_Croconaw[] = INCBIN_U32("graphics/pokemon/croconaw/back.4bpp.lz"); - const u32 gMonShinyPalette_Croconaw[] = INCBIN_U32("graphics/pokemon/croconaw/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Croconaw[] = INCBIN_U16("graphics/pokemon/croconaw/shiny.gbapal"); #else const u32 gMonFrontPic_Croconaw[] = INCBIN_U32("graphics/pokemon/croconaw/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Croconaw[] = INCBIN_U32("graphics/pokemon/croconaw/normal_gba.gbapal.lz"); + const u16 gMonPalette_Croconaw[] = INCBIN_U16("graphics/pokemon/croconaw/normal_gba.gbapal"); const u32 gMonBackPic_Croconaw[] = INCBIN_U32("graphics/pokemon/croconaw/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Croconaw[] = INCBIN_U32("graphics/pokemon/croconaw/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Croconaw[] = INCBIN_U16("graphics/pokemon/croconaw/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Croconaw[] = INCBIN_U8("graphics/pokemon/croconaw/icon.4bpp"); @@ -6658,21 +6658,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Croconaw[] = INCBIN_U16("graphics/pokemon/croconaw/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Croconaw[] = INCBIN_U16("graphics/pokemon/croconaw/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Feraligatr[] = INCBIN_U32("graphics/pokemon/feraligatr/anim_front.4bpp.lz"); - const u32 gMonPalette_Feraligatr[] = INCBIN_U32("graphics/pokemon/feraligatr/normal.gbapal.lz"); + const u16 gMonPalette_Feraligatr[] = INCBIN_U16("graphics/pokemon/feraligatr/normal.gbapal"); const u32 gMonBackPic_Feraligatr[] = INCBIN_U32("graphics/pokemon/feraligatr/back.4bpp.lz"); - const u32 gMonShinyPalette_Feraligatr[] = INCBIN_U32("graphics/pokemon/feraligatr/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Feraligatr[] = INCBIN_U16("graphics/pokemon/feraligatr/shiny.gbapal"); #else const u32 gMonFrontPic_Feraligatr[] = INCBIN_U32("graphics/pokemon/feraligatr/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Feraligatr[] = INCBIN_U32("graphics/pokemon/feraligatr/normal_gba.gbapal.lz"); + const u16 gMonPalette_Feraligatr[] = INCBIN_U16("graphics/pokemon/feraligatr/normal_gba.gbapal"); const u32 gMonBackPic_Feraligatr[] = INCBIN_U32("graphics/pokemon/feraligatr/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Feraligatr[] = INCBIN_U32("graphics/pokemon/feraligatr/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Feraligatr[] = INCBIN_U16("graphics/pokemon/feraligatr/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Feraligatr[] = INCBIN_U8("graphics/pokemon/feraligatr/icon.4bpp"); @@ -6685,8 +6685,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Feraligatr[] = INCBIN_U16("graphics/pokemon/feraligatr/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Feraligatr[] = INCBIN_U16("graphics/pokemon/feraligatr/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_TOTODILE @@ -6694,14 +6694,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_SENTRET #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Sentret[] = INCBIN_U32("graphics/pokemon/sentret/anim_front.4bpp.lz"); - const u32 gMonPalette_Sentret[] = INCBIN_U32("graphics/pokemon/sentret/normal.gbapal.lz"); + const u16 gMonPalette_Sentret[] = INCBIN_U16("graphics/pokemon/sentret/normal.gbapal"); const u32 gMonBackPic_Sentret[] = INCBIN_U32("graphics/pokemon/sentret/back.4bpp.lz"); - const u32 gMonShinyPalette_Sentret[] = INCBIN_U32("graphics/pokemon/sentret/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Sentret[] = INCBIN_U16("graphics/pokemon/sentret/shiny.gbapal"); #else const u32 gMonFrontPic_Sentret[] = INCBIN_U32("graphics/pokemon/sentret/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Sentret[] = INCBIN_U32("graphics/pokemon/sentret/normal_gba.gbapal.lz"); + const u16 gMonPalette_Sentret[] = INCBIN_U16("graphics/pokemon/sentret/normal_gba.gbapal"); const u32 gMonBackPic_Sentret[] = INCBIN_U32("graphics/pokemon/sentret/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Sentret[] = INCBIN_U32("graphics/pokemon/sentret/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Sentret[] = INCBIN_U16("graphics/pokemon/sentret/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Sentret[] = INCBIN_U8("graphics/pokemon/sentret/icon.4bpp"); @@ -6714,21 +6714,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Sentret[] = INCBIN_U16("graphics/pokemon/sentret/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Sentret[] = INCBIN_U16("graphics/pokemon/sentret/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Furret[] = INCBIN_U32("graphics/pokemon/furret/anim_front.4bpp.lz"); - const u32 gMonPalette_Furret[] = INCBIN_U32("graphics/pokemon/furret/normal.gbapal.lz"); + const u16 gMonPalette_Furret[] = INCBIN_U16("graphics/pokemon/furret/normal.gbapal"); const u32 gMonBackPic_Furret[] = INCBIN_U32("graphics/pokemon/furret/back.4bpp.lz"); - const u32 gMonShinyPalette_Furret[] = INCBIN_U32("graphics/pokemon/furret/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Furret[] = INCBIN_U16("graphics/pokemon/furret/shiny.gbapal"); #else const u32 gMonFrontPic_Furret[] = INCBIN_U32("graphics/pokemon/furret/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Furret[] = INCBIN_U32("graphics/pokemon/furret/normal_gba.gbapal.lz"); + const u16 gMonPalette_Furret[] = INCBIN_U16("graphics/pokemon/furret/normal_gba.gbapal"); const u32 gMonBackPic_Furret[] = INCBIN_U32("graphics/pokemon/furret/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Furret[] = INCBIN_U32("graphics/pokemon/furret/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Furret[] = INCBIN_U16("graphics/pokemon/furret/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Furret[] = INCBIN_U8("graphics/pokemon/furret/icon.4bpp"); @@ -6741,8 +6741,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Furret[] = INCBIN_U16("graphics/pokemon/furret/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Furret[] = INCBIN_U16("graphics/pokemon/furret/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SENTRET @@ -6750,14 +6750,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_HOOTHOOT #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Hoothoot[] = INCBIN_U32("graphics/pokemon/hoothoot/anim_front.4bpp.lz"); - const u32 gMonPalette_Hoothoot[] = INCBIN_U32("graphics/pokemon/hoothoot/normal.gbapal.lz"); + const u16 gMonPalette_Hoothoot[] = INCBIN_U16("graphics/pokemon/hoothoot/normal.gbapal"); const u32 gMonBackPic_Hoothoot[] = INCBIN_U32("graphics/pokemon/hoothoot/back.4bpp.lz"); - const u32 gMonShinyPalette_Hoothoot[] = INCBIN_U32("graphics/pokemon/hoothoot/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Hoothoot[] = INCBIN_U16("graphics/pokemon/hoothoot/shiny.gbapal"); #else const u32 gMonFrontPic_Hoothoot[] = INCBIN_U32("graphics/pokemon/hoothoot/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Hoothoot[] = INCBIN_U32("graphics/pokemon/hoothoot/normal_gba.gbapal.lz"); + const u16 gMonPalette_Hoothoot[] = INCBIN_U16("graphics/pokemon/hoothoot/normal_gba.gbapal"); const u32 gMonBackPic_Hoothoot[] = INCBIN_U32("graphics/pokemon/hoothoot/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Hoothoot[] = INCBIN_U32("graphics/pokemon/hoothoot/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Hoothoot[] = INCBIN_U16("graphics/pokemon/hoothoot/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Hoothoot[] = INCBIN_U8("graphics/pokemon/hoothoot/icon.4bpp"); @@ -6770,21 +6770,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Hoothoot[] = INCBIN_U16("graphics/pokemon/hoothoot/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Hoothoot[] = INCBIN_U16("graphics/pokemon/hoothoot/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Noctowl[] = INCBIN_U32("graphics/pokemon/noctowl/anim_front.4bpp.lz"); - const u32 gMonPalette_Noctowl[] = INCBIN_U32("graphics/pokemon/noctowl/normal.gbapal.lz"); + const u16 gMonPalette_Noctowl[] = INCBIN_U16("graphics/pokemon/noctowl/normal.gbapal"); const u32 gMonBackPic_Noctowl[] = INCBIN_U32("graphics/pokemon/noctowl/back.4bpp.lz"); - const u32 gMonShinyPalette_Noctowl[] = INCBIN_U32("graphics/pokemon/noctowl/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Noctowl[] = INCBIN_U16("graphics/pokemon/noctowl/shiny.gbapal"); #else const u32 gMonFrontPic_Noctowl[] = INCBIN_U32("graphics/pokemon/noctowl/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Noctowl[] = INCBIN_U32("graphics/pokemon/noctowl/normal_gba.gbapal.lz"); + const u16 gMonPalette_Noctowl[] = INCBIN_U16("graphics/pokemon/noctowl/normal_gba.gbapal"); const u32 gMonBackPic_Noctowl[] = INCBIN_U32("graphics/pokemon/noctowl/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Noctowl[] = INCBIN_U32("graphics/pokemon/noctowl/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Noctowl[] = INCBIN_U16("graphics/pokemon/noctowl/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Noctowl[] = INCBIN_U8("graphics/pokemon/noctowl/icon.4bpp"); @@ -6797,8 +6797,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Noctowl[] = INCBIN_U16("graphics/pokemon/noctowl/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Noctowl[] = INCBIN_U16("graphics/pokemon/noctowl/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_HOOTHOOT @@ -6806,14 +6806,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_LEDYBA #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Ledyba[] = INCBIN_U32("graphics/pokemon/ledyba/anim_front.4bpp.lz"); - const u32 gMonPalette_Ledyba[] = INCBIN_U32("graphics/pokemon/ledyba/normal.gbapal.lz"); + const u16 gMonPalette_Ledyba[] = INCBIN_U16("graphics/pokemon/ledyba/normal.gbapal"); const u32 gMonBackPic_Ledyba[] = INCBIN_U32("graphics/pokemon/ledyba/back.4bpp.lz"); - const u32 gMonShinyPalette_Ledyba[] = INCBIN_U32("graphics/pokemon/ledyba/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Ledyba[] = INCBIN_U16("graphics/pokemon/ledyba/shiny.gbapal"); #else const u32 gMonFrontPic_Ledyba[] = INCBIN_U32("graphics/pokemon/ledyba/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Ledyba[] = INCBIN_U32("graphics/pokemon/ledyba/normal_gba.gbapal.lz"); + const u16 gMonPalette_Ledyba[] = INCBIN_U16("graphics/pokemon/ledyba/normal_gba.gbapal"); const u32 gMonBackPic_Ledyba[] = INCBIN_U32("graphics/pokemon/ledyba/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Ledyba[] = INCBIN_U32("graphics/pokemon/ledyba/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Ledyba[] = INCBIN_U16("graphics/pokemon/ledyba/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Ledyba[] = INCBIN_U8("graphics/pokemon/ledyba/icon.4bpp"); @@ -6826,8 +6826,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Ledyba[] = INCBIN_U16("graphics/pokemon/ledyba/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Ledyba[] = INCBIN_U16("graphics/pokemon/ledyba/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -6841,14 +6841,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Ledian[] = INCBIN_U32("graphics/pokemon/ledian/anim_front.4bpp.lz"); - const u32 gMonPalette_Ledian[] = INCBIN_U32("graphics/pokemon/ledian/normal.gbapal.lz"); + const u16 gMonPalette_Ledian[] = INCBIN_U16("graphics/pokemon/ledian/normal.gbapal"); const u32 gMonBackPic_Ledian[] = INCBIN_U32("graphics/pokemon/ledian/back.4bpp.lz"); - const u32 gMonShinyPalette_Ledian[] = INCBIN_U32("graphics/pokemon/ledian/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Ledian[] = INCBIN_U16("graphics/pokemon/ledian/shiny.gbapal"); #else const u32 gMonFrontPic_Ledian[] = INCBIN_U32("graphics/pokemon/ledian/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Ledian[] = INCBIN_U32("graphics/pokemon/ledian/normal_gba.gbapal.lz"); + const u16 gMonPalette_Ledian[] = INCBIN_U16("graphics/pokemon/ledian/normal_gba.gbapal"); const u32 gMonBackPic_Ledian[] = INCBIN_U32("graphics/pokemon/ledian/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Ledian[] = INCBIN_U32("graphics/pokemon/ledian/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Ledian[] = INCBIN_U16("graphics/pokemon/ledian/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Ledian[] = INCBIN_U8("graphics/pokemon/ledian/icon.4bpp"); @@ -6861,8 +6861,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Ledian[] = INCBIN_U16("graphics/pokemon/ledian/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Ledian[] = INCBIN_U16("graphics/pokemon/ledian/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -6878,14 +6878,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_SPINARAK #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Spinarak[] = INCBIN_U32("graphics/pokemon/spinarak/anim_front.4bpp.lz"); - const u32 gMonPalette_Spinarak[] = INCBIN_U32("graphics/pokemon/spinarak/normal.gbapal.lz"); + const u16 gMonPalette_Spinarak[] = INCBIN_U16("graphics/pokemon/spinarak/normal.gbapal"); const u32 gMonBackPic_Spinarak[] = INCBIN_U32("graphics/pokemon/spinarak/back.4bpp.lz"); - const u32 gMonShinyPalette_Spinarak[] = INCBIN_U32("graphics/pokemon/spinarak/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Spinarak[] = INCBIN_U16("graphics/pokemon/spinarak/shiny.gbapal"); #else const u32 gMonFrontPic_Spinarak[] = INCBIN_U32("graphics/pokemon/spinarak/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Spinarak[] = INCBIN_U32("graphics/pokemon/spinarak/normal_gba.gbapal.lz"); + const u16 gMonPalette_Spinarak[] = INCBIN_U16("graphics/pokemon/spinarak/normal_gba.gbapal"); const u32 gMonBackPic_Spinarak[] = INCBIN_U32("graphics/pokemon/spinarak/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Spinarak[] = INCBIN_U32("graphics/pokemon/spinarak/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Spinarak[] = INCBIN_U16("graphics/pokemon/spinarak/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Spinarak[] = INCBIN_U8("graphics/pokemon/spinarak/icon.4bpp"); @@ -6898,21 +6898,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Spinarak[] = INCBIN_U16("graphics/pokemon/spinarak/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Spinarak[] = INCBIN_U16("graphics/pokemon/spinarak/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Ariados[] = INCBIN_U32("graphics/pokemon/ariados/anim_front.4bpp.lz"); - const u32 gMonPalette_Ariados[] = INCBIN_U32("graphics/pokemon/ariados/normal.gbapal.lz"); + const u16 gMonPalette_Ariados[] = INCBIN_U16("graphics/pokemon/ariados/normal.gbapal"); const u32 gMonBackPic_Ariados[] = INCBIN_U32("graphics/pokemon/ariados/back.4bpp.lz"); - const u32 gMonShinyPalette_Ariados[] = INCBIN_U32("graphics/pokemon/ariados/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Ariados[] = INCBIN_U16("graphics/pokemon/ariados/shiny.gbapal"); #else const u32 gMonFrontPic_Ariados[] = INCBIN_U32("graphics/pokemon/ariados/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Ariados[] = INCBIN_U32("graphics/pokemon/ariados/normal_gba.gbapal.lz"); + const u16 gMonPalette_Ariados[] = INCBIN_U16("graphics/pokemon/ariados/normal_gba.gbapal"); const u32 gMonBackPic_Ariados[] = INCBIN_U32("graphics/pokemon/ariados/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Ariados[] = INCBIN_U32("graphics/pokemon/ariados/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Ariados[] = INCBIN_U16("graphics/pokemon/ariados/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Ariados[] = INCBIN_U8("graphics/pokemon/ariados/icon.4bpp"); @@ -6925,8 +6925,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Ariados[] = INCBIN_U16("graphics/pokemon/ariados/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Ariados[] = INCBIN_U16("graphics/pokemon/ariados/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SPINARAK @@ -6934,14 +6934,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_CHINCHOU #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Chinchou[] = INCBIN_U32("graphics/pokemon/chinchou/anim_front.4bpp.lz"); - const u32 gMonPalette_Chinchou[] = INCBIN_U32("graphics/pokemon/chinchou/normal.gbapal.lz"); + const u16 gMonPalette_Chinchou[] = INCBIN_U16("graphics/pokemon/chinchou/normal.gbapal"); const u32 gMonBackPic_Chinchou[] = INCBIN_U32("graphics/pokemon/chinchou/back.4bpp.lz"); - const u32 gMonShinyPalette_Chinchou[] = INCBIN_U32("graphics/pokemon/chinchou/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Chinchou[] = INCBIN_U16("graphics/pokemon/chinchou/shiny.gbapal"); #else const u32 gMonFrontPic_Chinchou[] = INCBIN_U32("graphics/pokemon/chinchou/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Chinchou[] = INCBIN_U32("graphics/pokemon/chinchou/normal_gba.gbapal.lz"); + const u16 gMonPalette_Chinchou[] = INCBIN_U16("graphics/pokemon/chinchou/normal_gba.gbapal"); const u32 gMonBackPic_Chinchou[] = INCBIN_U32("graphics/pokemon/chinchou/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Chinchou[] = INCBIN_U32("graphics/pokemon/chinchou/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Chinchou[] = INCBIN_U16("graphics/pokemon/chinchou/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Chinchou[] = INCBIN_U8("graphics/pokemon/chinchou/icon.4bpp"); @@ -6954,21 +6954,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Chinchou[] = INCBIN_U16("graphics/pokemon/chinchou/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Chinchou[] = INCBIN_U16("graphics/pokemon/chinchou/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Lanturn[] = INCBIN_U32("graphics/pokemon/lanturn/anim_front.4bpp.lz"); - const u32 gMonPalette_Lanturn[] = INCBIN_U32("graphics/pokemon/lanturn/normal.gbapal.lz"); + const u16 gMonPalette_Lanturn[] = INCBIN_U16("graphics/pokemon/lanturn/normal.gbapal"); const u32 gMonBackPic_Lanturn[] = INCBIN_U32("graphics/pokemon/lanturn/back.4bpp.lz"); - const u32 gMonShinyPalette_Lanturn[] = INCBIN_U32("graphics/pokemon/lanturn/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Lanturn[] = INCBIN_U16("graphics/pokemon/lanturn/shiny.gbapal"); #else const u32 gMonFrontPic_Lanturn[] = INCBIN_U32("graphics/pokemon/lanturn/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Lanturn[] = INCBIN_U32("graphics/pokemon/lanturn/normal_gba.gbapal.lz"); + const u16 gMonPalette_Lanturn[] = INCBIN_U16("graphics/pokemon/lanturn/normal_gba.gbapal"); const u32 gMonBackPic_Lanturn[] = INCBIN_U32("graphics/pokemon/lanturn/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Lanturn[] = INCBIN_U32("graphics/pokemon/lanturn/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Lanturn[] = INCBIN_U16("graphics/pokemon/lanturn/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Lanturn[] = INCBIN_U8("graphics/pokemon/lanturn/icon.4bpp"); @@ -6981,8 +6981,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Lanturn[] = INCBIN_U16("graphics/pokemon/lanturn/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Lanturn[] = INCBIN_U16("graphics/pokemon/lanturn/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_CHINCHOU @@ -6990,14 +6990,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_TOGEPI #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Togepi[] = INCBIN_U32("graphics/pokemon/togepi/anim_front.4bpp.lz"); - const u32 gMonPalette_Togepi[] = INCBIN_U32("graphics/pokemon/togepi/normal.gbapal.lz"); + const u16 gMonPalette_Togepi[] = INCBIN_U16("graphics/pokemon/togepi/normal.gbapal"); const u32 gMonBackPic_Togepi[] = INCBIN_U32("graphics/pokemon/togepi/back.4bpp.lz"); - const u32 gMonShinyPalette_Togepi[] = INCBIN_U32("graphics/pokemon/togepi/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Togepi[] = INCBIN_U16("graphics/pokemon/togepi/shiny.gbapal"); #else const u32 gMonFrontPic_Togepi[] = INCBIN_U32("graphics/pokemon/togepi/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Togepi[] = INCBIN_U32("graphics/pokemon/togepi/normal_gba.gbapal.lz"); + const u16 gMonPalette_Togepi[] = INCBIN_U16("graphics/pokemon/togepi/normal_gba.gbapal"); const u32 gMonBackPic_Togepi[] = INCBIN_U32("graphics/pokemon/togepi/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Togepi[] = INCBIN_U32("graphics/pokemon/togepi/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Togepi[] = INCBIN_U16("graphics/pokemon/togepi/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Togepi[] = INCBIN_U8("graphics/pokemon/togepi/icon.4bpp"); @@ -7010,21 +7010,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Togepi[] = INCBIN_U16("graphics/pokemon/togepi/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Togepi[] = INCBIN_U16("graphics/pokemon/togepi/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Togetic[] = INCBIN_U32("graphics/pokemon/togetic/anim_front.4bpp.lz"); - const u32 gMonPalette_Togetic[] = INCBIN_U32("graphics/pokemon/togetic/normal.gbapal.lz"); + const u16 gMonPalette_Togetic[] = INCBIN_U16("graphics/pokemon/togetic/normal.gbapal"); const u32 gMonBackPic_Togetic[] = INCBIN_U32("graphics/pokemon/togetic/back.4bpp.lz"); - const u32 gMonShinyPalette_Togetic[] = INCBIN_U32("graphics/pokemon/togetic/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Togetic[] = INCBIN_U16("graphics/pokemon/togetic/shiny.gbapal"); #else const u32 gMonFrontPic_Togetic[] = INCBIN_U32("graphics/pokemon/togetic/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Togetic[] = INCBIN_U32("graphics/pokemon/togetic/normal_gba.gbapal.lz"); + const u16 gMonPalette_Togetic[] = INCBIN_U16("graphics/pokemon/togetic/normal_gba.gbapal"); const u32 gMonBackPic_Togetic[] = INCBIN_U32("graphics/pokemon/togetic/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Togetic[] = INCBIN_U32("graphics/pokemon/togetic/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Togetic[] = INCBIN_U16("graphics/pokemon/togetic/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Togetic[] = INCBIN_U8("graphics/pokemon/togetic/icon.4bpp"); @@ -7037,16 +7037,16 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Togetic[] = INCBIN_U16("graphics/pokemon/togetic/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Togetic[] = INCBIN_U16("graphics/pokemon/togetic/overworld_shiny.gbapal"); #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"); - const u32 gMonPalette_Togekiss[] = INCBIN_U32("graphics/pokemon/togekiss/normal.gbapal.lz"); + const u16 gMonPalette_Togekiss[] = INCBIN_U16("graphics/pokemon/togekiss/normal.gbapal"); const u32 gMonBackPic_Togekiss[] = INCBIN_U32("graphics/pokemon/togekiss/back.4bpp.lz"); - const u32 gMonShinyPalette_Togekiss[] = INCBIN_U32("graphics/pokemon/togekiss/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Togekiss[] = INCBIN_U16("graphics/pokemon/togekiss/shiny.gbapal"); const u8 gMonIcon_Togekiss[] = INCBIN_U8("graphics/pokemon/togekiss/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Togekiss[] = INCBIN_U8("graphics/pokemon/togekiss/footprint.1bpp"); @@ -7054,8 +7054,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Togekiss[] = INCBIN_U16("graphics/pokemon/togekiss/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Togekiss[] = INCBIN_U16("graphics/pokemon/togekiss/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_4_CROSS_EVOS @@ -7064,14 +7064,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_NATU #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Natu[] = INCBIN_U32("graphics/pokemon/natu/anim_front.4bpp.lz"); - const u32 gMonPalette_Natu[] = INCBIN_U32("graphics/pokemon/natu/normal.gbapal.lz"); + const u16 gMonPalette_Natu[] = INCBIN_U16("graphics/pokemon/natu/normal.gbapal"); const u32 gMonBackPic_Natu[] = INCBIN_U32("graphics/pokemon/natu/back.4bpp.lz"); - const u32 gMonShinyPalette_Natu[] = INCBIN_U32("graphics/pokemon/natu/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Natu[] = INCBIN_U16("graphics/pokemon/natu/shiny.gbapal"); #else const u32 gMonFrontPic_Natu[] = INCBIN_U32("graphics/pokemon/natu/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Natu[] = INCBIN_U32("graphics/pokemon/natu/normal_gba.gbapal.lz"); + const u16 gMonPalette_Natu[] = INCBIN_U16("graphics/pokemon/natu/normal_gba.gbapal"); const u32 gMonBackPic_Natu[] = INCBIN_U32("graphics/pokemon/natu/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Natu[] = INCBIN_U32("graphics/pokemon/natu/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Natu[] = INCBIN_U16("graphics/pokemon/natu/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Natu[] = INCBIN_U8("graphics/pokemon/natu/icon.4bpp"); @@ -7084,21 +7084,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Natu[] = INCBIN_U16("graphics/pokemon/natu/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Natu[] = INCBIN_U16("graphics/pokemon/natu/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Xatu[] = INCBIN_U32("graphics/pokemon/xatu/anim_front.4bpp.lz"); - const u32 gMonPalette_Xatu[] = INCBIN_U32("graphics/pokemon/xatu/normal.gbapal.lz"); + const u16 gMonPalette_Xatu[] = INCBIN_U16("graphics/pokemon/xatu/normal.gbapal"); const u32 gMonBackPic_Xatu[] = INCBIN_U32("graphics/pokemon/xatu/back.4bpp.lz"); - const u32 gMonShinyPalette_Xatu[] = INCBIN_U32("graphics/pokemon/xatu/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Xatu[] = INCBIN_U16("graphics/pokemon/xatu/shiny.gbapal"); #else const u32 gMonFrontPic_Xatu[] = INCBIN_U32("graphics/pokemon/xatu/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Xatu[] = INCBIN_U32("graphics/pokemon/xatu/normal_gba.gbapal.lz"); + const u16 gMonPalette_Xatu[] = INCBIN_U16("graphics/pokemon/xatu/normal_gba.gbapal"); const u32 gMonBackPic_Xatu[] = INCBIN_U32("graphics/pokemon/xatu/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Xatu[] = INCBIN_U32("graphics/pokemon/xatu/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Xatu[] = INCBIN_U16("graphics/pokemon/xatu/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Xatu[] = INCBIN_U8("graphics/pokemon/xatu/icon.4bpp"); @@ -7111,8 +7111,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Xatu[] = INCBIN_U16("graphics/pokemon/xatu/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Xatu[] = INCBIN_U16("graphics/pokemon/xatu/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -7127,14 +7127,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_MAREEP #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Mareep[] = INCBIN_U32("graphics/pokemon/mareep/anim_front.4bpp.lz"); - const u32 gMonPalette_Mareep[] = INCBIN_U32("graphics/pokemon/mareep/normal.gbapal.lz"); + const u16 gMonPalette_Mareep[] = INCBIN_U16("graphics/pokemon/mareep/normal.gbapal"); const u32 gMonBackPic_Mareep[] = INCBIN_U32("graphics/pokemon/mareep/back.4bpp.lz"); - const u32 gMonShinyPalette_Mareep[] = INCBIN_U32("graphics/pokemon/mareep/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Mareep[] = INCBIN_U16("graphics/pokemon/mareep/shiny.gbapal"); #else const u32 gMonFrontPic_Mareep[] = INCBIN_U32("graphics/pokemon/mareep/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Mareep[] = INCBIN_U32("graphics/pokemon/mareep/normal_gba.gbapal.lz"); + const u16 gMonPalette_Mareep[] = INCBIN_U16("graphics/pokemon/mareep/normal_gba.gbapal"); const u32 gMonBackPic_Mareep[] = INCBIN_U32("graphics/pokemon/mareep/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Mareep[] = INCBIN_U32("graphics/pokemon/mareep/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Mareep[] = INCBIN_U16("graphics/pokemon/mareep/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Mareep[] = INCBIN_U8("graphics/pokemon/mareep/icon.4bpp"); @@ -7147,21 +7147,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Mareep[] = INCBIN_U16("graphics/pokemon/mareep/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Mareep[] = INCBIN_U16("graphics/pokemon/mareep/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Flaaffy[] = INCBIN_U32("graphics/pokemon/flaaffy/anim_front.4bpp.lz"); - const u32 gMonPalette_Flaaffy[] = INCBIN_U32("graphics/pokemon/flaaffy/normal.gbapal.lz"); + const u16 gMonPalette_Flaaffy[] = INCBIN_U16("graphics/pokemon/flaaffy/normal.gbapal"); const u32 gMonBackPic_Flaaffy[] = INCBIN_U32("graphics/pokemon/flaaffy/back.4bpp.lz"); - const u32 gMonShinyPalette_Flaaffy[] = INCBIN_U32("graphics/pokemon/flaaffy/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Flaaffy[] = INCBIN_U16("graphics/pokemon/flaaffy/shiny.gbapal"); #else const u32 gMonFrontPic_Flaaffy[] = INCBIN_U32("graphics/pokemon/flaaffy/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Flaaffy[] = INCBIN_U32("graphics/pokemon/flaaffy/normal_gba.gbapal.lz"); + const u16 gMonPalette_Flaaffy[] = INCBIN_U16("graphics/pokemon/flaaffy/normal_gba.gbapal"); const u32 gMonBackPic_Flaaffy[] = INCBIN_U32("graphics/pokemon/flaaffy/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Flaaffy[] = INCBIN_U32("graphics/pokemon/flaaffy/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Flaaffy[] = INCBIN_U16("graphics/pokemon/flaaffy/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Flaaffy[] = INCBIN_U8("graphics/pokemon/flaaffy/icon.4bpp"); @@ -7174,21 +7174,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Flaaffy[] = INCBIN_U16("graphics/pokemon/flaaffy/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Flaaffy[] = INCBIN_U16("graphics/pokemon/flaaffy/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Ampharos[] = INCBIN_U32("graphics/pokemon/ampharos/anim_front.4bpp.lz"); - const u32 gMonPalette_Ampharos[] = INCBIN_U32("graphics/pokemon/ampharos/normal.gbapal.lz"); + const u16 gMonPalette_Ampharos[] = INCBIN_U16("graphics/pokemon/ampharos/normal.gbapal"); const u32 gMonBackPic_Ampharos[] = INCBIN_U32("graphics/pokemon/ampharos/back.4bpp.lz"); - const u32 gMonShinyPalette_Ampharos[] = INCBIN_U32("graphics/pokemon/ampharos/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Ampharos[] = INCBIN_U16("graphics/pokemon/ampharos/shiny.gbapal"); #else const u32 gMonFrontPic_Ampharos[] = INCBIN_U32("graphics/pokemon/ampharos/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Ampharos[] = INCBIN_U32("graphics/pokemon/ampharos/normal_gba.gbapal.lz"); + const u16 gMonPalette_Ampharos[] = INCBIN_U16("graphics/pokemon/ampharos/normal_gba.gbapal"); const u32 gMonBackPic_Ampharos[] = INCBIN_U32("graphics/pokemon/ampharos/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Ampharos[] = INCBIN_U32("graphics/pokemon/ampharos/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Ampharos[] = INCBIN_U16("graphics/pokemon/ampharos/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Ampharos[] = INCBIN_U8("graphics/pokemon/ampharos/icon.4bpp"); @@ -7201,22 +7201,22 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Ampharos[] = INCBIN_U16("graphics/pokemon/ampharos/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Ampharos[] = INCBIN_U16("graphics/pokemon/ampharos/overworld_shiny.gbapal"); #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"); - const u32 gMonPalette_AmpharosMega[] = INCBIN_U32("graphics/pokemon/ampharos/mega/normal.gbapal.lz"); + const u16 gMonPalette_AmpharosMega[] = INCBIN_U16("graphics/pokemon/ampharos/mega/normal.gbapal"); 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 u16 gMonShinyPalette_AmpharosMega[] = INCBIN_U16("graphics/pokemon/ampharos/mega/shiny.gbapal"); const u8 gMonIcon_AmpharosMega[] = INCBIN_U8("graphics/pokemon/ampharos/mega/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS 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"); + const u16 gOverworldPalette_AmpharosMega[] = INCBIN_U16("graphics/pokemon/ampharos/mega/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_AmpharosMega[] = INCBIN_U16("graphics/pokemon/ampharos/mega/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS #endif //P_MEGA_EVOLUTIONS @@ -7226,14 +7226,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_GEN_3_CROSS_EVOS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Azurill[] = INCBIN_U32("graphics/pokemon/azurill/anim_front.4bpp.lz"); - const u32 gMonPalette_Azurill[] = INCBIN_U32("graphics/pokemon/azurill/normal.gbapal.lz"); + const u16 gMonPalette_Azurill[] = INCBIN_U16("graphics/pokemon/azurill/normal.gbapal"); const u32 gMonBackPic_Azurill[] = INCBIN_U32("graphics/pokemon/azurill/back.4bpp.lz"); - const u32 gMonShinyPalette_Azurill[] = INCBIN_U32("graphics/pokemon/azurill/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Azurill[] = INCBIN_U16("graphics/pokemon/azurill/shiny.gbapal"); #else const u32 gMonFrontPic_Azurill[] = INCBIN_U32("graphics/pokemon/azurill/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Azurill[] = INCBIN_U32("graphics/pokemon/azurill/normal_gba.gbapal.lz"); + const u16 gMonPalette_Azurill[] = INCBIN_U16("graphics/pokemon/azurill/normal_gba.gbapal"); const u32 gMonBackPic_Azurill[] = INCBIN_U32("graphics/pokemon/azurill/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Azurill[] = INCBIN_U32("graphics/pokemon/azurill/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Azurill[] = INCBIN_U16("graphics/pokemon/azurill/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Azurill[] = INCBIN_U8("graphics/pokemon/azurill/icon.4bpp"); @@ -7246,22 +7246,22 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Azurill[] = INCBIN_U16("graphics/pokemon/azurill/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Azurill[] = INCBIN_U16("graphics/pokemon/azurill/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_3_CROSS_EVOS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Marill[] = INCBIN_U32("graphics/pokemon/marill/anim_front.4bpp.lz"); - const u32 gMonPalette_Marill[] = INCBIN_U32("graphics/pokemon/marill/normal.gbapal.lz"); + const u16 gMonPalette_Marill[] = INCBIN_U16("graphics/pokemon/marill/normal.gbapal"); const u32 gMonBackPic_Marill[] = INCBIN_U32("graphics/pokemon/marill/back.4bpp.lz"); - const u32 gMonShinyPalette_Marill[] = INCBIN_U32("graphics/pokemon/marill/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Marill[] = INCBIN_U16("graphics/pokemon/marill/shiny.gbapal"); #else const u32 gMonFrontPic_Marill[] = INCBIN_U32("graphics/pokemon/marill/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Marill[] = INCBIN_U32("graphics/pokemon/marill/normal_gba.gbapal.lz"); + const u16 gMonPalette_Marill[] = INCBIN_U16("graphics/pokemon/marill/normal_gba.gbapal"); const u32 gMonBackPic_Marill[] = INCBIN_U32("graphics/pokemon/marill/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Marill[] = INCBIN_U32("graphics/pokemon/marill/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Marill[] = INCBIN_U16("graphics/pokemon/marill/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Marill[] = INCBIN_U8("graphics/pokemon/marill/icon.4bpp"); @@ -7274,21 +7274,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Marill[] = INCBIN_U16("graphics/pokemon/marill/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Marill[] = INCBIN_U16("graphics/pokemon/marill/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Azumarill[] = INCBIN_U32("graphics/pokemon/azumarill/anim_front.4bpp.lz"); - const u32 gMonPalette_Azumarill[] = INCBIN_U32("graphics/pokemon/azumarill/normal.gbapal.lz"); + const u16 gMonPalette_Azumarill[] = INCBIN_U16("graphics/pokemon/azumarill/normal.gbapal"); const u32 gMonBackPic_Azumarill[] = INCBIN_U32("graphics/pokemon/azumarill/back.4bpp.lz"); - const u32 gMonShinyPalette_Azumarill[] = INCBIN_U32("graphics/pokemon/azumarill/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Azumarill[] = INCBIN_U16("graphics/pokemon/azumarill/shiny.gbapal"); #else const u32 gMonFrontPic_Azumarill[] = INCBIN_U32("graphics/pokemon/azumarill/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Azumarill[] = INCBIN_U32("graphics/pokemon/azumarill/normal_gba.gbapal.lz"); + const u16 gMonPalette_Azumarill[] = INCBIN_U16("graphics/pokemon/azumarill/normal_gba.gbapal"); const u32 gMonBackPic_Azumarill[] = INCBIN_U32("graphics/pokemon/azumarill/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Azumarill[] = INCBIN_U32("graphics/pokemon/azumarill/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Azumarill[] = INCBIN_U16("graphics/pokemon/azumarill/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Azumarill[] = INCBIN_U8("graphics/pokemon/azumarill/icon.4bpp"); @@ -7301,8 +7301,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Azumarill[] = INCBIN_U16("graphics/pokemon/azumarill/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Azumarill[] = INCBIN_U16("graphics/pokemon/azumarill/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_MARILL @@ -7310,9 +7310,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_SUDOWOODO #if P_GEN_4_CROSS_EVOS const u32 gMonFrontPic_Bonsly[] = INCBIN_U32("graphics/pokemon/bonsly/anim_front.4bpp.lz"); - const u32 gMonPalette_Bonsly[] = INCBIN_U32("graphics/pokemon/bonsly/normal.gbapal.lz"); + const u16 gMonPalette_Bonsly[] = INCBIN_U16("graphics/pokemon/bonsly/normal.gbapal"); const u32 gMonBackPic_Bonsly[] = INCBIN_U32("graphics/pokemon/bonsly/back.4bpp.lz"); - const u32 gMonShinyPalette_Bonsly[] = INCBIN_U32("graphics/pokemon/bonsly/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Bonsly[] = INCBIN_U16("graphics/pokemon/bonsly/shiny.gbapal"); const u8 gMonIcon_Bonsly[] = INCBIN_U8("graphics/pokemon/bonsly/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Bonsly[] = INCBIN_U8("graphics/pokemon/bonsly/footprint.1bpp"); @@ -7320,22 +7320,22 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Bonsly[] = INCBIN_U16("graphics/pokemon/bonsly/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Bonsly[] = INCBIN_U16("graphics/pokemon/bonsly/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_4_CROSS_EVOS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Sudowoodo[] = INCBIN_U32("graphics/pokemon/sudowoodo/anim_front.4bpp.lz"); - const u32 gMonPalette_Sudowoodo[] = INCBIN_U32("graphics/pokemon/sudowoodo/normal.gbapal.lz"); + const u16 gMonPalette_Sudowoodo[] = INCBIN_U16("graphics/pokemon/sudowoodo/normal.gbapal"); const u32 gMonBackPic_Sudowoodo[] = INCBIN_U32("graphics/pokemon/sudowoodo/back.4bpp.lz"); - const u32 gMonShinyPalette_Sudowoodo[] = INCBIN_U32("graphics/pokemon/sudowoodo/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Sudowoodo[] = INCBIN_U16("graphics/pokemon/sudowoodo/shiny.gbapal"); #else const u32 gMonFrontPic_Sudowoodo[] = INCBIN_U32("graphics/pokemon/sudowoodo/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Sudowoodo[] = INCBIN_U32("graphics/pokemon/sudowoodo/normal_gba.gbapal.lz"); + const u16 gMonPalette_Sudowoodo[] = INCBIN_U16("graphics/pokemon/sudowoodo/normal_gba.gbapal"); const u32 gMonBackPic_Sudowoodo[] = INCBIN_U32("graphics/pokemon/sudowoodo/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Sudowoodo[] = INCBIN_U32("graphics/pokemon/sudowoodo/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Sudowoodo[] = INCBIN_U16("graphics/pokemon/sudowoodo/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Sudowoodo[] = INCBIN_U8("graphics/pokemon/sudowoodo/icon.4bpp"); @@ -7348,8 +7348,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Sudowoodo[] = INCBIN_U16("graphics/pokemon/sudowoodo/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Sudowoodo[] = INCBIN_U16("graphics/pokemon/sudowoodo/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -7365,14 +7365,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_HOPPIP #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Hoppip[] = INCBIN_U32("graphics/pokemon/hoppip/anim_front.4bpp.lz"); - const u32 gMonPalette_Hoppip[] = INCBIN_U32("graphics/pokemon/hoppip/normal.gbapal.lz"); + const u16 gMonPalette_Hoppip[] = INCBIN_U16("graphics/pokemon/hoppip/normal.gbapal"); const u32 gMonBackPic_Hoppip[] = INCBIN_U32("graphics/pokemon/hoppip/back.4bpp.lz"); - const u32 gMonShinyPalette_Hoppip[] = INCBIN_U32("graphics/pokemon/hoppip/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Hoppip[] = INCBIN_U16("graphics/pokemon/hoppip/shiny.gbapal"); #else const u32 gMonFrontPic_Hoppip[] = INCBIN_U32("graphics/pokemon/hoppip/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Hoppip[] = INCBIN_U32("graphics/pokemon/hoppip/normal_gba.gbapal.lz"); + const u16 gMonPalette_Hoppip[] = INCBIN_U16("graphics/pokemon/hoppip/normal_gba.gbapal"); const u32 gMonBackPic_Hoppip[] = INCBIN_U32("graphics/pokemon/hoppip/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Hoppip[] = INCBIN_U32("graphics/pokemon/hoppip/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Hoppip[] = INCBIN_U16("graphics/pokemon/hoppip/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Hoppip[] = INCBIN_U8("graphics/pokemon/hoppip/icon.4bpp"); @@ -7385,21 +7385,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Hoppip[] = INCBIN_U16("graphics/pokemon/hoppip/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Hoppip[] = INCBIN_U16("graphics/pokemon/hoppip/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Skiploom[] = INCBIN_U32("graphics/pokemon/skiploom/anim_front.4bpp.lz"); - const u32 gMonPalette_Skiploom[] = INCBIN_U32("graphics/pokemon/skiploom/normal.gbapal.lz"); + const u16 gMonPalette_Skiploom[] = INCBIN_U16("graphics/pokemon/skiploom/normal.gbapal"); const u32 gMonBackPic_Skiploom[] = INCBIN_U32("graphics/pokemon/skiploom/back.4bpp.lz"); - const u32 gMonShinyPalette_Skiploom[] = INCBIN_U32("graphics/pokemon/skiploom/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Skiploom[] = INCBIN_U16("graphics/pokemon/skiploom/shiny.gbapal"); #else const u32 gMonFrontPic_Skiploom[] = INCBIN_U32("graphics/pokemon/skiploom/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Skiploom[] = INCBIN_U32("graphics/pokemon/skiploom/normal_gba.gbapal.lz"); + const u16 gMonPalette_Skiploom[] = INCBIN_U16("graphics/pokemon/skiploom/normal_gba.gbapal"); const u32 gMonBackPic_Skiploom[] = INCBIN_U32("graphics/pokemon/skiploom/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Skiploom[] = INCBIN_U32("graphics/pokemon/skiploom/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Skiploom[] = INCBIN_U16("graphics/pokemon/skiploom/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Skiploom[] = INCBIN_U8("graphics/pokemon/skiploom/icon.4bpp"); @@ -7412,21 +7412,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Skiploom[] = INCBIN_U16("graphics/pokemon/skiploom/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Skiploom[] = INCBIN_U16("graphics/pokemon/skiploom/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Jumpluff[] = INCBIN_U32("graphics/pokemon/jumpluff/anim_front.4bpp.lz"); - const u32 gMonPalette_Jumpluff[] = INCBIN_U32("graphics/pokemon/jumpluff/normal.gbapal.lz"); + const u16 gMonPalette_Jumpluff[] = INCBIN_U16("graphics/pokemon/jumpluff/normal.gbapal"); const u32 gMonBackPic_Jumpluff[] = INCBIN_U32("graphics/pokemon/jumpluff/back.4bpp.lz"); - const u32 gMonShinyPalette_Jumpluff[] = INCBIN_U32("graphics/pokemon/jumpluff/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Jumpluff[] = INCBIN_U16("graphics/pokemon/jumpluff/shiny.gbapal"); #else const u32 gMonFrontPic_Jumpluff[] = INCBIN_U32("graphics/pokemon/jumpluff/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Jumpluff[] = INCBIN_U32("graphics/pokemon/jumpluff/normal_gba.gbapal.lz"); + const u16 gMonPalette_Jumpluff[] = INCBIN_U16("graphics/pokemon/jumpluff/normal_gba.gbapal"); const u32 gMonBackPic_Jumpluff[] = INCBIN_U32("graphics/pokemon/jumpluff/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Jumpluff[] = INCBIN_U32("graphics/pokemon/jumpluff/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Jumpluff[] = INCBIN_U16("graphics/pokemon/jumpluff/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Jumpluff[] = INCBIN_U8("graphics/pokemon/jumpluff/icon.4bpp"); @@ -7439,8 +7439,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Jumpluff[] = INCBIN_U16("graphics/pokemon/jumpluff/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Jumpluff[] = INCBIN_U16("graphics/pokemon/jumpluff/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_HOPPIP @@ -7448,14 +7448,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_AIPOM #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Aipom[] = INCBIN_U32("graphics/pokemon/aipom/anim_front.4bpp.lz"); - const u32 gMonPalette_Aipom[] = INCBIN_U32("graphics/pokemon/aipom/normal.gbapal.lz"); + const u16 gMonPalette_Aipom[] = INCBIN_U16("graphics/pokemon/aipom/normal.gbapal"); const u32 gMonBackPic_Aipom[] = INCBIN_U32("graphics/pokemon/aipom/back.4bpp.lz"); - const u32 gMonShinyPalette_Aipom[] = INCBIN_U32("graphics/pokemon/aipom/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Aipom[] = INCBIN_U16("graphics/pokemon/aipom/shiny.gbapal"); #else const u32 gMonFrontPic_Aipom[] = INCBIN_U32("graphics/pokemon/aipom/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Aipom[] = INCBIN_U32("graphics/pokemon/aipom/normal_gba.gbapal.lz"); + const u16 gMonPalette_Aipom[] = INCBIN_U16("graphics/pokemon/aipom/normal_gba.gbapal"); const u32 gMonBackPic_Aipom[] = INCBIN_U32("graphics/pokemon/aipom/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Aipom[] = INCBIN_U32("graphics/pokemon/aipom/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Aipom[] = INCBIN_U16("graphics/pokemon/aipom/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Aipom[] = INCBIN_U8("graphics/pokemon/aipom/icon.4bpp"); @@ -7468,8 +7468,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Aipom[] = INCBIN_U16("graphics/pokemon/aipom/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Aipom[] = INCBIN_U16("graphics/pokemon/aipom/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -7483,9 +7483,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_GEN_4_CROSS_EVOS const u32 gMonFrontPic_Ambipom[] = INCBIN_U32("graphics/pokemon/ambipom/anim_front.4bpp.lz"); - const u32 gMonPalette_Ambipom[] = INCBIN_U32("graphics/pokemon/ambipom/normal.gbapal.lz"); + const u16 gMonPalette_Ambipom[] = INCBIN_U16("graphics/pokemon/ambipom/normal.gbapal"); const u32 gMonBackPic_Ambipom[] = INCBIN_U32("graphics/pokemon/ambipom/back.4bpp.lz"); - const u32 gMonShinyPalette_Ambipom[] = INCBIN_U32("graphics/pokemon/ambipom/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Ambipom[] = INCBIN_U16("graphics/pokemon/ambipom/shiny.gbapal"); const u8 gMonIcon_Ambipom[] = INCBIN_U8("graphics/pokemon/ambipom/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Ambipom[] = INCBIN_U8("graphics/pokemon/ambipom/footprint.1bpp"); @@ -7493,8 +7493,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Ambipom[] = INCBIN_U16("graphics/pokemon/ambipom/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Ambipom[] = INCBIN_U16("graphics/pokemon/ambipom/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -7511,14 +7511,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_SUNKERN #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Sunkern[] = INCBIN_U32("graphics/pokemon/sunkern/anim_front.4bpp.lz"); - const u32 gMonPalette_Sunkern[] = INCBIN_U32("graphics/pokemon/sunkern/normal.gbapal.lz"); + const u16 gMonPalette_Sunkern[] = INCBIN_U16("graphics/pokemon/sunkern/normal.gbapal"); const u32 gMonBackPic_Sunkern[] = INCBIN_U32("graphics/pokemon/sunkern/back.4bpp.lz"); - const u32 gMonShinyPalette_Sunkern[] = INCBIN_U32("graphics/pokemon/sunkern/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Sunkern[] = INCBIN_U16("graphics/pokemon/sunkern/shiny.gbapal"); #else const u32 gMonFrontPic_Sunkern[] = INCBIN_U32("graphics/pokemon/sunkern/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Sunkern[] = INCBIN_U32("graphics/pokemon/sunkern/normal_gba.gbapal.lz"); + const u16 gMonPalette_Sunkern[] = INCBIN_U16("graphics/pokemon/sunkern/normal_gba.gbapal"); const u32 gMonBackPic_Sunkern[] = INCBIN_U32("graphics/pokemon/sunkern/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Sunkern[] = INCBIN_U32("graphics/pokemon/sunkern/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Sunkern[] = INCBIN_U16("graphics/pokemon/sunkern/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Sunkern[] = INCBIN_U8("graphics/pokemon/sunkern/icon.4bpp"); @@ -7531,21 +7531,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Sunkern[] = INCBIN_U16("graphics/pokemon/sunkern/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Sunkern[] = INCBIN_U16("graphics/pokemon/sunkern/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Sunflora[] = INCBIN_U32("graphics/pokemon/sunflora/anim_front.4bpp.lz"); - const u32 gMonPalette_Sunflora[] = INCBIN_U32("graphics/pokemon/sunflora/normal.gbapal.lz"); + const u16 gMonPalette_Sunflora[] = INCBIN_U16("graphics/pokemon/sunflora/normal.gbapal"); const u32 gMonBackPic_Sunflora[] = INCBIN_U32("graphics/pokemon/sunflora/back.4bpp.lz"); - const u32 gMonShinyPalette_Sunflora[] = INCBIN_U32("graphics/pokemon/sunflora/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Sunflora[] = INCBIN_U16("graphics/pokemon/sunflora/shiny.gbapal"); #else const u32 gMonFrontPic_Sunflora[] = INCBIN_U32("graphics/pokemon/sunflora/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Sunflora[] = INCBIN_U32("graphics/pokemon/sunflora/normal_gba.gbapal.lz"); + const u16 gMonPalette_Sunflora[] = INCBIN_U16("graphics/pokemon/sunflora/normal_gba.gbapal"); const u32 gMonBackPic_Sunflora[] = INCBIN_U32("graphics/pokemon/sunflora/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Sunflora[] = INCBIN_U32("graphics/pokemon/sunflora/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Sunflora[] = INCBIN_U16("graphics/pokemon/sunflora/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Sunflora[] = INCBIN_U8("graphics/pokemon/sunflora/icon.4bpp"); @@ -7558,8 +7558,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Sunflora[] = INCBIN_U16("graphics/pokemon/sunflora/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Sunflora[] = INCBIN_U16("graphics/pokemon/sunflora/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SUNKERN @@ -7567,14 +7567,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_YANMA #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Yanma[] = INCBIN_U32("graphics/pokemon/yanma/anim_front.4bpp.lz"); - const u32 gMonPalette_Yanma[] = INCBIN_U32("graphics/pokemon/yanma/normal.gbapal.lz"); + const u16 gMonPalette_Yanma[] = INCBIN_U16("graphics/pokemon/yanma/normal.gbapal"); const u32 gMonBackPic_Yanma[] = INCBIN_U32("graphics/pokemon/yanma/back.4bpp.lz"); - const u32 gMonShinyPalette_Yanma[] = INCBIN_U32("graphics/pokemon/yanma/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Yanma[] = INCBIN_U16("graphics/pokemon/yanma/shiny.gbapal"); #else const u32 gMonFrontPic_Yanma[] = INCBIN_U32("graphics/pokemon/yanma/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Yanma[] = INCBIN_U32("graphics/pokemon/yanma/normal_gba.gbapal.lz"); + const u16 gMonPalette_Yanma[] = INCBIN_U16("graphics/pokemon/yanma/normal_gba.gbapal"); const u32 gMonBackPic_Yanma[] = INCBIN_U32("graphics/pokemon/yanma/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Yanma[] = INCBIN_U32("graphics/pokemon/yanma/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Yanma[] = INCBIN_U16("graphics/pokemon/yanma/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Yanma[] = INCBIN_U8("graphics/pokemon/yanma/icon.4bpp"); @@ -7587,16 +7587,16 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Yanma[] = INCBIN_U16("graphics/pokemon/yanma/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Yanma[] = INCBIN_U16("graphics/pokemon/yanma/overworld_shiny.gbapal"); #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"); - const u32 gMonPalette_Yanmega[] = INCBIN_U32("graphics/pokemon/yanmega/normal.gbapal.lz"); + const u16 gMonPalette_Yanmega[] = INCBIN_U16("graphics/pokemon/yanmega/normal.gbapal"); const u32 gMonBackPic_Yanmega[] = INCBIN_U32("graphics/pokemon/yanmega/back.4bpp.lz"); - const u32 gMonShinyPalette_Yanmega[] = INCBIN_U32("graphics/pokemon/yanmega/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Yanmega[] = INCBIN_U16("graphics/pokemon/yanmega/shiny.gbapal"); const u8 gMonIcon_Yanmega[] = INCBIN_U8("graphics/pokemon/yanmega/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Yanmega[] = INCBIN_U8("graphics/pokemon/yanmega/footprint.1bpp"); @@ -7604,8 +7604,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Yanmega[] = INCBIN_U16("graphics/pokemon/yanmega/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Yanmega[] = INCBIN_U16("graphics/pokemon/yanmega/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_4_CROSS_EVOS @@ -7614,14 +7614,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_WOOPER #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Wooper[] = INCBIN_U32("graphics/pokemon/wooper/anim_front.4bpp.lz"); - const u32 gMonPalette_Wooper[] = INCBIN_U32("graphics/pokemon/wooper/normal.gbapal.lz"); + const u16 gMonPalette_Wooper[] = INCBIN_U16("graphics/pokemon/wooper/normal.gbapal"); const u32 gMonBackPic_Wooper[] = INCBIN_U32("graphics/pokemon/wooper/back.4bpp.lz"); - const u32 gMonShinyPalette_Wooper[] = INCBIN_U32("graphics/pokemon/wooper/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Wooper[] = INCBIN_U16("graphics/pokemon/wooper/shiny.gbapal"); #else const u32 gMonFrontPic_Wooper[] = INCBIN_U32("graphics/pokemon/wooper/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Wooper[] = INCBIN_U32("graphics/pokemon/wooper/normal_gba.gbapal.lz"); + const u16 gMonPalette_Wooper[] = INCBIN_U16("graphics/pokemon/wooper/normal_gba.gbapal"); const u32 gMonBackPic_Wooper[] = INCBIN_U32("graphics/pokemon/wooper/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Wooper[] = INCBIN_U32("graphics/pokemon/wooper/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Wooper[] = INCBIN_U16("graphics/pokemon/wooper/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Wooper[] = INCBIN_U8("graphics/pokemon/wooper/icon.4bpp"); @@ -7634,8 +7634,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Wooper[] = INCBIN_U16("graphics/pokemon/wooper/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Wooper[] = INCBIN_U16("graphics/pokemon/wooper/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -7649,14 +7649,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Quagsire[] = INCBIN_U32("graphics/pokemon/quagsire/anim_front.4bpp.lz"); - const u32 gMonPalette_Quagsire[] = INCBIN_U32("graphics/pokemon/quagsire/normal.gbapal.lz"); + const u16 gMonPalette_Quagsire[] = INCBIN_U16("graphics/pokemon/quagsire/normal.gbapal"); const u32 gMonBackPic_Quagsire[] = INCBIN_U32("graphics/pokemon/quagsire/back.4bpp.lz"); - const u32 gMonShinyPalette_Quagsire[] = INCBIN_U32("graphics/pokemon/quagsire/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Quagsire[] = INCBIN_U16("graphics/pokemon/quagsire/shiny.gbapal"); #else const u32 gMonFrontPic_Quagsire[] = INCBIN_U32("graphics/pokemon/quagsire/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Quagsire[] = INCBIN_U32("graphics/pokemon/quagsire/normal_gba.gbapal.lz"); + const u16 gMonPalette_Quagsire[] = INCBIN_U16("graphics/pokemon/quagsire/normal_gba.gbapal"); const u32 gMonBackPic_Quagsire[] = INCBIN_U32("graphics/pokemon/quagsire/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Quagsire[] = INCBIN_U32("graphics/pokemon/quagsire/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Quagsire[] = INCBIN_U16("graphics/pokemon/quagsire/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Quagsire[] = INCBIN_U8("graphics/pokemon/quagsire/icon.4bpp"); @@ -7669,8 +7669,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Quagsire[] = INCBIN_U16("graphics/pokemon/quagsire/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Quagsire[] = INCBIN_U16("graphics/pokemon/quagsire/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -7684,22 +7684,22 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_PALDEAN_FORMS const u32 gMonFrontPic_WooperPaldea[] = INCBIN_U32("graphics/pokemon/wooper/paldea/front.4bpp.lz"); - const u32 gMonPalette_WooperPaldea[] = INCBIN_U32("graphics/pokemon/wooper/paldea/normal.gbapal.lz"); + const u16 gMonPalette_WooperPaldea[] = INCBIN_U16("graphics/pokemon/wooper/paldea/normal.gbapal"); const u32 gMonBackPic_WooperPaldea[] = INCBIN_U32("graphics/pokemon/wooper/paldea/back.4bpp.lz"); - const u32 gMonShinyPalette_WooperPaldea[] = INCBIN_U32("graphics/pokemon/wooper/paldea/shiny.gbapal.lz"); + const u16 gMonShinyPalette_WooperPaldea[] = INCBIN_U16("graphics/pokemon/wooper/paldea/shiny.gbapal"); const u8 gMonIcon_WooperPaldea[] = INCBIN_U8("graphics/pokemon/wooper/paldea/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS const u32 gObjectEventPic_WooperPaldea[] = INCBIN_COMP("graphics/pokemon/wooper/paldea/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - const u32 gOverworldPalette_WooperPaldea[] = INCBIN_U32("graphics/pokemon/wooper/paldea/overworld_normal.gbapal.lz"); - const u32 gShinyOverworldPalette_WooperPaldea[] = INCBIN_U32("graphics/pokemon/wooper/paldea/overworld_shiny.gbapal.lz"); + const u16 gOverworldPalette_WooperPaldea[] = INCBIN_U16("graphics/pokemon/wooper/paldea/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_WooperPaldea[] = INCBIN_U16("graphics/pokemon/wooper/paldea/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Clodsire[] = INCBIN_U32("graphics/pokemon/clodsire/anim_front.4bpp.lz"); - const u32 gMonPalette_Clodsire[] = INCBIN_U32("graphics/pokemon/clodsire/normal.gbapal.lz"); + const u16 gMonPalette_Clodsire[] = INCBIN_U16("graphics/pokemon/clodsire/normal.gbapal"); const u32 gMonBackPic_Clodsire[] = INCBIN_U32("graphics/pokemon/clodsire/back.4bpp.lz"); - const u32 gMonShinyPalette_Clodsire[] = INCBIN_U32("graphics/pokemon/clodsire/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Clodsire[] = INCBIN_U16("graphics/pokemon/clodsire/shiny.gbapal"); const u8 gMonIcon_Clodsire[] = INCBIN_U8("graphics/pokemon/clodsire/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Clodsire[] = INCBIN_U8("graphics/pokemon/clodsire/footprint.1bpp"); @@ -7707,8 +7707,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Clodsire[] = INCBIN_U16("graphics/pokemon/clodsire/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Clodsire[] = INCBIN_U16("graphics/pokemon/clodsire/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_PALDEAN_FORMS @@ -7717,14 +7717,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_MURKROW #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Murkrow[] = INCBIN_U32("graphics/pokemon/murkrow/anim_front.4bpp.lz"); - const u32 gMonPalette_Murkrow[] = INCBIN_U32("graphics/pokemon/murkrow/normal.gbapal.lz"); + const u16 gMonPalette_Murkrow[] = INCBIN_U16("graphics/pokemon/murkrow/normal.gbapal"); const u32 gMonBackPic_Murkrow[] = INCBIN_U32("graphics/pokemon/murkrow/back.4bpp.lz"); - const u32 gMonShinyPalette_Murkrow[] = INCBIN_U32("graphics/pokemon/murkrow/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Murkrow[] = INCBIN_U16("graphics/pokemon/murkrow/shiny.gbapal"); #else const u32 gMonFrontPic_Murkrow[] = INCBIN_U32("graphics/pokemon/murkrow/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Murkrow[] = INCBIN_U32("graphics/pokemon/murkrow/normal_gba.gbapal.lz"); + const u16 gMonPalette_Murkrow[] = INCBIN_U16("graphics/pokemon/murkrow/normal_gba.gbapal"); const u32 gMonBackPic_Murkrow[] = INCBIN_U32("graphics/pokemon/murkrow/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Murkrow[] = INCBIN_U32("graphics/pokemon/murkrow/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Murkrow[] = INCBIN_U16("graphics/pokemon/murkrow/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Murkrow[] = INCBIN_U8("graphics/pokemon/murkrow/icon.4bpp"); @@ -7737,8 +7737,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Murkrow[] = INCBIN_U16("graphics/pokemon/murkrow/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Murkrow[] = INCBIN_U16("graphics/pokemon/murkrow/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -7752,9 +7752,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_GEN_4_CROSS_EVOS const u32 gMonFrontPic_Honchkrow[] = INCBIN_U32("graphics/pokemon/honchkrow/anim_front.4bpp.lz"); - const u32 gMonPalette_Honchkrow[] = INCBIN_U32("graphics/pokemon/honchkrow/normal.gbapal.lz"); + const u16 gMonPalette_Honchkrow[] = INCBIN_U16("graphics/pokemon/honchkrow/normal.gbapal"); const u32 gMonBackPic_Honchkrow[] = INCBIN_U32("graphics/pokemon/honchkrow/back.4bpp.lz"); - const u32 gMonShinyPalette_Honchkrow[] = INCBIN_U32("graphics/pokemon/honchkrow/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Honchkrow[] = INCBIN_U16("graphics/pokemon/honchkrow/shiny.gbapal"); const u8 gMonIcon_Honchkrow[] = INCBIN_U8("graphics/pokemon/honchkrow/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Honchkrow[] = INCBIN_U8("graphics/pokemon/honchkrow/footprint.1bpp"); @@ -7762,8 +7762,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Honchkrow[] = INCBIN_U16("graphics/pokemon/honchkrow/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Honchkrow[] = INCBIN_U16("graphics/pokemon/honchkrow/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_4_CROSS_EVOS @@ -7772,14 +7772,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_MISDREAVUS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Misdreavus[] = INCBIN_U32("graphics/pokemon/misdreavus/anim_front.4bpp.lz"); - const u32 gMonPalette_Misdreavus[] = INCBIN_U32("graphics/pokemon/misdreavus/normal.gbapal.lz"); + const u16 gMonPalette_Misdreavus[] = INCBIN_U16("graphics/pokemon/misdreavus/normal.gbapal"); const u32 gMonBackPic_Misdreavus[] = INCBIN_U32("graphics/pokemon/misdreavus/back.4bpp.lz"); - const u32 gMonShinyPalette_Misdreavus[] = INCBIN_U32("graphics/pokemon/misdreavus/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Misdreavus[] = INCBIN_U16("graphics/pokemon/misdreavus/shiny.gbapal"); #else const u32 gMonFrontPic_Misdreavus[] = INCBIN_U32("graphics/pokemon/misdreavus/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Misdreavus[] = INCBIN_U32("graphics/pokemon/misdreavus/normal_gba.gbapal.lz"); + const u16 gMonPalette_Misdreavus[] = INCBIN_U16("graphics/pokemon/misdreavus/normal_gba.gbapal"); const u32 gMonBackPic_Misdreavus[] = INCBIN_U32("graphics/pokemon/misdreavus/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Misdreavus[] = INCBIN_U32("graphics/pokemon/misdreavus/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Misdreavus[] = INCBIN_U16("graphics/pokemon/misdreavus/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Misdreavus[] = INCBIN_U8("graphics/pokemon/misdreavus/icon.4bpp"); @@ -7792,16 +7792,16 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Misdreavus[] = INCBIN_U16("graphics/pokemon/misdreavus/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Misdreavus[] = INCBIN_U16("graphics/pokemon/misdreavus/overworld_shiny.gbapal"); #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"); - const u32 gMonPalette_Mismagius[] = INCBIN_U32("graphics/pokemon/mismagius/normal.gbapal.lz"); + const u16 gMonPalette_Mismagius[] = INCBIN_U16("graphics/pokemon/mismagius/normal.gbapal"); const u32 gMonBackPic_Mismagius[] = INCBIN_U32("graphics/pokemon/mismagius/back.4bpp.lz"); - const u32 gMonShinyPalette_Mismagius[] = INCBIN_U32("graphics/pokemon/mismagius/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Mismagius[] = INCBIN_U16("graphics/pokemon/mismagius/shiny.gbapal"); const u8 gMonIcon_Mismagius[] = INCBIN_U8("graphics/pokemon/mismagius/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Mismagius[] = INCBIN_U8("graphics/pokemon/mismagius/footprint.1bpp"); @@ -7809,16 +7809,16 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Mismagius[] = INCBIN_U16("graphics/pokemon/mismagius/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Mismagius[] = INCBIN_U16("graphics/pokemon/mismagius/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_4_CROSS_EVOS #endif //P_FAMILY_MISDREAVUS #if P_FAMILY_UNOWN - const u32 gMonPalette_Unown[] = INCBIN_U32("graphics/pokemon/unown/normal.gbapal.lz"); - const u32 gMonShinyPalette_Unown[] = INCBIN_U32("graphics/pokemon/unown/shiny.gbapal.lz"); + const u16 gMonPalette_Unown[] = INCBIN_U16("graphics/pokemon/unown/normal.gbapal"); + const u16 gMonShinyPalette_Unown[] = INCBIN_U16("graphics/pokemon/unown/shiny.gbapal"); #if P_FOOTPRINTS const u8 gMonFootprint_Unown[] = INCBIN_U8("graphics/pokemon/unown/footprint.1bpp"); #endif //P_FOOTPRINTS @@ -7965,8 +7965,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gObjectEventPic_UnownExclamation[] = INCBIN_COMP("graphics/pokemon/unown/exclamation/overworld.4bpp"); const u32 gObjectEventPic_UnownQuestion[] = INCBIN_COMP("graphics/pokemon/unown/question/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"); + const u16 gOverworldPalette_Unown[] = INCBIN_U16("graphics/pokemon/unown/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Unown[] = INCBIN_U16("graphics/pokemon/unown/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_UNOWN @@ -7975,14 +7975,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_GEN_3_CROSS_EVOS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Wynaut[] = INCBIN_U32("graphics/pokemon/wynaut/anim_front.4bpp.lz"); - const u32 gMonPalette_Wynaut[] = INCBIN_U32("graphics/pokemon/wynaut/normal.gbapal.lz"); + const u16 gMonPalette_Wynaut[] = INCBIN_U16("graphics/pokemon/wynaut/normal.gbapal"); const u32 gMonBackPic_Wynaut[] = INCBIN_U32("graphics/pokemon/wynaut/back.4bpp.lz"); - const u32 gMonShinyPalette_Wynaut[] = INCBIN_U32("graphics/pokemon/wynaut/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Wynaut[] = INCBIN_U16("graphics/pokemon/wynaut/shiny.gbapal"); #else const u32 gMonFrontPic_Wynaut[] = INCBIN_U32("graphics/pokemon/wynaut/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Wynaut[] = INCBIN_U32("graphics/pokemon/wynaut/normal_gba.gbapal.lz"); + const u16 gMonPalette_Wynaut[] = INCBIN_U16("graphics/pokemon/wynaut/normal_gba.gbapal"); const u32 gMonBackPic_Wynaut[] = INCBIN_U32("graphics/pokemon/wynaut/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Wynaut[] = INCBIN_U32("graphics/pokemon/wynaut/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Wynaut[] = INCBIN_U16("graphics/pokemon/wynaut/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Wynaut[] = INCBIN_U8("graphics/pokemon/wynaut/icon.4bpp"); @@ -7995,22 +7995,22 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Wynaut[] = INCBIN_U16("graphics/pokemon/wynaut/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Wynaut[] = INCBIN_U16("graphics/pokemon/wynaut/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_3_CROSS_EVOS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Wobbuffet[] = INCBIN_U32("graphics/pokemon/wobbuffet/anim_front.4bpp.lz"); - const u32 gMonPalette_Wobbuffet[] = INCBIN_U32("graphics/pokemon/wobbuffet/normal.gbapal.lz"); + const u16 gMonPalette_Wobbuffet[] = INCBIN_U16("graphics/pokemon/wobbuffet/normal.gbapal"); const u32 gMonBackPic_Wobbuffet[] = INCBIN_U32("graphics/pokemon/wobbuffet/back.4bpp.lz"); - const u32 gMonShinyPalette_Wobbuffet[] = INCBIN_U32("graphics/pokemon/wobbuffet/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Wobbuffet[] = INCBIN_U16("graphics/pokemon/wobbuffet/shiny.gbapal"); #else const u32 gMonFrontPic_Wobbuffet[] = INCBIN_U32("graphics/pokemon/wobbuffet/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Wobbuffet[] = INCBIN_U32("graphics/pokemon/wobbuffet/normal_gba.gbapal.lz"); + const u16 gMonPalette_Wobbuffet[] = INCBIN_U16("graphics/pokemon/wobbuffet/normal_gba.gbapal"); const u32 gMonBackPic_Wobbuffet[] = INCBIN_U32("graphics/pokemon/wobbuffet/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Wobbuffet[] = INCBIN_U32("graphics/pokemon/wobbuffet/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Wobbuffet[] = INCBIN_U16("graphics/pokemon/wobbuffet/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Wobbuffet[] = INCBIN_U8("graphics/pokemon/wobbuffet/icon.4bpp"); @@ -8023,8 +8023,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Wobbuffet[] = INCBIN_U16("graphics/pokemon/wobbuffet/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Wobbuffet[] = INCBIN_U16("graphics/pokemon/wobbuffet/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -8043,14 +8043,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_GIRAFARIG #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Girafarig[] = INCBIN_U32("graphics/pokemon/girafarig/anim_front.4bpp.lz"); - const u32 gMonPalette_Girafarig[] = INCBIN_U32("graphics/pokemon/girafarig/normal.gbapal.lz"); + const u16 gMonPalette_Girafarig[] = INCBIN_U16("graphics/pokemon/girafarig/normal.gbapal"); const u32 gMonBackPic_Girafarig[] = INCBIN_U32("graphics/pokemon/girafarig/back.4bpp.lz"); - const u32 gMonShinyPalette_Girafarig[] = INCBIN_U32("graphics/pokemon/girafarig/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Girafarig[] = INCBIN_U16("graphics/pokemon/girafarig/shiny.gbapal"); #else const u32 gMonFrontPic_Girafarig[] = INCBIN_U32("graphics/pokemon/girafarig/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Girafarig[] = INCBIN_U32("graphics/pokemon/girafarig/normal_gba.gbapal.lz"); + const u16 gMonPalette_Girafarig[] = INCBIN_U16("graphics/pokemon/girafarig/normal_gba.gbapal"); const u32 gMonBackPic_Girafarig[] = INCBIN_U32("graphics/pokemon/girafarig/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Girafarig[] = INCBIN_U32("graphics/pokemon/girafarig/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Girafarig[] = INCBIN_U16("graphics/pokemon/girafarig/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Girafarig[] = INCBIN_U8("graphics/pokemon/girafarig/icon.4bpp"); @@ -8063,8 +8063,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Girafarig[] = INCBIN_U16("graphics/pokemon/girafarig/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Girafarig[] = INCBIN_U16("graphics/pokemon/girafarig/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -8078,9 +8078,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_GEN_9_CROSS_EVOS const u32 gMonFrontPic_Farigiraf[] = INCBIN_U32("graphics/pokemon/farigiraf/front.4bpp.lz"); - const u32 gMonPalette_Farigiraf[] = INCBIN_U32("graphics/pokemon/farigiraf/normal.gbapal.lz"); + const u16 gMonPalette_Farigiraf[] = INCBIN_U16("graphics/pokemon/farigiraf/normal.gbapal"); const u32 gMonBackPic_Farigiraf[] = INCBIN_U32("graphics/pokemon/farigiraf/back.4bpp.lz"); - const u32 gMonShinyPalette_Farigiraf[] = INCBIN_U32("graphics/pokemon/farigiraf/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Farigiraf[] = INCBIN_U16("graphics/pokemon/farigiraf/shiny.gbapal"); const u8 gMonIcon_Farigiraf[] = INCBIN_U8("graphics/pokemon/farigiraf/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Farigiraf[] = INCBIN_U8("graphics/pokemon/farigiraf/footprint.1bpp"); @@ -8088,8 +8088,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Farigiraf[] = INCBIN_U16("graphics/pokemon/farigiraf/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Farigiraf[] = INCBIN_U16("graphics/pokemon/farigiraf/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_9_CROSS_EVOS @@ -8098,14 +8098,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_PINECO #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Pineco[] = INCBIN_U32("graphics/pokemon/pineco/anim_front.4bpp.lz"); - const u32 gMonPalette_Pineco[] = INCBIN_U32("graphics/pokemon/pineco/normal.gbapal.lz"); + const u16 gMonPalette_Pineco[] = INCBIN_U16("graphics/pokemon/pineco/normal.gbapal"); const u32 gMonBackPic_Pineco[] = INCBIN_U32("graphics/pokemon/pineco/back.4bpp.lz"); - const u32 gMonShinyPalette_Pineco[] = INCBIN_U32("graphics/pokemon/pineco/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Pineco[] = INCBIN_U16("graphics/pokemon/pineco/shiny.gbapal"); #else const u32 gMonFrontPic_Pineco[] = INCBIN_U32("graphics/pokemon/pineco/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Pineco[] = INCBIN_U32("graphics/pokemon/pineco/normal_gba.gbapal.lz"); + const u16 gMonPalette_Pineco[] = INCBIN_U16("graphics/pokemon/pineco/normal_gba.gbapal"); const u32 gMonBackPic_Pineco[] = INCBIN_U32("graphics/pokemon/pineco/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Pineco[] = INCBIN_U32("graphics/pokemon/pineco/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Pineco[] = INCBIN_U16("graphics/pokemon/pineco/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Pineco[] = INCBIN_U8("graphics/pokemon/pineco/icon.4bpp"); @@ -8118,21 +8118,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Pineco[] = INCBIN_U16("graphics/pokemon/pineco/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Pineco[] = INCBIN_U16("graphics/pokemon/pineco/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Forretress[] = INCBIN_U32("graphics/pokemon/forretress/anim_front.4bpp.lz"); - const u32 gMonPalette_Forretress[] = INCBIN_U32("graphics/pokemon/forretress/normal.gbapal.lz"); + const u16 gMonPalette_Forretress[] = INCBIN_U16("graphics/pokemon/forretress/normal.gbapal"); const u32 gMonBackPic_Forretress[] = INCBIN_U32("graphics/pokemon/forretress/back.4bpp.lz"); - const u32 gMonShinyPalette_Forretress[] = INCBIN_U32("graphics/pokemon/forretress/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Forretress[] = INCBIN_U16("graphics/pokemon/forretress/shiny.gbapal"); #else const u32 gMonFrontPic_Forretress[] = INCBIN_U32("graphics/pokemon/forretress/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Forretress[] = INCBIN_U32("graphics/pokemon/forretress/normal_gba.gbapal.lz"); + const u16 gMonPalette_Forretress[] = INCBIN_U16("graphics/pokemon/forretress/normal_gba.gbapal"); const u32 gMonBackPic_Forretress[] = INCBIN_U32("graphics/pokemon/forretress/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Forretress[] = INCBIN_U32("graphics/pokemon/forretress/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Forretress[] = INCBIN_U16("graphics/pokemon/forretress/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Forretress[] = INCBIN_U8("graphics/pokemon/forretress/icon.4bpp"); @@ -8145,8 +8145,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Forretress[] = INCBIN_U16("graphics/pokemon/forretress/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Forretress[] = INCBIN_U16("graphics/pokemon/forretress/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_PINECO @@ -8154,14 +8154,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_DUNSPARCE #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Dunsparce[] = INCBIN_U32("graphics/pokemon/dunsparce/anim_front.4bpp.lz"); - const u32 gMonPalette_Dunsparce[] = INCBIN_U32("graphics/pokemon/dunsparce/normal.gbapal.lz"); + const u16 gMonPalette_Dunsparce[] = INCBIN_U16("graphics/pokemon/dunsparce/normal.gbapal"); const u32 gMonBackPic_Dunsparce[] = INCBIN_U32("graphics/pokemon/dunsparce/back.4bpp.lz"); - const u32 gMonShinyPalette_Dunsparce[] = INCBIN_U32("graphics/pokemon/dunsparce/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Dunsparce[] = INCBIN_U16("graphics/pokemon/dunsparce/shiny.gbapal"); #else const u32 gMonFrontPic_Dunsparce[] = INCBIN_U32("graphics/pokemon/dunsparce/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Dunsparce[] = INCBIN_U32("graphics/pokemon/dunsparce/normal_gba.gbapal.lz"); + const u16 gMonPalette_Dunsparce[] = INCBIN_U16("graphics/pokemon/dunsparce/normal_gba.gbapal"); const u32 gMonBackPic_Dunsparce[] = INCBIN_U32("graphics/pokemon/dunsparce/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Dunsparce[] = INCBIN_U32("graphics/pokemon/dunsparce/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Dunsparce[] = INCBIN_U16("graphics/pokemon/dunsparce/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Dunsparce[] = INCBIN_U8("graphics/pokemon/dunsparce/icon.4bpp"); @@ -8174,14 +8174,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Dunsparce[] = INCBIN_U16("graphics/pokemon/dunsparce/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Dunsparce[] = INCBIN_U16("graphics/pokemon/dunsparce/overworld_shiny.gbapal"); #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"); - const u32 gMonShinyPalette_Dudunsparce[] = INCBIN_U32("graphics/pokemon/dudunsparce/shiny.gbapal.lz"); + const u16 gMonPalette_Dudunsparce[] = INCBIN_U16("graphics/pokemon/dudunsparce/normal.gbapal"); + const u16 gMonShinyPalette_Dudunsparce[] = INCBIN_U16("graphics/pokemon/dudunsparce/shiny.gbapal"); const u8 gMonIcon_Dudunsparce[] = INCBIN_U8("graphics/pokemon/dudunsparce/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Dudunsparce[] = INCBIN_U8("graphics/pokemon/dudunsparce/footprint.1bpp"); @@ -8190,10 +8190,10 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gObjectEventPic_DudunsparceTwoSegment[] = INCBIN_COMP("graphics/pokemon/dudunsparce/overworld.4bpp"); const u32 gObjectEventPic_DudunsparceThreeSegment[] = INCBIN_COMP("graphics/pokemon/dudunsparce/three_segment/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"); - const u32 gOverworldPalette_DudunsparceThreeSegment[] = INCBIN_U32("graphics/pokemon/dudunsparce/three_segment/overworld_normal.gbapal.lz"); - const u32 gShinyOverworldPalette_DudunsparceThreeSegment[] = INCBIN_U32("graphics/pokemon/dudunsparce/three_segment/overworld_shiny.gbapal.lz"); + const u16 gOverworldPalette_Dudunsparce[] = INCBIN_U16("graphics/pokemon/dudunsparce/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Dudunsparce[] = INCBIN_U16("graphics/pokemon/dudunsparce/overworld_shiny.gbapal"); + const u16 gOverworldPalette_DudunsparceThreeSegment[] = INCBIN_U16("graphics/pokemon/dudunsparce/three_segment/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_DudunsparceThreeSegment[] = INCBIN_U16("graphics/pokemon/dudunsparce/three_segment/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -8208,14 +8208,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_GLIGAR #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Gligar[] = INCBIN_U32("graphics/pokemon/gligar/anim_front.4bpp.lz"); - const u32 gMonPalette_Gligar[] = INCBIN_U32("graphics/pokemon/gligar/normal.gbapal.lz"); + const u16 gMonPalette_Gligar[] = INCBIN_U16("graphics/pokemon/gligar/normal.gbapal"); const u32 gMonBackPic_Gligar[] = INCBIN_U32("graphics/pokemon/gligar/back.4bpp.lz"); - const u32 gMonShinyPalette_Gligar[] = INCBIN_U32("graphics/pokemon/gligar/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Gligar[] = INCBIN_U16("graphics/pokemon/gligar/shiny.gbapal"); #else const u32 gMonFrontPic_Gligar[] = INCBIN_U32("graphics/pokemon/gligar/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Gligar[] = INCBIN_U32("graphics/pokemon/gligar/normal_gba.gbapal.lz"); + const u16 gMonPalette_Gligar[] = INCBIN_U16("graphics/pokemon/gligar/normal_gba.gbapal"); const u32 gMonBackPic_Gligar[] = INCBIN_U32("graphics/pokemon/gligar/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Gligar[] = INCBIN_U32("graphics/pokemon/gligar/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Gligar[] = INCBIN_U16("graphics/pokemon/gligar/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Gligar[] = INCBIN_U8("graphics/pokemon/gligar/icon.4bpp"); @@ -8228,8 +8228,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Gligar[] = INCBIN_U16("graphics/pokemon/gligar/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Gligar[] = INCBIN_U16("graphics/pokemon/gligar/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -8243,9 +8243,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_GEN_4_CROSS_EVOS const u32 gMonFrontPic_Gliscor[] = INCBIN_U32("graphics/pokemon/gliscor/anim_front.4bpp.lz"); - const u32 gMonPalette_Gliscor[] = INCBIN_U32("graphics/pokemon/gliscor/normal.gbapal.lz"); + const u16 gMonPalette_Gliscor[] = INCBIN_U16("graphics/pokemon/gliscor/normal.gbapal"); const u32 gMonBackPic_Gliscor[] = INCBIN_U32("graphics/pokemon/gliscor/back.4bpp.lz"); - const u32 gMonShinyPalette_Gliscor[] = INCBIN_U32("graphics/pokemon/gliscor/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Gliscor[] = INCBIN_U16("graphics/pokemon/gliscor/shiny.gbapal"); const u8 gMonIcon_Gliscor[] = INCBIN_U8("graphics/pokemon/gliscor/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Gliscor[] = INCBIN_U8("graphics/pokemon/gliscor/footprint.1bpp"); @@ -8253,8 +8253,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Gliscor[] = INCBIN_U16("graphics/pokemon/gliscor/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Gliscor[] = INCBIN_U16("graphics/pokemon/gliscor/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_4_CROSS_EVOS @@ -8263,14 +8263,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_SNUBBULL #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Snubbull[] = INCBIN_U32("graphics/pokemon/snubbull/anim_front.4bpp.lz"); - const u32 gMonPalette_Snubbull[] = INCBIN_U32("graphics/pokemon/snubbull/normal.gbapal.lz"); + const u16 gMonPalette_Snubbull[] = INCBIN_U16("graphics/pokemon/snubbull/normal.gbapal"); const u32 gMonBackPic_Snubbull[] = INCBIN_U32("graphics/pokemon/snubbull/back.4bpp.lz"); - const u32 gMonShinyPalette_Snubbull[] = INCBIN_U32("graphics/pokemon/snubbull/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Snubbull[] = INCBIN_U16("graphics/pokemon/snubbull/shiny.gbapal"); #else const u32 gMonFrontPic_Snubbull[] = INCBIN_U32("graphics/pokemon/snubbull/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Snubbull[] = INCBIN_U32("graphics/pokemon/snubbull/normal_gba.gbapal.lz"); + const u16 gMonPalette_Snubbull[] = INCBIN_U16("graphics/pokemon/snubbull/normal_gba.gbapal"); const u32 gMonBackPic_Snubbull[] = INCBIN_U32("graphics/pokemon/snubbull/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Snubbull[] = INCBIN_U32("graphics/pokemon/snubbull/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Snubbull[] = INCBIN_U16("graphics/pokemon/snubbull/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Snubbull[] = INCBIN_U8("graphics/pokemon/snubbull/icon.4bpp"); @@ -8283,21 +8283,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Snubbull[] = INCBIN_U16("graphics/pokemon/snubbull/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Snubbull[] = INCBIN_U16("graphics/pokemon/snubbull/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Granbull[] = INCBIN_U32("graphics/pokemon/granbull/anim_front.4bpp.lz"); - const u32 gMonPalette_Granbull[] = INCBIN_U32("graphics/pokemon/granbull/normal.gbapal.lz"); + const u16 gMonPalette_Granbull[] = INCBIN_U16("graphics/pokemon/granbull/normal.gbapal"); const u32 gMonBackPic_Granbull[] = INCBIN_U32("graphics/pokemon/granbull/back.4bpp.lz"); - const u32 gMonShinyPalette_Granbull[] = INCBIN_U32("graphics/pokemon/granbull/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Granbull[] = INCBIN_U16("graphics/pokemon/granbull/shiny.gbapal"); #else const u32 gMonFrontPic_Granbull[] = INCBIN_U32("graphics/pokemon/granbull/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Granbull[] = INCBIN_U32("graphics/pokemon/granbull/normal_gba.gbapal.lz"); + const u16 gMonPalette_Granbull[] = INCBIN_U16("graphics/pokemon/granbull/normal_gba.gbapal"); const u32 gMonBackPic_Granbull[] = INCBIN_U32("graphics/pokemon/granbull/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Granbull[] = INCBIN_U32("graphics/pokemon/granbull/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Granbull[] = INCBIN_U16("graphics/pokemon/granbull/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Granbull[] = INCBIN_U8("graphics/pokemon/granbull/icon.4bpp"); @@ -8310,8 +8310,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Granbull[] = INCBIN_U16("graphics/pokemon/granbull/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Granbull[] = INCBIN_U16("graphics/pokemon/granbull/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SNUBBULL @@ -8319,14 +8319,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_QWILFISH #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Qwilfish[] = INCBIN_U32("graphics/pokemon/qwilfish/anim_front.4bpp.lz"); - const u32 gMonPalette_Qwilfish[] = INCBIN_U32("graphics/pokemon/qwilfish/normal.gbapal.lz"); + const u16 gMonPalette_Qwilfish[] = INCBIN_U16("graphics/pokemon/qwilfish/normal.gbapal"); const u32 gMonBackPic_Qwilfish[] = INCBIN_U32("graphics/pokemon/qwilfish/back.4bpp.lz"); - const u32 gMonShinyPalette_Qwilfish[] = INCBIN_U32("graphics/pokemon/qwilfish/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Qwilfish[] = INCBIN_U16("graphics/pokemon/qwilfish/shiny.gbapal"); #else const u32 gMonFrontPic_Qwilfish[] = INCBIN_U32("graphics/pokemon/qwilfish/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Qwilfish[] = INCBIN_U32("graphics/pokemon/qwilfish/normal_gba.gbapal.lz"); + const u16 gMonPalette_Qwilfish[] = INCBIN_U16("graphics/pokemon/qwilfish/normal_gba.gbapal"); const u32 gMonBackPic_Qwilfish[] = INCBIN_U32("graphics/pokemon/qwilfish/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Qwilfish[] = INCBIN_U32("graphics/pokemon/qwilfish/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Qwilfish[] = INCBIN_U16("graphics/pokemon/qwilfish/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Qwilfish[] = INCBIN_U8("graphics/pokemon/qwilfish/icon.4bpp"); @@ -8339,29 +8339,29 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Qwilfish[] = INCBIN_U16("graphics/pokemon/qwilfish/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Qwilfish[] = INCBIN_U16("graphics/pokemon/qwilfish/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if P_HISUIAN_FORMS const u32 gMonFrontPic_QwilfishHisui[] = INCBIN_U32("graphics/pokemon/qwilfish/hisui/front.4bpp.lz"); - const u32 gMonPalette_QwilfishHisui[] = INCBIN_U32("graphics/pokemon/qwilfish/hisui/normal.gbapal.lz"); + const u16 gMonPalette_QwilfishHisui[] = INCBIN_U16("graphics/pokemon/qwilfish/hisui/normal.gbapal"); const u32 gMonBackPic_QwilfishHisui[] = INCBIN_U32("graphics/pokemon/qwilfish/hisui/back.4bpp.lz"); - const u32 gMonShinyPalette_QwilfishHisui[] = INCBIN_U32("graphics/pokemon/qwilfish/hisui/shiny.gbapal.lz"); + const u16 gMonShinyPalette_QwilfishHisui[] = INCBIN_U16("graphics/pokemon/qwilfish/hisui/shiny.gbapal"); const u8 gMonIcon_QwilfishHisui[] = INCBIN_U8("graphics/pokemon/qwilfish/hisui/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS const u32 gObjectEventPic_QwilfishHisui[] = INCBIN_COMP("graphics/pokemon/qwilfish/hisui/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - const u32 gOverworldPalette_QwilfishHisui[] = INCBIN_U32("graphics/pokemon/qwilfish/hisui/overworld_normal.gbapal.lz"); - const u32 gShinyOverworldPalette_QwilfishHisui[] = INCBIN_U32("graphics/pokemon/qwilfish/hisui/overworld_shiny.gbapal.lz"); + const u16 gOverworldPalette_QwilfishHisui[] = INCBIN_U16("graphics/pokemon/qwilfish/hisui/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_QwilfishHisui[] = INCBIN_U16("graphics/pokemon/qwilfish/hisui/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Overqwil[] = INCBIN_U16("graphics/pokemon/overqwil/normal.gbapal"); const u32 gMonBackPic_Overqwil[] = INCBIN_U32("graphics/pokemon/overqwil/back.4bpp.lz"); - const u32 gMonShinyPalette_Overqwil[] = INCBIN_U32("graphics/pokemon/overqwil/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Overqwil[] = INCBIN_U16("graphics/pokemon/overqwil/shiny.gbapal"); const u8 gMonIcon_Overqwil[] = INCBIN_U8("graphics/pokemon/overqwil/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Overqwil[] = INCBIN_U8("graphics/pokemon/overqwil/footprint.1bpp"); @@ -8369,8 +8369,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Overqwil[] = INCBIN_U16("graphics/pokemon/overqwil/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Overqwil[] = INCBIN_U16("graphics/pokemon/overqwil/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_HISUIAN_FORMS @@ -8379,14 +8379,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_SHUCKLE #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Shuckle[] = INCBIN_U32("graphics/pokemon/shuckle/anim_front.4bpp.lz"); - const u32 gMonPalette_Shuckle[] = INCBIN_U32("graphics/pokemon/shuckle/normal.gbapal.lz"); + const u16 gMonPalette_Shuckle[] = INCBIN_U16("graphics/pokemon/shuckle/normal.gbapal"); const u32 gMonBackPic_Shuckle[] = INCBIN_U32("graphics/pokemon/shuckle/back.4bpp.lz"); - const u32 gMonShinyPalette_Shuckle[] = INCBIN_U32("graphics/pokemon/shuckle/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Shuckle[] = INCBIN_U16("graphics/pokemon/shuckle/shiny.gbapal"); #else const u32 gMonFrontPic_Shuckle[] = INCBIN_U32("graphics/pokemon/shuckle/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Shuckle[] = INCBIN_U32("graphics/pokemon/shuckle/normal_gba.gbapal.lz"); + const u16 gMonPalette_Shuckle[] = INCBIN_U16("graphics/pokemon/shuckle/normal_gba.gbapal"); const u32 gMonBackPic_Shuckle[] = INCBIN_U32("graphics/pokemon/shuckle/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Shuckle[] = INCBIN_U32("graphics/pokemon/shuckle/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Shuckle[] = INCBIN_U16("graphics/pokemon/shuckle/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Shuckle[] = INCBIN_U8("graphics/pokemon/shuckle/icon.4bpp"); @@ -8399,8 +8399,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Shuckle[] = INCBIN_U16("graphics/pokemon/shuckle/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Shuckle[] = INCBIN_U16("graphics/pokemon/shuckle/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SHUCKLE @@ -8408,14 +8408,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_HERACROSS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Heracross[] = INCBIN_U32("graphics/pokemon/heracross/anim_front.4bpp.lz"); - const u32 gMonPalette_Heracross[] = INCBIN_U32("graphics/pokemon/heracross/normal.gbapal.lz"); + const u16 gMonPalette_Heracross[] = INCBIN_U16("graphics/pokemon/heracross/normal.gbapal"); const u32 gMonBackPic_Heracross[] = INCBIN_U32("graphics/pokemon/heracross/back.4bpp.lz"); - const u32 gMonShinyPalette_Heracross[] = INCBIN_U32("graphics/pokemon/heracross/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Heracross[] = INCBIN_U16("graphics/pokemon/heracross/shiny.gbapal"); #else const u32 gMonFrontPic_Heracross[] = INCBIN_U32("graphics/pokemon/heracross/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Heracross[] = INCBIN_U32("graphics/pokemon/heracross/normal_gba.gbapal.lz"); + const u16 gMonPalette_Heracross[] = INCBIN_U16("graphics/pokemon/heracross/normal_gba.gbapal"); const u32 gMonBackPic_Heracross[] = INCBIN_U32("graphics/pokemon/heracross/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Heracross[] = INCBIN_U32("graphics/pokemon/heracross/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Heracross[] = INCBIN_U16("graphics/pokemon/heracross/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Heracross[] = INCBIN_U8("graphics/pokemon/heracross/icon.4bpp"); @@ -8428,8 +8428,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Heracross[] = INCBIN_U16("graphics/pokemon/heracross/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Heracross[] = INCBIN_U16("graphics/pokemon/heracross/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -8443,15 +8443,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_MEGA_EVOLUTIONS const u32 gMonFrontPic_HeracrossMega[] = INCBIN_U32("graphics/pokemon/heracross/mega/front.4bpp.lz"); - const u32 gMonPalette_HeracrossMega[] = INCBIN_U32("graphics/pokemon/heracross/mega/normal.gbapal.lz"); + const u16 gMonPalette_HeracrossMega[] = INCBIN_U16("graphics/pokemon/heracross/mega/normal.gbapal"); 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 u16 gMonShinyPalette_HeracrossMega[] = INCBIN_U16("graphics/pokemon/heracross/mega/shiny.gbapal"); const u8 gMonIcon_HeracrossMega[] = INCBIN_U8("graphics/pokemon/heracross/mega/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS 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"); + const u16 gOverworldPalette_HeracrossMega[] = INCBIN_U16("graphics/pokemon/heracross/mega/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_HeracrossMega[] = INCBIN_U16("graphics/pokemon/heracross/mega/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS #endif //P_MEGA_EVOLUTIONS @@ -8460,14 +8460,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_SNEASEL #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Sneasel[] = INCBIN_U32("graphics/pokemon/sneasel/anim_front.4bpp.lz"); - const u32 gMonPalette_Sneasel[] = INCBIN_U32("graphics/pokemon/sneasel/normal.gbapal.lz"); + const u16 gMonPalette_Sneasel[] = INCBIN_U16("graphics/pokemon/sneasel/normal.gbapal"); const u32 gMonBackPic_Sneasel[] = INCBIN_U32("graphics/pokemon/sneasel/back.4bpp.lz"); - const u32 gMonShinyPalette_Sneasel[] = INCBIN_U32("graphics/pokemon/sneasel/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Sneasel[] = INCBIN_U16("graphics/pokemon/sneasel/shiny.gbapal"); #else const u32 gMonFrontPic_Sneasel[] = INCBIN_U32("graphics/pokemon/sneasel/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Sneasel[] = INCBIN_U32("graphics/pokemon/sneasel/normal_gba.gbapal.lz"); + const u16 gMonPalette_Sneasel[] = INCBIN_U16("graphics/pokemon/sneasel/normal_gba.gbapal"); const u32 gMonBackPic_Sneasel[] = INCBIN_U32("graphics/pokemon/sneasel/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Sneasel[] = INCBIN_U32("graphics/pokemon/sneasel/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Sneasel[] = INCBIN_U16("graphics/pokemon/sneasel/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Sneasel[] = INCBIN_U8("graphics/pokemon/sneasel/icon.4bpp"); @@ -8480,8 +8480,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Sneasel[] = INCBIN_U16("graphics/pokemon/sneasel/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Sneasel[] = INCBIN_U16("graphics/pokemon/sneasel/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -8495,9 +8495,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_GEN_4_CROSS_EVOS const u32 gMonFrontPic_Weavile[] = INCBIN_U32("graphics/pokemon/weavile/anim_front.4bpp.lz"); - const u32 gMonPalette_Weavile[] = INCBIN_U32("graphics/pokemon/weavile/normal.gbapal.lz"); + const u16 gMonPalette_Weavile[] = INCBIN_U16("graphics/pokemon/weavile/normal.gbapal"); const u32 gMonBackPic_Weavile[] = INCBIN_U32("graphics/pokemon/weavile/back.4bpp.lz"); - const u32 gMonShinyPalette_Weavile[] = INCBIN_U32("graphics/pokemon/weavile/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Weavile[] = INCBIN_U16("graphics/pokemon/weavile/shiny.gbapal"); const u8 gMonIcon_Weavile[] = INCBIN_U8("graphics/pokemon/weavile/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Weavile[] = INCBIN_U8("graphics/pokemon/weavile/footprint.1bpp"); @@ -8505,8 +8505,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Weavile[] = INCBIN_U16("graphics/pokemon/weavile/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Weavile[] = INCBIN_U16("graphics/pokemon/weavile/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -8521,15 +8521,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_HISUIAN_FORMS const u32 gMonFrontPic_SneaselHisui[] = INCBIN_U32("graphics/pokemon/sneasel/hisui/front.4bpp.lz"); - const u32 gMonPalette_SneaselHisui[] = INCBIN_U32("graphics/pokemon/sneasel/hisui/normal.gbapal.lz"); + const u16 gMonPalette_SneaselHisui[] = INCBIN_U16("graphics/pokemon/sneasel/hisui/normal.gbapal"); const u32 gMonBackPic_SneaselHisui[] = INCBIN_U32("graphics/pokemon/sneasel/hisui/back.4bpp.lz"); - const u32 gMonShinyPalette_SneaselHisui[] = INCBIN_U32("graphics/pokemon/sneasel/hisui/shiny.gbapal.lz"); + const u16 gMonShinyPalette_SneaselHisui[] = INCBIN_U16("graphics/pokemon/sneasel/hisui/shiny.gbapal"); const u8 gMonIcon_SneaselHisui[] = INCBIN_U8("graphics/pokemon/sneasel/hisui/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS const u32 gObjectEventPic_SneaselHisui[] = INCBIN_COMP("graphics/pokemon/sneasel/hisui/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - const u32 gOverworldPalette_SneaselHisui[] = INCBIN_U32("graphics/pokemon/sneasel/hisui/overworld_normal.gbapal.lz"); - const u32 gShinyOverworldPalette_SneaselHisui[] = INCBIN_U32("graphics/pokemon/sneasel/hisui/overworld_shiny.gbapal.lz"); + const u16 gOverworldPalette_SneaselHisui[] = INCBIN_U16("graphics/pokemon/sneasel/hisui/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_SneaselHisui[] = INCBIN_U16("graphics/pokemon/sneasel/hisui/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -8542,9 +8542,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #endif //P_GENDER_DIFFERENCES const u32 gMonFrontPic_Sneasler[] = INCBIN_U32("graphics/pokemon/sneasler/front.4bpp.lz"); - const u32 gMonPalette_Sneasler[] = INCBIN_U32("graphics/pokemon/sneasler/normal.gbapal.lz"); + const u16 gMonPalette_Sneasler[] = INCBIN_U16("graphics/pokemon/sneasler/normal.gbapal"); const u32 gMonBackPic_Sneasler[] = INCBIN_U32("graphics/pokemon/sneasler/back.4bpp.lz"); - const u32 gMonShinyPalette_Sneasler[] = INCBIN_U32("graphics/pokemon/sneasler/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Sneasler[] = INCBIN_U16("graphics/pokemon/sneasler/shiny.gbapal"); const u8 gMonIcon_Sneasler[] = INCBIN_U8("graphics/pokemon/sneasler/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Sneasler[] = INCBIN_U8("graphics/pokemon/sneasler/footprint.1bpp"); @@ -8552,8 +8552,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Sneasler[] = INCBIN_U16("graphics/pokemon/sneasler/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Sneasler[] = INCBIN_U16("graphics/pokemon/sneasler/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_HISUIAN_FORMS @@ -8562,14 +8562,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_TEDDIURSA #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Teddiursa[] = INCBIN_U32("graphics/pokemon/teddiursa/anim_front.4bpp.lz"); - const u32 gMonPalette_Teddiursa[] = INCBIN_U32("graphics/pokemon/teddiursa/normal.gbapal.lz"); + const u16 gMonPalette_Teddiursa[] = INCBIN_U16("graphics/pokemon/teddiursa/normal.gbapal"); const u32 gMonBackPic_Teddiursa[] = INCBIN_U32("graphics/pokemon/teddiursa/back.4bpp.lz"); - const u32 gMonShinyPalette_Teddiursa[] = INCBIN_U32("graphics/pokemon/teddiursa/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Teddiursa[] = INCBIN_U16("graphics/pokemon/teddiursa/shiny.gbapal"); #else const u32 gMonFrontPic_Teddiursa[] = INCBIN_U32("graphics/pokemon/teddiursa/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Teddiursa[] = INCBIN_U32("graphics/pokemon/teddiursa/normal_gba.gbapal.lz"); + const u16 gMonPalette_Teddiursa[] = INCBIN_U16("graphics/pokemon/teddiursa/normal_gba.gbapal"); const u32 gMonBackPic_Teddiursa[] = INCBIN_U32("graphics/pokemon/teddiursa/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Teddiursa[] = INCBIN_U32("graphics/pokemon/teddiursa/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Teddiursa[] = INCBIN_U16("graphics/pokemon/teddiursa/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Teddiursa[] = INCBIN_U8("graphics/pokemon/teddiursa/icon.4bpp"); @@ -8582,21 +8582,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Teddiursa[] = INCBIN_U16("graphics/pokemon/teddiursa/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Teddiursa[] = INCBIN_U16("graphics/pokemon/teddiursa/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Ursaring[] = INCBIN_U32("graphics/pokemon/ursaring/anim_front.4bpp.lz"); - const u32 gMonPalette_Ursaring[] = INCBIN_U32("graphics/pokemon/ursaring/normal.gbapal.lz"); + const u16 gMonPalette_Ursaring[] = INCBIN_U16("graphics/pokemon/ursaring/normal.gbapal"); const u32 gMonBackPic_Ursaring[] = INCBIN_U32("graphics/pokemon/ursaring/back.4bpp.lz"); - const u32 gMonShinyPalette_Ursaring[] = INCBIN_U32("graphics/pokemon/ursaring/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Ursaring[] = INCBIN_U16("graphics/pokemon/ursaring/shiny.gbapal"); #else const u32 gMonFrontPic_Ursaring[] = INCBIN_U32("graphics/pokemon/ursaring/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Ursaring[] = INCBIN_U32("graphics/pokemon/ursaring/normal_gba.gbapal.lz"); + const u16 gMonPalette_Ursaring[] = INCBIN_U16("graphics/pokemon/ursaring/normal_gba.gbapal"); const u32 gMonBackPic_Ursaring[] = INCBIN_U32("graphics/pokemon/ursaring/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Ursaring[] = INCBIN_U32("graphics/pokemon/ursaring/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Ursaring[] = INCBIN_U16("graphics/pokemon/ursaring/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Ursaring[] = INCBIN_U8("graphics/pokemon/ursaring/icon.4bpp"); @@ -8609,8 +8609,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Ursaring[] = INCBIN_U16("graphics/pokemon/ursaring/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Ursaring[] = INCBIN_U16("graphics/pokemon/ursaring/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -8624,9 +8624,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_GEN_8_CROSS_EVOS const u32 gMonFrontPic_Ursaluna[] = INCBIN_U32("graphics/pokemon/ursaluna/front.4bpp.lz"); - const u32 gMonPalette_Ursaluna[] = INCBIN_U32("graphics/pokemon/ursaluna/normal.gbapal.lz"); + const u16 gMonPalette_Ursaluna[] = INCBIN_U16("graphics/pokemon/ursaluna/normal.gbapal"); const u32 gMonBackPic_Ursaluna[] = INCBIN_U32("graphics/pokemon/ursaluna/back.4bpp.lz"); - const u32 gMonShinyPalette_Ursaluna[] = INCBIN_U32("graphics/pokemon/ursaluna/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Ursaluna[] = INCBIN_U16("graphics/pokemon/ursaluna/shiny.gbapal"); const u8 gMonIcon_Ursaluna[] = INCBIN_U8("graphics/pokemon/ursaluna/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Ursaluna[] = INCBIN_U8("graphics/pokemon/ursaluna/footprint.1bpp"); @@ -8634,21 +8634,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Ursaluna[] = INCBIN_U16("graphics/pokemon/ursaluna/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Ursaluna[] = INCBIN_U16("graphics/pokemon/ursaluna/overworld_shiny.gbapal"); #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 u16 gMonPalette_UrsalunaBloodmoon[] = INCBIN_U16("graphics/pokemon/ursaluna/bloodmoon/normal.gbapal"); 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 u16 gMonShinyPalette_UrsalunaBloodmoon[] = INCBIN_U16("graphics/pokemon/ursaluna/bloodmoon/shiny.gbapal"); 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"); + const u16 gOverworldPalette_UrsalunaBloodmoon[] = INCBIN_U16("graphics/pokemon/ursaluna/bloodmoon/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_UrsalunaBloodmoon[] = INCBIN_U16("graphics/pokemon/ursaluna/bloodmoon/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_8_CROSS_EVOS @@ -8657,14 +8657,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_SLUGMA #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Slugma[] = INCBIN_U32("graphics/pokemon/slugma/anim_front.4bpp.lz"); - const u32 gMonPalette_Slugma[] = INCBIN_U32("graphics/pokemon/slugma/normal.gbapal.lz"); + const u16 gMonPalette_Slugma[] = INCBIN_U16("graphics/pokemon/slugma/normal.gbapal"); const u32 gMonBackPic_Slugma[] = INCBIN_U32("graphics/pokemon/slugma/back.4bpp.lz"); - const u32 gMonShinyPalette_Slugma[] = INCBIN_U32("graphics/pokemon/slugma/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Slugma[] = INCBIN_U16("graphics/pokemon/slugma/shiny.gbapal"); #else const u32 gMonFrontPic_Slugma[] = INCBIN_U32("graphics/pokemon/slugma/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Slugma[] = INCBIN_U32("graphics/pokemon/slugma/normal_gba.gbapal.lz"); + const u16 gMonPalette_Slugma[] = INCBIN_U16("graphics/pokemon/slugma/normal_gba.gbapal"); const u32 gMonBackPic_Slugma[] = INCBIN_U32("graphics/pokemon/slugma/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Slugma[] = INCBIN_U32("graphics/pokemon/slugma/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Slugma[] = INCBIN_U16("graphics/pokemon/slugma/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Slugma[] = INCBIN_U8("graphics/pokemon/slugma/icon.4bpp"); @@ -8677,21 +8677,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Slugma[] = INCBIN_U16("graphics/pokemon/slugma/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Slugma[] = INCBIN_U16("graphics/pokemon/slugma/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Magcargo[] = INCBIN_U32("graphics/pokemon/magcargo/anim_front.4bpp.lz"); - const u32 gMonPalette_Magcargo[] = INCBIN_U32("graphics/pokemon/magcargo/normal.gbapal.lz"); + const u16 gMonPalette_Magcargo[] = INCBIN_U16("graphics/pokemon/magcargo/normal.gbapal"); const u32 gMonBackPic_Magcargo[] = INCBIN_U32("graphics/pokemon/magcargo/back.4bpp.lz"); - const u32 gMonShinyPalette_Magcargo[] = INCBIN_U32("graphics/pokemon/magcargo/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Magcargo[] = INCBIN_U16("graphics/pokemon/magcargo/shiny.gbapal"); #else const u32 gMonFrontPic_Magcargo[] = INCBIN_U32("graphics/pokemon/magcargo/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Magcargo[] = INCBIN_U32("graphics/pokemon/magcargo/normal_gba.gbapal.lz"); + const u16 gMonPalette_Magcargo[] = INCBIN_U16("graphics/pokemon/magcargo/normal_gba.gbapal"); const u32 gMonBackPic_Magcargo[] = INCBIN_U32("graphics/pokemon/magcargo/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Magcargo[] = INCBIN_U32("graphics/pokemon/magcargo/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Magcargo[] = INCBIN_U16("graphics/pokemon/magcargo/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Magcargo[] = INCBIN_U8("graphics/pokemon/magcargo/icon.4bpp"); @@ -8704,8 +8704,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Magcargo[] = INCBIN_U16("graphics/pokemon/magcargo/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Magcargo[] = INCBIN_U16("graphics/pokemon/magcargo/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SLUGMA @@ -8713,14 +8713,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_SWINUB #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Swinub[] = INCBIN_U32("graphics/pokemon/swinub/anim_front.4bpp.lz"); - const u32 gMonPalette_Swinub[] = INCBIN_U32("graphics/pokemon/swinub/normal.gbapal.lz"); + const u16 gMonPalette_Swinub[] = INCBIN_U16("graphics/pokemon/swinub/normal.gbapal"); const u32 gMonBackPic_Swinub[] = INCBIN_U32("graphics/pokemon/swinub/back.4bpp.lz"); - const u32 gMonShinyPalette_Swinub[] = INCBIN_U32("graphics/pokemon/swinub/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Swinub[] = INCBIN_U16("graphics/pokemon/swinub/shiny.gbapal"); #else const u32 gMonFrontPic_Swinub[] = INCBIN_U32("graphics/pokemon/swinub/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Swinub[] = INCBIN_U32("graphics/pokemon/swinub/normal_gba.gbapal.lz"); + const u16 gMonPalette_Swinub[] = INCBIN_U16("graphics/pokemon/swinub/normal_gba.gbapal"); const u32 gMonBackPic_Swinub[] = INCBIN_U32("graphics/pokemon/swinub/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Swinub[] = INCBIN_U32("graphics/pokemon/swinub/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Swinub[] = INCBIN_U16("graphics/pokemon/swinub/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Swinub[] = INCBIN_U8("graphics/pokemon/swinub/icon.4bpp"); @@ -8733,21 +8733,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Swinub[] = INCBIN_U16("graphics/pokemon/swinub/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Swinub[] = INCBIN_U16("graphics/pokemon/swinub/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Piloswine[] = INCBIN_U32("graphics/pokemon/piloswine/anim_front.4bpp.lz"); - const u32 gMonPalette_Piloswine[] = INCBIN_U32("graphics/pokemon/piloswine/normal.gbapal.lz"); + const u16 gMonPalette_Piloswine[] = INCBIN_U16("graphics/pokemon/piloswine/normal.gbapal"); const u32 gMonBackPic_Piloswine[] = INCBIN_U32("graphics/pokemon/piloswine/back.4bpp.lz"); - const u32 gMonShinyPalette_Piloswine[] = INCBIN_U32("graphics/pokemon/piloswine/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Piloswine[] = INCBIN_U16("graphics/pokemon/piloswine/shiny.gbapal"); #else const u32 gMonFrontPic_Piloswine[] = INCBIN_U32("graphics/pokemon/piloswine/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Piloswine[] = INCBIN_U32("graphics/pokemon/piloswine/normal_gba.gbapal.lz"); + const u16 gMonPalette_Piloswine[] = INCBIN_U16("graphics/pokemon/piloswine/normal_gba.gbapal"); const u32 gMonBackPic_Piloswine[] = INCBIN_U32("graphics/pokemon/piloswine/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Piloswine[] = INCBIN_U32("graphics/pokemon/piloswine/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Piloswine[] = INCBIN_U16("graphics/pokemon/piloswine/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Piloswine[] = INCBIN_U8("graphics/pokemon/piloswine/icon.4bpp"); @@ -8760,8 +8760,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Piloswine[] = INCBIN_U16("graphics/pokemon/piloswine/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Piloswine[] = INCBIN_U16("graphics/pokemon/piloswine/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -8775,9 +8775,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_GEN_4_CROSS_EVOS const u32 gMonFrontPic_Mamoswine[] = INCBIN_U32("graphics/pokemon/mamoswine/anim_front.4bpp.lz"); - const u32 gMonPalette_Mamoswine[] = INCBIN_U32("graphics/pokemon/mamoswine/normal.gbapal.lz"); + const u16 gMonPalette_Mamoswine[] = INCBIN_U16("graphics/pokemon/mamoswine/normal.gbapal"); const u32 gMonBackPic_Mamoswine[] = INCBIN_U32("graphics/pokemon/mamoswine/back.4bpp.lz"); - const u32 gMonShinyPalette_Mamoswine[] = INCBIN_U32("graphics/pokemon/mamoswine/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Mamoswine[] = INCBIN_U16("graphics/pokemon/mamoswine/shiny.gbapal"); const u8 gMonIcon_Mamoswine[] = INCBIN_U8("graphics/pokemon/mamoswine/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Mamoswine[] = INCBIN_U8("graphics/pokemon/mamoswine/footprint.1bpp"); @@ -8785,8 +8785,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Mamoswine[] = INCBIN_U16("graphics/pokemon/mamoswine/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Mamoswine[] = INCBIN_U16("graphics/pokemon/mamoswine/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -8802,14 +8802,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_CORSOLA #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Corsola[] = INCBIN_U32("graphics/pokemon/corsola/anim_front.4bpp.lz"); - const u32 gMonPalette_Corsola[] = INCBIN_U32("graphics/pokemon/corsola/normal.gbapal.lz"); + const u16 gMonPalette_Corsola[] = INCBIN_U16("graphics/pokemon/corsola/normal.gbapal"); const u32 gMonBackPic_Corsola[] = INCBIN_U32("graphics/pokemon/corsola/back.4bpp.lz"); - const u32 gMonShinyPalette_Corsola[] = INCBIN_U32("graphics/pokemon/corsola/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Corsola[] = INCBIN_U16("graphics/pokemon/corsola/shiny.gbapal"); #else const u32 gMonFrontPic_Corsola[] = INCBIN_U32("graphics/pokemon/corsola/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Corsola[] = INCBIN_U32("graphics/pokemon/corsola/normal_gba.gbapal.lz"); + const u16 gMonPalette_Corsola[] = INCBIN_U16("graphics/pokemon/corsola/normal_gba.gbapal"); const u32 gMonBackPic_Corsola[] = INCBIN_U32("graphics/pokemon/corsola/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Corsola[] = INCBIN_U32("graphics/pokemon/corsola/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Corsola[] = INCBIN_U16("graphics/pokemon/corsola/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Corsola[] = INCBIN_U8("graphics/pokemon/corsola/icon.4bpp"); @@ -8822,29 +8822,29 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Corsola[] = INCBIN_U16("graphics/pokemon/corsola/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Corsola[] = INCBIN_U16("graphics/pokemon/corsola/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if P_GALARIAN_FORMS const u32 gMonFrontPic_CorsolaGalar[] = INCBIN_U32("graphics/pokemon/corsola/galar/front.4bpp.lz"); - const u32 gMonPalette_CorsolaGalar[] = INCBIN_U32("graphics/pokemon/corsola/galar/normal.gbapal.lz"); + const u16 gMonPalette_CorsolaGalar[] = INCBIN_U16("graphics/pokemon/corsola/galar/normal.gbapal"); const u32 gMonBackPic_CorsolaGalar[] = INCBIN_U32("graphics/pokemon/corsola/galar/back.4bpp.lz"); - const u32 gMonShinyPalette_CorsolaGalar[] = INCBIN_U32("graphics/pokemon/corsola/galar/shiny.gbapal.lz"); + const u16 gMonShinyPalette_CorsolaGalar[] = INCBIN_U16("graphics/pokemon/corsola/galar/shiny.gbapal"); const u8 gMonIcon_CorsolaGalar[] = INCBIN_U8("graphics/pokemon/corsola/galar/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS const u32 gObjectEventPic_CorsolaGalar[] = INCBIN_COMP("graphics/pokemon/corsola/galar/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - const u32 gOverworldPalette_CorsolaGalar[] = INCBIN_U32("graphics/pokemon/corsola/galar/overworld_normal.gbapal.lz"); - const u32 gShinyOverworldPalette_CorsolaGalar[] = INCBIN_U32("graphics/pokemon/corsola/galar/overworld_shiny.gbapal.lz"); + const u16 gOverworldPalette_CorsolaGalar[] = INCBIN_U16("graphics/pokemon/corsola/galar/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_CorsolaGalar[] = INCBIN_U16("graphics/pokemon/corsola/galar/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Cursola[] = INCBIN_U16("graphics/pokemon/cursola/normal.gbapal"); const u32 gMonBackPic_Cursola[] = INCBIN_U32("graphics/pokemon/cursola/back.4bpp.lz"); - const u32 gMonShinyPalette_Cursola[] = INCBIN_U32("graphics/pokemon/cursola/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Cursola[] = INCBIN_U16("graphics/pokemon/cursola/shiny.gbapal"); const u8 gMonIcon_Cursola[] = INCBIN_U8("graphics/pokemon/cursola/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Cursola[] = INCBIN_U8("graphics/pokemon/cursola/footprint.1bpp"); @@ -8852,8 +8852,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Cursola[] = INCBIN_U16("graphics/pokemon/cursola/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Cursola[] = INCBIN_U16("graphics/pokemon/cursola/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GALARIAN_FORMS @@ -8862,14 +8862,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_REMORAID #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Remoraid[] = INCBIN_U32("graphics/pokemon/remoraid/anim_front.4bpp.lz"); - const u32 gMonPalette_Remoraid[] = INCBIN_U32("graphics/pokemon/remoraid/normal.gbapal.lz"); + const u16 gMonPalette_Remoraid[] = INCBIN_U16("graphics/pokemon/remoraid/normal.gbapal"); const u32 gMonBackPic_Remoraid[] = INCBIN_U32("graphics/pokemon/remoraid/back.4bpp.lz"); - const u32 gMonShinyPalette_Remoraid[] = INCBIN_U32("graphics/pokemon/remoraid/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Remoraid[] = INCBIN_U16("graphics/pokemon/remoraid/shiny.gbapal"); #else const u32 gMonFrontPic_Remoraid[] = INCBIN_U32("graphics/pokemon/remoraid/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Remoraid[] = INCBIN_U32("graphics/pokemon/remoraid/normal_gba.gbapal.lz"); + const u16 gMonPalette_Remoraid[] = INCBIN_U16("graphics/pokemon/remoraid/normal_gba.gbapal"); const u32 gMonBackPic_Remoraid[] = INCBIN_U32("graphics/pokemon/remoraid/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Remoraid[] = INCBIN_U32("graphics/pokemon/remoraid/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Remoraid[] = INCBIN_U16("graphics/pokemon/remoraid/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Remoraid[] = INCBIN_U8("graphics/pokemon/remoraid/icon.4bpp"); @@ -8882,21 +8882,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Remoraid[] = INCBIN_U16("graphics/pokemon/remoraid/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Remoraid[] = INCBIN_U16("graphics/pokemon/remoraid/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Octillery[] = INCBIN_U32("graphics/pokemon/octillery/anim_front.4bpp.lz"); - const u32 gMonPalette_Octillery[] = INCBIN_U32("graphics/pokemon/octillery/normal.gbapal.lz"); + const u16 gMonPalette_Octillery[] = INCBIN_U16("graphics/pokemon/octillery/normal.gbapal"); const u32 gMonBackPic_Octillery[] = INCBIN_U32("graphics/pokemon/octillery/back.4bpp.lz"); - const u32 gMonShinyPalette_Octillery[] = INCBIN_U32("graphics/pokemon/octillery/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Octillery[] = INCBIN_U16("graphics/pokemon/octillery/shiny.gbapal"); #else const u32 gMonFrontPic_Octillery[] = INCBIN_U32("graphics/pokemon/octillery/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Octillery[] = INCBIN_U32("graphics/pokemon/octillery/normal_gba.gbapal.lz"); + const u16 gMonPalette_Octillery[] = INCBIN_U16("graphics/pokemon/octillery/normal_gba.gbapal"); const u32 gMonBackPic_Octillery[] = INCBIN_U32("graphics/pokemon/octillery/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Octillery[] = INCBIN_U32("graphics/pokemon/octillery/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Octillery[] = INCBIN_U16("graphics/pokemon/octillery/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Octillery[] = INCBIN_U8("graphics/pokemon/octillery/icon.4bpp"); @@ -8909,8 +8909,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Octillery[] = INCBIN_U16("graphics/pokemon/octillery/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Octillery[] = INCBIN_U16("graphics/pokemon/octillery/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -8926,14 +8926,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_DELIBIRD #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Delibird[] = INCBIN_U32("graphics/pokemon/delibird/anim_front.4bpp.lz"); - const u32 gMonPalette_Delibird[] = INCBIN_U32("graphics/pokemon/delibird/normal.gbapal.lz"); + const u16 gMonPalette_Delibird[] = INCBIN_U16("graphics/pokemon/delibird/normal.gbapal"); const u32 gMonBackPic_Delibird[] = INCBIN_U32("graphics/pokemon/delibird/back.4bpp.lz"); - const u32 gMonShinyPalette_Delibird[] = INCBIN_U32("graphics/pokemon/delibird/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Delibird[] = INCBIN_U16("graphics/pokemon/delibird/shiny.gbapal"); #else const u32 gMonFrontPic_Delibird[] = INCBIN_U32("graphics/pokemon/delibird/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Delibird[] = INCBIN_U32("graphics/pokemon/delibird/normal_gba.gbapal.lz"); + const u16 gMonPalette_Delibird[] = INCBIN_U16("graphics/pokemon/delibird/normal_gba.gbapal"); const u32 gMonBackPic_Delibird[] = INCBIN_U32("graphics/pokemon/delibird/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Delibird[] = INCBIN_U32("graphics/pokemon/delibird/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Delibird[] = INCBIN_U16("graphics/pokemon/delibird/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Delibird[] = INCBIN_U8("graphics/pokemon/delibird/icon.4bpp"); @@ -8946,8 +8946,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Delibird[] = INCBIN_U16("graphics/pokemon/delibird/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Delibird[] = INCBIN_U16("graphics/pokemon/delibird/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_DELIBIRD @@ -8955,9 +8955,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_MANTINE #if P_GEN_4_CROSS_EVOS const u32 gMonFrontPic_Mantyke[] = INCBIN_U32("graphics/pokemon/mantyke/anim_front.4bpp.lz"); - const u32 gMonPalette_Mantyke[] = INCBIN_U32("graphics/pokemon/mantyke/normal.gbapal.lz"); + const u16 gMonPalette_Mantyke[] = INCBIN_U16("graphics/pokemon/mantyke/normal.gbapal"); const u32 gMonBackPic_Mantyke[] = INCBIN_U32("graphics/pokemon/mantyke/back.4bpp.lz"); - const u32 gMonShinyPalette_Mantyke[] = INCBIN_U32("graphics/pokemon/mantyke/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Mantyke[] = INCBIN_U16("graphics/pokemon/mantyke/shiny.gbapal"); const u8 gMonIcon_Mantyke[] = INCBIN_U8("graphics/pokemon/mantyke/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Mantyke[] = INCBIN_U8("graphics/pokemon/mantyke/footprint.1bpp"); @@ -8965,22 +8965,22 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Mantyke[] = INCBIN_U16("graphics/pokemon/mantyke/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Mantyke[] = INCBIN_U16("graphics/pokemon/mantyke/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_4_CROSS_EVOS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Mantine[] = INCBIN_U32("graphics/pokemon/mantine/anim_front.4bpp.lz"); - const u32 gMonPalette_Mantine[] = INCBIN_U32("graphics/pokemon/mantine/normal.gbapal.lz"); + const u16 gMonPalette_Mantine[] = INCBIN_U16("graphics/pokemon/mantine/normal.gbapal"); const u32 gMonBackPic_Mantine[] = INCBIN_U32("graphics/pokemon/mantine/back.4bpp.lz"); - const u32 gMonShinyPalette_Mantine[] = INCBIN_U32("graphics/pokemon/mantine/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Mantine[] = INCBIN_U16("graphics/pokemon/mantine/shiny.gbapal"); #else const u32 gMonFrontPic_Mantine[] = INCBIN_U32("graphics/pokemon/mantine/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Mantine[] = INCBIN_U32("graphics/pokemon/mantine/normal_gba.gbapal.lz"); + const u16 gMonPalette_Mantine[] = INCBIN_U16("graphics/pokemon/mantine/normal_gba.gbapal"); const u32 gMonBackPic_Mantine[] = INCBIN_U32("graphics/pokemon/mantine/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Mantine[] = INCBIN_U32("graphics/pokemon/mantine/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Mantine[] = INCBIN_U16("graphics/pokemon/mantine/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Mantine[] = INCBIN_U8("graphics/pokemon/mantine/icon.4bpp"); @@ -8993,8 +8993,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Mantine[] = INCBIN_U16("graphics/pokemon/mantine/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Mantine[] = INCBIN_U16("graphics/pokemon/mantine/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_MANTINE @@ -9002,14 +9002,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_SKARMORY #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Skarmory[] = INCBIN_U32("graphics/pokemon/skarmory/anim_front.4bpp.lz"); - const u32 gMonPalette_Skarmory[] = INCBIN_U32("graphics/pokemon/skarmory/normal.gbapal.lz"); + const u16 gMonPalette_Skarmory[] = INCBIN_U16("graphics/pokemon/skarmory/normal.gbapal"); const u32 gMonBackPic_Skarmory[] = INCBIN_U32("graphics/pokemon/skarmory/back.4bpp.lz"); - const u32 gMonShinyPalette_Skarmory[] = INCBIN_U32("graphics/pokemon/skarmory/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Skarmory[] = INCBIN_U16("graphics/pokemon/skarmory/shiny.gbapal"); #else const u32 gMonFrontPic_Skarmory[] = INCBIN_U32("graphics/pokemon/skarmory/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Skarmory[] = INCBIN_U32("graphics/pokemon/skarmory/normal_gba.gbapal.lz"); + const u16 gMonPalette_Skarmory[] = INCBIN_U16("graphics/pokemon/skarmory/normal_gba.gbapal"); const u32 gMonBackPic_Skarmory[] = INCBIN_U32("graphics/pokemon/skarmory/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Skarmory[] = INCBIN_U32("graphics/pokemon/skarmory/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Skarmory[] = INCBIN_U16("graphics/pokemon/skarmory/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Skarmory[] = INCBIN_U8("graphics/pokemon/skarmory/icon.4bpp"); @@ -9022,8 +9022,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Skarmory[] = INCBIN_U16("graphics/pokemon/skarmory/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Skarmory[] = INCBIN_U16("graphics/pokemon/skarmory/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SKARMORY @@ -9031,14 +9031,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_HOUNDOUR #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Houndour[] = INCBIN_U32("graphics/pokemon/houndour/anim_front.4bpp.lz"); - const u32 gMonPalette_Houndour[] = INCBIN_U32("graphics/pokemon/houndour/normal.gbapal.lz"); + const u16 gMonPalette_Houndour[] = INCBIN_U16("graphics/pokemon/houndour/normal.gbapal"); const u32 gMonBackPic_Houndour[] = INCBIN_U32("graphics/pokemon/houndour/back.4bpp.lz"); - const u32 gMonShinyPalette_Houndour[] = INCBIN_U32("graphics/pokemon/houndour/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Houndour[] = INCBIN_U16("graphics/pokemon/houndour/shiny.gbapal"); #else const u32 gMonFrontPic_Houndour[] = INCBIN_U32("graphics/pokemon/houndour/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Houndour[] = INCBIN_U32("graphics/pokemon/houndour/normal_gba.gbapal.lz"); + const u16 gMonPalette_Houndour[] = INCBIN_U16("graphics/pokemon/houndour/normal_gba.gbapal"); const u32 gMonBackPic_Houndour[] = INCBIN_U32("graphics/pokemon/houndour/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Houndour[] = INCBIN_U32("graphics/pokemon/houndour/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Houndour[] = INCBIN_U16("graphics/pokemon/houndour/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Houndour[] = INCBIN_U8("graphics/pokemon/houndour/icon.4bpp"); @@ -9051,21 +9051,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Houndour[] = INCBIN_U16("graphics/pokemon/houndour/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Houndour[] = INCBIN_U16("graphics/pokemon/houndour/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Houndoom[] = INCBIN_U32("graphics/pokemon/houndoom/anim_front.4bpp.lz"); - const u32 gMonPalette_Houndoom[] = INCBIN_U32("graphics/pokemon/houndoom/normal.gbapal.lz"); + const u16 gMonPalette_Houndoom[] = INCBIN_U16("graphics/pokemon/houndoom/normal.gbapal"); const u32 gMonBackPic_Houndoom[] = INCBIN_U32("graphics/pokemon/houndoom/back.4bpp.lz"); - const u32 gMonShinyPalette_Houndoom[] = INCBIN_U32("graphics/pokemon/houndoom/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Houndoom[] = INCBIN_U16("graphics/pokemon/houndoom/shiny.gbapal"); #else const u32 gMonFrontPic_Houndoom[] = INCBIN_U32("graphics/pokemon/houndoom/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Houndoom[] = INCBIN_U32("graphics/pokemon/houndoom/normal_gba.gbapal.lz"); + const u16 gMonPalette_Houndoom[] = INCBIN_U16("graphics/pokemon/houndoom/normal_gba.gbapal"); const u32 gMonBackPic_Houndoom[] = INCBIN_U32("graphics/pokemon/houndoom/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Houndoom[] = INCBIN_U32("graphics/pokemon/houndoom/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Houndoom[] = INCBIN_U16("graphics/pokemon/houndoom/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Houndoom[] = INCBIN_U8("graphics/pokemon/houndoom/icon.4bpp"); @@ -9078,8 +9078,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Houndoom[] = INCBIN_U16("graphics/pokemon/houndoom/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Houndoom[] = INCBIN_U16("graphics/pokemon/houndoom/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -9093,15 +9093,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_MEGA_EVOLUTIONS const u32 gMonFrontPic_HoundoomMega[] = INCBIN_U32("graphics/pokemon/houndoom/mega/front.4bpp.lz"); - const u32 gMonPalette_HoundoomMega[] = INCBIN_U32("graphics/pokemon/houndoom/mega/normal.gbapal.lz"); + const u16 gMonPalette_HoundoomMega[] = INCBIN_U16("graphics/pokemon/houndoom/mega/normal.gbapal"); 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 u16 gMonShinyPalette_HoundoomMega[] = INCBIN_U16("graphics/pokemon/houndoom/mega/shiny.gbapal"); const u8 gMonIcon_HoundoomMega[] = INCBIN_U8("graphics/pokemon/houndoom/mega/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS 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"); + const u16 gOverworldPalette_HoundoomMega[] = INCBIN_U16("graphics/pokemon/houndoom/mega/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_HoundoomMega[] = INCBIN_U16("graphics/pokemon/houndoom/mega/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS #endif //P_MEGA_EVOLUTIONS @@ -9110,14 +9110,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_PHANPY #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Phanpy[] = INCBIN_U32("graphics/pokemon/phanpy/anim_front.4bpp.lz"); - const u32 gMonPalette_Phanpy[] = INCBIN_U32("graphics/pokemon/phanpy/normal.gbapal.lz"); + const u16 gMonPalette_Phanpy[] = INCBIN_U16("graphics/pokemon/phanpy/normal.gbapal"); const u32 gMonBackPic_Phanpy[] = INCBIN_U32("graphics/pokemon/phanpy/back.4bpp.lz"); - const u32 gMonShinyPalette_Phanpy[] = INCBIN_U32("graphics/pokemon/phanpy/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Phanpy[] = INCBIN_U16("graphics/pokemon/phanpy/shiny.gbapal"); #else const u32 gMonFrontPic_Phanpy[] = INCBIN_U32("graphics/pokemon/phanpy/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Phanpy[] = INCBIN_U32("graphics/pokemon/phanpy/normal_gba.gbapal.lz"); + const u16 gMonPalette_Phanpy[] = INCBIN_U16("graphics/pokemon/phanpy/normal_gba.gbapal"); const u32 gMonBackPic_Phanpy[] = INCBIN_U32("graphics/pokemon/phanpy/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Phanpy[] = INCBIN_U32("graphics/pokemon/phanpy/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Phanpy[] = INCBIN_U16("graphics/pokemon/phanpy/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Phanpy[] = INCBIN_U8("graphics/pokemon/phanpy/icon.4bpp"); @@ -9130,21 +9130,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Phanpy[] = INCBIN_U16("graphics/pokemon/phanpy/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Phanpy[] = INCBIN_U16("graphics/pokemon/phanpy/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Donphan[] = INCBIN_U32("graphics/pokemon/donphan/anim_front.4bpp.lz"); - const u32 gMonPalette_Donphan[] = INCBIN_U32("graphics/pokemon/donphan/normal.gbapal.lz"); + const u16 gMonPalette_Donphan[] = INCBIN_U16("graphics/pokemon/donphan/normal.gbapal"); const u32 gMonBackPic_Donphan[] = INCBIN_U32("graphics/pokemon/donphan/back.4bpp.lz"); - const u32 gMonShinyPalette_Donphan[] = INCBIN_U32("graphics/pokemon/donphan/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Donphan[] = INCBIN_U16("graphics/pokemon/donphan/shiny.gbapal"); #else const u32 gMonFrontPic_Donphan[] = INCBIN_U32("graphics/pokemon/donphan/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Donphan[] = INCBIN_U32("graphics/pokemon/donphan/normal_gba.gbapal.lz"); + const u16 gMonPalette_Donphan[] = INCBIN_U16("graphics/pokemon/donphan/normal_gba.gbapal"); const u32 gMonBackPic_Donphan[] = INCBIN_U32("graphics/pokemon/donphan/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Donphan[] = INCBIN_U32("graphics/pokemon/donphan/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Donphan[] = INCBIN_U16("graphics/pokemon/donphan/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Donphan[] = INCBIN_U8("graphics/pokemon/donphan/icon.4bpp"); @@ -9157,8 +9157,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Donphan[] = INCBIN_U16("graphics/pokemon/donphan/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Donphan[] = INCBIN_U16("graphics/pokemon/donphan/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -9174,14 +9174,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_STANTLER #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Stantler[] = INCBIN_U32("graphics/pokemon/stantler/anim_front.4bpp.lz"); - const u32 gMonPalette_Stantler[] = INCBIN_U32("graphics/pokemon/stantler/normal.gbapal.lz"); + const u16 gMonPalette_Stantler[] = INCBIN_U16("graphics/pokemon/stantler/normal.gbapal"); const u32 gMonBackPic_Stantler[] = INCBIN_U32("graphics/pokemon/stantler/back.4bpp.lz"); - const u32 gMonShinyPalette_Stantler[] = INCBIN_U32("graphics/pokemon/stantler/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Stantler[] = INCBIN_U16("graphics/pokemon/stantler/shiny.gbapal"); #else const u32 gMonFrontPic_Stantler[] = INCBIN_U32("graphics/pokemon/stantler/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Stantler[] = INCBIN_U32("graphics/pokemon/stantler/normal_gba.gbapal.lz"); + const u16 gMonPalette_Stantler[] = INCBIN_U16("graphics/pokemon/stantler/normal_gba.gbapal"); const u32 gMonBackPic_Stantler[] = INCBIN_U32("graphics/pokemon/stantler/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Stantler[] = INCBIN_U32("graphics/pokemon/stantler/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Stantler[] = INCBIN_U16("graphics/pokemon/stantler/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Stantler[] = INCBIN_U8("graphics/pokemon/stantler/icon.4bpp"); @@ -9194,16 +9194,16 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Stantler[] = INCBIN_U16("graphics/pokemon/stantler/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Stantler[] = INCBIN_U16("graphics/pokemon/stantler/overworld_shiny.gbapal"); #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"); - const u32 gMonPalette_Wyrdeer[] = INCBIN_U32("graphics/pokemon/wyrdeer/normal.gbapal.lz"); + const u16 gMonPalette_Wyrdeer[] = INCBIN_U16("graphics/pokemon/wyrdeer/normal.gbapal"); const u32 gMonBackPic_Wyrdeer[] = INCBIN_U32("graphics/pokemon/wyrdeer/back.4bpp.lz"); - const u32 gMonShinyPalette_Wyrdeer[] = INCBIN_U32("graphics/pokemon/wyrdeer/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Wyrdeer[] = INCBIN_U16("graphics/pokemon/wyrdeer/shiny.gbapal"); const u8 gMonIcon_Wyrdeer[] = INCBIN_U8("graphics/pokemon/wyrdeer/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Wyrdeer[] = INCBIN_U8("graphics/pokemon/wyrdeer/footprint.1bpp"); @@ -9211,8 +9211,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Wyrdeer[] = INCBIN_U16("graphics/pokemon/wyrdeer/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Wyrdeer[] = INCBIN_U16("graphics/pokemon/wyrdeer/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_8_CROSS_EVOS @@ -9221,14 +9221,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_SMEARGLE #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Smeargle[] = INCBIN_U32("graphics/pokemon/smeargle/anim_front.4bpp.lz"); - const u32 gMonPalette_Smeargle[] = INCBIN_U32("graphics/pokemon/smeargle/normal.gbapal.lz"); + const u16 gMonPalette_Smeargle[] = INCBIN_U16("graphics/pokemon/smeargle/normal.gbapal"); const u32 gMonBackPic_Smeargle[] = INCBIN_U32("graphics/pokemon/smeargle/back.4bpp.lz"); - const u32 gMonShinyPalette_Smeargle[] = INCBIN_U32("graphics/pokemon/smeargle/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Smeargle[] = INCBIN_U16("graphics/pokemon/smeargle/shiny.gbapal"); #else const u32 gMonFrontPic_Smeargle[] = INCBIN_U32("graphics/pokemon/smeargle/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Smeargle[] = INCBIN_U32("graphics/pokemon/smeargle/normal_gba.gbapal.lz"); + const u16 gMonPalette_Smeargle[] = INCBIN_U16("graphics/pokemon/smeargle/normal_gba.gbapal"); const u32 gMonBackPic_Smeargle[] = INCBIN_U32("graphics/pokemon/smeargle/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Smeargle[] = INCBIN_U32("graphics/pokemon/smeargle/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Smeargle[] = INCBIN_U16("graphics/pokemon/smeargle/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Smeargle[] = INCBIN_U8("graphics/pokemon/smeargle/icon.4bpp"); @@ -9241,8 +9241,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Smeargle[] = INCBIN_U16("graphics/pokemon/smeargle/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Smeargle[] = INCBIN_U16("graphics/pokemon/smeargle/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SMEARGLE @@ -9250,14 +9250,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_MILTANK #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Miltank[] = INCBIN_U32("graphics/pokemon/miltank/anim_front.4bpp.lz"); - const u32 gMonPalette_Miltank[] = INCBIN_U32("graphics/pokemon/miltank/normal.gbapal.lz"); + const u16 gMonPalette_Miltank[] = INCBIN_U16("graphics/pokemon/miltank/normal.gbapal"); const u32 gMonBackPic_Miltank[] = INCBIN_U32("graphics/pokemon/miltank/back.4bpp.lz"); - const u32 gMonShinyPalette_Miltank[] = INCBIN_U32("graphics/pokemon/miltank/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Miltank[] = INCBIN_U16("graphics/pokemon/miltank/shiny.gbapal"); #else const u32 gMonFrontPic_Miltank[] = INCBIN_U32("graphics/pokemon/miltank/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Miltank[] = INCBIN_U32("graphics/pokemon/miltank/normal_gba.gbapal.lz"); + const u16 gMonPalette_Miltank[] = INCBIN_U16("graphics/pokemon/miltank/normal_gba.gbapal"); const u32 gMonBackPic_Miltank[] = INCBIN_U32("graphics/pokemon/miltank/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Miltank[] = INCBIN_U32("graphics/pokemon/miltank/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Miltank[] = INCBIN_U16("graphics/pokemon/miltank/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Miltank[] = INCBIN_U8("graphics/pokemon/miltank/icon.4bpp"); @@ -9270,8 +9270,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Miltank[] = INCBIN_U16("graphics/pokemon/miltank/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Miltank[] = INCBIN_U16("graphics/pokemon/miltank/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_MILTANK @@ -9279,14 +9279,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_RAIKOU #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Raikou[] = INCBIN_U32("graphics/pokemon/raikou/anim_front.4bpp.lz"); - const u32 gMonPalette_Raikou[] = INCBIN_U32("graphics/pokemon/raikou/normal.gbapal.lz"); + const u16 gMonPalette_Raikou[] = INCBIN_U16("graphics/pokemon/raikou/normal.gbapal"); const u32 gMonBackPic_Raikou[] = INCBIN_U32("graphics/pokemon/raikou/back.4bpp.lz"); - const u32 gMonShinyPalette_Raikou[] = INCBIN_U32("graphics/pokemon/raikou/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Raikou[] = INCBIN_U16("graphics/pokemon/raikou/shiny.gbapal"); #else const u32 gMonFrontPic_Raikou[] = INCBIN_U32("graphics/pokemon/raikou/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Raikou[] = INCBIN_U32("graphics/pokemon/raikou/normal_gba.gbapal.lz"); + const u16 gMonPalette_Raikou[] = INCBIN_U16("graphics/pokemon/raikou/normal_gba.gbapal"); const u32 gMonBackPic_Raikou[] = INCBIN_U32("graphics/pokemon/raikou/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Raikou[] = INCBIN_U32("graphics/pokemon/raikou/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Raikou[] = INCBIN_U16("graphics/pokemon/raikou/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Raikou[] = INCBIN_U8("graphics/pokemon/raikou/icon.4bpp"); @@ -9299,8 +9299,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Raikou[] = INCBIN_U16("graphics/pokemon/raikou/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Raikou[] = INCBIN_U16("graphics/pokemon/raikou/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_RAIKOU @@ -9308,14 +9308,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_ENTEI #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Entei[] = INCBIN_U32("graphics/pokemon/entei/anim_front.4bpp.lz"); - const u32 gMonPalette_Entei[] = INCBIN_U32("graphics/pokemon/entei/normal.gbapal.lz"); + const u16 gMonPalette_Entei[] = INCBIN_U16("graphics/pokemon/entei/normal.gbapal"); const u32 gMonBackPic_Entei[] = INCBIN_U32("graphics/pokemon/entei/back.4bpp.lz"); - const u32 gMonShinyPalette_Entei[] = INCBIN_U32("graphics/pokemon/entei/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Entei[] = INCBIN_U16("graphics/pokemon/entei/shiny.gbapal"); #else const u32 gMonFrontPic_Entei[] = INCBIN_U32("graphics/pokemon/entei/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Entei[] = INCBIN_U32("graphics/pokemon/entei/normal_gba.gbapal.lz"); + const u16 gMonPalette_Entei[] = INCBIN_U16("graphics/pokemon/entei/normal_gba.gbapal"); const u32 gMonBackPic_Entei[] = INCBIN_U32("graphics/pokemon/entei/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Entei[] = INCBIN_U32("graphics/pokemon/entei/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Entei[] = INCBIN_U16("graphics/pokemon/entei/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Entei[] = INCBIN_U8("graphics/pokemon/entei/icon.4bpp"); @@ -9328,8 +9328,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Entei[] = INCBIN_U16("graphics/pokemon/entei/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Entei[] = INCBIN_U16("graphics/pokemon/entei/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_ENTEI @@ -9337,14 +9337,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_SUICUNE #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Suicune[] = INCBIN_U32("graphics/pokemon/suicune/anim_front.4bpp.lz"); - const u32 gMonPalette_Suicune[] = INCBIN_U32("graphics/pokemon/suicune/normal.gbapal.lz"); + const u16 gMonPalette_Suicune[] = INCBIN_U16("graphics/pokemon/suicune/normal.gbapal"); const u32 gMonBackPic_Suicune[] = INCBIN_U32("graphics/pokemon/suicune/back.4bpp.lz"); - const u32 gMonShinyPalette_Suicune[] = INCBIN_U32("graphics/pokemon/suicune/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Suicune[] = INCBIN_U16("graphics/pokemon/suicune/shiny.gbapal"); #else const u32 gMonFrontPic_Suicune[] = INCBIN_U32("graphics/pokemon/suicune/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Suicune[] = INCBIN_U32("graphics/pokemon/suicune/normal_gba.gbapal.lz"); + const u16 gMonPalette_Suicune[] = INCBIN_U16("graphics/pokemon/suicune/normal_gba.gbapal"); const u32 gMonBackPic_Suicune[] = INCBIN_U32("graphics/pokemon/suicune/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Suicune[] = INCBIN_U32("graphics/pokemon/suicune/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Suicune[] = INCBIN_U16("graphics/pokemon/suicune/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Suicune[] = INCBIN_U8("graphics/pokemon/suicune/icon.4bpp"); @@ -9357,8 +9357,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Suicune[] = INCBIN_U16("graphics/pokemon/suicune/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Suicune[] = INCBIN_U16("graphics/pokemon/suicune/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SUICUNE @@ -9366,14 +9366,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_LARVITAR #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Larvitar[] = INCBIN_U32("graphics/pokemon/larvitar/anim_front.4bpp.lz"); - const u32 gMonPalette_Larvitar[] = INCBIN_U32("graphics/pokemon/larvitar/normal.gbapal.lz"); + const u16 gMonPalette_Larvitar[] = INCBIN_U16("graphics/pokemon/larvitar/normal.gbapal"); const u32 gMonBackPic_Larvitar[] = INCBIN_U32("graphics/pokemon/larvitar/back.4bpp.lz"); - const u32 gMonShinyPalette_Larvitar[] = INCBIN_U32("graphics/pokemon/larvitar/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Larvitar[] = INCBIN_U16("graphics/pokemon/larvitar/shiny.gbapal"); #else const u32 gMonFrontPic_Larvitar[] = INCBIN_U32("graphics/pokemon/larvitar/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Larvitar[] = INCBIN_U32("graphics/pokemon/larvitar/normal_gba.gbapal.lz"); + const u16 gMonPalette_Larvitar[] = INCBIN_U16("graphics/pokemon/larvitar/normal_gba.gbapal"); const u32 gMonBackPic_Larvitar[] = INCBIN_U32("graphics/pokemon/larvitar/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Larvitar[] = INCBIN_U32("graphics/pokemon/larvitar/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Larvitar[] = INCBIN_U16("graphics/pokemon/larvitar/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Larvitar[] = INCBIN_U8("graphics/pokemon/larvitar/icon.4bpp"); @@ -9386,21 +9386,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Larvitar[] = INCBIN_U16("graphics/pokemon/larvitar/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Larvitar[] = INCBIN_U16("graphics/pokemon/larvitar/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Pupitar[] = INCBIN_U32("graphics/pokemon/pupitar/anim_front.4bpp.lz"); - const u32 gMonPalette_Pupitar[] = INCBIN_U32("graphics/pokemon/pupitar/normal.gbapal.lz"); + const u16 gMonPalette_Pupitar[] = INCBIN_U16("graphics/pokemon/pupitar/normal.gbapal"); const u32 gMonBackPic_Pupitar[] = INCBIN_U32("graphics/pokemon/pupitar/back.4bpp.lz"); - const u32 gMonShinyPalette_Pupitar[] = INCBIN_U32("graphics/pokemon/pupitar/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Pupitar[] = INCBIN_U16("graphics/pokemon/pupitar/shiny.gbapal"); #else const u32 gMonFrontPic_Pupitar[] = INCBIN_U32("graphics/pokemon/pupitar/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Pupitar[] = INCBIN_U32("graphics/pokemon/pupitar/normal_gba.gbapal.lz"); + const u16 gMonPalette_Pupitar[] = INCBIN_U16("graphics/pokemon/pupitar/normal_gba.gbapal"); const u32 gMonBackPic_Pupitar[] = INCBIN_U32("graphics/pokemon/pupitar/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Pupitar[] = INCBIN_U32("graphics/pokemon/pupitar/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Pupitar[] = INCBIN_U16("graphics/pokemon/pupitar/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Pupitar[] = INCBIN_U8("graphics/pokemon/pupitar/icon.4bpp"); @@ -9413,21 +9413,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Pupitar[] = INCBIN_U16("graphics/pokemon/pupitar/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Pupitar[] = INCBIN_U16("graphics/pokemon/pupitar/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Tyranitar[] = INCBIN_U32("graphics/pokemon/tyranitar/anim_front.4bpp.lz"); - const u32 gMonPalette_Tyranitar[] = INCBIN_U32("graphics/pokemon/tyranitar/normal.gbapal.lz"); + const u16 gMonPalette_Tyranitar[] = INCBIN_U16("graphics/pokemon/tyranitar/normal.gbapal"); const u32 gMonBackPic_Tyranitar[] = INCBIN_U32("graphics/pokemon/tyranitar/back.4bpp.lz"); - const u32 gMonShinyPalette_Tyranitar[] = INCBIN_U32("graphics/pokemon/tyranitar/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Tyranitar[] = INCBIN_U16("graphics/pokemon/tyranitar/shiny.gbapal"); #else const u32 gMonFrontPic_Tyranitar[] = INCBIN_U32("graphics/pokemon/tyranitar/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Tyranitar[] = INCBIN_U32("graphics/pokemon/tyranitar/normal_gba.gbapal.lz"); + const u16 gMonPalette_Tyranitar[] = INCBIN_U16("graphics/pokemon/tyranitar/normal_gba.gbapal"); const u32 gMonBackPic_Tyranitar[] = INCBIN_U32("graphics/pokemon/tyranitar/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Tyranitar[] = INCBIN_U32("graphics/pokemon/tyranitar/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Tyranitar[] = INCBIN_U16("graphics/pokemon/tyranitar/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Tyranitar[] = INCBIN_U8("graphics/pokemon/tyranitar/icon.4bpp"); @@ -9440,22 +9440,22 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Tyranitar[] = INCBIN_U16("graphics/pokemon/tyranitar/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Tyranitar[] = INCBIN_U16("graphics/pokemon/tyranitar/overworld_shiny.gbapal"); #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"); - const u32 gMonPalette_TyranitarMega[] = INCBIN_U32("graphics/pokemon/tyranitar/mega/normal.gbapal.lz"); + const u16 gMonPalette_TyranitarMega[] = INCBIN_U16("graphics/pokemon/tyranitar/mega/normal.gbapal"); 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 u16 gMonShinyPalette_TyranitarMega[] = INCBIN_U16("graphics/pokemon/tyranitar/mega/shiny.gbapal"); const u8 gMonIcon_TyranitarMega[] = INCBIN_U8("graphics/pokemon/tyranitar/mega/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS 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"); + const u16 gOverworldPalette_TyranitarMega[] = INCBIN_U16("graphics/pokemon/tyranitar/mega/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_TyranitarMega[] = INCBIN_U16("graphics/pokemon/tyranitar/mega/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS #endif //P_MEGA_EVOLUTIONS @@ -9464,14 +9464,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_LUGIA #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Lugia[] = INCBIN_U32("graphics/pokemon/lugia/anim_front.4bpp.lz"); - const u32 gMonPalette_Lugia[] = INCBIN_U32("graphics/pokemon/lugia/normal.gbapal.lz"); + const u16 gMonPalette_Lugia[] = INCBIN_U16("graphics/pokemon/lugia/normal.gbapal"); const u32 gMonBackPic_Lugia[] = INCBIN_U32("graphics/pokemon/lugia/back.4bpp.lz"); - const u32 gMonShinyPalette_Lugia[] = INCBIN_U32("graphics/pokemon/lugia/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Lugia[] = INCBIN_U16("graphics/pokemon/lugia/shiny.gbapal"); #else const u32 gMonFrontPic_Lugia[] = INCBIN_U32("graphics/pokemon/lugia/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Lugia[] = INCBIN_U32("graphics/pokemon/lugia/normal_gba.gbapal.lz"); + const u16 gMonPalette_Lugia[] = INCBIN_U16("graphics/pokemon/lugia/normal_gba.gbapal"); const u32 gMonBackPic_Lugia[] = INCBIN_U32("graphics/pokemon/lugia/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Lugia[] = INCBIN_U32("graphics/pokemon/lugia/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Lugia[] = INCBIN_U16("graphics/pokemon/lugia/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Lugia[] = INCBIN_U8("graphics/pokemon/lugia/icon.4bpp"); @@ -9484,8 +9484,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Lugia[] = INCBIN_U16("graphics/pokemon/lugia/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Lugia[] = INCBIN_U16("graphics/pokemon/lugia/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_LUGIA @@ -9493,14 +9493,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_HO_OH #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_HoOh[] = INCBIN_U32("graphics/pokemon/ho_oh/anim_front.4bpp.lz"); - const u32 gMonPalette_HoOh[] = INCBIN_U32("graphics/pokemon/ho_oh/normal.gbapal.lz"); + const u16 gMonPalette_HoOh[] = INCBIN_U16("graphics/pokemon/ho_oh/normal.gbapal"); const u32 gMonBackPic_HoOh[] = INCBIN_U32("graphics/pokemon/ho_oh/back.4bpp.lz"); - const u32 gMonShinyPalette_HoOh[] = INCBIN_U32("graphics/pokemon/ho_oh/shiny.gbapal.lz"); + const u16 gMonShinyPalette_HoOh[] = INCBIN_U16("graphics/pokemon/ho_oh/shiny.gbapal"); #else const u32 gMonFrontPic_HoOh[] = INCBIN_U32("graphics/pokemon/ho_oh/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_HoOh[] = INCBIN_U32("graphics/pokemon/ho_oh/normal_gba.gbapal.lz"); + const u16 gMonPalette_HoOh[] = INCBIN_U16("graphics/pokemon/ho_oh/normal_gba.gbapal"); const u32 gMonBackPic_HoOh[] = INCBIN_U32("graphics/pokemon/ho_oh/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_HoOh[] = INCBIN_U32("graphics/pokemon/ho_oh/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_HoOh[] = INCBIN_U16("graphics/pokemon/ho_oh/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_HoOh[] = INCBIN_U8("graphics/pokemon/ho_oh/icon.4bpp"); @@ -9513,8 +9513,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_HoOh[] = INCBIN_U16("graphics/pokemon/ho_oh/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_HoOh[] = INCBIN_U16("graphics/pokemon/ho_oh/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_HO_OH @@ -9522,14 +9522,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_CELEBI #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Celebi[] = INCBIN_U32("graphics/pokemon/celebi/anim_front.4bpp.lz"); - const u32 gMonPalette_Celebi[] = INCBIN_U32("graphics/pokemon/celebi/normal.gbapal.lz"); + const u16 gMonPalette_Celebi[] = INCBIN_U16("graphics/pokemon/celebi/normal.gbapal"); const u32 gMonBackPic_Celebi[] = INCBIN_U32("graphics/pokemon/celebi/back.4bpp.lz"); - const u32 gMonShinyPalette_Celebi[] = INCBIN_U32("graphics/pokemon/celebi/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Celebi[] = INCBIN_U16("graphics/pokemon/celebi/shiny.gbapal"); #else const u32 gMonFrontPic_Celebi[] = INCBIN_U32("graphics/pokemon/celebi/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Celebi[] = INCBIN_U32("graphics/pokemon/celebi/normal_gba.gbapal.lz"); + const u16 gMonPalette_Celebi[] = INCBIN_U16("graphics/pokemon/celebi/normal_gba.gbapal"); const u32 gMonBackPic_Celebi[] = INCBIN_U32("graphics/pokemon/celebi/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Celebi[] = INCBIN_U32("graphics/pokemon/celebi/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Celebi[] = INCBIN_U16("graphics/pokemon/celebi/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Celebi[] = INCBIN_U8("graphics/pokemon/celebi/icon.4bpp"); @@ -9542,8 +9542,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Celebi[] = INCBIN_U16("graphics/pokemon/celebi/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Celebi[] = INCBIN_U16("graphics/pokemon/celebi/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_CELEBI @@ -9551,14 +9551,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_TREECKO #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Treecko[] = INCBIN_U32("graphics/pokemon/treecko/anim_front.4bpp.lz"); - const u32 gMonPalette_Treecko[] = INCBIN_U32("graphics/pokemon/treecko/normal.gbapal.lz"); + const u16 gMonPalette_Treecko[] = INCBIN_U16("graphics/pokemon/treecko/normal.gbapal"); const u32 gMonBackPic_Treecko[] = INCBIN_U32("graphics/pokemon/treecko/back.4bpp.lz"); - const u32 gMonShinyPalette_Treecko[] = INCBIN_U32("graphics/pokemon/treecko/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Treecko[] = INCBIN_U16("graphics/pokemon/treecko/shiny.gbapal"); #else const u32 gMonFrontPic_Treecko[] = INCBIN_U32("graphics/pokemon/treecko/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Treecko[] = INCBIN_U32("graphics/pokemon/treecko/normal_gba.gbapal.lz"); + const u16 gMonPalette_Treecko[] = INCBIN_U16("graphics/pokemon/treecko/normal_gba.gbapal"); const u32 gMonBackPic_Treecko[] = INCBIN_U32("graphics/pokemon/treecko/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Treecko[] = INCBIN_U32("graphics/pokemon/treecko/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Treecko[] = INCBIN_U16("graphics/pokemon/treecko/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Treecko[] = INCBIN_U8("graphics/pokemon/treecko/icon.4bpp"); @@ -9571,21 +9571,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Treecko[] = INCBIN_U16("graphics/pokemon/treecko/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Treecko[] = INCBIN_U16("graphics/pokemon/treecko/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Grovyle[] = INCBIN_U32("graphics/pokemon/grovyle/anim_front.4bpp.lz"); - const u32 gMonPalette_Grovyle[] = INCBIN_U32("graphics/pokemon/grovyle/normal.gbapal.lz"); + const u16 gMonPalette_Grovyle[] = INCBIN_U16("graphics/pokemon/grovyle/normal.gbapal"); const u32 gMonBackPic_Grovyle[] = INCBIN_U32("graphics/pokemon/grovyle/back.4bpp.lz"); - const u32 gMonShinyPalette_Grovyle[] = INCBIN_U32("graphics/pokemon/grovyle/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Grovyle[] = INCBIN_U16("graphics/pokemon/grovyle/shiny.gbapal"); #else const u32 gMonFrontPic_Grovyle[] = INCBIN_U32("graphics/pokemon/grovyle/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Grovyle[] = INCBIN_U32("graphics/pokemon/grovyle/normal_gba.gbapal.lz"); + const u16 gMonPalette_Grovyle[] = INCBIN_U16("graphics/pokemon/grovyle/normal_gba.gbapal"); const u32 gMonBackPic_Grovyle[] = INCBIN_U32("graphics/pokemon/grovyle/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Grovyle[] = INCBIN_U32("graphics/pokemon/grovyle/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Grovyle[] = INCBIN_U16("graphics/pokemon/grovyle/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Grovyle[] = INCBIN_U8("graphics/pokemon/grovyle/icon.4bpp"); @@ -9598,21 +9598,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Grovyle[] = INCBIN_U16("graphics/pokemon/grovyle/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Grovyle[] = INCBIN_U16("graphics/pokemon/grovyle/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Sceptile[] = INCBIN_U32("graphics/pokemon/sceptile/anim_front.4bpp.lz"); - const u32 gMonPalette_Sceptile[] = INCBIN_U32("graphics/pokemon/sceptile/normal.gbapal.lz"); + const u16 gMonPalette_Sceptile[] = INCBIN_U16("graphics/pokemon/sceptile/normal.gbapal"); const u32 gMonBackPic_Sceptile[] = INCBIN_U32("graphics/pokemon/sceptile/back.4bpp.lz"); - const u32 gMonShinyPalette_Sceptile[] = INCBIN_U32("graphics/pokemon/sceptile/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Sceptile[] = INCBIN_U16("graphics/pokemon/sceptile/shiny.gbapal"); #else const u32 gMonFrontPic_Sceptile[] = INCBIN_U32("graphics/pokemon/sceptile/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Sceptile[] = INCBIN_U32("graphics/pokemon/sceptile/normal_gba.gbapal.lz"); + const u16 gMonPalette_Sceptile[] = INCBIN_U16("graphics/pokemon/sceptile/normal_gba.gbapal"); const u32 gMonBackPic_Sceptile[] = INCBIN_U32("graphics/pokemon/sceptile/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Sceptile[] = INCBIN_U32("graphics/pokemon/sceptile/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Sceptile[] = INCBIN_U16("graphics/pokemon/sceptile/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Sceptile[] = INCBIN_U8("graphics/pokemon/sceptile/icon.4bpp"); @@ -9625,22 +9625,22 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Sceptile[] = INCBIN_U16("graphics/pokemon/sceptile/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Sceptile[] = INCBIN_U16("graphics/pokemon/sceptile/overworld_shiny.gbapal"); #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"); - const u32 gMonPalette_SceptileMega[] = INCBIN_U32("graphics/pokemon/sceptile/mega/normal.gbapal.lz"); + const u16 gMonPalette_SceptileMega[] = INCBIN_U16("graphics/pokemon/sceptile/mega/normal.gbapal"); 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 u16 gMonShinyPalette_SceptileMega[] = INCBIN_U16("graphics/pokemon/sceptile/mega/shiny.gbapal"); const u8 gMonIcon_SceptileMega[] = INCBIN_U8("graphics/pokemon/sceptile/mega/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS 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"); + const u16 gOverworldPalette_SceptileMega[] = INCBIN_U16("graphics/pokemon/sceptile/mega/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_SceptileMega[] = INCBIN_U16("graphics/pokemon/sceptile/mega/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS #endif //P_MEGA_EVOLUTIONS @@ -9649,14 +9649,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_TORCHIC #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Torchic[] = INCBIN_U32("graphics/pokemon/torchic/anim_front.4bpp.lz"); - const u32 gMonPalette_Torchic[] = INCBIN_U32("graphics/pokemon/torchic/normal.gbapal.lz"); + const u16 gMonPalette_Torchic[] = INCBIN_U16("graphics/pokemon/torchic/normal.gbapal"); const u32 gMonBackPic_Torchic[] = INCBIN_U32("graphics/pokemon/torchic/back.4bpp.lz"); - const u32 gMonShinyPalette_Torchic[] = INCBIN_U32("graphics/pokemon/torchic/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Torchic[] = INCBIN_U16("graphics/pokemon/torchic/shiny.gbapal"); #else const u32 gMonFrontPic_Torchic[] = INCBIN_U32("graphics/pokemon/torchic/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Torchic[] = INCBIN_U32("graphics/pokemon/torchic/normal_gba.gbapal.lz"); + const u16 gMonPalette_Torchic[] = INCBIN_U16("graphics/pokemon/torchic/normal_gba.gbapal"); const u32 gMonBackPic_Torchic[] = INCBIN_U32("graphics/pokemon/torchic/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Torchic[] = INCBIN_U32("graphics/pokemon/torchic/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Torchic[] = INCBIN_U16("graphics/pokemon/torchic/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Torchic[] = INCBIN_U8("graphics/pokemon/torchic/icon.4bpp"); @@ -9669,8 +9669,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Torchic[] = INCBIN_U16("graphics/pokemon/torchic/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Torchic[] = INCBIN_U16("graphics/pokemon/torchic/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -9683,14 +9683,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Combusken[] = INCBIN_U32("graphics/pokemon/combusken/anim_front.4bpp.lz"); - const u32 gMonPalette_Combusken[] = INCBIN_U32("graphics/pokemon/combusken/normal.gbapal.lz"); + const u16 gMonPalette_Combusken[] = INCBIN_U16("graphics/pokemon/combusken/normal.gbapal"); const u32 gMonBackPic_Combusken[] = INCBIN_U32("graphics/pokemon/combusken/back.4bpp.lz"); - const u32 gMonShinyPalette_Combusken[] = INCBIN_U32("graphics/pokemon/combusken/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Combusken[] = INCBIN_U16("graphics/pokemon/combusken/shiny.gbapal"); #else const u32 gMonFrontPic_Combusken[] = INCBIN_U32("graphics/pokemon/combusken/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Combusken[] = INCBIN_U32("graphics/pokemon/combusken/normal_gba.gbapal.lz"); + const u16 gMonPalette_Combusken[] = INCBIN_U16("graphics/pokemon/combusken/normal_gba.gbapal"); const u32 gMonBackPic_Combusken[] = INCBIN_U32("graphics/pokemon/combusken/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Combusken[] = INCBIN_U32("graphics/pokemon/combusken/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Combusken[] = INCBIN_U16("graphics/pokemon/combusken/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Combusken[] = INCBIN_U8("graphics/pokemon/combusken/icon.4bpp"); @@ -9703,8 +9703,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Combusken[] = INCBIN_U16("graphics/pokemon/combusken/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Combusken[] = INCBIN_U16("graphics/pokemon/combusken/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -9718,14 +9718,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Blaziken[] = INCBIN_U32("graphics/pokemon/blaziken/anim_front.4bpp.lz"); - const u32 gMonPalette_Blaziken[] = INCBIN_U32("graphics/pokemon/blaziken/normal.gbapal.lz"); + const u16 gMonPalette_Blaziken[] = INCBIN_U16("graphics/pokemon/blaziken/normal.gbapal"); const u32 gMonBackPic_Blaziken[] = INCBIN_U32("graphics/pokemon/blaziken/back.4bpp.lz"); - const u32 gMonShinyPalette_Blaziken[] = INCBIN_U32("graphics/pokemon/blaziken/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Blaziken[] = INCBIN_U16("graphics/pokemon/blaziken/shiny.gbapal"); #else const u32 gMonFrontPic_Blaziken[] = INCBIN_U32("graphics/pokemon/blaziken/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Blaziken[] = INCBIN_U32("graphics/pokemon/blaziken/normal_gba.gbapal.lz"); + const u16 gMonPalette_Blaziken[] = INCBIN_U16("graphics/pokemon/blaziken/normal_gba.gbapal"); const u32 gMonBackPic_Blaziken[] = INCBIN_U32("graphics/pokemon/blaziken/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Blaziken[] = INCBIN_U32("graphics/pokemon/blaziken/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Blaziken[] = INCBIN_U16("graphics/pokemon/blaziken/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Blaziken[] = INCBIN_U8("graphics/pokemon/blaziken/icon.4bpp"); @@ -9738,8 +9738,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Blaziken[] = INCBIN_U16("graphics/pokemon/blaziken/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Blaziken[] = INCBIN_U16("graphics/pokemon/blaziken/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -9753,15 +9753,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_MEGA_EVOLUTIONS const u32 gMonFrontPic_BlazikenMega[] = INCBIN_U32("graphics/pokemon/blaziken/mega/front.4bpp.lz"); - const u32 gMonPalette_BlazikenMega[] = INCBIN_U32("graphics/pokemon/blaziken/mega/normal.gbapal.lz"); + const u16 gMonPalette_BlazikenMega[] = INCBIN_U16("graphics/pokemon/blaziken/mega/normal.gbapal"); 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 u16 gMonShinyPalette_BlazikenMega[] = INCBIN_U16("graphics/pokemon/blaziken/mega/shiny.gbapal"); const u8 gMonIcon_BlazikenMega[] = INCBIN_U8("graphics/pokemon/blaziken/mega/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS 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"); + const u16 gOverworldPalette_BlazikenMega[] = INCBIN_U16("graphics/pokemon/blaziken/mega/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_BlazikenMega[] = INCBIN_U16("graphics/pokemon/blaziken/mega/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS #endif //P_MEGA_EVOLUTIONS @@ -9770,14 +9770,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_MUDKIP #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Mudkip[] = INCBIN_U32("graphics/pokemon/mudkip/anim_front.4bpp.lz"); - const u32 gMonPalette_Mudkip[] = INCBIN_U32("graphics/pokemon/mudkip/normal.gbapal.lz"); + const u16 gMonPalette_Mudkip[] = INCBIN_U16("graphics/pokemon/mudkip/normal.gbapal"); const u32 gMonBackPic_Mudkip[] = INCBIN_U32("graphics/pokemon/mudkip/back.4bpp.lz"); - const u32 gMonShinyPalette_Mudkip[] = INCBIN_U32("graphics/pokemon/mudkip/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Mudkip[] = INCBIN_U16("graphics/pokemon/mudkip/shiny.gbapal"); #else const u32 gMonFrontPic_Mudkip[] = INCBIN_U32("graphics/pokemon/mudkip/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Mudkip[] = INCBIN_U32("graphics/pokemon/mudkip/normal_gba.gbapal.lz"); + const u16 gMonPalette_Mudkip[] = INCBIN_U16("graphics/pokemon/mudkip/normal_gba.gbapal"); const u32 gMonBackPic_Mudkip[] = INCBIN_U32("graphics/pokemon/mudkip/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Mudkip[] = INCBIN_U32("graphics/pokemon/mudkip/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Mudkip[] = INCBIN_U16("graphics/pokemon/mudkip/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Mudkip[] = INCBIN_U8("graphics/pokemon/mudkip/icon.4bpp"); @@ -9790,21 +9790,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Mudkip[] = INCBIN_U16("graphics/pokemon/mudkip/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Mudkip[] = INCBIN_U16("graphics/pokemon/mudkip/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Marshtomp[] = INCBIN_U32("graphics/pokemon/marshtomp/anim_front.4bpp.lz"); - const u32 gMonPalette_Marshtomp[] = INCBIN_U32("graphics/pokemon/marshtomp/normal.gbapal.lz"); + const u16 gMonPalette_Marshtomp[] = INCBIN_U16("graphics/pokemon/marshtomp/normal.gbapal"); const u32 gMonBackPic_Marshtomp[] = INCBIN_U32("graphics/pokemon/marshtomp/back.4bpp.lz"); - const u32 gMonShinyPalette_Marshtomp[] = INCBIN_U32("graphics/pokemon/marshtomp/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Marshtomp[] = INCBIN_U16("graphics/pokemon/marshtomp/shiny.gbapal"); #else const u32 gMonFrontPic_Marshtomp[] = INCBIN_U32("graphics/pokemon/marshtomp/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Marshtomp[] = INCBIN_U32("graphics/pokemon/marshtomp/normal_gba.gbapal.lz"); + const u16 gMonPalette_Marshtomp[] = INCBIN_U16("graphics/pokemon/marshtomp/normal_gba.gbapal"); const u32 gMonBackPic_Marshtomp[] = INCBIN_U32("graphics/pokemon/marshtomp/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Marshtomp[] = INCBIN_U32("graphics/pokemon/marshtomp/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Marshtomp[] = INCBIN_U16("graphics/pokemon/marshtomp/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Marshtomp[] = INCBIN_U8("graphics/pokemon/marshtomp/icon.4bpp"); @@ -9817,21 +9817,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Marshtomp[] = INCBIN_U16("graphics/pokemon/marshtomp/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Marshtomp[] = INCBIN_U16("graphics/pokemon/marshtomp/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Swampert[] = INCBIN_U32("graphics/pokemon/swampert/anim_front.4bpp.lz"); - const u32 gMonPalette_Swampert[] = INCBIN_U32("graphics/pokemon/swampert/normal.gbapal.lz"); + const u16 gMonPalette_Swampert[] = INCBIN_U16("graphics/pokemon/swampert/normal.gbapal"); const u32 gMonBackPic_Swampert[] = INCBIN_U32("graphics/pokemon/swampert/back.4bpp.lz"); - const u32 gMonShinyPalette_Swampert[] = INCBIN_U32("graphics/pokemon/swampert/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Swampert[] = INCBIN_U16("graphics/pokemon/swampert/shiny.gbapal"); #else const u32 gMonFrontPic_Swampert[] = INCBIN_U32("graphics/pokemon/swampert/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Swampert[] = INCBIN_U32("graphics/pokemon/swampert/normal_gba.gbapal.lz"); + const u16 gMonPalette_Swampert[] = INCBIN_U16("graphics/pokemon/swampert/normal_gba.gbapal"); const u32 gMonBackPic_Swampert[] = INCBIN_U32("graphics/pokemon/swampert/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Swampert[] = INCBIN_U32("graphics/pokemon/swampert/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Swampert[] = INCBIN_U16("graphics/pokemon/swampert/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Swampert[] = INCBIN_U8("graphics/pokemon/swampert/icon.4bpp"); @@ -9844,22 +9844,22 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Swampert[] = INCBIN_U16("graphics/pokemon/swampert/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Swampert[] = INCBIN_U16("graphics/pokemon/swampert/overworld_shiny.gbapal"); #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"); - const u32 gMonPalette_SwampertMega[] = INCBIN_U32("graphics/pokemon/swampert/mega/normal.gbapal.lz"); + const u16 gMonPalette_SwampertMega[] = INCBIN_U16("graphics/pokemon/swampert/mega/normal.gbapal"); 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 u16 gMonShinyPalette_SwampertMega[] = INCBIN_U16("graphics/pokemon/swampert/mega/shiny.gbapal"); const u8 gMonIcon_SwampertMega[] = INCBIN_U8("graphics/pokemon/swampert/mega/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS 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"); + const u16 gOverworldPalette_SwampertMega[] = INCBIN_U16("graphics/pokemon/swampert/mega/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_SwampertMega[] = INCBIN_U16("graphics/pokemon/swampert/mega/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS #endif //P_MEGA_EVOLUTIONS @@ -9868,14 +9868,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_POOCHYENA #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Poochyena[] = INCBIN_U32("graphics/pokemon/poochyena/anim_front.4bpp.lz"); - const u32 gMonPalette_Poochyena[] = INCBIN_U32("graphics/pokemon/poochyena/normal.gbapal.lz"); + const u16 gMonPalette_Poochyena[] = INCBIN_U16("graphics/pokemon/poochyena/normal.gbapal"); const u32 gMonBackPic_Poochyena[] = INCBIN_U32("graphics/pokemon/poochyena/back.4bpp.lz"); - const u32 gMonShinyPalette_Poochyena[] = INCBIN_U32("graphics/pokemon/poochyena/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Poochyena[] = INCBIN_U16("graphics/pokemon/poochyena/shiny.gbapal"); #else const u32 gMonFrontPic_Poochyena[] = INCBIN_U32("graphics/pokemon/poochyena/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Poochyena[] = INCBIN_U32("graphics/pokemon/poochyena/normal_gba.gbapal.lz"); + const u16 gMonPalette_Poochyena[] = INCBIN_U16("graphics/pokemon/poochyena/normal_gba.gbapal"); const u32 gMonBackPic_Poochyena[] = INCBIN_U32("graphics/pokemon/poochyena/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Poochyena[] = INCBIN_U32("graphics/pokemon/poochyena/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Poochyena[] = INCBIN_U16("graphics/pokemon/poochyena/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Poochyena[] = INCBIN_U8("graphics/pokemon/poochyena/icon.4bpp"); @@ -9888,21 +9888,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Poochyena[] = INCBIN_U16("graphics/pokemon/poochyena/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Poochyena[] = INCBIN_U16("graphics/pokemon/poochyena/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Mightyena[] = INCBIN_U32("graphics/pokemon/mightyena/anim_front.4bpp.lz"); - const u32 gMonPalette_Mightyena[] = INCBIN_U32("graphics/pokemon/mightyena/normal.gbapal.lz"); + const u16 gMonPalette_Mightyena[] = INCBIN_U16("graphics/pokemon/mightyena/normal.gbapal"); const u32 gMonBackPic_Mightyena[] = INCBIN_U32("graphics/pokemon/mightyena/back.4bpp.lz"); - const u32 gMonShinyPalette_Mightyena[] = INCBIN_U32("graphics/pokemon/mightyena/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Mightyena[] = INCBIN_U16("graphics/pokemon/mightyena/shiny.gbapal"); #else const u32 gMonFrontPic_Mightyena[] = INCBIN_U32("graphics/pokemon/mightyena/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Mightyena[] = INCBIN_U32("graphics/pokemon/mightyena/normal_gba.gbapal.lz"); + const u16 gMonPalette_Mightyena[] = INCBIN_U16("graphics/pokemon/mightyena/normal_gba.gbapal"); const u32 gMonBackPic_Mightyena[] = INCBIN_U32("graphics/pokemon/mightyena/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Mightyena[] = INCBIN_U32("graphics/pokemon/mightyena/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Mightyena[] = INCBIN_U16("graphics/pokemon/mightyena/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Mightyena[] = INCBIN_U8("graphics/pokemon/mightyena/icon.4bpp"); @@ -9915,8 +9915,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Mightyena[] = INCBIN_U16("graphics/pokemon/mightyena/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Mightyena[] = INCBIN_U16("graphics/pokemon/mightyena/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_POOCHYENA @@ -9924,14 +9924,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_ZIGZAGOON #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Zigzagoon[] = INCBIN_U32("graphics/pokemon/zigzagoon/anim_front.4bpp.lz"); - const u32 gMonPalette_Zigzagoon[] = INCBIN_U32("graphics/pokemon/zigzagoon/normal.gbapal.lz"); + const u16 gMonPalette_Zigzagoon[] = INCBIN_U16("graphics/pokemon/zigzagoon/normal.gbapal"); const u32 gMonBackPic_Zigzagoon[] = INCBIN_U32("graphics/pokemon/zigzagoon/back.4bpp.lz"); - const u32 gMonShinyPalette_Zigzagoon[] = INCBIN_U32("graphics/pokemon/zigzagoon/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Zigzagoon[] = INCBIN_U16("graphics/pokemon/zigzagoon/shiny.gbapal"); #else const u32 gMonFrontPic_Zigzagoon[] = INCBIN_U32("graphics/pokemon/zigzagoon/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Zigzagoon[] = INCBIN_U32("graphics/pokemon/zigzagoon/normal_gba.gbapal.lz"); + const u16 gMonPalette_Zigzagoon[] = INCBIN_U16("graphics/pokemon/zigzagoon/normal_gba.gbapal"); const u32 gMonBackPic_Zigzagoon[] = INCBIN_U32("graphics/pokemon/zigzagoon/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Zigzagoon[] = INCBIN_U32("graphics/pokemon/zigzagoon/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Zigzagoon[] = INCBIN_U16("graphics/pokemon/zigzagoon/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Zigzagoon[] = INCBIN_U8("graphics/pokemon/zigzagoon/icon.4bpp"); @@ -9944,21 +9944,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Zigzagoon[] = INCBIN_U16("graphics/pokemon/zigzagoon/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Zigzagoon[] = INCBIN_U16("graphics/pokemon/zigzagoon/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Linoone[] = INCBIN_U32("graphics/pokemon/linoone/anim_front.4bpp.lz"); - const u32 gMonPalette_Linoone[] = INCBIN_U32("graphics/pokemon/linoone/normal.gbapal.lz"); + const u16 gMonPalette_Linoone[] = INCBIN_U16("graphics/pokemon/linoone/normal.gbapal"); const u32 gMonBackPic_Linoone[] = INCBIN_U32("graphics/pokemon/linoone/back.4bpp.lz"); - const u32 gMonShinyPalette_Linoone[] = INCBIN_U32("graphics/pokemon/linoone/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Linoone[] = INCBIN_U16("graphics/pokemon/linoone/shiny.gbapal"); #else const u32 gMonFrontPic_Linoone[] = INCBIN_U32("graphics/pokemon/linoone/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Linoone[] = INCBIN_U32("graphics/pokemon/linoone/normal_gba.gbapal.lz"); + const u16 gMonPalette_Linoone[] = INCBIN_U16("graphics/pokemon/linoone/normal_gba.gbapal"); const u32 gMonBackPic_Linoone[] = INCBIN_U32("graphics/pokemon/linoone/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Linoone[] = INCBIN_U32("graphics/pokemon/linoone/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Linoone[] = INCBIN_U16("graphics/pokemon/linoone/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Linoone[] = INCBIN_U8("graphics/pokemon/linoone/icon.4bpp"); @@ -9971,42 +9971,42 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Linoone[] = INCBIN_U16("graphics/pokemon/linoone/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Linoone[] = INCBIN_U16("graphics/pokemon/linoone/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if P_GALARIAN_FORMS const u32 gMonFrontPic_ZigzagoonGalar[] = INCBIN_U32("graphics/pokemon/zigzagoon/galar/front.4bpp.lz"); - const u32 gMonPalette_ZigzagoonGalar[] = INCBIN_U32("graphics/pokemon/zigzagoon/galar/normal.gbapal.lz"); + const u16 gMonPalette_ZigzagoonGalar[] = INCBIN_U16("graphics/pokemon/zigzagoon/galar/normal.gbapal"); const u32 gMonBackPic_ZigzagoonGalar[] = INCBIN_U32("graphics/pokemon/zigzagoon/galar/back.4bpp.lz"); - const u32 gMonShinyPalette_ZigzagoonGalar[] = INCBIN_U32("graphics/pokemon/zigzagoon/galar/shiny.gbapal.lz"); + const u16 gMonShinyPalette_ZigzagoonGalar[] = INCBIN_U16("graphics/pokemon/zigzagoon/galar/shiny.gbapal"); const u8 gMonIcon_ZigzagoonGalar[] = INCBIN_U8("graphics/pokemon/zigzagoon/galar/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS const u32 gObjectEventPic_ZigzagoonGalar[] = INCBIN_COMP("graphics/pokemon/zigzagoon/galar/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - const u32 gOverworldPalette_ZigzagoonGalar[] = INCBIN_U32("graphics/pokemon/zigzagoon/galar/overworld_normal.gbapal.lz"); - const u32 gShinyOverworldPalette_ZigzagoonGalar[] = INCBIN_U32("graphics/pokemon/zigzagoon/galar/overworld_shiny.gbapal.lz"); + const u16 gOverworldPalette_ZigzagoonGalar[] = INCBIN_U16("graphics/pokemon/zigzagoon/galar/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_ZigzagoonGalar[] = INCBIN_U16("graphics/pokemon/zigzagoon/galar/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_LinooneGalar[] = INCBIN_U32("graphics/pokemon/linoone/galar/front.4bpp.lz"); - const u32 gMonPalette_LinooneGalar[] = INCBIN_U32("graphics/pokemon/linoone/galar/normal.gbapal.lz"); + const u16 gMonPalette_LinooneGalar[] = INCBIN_U16("graphics/pokemon/linoone/galar/normal.gbapal"); const u32 gMonBackPic_LinooneGalar[] = INCBIN_U32("graphics/pokemon/linoone/galar/back.4bpp.lz"); - const u32 gMonShinyPalette_LinooneGalar[] = INCBIN_U32("graphics/pokemon/linoone/galar/shiny.gbapal.lz"); + const u16 gMonShinyPalette_LinooneGalar[] = INCBIN_U16("graphics/pokemon/linoone/galar/shiny.gbapal"); const u8 gMonIcon_LinooneGalar[] = INCBIN_U8("graphics/pokemon/linoone/galar/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS const u32 gObjectEventPic_LinooneGalar[] = INCBIN_COMP("graphics/pokemon/linoone/galar/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - const u32 gOverworldPalette_LinooneGalar[] = INCBIN_U32("graphics/pokemon/linoone/galar/overworld_normal.gbapal.lz"); - const u32 gShinyOverworldPalette_LinooneGalar[] = INCBIN_U32("graphics/pokemon/linoone/galar/overworld_shiny.gbapal.lz"); + const u16 gOverworldPalette_LinooneGalar[] = INCBIN_U16("graphics/pokemon/linoone/galar/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_LinooneGalar[] = INCBIN_U16("graphics/pokemon/linoone/galar/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Obstagoon[] = INCBIN_U16("graphics/pokemon/obstagoon/normal.gbapal"); const u32 gMonBackPic_Obstagoon[] = INCBIN_U32("graphics/pokemon/obstagoon/back.4bpp.lz"); - const u32 gMonShinyPalette_Obstagoon[] = INCBIN_U32("graphics/pokemon/obstagoon/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Obstagoon[] = INCBIN_U16("graphics/pokemon/obstagoon/shiny.gbapal"); const u8 gMonIcon_Obstagoon[] = INCBIN_U8("graphics/pokemon/obstagoon/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Obstagoon[] = INCBIN_U8("graphics/pokemon/obstagoon/footprint.1bpp"); @@ -10014,8 +10014,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Obstagoon[] = INCBIN_U16("graphics/pokemon/obstagoon/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Obstagoon[] = INCBIN_U16("graphics/pokemon/obstagoon/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GALARIAN_FORMS @@ -10024,14 +10024,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_WURMPLE #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Wurmple[] = INCBIN_U32("graphics/pokemon/wurmple/anim_front.4bpp.lz"); - const u32 gMonPalette_Wurmple[] = INCBIN_U32("graphics/pokemon/wurmple/normal.gbapal.lz"); + const u16 gMonPalette_Wurmple[] = INCBIN_U16("graphics/pokemon/wurmple/normal.gbapal"); const u32 gMonBackPic_Wurmple[] = INCBIN_U32("graphics/pokemon/wurmple/back.4bpp.lz"); - const u32 gMonShinyPalette_Wurmple[] = INCBIN_U32("graphics/pokemon/wurmple/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Wurmple[] = INCBIN_U16("graphics/pokemon/wurmple/shiny.gbapal"); #else const u32 gMonFrontPic_Wurmple[] = INCBIN_U32("graphics/pokemon/wurmple/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Wurmple[] = INCBIN_U32("graphics/pokemon/wurmple/normal_gba.gbapal.lz"); + const u16 gMonPalette_Wurmple[] = INCBIN_U16("graphics/pokemon/wurmple/normal_gba.gbapal"); const u32 gMonBackPic_Wurmple[] = INCBIN_U32("graphics/pokemon/wurmple/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Wurmple[] = INCBIN_U32("graphics/pokemon/wurmple/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Wurmple[] = INCBIN_U16("graphics/pokemon/wurmple/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Wurmple[] = INCBIN_U8("graphics/pokemon/wurmple/icon.4bpp"); @@ -10044,21 +10044,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Wurmple[] = INCBIN_U16("graphics/pokemon/wurmple/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Wurmple[] = INCBIN_U16("graphics/pokemon/wurmple/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Silcoon[] = INCBIN_U32("graphics/pokemon/silcoon/anim_front.4bpp.lz"); - const u32 gMonPalette_Silcoon[] = INCBIN_U32("graphics/pokemon/silcoon/normal.gbapal.lz"); + const u16 gMonPalette_Silcoon[] = INCBIN_U16("graphics/pokemon/silcoon/normal.gbapal"); const u32 gMonBackPic_Silcoon[] = INCBIN_U32("graphics/pokemon/silcoon/back.4bpp.lz"); - const u32 gMonShinyPalette_Silcoon[] = INCBIN_U32("graphics/pokemon/silcoon/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Silcoon[] = INCBIN_U16("graphics/pokemon/silcoon/shiny.gbapal"); #else const u32 gMonFrontPic_Silcoon[] = INCBIN_U32("graphics/pokemon/silcoon/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Silcoon[] = INCBIN_U32("graphics/pokemon/silcoon/normal_gba.gbapal.lz"); + const u16 gMonPalette_Silcoon[] = INCBIN_U16("graphics/pokemon/silcoon/normal_gba.gbapal"); const u32 gMonBackPic_Silcoon[] = INCBIN_U32("graphics/pokemon/silcoon/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Silcoon[] = INCBIN_U32("graphics/pokemon/silcoon/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Silcoon[] = INCBIN_U16("graphics/pokemon/silcoon/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Silcoon[] = INCBIN_U8("graphics/pokemon/silcoon/icon.4bpp"); @@ -10071,21 +10071,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Silcoon[] = INCBIN_U16("graphics/pokemon/silcoon/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Silcoon[] = INCBIN_U16("graphics/pokemon/silcoon/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Beautifly[] = INCBIN_U32("graphics/pokemon/beautifly/anim_front.4bpp.lz"); - const u32 gMonPalette_Beautifly[] = INCBIN_U32("graphics/pokemon/beautifly/normal.gbapal.lz"); + const u16 gMonPalette_Beautifly[] = INCBIN_U16("graphics/pokemon/beautifly/normal.gbapal"); const u32 gMonBackPic_Beautifly[] = INCBIN_U32("graphics/pokemon/beautifly/back.4bpp.lz"); - const u32 gMonShinyPalette_Beautifly[] = INCBIN_U32("graphics/pokemon/beautifly/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Beautifly[] = INCBIN_U16("graphics/pokemon/beautifly/shiny.gbapal"); #else const u32 gMonFrontPic_Beautifly[] = INCBIN_U32("graphics/pokemon/beautifly/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Beautifly[] = INCBIN_U32("graphics/pokemon/beautifly/normal_gba.gbapal.lz"); + const u16 gMonPalette_Beautifly[] = INCBIN_U16("graphics/pokemon/beautifly/normal_gba.gbapal"); const u32 gMonBackPic_Beautifly[] = INCBIN_U32("graphics/pokemon/beautifly/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Beautifly[] = INCBIN_U32("graphics/pokemon/beautifly/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Beautifly[] = INCBIN_U16("graphics/pokemon/beautifly/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Beautifly[] = INCBIN_U8("graphics/pokemon/beautifly/icon.4bpp"); @@ -10098,8 +10098,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Beautifly[] = INCBIN_U16("graphics/pokemon/beautifly/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Beautifly[] = INCBIN_U16("graphics/pokemon/beautifly/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -10113,14 +10113,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Cascoon[] = INCBIN_U32("graphics/pokemon/cascoon/anim_front.4bpp.lz"); - const u32 gMonPalette_Cascoon[] = INCBIN_U32("graphics/pokemon/cascoon/normal.gbapal.lz"); + const u16 gMonPalette_Cascoon[] = INCBIN_U16("graphics/pokemon/cascoon/normal.gbapal"); const u32 gMonBackPic_Cascoon[] = INCBIN_U32("graphics/pokemon/cascoon/back.4bpp.lz"); - const u32 gMonShinyPalette_Cascoon[] = INCBIN_U32("graphics/pokemon/cascoon/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Cascoon[] = INCBIN_U16("graphics/pokemon/cascoon/shiny.gbapal"); #else const u32 gMonFrontPic_Cascoon[] = INCBIN_U32("graphics/pokemon/cascoon/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Cascoon[] = INCBIN_U32("graphics/pokemon/cascoon/normal_gba.gbapal.lz"); + const u16 gMonPalette_Cascoon[] = INCBIN_U16("graphics/pokemon/cascoon/normal_gba.gbapal"); const u32 gMonBackPic_Cascoon[] = INCBIN_U32("graphics/pokemon/cascoon/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Cascoon[] = INCBIN_U32("graphics/pokemon/cascoon/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Cascoon[] = INCBIN_U16("graphics/pokemon/cascoon/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Cascoon[] = INCBIN_U8("graphics/pokemon/cascoon/icon.4bpp"); @@ -10133,21 +10133,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Cascoon[] = INCBIN_U16("graphics/pokemon/cascoon/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Cascoon[] = INCBIN_U16("graphics/pokemon/cascoon/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Dustox[] = INCBIN_U32("graphics/pokemon/dustox/anim_front.4bpp.lz"); - const u32 gMonPalette_Dustox[] = INCBIN_U32("graphics/pokemon/dustox/normal.gbapal.lz"); + const u16 gMonPalette_Dustox[] = INCBIN_U16("graphics/pokemon/dustox/normal.gbapal"); const u32 gMonBackPic_Dustox[] = INCBIN_U32("graphics/pokemon/dustox/back.4bpp.lz"); - const u32 gMonShinyPalette_Dustox[] = INCBIN_U32("graphics/pokemon/dustox/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Dustox[] = INCBIN_U16("graphics/pokemon/dustox/shiny.gbapal"); #else const u32 gMonFrontPic_Dustox[] = INCBIN_U32("graphics/pokemon/dustox/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Dustox[] = INCBIN_U32("graphics/pokemon/dustox/normal_gba.gbapal.lz"); + const u16 gMonPalette_Dustox[] = INCBIN_U16("graphics/pokemon/dustox/normal_gba.gbapal"); const u32 gMonBackPic_Dustox[] = INCBIN_U32("graphics/pokemon/dustox/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Dustox[] = INCBIN_U32("graphics/pokemon/dustox/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Dustox[] = INCBIN_U16("graphics/pokemon/dustox/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Dustox[] = INCBIN_U8("graphics/pokemon/dustox/icon.4bpp"); @@ -10160,8 +10160,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Dustox[] = INCBIN_U16("graphics/pokemon/dustox/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Dustox[] = INCBIN_U16("graphics/pokemon/dustox/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -10177,14 +10177,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_LOTAD #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Lotad[] = INCBIN_U32("graphics/pokemon/lotad/anim_front.4bpp.lz"); - const u32 gMonPalette_Lotad[] = INCBIN_U32("graphics/pokemon/lotad/normal.gbapal.lz"); + const u16 gMonPalette_Lotad[] = INCBIN_U16("graphics/pokemon/lotad/normal.gbapal"); const u32 gMonBackPic_Lotad[] = INCBIN_U32("graphics/pokemon/lotad/back.4bpp.lz"); - const u32 gMonShinyPalette_Lotad[] = INCBIN_U32("graphics/pokemon/lotad/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Lotad[] = INCBIN_U16("graphics/pokemon/lotad/shiny.gbapal"); #else const u32 gMonFrontPic_Lotad[] = INCBIN_U32("graphics/pokemon/lotad/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Lotad[] = INCBIN_U32("graphics/pokemon/lotad/normal_gba.gbapal.lz"); + const u16 gMonPalette_Lotad[] = INCBIN_U16("graphics/pokemon/lotad/normal_gba.gbapal"); const u32 gMonBackPic_Lotad[] = INCBIN_U32("graphics/pokemon/lotad/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Lotad[] = INCBIN_U32("graphics/pokemon/lotad/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Lotad[] = INCBIN_U16("graphics/pokemon/lotad/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Lotad[] = INCBIN_U8("graphics/pokemon/lotad/icon.4bpp"); @@ -10197,21 +10197,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Lotad[] = INCBIN_U16("graphics/pokemon/lotad/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Lotad[] = INCBIN_U16("graphics/pokemon/lotad/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Lombre[] = INCBIN_U32("graphics/pokemon/lombre/anim_front.4bpp.lz"); - const u32 gMonPalette_Lombre[] = INCBIN_U32("graphics/pokemon/lombre/normal.gbapal.lz"); + const u16 gMonPalette_Lombre[] = INCBIN_U16("graphics/pokemon/lombre/normal.gbapal"); const u32 gMonBackPic_Lombre[] = INCBIN_U32("graphics/pokemon/lombre/back.4bpp.lz"); - const u32 gMonShinyPalette_Lombre[] = INCBIN_U32("graphics/pokemon/lombre/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Lombre[] = INCBIN_U16("graphics/pokemon/lombre/shiny.gbapal"); #else const u32 gMonFrontPic_Lombre[] = INCBIN_U32("graphics/pokemon/lombre/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Lombre[] = INCBIN_U32("graphics/pokemon/lombre/normal_gba.gbapal.lz"); + const u16 gMonPalette_Lombre[] = INCBIN_U16("graphics/pokemon/lombre/normal_gba.gbapal"); const u32 gMonBackPic_Lombre[] = INCBIN_U32("graphics/pokemon/lombre/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Lombre[] = INCBIN_U32("graphics/pokemon/lombre/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Lombre[] = INCBIN_U16("graphics/pokemon/lombre/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Lombre[] = INCBIN_U8("graphics/pokemon/lombre/icon.4bpp"); @@ -10224,21 +10224,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Lombre[] = INCBIN_U16("graphics/pokemon/lombre/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Lombre[] = INCBIN_U16("graphics/pokemon/lombre/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Ludicolo[] = INCBIN_U32("graphics/pokemon/ludicolo/anim_front.4bpp.lz"); - const u32 gMonPalette_Ludicolo[] = INCBIN_U32("graphics/pokemon/ludicolo/normal.gbapal.lz"); + const u16 gMonPalette_Ludicolo[] = INCBIN_U16("graphics/pokemon/ludicolo/normal.gbapal"); const u32 gMonBackPic_Ludicolo[] = INCBIN_U32("graphics/pokemon/ludicolo/back.4bpp.lz"); - const u32 gMonShinyPalette_Ludicolo[] = INCBIN_U32("graphics/pokemon/ludicolo/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Ludicolo[] = INCBIN_U16("graphics/pokemon/ludicolo/shiny.gbapal"); #else const u32 gMonFrontPic_Ludicolo[] = INCBIN_U32("graphics/pokemon/ludicolo/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Ludicolo[] = INCBIN_U32("graphics/pokemon/ludicolo/normal_gba.gbapal.lz"); + const u16 gMonPalette_Ludicolo[] = INCBIN_U16("graphics/pokemon/ludicolo/normal_gba.gbapal"); const u32 gMonBackPic_Ludicolo[] = INCBIN_U32("graphics/pokemon/ludicolo/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Ludicolo[] = INCBIN_U32("graphics/pokemon/ludicolo/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Ludicolo[] = INCBIN_U16("graphics/pokemon/ludicolo/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Ludicolo[] = INCBIN_U8("graphics/pokemon/ludicolo/icon.4bpp"); @@ -10255,8 +10255,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Ludicolo[] = INCBIN_U16("graphics/pokemon/ludicolo/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Ludicolo[] = INCBIN_U16("graphics/pokemon/ludicolo/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -10272,14 +10272,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_SEEDOT #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Seedot[] = INCBIN_U32("graphics/pokemon/seedot/anim_front.4bpp.lz"); - const u32 gMonPalette_Seedot[] = INCBIN_U32("graphics/pokemon/seedot/normal.gbapal.lz"); + const u16 gMonPalette_Seedot[] = INCBIN_U16("graphics/pokemon/seedot/normal.gbapal"); const u32 gMonBackPic_Seedot[] = INCBIN_U32("graphics/pokemon/seedot/back.4bpp.lz"); - const u32 gMonShinyPalette_Seedot[] = INCBIN_U32("graphics/pokemon/seedot/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Seedot[] = INCBIN_U16("graphics/pokemon/seedot/shiny.gbapal"); #else const u32 gMonFrontPic_Seedot[] = INCBIN_U32("graphics/pokemon/seedot/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Seedot[] = INCBIN_U32("graphics/pokemon/seedot/normal_gba.gbapal.lz"); + const u16 gMonPalette_Seedot[] = INCBIN_U16("graphics/pokemon/seedot/normal_gba.gbapal"); const u32 gMonBackPic_Seedot[] = INCBIN_U32("graphics/pokemon/seedot/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Seedot[] = INCBIN_U32("graphics/pokemon/seedot/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Seedot[] = INCBIN_U16("graphics/pokemon/seedot/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Seedot[] = INCBIN_U8("graphics/pokemon/seedot/icon.4bpp"); @@ -10292,21 +10292,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Seedot[] = INCBIN_U16("graphics/pokemon/seedot/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Seedot[] = INCBIN_U16("graphics/pokemon/seedot/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Nuzleaf[] = INCBIN_U32("graphics/pokemon/nuzleaf/anim_front.4bpp.lz"); - const u32 gMonPalette_Nuzleaf[] = INCBIN_U32("graphics/pokemon/nuzleaf/normal.gbapal.lz"); + const u16 gMonPalette_Nuzleaf[] = INCBIN_U16("graphics/pokemon/nuzleaf/normal.gbapal"); const u32 gMonBackPic_Nuzleaf[] = INCBIN_U32("graphics/pokemon/nuzleaf/back.4bpp.lz"); - const u32 gMonShinyPalette_Nuzleaf[] = INCBIN_U32("graphics/pokemon/nuzleaf/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Nuzleaf[] = INCBIN_U16("graphics/pokemon/nuzleaf/shiny.gbapal"); #else const u32 gMonFrontPic_Nuzleaf[] = INCBIN_U32("graphics/pokemon/nuzleaf/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Nuzleaf[] = INCBIN_U32("graphics/pokemon/nuzleaf/normal_gba.gbapal.lz"); + const u16 gMonPalette_Nuzleaf[] = INCBIN_U16("graphics/pokemon/nuzleaf/normal_gba.gbapal"); const u32 gMonBackPic_Nuzleaf[] = INCBIN_U32("graphics/pokemon/nuzleaf/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Nuzleaf[] = INCBIN_U32("graphics/pokemon/nuzleaf/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Nuzleaf[] = INCBIN_U16("graphics/pokemon/nuzleaf/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Nuzleaf[] = INCBIN_U8("graphics/pokemon/nuzleaf/icon.4bpp"); @@ -10319,8 +10319,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Nuzleaf[] = INCBIN_U16("graphics/pokemon/nuzleaf/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Nuzleaf[] = INCBIN_U16("graphics/pokemon/nuzleaf/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -10334,14 +10334,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Shiftry[] = INCBIN_U32("graphics/pokemon/shiftry/anim_front.4bpp.lz"); - const u32 gMonPalette_Shiftry[] = INCBIN_U32("graphics/pokemon/shiftry/normal.gbapal.lz"); + const u16 gMonPalette_Shiftry[] = INCBIN_U16("graphics/pokemon/shiftry/normal.gbapal"); const u32 gMonBackPic_Shiftry[] = INCBIN_U32("graphics/pokemon/shiftry/back.4bpp.lz"); - const u32 gMonShinyPalette_Shiftry[] = INCBIN_U32("graphics/pokemon/shiftry/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Shiftry[] = INCBIN_U16("graphics/pokemon/shiftry/shiny.gbapal"); #else const u32 gMonFrontPic_Shiftry[] = INCBIN_U32("graphics/pokemon/shiftry/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Shiftry[] = INCBIN_U32("graphics/pokemon/shiftry/normal_gba.gbapal.lz"); + const u16 gMonPalette_Shiftry[] = INCBIN_U16("graphics/pokemon/shiftry/normal_gba.gbapal"); const u32 gMonBackPic_Shiftry[] = INCBIN_U32("graphics/pokemon/shiftry/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Shiftry[] = INCBIN_U32("graphics/pokemon/shiftry/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Shiftry[] = INCBIN_U16("graphics/pokemon/shiftry/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Shiftry[] = INCBIN_U8("graphics/pokemon/shiftry/icon.4bpp"); @@ -10354,8 +10354,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Shiftry[] = INCBIN_U16("graphics/pokemon/shiftry/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Shiftry[] = INCBIN_U16("graphics/pokemon/shiftry/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -10371,14 +10371,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_TAILLOW #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Taillow[] = INCBIN_U32("graphics/pokemon/taillow/anim_front.4bpp.lz"); - const u32 gMonPalette_Taillow[] = INCBIN_U32("graphics/pokemon/taillow/normal.gbapal.lz"); + const u16 gMonPalette_Taillow[] = INCBIN_U16("graphics/pokemon/taillow/normal.gbapal"); const u32 gMonBackPic_Taillow[] = INCBIN_U32("graphics/pokemon/taillow/back.4bpp.lz"); - const u32 gMonShinyPalette_Taillow[] = INCBIN_U32("graphics/pokemon/taillow/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Taillow[] = INCBIN_U16("graphics/pokemon/taillow/shiny.gbapal"); #else const u32 gMonFrontPic_Taillow[] = INCBIN_U32("graphics/pokemon/taillow/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Taillow[] = INCBIN_U32("graphics/pokemon/taillow/normal_gba.gbapal.lz"); + const u16 gMonPalette_Taillow[] = INCBIN_U16("graphics/pokemon/taillow/normal_gba.gbapal"); const u32 gMonBackPic_Taillow[] = INCBIN_U32("graphics/pokemon/taillow/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Taillow[] = INCBIN_U32("graphics/pokemon/taillow/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Taillow[] = INCBIN_U16("graphics/pokemon/taillow/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Taillow[] = INCBIN_U8("graphics/pokemon/taillow/icon.4bpp"); @@ -10391,21 +10391,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Taillow[] = INCBIN_U16("graphics/pokemon/taillow/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Taillow[] = INCBIN_U16("graphics/pokemon/taillow/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Swellow[] = INCBIN_U32("graphics/pokemon/swellow/anim_front.4bpp.lz"); - const u32 gMonPalette_Swellow[] = INCBIN_U32("graphics/pokemon/swellow/normal.gbapal.lz"); + const u16 gMonPalette_Swellow[] = INCBIN_U16("graphics/pokemon/swellow/normal.gbapal"); const u32 gMonBackPic_Swellow[] = INCBIN_U32("graphics/pokemon/swellow/back.4bpp.lz"); - const u32 gMonShinyPalette_Swellow[] = INCBIN_U32("graphics/pokemon/swellow/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Swellow[] = INCBIN_U16("graphics/pokemon/swellow/shiny.gbapal"); #else const u32 gMonFrontPic_Swellow[] = INCBIN_U32("graphics/pokemon/swellow/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Swellow[] = INCBIN_U32("graphics/pokemon/swellow/normal_gba.gbapal.lz"); + const u16 gMonPalette_Swellow[] = INCBIN_U16("graphics/pokemon/swellow/normal_gba.gbapal"); const u32 gMonBackPic_Swellow[] = INCBIN_U32("graphics/pokemon/swellow/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Swellow[] = INCBIN_U32("graphics/pokemon/swellow/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Swellow[] = INCBIN_U16("graphics/pokemon/swellow/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Swellow[] = INCBIN_U8("graphics/pokemon/swellow/icon.4bpp"); @@ -10418,8 +10418,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Swellow[] = INCBIN_U16("graphics/pokemon/swellow/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Swellow[] = INCBIN_U16("graphics/pokemon/swellow/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_TAILLOW @@ -10427,14 +10427,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_WINGULL #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Wingull[] = INCBIN_U32("graphics/pokemon/wingull/anim_front.4bpp.lz"); - const u32 gMonPalette_Wingull[] = INCBIN_U32("graphics/pokemon/wingull/normal.gbapal.lz"); + const u16 gMonPalette_Wingull[] = INCBIN_U16("graphics/pokemon/wingull/normal.gbapal"); const u32 gMonBackPic_Wingull[] = INCBIN_U32("graphics/pokemon/wingull/back.4bpp.lz"); - const u32 gMonShinyPalette_Wingull[] = INCBIN_U32("graphics/pokemon/wingull/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Wingull[] = INCBIN_U16("graphics/pokemon/wingull/shiny.gbapal"); #else const u32 gMonFrontPic_Wingull[] = INCBIN_U32("graphics/pokemon/wingull/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Wingull[] = INCBIN_U32("graphics/pokemon/wingull/normal_gba.gbapal.lz"); + const u16 gMonPalette_Wingull[] = INCBIN_U16("graphics/pokemon/wingull/normal_gba.gbapal"); const u32 gMonBackPic_Wingull[] = INCBIN_U32("graphics/pokemon/wingull/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Wingull[] = INCBIN_U32("graphics/pokemon/wingull/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Wingull[] = INCBIN_U16("graphics/pokemon/wingull/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Wingull[] = INCBIN_U8("graphics/pokemon/wingull/icon.4bpp"); @@ -10447,21 +10447,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Wingull[] = INCBIN_U16("graphics/pokemon/wingull/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Wingull[] = INCBIN_U16("graphics/pokemon/wingull/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Pelipper[] = INCBIN_U32("graphics/pokemon/pelipper/anim_front.4bpp.lz"); - const u32 gMonPalette_Pelipper[] = INCBIN_U32("graphics/pokemon/pelipper/normal.gbapal.lz"); + const u16 gMonPalette_Pelipper[] = INCBIN_U16("graphics/pokemon/pelipper/normal.gbapal"); const u32 gMonBackPic_Pelipper[] = INCBIN_U32("graphics/pokemon/pelipper/back.4bpp.lz"); - const u32 gMonShinyPalette_Pelipper[] = INCBIN_U32("graphics/pokemon/pelipper/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Pelipper[] = INCBIN_U16("graphics/pokemon/pelipper/shiny.gbapal"); #else const u32 gMonFrontPic_Pelipper[] = INCBIN_U32("graphics/pokemon/pelipper/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Pelipper[] = INCBIN_U32("graphics/pokemon/pelipper/normal_gba.gbapal.lz"); + const u16 gMonPalette_Pelipper[] = INCBIN_U16("graphics/pokemon/pelipper/normal_gba.gbapal"); const u32 gMonBackPic_Pelipper[] = INCBIN_U32("graphics/pokemon/pelipper/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Pelipper[] = INCBIN_U32("graphics/pokemon/pelipper/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Pelipper[] = INCBIN_U16("graphics/pokemon/pelipper/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Pelipper[] = INCBIN_U8("graphics/pokemon/pelipper/icon.4bpp"); @@ -10474,8 +10474,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Pelipper[] = INCBIN_U16("graphics/pokemon/pelipper/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Pelipper[] = INCBIN_U16("graphics/pokemon/pelipper/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_WINGULL @@ -10483,14 +10483,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_RALTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Ralts[] = INCBIN_U32("graphics/pokemon/ralts/anim_front.4bpp.lz"); - const u32 gMonPalette_Ralts[] = INCBIN_U32("graphics/pokemon/ralts/normal.gbapal.lz"); + const u16 gMonPalette_Ralts[] = INCBIN_U16("graphics/pokemon/ralts/normal.gbapal"); const u32 gMonBackPic_Ralts[] = INCBIN_U32("graphics/pokemon/ralts/back.4bpp.lz"); - const u32 gMonShinyPalette_Ralts[] = INCBIN_U32("graphics/pokemon/ralts/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Ralts[] = INCBIN_U16("graphics/pokemon/ralts/shiny.gbapal"); #else const u32 gMonFrontPic_Ralts[] = INCBIN_U32("graphics/pokemon/ralts/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Ralts[] = INCBIN_U32("graphics/pokemon/ralts/normal_gba.gbapal.lz"); + const u16 gMonPalette_Ralts[] = INCBIN_U16("graphics/pokemon/ralts/normal_gba.gbapal"); const u32 gMonBackPic_Ralts[] = INCBIN_U32("graphics/pokemon/ralts/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Ralts[] = INCBIN_U32("graphics/pokemon/ralts/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Ralts[] = INCBIN_U16("graphics/pokemon/ralts/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Ralts[] = INCBIN_U8("graphics/pokemon/ralts/icon.4bpp"); @@ -10503,21 +10503,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Ralts[] = INCBIN_U16("graphics/pokemon/ralts/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Ralts[] = INCBIN_U16("graphics/pokemon/ralts/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Kirlia[] = INCBIN_U32("graphics/pokemon/kirlia/anim_front.4bpp.lz"); - const u32 gMonPalette_Kirlia[] = INCBIN_U32("graphics/pokemon/kirlia/normal.gbapal.lz"); + const u16 gMonPalette_Kirlia[] = INCBIN_U16("graphics/pokemon/kirlia/normal.gbapal"); const u32 gMonBackPic_Kirlia[] = INCBIN_U32("graphics/pokemon/kirlia/back.4bpp.lz"); - const u32 gMonShinyPalette_Kirlia[] = INCBIN_U32("graphics/pokemon/kirlia/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Kirlia[] = INCBIN_U16("graphics/pokemon/kirlia/shiny.gbapal"); #else const u32 gMonFrontPic_Kirlia[] = INCBIN_U32("graphics/pokemon/kirlia/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Kirlia[] = INCBIN_U32("graphics/pokemon/kirlia/normal_gba.gbapal.lz"); + const u16 gMonPalette_Kirlia[] = INCBIN_U16("graphics/pokemon/kirlia/normal_gba.gbapal"); const u32 gMonBackPic_Kirlia[] = INCBIN_U32("graphics/pokemon/kirlia/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Kirlia[] = INCBIN_U32("graphics/pokemon/kirlia/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Kirlia[] = INCBIN_U16("graphics/pokemon/kirlia/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Kirlia[] = INCBIN_U8("graphics/pokemon/kirlia/icon.4bpp"); @@ -10530,21 +10530,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Kirlia[] = INCBIN_U16("graphics/pokemon/kirlia/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Kirlia[] = INCBIN_U16("graphics/pokemon/kirlia/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Gardevoir[] = INCBIN_U32("graphics/pokemon/gardevoir/anim_front.4bpp.lz"); - const u32 gMonPalette_Gardevoir[] = INCBIN_U32("graphics/pokemon/gardevoir/normal.gbapal.lz"); + const u16 gMonPalette_Gardevoir[] = INCBIN_U16("graphics/pokemon/gardevoir/normal.gbapal"); const u32 gMonBackPic_Gardevoir[] = INCBIN_U32("graphics/pokemon/gardevoir/back.4bpp.lz"); - const u32 gMonShinyPalette_Gardevoir[] = INCBIN_U32("graphics/pokemon/gardevoir/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Gardevoir[] = INCBIN_U16("graphics/pokemon/gardevoir/shiny.gbapal"); #else const u32 gMonFrontPic_Gardevoir[] = INCBIN_U32("graphics/pokemon/gardevoir/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Gardevoir[] = INCBIN_U32("graphics/pokemon/gardevoir/normal_gba.gbapal.lz"); + const u16 gMonPalette_Gardevoir[] = INCBIN_U16("graphics/pokemon/gardevoir/normal_gba.gbapal"); const u32 gMonBackPic_Gardevoir[] = INCBIN_U32("graphics/pokemon/gardevoir/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Gardevoir[] = INCBIN_U32("graphics/pokemon/gardevoir/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Gardevoir[] = INCBIN_U16("graphics/pokemon/gardevoir/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Gardevoir[] = INCBIN_U8("graphics/pokemon/gardevoir/icon.4bpp"); @@ -10557,31 +10557,31 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Gardevoir[] = INCBIN_U16("graphics/pokemon/gardevoir/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Gardevoir[] = INCBIN_U16("graphics/pokemon/gardevoir/overworld_shiny.gbapal"); #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"); - const u32 gMonPalette_GardevoirMega[] = INCBIN_U32("graphics/pokemon/gardevoir/mega/normal.gbapal.lz"); + const u16 gMonPalette_GardevoirMega[] = INCBIN_U16("graphics/pokemon/gardevoir/mega/normal.gbapal"); 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 u16 gMonShinyPalette_GardevoirMega[] = INCBIN_U16("graphics/pokemon/gardevoir/mega/shiny.gbapal"); const u8 gMonIcon_GardevoirMega[] = INCBIN_U8("graphics/pokemon/gardevoir/mega/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS 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"); + const u16 gOverworldPalette_GardevoirMega[] = INCBIN_U16("graphics/pokemon/gardevoir/mega/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_GardevoirMega[] = INCBIN_U16("graphics/pokemon/gardevoir/mega/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS #endif //P_MEGA_EVOLUTIONS #if P_GEN_4_CROSS_EVOS const u32 gMonFrontPic_Gallade[] = INCBIN_U32("graphics/pokemon/gallade/anim_front.4bpp.lz"); - const u32 gMonPalette_Gallade[] = INCBIN_U32("graphics/pokemon/gallade/normal.gbapal.lz"); + const u16 gMonPalette_Gallade[] = INCBIN_U16("graphics/pokemon/gallade/normal.gbapal"); const u32 gMonBackPic_Gallade[] = INCBIN_U32("graphics/pokemon/gallade/back.4bpp.lz"); - const u32 gMonShinyPalette_Gallade[] = INCBIN_U32("graphics/pokemon/gallade/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Gallade[] = INCBIN_U16("graphics/pokemon/gallade/shiny.gbapal"); const u8 gMonIcon_Gallade[] = INCBIN_U8("graphics/pokemon/gallade/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Gallade[] = INCBIN_U8("graphics/pokemon/gallade/footprint.1bpp"); @@ -10589,22 +10589,22 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Gallade[] = INCBIN_U16("graphics/pokemon/gallade/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Gallade[] = INCBIN_U16("graphics/pokemon/gallade/overworld_shiny.gbapal"); #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"); - const u32 gMonPalette_GalladeMega[] = INCBIN_U32("graphics/pokemon/gallade/mega/normal.gbapal.lz"); + const u16 gMonPalette_GalladeMega[] = INCBIN_U16("graphics/pokemon/gallade/mega/normal.gbapal"); 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 u16 gMonShinyPalette_GalladeMega[] = INCBIN_U16("graphics/pokemon/gallade/mega/shiny.gbapal"); const u8 gMonIcon_GalladeMega[] = INCBIN_U8("graphics/pokemon/gallade/mega/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS 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"); + const u16 gOverworldPalette_GalladeMega[] = INCBIN_U16("graphics/pokemon/gallade/mega/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_GalladeMega[] = INCBIN_U16("graphics/pokemon/gallade/mega/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS #endif //P_MEGA_EVOLUTIONS @@ -10614,14 +10614,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_SURSKIT #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Surskit[] = INCBIN_U32("graphics/pokemon/surskit/anim_front.4bpp.lz"); - const u32 gMonPalette_Surskit[] = INCBIN_U32("graphics/pokemon/surskit/normal.gbapal.lz"); + const u16 gMonPalette_Surskit[] = INCBIN_U16("graphics/pokemon/surskit/normal.gbapal"); const u32 gMonBackPic_Surskit[] = INCBIN_U32("graphics/pokemon/surskit/back.4bpp.lz"); - const u32 gMonShinyPalette_Surskit[] = INCBIN_U32("graphics/pokemon/surskit/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Surskit[] = INCBIN_U16("graphics/pokemon/surskit/shiny.gbapal"); #else const u32 gMonFrontPic_Surskit[] = INCBIN_U32("graphics/pokemon/surskit/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Surskit[] = INCBIN_U32("graphics/pokemon/surskit/normal_gba.gbapal.lz"); + const u16 gMonPalette_Surskit[] = INCBIN_U16("graphics/pokemon/surskit/normal_gba.gbapal"); const u32 gMonBackPic_Surskit[] = INCBIN_U32("graphics/pokemon/surskit/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Surskit[] = INCBIN_U32("graphics/pokemon/surskit/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Surskit[] = INCBIN_U16("graphics/pokemon/surskit/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Surskit[] = INCBIN_U8("graphics/pokemon/surskit/icon.4bpp"); @@ -10634,21 +10634,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Surskit[] = INCBIN_U16("graphics/pokemon/surskit/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Surskit[] = INCBIN_U16("graphics/pokemon/surskit/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Masquerain[] = INCBIN_U32("graphics/pokemon/masquerain/anim_front.4bpp.lz"); - const u32 gMonPalette_Masquerain[] = INCBIN_U32("graphics/pokemon/masquerain/normal.gbapal.lz"); + const u16 gMonPalette_Masquerain[] = INCBIN_U16("graphics/pokemon/masquerain/normal.gbapal"); const u32 gMonBackPic_Masquerain[] = INCBIN_U32("graphics/pokemon/masquerain/back.4bpp.lz"); - const u32 gMonShinyPalette_Masquerain[] = INCBIN_U32("graphics/pokemon/masquerain/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Masquerain[] = INCBIN_U16("graphics/pokemon/masquerain/shiny.gbapal"); #else const u32 gMonFrontPic_Masquerain[] = INCBIN_U32("graphics/pokemon/masquerain/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Masquerain[] = INCBIN_U32("graphics/pokemon/masquerain/normal_gba.gbapal.lz"); + const u16 gMonPalette_Masquerain[] = INCBIN_U16("graphics/pokemon/masquerain/normal_gba.gbapal"); const u32 gMonBackPic_Masquerain[] = INCBIN_U32("graphics/pokemon/masquerain/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Masquerain[] = INCBIN_U32("graphics/pokemon/masquerain/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Masquerain[] = INCBIN_U16("graphics/pokemon/masquerain/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Masquerain[] = INCBIN_U8("graphics/pokemon/masquerain/icon.4bpp"); @@ -10661,8 +10661,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Masquerain[] = INCBIN_U16("graphics/pokemon/masquerain/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Masquerain[] = INCBIN_U16("graphics/pokemon/masquerain/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SURSKIT @@ -10670,14 +10670,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_SHROOMISH #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Shroomish[] = INCBIN_U32("graphics/pokemon/shroomish/anim_front.4bpp.lz"); - const u32 gMonPalette_Shroomish[] = INCBIN_U32("graphics/pokemon/shroomish/normal.gbapal.lz"); + const u16 gMonPalette_Shroomish[] = INCBIN_U16("graphics/pokemon/shroomish/normal.gbapal"); const u32 gMonBackPic_Shroomish[] = INCBIN_U32("graphics/pokemon/shroomish/back.4bpp.lz"); - const u32 gMonShinyPalette_Shroomish[] = INCBIN_U32("graphics/pokemon/shroomish/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Shroomish[] = INCBIN_U16("graphics/pokemon/shroomish/shiny.gbapal"); #else const u32 gMonFrontPic_Shroomish[] = INCBIN_U32("graphics/pokemon/shroomish/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Shroomish[] = INCBIN_U32("graphics/pokemon/shroomish/normal_gba.gbapal.lz"); + const u16 gMonPalette_Shroomish[] = INCBIN_U16("graphics/pokemon/shroomish/normal_gba.gbapal"); const u32 gMonBackPic_Shroomish[] = INCBIN_U32("graphics/pokemon/shroomish/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Shroomish[] = INCBIN_U32("graphics/pokemon/shroomish/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Shroomish[] = INCBIN_U16("graphics/pokemon/shroomish/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Shroomish[] = INCBIN_U8("graphics/pokemon/shroomish/icon.4bpp"); @@ -10694,21 +10694,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Shroomish[] = INCBIN_U16("graphics/pokemon/shroomish/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Shroomish[] = INCBIN_U16("graphics/pokemon/shroomish/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Breloom[] = INCBIN_U32("graphics/pokemon/breloom/anim_front.4bpp.lz"); - const u32 gMonPalette_Breloom[] = INCBIN_U32("graphics/pokemon/breloom/normal.gbapal.lz"); + const u16 gMonPalette_Breloom[] = INCBIN_U16("graphics/pokemon/breloom/normal.gbapal"); const u32 gMonBackPic_Breloom[] = INCBIN_U32("graphics/pokemon/breloom/back.4bpp.lz"); - const u32 gMonShinyPalette_Breloom[] = INCBIN_U32("graphics/pokemon/breloom/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Breloom[] = INCBIN_U16("graphics/pokemon/breloom/shiny.gbapal"); #else const u32 gMonFrontPic_Breloom[] = INCBIN_U32("graphics/pokemon/breloom/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Breloom[] = INCBIN_U32("graphics/pokemon/breloom/normal_gba.gbapal.lz"); + const u16 gMonPalette_Breloom[] = INCBIN_U16("graphics/pokemon/breloom/normal_gba.gbapal"); const u32 gMonBackPic_Breloom[] = INCBIN_U32("graphics/pokemon/breloom/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Breloom[] = INCBIN_U32("graphics/pokemon/breloom/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Breloom[] = INCBIN_U16("graphics/pokemon/breloom/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Breloom[] = INCBIN_U8("graphics/pokemon/breloom/icon.4bpp"); @@ -10721,8 +10721,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Breloom[] = INCBIN_U16("graphics/pokemon/breloom/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Breloom[] = INCBIN_U16("graphics/pokemon/breloom/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SHROOMISH @@ -10730,14 +10730,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_SLAKOTH #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Slakoth[] = INCBIN_U32("graphics/pokemon/slakoth/anim_front.4bpp.lz"); - const u32 gMonPalette_Slakoth[] = INCBIN_U32("graphics/pokemon/slakoth/normal.gbapal.lz"); + const u16 gMonPalette_Slakoth[] = INCBIN_U16("graphics/pokemon/slakoth/normal.gbapal"); const u32 gMonBackPic_Slakoth[] = INCBIN_U32("graphics/pokemon/slakoth/back.4bpp.lz"); - const u32 gMonShinyPalette_Slakoth[] = INCBIN_U32("graphics/pokemon/slakoth/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Slakoth[] = INCBIN_U16("graphics/pokemon/slakoth/shiny.gbapal"); #else const u32 gMonFrontPic_Slakoth[] = INCBIN_U32("graphics/pokemon/slakoth/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Slakoth[] = INCBIN_U32("graphics/pokemon/slakoth/normal_gba.gbapal.lz"); + const u16 gMonPalette_Slakoth[] = INCBIN_U16("graphics/pokemon/slakoth/normal_gba.gbapal"); const u32 gMonBackPic_Slakoth[] = INCBIN_U32("graphics/pokemon/slakoth/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Slakoth[] = INCBIN_U32("graphics/pokemon/slakoth/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Slakoth[] = INCBIN_U16("graphics/pokemon/slakoth/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Slakoth[] = INCBIN_U8("graphics/pokemon/slakoth/icon.4bpp"); @@ -10750,21 +10750,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Slakoth[] = INCBIN_U16("graphics/pokemon/slakoth/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Slakoth[] = INCBIN_U16("graphics/pokemon/slakoth/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Vigoroth[] = INCBIN_U32("graphics/pokemon/vigoroth/anim_front.4bpp.lz"); - const u32 gMonPalette_Vigoroth[] = INCBIN_U32("graphics/pokemon/vigoroth/normal.gbapal.lz"); + const u16 gMonPalette_Vigoroth[] = INCBIN_U16("graphics/pokemon/vigoroth/normal.gbapal"); const u32 gMonBackPic_Vigoroth[] = INCBIN_U32("graphics/pokemon/vigoroth/back.4bpp.lz"); - const u32 gMonShinyPalette_Vigoroth[] = INCBIN_U32("graphics/pokemon/vigoroth/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Vigoroth[] = INCBIN_U16("graphics/pokemon/vigoroth/shiny.gbapal"); #else const u32 gMonFrontPic_Vigoroth[] = INCBIN_U32("graphics/pokemon/vigoroth/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Vigoroth[] = INCBIN_U32("graphics/pokemon/vigoroth/normal_gba.gbapal.lz"); + const u16 gMonPalette_Vigoroth[] = INCBIN_U16("graphics/pokemon/vigoroth/normal_gba.gbapal"); const u32 gMonBackPic_Vigoroth[] = INCBIN_U32("graphics/pokemon/vigoroth/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Vigoroth[] = INCBIN_U32("graphics/pokemon/vigoroth/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Vigoroth[] = INCBIN_U16("graphics/pokemon/vigoroth/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Vigoroth[] = INCBIN_U8("graphics/pokemon/vigoroth/icon.4bpp"); @@ -10777,21 +10777,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Vigoroth[] = INCBIN_U16("graphics/pokemon/vigoroth/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Vigoroth[] = INCBIN_U16("graphics/pokemon/vigoroth/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Slaking[] = INCBIN_U32("graphics/pokemon/slaking/anim_front.4bpp.lz"); - const u32 gMonPalette_Slaking[] = INCBIN_U32("graphics/pokemon/slaking/normal.gbapal.lz"); + const u16 gMonPalette_Slaking[] = INCBIN_U16("graphics/pokemon/slaking/normal.gbapal"); const u32 gMonBackPic_Slaking[] = INCBIN_U32("graphics/pokemon/slaking/back.4bpp.lz"); - const u32 gMonShinyPalette_Slaking[] = INCBIN_U32("graphics/pokemon/slaking/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Slaking[] = INCBIN_U16("graphics/pokemon/slaking/shiny.gbapal"); #else const u32 gMonFrontPic_Slaking[] = INCBIN_U32("graphics/pokemon/slaking/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Slaking[] = INCBIN_U32("graphics/pokemon/slaking/normal_gba.gbapal.lz"); + const u16 gMonPalette_Slaking[] = INCBIN_U16("graphics/pokemon/slaking/normal_gba.gbapal"); const u32 gMonBackPic_Slaking[] = INCBIN_U32("graphics/pokemon/slaking/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Slaking[] = INCBIN_U32("graphics/pokemon/slaking/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Slaking[] = INCBIN_U16("graphics/pokemon/slaking/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Slaking[] = INCBIN_U8("graphics/pokemon/slaking/icon.4bpp"); @@ -10804,8 +10804,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Slaking[] = INCBIN_U16("graphics/pokemon/slaking/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Slaking[] = INCBIN_U16("graphics/pokemon/slaking/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SLAKOTH @@ -10813,14 +10813,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_NINCADA #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Nincada[] = INCBIN_U32("graphics/pokemon/nincada/anim_front.4bpp.lz"); - const u32 gMonPalette_Nincada[] = INCBIN_U32("graphics/pokemon/nincada/normal.gbapal.lz"); + const u16 gMonPalette_Nincada[] = INCBIN_U16("graphics/pokemon/nincada/normal.gbapal"); const u32 gMonBackPic_Nincada[] = INCBIN_U32("graphics/pokemon/nincada/back.4bpp.lz"); - const u32 gMonShinyPalette_Nincada[] = INCBIN_U32("graphics/pokemon/nincada/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Nincada[] = INCBIN_U16("graphics/pokemon/nincada/shiny.gbapal"); #else const u32 gMonFrontPic_Nincada[] = INCBIN_U32("graphics/pokemon/nincada/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Nincada[] = INCBIN_U32("graphics/pokemon/nincada/normal_gba.gbapal.lz"); + const u16 gMonPalette_Nincada[] = INCBIN_U16("graphics/pokemon/nincada/normal_gba.gbapal"); const u32 gMonBackPic_Nincada[] = INCBIN_U32("graphics/pokemon/nincada/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Nincada[] = INCBIN_U32("graphics/pokemon/nincada/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Nincada[] = INCBIN_U16("graphics/pokemon/nincada/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Nincada[] = INCBIN_U8("graphics/pokemon/nincada/icon.4bpp"); @@ -10833,21 +10833,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Nincada[] = INCBIN_U16("graphics/pokemon/nincada/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Nincada[] = INCBIN_U16("graphics/pokemon/nincada/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Ninjask[] = INCBIN_U32("graphics/pokemon/ninjask/anim_front.4bpp.lz"); - const u32 gMonPalette_Ninjask[] = INCBIN_U32("graphics/pokemon/ninjask/normal.gbapal.lz"); + const u16 gMonPalette_Ninjask[] = INCBIN_U16("graphics/pokemon/ninjask/normal.gbapal"); const u32 gMonBackPic_Ninjask[] = INCBIN_U32("graphics/pokemon/ninjask/back.4bpp.lz"); - const u32 gMonShinyPalette_Ninjask[] = INCBIN_U32("graphics/pokemon/ninjask/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Ninjask[] = INCBIN_U16("graphics/pokemon/ninjask/shiny.gbapal"); #else const u32 gMonFrontPic_Ninjask[] = INCBIN_U32("graphics/pokemon/ninjask/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Ninjask[] = INCBIN_U32("graphics/pokemon/ninjask/normal_gba.gbapal.lz"); + const u16 gMonPalette_Ninjask[] = INCBIN_U16("graphics/pokemon/ninjask/normal_gba.gbapal"); const u32 gMonBackPic_Ninjask[] = INCBIN_U32("graphics/pokemon/ninjask/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Ninjask[] = INCBIN_U32("graphics/pokemon/ninjask/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Ninjask[] = INCBIN_U16("graphics/pokemon/ninjask/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Ninjask[] = INCBIN_U8("graphics/pokemon/ninjask/icon.4bpp"); @@ -10860,21 +10860,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Ninjask[] = INCBIN_U16("graphics/pokemon/ninjask/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Ninjask[] = INCBIN_U16("graphics/pokemon/ninjask/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Shedinja[] = INCBIN_U32("graphics/pokemon/shedinja/anim_front.4bpp.lz"); - const u32 gMonPalette_Shedinja[] = INCBIN_U32("graphics/pokemon/shedinja/normal.gbapal.lz"); + const u16 gMonPalette_Shedinja[] = INCBIN_U16("graphics/pokemon/shedinja/normal.gbapal"); const u32 gMonBackPic_Shedinja[] = INCBIN_U32("graphics/pokemon/shedinja/back.4bpp.lz"); - const u32 gMonShinyPalette_Shedinja[] = INCBIN_U32("graphics/pokemon/shedinja/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Shedinja[] = INCBIN_U16("graphics/pokemon/shedinja/shiny.gbapal"); #else const u32 gMonFrontPic_Shedinja[] = INCBIN_U32("graphics/pokemon/shedinja/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Shedinja[] = INCBIN_U32("graphics/pokemon/shedinja/normal_gba.gbapal.lz"); + const u16 gMonPalette_Shedinja[] = INCBIN_U16("graphics/pokemon/shedinja/normal_gba.gbapal"); const u32 gMonBackPic_Shedinja[] = INCBIN_U32("graphics/pokemon/shedinja/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Shedinja[] = INCBIN_U32("graphics/pokemon/shedinja/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Shedinja[] = INCBIN_U16("graphics/pokemon/shedinja/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Shedinja[] = INCBIN_U8("graphics/pokemon/shedinja/icon.4bpp"); @@ -10887,8 +10887,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Shedinja[] = INCBIN_U16("graphics/pokemon/shedinja/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Shedinja[] = INCBIN_U16("graphics/pokemon/shedinja/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_NINCADA @@ -10896,14 +10896,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_WHISMUR #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Whismur[] = INCBIN_U32("graphics/pokemon/whismur/anim_front.4bpp.lz"); - const u32 gMonPalette_Whismur[] = INCBIN_U32("graphics/pokemon/whismur/normal.gbapal.lz"); + const u16 gMonPalette_Whismur[] = INCBIN_U16("graphics/pokemon/whismur/normal.gbapal"); const u32 gMonBackPic_Whismur[] = INCBIN_U32("graphics/pokemon/whismur/back.4bpp.lz"); - const u32 gMonShinyPalette_Whismur[] = INCBIN_U32("graphics/pokemon/whismur/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Whismur[] = INCBIN_U16("graphics/pokemon/whismur/shiny.gbapal"); #else const u32 gMonFrontPic_Whismur[] = INCBIN_U32("graphics/pokemon/whismur/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Whismur[] = INCBIN_U32("graphics/pokemon/whismur/normal_gba.gbapal.lz"); + const u16 gMonPalette_Whismur[] = INCBIN_U16("graphics/pokemon/whismur/normal_gba.gbapal"); const u32 gMonBackPic_Whismur[] = INCBIN_U32("graphics/pokemon/whismur/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Whismur[] = INCBIN_U32("graphics/pokemon/whismur/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Whismur[] = INCBIN_U16("graphics/pokemon/whismur/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Whismur[] = INCBIN_U8("graphics/pokemon/whismur/icon.4bpp"); @@ -10916,21 +10916,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Whismur[] = INCBIN_U16("graphics/pokemon/whismur/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Whismur[] = INCBIN_U16("graphics/pokemon/whismur/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Loudred[] = INCBIN_U32("graphics/pokemon/loudred/anim_front.4bpp.lz"); - const u32 gMonPalette_Loudred[] = INCBIN_U32("graphics/pokemon/loudred/normal.gbapal.lz"); + const u16 gMonPalette_Loudred[] = INCBIN_U16("graphics/pokemon/loudred/normal.gbapal"); const u32 gMonBackPic_Loudred[] = INCBIN_U32("graphics/pokemon/loudred/back.4bpp.lz"); - const u32 gMonShinyPalette_Loudred[] = INCBIN_U32("graphics/pokemon/loudred/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Loudred[] = INCBIN_U16("graphics/pokemon/loudred/shiny.gbapal"); #else const u32 gMonFrontPic_Loudred[] = INCBIN_U32("graphics/pokemon/loudred/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Loudred[] = INCBIN_U32("graphics/pokemon/loudred/normal_gba.gbapal.lz"); + const u16 gMonPalette_Loudred[] = INCBIN_U16("graphics/pokemon/loudred/normal_gba.gbapal"); const u32 gMonBackPic_Loudred[] = INCBIN_U32("graphics/pokemon/loudred/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Loudred[] = INCBIN_U32("graphics/pokemon/loudred/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Loudred[] = INCBIN_U16("graphics/pokemon/loudred/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Loudred[] = INCBIN_U8("graphics/pokemon/loudred/icon.4bpp"); @@ -10943,21 +10943,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Loudred[] = INCBIN_U16("graphics/pokemon/loudred/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Loudred[] = INCBIN_U16("graphics/pokemon/loudred/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Exploud[] = INCBIN_U32("graphics/pokemon/exploud/anim_front.4bpp.lz"); - const u32 gMonPalette_Exploud[] = INCBIN_U32("graphics/pokemon/exploud/normal.gbapal.lz"); + const u16 gMonPalette_Exploud[] = INCBIN_U16("graphics/pokemon/exploud/normal.gbapal"); const u32 gMonBackPic_Exploud[] = INCBIN_U32("graphics/pokemon/exploud/back.4bpp.lz"); - const u32 gMonShinyPalette_Exploud[] = INCBIN_U32("graphics/pokemon/exploud/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Exploud[] = INCBIN_U16("graphics/pokemon/exploud/shiny.gbapal"); #else const u32 gMonFrontPic_Exploud[] = INCBIN_U32("graphics/pokemon/exploud/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Exploud[] = INCBIN_U32("graphics/pokemon/exploud/normal_gba.gbapal.lz"); + const u16 gMonPalette_Exploud[] = INCBIN_U16("graphics/pokemon/exploud/normal_gba.gbapal"); const u32 gMonBackPic_Exploud[] = INCBIN_U32("graphics/pokemon/exploud/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Exploud[] = INCBIN_U32("graphics/pokemon/exploud/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Exploud[] = INCBIN_U16("graphics/pokemon/exploud/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Exploud[] = INCBIN_U8("graphics/pokemon/exploud/icon.4bpp"); @@ -10970,8 +10970,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Exploud[] = INCBIN_U16("graphics/pokemon/exploud/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Exploud[] = INCBIN_U16("graphics/pokemon/exploud/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_WHISMUR @@ -10979,14 +10979,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_MAKUHITA #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Makuhita[] = INCBIN_U32("graphics/pokemon/makuhita/anim_front.4bpp.lz"); - const u32 gMonPalette_Makuhita[] = INCBIN_U32("graphics/pokemon/makuhita/normal.gbapal.lz"); + const u16 gMonPalette_Makuhita[] = INCBIN_U16("graphics/pokemon/makuhita/normal.gbapal"); const u32 gMonBackPic_Makuhita[] = INCBIN_U32("graphics/pokemon/makuhita/back.4bpp.lz"); - const u32 gMonShinyPalette_Makuhita[] = INCBIN_U32("graphics/pokemon/makuhita/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Makuhita[] = INCBIN_U16("graphics/pokemon/makuhita/shiny.gbapal"); #else const u32 gMonFrontPic_Makuhita[] = INCBIN_U32("graphics/pokemon/makuhita/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Makuhita[] = INCBIN_U32("graphics/pokemon/makuhita/normal_gba.gbapal.lz"); + const u16 gMonPalette_Makuhita[] = INCBIN_U16("graphics/pokemon/makuhita/normal_gba.gbapal"); const u32 gMonBackPic_Makuhita[] = INCBIN_U32("graphics/pokemon/makuhita/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Makuhita[] = INCBIN_U32("graphics/pokemon/makuhita/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Makuhita[] = INCBIN_U16("graphics/pokemon/makuhita/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Makuhita[] = INCBIN_U8("graphics/pokemon/makuhita/icon.4bpp"); @@ -10999,21 +10999,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Makuhita[] = INCBIN_U16("graphics/pokemon/makuhita/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Makuhita[] = INCBIN_U16("graphics/pokemon/makuhita/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Hariyama[] = INCBIN_U32("graphics/pokemon/hariyama/anim_front.4bpp.lz"); - const u32 gMonPalette_Hariyama[] = INCBIN_U32("graphics/pokemon/hariyama/normal.gbapal.lz"); + const u16 gMonPalette_Hariyama[] = INCBIN_U16("graphics/pokemon/hariyama/normal.gbapal"); const u32 gMonBackPic_Hariyama[] = INCBIN_U32("graphics/pokemon/hariyama/back.4bpp.lz"); - const u32 gMonShinyPalette_Hariyama[] = INCBIN_U32("graphics/pokemon/hariyama/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Hariyama[] = INCBIN_U16("graphics/pokemon/hariyama/shiny.gbapal"); #else const u32 gMonFrontPic_Hariyama[] = INCBIN_U32("graphics/pokemon/hariyama/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Hariyama[] = INCBIN_U32("graphics/pokemon/hariyama/normal_gba.gbapal.lz"); + const u16 gMonPalette_Hariyama[] = INCBIN_U16("graphics/pokemon/hariyama/normal_gba.gbapal"); const u32 gMonBackPic_Hariyama[] = INCBIN_U32("graphics/pokemon/hariyama/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Hariyama[] = INCBIN_U32("graphics/pokemon/hariyama/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Hariyama[] = INCBIN_U16("graphics/pokemon/hariyama/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Hariyama[] = INCBIN_U8("graphics/pokemon/hariyama/icon.4bpp"); @@ -11026,8 +11026,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Hariyama[] = INCBIN_U16("graphics/pokemon/hariyama/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Hariyama[] = INCBIN_U16("graphics/pokemon/hariyama/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_MAKUHITA @@ -11035,14 +11035,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_NOSEPASS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Nosepass[] = INCBIN_U32("graphics/pokemon/nosepass/anim_front.4bpp.lz"); - const u32 gMonPalette_Nosepass[] = INCBIN_U32("graphics/pokemon/nosepass/normal.gbapal.lz"); + const u16 gMonPalette_Nosepass[] = INCBIN_U16("graphics/pokemon/nosepass/normal.gbapal"); const u32 gMonBackPic_Nosepass[] = INCBIN_U32("graphics/pokemon/nosepass/back.4bpp.lz"); - const u32 gMonShinyPalette_Nosepass[] = INCBIN_U32("graphics/pokemon/nosepass/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Nosepass[] = INCBIN_U16("graphics/pokemon/nosepass/shiny.gbapal"); #else const u32 gMonFrontPic_Nosepass[] = INCBIN_U32("graphics/pokemon/nosepass/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Nosepass[] = INCBIN_U32("graphics/pokemon/nosepass/normal_gba.gbapal.lz"); + const u16 gMonPalette_Nosepass[] = INCBIN_U16("graphics/pokemon/nosepass/normal_gba.gbapal"); const u32 gMonBackPic_Nosepass[] = INCBIN_U32("graphics/pokemon/nosepass/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Nosepass[] = INCBIN_U32("graphics/pokemon/nosepass/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Nosepass[] = INCBIN_U16("graphics/pokemon/nosepass/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Nosepass[] = INCBIN_U8("graphics/pokemon/nosepass/icon.4bpp"); @@ -11055,16 +11055,16 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Nosepass[] = INCBIN_U16("graphics/pokemon/nosepass/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Nosepass[] = INCBIN_U16("graphics/pokemon/nosepass/overworld_shiny.gbapal"); #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"); - const u32 gMonPalette_Probopass[] = INCBIN_U32("graphics/pokemon/probopass/normal.gbapal.lz"); + const u16 gMonPalette_Probopass[] = INCBIN_U16("graphics/pokemon/probopass/normal.gbapal"); const u32 gMonBackPic_Probopass[] = INCBIN_U32("graphics/pokemon/probopass/back.4bpp.lz"); - const u32 gMonShinyPalette_Probopass[] = INCBIN_U32("graphics/pokemon/probopass/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Probopass[] = INCBIN_U16("graphics/pokemon/probopass/shiny.gbapal"); const u8 gMonIcon_Probopass[] = INCBIN_U8("graphics/pokemon/probopass/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Probopass[] = INCBIN_U8("graphics/pokemon/probopass/footprint.1bpp"); @@ -11072,8 +11072,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Probopass[] = INCBIN_U16("graphics/pokemon/probopass/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Probopass[] = INCBIN_U16("graphics/pokemon/probopass/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_4_CROSS_EVOS @@ -11082,14 +11082,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_SKITTY #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Skitty[] = INCBIN_U32("graphics/pokemon/skitty/anim_front.4bpp.lz"); - const u32 gMonPalette_Skitty[] = INCBIN_U32("graphics/pokemon/skitty/normal.gbapal.lz"); + const u16 gMonPalette_Skitty[] = INCBIN_U16("graphics/pokemon/skitty/normal.gbapal"); const u32 gMonBackPic_Skitty[] = INCBIN_U32("graphics/pokemon/skitty/back.4bpp.lz"); - const u32 gMonShinyPalette_Skitty[] = INCBIN_U32("graphics/pokemon/skitty/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Skitty[] = INCBIN_U16("graphics/pokemon/skitty/shiny.gbapal"); #else const u32 gMonFrontPic_Skitty[] = INCBIN_U32("graphics/pokemon/skitty/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Skitty[] = INCBIN_U32("graphics/pokemon/skitty/normal_gba.gbapal.lz"); + const u16 gMonPalette_Skitty[] = INCBIN_U16("graphics/pokemon/skitty/normal_gba.gbapal"); const u32 gMonBackPic_Skitty[] = INCBIN_U32("graphics/pokemon/skitty/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Skitty[] = INCBIN_U32("graphics/pokemon/skitty/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Skitty[] = INCBIN_U16("graphics/pokemon/skitty/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Skitty[] = INCBIN_U8("graphics/pokemon/skitty/icon.4bpp"); @@ -11102,21 +11102,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Skitty[] = INCBIN_U16("graphics/pokemon/skitty/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Skitty[] = INCBIN_U16("graphics/pokemon/skitty/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Delcatty[] = INCBIN_U32("graphics/pokemon/delcatty/anim_front.4bpp.lz"); - const u32 gMonPalette_Delcatty[] = INCBIN_U32("graphics/pokemon/delcatty/normal.gbapal.lz"); + const u16 gMonPalette_Delcatty[] = INCBIN_U16("graphics/pokemon/delcatty/normal.gbapal"); const u32 gMonBackPic_Delcatty[] = INCBIN_U32("graphics/pokemon/delcatty/back.4bpp.lz"); - const u32 gMonShinyPalette_Delcatty[] = INCBIN_U32("graphics/pokemon/delcatty/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Delcatty[] = INCBIN_U16("graphics/pokemon/delcatty/shiny.gbapal"); #else const u32 gMonFrontPic_Delcatty[] = INCBIN_U32("graphics/pokemon/delcatty/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Delcatty[] = INCBIN_U32("graphics/pokemon/delcatty/normal_gba.gbapal.lz"); + const u16 gMonPalette_Delcatty[] = INCBIN_U16("graphics/pokemon/delcatty/normal_gba.gbapal"); const u32 gMonBackPic_Delcatty[] = INCBIN_U32("graphics/pokemon/delcatty/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Delcatty[] = INCBIN_U32("graphics/pokemon/delcatty/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Delcatty[] = INCBIN_U16("graphics/pokemon/delcatty/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Delcatty[] = INCBIN_U8("graphics/pokemon/delcatty/icon.4bpp"); @@ -11129,8 +11129,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Delcatty[] = INCBIN_U16("graphics/pokemon/delcatty/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Delcatty[] = INCBIN_U16("graphics/pokemon/delcatty/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SKITTY @@ -11138,14 +11138,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_SABLEYE #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Sableye[] = INCBIN_U32("graphics/pokemon/sableye/anim_front.4bpp.lz"); - const u32 gMonPalette_Sableye[] = INCBIN_U32("graphics/pokemon/sableye/normal.gbapal.lz"); + const u16 gMonPalette_Sableye[] = INCBIN_U16("graphics/pokemon/sableye/normal.gbapal"); const u32 gMonBackPic_Sableye[] = INCBIN_U32("graphics/pokemon/sableye/back.4bpp.lz"); - const u32 gMonShinyPalette_Sableye[] = INCBIN_U32("graphics/pokemon/sableye/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Sableye[] = INCBIN_U16("graphics/pokemon/sableye/shiny.gbapal"); #else const u32 gMonFrontPic_Sableye[] = INCBIN_U32("graphics/pokemon/sableye/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Sableye[] = INCBIN_U32("graphics/pokemon/sableye/normal_gba.gbapal.lz"); + const u16 gMonPalette_Sableye[] = INCBIN_U16("graphics/pokemon/sableye/normal_gba.gbapal"); const u32 gMonBackPic_Sableye[] = INCBIN_U32("graphics/pokemon/sableye/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Sableye[] = INCBIN_U32("graphics/pokemon/sableye/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Sableye[] = INCBIN_U16("graphics/pokemon/sableye/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Sableye[] = INCBIN_U8("graphics/pokemon/sableye/icon.4bpp"); @@ -11158,22 +11158,22 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Sableye[] = INCBIN_U16("graphics/pokemon/sableye/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Sableye[] = INCBIN_U16("graphics/pokemon/sableye/overworld_shiny.gbapal"); #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"); - const u32 gMonPalette_SableyeMega[] = INCBIN_U32("graphics/pokemon/sableye/mega/normal.gbapal.lz"); + const u16 gMonPalette_SableyeMega[] = INCBIN_U16("graphics/pokemon/sableye/mega/normal.gbapal"); 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 u16 gMonShinyPalette_SableyeMega[] = INCBIN_U16("graphics/pokemon/sableye/mega/shiny.gbapal"); const u8 gMonIcon_SableyeMega[] = INCBIN_U8("graphics/pokemon/sableye/mega/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS 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"); + const u16 gOverworldPalette_SableyeMega[] = INCBIN_U16("graphics/pokemon/sableye/mega/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_SableyeMega[] = INCBIN_U16("graphics/pokemon/sableye/mega/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS #endif //P_MEGA_EVOLUTIONS @@ -11182,14 +11182,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_MAWILE #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Mawile[] = INCBIN_U32("graphics/pokemon/mawile/anim_front.4bpp.lz"); - const u32 gMonPalette_Mawile[] = INCBIN_U32("graphics/pokemon/mawile/normal.gbapal.lz"); + const u16 gMonPalette_Mawile[] = INCBIN_U16("graphics/pokemon/mawile/normal.gbapal"); const u32 gMonBackPic_Mawile[] = INCBIN_U32("graphics/pokemon/mawile/back.4bpp.lz"); - const u32 gMonShinyPalette_Mawile[] = INCBIN_U32("graphics/pokemon/mawile/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Mawile[] = INCBIN_U16("graphics/pokemon/mawile/shiny.gbapal"); #else const u32 gMonFrontPic_Mawile[] = INCBIN_U32("graphics/pokemon/mawile/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Mawile[] = INCBIN_U32("graphics/pokemon/mawile/normal_gba.gbapal.lz"); + const u16 gMonPalette_Mawile[] = INCBIN_U16("graphics/pokemon/mawile/normal_gba.gbapal"); const u32 gMonBackPic_Mawile[] = INCBIN_U32("graphics/pokemon/mawile/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Mawile[] = INCBIN_U32("graphics/pokemon/mawile/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Mawile[] = INCBIN_U16("graphics/pokemon/mawile/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Mawile[] = INCBIN_U8("graphics/pokemon/mawile/icon.4bpp"); @@ -11206,22 +11206,22 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Mawile[] = INCBIN_U16("graphics/pokemon/mawile/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Mawile[] = INCBIN_U16("graphics/pokemon/mawile/overworld_shiny.gbapal"); #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"); - const u32 gMonPalette_MawileMega[] = INCBIN_U32("graphics/pokemon/mawile/mega/normal.gbapal.lz"); + const u16 gMonPalette_MawileMega[] = INCBIN_U16("graphics/pokemon/mawile/mega/normal.gbapal"); 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 u16 gMonShinyPalette_MawileMega[] = INCBIN_U16("graphics/pokemon/mawile/mega/shiny.gbapal"); const u8 gMonIcon_MawileMega[] = INCBIN_U8("graphics/pokemon/mawile/mega/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS 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"); + const u16 gOverworldPalette_MawileMega[] = INCBIN_U16("graphics/pokemon/mawile/mega/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_MawileMega[] = INCBIN_U16("graphics/pokemon/mawile/mega/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS #endif //P_MEGA_EVOLUTIONS @@ -11230,14 +11230,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_ARON #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Aron[] = INCBIN_U32("graphics/pokemon/aron/anim_front.4bpp.lz"); - const u32 gMonPalette_Aron[] = INCBIN_U32("graphics/pokemon/aron/normal.gbapal.lz"); + const u16 gMonPalette_Aron[] = INCBIN_U16("graphics/pokemon/aron/normal.gbapal"); const u32 gMonBackPic_Aron[] = INCBIN_U32("graphics/pokemon/aron/back.4bpp.lz"); - const u32 gMonShinyPalette_Aron[] = INCBIN_U32("graphics/pokemon/aron/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Aron[] = INCBIN_U16("graphics/pokemon/aron/shiny.gbapal"); #else const u32 gMonFrontPic_Aron[] = INCBIN_U32("graphics/pokemon/aron/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Aron[] = INCBIN_U32("graphics/pokemon/aron/normal_gba.gbapal.lz"); + const u16 gMonPalette_Aron[] = INCBIN_U16("graphics/pokemon/aron/normal_gba.gbapal"); const u32 gMonBackPic_Aron[] = INCBIN_U32("graphics/pokemon/aron/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Aron[] = INCBIN_U32("graphics/pokemon/aron/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Aron[] = INCBIN_U16("graphics/pokemon/aron/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Aron[] = INCBIN_U8("graphics/pokemon/aron/icon.4bpp"); @@ -11250,21 +11250,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Aron[] = INCBIN_U16("graphics/pokemon/aron/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Aron[] = INCBIN_U16("graphics/pokemon/aron/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Lairon[] = INCBIN_U32("graphics/pokemon/lairon/anim_front.4bpp.lz"); - const u32 gMonPalette_Lairon[] = INCBIN_U32("graphics/pokemon/lairon/normal.gbapal.lz"); + const u16 gMonPalette_Lairon[] = INCBIN_U16("graphics/pokemon/lairon/normal.gbapal"); const u32 gMonBackPic_Lairon[] = INCBIN_U32("graphics/pokemon/lairon/back.4bpp.lz"); - const u32 gMonShinyPalette_Lairon[] = INCBIN_U32("graphics/pokemon/lairon/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Lairon[] = INCBIN_U16("graphics/pokemon/lairon/shiny.gbapal"); #else const u32 gMonFrontPic_Lairon[] = INCBIN_U32("graphics/pokemon/lairon/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Lairon[] = INCBIN_U32("graphics/pokemon/lairon/normal_gba.gbapal.lz"); + const u16 gMonPalette_Lairon[] = INCBIN_U16("graphics/pokemon/lairon/normal_gba.gbapal"); const u32 gMonBackPic_Lairon[] = INCBIN_U32("graphics/pokemon/lairon/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Lairon[] = INCBIN_U32("graphics/pokemon/lairon/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Lairon[] = INCBIN_U16("graphics/pokemon/lairon/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Lairon[] = INCBIN_U8("graphics/pokemon/lairon/icon.4bpp"); @@ -11277,21 +11277,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Lairon[] = INCBIN_U16("graphics/pokemon/lairon/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Lairon[] = INCBIN_U16("graphics/pokemon/lairon/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Aggron[] = INCBIN_U32("graphics/pokemon/aggron/anim_front.4bpp.lz"); - const u32 gMonPalette_Aggron[] = INCBIN_U32("graphics/pokemon/aggron/normal.gbapal.lz"); + const u16 gMonPalette_Aggron[] = INCBIN_U16("graphics/pokemon/aggron/normal.gbapal"); const u32 gMonBackPic_Aggron[] = INCBIN_U32("graphics/pokemon/aggron/back.4bpp.lz"); - const u32 gMonShinyPalette_Aggron[] = INCBIN_U32("graphics/pokemon/aggron/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Aggron[] = INCBIN_U16("graphics/pokemon/aggron/shiny.gbapal"); #else const u32 gMonFrontPic_Aggron[] = INCBIN_U32("graphics/pokemon/aggron/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Aggron[] = INCBIN_U32("graphics/pokemon/aggron/normal_gba.gbapal.lz"); + const u16 gMonPalette_Aggron[] = INCBIN_U16("graphics/pokemon/aggron/normal_gba.gbapal"); const u32 gMonBackPic_Aggron[] = INCBIN_U32("graphics/pokemon/aggron/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Aggron[] = INCBIN_U32("graphics/pokemon/aggron/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Aggron[] = INCBIN_U16("graphics/pokemon/aggron/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Aggron[] = INCBIN_U8("graphics/pokemon/aggron/icon.4bpp"); @@ -11304,22 +11304,22 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Aggron[] = INCBIN_U16("graphics/pokemon/aggron/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Aggron[] = INCBIN_U16("graphics/pokemon/aggron/overworld_shiny.gbapal"); #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"); - const u32 gMonPalette_AggronMega[] = INCBIN_U32("graphics/pokemon/aggron/mega/normal.gbapal.lz"); + const u16 gMonPalette_AggronMega[] = INCBIN_U16("graphics/pokemon/aggron/mega/normal.gbapal"); 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 u16 gMonShinyPalette_AggronMega[] = INCBIN_U16("graphics/pokemon/aggron/mega/shiny.gbapal"); const u8 gMonIcon_AggronMega[] = INCBIN_U8("graphics/pokemon/aggron/mega/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS 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"); + const u16 gOverworldPalette_AggronMega[] = INCBIN_U16("graphics/pokemon/aggron/mega/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_AggronMega[] = INCBIN_U16("graphics/pokemon/aggron/mega/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS #endif //P_MEGA_EVOLUTIONS @@ -11328,14 +11328,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_MEDITITE #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Meditite[] = INCBIN_U32("graphics/pokemon/meditite/anim_front.4bpp.lz"); - const u32 gMonPalette_Meditite[] = INCBIN_U32("graphics/pokemon/meditite/normal.gbapal.lz"); + const u16 gMonPalette_Meditite[] = INCBIN_U16("graphics/pokemon/meditite/normal.gbapal"); const u32 gMonBackPic_Meditite[] = INCBIN_U32("graphics/pokemon/meditite/back.4bpp.lz"); - const u32 gMonShinyPalette_Meditite[] = INCBIN_U32("graphics/pokemon/meditite/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Meditite[] = INCBIN_U16("graphics/pokemon/meditite/shiny.gbapal"); #else const u32 gMonFrontPic_Meditite[] = INCBIN_U32("graphics/pokemon/meditite/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Meditite[] = INCBIN_U32("graphics/pokemon/meditite/normal_gba.gbapal.lz"); + const u16 gMonPalette_Meditite[] = INCBIN_U16("graphics/pokemon/meditite/normal_gba.gbapal"); const u32 gMonBackPic_Meditite[] = INCBIN_U32("graphics/pokemon/meditite/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Meditite[] = INCBIN_U32("graphics/pokemon/meditite/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Meditite[] = INCBIN_U16("graphics/pokemon/meditite/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Meditite[] = INCBIN_U8("graphics/pokemon/meditite/icon.4bpp"); @@ -11348,8 +11348,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Meditite[] = INCBIN_U16("graphics/pokemon/meditite/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Meditite[] = INCBIN_U16("graphics/pokemon/meditite/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -11363,14 +11363,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Medicham[] = INCBIN_U32("graphics/pokemon/medicham/anim_front.4bpp.lz"); - const u32 gMonPalette_Medicham[] = INCBIN_U32("graphics/pokemon/medicham/normal.gbapal.lz"); + const u16 gMonPalette_Medicham[] = INCBIN_U16("graphics/pokemon/medicham/normal.gbapal"); const u32 gMonBackPic_Medicham[] = INCBIN_U32("graphics/pokemon/medicham/back.4bpp.lz"); - const u32 gMonShinyPalette_Medicham[] = INCBIN_U32("graphics/pokemon/medicham/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Medicham[] = INCBIN_U16("graphics/pokemon/medicham/shiny.gbapal"); #else const u32 gMonFrontPic_Medicham[] = INCBIN_U32("graphics/pokemon/medicham/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Medicham[] = INCBIN_U32("graphics/pokemon/medicham/normal_gba.gbapal.lz"); + const u16 gMonPalette_Medicham[] = INCBIN_U16("graphics/pokemon/medicham/normal_gba.gbapal"); const u32 gMonBackPic_Medicham[] = INCBIN_U32("graphics/pokemon/medicham/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Medicham[] = INCBIN_U32("graphics/pokemon/medicham/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Medicham[] = INCBIN_U16("graphics/pokemon/medicham/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Medicham[] = INCBIN_U8("graphics/pokemon/medicham/icon.4bpp"); @@ -11383,8 +11383,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Medicham[] = INCBIN_U16("graphics/pokemon/medicham/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Medicham[] = INCBIN_U16("graphics/pokemon/medicham/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -11398,15 +11398,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_MEGA_EVOLUTIONS const u32 gMonFrontPic_MedichamMega[] = INCBIN_U32("graphics/pokemon/medicham/mega/front.4bpp.lz"); - const u32 gMonPalette_MedichamMega[] = INCBIN_U32("graphics/pokemon/medicham/mega/normal.gbapal.lz"); + const u16 gMonPalette_MedichamMega[] = INCBIN_U16("graphics/pokemon/medicham/mega/normal.gbapal"); 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 u16 gMonShinyPalette_MedichamMega[] = INCBIN_U16("graphics/pokemon/medicham/mega/shiny.gbapal"); const u8 gMonIcon_MedichamMega[] = INCBIN_U8("graphics/pokemon/medicham/mega/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS 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"); + const u16 gOverworldPalette_MedichamMega[] = INCBIN_U16("graphics/pokemon/medicham/mega/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_MedichamMega[] = INCBIN_U16("graphics/pokemon/medicham/mega/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS #endif //P_MEGA_EVOLUTIONS @@ -11415,14 +11415,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_ELECTRIKE #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Electrike[] = INCBIN_U32("graphics/pokemon/electrike/anim_front.4bpp.lz"); - const u32 gMonPalette_Electrike[] = INCBIN_U32("graphics/pokemon/electrike/normal.gbapal.lz"); + const u16 gMonPalette_Electrike[] = INCBIN_U16("graphics/pokemon/electrike/normal.gbapal"); const u32 gMonBackPic_Electrike[] = INCBIN_U32("graphics/pokemon/electrike/back.4bpp.lz"); - const u32 gMonShinyPalette_Electrike[] = INCBIN_U32("graphics/pokemon/electrike/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Electrike[] = INCBIN_U16("graphics/pokemon/electrike/shiny.gbapal"); #else const u32 gMonFrontPic_Electrike[] = INCBIN_U32("graphics/pokemon/electrike/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Electrike[] = INCBIN_U32("graphics/pokemon/electrike/normal_gba.gbapal.lz"); + const u16 gMonPalette_Electrike[] = INCBIN_U16("graphics/pokemon/electrike/normal_gba.gbapal"); const u32 gMonBackPic_Electrike[] = INCBIN_U32("graphics/pokemon/electrike/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Electrike[] = INCBIN_U32("graphics/pokemon/electrike/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Electrike[] = INCBIN_U16("graphics/pokemon/electrike/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Electrike[] = INCBIN_U8("graphics/pokemon/electrike/icon.4bpp"); @@ -11435,21 +11435,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Electrike[] = INCBIN_U16("graphics/pokemon/electrike/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Electrike[] = INCBIN_U16("graphics/pokemon/electrike/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Manectric[] = INCBIN_U32("graphics/pokemon/manectric/anim_front.4bpp.lz"); - const u32 gMonPalette_Manectric[] = INCBIN_U32("graphics/pokemon/manectric/normal.gbapal.lz"); + const u16 gMonPalette_Manectric[] = INCBIN_U16("graphics/pokemon/manectric/normal.gbapal"); const u32 gMonBackPic_Manectric[] = INCBIN_U32("graphics/pokemon/manectric/back.4bpp.lz"); - const u32 gMonShinyPalette_Manectric[] = INCBIN_U32("graphics/pokemon/manectric/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Manectric[] = INCBIN_U16("graphics/pokemon/manectric/shiny.gbapal"); #else const u32 gMonFrontPic_Manectric[] = INCBIN_U32("graphics/pokemon/manectric/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Manectric[] = INCBIN_U32("graphics/pokemon/manectric/normal_gba.gbapal.lz"); + const u16 gMonPalette_Manectric[] = INCBIN_U16("graphics/pokemon/manectric/normal_gba.gbapal"); const u32 gMonBackPic_Manectric[] = INCBIN_U32("graphics/pokemon/manectric/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Manectric[] = INCBIN_U32("graphics/pokemon/manectric/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Manectric[] = INCBIN_U16("graphics/pokemon/manectric/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Manectric[] = INCBIN_U8("graphics/pokemon/manectric/icon.4bpp"); @@ -11462,22 +11462,22 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Manectric[] = INCBIN_U16("graphics/pokemon/manectric/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Manectric[] = INCBIN_U16("graphics/pokemon/manectric/overworld_shiny.gbapal"); #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"); - const u32 gMonPalette_ManectricMega[] = INCBIN_U32("graphics/pokemon/manectric/mega/normal.gbapal.lz"); + const u16 gMonPalette_ManectricMega[] = INCBIN_U16("graphics/pokemon/manectric/mega/normal.gbapal"); 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 u16 gMonShinyPalette_ManectricMega[] = INCBIN_U16("graphics/pokemon/manectric/mega/shiny.gbapal"); const u8 gMonIcon_ManectricMega[] = INCBIN_U8("graphics/pokemon/manectric/mega/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS 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"); + const u16 gOverworldPalette_ManectricMega[] = INCBIN_U16("graphics/pokemon/manectric/mega/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_ManectricMega[] = INCBIN_U16("graphics/pokemon/manectric/mega/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS #endif //P_MEGA_EVOLUTIONS @@ -11486,14 +11486,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_PLUSLE #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Plusle[] = INCBIN_U32("graphics/pokemon/plusle/anim_front.4bpp.lz"); - const u32 gMonPalette_Plusle[] = INCBIN_U32("graphics/pokemon/plusle/normal.gbapal.lz"); + const u16 gMonPalette_Plusle[] = INCBIN_U16("graphics/pokemon/plusle/normal.gbapal"); const u32 gMonBackPic_Plusle[] = INCBIN_U32("graphics/pokemon/plusle/back.4bpp.lz"); - const u32 gMonShinyPalette_Plusle[] = INCBIN_U32("graphics/pokemon/plusle/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Plusle[] = INCBIN_U16("graphics/pokemon/plusle/shiny.gbapal"); #else const u32 gMonFrontPic_Plusle[] = INCBIN_U32("graphics/pokemon/plusle/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Plusle[] = INCBIN_U32("graphics/pokemon/plusle/normal_gba.gbapal.lz"); + const u16 gMonPalette_Plusle[] = INCBIN_U16("graphics/pokemon/plusle/normal_gba.gbapal"); const u32 gMonBackPic_Plusle[] = INCBIN_U32("graphics/pokemon/plusle/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Plusle[] = INCBIN_U32("graphics/pokemon/plusle/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Plusle[] = INCBIN_U16("graphics/pokemon/plusle/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Plusle[] = INCBIN_U8("graphics/pokemon/plusle/icon.4bpp"); @@ -11506,8 +11506,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Plusle[] = INCBIN_U16("graphics/pokemon/plusle/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Plusle[] = INCBIN_U16("graphics/pokemon/plusle/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_PLUSLE @@ -11515,14 +11515,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_MINUN #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Minun[] = INCBIN_U32("graphics/pokemon/minun/anim_front.4bpp.lz"); - const u32 gMonPalette_Minun[] = INCBIN_U32("graphics/pokemon/minun/normal.gbapal.lz"); + const u16 gMonPalette_Minun[] = INCBIN_U16("graphics/pokemon/minun/normal.gbapal"); const u32 gMonBackPic_Minun[] = INCBIN_U32("graphics/pokemon/minun/back.4bpp.lz"); - const u32 gMonShinyPalette_Minun[] = INCBIN_U32("graphics/pokemon/minun/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Minun[] = INCBIN_U16("graphics/pokemon/minun/shiny.gbapal"); #else const u32 gMonFrontPic_Minun[] = INCBIN_U32("graphics/pokemon/minun/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Minun[] = INCBIN_U32("graphics/pokemon/minun/normal_gba.gbapal.lz"); + const u16 gMonPalette_Minun[] = INCBIN_U16("graphics/pokemon/minun/normal_gba.gbapal"); const u32 gMonBackPic_Minun[] = INCBIN_U32("graphics/pokemon/minun/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Minun[] = INCBIN_U32("graphics/pokemon/minun/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Minun[] = INCBIN_U16("graphics/pokemon/minun/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Minun[] = INCBIN_U8("graphics/pokemon/minun/icon.4bpp"); @@ -11535,8 +11535,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Minun[] = INCBIN_U16("graphics/pokemon/minun/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Minun[] = INCBIN_U16("graphics/pokemon/minun/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_MINUN @@ -11544,14 +11544,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_VOLBEAT_ILLUMISE #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Volbeat[] = INCBIN_U32("graphics/pokemon/volbeat/anim_front.4bpp.lz"); - const u32 gMonPalette_Volbeat[] = INCBIN_U32("graphics/pokemon/volbeat/normal.gbapal.lz"); + const u16 gMonPalette_Volbeat[] = INCBIN_U16("graphics/pokemon/volbeat/normal.gbapal"); const u32 gMonBackPic_Volbeat[] = INCBIN_U32("graphics/pokemon/volbeat/back.4bpp.lz"); - const u32 gMonShinyPalette_Volbeat[] = INCBIN_U32("graphics/pokemon/volbeat/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Volbeat[] = INCBIN_U16("graphics/pokemon/volbeat/shiny.gbapal"); #else const u32 gMonFrontPic_Volbeat[] = INCBIN_U32("graphics/pokemon/volbeat/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Volbeat[] = INCBIN_U32("graphics/pokemon/volbeat/normal_gba.gbapal.lz"); + const u16 gMonPalette_Volbeat[] = INCBIN_U16("graphics/pokemon/volbeat/normal_gba.gbapal"); const u32 gMonBackPic_Volbeat[] = INCBIN_U32("graphics/pokemon/volbeat/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Volbeat[] = INCBIN_U32("graphics/pokemon/volbeat/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Volbeat[] = INCBIN_U16("graphics/pokemon/volbeat/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Volbeat[] = INCBIN_U8("graphics/pokemon/volbeat/icon.4bpp"); @@ -11564,21 +11564,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Volbeat[] = INCBIN_U16("graphics/pokemon/volbeat/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Volbeat[] = INCBIN_U16("graphics/pokemon/volbeat/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Illumise[] = INCBIN_U32("graphics/pokemon/illumise/anim_front.4bpp.lz"); - const u32 gMonPalette_Illumise[] = INCBIN_U32("graphics/pokemon/illumise/normal.gbapal.lz"); + const u16 gMonPalette_Illumise[] = INCBIN_U16("graphics/pokemon/illumise/normal.gbapal"); const u32 gMonBackPic_Illumise[] = INCBIN_U32("graphics/pokemon/illumise/back.4bpp.lz"); - const u32 gMonShinyPalette_Illumise[] = INCBIN_U32("graphics/pokemon/illumise/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Illumise[] = INCBIN_U16("graphics/pokemon/illumise/shiny.gbapal"); #else const u32 gMonFrontPic_Illumise[] = INCBIN_U32("graphics/pokemon/illumise/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Illumise[] = INCBIN_U32("graphics/pokemon/illumise/normal_gba.gbapal.lz"); + const u16 gMonPalette_Illumise[] = INCBIN_U16("graphics/pokemon/illumise/normal_gba.gbapal"); const u32 gMonBackPic_Illumise[] = INCBIN_U32("graphics/pokemon/illumise/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Illumise[] = INCBIN_U32("graphics/pokemon/illumise/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Illumise[] = INCBIN_U16("graphics/pokemon/illumise/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Illumise[] = INCBIN_U8("graphics/pokemon/illumise/icon.4bpp"); @@ -11591,8 +11591,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Illumise[] = INCBIN_U16("graphics/pokemon/illumise/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Illumise[] = INCBIN_U16("graphics/pokemon/illumise/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_VOLBEAT_ILLUMISE @@ -11600,9 +11600,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_ROSELIA #if P_GEN_4_CROSS_EVOS const u32 gMonFrontPic_Budew[] = INCBIN_U32("graphics/pokemon/budew/anim_front.4bpp.lz"); - const u32 gMonPalette_Budew[] = INCBIN_U32("graphics/pokemon/budew/normal.gbapal.lz"); + const u16 gMonPalette_Budew[] = INCBIN_U16("graphics/pokemon/budew/normal.gbapal"); const u32 gMonBackPic_Budew[] = INCBIN_U32("graphics/pokemon/budew/back.4bpp.lz"); - const u32 gMonShinyPalette_Budew[] = INCBIN_U32("graphics/pokemon/budew/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Budew[] = INCBIN_U16("graphics/pokemon/budew/shiny.gbapal"); const u8 gMonIcon_Budew[] = INCBIN_U8("graphics/pokemon/budew/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Budew[] = INCBIN_U8("graphics/pokemon/budew/footprint.1bpp"); @@ -11610,22 +11610,22 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Budew[] = INCBIN_U16("graphics/pokemon/budew/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Budew[] = INCBIN_U16("graphics/pokemon/budew/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_4_CROSS_EVOS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Roselia[] = INCBIN_U32("graphics/pokemon/roselia/anim_front.4bpp.lz"); - const u32 gMonPalette_Roselia[] = INCBIN_U32("graphics/pokemon/roselia/normal.gbapal.lz"); + const u16 gMonPalette_Roselia[] = INCBIN_U16("graphics/pokemon/roselia/normal.gbapal"); const u32 gMonBackPic_Roselia[] = INCBIN_U32("graphics/pokemon/roselia/back.4bpp.lz"); - const u32 gMonShinyPalette_Roselia[] = INCBIN_U32("graphics/pokemon/roselia/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Roselia[] = INCBIN_U16("graphics/pokemon/roselia/shiny.gbapal"); #else const u32 gMonFrontPic_Roselia[] = INCBIN_U32("graphics/pokemon/roselia/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Roselia[] = INCBIN_U32("graphics/pokemon/roselia/normal_gba.gbapal.lz"); + const u16 gMonPalette_Roselia[] = INCBIN_U16("graphics/pokemon/roselia/normal_gba.gbapal"); const u32 gMonBackPic_Roselia[] = INCBIN_U32("graphics/pokemon/roselia/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Roselia[] = INCBIN_U32("graphics/pokemon/roselia/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Roselia[] = INCBIN_U16("graphics/pokemon/roselia/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Roselia[] = INCBIN_U8("graphics/pokemon/roselia/icon.4bpp"); @@ -11638,8 +11638,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Roselia[] = INCBIN_U16("graphics/pokemon/roselia/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Roselia[] = INCBIN_U16("graphics/pokemon/roselia/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -11653,9 +11653,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_GEN_4_CROSS_EVOS const u32 gMonFrontPic_Roserade[] = INCBIN_U32("graphics/pokemon/roserade/anim_front.4bpp.lz"); - const u32 gMonPalette_Roserade[] = INCBIN_U32("graphics/pokemon/roserade/normal.gbapal.lz"); + const u16 gMonPalette_Roserade[] = INCBIN_U16("graphics/pokemon/roserade/normal.gbapal"); const u32 gMonBackPic_Roserade[] = INCBIN_U32("graphics/pokemon/roserade/back.4bpp.lz"); - const u32 gMonShinyPalette_Roserade[] = INCBIN_U32("graphics/pokemon/roserade/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Roserade[] = INCBIN_U16("graphics/pokemon/roserade/shiny.gbapal"); const u8 gMonIcon_Roserade[] = INCBIN_U8("graphics/pokemon/roserade/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Roserade[] = INCBIN_U8("graphics/pokemon/roserade/footprint.1bpp"); @@ -11663,8 +11663,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Roserade[] = INCBIN_U16("graphics/pokemon/roserade/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Roserade[] = INCBIN_U16("graphics/pokemon/roserade/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -11681,14 +11681,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_GULPIN #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Gulpin[] = INCBIN_U32("graphics/pokemon/gulpin/anim_front.4bpp.lz"); - const u32 gMonPalette_Gulpin[] = INCBIN_U32("graphics/pokemon/gulpin/normal.gbapal.lz"); + const u16 gMonPalette_Gulpin[] = INCBIN_U16("graphics/pokemon/gulpin/normal.gbapal"); const u32 gMonBackPic_Gulpin[] = INCBIN_U32("graphics/pokemon/gulpin/back.4bpp.lz"); - const u32 gMonShinyPalette_Gulpin[] = INCBIN_U32("graphics/pokemon/gulpin/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Gulpin[] = INCBIN_U16("graphics/pokemon/gulpin/shiny.gbapal"); #else const u32 gMonFrontPic_Gulpin[] = INCBIN_U32("graphics/pokemon/gulpin/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Gulpin[] = INCBIN_U32("graphics/pokemon/gulpin/normal_gba.gbapal.lz"); + const u16 gMonPalette_Gulpin[] = INCBIN_U16("graphics/pokemon/gulpin/normal_gba.gbapal"); const u32 gMonBackPic_Gulpin[] = INCBIN_U32("graphics/pokemon/gulpin/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Gulpin[] = INCBIN_U32("graphics/pokemon/gulpin/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Gulpin[] = INCBIN_U16("graphics/pokemon/gulpin/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Gulpin[] = INCBIN_U8("graphics/pokemon/gulpin/icon.4bpp"); @@ -11701,8 +11701,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Gulpin[] = INCBIN_U16("graphics/pokemon/gulpin/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Gulpin[] = INCBIN_U16("graphics/pokemon/gulpin/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -11716,14 +11716,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Swalot[] = INCBIN_U32("graphics/pokemon/swalot/anim_front.4bpp.lz"); - const u32 gMonPalette_Swalot[] = INCBIN_U32("graphics/pokemon/swalot/normal.gbapal.lz"); + const u16 gMonPalette_Swalot[] = INCBIN_U16("graphics/pokemon/swalot/normal.gbapal"); const u32 gMonBackPic_Swalot[] = INCBIN_U32("graphics/pokemon/swalot/back.4bpp.lz"); - const u32 gMonShinyPalette_Swalot[] = INCBIN_U32("graphics/pokemon/swalot/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Swalot[] = INCBIN_U16("graphics/pokemon/swalot/shiny.gbapal"); #else const u32 gMonFrontPic_Swalot[] = INCBIN_U32("graphics/pokemon/swalot/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Swalot[] = INCBIN_U32("graphics/pokemon/swalot/normal_gba.gbapal.lz"); + const u16 gMonPalette_Swalot[] = INCBIN_U16("graphics/pokemon/swalot/normal_gba.gbapal"); const u32 gMonBackPic_Swalot[] = INCBIN_U32("graphics/pokemon/swalot/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Swalot[] = INCBIN_U32("graphics/pokemon/swalot/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Swalot[] = INCBIN_U16("graphics/pokemon/swalot/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Swalot[] = INCBIN_U8("graphics/pokemon/swalot/icon.4bpp"); @@ -11736,8 +11736,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Swalot[] = INCBIN_U16("graphics/pokemon/swalot/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Swalot[] = INCBIN_U16("graphics/pokemon/swalot/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -11753,14 +11753,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_CARVANHA #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Carvanha[] = INCBIN_U32("graphics/pokemon/carvanha/anim_front.4bpp.lz"); - const u32 gMonPalette_Carvanha[] = INCBIN_U32("graphics/pokemon/carvanha/normal.gbapal.lz"); + const u16 gMonPalette_Carvanha[] = INCBIN_U16("graphics/pokemon/carvanha/normal.gbapal"); const u32 gMonBackPic_Carvanha[] = INCBIN_U32("graphics/pokemon/carvanha/back.4bpp.lz"); - const u32 gMonShinyPalette_Carvanha[] = INCBIN_U32("graphics/pokemon/carvanha/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Carvanha[] = INCBIN_U16("graphics/pokemon/carvanha/shiny.gbapal"); #else const u32 gMonFrontPic_Carvanha[] = INCBIN_U32("graphics/pokemon/carvanha/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Carvanha[] = INCBIN_U32("graphics/pokemon/carvanha/normal_gba.gbapal.lz"); + const u16 gMonPalette_Carvanha[] = INCBIN_U16("graphics/pokemon/carvanha/normal_gba.gbapal"); const u32 gMonBackPic_Carvanha[] = INCBIN_U32("graphics/pokemon/carvanha/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Carvanha[] = INCBIN_U32("graphics/pokemon/carvanha/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Carvanha[] = INCBIN_U16("graphics/pokemon/carvanha/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Carvanha[] = INCBIN_U8("graphics/pokemon/carvanha/icon.4bpp"); @@ -11773,21 +11773,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Carvanha[] = INCBIN_U16("graphics/pokemon/carvanha/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Carvanha[] = INCBIN_U16("graphics/pokemon/carvanha/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Sharpedo[] = INCBIN_U32("graphics/pokemon/sharpedo/anim_front.4bpp.lz"); - const u32 gMonPalette_Sharpedo[] = INCBIN_U32("graphics/pokemon/sharpedo/normal.gbapal.lz"); + const u16 gMonPalette_Sharpedo[] = INCBIN_U16("graphics/pokemon/sharpedo/normal.gbapal"); const u32 gMonBackPic_Sharpedo[] = INCBIN_U32("graphics/pokemon/sharpedo/back.4bpp.lz"); - const u32 gMonShinyPalette_Sharpedo[] = INCBIN_U32("graphics/pokemon/sharpedo/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Sharpedo[] = INCBIN_U16("graphics/pokemon/sharpedo/shiny.gbapal"); #else const u32 gMonFrontPic_Sharpedo[] = INCBIN_U32("graphics/pokemon/sharpedo/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Sharpedo[] = INCBIN_U32("graphics/pokemon/sharpedo/normal_gba.gbapal.lz"); + const u16 gMonPalette_Sharpedo[] = INCBIN_U16("graphics/pokemon/sharpedo/normal_gba.gbapal"); const u32 gMonBackPic_Sharpedo[] = INCBIN_U32("graphics/pokemon/sharpedo/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Sharpedo[] = INCBIN_U32("graphics/pokemon/sharpedo/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Sharpedo[] = INCBIN_U16("graphics/pokemon/sharpedo/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Sharpedo[] = INCBIN_U8("graphics/pokemon/sharpedo/icon.4bpp"); @@ -11800,22 +11800,22 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Sharpedo[] = INCBIN_U16("graphics/pokemon/sharpedo/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Sharpedo[] = INCBIN_U16("graphics/pokemon/sharpedo/overworld_shiny.gbapal"); #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"); - const u32 gMonPalette_SharpedoMega[] = INCBIN_U32("graphics/pokemon/sharpedo/mega/normal.gbapal.lz"); + const u16 gMonPalette_SharpedoMega[] = INCBIN_U16("graphics/pokemon/sharpedo/mega/normal.gbapal"); 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 u16 gMonShinyPalette_SharpedoMega[] = INCBIN_U16("graphics/pokemon/sharpedo/mega/shiny.gbapal"); const u8 gMonIcon_SharpedoMega[] = INCBIN_U8("graphics/pokemon/sharpedo/mega/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS 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"); + const u16 gOverworldPalette_SharpedoMega[] = INCBIN_U16("graphics/pokemon/sharpedo/mega/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_SharpedoMega[] = INCBIN_U16("graphics/pokemon/sharpedo/mega/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS #endif //P_MEGA_EVOLUTIONS @@ -11824,14 +11824,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_WAILMER #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Wailmer[] = INCBIN_U32("graphics/pokemon/wailmer/anim_front.4bpp.lz"); - const u32 gMonPalette_Wailmer[] = INCBIN_U32("graphics/pokemon/wailmer/normal.gbapal.lz"); + const u16 gMonPalette_Wailmer[] = INCBIN_U16("graphics/pokemon/wailmer/normal.gbapal"); const u32 gMonBackPic_Wailmer[] = INCBIN_U32("graphics/pokemon/wailmer/back.4bpp.lz"); - const u32 gMonShinyPalette_Wailmer[] = INCBIN_U32("graphics/pokemon/wailmer/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Wailmer[] = INCBIN_U16("graphics/pokemon/wailmer/shiny.gbapal"); #else const u32 gMonFrontPic_Wailmer[] = INCBIN_U32("graphics/pokemon/wailmer/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Wailmer[] = INCBIN_U32("graphics/pokemon/wailmer/normal_gba.gbapal.lz"); + const u16 gMonPalette_Wailmer[] = INCBIN_U16("graphics/pokemon/wailmer/normal_gba.gbapal"); const u32 gMonBackPic_Wailmer[] = INCBIN_U32("graphics/pokemon/wailmer/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Wailmer[] = INCBIN_U32("graphics/pokemon/wailmer/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Wailmer[] = INCBIN_U16("graphics/pokemon/wailmer/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Wailmer[] = INCBIN_U8("graphics/pokemon/wailmer/icon.4bpp"); @@ -11844,21 +11844,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Wailmer[] = INCBIN_U16("graphics/pokemon/wailmer/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Wailmer[] = INCBIN_U16("graphics/pokemon/wailmer/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Wailord[] = INCBIN_U32("graphics/pokemon/wailord/anim_front.4bpp.lz"); - const u32 gMonPalette_Wailord[] = INCBIN_U32("graphics/pokemon/wailord/normal.gbapal.lz"); + const u16 gMonPalette_Wailord[] = INCBIN_U16("graphics/pokemon/wailord/normal.gbapal"); const u32 gMonBackPic_Wailord[] = INCBIN_U32("graphics/pokemon/wailord/back.4bpp.lz"); - const u32 gMonShinyPalette_Wailord[] = INCBIN_U32("graphics/pokemon/wailord/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Wailord[] = INCBIN_U16("graphics/pokemon/wailord/shiny.gbapal"); #else const u32 gMonFrontPic_Wailord[] = INCBIN_U32("graphics/pokemon/wailord/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Wailord[] = INCBIN_U32("graphics/pokemon/wailord/normal_gba.gbapal.lz"); + const u16 gMonPalette_Wailord[] = INCBIN_U16("graphics/pokemon/wailord/normal_gba.gbapal"); const u32 gMonBackPic_Wailord[] = INCBIN_U32("graphics/pokemon/wailord/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Wailord[] = INCBIN_U32("graphics/pokemon/wailord/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Wailord[] = INCBIN_U16("graphics/pokemon/wailord/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Wailord[] = INCBIN_U8("graphics/pokemon/wailord/icon.4bpp"); @@ -11871,8 +11871,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Wailord[] = INCBIN_U16("graphics/pokemon/wailord/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Wailord[] = INCBIN_U16("graphics/pokemon/wailord/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_WAILMER @@ -11880,14 +11880,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_NUMEL #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Numel[] = INCBIN_U32("graphics/pokemon/numel/anim_front.4bpp.lz"); - const u32 gMonPalette_Numel[] = INCBIN_U32("graphics/pokemon/numel/normal.gbapal.lz"); + const u16 gMonPalette_Numel[] = INCBIN_U16("graphics/pokemon/numel/normal.gbapal"); const u32 gMonBackPic_Numel[] = INCBIN_U32("graphics/pokemon/numel/back.4bpp.lz"); - const u32 gMonShinyPalette_Numel[] = INCBIN_U32("graphics/pokemon/numel/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Numel[] = INCBIN_U16("graphics/pokemon/numel/shiny.gbapal"); #else const u32 gMonFrontPic_Numel[] = INCBIN_U32("graphics/pokemon/numel/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Numel[] = INCBIN_U32("graphics/pokemon/numel/normal_gba.gbapal.lz"); + const u16 gMonPalette_Numel[] = INCBIN_U16("graphics/pokemon/numel/normal_gba.gbapal"); const u32 gMonBackPic_Numel[] = INCBIN_U32("graphics/pokemon/numel/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Numel[] = INCBIN_U32("graphics/pokemon/numel/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Numel[] = INCBIN_U16("graphics/pokemon/numel/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Numel[] = INCBIN_U8("graphics/pokemon/numel/icon.4bpp"); @@ -11900,8 +11900,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Numel[] = INCBIN_U16("graphics/pokemon/numel/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Numel[] = INCBIN_U16("graphics/pokemon/numel/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -11915,14 +11915,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Camerupt[] = INCBIN_U32("graphics/pokemon/camerupt/anim_front.4bpp.lz"); - const u32 gMonPalette_Camerupt[] = INCBIN_U32("graphics/pokemon/camerupt/normal.gbapal.lz"); + const u16 gMonPalette_Camerupt[] = INCBIN_U16("graphics/pokemon/camerupt/normal.gbapal"); const u32 gMonBackPic_Camerupt[] = INCBIN_U32("graphics/pokemon/camerupt/back.4bpp.lz"); - const u32 gMonShinyPalette_Camerupt[] = INCBIN_U32("graphics/pokemon/camerupt/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Camerupt[] = INCBIN_U16("graphics/pokemon/camerupt/shiny.gbapal"); #else const u32 gMonFrontPic_Camerupt[] = INCBIN_U32("graphics/pokemon/camerupt/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Camerupt[] = INCBIN_U32("graphics/pokemon/camerupt/normal_gba.gbapal.lz"); + const u16 gMonPalette_Camerupt[] = INCBIN_U16("graphics/pokemon/camerupt/normal_gba.gbapal"); const u32 gMonBackPic_Camerupt[] = INCBIN_U32("graphics/pokemon/camerupt/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Camerupt[] = INCBIN_U32("graphics/pokemon/camerupt/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Camerupt[] = INCBIN_U16("graphics/pokemon/camerupt/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Camerupt[] = INCBIN_U8("graphics/pokemon/camerupt/icon.4bpp"); @@ -11935,8 +11935,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Camerupt[] = INCBIN_U16("graphics/pokemon/camerupt/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Camerupt[] = INCBIN_U16("graphics/pokemon/camerupt/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -11950,15 +11950,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_MEGA_EVOLUTIONS const u32 gMonFrontPic_CameruptMega[] = INCBIN_U32("graphics/pokemon/camerupt/mega/front.4bpp.lz"); - const u32 gMonPalette_CameruptMega[] = INCBIN_U32("graphics/pokemon/camerupt/mega/normal.gbapal.lz"); + const u16 gMonPalette_CameruptMega[] = INCBIN_U16("graphics/pokemon/camerupt/mega/normal.gbapal"); 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 u16 gMonShinyPalette_CameruptMega[] = INCBIN_U16("graphics/pokemon/camerupt/mega/shiny.gbapal"); const u8 gMonIcon_CameruptMega[] = INCBIN_U8("graphics/pokemon/camerupt/mega/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS 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"); + const u16 gOverworldPalette_CameruptMega[] = INCBIN_U16("graphics/pokemon/camerupt/mega/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_CameruptMega[] = INCBIN_U16("graphics/pokemon/camerupt/mega/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS #endif //P_MEGA_EVOLUTIONS @@ -11967,14 +11967,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_TORKOAL #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Torkoal[] = INCBIN_U32("graphics/pokemon/torkoal/anim_front.4bpp.lz"); - const u32 gMonPalette_Torkoal[] = INCBIN_U32("graphics/pokemon/torkoal/normal.gbapal.lz"); + const u16 gMonPalette_Torkoal[] = INCBIN_U16("graphics/pokemon/torkoal/normal.gbapal"); const u32 gMonBackPic_Torkoal[] = INCBIN_U32("graphics/pokemon/torkoal/back.4bpp.lz"); - const u32 gMonShinyPalette_Torkoal[] = INCBIN_U32("graphics/pokemon/torkoal/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Torkoal[] = INCBIN_U16("graphics/pokemon/torkoal/shiny.gbapal"); #else const u32 gMonFrontPic_Torkoal[] = INCBIN_U32("graphics/pokemon/torkoal/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Torkoal[] = INCBIN_U32("graphics/pokemon/torkoal/normal_gba.gbapal.lz"); + const u16 gMonPalette_Torkoal[] = INCBIN_U16("graphics/pokemon/torkoal/normal_gba.gbapal"); const u32 gMonBackPic_Torkoal[] = INCBIN_U32("graphics/pokemon/torkoal/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Torkoal[] = INCBIN_U32("graphics/pokemon/torkoal/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Torkoal[] = INCBIN_U16("graphics/pokemon/torkoal/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Torkoal[] = INCBIN_U8("graphics/pokemon/torkoal/icon.4bpp"); @@ -11987,8 +11987,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Torkoal[] = INCBIN_U16("graphics/pokemon/torkoal/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Torkoal[] = INCBIN_U16("graphics/pokemon/torkoal/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_TORKOAL @@ -11996,14 +11996,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_SPOINK #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Spoink[] = INCBIN_U32("graphics/pokemon/spoink/anim_front.4bpp.lz"); - const u32 gMonPalette_Spoink[] = INCBIN_U32("graphics/pokemon/spoink/normal.gbapal.lz"); + const u16 gMonPalette_Spoink[] = INCBIN_U16("graphics/pokemon/spoink/normal.gbapal"); const u32 gMonBackPic_Spoink[] = INCBIN_U32("graphics/pokemon/spoink/back.4bpp.lz"); - const u32 gMonShinyPalette_Spoink[] = INCBIN_U32("graphics/pokemon/spoink/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Spoink[] = INCBIN_U16("graphics/pokemon/spoink/shiny.gbapal"); #else const u32 gMonFrontPic_Spoink[] = INCBIN_U32("graphics/pokemon/spoink/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Spoink[] = INCBIN_U32("graphics/pokemon/spoink/normal_gba.gbapal.lz"); + const u16 gMonPalette_Spoink[] = INCBIN_U16("graphics/pokemon/spoink/normal_gba.gbapal"); const u32 gMonBackPic_Spoink[] = INCBIN_U32("graphics/pokemon/spoink/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Spoink[] = INCBIN_U32("graphics/pokemon/spoink/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Spoink[] = INCBIN_U16("graphics/pokemon/spoink/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Spoink[] = INCBIN_U8("graphics/pokemon/spoink/icon.4bpp"); @@ -12016,21 +12016,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Spoink[] = INCBIN_U16("graphics/pokemon/spoink/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Spoink[] = INCBIN_U16("graphics/pokemon/spoink/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Grumpig[] = INCBIN_U32("graphics/pokemon/grumpig/anim_front.4bpp.lz"); - const u32 gMonPalette_Grumpig[] = INCBIN_U32("graphics/pokemon/grumpig/normal.gbapal.lz"); + const u16 gMonPalette_Grumpig[] = INCBIN_U16("graphics/pokemon/grumpig/normal.gbapal"); const u32 gMonBackPic_Grumpig[] = INCBIN_U32("graphics/pokemon/grumpig/back.4bpp.lz"); - const u32 gMonShinyPalette_Grumpig[] = INCBIN_U32("graphics/pokemon/grumpig/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Grumpig[] = INCBIN_U16("graphics/pokemon/grumpig/shiny.gbapal"); #else const u32 gMonFrontPic_Grumpig[] = INCBIN_U32("graphics/pokemon/grumpig/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Grumpig[] = INCBIN_U32("graphics/pokemon/grumpig/normal_gba.gbapal.lz"); + const u16 gMonPalette_Grumpig[] = INCBIN_U16("graphics/pokemon/grumpig/normal_gba.gbapal"); const u32 gMonBackPic_Grumpig[] = INCBIN_U32("graphics/pokemon/grumpig/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Grumpig[] = INCBIN_U32("graphics/pokemon/grumpig/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Grumpig[] = INCBIN_U16("graphics/pokemon/grumpig/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Grumpig[] = INCBIN_U8("graphics/pokemon/grumpig/icon.4bpp"); @@ -12043,17 +12043,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Grumpig[] = INCBIN_U16("graphics/pokemon/grumpig/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Grumpig[] = INCBIN_U16("graphics/pokemon/grumpig/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SPOINK #if P_FAMILY_SPINDA const u32 gMonFrontPic_Spinda[] = INCBIN_U32("graphics/pokemon/spinda/anim_front.4bpp.lz"); - const u32 gMonPalette_Spinda[] = INCBIN_U32("graphics/pokemon/spinda/normal.gbapal.lz"); + const u16 gMonPalette_Spinda[] = INCBIN_U16("graphics/pokemon/spinda/normal.gbapal"); const u32 gMonBackPic_Spinda[] = INCBIN_U32("graphics/pokemon/spinda/back.4bpp.lz"); - const u32 gMonShinyPalette_Spinda[] = INCBIN_U32("graphics/pokemon/spinda/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Spinda[] = INCBIN_U16("graphics/pokemon/spinda/shiny.gbapal"); const u8 gMonIcon_Spinda[] = INCBIN_U8("graphics/pokemon/spinda/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Spinda[] = INCBIN_U8("graphics/pokemon/spinda/footprint.1bpp"); @@ -12061,8 +12061,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Spinda[] = INCBIN_U16("graphics/pokemon/spinda/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Spinda[] = INCBIN_U16("graphics/pokemon/spinda/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SPINDA @@ -12070,14 +12070,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_TRAPINCH #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Trapinch[] = INCBIN_U32("graphics/pokemon/trapinch/anim_front.4bpp.lz"); - const u32 gMonPalette_Trapinch[] = INCBIN_U32("graphics/pokemon/trapinch/normal.gbapal.lz"); + const u16 gMonPalette_Trapinch[] = INCBIN_U16("graphics/pokemon/trapinch/normal.gbapal"); const u32 gMonBackPic_Trapinch[] = INCBIN_U32("graphics/pokemon/trapinch/back.4bpp.lz"); - const u32 gMonShinyPalette_Trapinch[] = INCBIN_U32("graphics/pokemon/trapinch/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Trapinch[] = INCBIN_U16("graphics/pokemon/trapinch/shiny.gbapal"); #else const u32 gMonFrontPic_Trapinch[] = INCBIN_U32("graphics/pokemon/trapinch/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Trapinch[] = INCBIN_U32("graphics/pokemon/trapinch/normal_gba.gbapal.lz"); + const u16 gMonPalette_Trapinch[] = INCBIN_U16("graphics/pokemon/trapinch/normal_gba.gbapal"); const u32 gMonBackPic_Trapinch[] = INCBIN_U32("graphics/pokemon/trapinch/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Trapinch[] = INCBIN_U32("graphics/pokemon/trapinch/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Trapinch[] = INCBIN_U16("graphics/pokemon/trapinch/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Trapinch[] = INCBIN_U8("graphics/pokemon/trapinch/icon.4bpp"); @@ -12090,21 +12090,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Trapinch[] = INCBIN_U16("graphics/pokemon/trapinch/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Trapinch[] = INCBIN_U16("graphics/pokemon/trapinch/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Vibrava[] = INCBIN_U32("graphics/pokemon/vibrava/anim_front.4bpp.lz"); - const u32 gMonPalette_Vibrava[] = INCBIN_U32("graphics/pokemon/vibrava/normal.gbapal.lz"); + const u16 gMonPalette_Vibrava[] = INCBIN_U16("graphics/pokemon/vibrava/normal.gbapal"); const u32 gMonBackPic_Vibrava[] = INCBIN_U32("graphics/pokemon/vibrava/back.4bpp.lz"); - const u32 gMonShinyPalette_Vibrava[] = INCBIN_U32("graphics/pokemon/vibrava/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Vibrava[] = INCBIN_U16("graphics/pokemon/vibrava/shiny.gbapal"); #else const u32 gMonFrontPic_Vibrava[] = INCBIN_U32("graphics/pokemon/vibrava/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Vibrava[] = INCBIN_U32("graphics/pokemon/vibrava/normal_gba.gbapal.lz"); + const u16 gMonPalette_Vibrava[] = INCBIN_U16("graphics/pokemon/vibrava/normal_gba.gbapal"); const u32 gMonBackPic_Vibrava[] = INCBIN_U32("graphics/pokemon/vibrava/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Vibrava[] = INCBIN_U32("graphics/pokemon/vibrava/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Vibrava[] = INCBIN_U16("graphics/pokemon/vibrava/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Vibrava[] = INCBIN_U8("graphics/pokemon/vibrava/icon.4bpp"); @@ -12117,21 +12117,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Vibrava[] = INCBIN_U16("graphics/pokemon/vibrava/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Vibrava[] = INCBIN_U16("graphics/pokemon/vibrava/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Flygon[] = INCBIN_U32("graphics/pokemon/flygon/anim_front.4bpp.lz"); - const u32 gMonPalette_Flygon[] = INCBIN_U32("graphics/pokemon/flygon/normal.gbapal.lz"); + const u16 gMonPalette_Flygon[] = INCBIN_U16("graphics/pokemon/flygon/normal.gbapal"); const u32 gMonBackPic_Flygon[] = INCBIN_U32("graphics/pokemon/flygon/back.4bpp.lz"); - const u32 gMonShinyPalette_Flygon[] = INCBIN_U32("graphics/pokemon/flygon/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Flygon[] = INCBIN_U16("graphics/pokemon/flygon/shiny.gbapal"); #else const u32 gMonFrontPic_Flygon[] = INCBIN_U32("graphics/pokemon/flygon/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Flygon[] = INCBIN_U32("graphics/pokemon/flygon/normal_gba.gbapal.lz"); + const u16 gMonPalette_Flygon[] = INCBIN_U16("graphics/pokemon/flygon/normal_gba.gbapal"); const u32 gMonBackPic_Flygon[] = INCBIN_U32("graphics/pokemon/flygon/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Flygon[] = INCBIN_U32("graphics/pokemon/flygon/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Flygon[] = INCBIN_U16("graphics/pokemon/flygon/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Flygon[] = INCBIN_U8("graphics/pokemon/flygon/icon.4bpp"); @@ -12144,8 +12144,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Flygon[] = INCBIN_U16("graphics/pokemon/flygon/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Flygon[] = INCBIN_U16("graphics/pokemon/flygon/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_TRAPINCH @@ -12153,14 +12153,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_CACNEA #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Cacnea[] = INCBIN_U32("graphics/pokemon/cacnea/anim_front.4bpp.lz"); - const u32 gMonPalette_Cacnea[] = INCBIN_U32("graphics/pokemon/cacnea/normal.gbapal.lz"); + const u16 gMonPalette_Cacnea[] = INCBIN_U16("graphics/pokemon/cacnea/normal.gbapal"); const u32 gMonBackPic_Cacnea[] = INCBIN_U32("graphics/pokemon/cacnea/back.4bpp.lz"); - const u32 gMonShinyPalette_Cacnea[] = INCBIN_U32("graphics/pokemon/cacnea/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Cacnea[] = INCBIN_U16("graphics/pokemon/cacnea/shiny.gbapal"); #else const u32 gMonFrontPic_Cacnea[] = INCBIN_U32("graphics/pokemon/cacnea/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Cacnea[] = INCBIN_U32("graphics/pokemon/cacnea/normal_gba.gbapal.lz"); + const u16 gMonPalette_Cacnea[] = INCBIN_U16("graphics/pokemon/cacnea/normal_gba.gbapal"); const u32 gMonBackPic_Cacnea[] = INCBIN_U32("graphics/pokemon/cacnea/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Cacnea[] = INCBIN_U32("graphics/pokemon/cacnea/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Cacnea[] = INCBIN_U16("graphics/pokemon/cacnea/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Cacnea[] = INCBIN_U8("graphics/pokemon/cacnea/icon.4bpp"); @@ -12173,21 +12173,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Cacnea[] = INCBIN_U16("graphics/pokemon/cacnea/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Cacnea[] = INCBIN_U16("graphics/pokemon/cacnea/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Cacturne[] = INCBIN_U32("graphics/pokemon/cacturne/anim_front.4bpp.lz"); - const u32 gMonPalette_Cacturne[] = INCBIN_U32("graphics/pokemon/cacturne/normal.gbapal.lz"); + const u16 gMonPalette_Cacturne[] = INCBIN_U16("graphics/pokemon/cacturne/normal.gbapal"); const u32 gMonBackPic_Cacturne[] = INCBIN_U32("graphics/pokemon/cacturne/back.4bpp.lz"); - const u32 gMonShinyPalette_Cacturne[] = INCBIN_U32("graphics/pokemon/cacturne/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Cacturne[] = INCBIN_U16("graphics/pokemon/cacturne/shiny.gbapal"); #else const u32 gMonFrontPic_Cacturne[] = INCBIN_U32("graphics/pokemon/cacturne/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Cacturne[] = INCBIN_U32("graphics/pokemon/cacturne/normal_gba.gbapal.lz"); + const u16 gMonPalette_Cacturne[] = INCBIN_U16("graphics/pokemon/cacturne/normal_gba.gbapal"); const u32 gMonBackPic_Cacturne[] = INCBIN_U32("graphics/pokemon/cacturne/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Cacturne[] = INCBIN_U32("graphics/pokemon/cacturne/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Cacturne[] = INCBIN_U16("graphics/pokemon/cacturne/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Cacturne[] = INCBIN_U8("graphics/pokemon/cacturne/icon.4bpp"); @@ -12200,8 +12200,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Cacturne[] = INCBIN_U16("graphics/pokemon/cacturne/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Cacturne[] = INCBIN_U16("graphics/pokemon/cacturne/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -12216,14 +12216,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_SWABLU #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Swablu[] = INCBIN_U32("graphics/pokemon/swablu/anim_front.4bpp.lz"); - const u32 gMonPalette_Swablu[] = INCBIN_U32("graphics/pokemon/swablu/normal.gbapal.lz"); + const u16 gMonPalette_Swablu[] = INCBIN_U16("graphics/pokemon/swablu/normal.gbapal"); const u32 gMonBackPic_Swablu[] = INCBIN_U32("graphics/pokemon/swablu/back.4bpp.lz"); - const u32 gMonShinyPalette_Swablu[] = INCBIN_U32("graphics/pokemon/swablu/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Swablu[] = INCBIN_U16("graphics/pokemon/swablu/shiny.gbapal"); #else const u32 gMonFrontPic_Swablu[] = INCBIN_U32("graphics/pokemon/swablu/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Swablu[] = INCBIN_U32("graphics/pokemon/swablu/normal_gba.gbapal.lz"); + const u16 gMonPalette_Swablu[] = INCBIN_U16("graphics/pokemon/swablu/normal_gba.gbapal"); const u32 gMonBackPic_Swablu[] = INCBIN_U32("graphics/pokemon/swablu/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Swablu[] = INCBIN_U32("graphics/pokemon/swablu/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Swablu[] = INCBIN_U16("graphics/pokemon/swablu/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Swablu[] = INCBIN_U8("graphics/pokemon/swablu/icon.4bpp"); @@ -12236,21 +12236,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Swablu[] = INCBIN_U16("graphics/pokemon/swablu/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Swablu[] = INCBIN_U16("graphics/pokemon/swablu/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Altaria[] = INCBIN_U32("graphics/pokemon/altaria/anim_front.4bpp.lz"); - const u32 gMonPalette_Altaria[] = INCBIN_U32("graphics/pokemon/altaria/normal.gbapal.lz"); + const u16 gMonPalette_Altaria[] = INCBIN_U16("graphics/pokemon/altaria/normal.gbapal"); const u32 gMonBackPic_Altaria[] = INCBIN_U32("graphics/pokemon/altaria/back.4bpp.lz"); - const u32 gMonShinyPalette_Altaria[] = INCBIN_U32("graphics/pokemon/altaria/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Altaria[] = INCBIN_U16("graphics/pokemon/altaria/shiny.gbapal"); #else const u32 gMonFrontPic_Altaria[] = INCBIN_U32("graphics/pokemon/altaria/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Altaria[] = INCBIN_U32("graphics/pokemon/altaria/normal_gba.gbapal.lz"); + const u16 gMonPalette_Altaria[] = INCBIN_U16("graphics/pokemon/altaria/normal_gba.gbapal"); const u32 gMonBackPic_Altaria[] = INCBIN_U32("graphics/pokemon/altaria/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Altaria[] = INCBIN_U32("graphics/pokemon/altaria/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Altaria[] = INCBIN_U16("graphics/pokemon/altaria/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Altaria[] = INCBIN_U8("graphics/pokemon/altaria/icon.4bpp"); @@ -12263,22 +12263,22 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Altaria[] = INCBIN_U16("graphics/pokemon/altaria/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Altaria[] = INCBIN_U16("graphics/pokemon/altaria/overworld_shiny.gbapal"); #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"); - const u32 gMonPalette_AltariaMega[] = INCBIN_U32("graphics/pokemon/altaria/mega/normal.gbapal.lz"); + const u16 gMonPalette_AltariaMega[] = INCBIN_U16("graphics/pokemon/altaria/mega/normal.gbapal"); 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 u16 gMonShinyPalette_AltariaMega[] = INCBIN_U16("graphics/pokemon/altaria/mega/shiny.gbapal"); const u8 gMonIcon_AltariaMega[] = INCBIN_U8("graphics/pokemon/altaria/mega/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS 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"); + const u16 gOverworldPalette_AltariaMega[] = INCBIN_U16("graphics/pokemon/altaria/mega/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_AltariaMega[] = INCBIN_U16("graphics/pokemon/altaria/mega/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS #endif //P_MEGA_EVOLUTIONS @@ -12287,14 +12287,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_ZANGOOSE #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Zangoose[] = INCBIN_U32("graphics/pokemon/zangoose/anim_front.4bpp.lz"); - const u32 gMonPalette_Zangoose[] = INCBIN_U32("graphics/pokemon/zangoose/normal.gbapal.lz"); + const u16 gMonPalette_Zangoose[] = INCBIN_U16("graphics/pokemon/zangoose/normal.gbapal"); const u32 gMonBackPic_Zangoose[] = INCBIN_U32("graphics/pokemon/zangoose/back.4bpp.lz"); - const u32 gMonShinyPalette_Zangoose[] = INCBIN_U32("graphics/pokemon/zangoose/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Zangoose[] = INCBIN_U16("graphics/pokemon/zangoose/shiny.gbapal"); #else const u32 gMonFrontPic_Zangoose[] = INCBIN_U32("graphics/pokemon/zangoose/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Zangoose[] = INCBIN_U32("graphics/pokemon/zangoose/normal_gba.gbapal.lz"); + const u16 gMonPalette_Zangoose[] = INCBIN_U16("graphics/pokemon/zangoose/normal_gba.gbapal"); const u32 gMonBackPic_Zangoose[] = INCBIN_U32("graphics/pokemon/zangoose/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Zangoose[] = INCBIN_U32("graphics/pokemon/zangoose/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Zangoose[] = INCBIN_U16("graphics/pokemon/zangoose/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Zangoose[] = INCBIN_U8("graphics/pokemon/zangoose/icon.4bpp"); @@ -12307,8 +12307,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Zangoose[] = INCBIN_U16("graphics/pokemon/zangoose/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Zangoose[] = INCBIN_U16("graphics/pokemon/zangoose/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_ZANGOOSE @@ -12316,14 +12316,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_SEVIPER #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Seviper[] = INCBIN_U32("graphics/pokemon/seviper/anim_front.4bpp.lz"); - const u32 gMonPalette_Seviper[] = INCBIN_U32("graphics/pokemon/seviper/normal.gbapal.lz"); + const u16 gMonPalette_Seviper[] = INCBIN_U16("graphics/pokemon/seviper/normal.gbapal"); const u32 gMonBackPic_Seviper[] = INCBIN_U32("graphics/pokemon/seviper/back.4bpp.lz"); - const u32 gMonShinyPalette_Seviper[] = INCBIN_U32("graphics/pokemon/seviper/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Seviper[] = INCBIN_U16("graphics/pokemon/seviper/shiny.gbapal"); #else const u32 gMonFrontPic_Seviper[] = INCBIN_U32("graphics/pokemon/seviper/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Seviper[] = INCBIN_U32("graphics/pokemon/seviper/normal_gba.gbapal.lz"); + const u16 gMonPalette_Seviper[] = INCBIN_U16("graphics/pokemon/seviper/normal_gba.gbapal"); const u32 gMonBackPic_Seviper[] = INCBIN_U32("graphics/pokemon/seviper/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Seviper[] = INCBIN_U32("graphics/pokemon/seviper/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Seviper[] = INCBIN_U16("graphics/pokemon/seviper/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Seviper[] = INCBIN_U8("graphics/pokemon/seviper/icon.4bpp"); @@ -12336,8 +12336,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Seviper[] = INCBIN_U16("graphics/pokemon/seviper/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Seviper[] = INCBIN_U16("graphics/pokemon/seviper/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SEVIPER @@ -12345,14 +12345,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_LUNATONE #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Lunatone[] = INCBIN_U32("graphics/pokemon/lunatone/anim_front.4bpp.lz"); - const u32 gMonPalette_Lunatone[] = INCBIN_U32("graphics/pokemon/lunatone/normal.gbapal.lz"); + const u16 gMonPalette_Lunatone[] = INCBIN_U16("graphics/pokemon/lunatone/normal.gbapal"); const u32 gMonBackPic_Lunatone[] = INCBIN_U32("graphics/pokemon/lunatone/back.4bpp.lz"); - const u32 gMonShinyPalette_Lunatone[] = INCBIN_U32("graphics/pokemon/lunatone/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Lunatone[] = INCBIN_U16("graphics/pokemon/lunatone/shiny.gbapal"); #else const u32 gMonFrontPic_Lunatone[] = INCBIN_U32("graphics/pokemon/lunatone/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Lunatone[] = INCBIN_U32("graphics/pokemon/lunatone/normal_gba.gbapal.lz"); + const u16 gMonPalette_Lunatone[] = INCBIN_U16("graphics/pokemon/lunatone/normal_gba.gbapal"); const u32 gMonBackPic_Lunatone[] = INCBIN_U32("graphics/pokemon/lunatone/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Lunatone[] = INCBIN_U32("graphics/pokemon/lunatone/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Lunatone[] = INCBIN_U16("graphics/pokemon/lunatone/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Lunatone[] = INCBIN_U8("graphics/pokemon/lunatone/icon.4bpp"); @@ -12365,8 +12365,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Lunatone[] = INCBIN_U16("graphics/pokemon/lunatone/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Lunatone[] = INCBIN_U16("graphics/pokemon/lunatone/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_LUNATONE @@ -12374,14 +12374,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_SOLROCK #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Solrock[] = INCBIN_U32("graphics/pokemon/solrock/anim_front.4bpp.lz"); - const u32 gMonPalette_Solrock[] = INCBIN_U32("graphics/pokemon/solrock/normal.gbapal.lz"); + const u16 gMonPalette_Solrock[] = INCBIN_U16("graphics/pokemon/solrock/normal.gbapal"); const u32 gMonBackPic_Solrock[] = INCBIN_U32("graphics/pokemon/solrock/back.4bpp.lz"); - const u32 gMonShinyPalette_Solrock[] = INCBIN_U32("graphics/pokemon/solrock/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Solrock[] = INCBIN_U16("graphics/pokemon/solrock/shiny.gbapal"); #else const u32 gMonFrontPic_Solrock[] = INCBIN_U32("graphics/pokemon/solrock/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Solrock[] = INCBIN_U32("graphics/pokemon/solrock/normal_gba.gbapal.lz"); + const u16 gMonPalette_Solrock[] = INCBIN_U16("graphics/pokemon/solrock/normal_gba.gbapal"); const u32 gMonBackPic_Solrock[] = INCBIN_U32("graphics/pokemon/solrock/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Solrock[] = INCBIN_U32("graphics/pokemon/solrock/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Solrock[] = INCBIN_U16("graphics/pokemon/solrock/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Solrock[] = INCBIN_U8("graphics/pokemon/solrock/icon.4bpp"); @@ -12394,8 +12394,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Solrock[] = INCBIN_U16("graphics/pokemon/solrock/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Solrock[] = INCBIN_U16("graphics/pokemon/solrock/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SOLROCK @@ -12403,14 +12403,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_BARBOACH #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Barboach[] = INCBIN_U32("graphics/pokemon/barboach/anim_front.4bpp.lz"); - const u32 gMonPalette_Barboach[] = INCBIN_U32("graphics/pokemon/barboach/normal.gbapal.lz"); + const u16 gMonPalette_Barboach[] = INCBIN_U16("graphics/pokemon/barboach/normal.gbapal"); const u32 gMonBackPic_Barboach[] = INCBIN_U32("graphics/pokemon/barboach/back.4bpp.lz"); - const u32 gMonShinyPalette_Barboach[] = INCBIN_U32("graphics/pokemon/barboach/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Barboach[] = INCBIN_U16("graphics/pokemon/barboach/shiny.gbapal"); #else const u32 gMonFrontPic_Barboach[] = INCBIN_U32("graphics/pokemon/barboach/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Barboach[] = INCBIN_U32("graphics/pokemon/barboach/normal_gba.gbapal.lz"); + const u16 gMonPalette_Barboach[] = INCBIN_U16("graphics/pokemon/barboach/normal_gba.gbapal"); const u32 gMonBackPic_Barboach[] = INCBIN_U32("graphics/pokemon/barboach/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Barboach[] = INCBIN_U32("graphics/pokemon/barboach/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Barboach[] = INCBIN_U16("graphics/pokemon/barboach/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Barboach[] = INCBIN_U8("graphics/pokemon/barboach/icon.4bpp"); @@ -12423,21 +12423,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Barboach[] = INCBIN_U16("graphics/pokemon/barboach/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Barboach[] = INCBIN_U16("graphics/pokemon/barboach/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Whiscash[] = INCBIN_U32("graphics/pokemon/whiscash/anim_front.4bpp.lz"); - const u32 gMonPalette_Whiscash[] = INCBIN_U32("graphics/pokemon/whiscash/normal.gbapal.lz"); + const u16 gMonPalette_Whiscash[] = INCBIN_U16("graphics/pokemon/whiscash/normal.gbapal"); const u32 gMonBackPic_Whiscash[] = INCBIN_U32("graphics/pokemon/whiscash/back.4bpp.lz"); - const u32 gMonShinyPalette_Whiscash[] = INCBIN_U32("graphics/pokemon/whiscash/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Whiscash[] = INCBIN_U16("graphics/pokemon/whiscash/shiny.gbapal"); #else const u32 gMonFrontPic_Whiscash[] = INCBIN_U32("graphics/pokemon/whiscash/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Whiscash[] = INCBIN_U32("graphics/pokemon/whiscash/normal_gba.gbapal.lz"); + const u16 gMonPalette_Whiscash[] = INCBIN_U16("graphics/pokemon/whiscash/normal_gba.gbapal"); const u32 gMonBackPic_Whiscash[] = INCBIN_U32("graphics/pokemon/whiscash/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Whiscash[] = INCBIN_U32("graphics/pokemon/whiscash/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Whiscash[] = INCBIN_U16("graphics/pokemon/whiscash/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Whiscash[] = INCBIN_U8("graphics/pokemon/whiscash/icon.4bpp"); @@ -12450,8 +12450,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Whiscash[] = INCBIN_U16("graphics/pokemon/whiscash/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Whiscash[] = INCBIN_U16("graphics/pokemon/whiscash/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_BARBOACH @@ -12459,14 +12459,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_CORPHISH #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Corphish[] = INCBIN_U32("graphics/pokemon/corphish/anim_front.4bpp.lz"); - const u32 gMonPalette_Corphish[] = INCBIN_U32("graphics/pokemon/corphish/normal.gbapal.lz"); + const u16 gMonPalette_Corphish[] = INCBIN_U16("graphics/pokemon/corphish/normal.gbapal"); const u32 gMonBackPic_Corphish[] = INCBIN_U32("graphics/pokemon/corphish/back.4bpp.lz"); - const u32 gMonShinyPalette_Corphish[] = INCBIN_U32("graphics/pokemon/corphish/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Corphish[] = INCBIN_U16("graphics/pokemon/corphish/shiny.gbapal"); #else const u32 gMonFrontPic_Corphish[] = INCBIN_U32("graphics/pokemon/corphish/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Corphish[] = INCBIN_U32("graphics/pokemon/corphish/normal_gba.gbapal.lz"); + const u16 gMonPalette_Corphish[] = INCBIN_U16("graphics/pokemon/corphish/normal_gba.gbapal"); const u32 gMonBackPic_Corphish[] = INCBIN_U32("graphics/pokemon/corphish/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Corphish[] = INCBIN_U32("graphics/pokemon/corphish/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Corphish[] = INCBIN_U16("graphics/pokemon/corphish/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Corphish[] = INCBIN_U8("graphics/pokemon/corphish/icon.4bpp"); @@ -12479,21 +12479,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Corphish[] = INCBIN_U16("graphics/pokemon/corphish/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Corphish[] = INCBIN_U16("graphics/pokemon/corphish/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Crawdaunt[] = INCBIN_U32("graphics/pokemon/crawdaunt/anim_front.4bpp.lz"); - const u32 gMonPalette_Crawdaunt[] = INCBIN_U32("graphics/pokemon/crawdaunt/normal.gbapal.lz"); + const u16 gMonPalette_Crawdaunt[] = INCBIN_U16("graphics/pokemon/crawdaunt/normal.gbapal"); const u32 gMonBackPic_Crawdaunt[] = INCBIN_U32("graphics/pokemon/crawdaunt/back.4bpp.lz"); - const u32 gMonShinyPalette_Crawdaunt[] = INCBIN_U32("graphics/pokemon/crawdaunt/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Crawdaunt[] = INCBIN_U16("graphics/pokemon/crawdaunt/shiny.gbapal"); #else const u32 gMonFrontPic_Crawdaunt[] = INCBIN_U32("graphics/pokemon/crawdaunt/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Crawdaunt[] = INCBIN_U32("graphics/pokemon/crawdaunt/normal_gba.gbapal.lz"); + const u16 gMonPalette_Crawdaunt[] = INCBIN_U16("graphics/pokemon/crawdaunt/normal_gba.gbapal"); const u32 gMonBackPic_Crawdaunt[] = INCBIN_U32("graphics/pokemon/crawdaunt/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Crawdaunt[] = INCBIN_U32("graphics/pokemon/crawdaunt/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Crawdaunt[] = INCBIN_U16("graphics/pokemon/crawdaunt/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Crawdaunt[] = INCBIN_U8("graphics/pokemon/crawdaunt/icon.4bpp"); @@ -12506,8 +12506,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Crawdaunt[] = INCBIN_U16("graphics/pokemon/crawdaunt/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Crawdaunt[] = INCBIN_U16("graphics/pokemon/crawdaunt/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_CORPHISH @@ -12515,14 +12515,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_BALTOY #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Baltoy[] = INCBIN_U32("graphics/pokemon/baltoy/anim_front.4bpp.lz"); - const u32 gMonPalette_Baltoy[] = INCBIN_U32("graphics/pokemon/baltoy/normal.gbapal.lz"); + const u16 gMonPalette_Baltoy[] = INCBIN_U16("graphics/pokemon/baltoy/normal.gbapal"); const u32 gMonBackPic_Baltoy[] = INCBIN_U32("graphics/pokemon/baltoy/back.4bpp.lz"); - const u32 gMonShinyPalette_Baltoy[] = INCBIN_U32("graphics/pokemon/baltoy/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Baltoy[] = INCBIN_U16("graphics/pokemon/baltoy/shiny.gbapal"); #else const u32 gMonFrontPic_Baltoy[] = INCBIN_U32("graphics/pokemon/baltoy/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Baltoy[] = INCBIN_U32("graphics/pokemon/baltoy/normal_gba.gbapal.lz"); + const u16 gMonPalette_Baltoy[] = INCBIN_U16("graphics/pokemon/baltoy/normal_gba.gbapal"); const u32 gMonBackPic_Baltoy[] = INCBIN_U32("graphics/pokemon/baltoy/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Baltoy[] = INCBIN_U32("graphics/pokemon/baltoy/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Baltoy[] = INCBIN_U16("graphics/pokemon/baltoy/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Baltoy[] = INCBIN_U8("graphics/pokemon/baltoy/icon.4bpp"); @@ -12535,21 +12535,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Baltoy[] = INCBIN_U16("graphics/pokemon/baltoy/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Baltoy[] = INCBIN_U16("graphics/pokemon/baltoy/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Claydol[] = INCBIN_U32("graphics/pokemon/claydol/anim_front.4bpp.lz"); - const u32 gMonPalette_Claydol[] = INCBIN_U32("graphics/pokemon/claydol/normal.gbapal.lz"); + const u16 gMonPalette_Claydol[] = INCBIN_U16("graphics/pokemon/claydol/normal.gbapal"); const u32 gMonBackPic_Claydol[] = INCBIN_U32("graphics/pokemon/claydol/back.4bpp.lz"); - const u32 gMonShinyPalette_Claydol[] = INCBIN_U32("graphics/pokemon/claydol/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Claydol[] = INCBIN_U16("graphics/pokemon/claydol/shiny.gbapal"); #else const u32 gMonFrontPic_Claydol[] = INCBIN_U32("graphics/pokemon/claydol/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Claydol[] = INCBIN_U32("graphics/pokemon/claydol/normal_gba.gbapal.lz"); + const u16 gMonPalette_Claydol[] = INCBIN_U16("graphics/pokemon/claydol/normal_gba.gbapal"); const u32 gMonBackPic_Claydol[] = INCBIN_U32("graphics/pokemon/claydol/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Claydol[] = INCBIN_U32("graphics/pokemon/claydol/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Claydol[] = INCBIN_U16("graphics/pokemon/claydol/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Claydol[] = INCBIN_U8("graphics/pokemon/claydol/icon.4bpp"); @@ -12562,8 +12562,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Claydol[] = INCBIN_U16("graphics/pokemon/claydol/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Claydol[] = INCBIN_U16("graphics/pokemon/claydol/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_BALTOY @@ -12571,14 +12571,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_LILEEP #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Lileep[] = INCBIN_U32("graphics/pokemon/lileep/anim_front.4bpp.lz"); - const u32 gMonPalette_Lileep[] = INCBIN_U32("graphics/pokemon/lileep/normal.gbapal.lz"); + const u16 gMonPalette_Lileep[] = INCBIN_U16("graphics/pokemon/lileep/normal.gbapal"); const u32 gMonBackPic_Lileep[] = INCBIN_U32("graphics/pokemon/lileep/back.4bpp.lz"); - const u32 gMonShinyPalette_Lileep[] = INCBIN_U32("graphics/pokemon/lileep/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Lileep[] = INCBIN_U16("graphics/pokemon/lileep/shiny.gbapal"); #else const u32 gMonFrontPic_Lileep[] = INCBIN_U32("graphics/pokemon/lileep/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Lileep[] = INCBIN_U32("graphics/pokemon/lileep/normal_gba.gbapal.lz"); + const u16 gMonPalette_Lileep[] = INCBIN_U16("graphics/pokemon/lileep/normal_gba.gbapal"); const u32 gMonBackPic_Lileep[] = INCBIN_U32("graphics/pokemon/lileep/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Lileep[] = INCBIN_U32("graphics/pokemon/lileep/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Lileep[] = INCBIN_U16("graphics/pokemon/lileep/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Lileep[] = INCBIN_U8("graphics/pokemon/lileep/icon.4bpp"); @@ -12591,21 +12591,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Lileep[] = INCBIN_U16("graphics/pokemon/lileep/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Lileep[] = INCBIN_U16("graphics/pokemon/lileep/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Cradily[] = INCBIN_U32("graphics/pokemon/cradily/anim_front.4bpp.lz"); - const u32 gMonPalette_Cradily[] = INCBIN_U32("graphics/pokemon/cradily/normal.gbapal.lz"); + const u16 gMonPalette_Cradily[] = INCBIN_U16("graphics/pokemon/cradily/normal.gbapal"); const u32 gMonBackPic_Cradily[] = INCBIN_U32("graphics/pokemon/cradily/back.4bpp.lz"); - const u32 gMonShinyPalette_Cradily[] = INCBIN_U32("graphics/pokemon/cradily/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Cradily[] = INCBIN_U16("graphics/pokemon/cradily/shiny.gbapal"); #else const u32 gMonFrontPic_Cradily[] = INCBIN_U32("graphics/pokemon/cradily/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Cradily[] = INCBIN_U32("graphics/pokemon/cradily/normal_gba.gbapal.lz"); + const u16 gMonPalette_Cradily[] = INCBIN_U16("graphics/pokemon/cradily/normal_gba.gbapal"); const u32 gMonBackPic_Cradily[] = INCBIN_U32("graphics/pokemon/cradily/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Cradily[] = INCBIN_U32("graphics/pokemon/cradily/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Cradily[] = INCBIN_U16("graphics/pokemon/cradily/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Cradily[] = INCBIN_U8("graphics/pokemon/cradily/icon.4bpp"); @@ -12618,8 +12618,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Cradily[] = INCBIN_U16("graphics/pokemon/cradily/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Cradily[] = INCBIN_U16("graphics/pokemon/cradily/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_LILEEP @@ -12627,14 +12627,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_ANORITH #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Anorith[] = INCBIN_U32("graphics/pokemon/anorith/anim_front.4bpp.lz"); - const u32 gMonPalette_Anorith[] = INCBIN_U32("graphics/pokemon/anorith/normal.gbapal.lz"); + const u16 gMonPalette_Anorith[] = INCBIN_U16("graphics/pokemon/anorith/normal.gbapal"); const u32 gMonBackPic_Anorith[] = INCBIN_U32("graphics/pokemon/anorith/back.4bpp.lz"); - const u32 gMonShinyPalette_Anorith[] = INCBIN_U32("graphics/pokemon/anorith/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Anorith[] = INCBIN_U16("graphics/pokemon/anorith/shiny.gbapal"); #else const u32 gMonFrontPic_Anorith[] = INCBIN_U32("graphics/pokemon/anorith/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Anorith[] = INCBIN_U32("graphics/pokemon/anorith/normal_gba.gbapal.lz"); + const u16 gMonPalette_Anorith[] = INCBIN_U16("graphics/pokemon/anorith/normal_gba.gbapal"); const u32 gMonBackPic_Anorith[] = INCBIN_U32("graphics/pokemon/anorith/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Anorith[] = INCBIN_U32("graphics/pokemon/anorith/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Anorith[] = INCBIN_U16("graphics/pokemon/anorith/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Anorith[] = INCBIN_U8("graphics/pokemon/anorith/icon.4bpp"); @@ -12647,21 +12647,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Anorith[] = INCBIN_U16("graphics/pokemon/anorith/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Anorith[] = INCBIN_U16("graphics/pokemon/anorith/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Armaldo[] = INCBIN_U32("graphics/pokemon/armaldo/anim_front.4bpp.lz"); - const u32 gMonPalette_Armaldo[] = INCBIN_U32("graphics/pokemon/armaldo/normal.gbapal.lz"); + const u16 gMonPalette_Armaldo[] = INCBIN_U16("graphics/pokemon/armaldo/normal.gbapal"); const u32 gMonBackPic_Armaldo[] = INCBIN_U32("graphics/pokemon/armaldo/back.4bpp.lz"); - const u32 gMonShinyPalette_Armaldo[] = INCBIN_U32("graphics/pokemon/armaldo/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Armaldo[] = INCBIN_U16("graphics/pokemon/armaldo/shiny.gbapal"); #else const u32 gMonFrontPic_Armaldo[] = INCBIN_U32("graphics/pokemon/armaldo/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Armaldo[] = INCBIN_U32("graphics/pokemon/armaldo/normal_gba.gbapal.lz"); + const u16 gMonPalette_Armaldo[] = INCBIN_U16("graphics/pokemon/armaldo/normal_gba.gbapal"); const u32 gMonBackPic_Armaldo[] = INCBIN_U32("graphics/pokemon/armaldo/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Armaldo[] = INCBIN_U32("graphics/pokemon/armaldo/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Armaldo[] = INCBIN_U16("graphics/pokemon/armaldo/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Armaldo[] = INCBIN_U8("graphics/pokemon/armaldo/icon.4bpp"); @@ -12674,8 +12674,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Armaldo[] = INCBIN_U16("graphics/pokemon/armaldo/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Armaldo[] = INCBIN_U16("graphics/pokemon/armaldo/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_ANORITH @@ -12683,14 +12683,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_FEEBAS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Feebas[] = INCBIN_U32("graphics/pokemon/feebas/anim_front.4bpp.lz"); - const u32 gMonPalette_Feebas[] = INCBIN_U32("graphics/pokemon/feebas/normal.gbapal.lz"); + const u16 gMonPalette_Feebas[] = INCBIN_U16("graphics/pokemon/feebas/normal.gbapal"); const u32 gMonBackPic_Feebas[] = INCBIN_U32("graphics/pokemon/feebas/back.4bpp.lz"); - const u32 gMonShinyPalette_Feebas[] = INCBIN_U32("graphics/pokemon/feebas/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Feebas[] = INCBIN_U16("graphics/pokemon/feebas/shiny.gbapal"); #else const u32 gMonFrontPic_Feebas[] = INCBIN_U32("graphics/pokemon/feebas/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Feebas[] = INCBIN_U32("graphics/pokemon/feebas/normal_gba.gbapal.lz"); + const u16 gMonPalette_Feebas[] = INCBIN_U16("graphics/pokemon/feebas/normal_gba.gbapal"); const u32 gMonBackPic_Feebas[] = INCBIN_U32("graphics/pokemon/feebas/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Feebas[] = INCBIN_U32("graphics/pokemon/feebas/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Feebas[] = INCBIN_U16("graphics/pokemon/feebas/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Feebas[] = INCBIN_U8("graphics/pokemon/feebas/icon.4bpp"); @@ -12703,21 +12703,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Feebas[] = INCBIN_U16("graphics/pokemon/feebas/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Feebas[] = INCBIN_U16("graphics/pokemon/feebas/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Milotic[] = INCBIN_U32("graphics/pokemon/milotic/anim_front.4bpp.lz"); - const u32 gMonPalette_Milotic[] = INCBIN_U32("graphics/pokemon/milotic/normal.gbapal.lz"); + const u16 gMonPalette_Milotic[] = INCBIN_U16("graphics/pokemon/milotic/normal.gbapal"); const u32 gMonBackPic_Milotic[] = INCBIN_U32("graphics/pokemon/milotic/back.4bpp.lz"); - const u32 gMonShinyPalette_Milotic[] = INCBIN_U32("graphics/pokemon/milotic/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Milotic[] = INCBIN_U16("graphics/pokemon/milotic/shiny.gbapal"); #else const u32 gMonFrontPic_Milotic[] = INCBIN_U32("graphics/pokemon/milotic/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Milotic[] = INCBIN_U32("graphics/pokemon/milotic/normal_gba.gbapal.lz"); + const u16 gMonPalette_Milotic[] = INCBIN_U16("graphics/pokemon/milotic/normal_gba.gbapal"); const u32 gMonBackPic_Milotic[] = INCBIN_U32("graphics/pokemon/milotic/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Milotic[] = INCBIN_U32("graphics/pokemon/milotic/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Milotic[] = INCBIN_U16("graphics/pokemon/milotic/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Milotic[] = INCBIN_U8("graphics/pokemon/milotic/icon.4bpp"); @@ -12730,8 +12730,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Milotic[] = INCBIN_U16("graphics/pokemon/milotic/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Milotic[] = INCBIN_U16("graphics/pokemon/milotic/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -12746,30 +12746,30 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_CASTFORM const u32 gMonFrontPic_CastformNormal[] = INCBIN_U32("graphics/pokemon/castform/anim_front.4bpp.lz"); - const u32 gMonPalette_CastformNormal[] = INCBIN_U32("graphics/pokemon/castform/normal.gbapal.lz"); + const u16 gMonPalette_CastformNormal[] = INCBIN_U16("graphics/pokemon/castform/normal.gbapal"); const u32 gMonBackPic_CastformNormal[] = INCBIN_U32("graphics/pokemon/castform/back.4bpp.lz"); - const u32 gMonShinyPalette_CastformNormal[] = INCBIN_U32("graphics/pokemon/castform/shiny.gbapal.lz"); + const u16 gMonShinyPalette_CastformNormal[] = INCBIN_U16("graphics/pokemon/castform/shiny.gbapal"); const u8 gMonIcon_CastformNormal[] = INCBIN_U8("graphics/pokemon/castform/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Castform[] = INCBIN_U8("graphics/pokemon/castform/footprint.1bpp"); #endif //P_FOOTPRINTS const u32 gMonFrontPic_CastformSunny[] = INCBIN_U32("graphics/pokemon/castform/sunny/anim_front.4bpp.lz"); - const u32 gMonPalette_CastformSunny[] = INCBIN_U32("graphics/pokemon/castform/sunny/normal.gbapal.lz"); + const u16 gMonPalette_CastformSunny[] = INCBIN_U16("graphics/pokemon/castform/sunny/normal.gbapal"); const u32 gMonBackPic_CastformSunny[] = INCBIN_U32("graphics/pokemon/castform/sunny/back.4bpp.lz"); - const u32 gMonShinyPalette_CastformSunny[] = INCBIN_U32("graphics/pokemon/castform/sunny/shiny.gbapal.lz"); + const u16 gMonShinyPalette_CastformSunny[] = INCBIN_U16("graphics/pokemon/castform/sunny/shiny.gbapal"); const u8 gMonIcon_CastformSunny[] = INCBIN_U8("graphics/pokemon/castform/sunny/icon.4bpp"); const u32 gMonFrontPic_CastformRainy[] = INCBIN_U32("graphics/pokemon/castform/rainy/anim_front.4bpp.lz"); - const u32 gMonPalette_CastformRainy[] = INCBIN_U32("graphics/pokemon/castform/rainy/normal.gbapal.lz"); + const u16 gMonPalette_CastformRainy[] = INCBIN_U16("graphics/pokemon/castform/rainy/normal.gbapal"); const u32 gMonBackPic_CastformRainy[] = INCBIN_U32("graphics/pokemon/castform/rainy/back.4bpp.lz"); - const u32 gMonShinyPalette_CastformRainy[] = INCBIN_U32("graphics/pokemon/castform/rainy/shiny.gbapal.lz"); + const u16 gMonShinyPalette_CastformRainy[] = INCBIN_U16("graphics/pokemon/castform/rainy/shiny.gbapal"); const u8 gMonIcon_CastformRainy[] = INCBIN_U8("graphics/pokemon/castform/rainy/icon.4bpp"); const u32 gMonFrontPic_CastformSnowy[] = INCBIN_U32("graphics/pokemon/castform/snowy/anim_front.4bpp.lz"); - const u32 gMonPalette_CastformSnowy[] = INCBIN_U32("graphics/pokemon/castform/snowy/normal.gbapal.lz"); + const u16 gMonPalette_CastformSnowy[] = INCBIN_U16("graphics/pokemon/castform/snowy/normal.gbapal"); 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 u16 gMonShinyPalette_CastformSnowy[] = INCBIN_U16("graphics/pokemon/castform/snowy/shiny.gbapal"); const u8 gMonIcon_CastformSnowy[] = INCBIN_U8("graphics/pokemon/castform/snowy/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS @@ -12778,14 +12778,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ 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"); + const u16 gOverworldPalette_CastformNormal[] = INCBIN_U16("graphics/pokemon/castform/overworld_normal.gbapal"); + const u16 gOverworldPalette_CastformSunny[] = INCBIN_U16("graphics/pokemon/castform/sunny/overworld_normal.gbapal"); + const u16 gOverworldPalette_CastformRainy[] = INCBIN_U16("graphics/pokemon/castform/rainy/overworld_normal.gbapal"); + const u16 gOverworldPalette_CastformSnowy[] = INCBIN_U16("graphics/pokemon/castform/snowy/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_CastformNormal[] = INCBIN_U16("graphics/pokemon/castform/overworld_shiny.gbapal"); + const u16 gShinyOverworldPalette_CastformSunny[] = INCBIN_U16("graphics/pokemon/castform/sunny/overworld_shiny.gbapal"); + const u16 gShinyOverworldPalette_CastformRainy[] = INCBIN_U16("graphics/pokemon/castform/rainy/overworld_shiny.gbapal"); + const u16 gShinyOverworldPalette_CastformSnowy[] = INCBIN_U16("graphics/pokemon/castform/snowy/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_CASTFORM @@ -12793,14 +12793,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_KECLEON #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Kecleon[] = INCBIN_U32("graphics/pokemon/kecleon/anim_front.4bpp.lz"); - const u32 gMonPalette_Kecleon[] = INCBIN_U32("graphics/pokemon/kecleon/normal.gbapal.lz"); + const u16 gMonPalette_Kecleon[] = INCBIN_U16("graphics/pokemon/kecleon/normal.gbapal"); const u32 gMonBackPic_Kecleon[] = INCBIN_U32("graphics/pokemon/kecleon/back.4bpp.lz"); - const u32 gMonShinyPalette_Kecleon[] = INCBIN_U32("graphics/pokemon/kecleon/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Kecleon[] = INCBIN_U16("graphics/pokemon/kecleon/shiny.gbapal"); #else const u32 gMonFrontPic_Kecleon[] = INCBIN_U32("graphics/pokemon/kecleon/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Kecleon[] = INCBIN_U32("graphics/pokemon/kecleon/normal_gba.gbapal.lz"); + const u16 gMonPalette_Kecleon[] = INCBIN_U16("graphics/pokemon/kecleon/normal_gba.gbapal"); const u32 gMonBackPic_Kecleon[] = INCBIN_U32("graphics/pokemon/kecleon/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Kecleon[] = INCBIN_U32("graphics/pokemon/kecleon/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Kecleon[] = INCBIN_U16("graphics/pokemon/kecleon/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Kecleon[] = INCBIN_U8("graphics/pokemon/kecleon/icon.4bpp"); @@ -12813,8 +12813,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Kecleon[] = INCBIN_U16("graphics/pokemon/kecleon/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Kecleon[] = INCBIN_U16("graphics/pokemon/kecleon/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_KECLEON @@ -12822,14 +12822,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_SHUPPET #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Shuppet[] = INCBIN_U32("graphics/pokemon/shuppet/anim_front.4bpp.lz"); - const u32 gMonPalette_Shuppet[] = INCBIN_U32("graphics/pokemon/shuppet/normal.gbapal.lz"); + const u16 gMonPalette_Shuppet[] = INCBIN_U16("graphics/pokemon/shuppet/normal.gbapal"); const u32 gMonBackPic_Shuppet[] = INCBIN_U32("graphics/pokemon/shuppet/back.4bpp.lz"); - const u32 gMonShinyPalette_Shuppet[] = INCBIN_U32("graphics/pokemon/shuppet/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Shuppet[] = INCBIN_U16("graphics/pokemon/shuppet/shiny.gbapal"); #else const u32 gMonFrontPic_Shuppet[] = INCBIN_U32("graphics/pokemon/shuppet/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Shuppet[] = INCBIN_U32("graphics/pokemon/shuppet/normal_gba.gbapal.lz"); + const u16 gMonPalette_Shuppet[] = INCBIN_U16("graphics/pokemon/shuppet/normal_gba.gbapal"); const u32 gMonBackPic_Shuppet[] = INCBIN_U32("graphics/pokemon/shuppet/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Shuppet[] = INCBIN_U32("graphics/pokemon/shuppet/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Shuppet[] = INCBIN_U16("graphics/pokemon/shuppet/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Shuppet[] = INCBIN_U8("graphics/pokemon/shuppet/icon.4bpp"); @@ -12842,21 +12842,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Shuppet[] = INCBIN_U16("graphics/pokemon/shuppet/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Shuppet[] = INCBIN_U16("graphics/pokemon/shuppet/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Banette[] = INCBIN_U32("graphics/pokemon/banette/anim_front.4bpp.lz"); - const u32 gMonPalette_Banette[] = INCBIN_U32("graphics/pokemon/banette/normal.gbapal.lz"); + const u16 gMonPalette_Banette[] = INCBIN_U16("graphics/pokemon/banette/normal.gbapal"); const u32 gMonBackPic_Banette[] = INCBIN_U32("graphics/pokemon/banette/back.4bpp.lz"); - const u32 gMonShinyPalette_Banette[] = INCBIN_U32("graphics/pokemon/banette/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Banette[] = INCBIN_U16("graphics/pokemon/banette/shiny.gbapal"); #else const u32 gMonFrontPic_Banette[] = INCBIN_U32("graphics/pokemon/banette/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Banette[] = INCBIN_U32("graphics/pokemon/banette/normal_gba.gbapal.lz"); + const u16 gMonPalette_Banette[] = INCBIN_U16("graphics/pokemon/banette/normal_gba.gbapal"); const u32 gMonBackPic_Banette[] = INCBIN_U32("graphics/pokemon/banette/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Banette[] = INCBIN_U32("graphics/pokemon/banette/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Banette[] = INCBIN_U16("graphics/pokemon/banette/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Banette[] = INCBIN_U8("graphics/pokemon/banette/icon.4bpp"); @@ -12869,22 +12869,22 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Banette[] = INCBIN_U16("graphics/pokemon/banette/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Banette[] = INCBIN_U16("graphics/pokemon/banette/overworld_shiny.gbapal"); #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"); - const u32 gMonPalette_BanetteMega[] = INCBIN_U32("graphics/pokemon/banette/mega/normal.gbapal.lz"); + const u16 gMonPalette_BanetteMega[] = INCBIN_U16("graphics/pokemon/banette/mega/normal.gbapal"); 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 u16 gMonShinyPalette_BanetteMega[] = INCBIN_U16("graphics/pokemon/banette/mega/shiny.gbapal"); const u8 gMonIcon_BanetteMega[] = INCBIN_U8("graphics/pokemon/banette/mega/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS 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"); + const u16 gOverworldPalette_BanetteMega[] = INCBIN_U16("graphics/pokemon/banette/mega/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_BanetteMega[] = INCBIN_U16("graphics/pokemon/banette/mega/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS #endif //P_MEGA_EVOLUTIONS @@ -12893,14 +12893,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_DUSKULL #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Duskull[] = INCBIN_U32("graphics/pokemon/duskull/anim_front.4bpp.lz"); - const u32 gMonPalette_Duskull[] = INCBIN_U32("graphics/pokemon/duskull/normal.gbapal.lz"); + const u16 gMonPalette_Duskull[] = INCBIN_U16("graphics/pokemon/duskull/normal.gbapal"); const u32 gMonBackPic_Duskull[] = INCBIN_U32("graphics/pokemon/duskull/back.4bpp.lz"); - const u32 gMonShinyPalette_Duskull[] = INCBIN_U32("graphics/pokemon/duskull/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Duskull[] = INCBIN_U16("graphics/pokemon/duskull/shiny.gbapal"); #else const u32 gMonFrontPic_Duskull[] = INCBIN_U32("graphics/pokemon/duskull/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Duskull[] = INCBIN_U32("graphics/pokemon/duskull/normal_gba.gbapal.lz"); + const u16 gMonPalette_Duskull[] = INCBIN_U16("graphics/pokemon/duskull/normal_gba.gbapal"); const u32 gMonBackPic_Duskull[] = INCBIN_U32("graphics/pokemon/duskull/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Duskull[] = INCBIN_U32("graphics/pokemon/duskull/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Duskull[] = INCBIN_U16("graphics/pokemon/duskull/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Duskull[] = INCBIN_U8("graphics/pokemon/duskull/icon.4bpp"); @@ -12913,21 +12913,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Duskull[] = INCBIN_U16("graphics/pokemon/duskull/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Duskull[] = INCBIN_U16("graphics/pokemon/duskull/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Dusclops[] = INCBIN_U32("graphics/pokemon/dusclops/anim_front.4bpp.lz"); - const u32 gMonPalette_Dusclops[] = INCBIN_U32("graphics/pokemon/dusclops/normal.gbapal.lz"); + const u16 gMonPalette_Dusclops[] = INCBIN_U16("graphics/pokemon/dusclops/normal.gbapal"); const u32 gMonBackPic_Dusclops[] = INCBIN_U32("graphics/pokemon/dusclops/back.4bpp.lz"); - const u32 gMonShinyPalette_Dusclops[] = INCBIN_U32("graphics/pokemon/dusclops/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Dusclops[] = INCBIN_U16("graphics/pokemon/dusclops/shiny.gbapal"); #else const u32 gMonFrontPic_Dusclops[] = INCBIN_U32("graphics/pokemon/dusclops/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Dusclops[] = INCBIN_U32("graphics/pokemon/dusclops/normal_gba.gbapal.lz"); + const u16 gMonPalette_Dusclops[] = INCBIN_U16("graphics/pokemon/dusclops/normal_gba.gbapal"); const u32 gMonBackPic_Dusclops[] = INCBIN_U32("graphics/pokemon/dusclops/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Dusclops[] = INCBIN_U32("graphics/pokemon/dusclops/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Dusclops[] = INCBIN_U16("graphics/pokemon/dusclops/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Dusclops[] = INCBIN_U8("graphics/pokemon/dusclops/icon.4bpp"); @@ -12940,16 +12940,16 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Dusclops[] = INCBIN_U16("graphics/pokemon/dusclops/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Dusclops[] = INCBIN_U16("graphics/pokemon/dusclops/overworld_shiny.gbapal"); #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"); - const u32 gMonPalette_Dusknoir[] = INCBIN_U32("graphics/pokemon/dusknoir/normal.gbapal.lz"); + const u16 gMonPalette_Dusknoir[] = INCBIN_U16("graphics/pokemon/dusknoir/normal.gbapal"); const u32 gMonBackPic_Dusknoir[] = INCBIN_U32("graphics/pokemon/dusknoir/back.4bpp.lz"); - const u32 gMonShinyPalette_Dusknoir[] = INCBIN_U32("graphics/pokemon/dusknoir/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Dusknoir[] = INCBIN_U16("graphics/pokemon/dusknoir/shiny.gbapal"); const u8 gMonIcon_Dusknoir[] = INCBIN_U8("graphics/pokemon/dusknoir/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Dusknoir[] = INCBIN_U8("graphics/pokemon/dusknoir/footprint.1bpp"); @@ -12957,8 +12957,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Dusknoir[] = INCBIN_U16("graphics/pokemon/dusknoir/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Dusknoir[] = INCBIN_U16("graphics/pokemon/dusknoir/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_4_CROSS_EVOS @@ -12967,14 +12967,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_TROPIUS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Tropius[] = INCBIN_U32("graphics/pokemon/tropius/anim_front.4bpp.lz"); - const u32 gMonPalette_Tropius[] = INCBIN_U32("graphics/pokemon/tropius/normal.gbapal.lz"); + const u16 gMonPalette_Tropius[] = INCBIN_U16("graphics/pokemon/tropius/normal.gbapal"); const u32 gMonBackPic_Tropius[] = INCBIN_U32("graphics/pokemon/tropius/back.4bpp.lz"); - const u32 gMonShinyPalette_Tropius[] = INCBIN_U32("graphics/pokemon/tropius/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Tropius[] = INCBIN_U16("graphics/pokemon/tropius/shiny.gbapal"); #else const u32 gMonFrontPic_Tropius[] = INCBIN_U32("graphics/pokemon/tropius/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Tropius[] = INCBIN_U32("graphics/pokemon/tropius/normal_gba.gbapal.lz"); + const u16 gMonPalette_Tropius[] = INCBIN_U16("graphics/pokemon/tropius/normal_gba.gbapal"); const u32 gMonBackPic_Tropius[] = INCBIN_U32("graphics/pokemon/tropius/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Tropius[] = INCBIN_U32("graphics/pokemon/tropius/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Tropius[] = INCBIN_U16("graphics/pokemon/tropius/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Tropius[] = INCBIN_U8("graphics/pokemon/tropius/icon.4bpp"); @@ -12987,8 +12987,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Tropius[] = INCBIN_U16("graphics/pokemon/tropius/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Tropius[] = INCBIN_U16("graphics/pokemon/tropius/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_TROPIUS @@ -12996,9 +12996,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_CHIMECHO #if P_GEN_4_CROSS_EVOS const u32 gMonFrontPic_Chingling[] = INCBIN_U32("graphics/pokemon/chingling/anim_front.4bpp.lz"); - const u32 gMonPalette_Chingling[] = INCBIN_U32("graphics/pokemon/chingling/normal.gbapal.lz"); + const u16 gMonPalette_Chingling[] = INCBIN_U16("graphics/pokemon/chingling/normal.gbapal"); const u32 gMonBackPic_Chingling[] = INCBIN_U32("graphics/pokemon/chingling/back.4bpp.lz"); - const u32 gMonShinyPalette_Chingling[] = INCBIN_U32("graphics/pokemon/chingling/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Chingling[] = INCBIN_U16("graphics/pokemon/chingling/shiny.gbapal"); const u8 gMonIcon_Chingling[] = INCBIN_U8("graphics/pokemon/chingling/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Chingling[] = INCBIN_U8("graphics/pokemon/chingling/footprint.1bpp"); @@ -13006,22 +13006,22 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Chingling[] = INCBIN_U16("graphics/pokemon/chingling/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Chingling[] = INCBIN_U16("graphics/pokemon/chingling/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_4_CROSS_EVOS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Chimecho[] = INCBIN_U32("graphics/pokemon/chimecho/anim_front.4bpp.lz"); - const u32 gMonPalette_Chimecho[] = INCBIN_U32("graphics/pokemon/chimecho/normal.gbapal.lz"); + const u16 gMonPalette_Chimecho[] = INCBIN_U16("graphics/pokemon/chimecho/normal.gbapal"); const u32 gMonBackPic_Chimecho[] = INCBIN_U32("graphics/pokemon/chimecho/back.4bpp.lz"); - const u32 gMonShinyPalette_Chimecho[] = INCBIN_U32("graphics/pokemon/chimecho/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Chimecho[] = INCBIN_U16("graphics/pokemon/chimecho/shiny.gbapal"); #else const u32 gMonFrontPic_Chimecho[] = INCBIN_U32("graphics/pokemon/chimecho/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Chimecho[] = INCBIN_U32("graphics/pokemon/chimecho/normal_gba.gbapal.lz"); + const u16 gMonPalette_Chimecho[] = INCBIN_U16("graphics/pokemon/chimecho/normal_gba.gbapal"); const u32 gMonBackPic_Chimecho[] = INCBIN_U32("graphics/pokemon/chimecho/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Chimecho[] = INCBIN_U32("graphics/pokemon/chimecho/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Chimecho[] = INCBIN_U16("graphics/pokemon/chimecho/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Chimecho[] = INCBIN_U8("graphics/pokemon/chimecho/icon.4bpp"); @@ -13034,8 +13034,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Chimecho[] = INCBIN_U16("graphics/pokemon/chimecho/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Chimecho[] = INCBIN_U16("graphics/pokemon/chimecho/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_CHIMECHO @@ -13043,14 +13043,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_ABSOL #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Absol[] = INCBIN_U32("graphics/pokemon/absol/anim_front.4bpp.lz"); - const u32 gMonPalette_Absol[] = INCBIN_U32("graphics/pokemon/absol/normal.gbapal.lz"); + const u16 gMonPalette_Absol[] = INCBIN_U16("graphics/pokemon/absol/normal.gbapal"); const u32 gMonBackPic_Absol[] = INCBIN_U32("graphics/pokemon/absol/back.4bpp.lz"); - const u32 gMonShinyPalette_Absol[] = INCBIN_U32("graphics/pokemon/absol/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Absol[] = INCBIN_U16("graphics/pokemon/absol/shiny.gbapal"); #else const u32 gMonFrontPic_Absol[] = INCBIN_U32("graphics/pokemon/absol/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Absol[] = INCBIN_U32("graphics/pokemon/absol/normal_gba.gbapal.lz"); + const u16 gMonPalette_Absol[] = INCBIN_U16("graphics/pokemon/absol/normal_gba.gbapal"); const u32 gMonBackPic_Absol[] = INCBIN_U32("graphics/pokemon/absol/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Absol[] = INCBIN_U32("graphics/pokemon/absol/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Absol[] = INCBIN_U16("graphics/pokemon/absol/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Absol[] = INCBIN_U8("graphics/pokemon/absol/icon.4bpp"); @@ -13063,22 +13063,22 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Absol[] = INCBIN_U16("graphics/pokemon/absol/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Absol[] = INCBIN_U16("graphics/pokemon/absol/overworld_shiny.gbapal"); #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"); - const u32 gMonPalette_AbsolMega[] = INCBIN_U32("graphics/pokemon/absol/mega/normal.gbapal.lz"); + const u16 gMonPalette_AbsolMega[] = INCBIN_U16("graphics/pokemon/absol/mega/normal.gbapal"); 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 u16 gMonShinyPalette_AbsolMega[] = INCBIN_U16("graphics/pokemon/absol/mega/shiny.gbapal"); const u8 gMonIcon_AbsolMega[] = INCBIN_U8("graphics/pokemon/absol/mega/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS 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"); + const u16 gOverworldPalette_AbsolMega[] = INCBIN_U16("graphics/pokemon/absol/mega/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_AbsolMega[] = INCBIN_U16("graphics/pokemon/absol/mega/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS #endif //P_MEGA_EVOLUTIONS @@ -13087,14 +13087,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_SNORUNT #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Snorunt[] = INCBIN_U32("graphics/pokemon/snorunt/anim_front.4bpp.lz"); - const u32 gMonPalette_Snorunt[] = INCBIN_U32("graphics/pokemon/snorunt/normal.gbapal.lz"); + const u16 gMonPalette_Snorunt[] = INCBIN_U16("graphics/pokemon/snorunt/normal.gbapal"); const u32 gMonBackPic_Snorunt[] = INCBIN_U32("graphics/pokemon/snorunt/back.4bpp.lz"); - const u32 gMonShinyPalette_Snorunt[] = INCBIN_U32("graphics/pokemon/snorunt/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Snorunt[] = INCBIN_U16("graphics/pokemon/snorunt/shiny.gbapal"); #else const u32 gMonFrontPic_Snorunt[] = INCBIN_U32("graphics/pokemon/snorunt/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Snorunt[] = INCBIN_U32("graphics/pokemon/snorunt/normal_gba.gbapal.lz"); + const u16 gMonPalette_Snorunt[] = INCBIN_U16("graphics/pokemon/snorunt/normal_gba.gbapal"); const u32 gMonBackPic_Snorunt[] = INCBIN_U32("graphics/pokemon/snorunt/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Snorunt[] = INCBIN_U32("graphics/pokemon/snorunt/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Snorunt[] = INCBIN_U16("graphics/pokemon/snorunt/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Snorunt[] = INCBIN_U8("graphics/pokemon/snorunt/icon.4bpp"); @@ -13107,21 +13107,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Snorunt[] = INCBIN_U16("graphics/pokemon/snorunt/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Snorunt[] = INCBIN_U16("graphics/pokemon/snorunt/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Glalie[] = INCBIN_U32("graphics/pokemon/glalie/anim_front.4bpp.lz"); - const u32 gMonPalette_Glalie[] = INCBIN_U32("graphics/pokemon/glalie/normal.gbapal.lz"); + const u16 gMonPalette_Glalie[] = INCBIN_U16("graphics/pokemon/glalie/normal.gbapal"); const u32 gMonBackPic_Glalie[] = INCBIN_U32("graphics/pokemon/glalie/back.4bpp.lz"); - const u32 gMonShinyPalette_Glalie[] = INCBIN_U32("graphics/pokemon/glalie/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Glalie[] = INCBIN_U16("graphics/pokemon/glalie/shiny.gbapal"); #else const u32 gMonFrontPic_Glalie[] = INCBIN_U32("graphics/pokemon/glalie/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Glalie[] = INCBIN_U32("graphics/pokemon/glalie/normal_gba.gbapal.lz"); + const u16 gMonPalette_Glalie[] = INCBIN_U16("graphics/pokemon/glalie/normal_gba.gbapal"); const u32 gMonBackPic_Glalie[] = INCBIN_U32("graphics/pokemon/glalie/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Glalie[] = INCBIN_U32("graphics/pokemon/glalie/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Glalie[] = INCBIN_U16("graphics/pokemon/glalie/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Glalie[] = INCBIN_U8("graphics/pokemon/glalie/icon.4bpp"); @@ -13134,31 +13134,31 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Glalie[] = INCBIN_U16("graphics/pokemon/glalie/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Glalie[] = INCBIN_U16("graphics/pokemon/glalie/overworld_shiny.gbapal"); #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"); - const u32 gMonPalette_GlalieMega[] = INCBIN_U32("graphics/pokemon/glalie/mega/normal.gbapal.lz"); + const u16 gMonPalette_GlalieMega[] = INCBIN_U16("graphics/pokemon/glalie/mega/normal.gbapal"); 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 u16 gMonShinyPalette_GlalieMega[] = INCBIN_U16("graphics/pokemon/glalie/mega/shiny.gbapal"); const u8 gMonIcon_GlalieMega[] = INCBIN_U8("graphics/pokemon/glalie/mega/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS 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"); + const u16 gOverworldPalette_GlalieMega[] = INCBIN_U16("graphics/pokemon/glalie/mega/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_GlalieMega[] = INCBIN_U16("graphics/pokemon/glalie/mega/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS #endif //P_MEGA_EVOLUTIONS #if P_GEN_4_CROSS_EVOS const u32 gMonFrontPic_Froslass[] = INCBIN_U32("graphics/pokemon/froslass/anim_front.4bpp.lz"); - const u32 gMonPalette_Froslass[] = INCBIN_U32("graphics/pokemon/froslass/normal.gbapal.lz"); + const u16 gMonPalette_Froslass[] = INCBIN_U16("graphics/pokemon/froslass/normal.gbapal"); const u32 gMonBackPic_Froslass[] = INCBIN_U32("graphics/pokemon/froslass/back.4bpp.lz"); - const u32 gMonShinyPalette_Froslass[] = INCBIN_U32("graphics/pokemon/froslass/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Froslass[] = INCBIN_U16("graphics/pokemon/froslass/shiny.gbapal"); const u8 gMonIcon_Froslass[] = INCBIN_U8("graphics/pokemon/froslass/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Froslass[] = INCBIN_U8("graphics/pokemon/froslass/footprint.1bpp"); @@ -13166,8 +13166,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Froslass[] = INCBIN_U16("graphics/pokemon/froslass/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Froslass[] = INCBIN_U16("graphics/pokemon/froslass/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_4_CROSS_EVOS @@ -13176,14 +13176,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_SPHEAL #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Spheal[] = INCBIN_U32("graphics/pokemon/spheal/anim_front.4bpp.lz"); - const u32 gMonPalette_Spheal[] = INCBIN_U32("graphics/pokemon/spheal/normal.gbapal.lz"); + const u16 gMonPalette_Spheal[] = INCBIN_U16("graphics/pokemon/spheal/normal.gbapal"); const u32 gMonBackPic_Spheal[] = INCBIN_U32("graphics/pokemon/spheal/back.4bpp.lz"); - const u32 gMonShinyPalette_Spheal[] = INCBIN_U32("graphics/pokemon/spheal/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Spheal[] = INCBIN_U16("graphics/pokemon/spheal/shiny.gbapal"); #else const u32 gMonFrontPic_Spheal[] = INCBIN_U32("graphics/pokemon/spheal/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Spheal[] = INCBIN_U32("graphics/pokemon/spheal/normal_gba.gbapal.lz"); + const u16 gMonPalette_Spheal[] = INCBIN_U16("graphics/pokemon/spheal/normal_gba.gbapal"); const u32 gMonBackPic_Spheal[] = INCBIN_U32("graphics/pokemon/spheal/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Spheal[] = INCBIN_U32("graphics/pokemon/spheal/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Spheal[] = INCBIN_U16("graphics/pokemon/spheal/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Spheal[] = INCBIN_U8("graphics/pokemon/spheal/icon.4bpp"); @@ -13196,21 +13196,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Spheal[] = INCBIN_U16("graphics/pokemon/spheal/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Spheal[] = INCBIN_U16("graphics/pokemon/spheal/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Sealeo[] = INCBIN_U32("graphics/pokemon/sealeo/anim_front.4bpp.lz"); - const u32 gMonPalette_Sealeo[] = INCBIN_U32("graphics/pokemon/sealeo/normal.gbapal.lz"); + const u16 gMonPalette_Sealeo[] = INCBIN_U16("graphics/pokemon/sealeo/normal.gbapal"); const u32 gMonBackPic_Sealeo[] = INCBIN_U32("graphics/pokemon/sealeo/back.4bpp.lz"); - const u32 gMonShinyPalette_Sealeo[] = INCBIN_U32("graphics/pokemon/sealeo/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Sealeo[] = INCBIN_U16("graphics/pokemon/sealeo/shiny.gbapal"); #else const u32 gMonFrontPic_Sealeo[] = INCBIN_U32("graphics/pokemon/sealeo/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Sealeo[] = INCBIN_U32("graphics/pokemon/sealeo/normal_gba.gbapal.lz"); + const u16 gMonPalette_Sealeo[] = INCBIN_U16("graphics/pokemon/sealeo/normal_gba.gbapal"); const u32 gMonBackPic_Sealeo[] = INCBIN_U32("graphics/pokemon/sealeo/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Sealeo[] = INCBIN_U32("graphics/pokemon/sealeo/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Sealeo[] = INCBIN_U16("graphics/pokemon/sealeo/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Sealeo[] = INCBIN_U8("graphics/pokemon/sealeo/icon.4bpp"); @@ -13223,21 +13223,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Sealeo[] = INCBIN_U16("graphics/pokemon/sealeo/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Sealeo[] = INCBIN_U16("graphics/pokemon/sealeo/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Walrein[] = INCBIN_U32("graphics/pokemon/walrein/anim_front.4bpp.lz"); - const u32 gMonPalette_Walrein[] = INCBIN_U32("graphics/pokemon/walrein/normal.gbapal.lz"); + const u16 gMonPalette_Walrein[] = INCBIN_U16("graphics/pokemon/walrein/normal.gbapal"); const u32 gMonBackPic_Walrein[] = INCBIN_U32("graphics/pokemon/walrein/back.4bpp.lz"); - const u32 gMonShinyPalette_Walrein[] = INCBIN_U32("graphics/pokemon/walrein/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Walrein[] = INCBIN_U16("graphics/pokemon/walrein/shiny.gbapal"); #else const u32 gMonFrontPic_Walrein[] = INCBIN_U32("graphics/pokemon/walrein/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Walrein[] = INCBIN_U32("graphics/pokemon/walrein/normal_gba.gbapal.lz"); + const u16 gMonPalette_Walrein[] = INCBIN_U16("graphics/pokemon/walrein/normal_gba.gbapal"); const u32 gMonBackPic_Walrein[] = INCBIN_U32("graphics/pokemon/walrein/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Walrein[] = INCBIN_U32("graphics/pokemon/walrein/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Walrein[] = INCBIN_U16("graphics/pokemon/walrein/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Walrein[] = INCBIN_U8("graphics/pokemon/walrein/icon.4bpp"); @@ -13250,8 +13250,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Walrein[] = INCBIN_U16("graphics/pokemon/walrein/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Walrein[] = INCBIN_U16("graphics/pokemon/walrein/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SPHEAL @@ -13259,14 +13259,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_CLAMPERL #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Clamperl[] = INCBIN_U32("graphics/pokemon/clamperl/anim_front.4bpp.lz"); - const u32 gMonPalette_Clamperl[] = INCBIN_U32("graphics/pokemon/clamperl/normal.gbapal.lz"); + const u16 gMonPalette_Clamperl[] = INCBIN_U16("graphics/pokemon/clamperl/normal.gbapal"); const u32 gMonBackPic_Clamperl[] = INCBIN_U32("graphics/pokemon/clamperl/back.4bpp.lz"); - const u32 gMonShinyPalette_Clamperl[] = INCBIN_U32("graphics/pokemon/clamperl/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Clamperl[] = INCBIN_U16("graphics/pokemon/clamperl/shiny.gbapal"); #else const u32 gMonFrontPic_Clamperl[] = INCBIN_U32("graphics/pokemon/clamperl/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Clamperl[] = INCBIN_U32("graphics/pokemon/clamperl/normal_gba.gbapal.lz"); + const u16 gMonPalette_Clamperl[] = INCBIN_U16("graphics/pokemon/clamperl/normal_gba.gbapal"); const u32 gMonBackPic_Clamperl[] = INCBIN_U32("graphics/pokemon/clamperl/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Clamperl[] = INCBIN_U32("graphics/pokemon/clamperl/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Clamperl[] = INCBIN_U16("graphics/pokemon/clamperl/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Clamperl[] = INCBIN_U8("graphics/pokemon/clamperl/icon.4bpp"); @@ -13279,21 +13279,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Clamperl[] = INCBIN_U16("graphics/pokemon/clamperl/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Clamperl[] = INCBIN_U16("graphics/pokemon/clamperl/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Huntail[] = INCBIN_U32("graphics/pokemon/huntail/anim_front.4bpp.lz"); - const u32 gMonPalette_Huntail[] = INCBIN_U32("graphics/pokemon/huntail/normal.gbapal.lz"); + const u16 gMonPalette_Huntail[] = INCBIN_U16("graphics/pokemon/huntail/normal.gbapal"); const u32 gMonBackPic_Huntail[] = INCBIN_U32("graphics/pokemon/huntail/back.4bpp.lz"); - const u32 gMonShinyPalette_Huntail[] = INCBIN_U32("graphics/pokemon/huntail/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Huntail[] = INCBIN_U16("graphics/pokemon/huntail/shiny.gbapal"); #else const u32 gMonFrontPic_Huntail[] = INCBIN_U32("graphics/pokemon/huntail/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Huntail[] = INCBIN_U32("graphics/pokemon/huntail/normal_gba.gbapal.lz"); + const u16 gMonPalette_Huntail[] = INCBIN_U16("graphics/pokemon/huntail/normal_gba.gbapal"); const u32 gMonBackPic_Huntail[] = INCBIN_U32("graphics/pokemon/huntail/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Huntail[] = INCBIN_U32("graphics/pokemon/huntail/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Huntail[] = INCBIN_U16("graphics/pokemon/huntail/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Huntail[] = INCBIN_U8("graphics/pokemon/huntail/icon.4bpp"); @@ -13306,21 +13306,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Huntail[] = INCBIN_U16("graphics/pokemon/huntail/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Huntail[] = INCBIN_U16("graphics/pokemon/huntail/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Gorebyss[] = INCBIN_U32("graphics/pokemon/gorebyss/anim_front.4bpp.lz"); - const u32 gMonPalette_Gorebyss[] = INCBIN_U32("graphics/pokemon/gorebyss/normal.gbapal.lz"); + const u16 gMonPalette_Gorebyss[] = INCBIN_U16("graphics/pokemon/gorebyss/normal.gbapal"); const u32 gMonBackPic_Gorebyss[] = INCBIN_U32("graphics/pokemon/gorebyss/back.4bpp.lz"); - const u32 gMonShinyPalette_Gorebyss[] = INCBIN_U32("graphics/pokemon/gorebyss/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Gorebyss[] = INCBIN_U16("graphics/pokemon/gorebyss/shiny.gbapal"); #else const u32 gMonFrontPic_Gorebyss[] = INCBIN_U32("graphics/pokemon/gorebyss/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Gorebyss[] = INCBIN_U32("graphics/pokemon/gorebyss/normal_gba.gbapal.lz"); + const u16 gMonPalette_Gorebyss[] = INCBIN_U16("graphics/pokemon/gorebyss/normal_gba.gbapal"); const u32 gMonBackPic_Gorebyss[] = INCBIN_U32("graphics/pokemon/gorebyss/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Gorebyss[] = INCBIN_U32("graphics/pokemon/gorebyss/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Gorebyss[] = INCBIN_U16("graphics/pokemon/gorebyss/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Gorebyss[] = INCBIN_U8("graphics/pokemon/gorebyss/icon.4bpp"); @@ -13333,8 +13333,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Gorebyss[] = INCBIN_U16("graphics/pokemon/gorebyss/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Gorebyss[] = INCBIN_U16("graphics/pokemon/gorebyss/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_CLAMPERL @@ -13342,14 +13342,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_RELICANTH #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Relicanth[] = INCBIN_U32("graphics/pokemon/relicanth/anim_front.4bpp.lz"); - const u32 gMonPalette_Relicanth[] = INCBIN_U32("graphics/pokemon/relicanth/normal.gbapal.lz"); + const u16 gMonPalette_Relicanth[] = INCBIN_U16("graphics/pokemon/relicanth/normal.gbapal"); const u32 gMonBackPic_Relicanth[] = INCBIN_U32("graphics/pokemon/relicanth/back.4bpp.lz"); - const u32 gMonShinyPalette_Relicanth[] = INCBIN_U32("graphics/pokemon/relicanth/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Relicanth[] = INCBIN_U16("graphics/pokemon/relicanth/shiny.gbapal"); #else const u32 gMonFrontPic_Relicanth[] = INCBIN_U32("graphics/pokemon/relicanth/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Relicanth[] = INCBIN_U32("graphics/pokemon/relicanth/normal_gba.gbapal.lz"); + const u16 gMonPalette_Relicanth[] = INCBIN_U16("graphics/pokemon/relicanth/normal_gba.gbapal"); const u32 gMonBackPic_Relicanth[] = INCBIN_U32("graphics/pokemon/relicanth/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Relicanth[] = INCBIN_U32("graphics/pokemon/relicanth/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Relicanth[] = INCBIN_U16("graphics/pokemon/relicanth/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Relicanth[] = INCBIN_U8("graphics/pokemon/relicanth/icon.4bpp"); @@ -13362,8 +13362,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Relicanth[] = INCBIN_U16("graphics/pokemon/relicanth/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Relicanth[] = INCBIN_U16("graphics/pokemon/relicanth/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -13379,14 +13379,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_LUVDISC #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Luvdisc[] = INCBIN_U32("graphics/pokemon/luvdisc/anim_front.4bpp.lz"); - const u32 gMonPalette_Luvdisc[] = INCBIN_U32("graphics/pokemon/luvdisc/normal.gbapal.lz"); + const u16 gMonPalette_Luvdisc[] = INCBIN_U16("graphics/pokemon/luvdisc/normal.gbapal"); const u32 gMonBackPic_Luvdisc[] = INCBIN_U32("graphics/pokemon/luvdisc/back.4bpp.lz"); - const u32 gMonShinyPalette_Luvdisc[] = INCBIN_U32("graphics/pokemon/luvdisc/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Luvdisc[] = INCBIN_U16("graphics/pokemon/luvdisc/shiny.gbapal"); #else const u32 gMonFrontPic_Luvdisc[] = INCBIN_U32("graphics/pokemon/luvdisc/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Luvdisc[] = INCBIN_U32("graphics/pokemon/luvdisc/normal_gba.gbapal.lz"); + const u16 gMonPalette_Luvdisc[] = INCBIN_U16("graphics/pokemon/luvdisc/normal_gba.gbapal"); const u32 gMonBackPic_Luvdisc[] = INCBIN_U32("graphics/pokemon/luvdisc/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Luvdisc[] = INCBIN_U32("graphics/pokemon/luvdisc/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Luvdisc[] = INCBIN_U16("graphics/pokemon/luvdisc/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Luvdisc[] = INCBIN_U8("graphics/pokemon/luvdisc/icon.4bpp"); @@ -13399,8 +13399,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Luvdisc[] = INCBIN_U16("graphics/pokemon/luvdisc/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Luvdisc[] = INCBIN_U16("graphics/pokemon/luvdisc/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_LUVDISC @@ -13408,14 +13408,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_BAGON #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Bagon[] = INCBIN_U32("graphics/pokemon/bagon/anim_front.4bpp.lz"); - const u32 gMonPalette_Bagon[] = INCBIN_U32("graphics/pokemon/bagon/normal.gbapal.lz"); + const u16 gMonPalette_Bagon[] = INCBIN_U16("graphics/pokemon/bagon/normal.gbapal"); const u32 gMonBackPic_Bagon[] = INCBIN_U32("graphics/pokemon/bagon/back.4bpp.lz"); - const u32 gMonShinyPalette_Bagon[] = INCBIN_U32("graphics/pokemon/bagon/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Bagon[] = INCBIN_U16("graphics/pokemon/bagon/shiny.gbapal"); #else const u32 gMonFrontPic_Bagon[] = INCBIN_U32("graphics/pokemon/bagon/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Bagon[] = INCBIN_U32("graphics/pokemon/bagon/normal_gba.gbapal.lz"); + const u16 gMonPalette_Bagon[] = INCBIN_U16("graphics/pokemon/bagon/normal_gba.gbapal"); const u32 gMonBackPic_Bagon[] = INCBIN_U32("graphics/pokemon/bagon/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Bagon[] = INCBIN_U32("graphics/pokemon/bagon/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Bagon[] = INCBIN_U16("graphics/pokemon/bagon/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Bagon[] = INCBIN_U8("graphics/pokemon/bagon/icon.4bpp"); @@ -13428,21 +13428,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Bagon[] = INCBIN_U16("graphics/pokemon/bagon/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Bagon[] = INCBIN_U16("graphics/pokemon/bagon/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Shelgon[] = INCBIN_U32("graphics/pokemon/shelgon/anim_front.4bpp.lz"); - const u32 gMonPalette_Shelgon[] = INCBIN_U32("graphics/pokemon/shelgon/normal.gbapal.lz"); + const u16 gMonPalette_Shelgon[] = INCBIN_U16("graphics/pokemon/shelgon/normal.gbapal"); const u32 gMonBackPic_Shelgon[] = INCBIN_U32("graphics/pokemon/shelgon/back.4bpp.lz"); - const u32 gMonShinyPalette_Shelgon[] = INCBIN_U32("graphics/pokemon/shelgon/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Shelgon[] = INCBIN_U16("graphics/pokemon/shelgon/shiny.gbapal"); #else const u32 gMonFrontPic_Shelgon[] = INCBIN_U32("graphics/pokemon/shelgon/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Shelgon[] = INCBIN_U32("graphics/pokemon/shelgon/normal_gba.gbapal.lz"); + const u16 gMonPalette_Shelgon[] = INCBIN_U16("graphics/pokemon/shelgon/normal_gba.gbapal"); const u32 gMonBackPic_Shelgon[] = INCBIN_U32("graphics/pokemon/shelgon/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Shelgon[] = INCBIN_U32("graphics/pokemon/shelgon/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Shelgon[] = INCBIN_U16("graphics/pokemon/shelgon/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Shelgon[] = INCBIN_U8("graphics/pokemon/shelgon/icon.4bpp"); @@ -13455,21 +13455,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Shelgon[] = INCBIN_U16("graphics/pokemon/shelgon/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Shelgon[] = INCBIN_U16("graphics/pokemon/shelgon/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Salamence[] = INCBIN_U32("graphics/pokemon/salamence/anim_front.4bpp.lz"); - const u32 gMonPalette_Salamence[] = INCBIN_U32("graphics/pokemon/salamence/normal.gbapal.lz"); + const u16 gMonPalette_Salamence[] = INCBIN_U16("graphics/pokemon/salamence/normal.gbapal"); const u32 gMonBackPic_Salamence[] = INCBIN_U32("graphics/pokemon/salamence/back.4bpp.lz"); - const u32 gMonShinyPalette_Salamence[] = INCBIN_U32("graphics/pokemon/salamence/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Salamence[] = INCBIN_U16("graphics/pokemon/salamence/shiny.gbapal"); #else const u32 gMonFrontPic_Salamence[] = INCBIN_U32("graphics/pokemon/salamence/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Salamence[] = INCBIN_U32("graphics/pokemon/salamence/normal_gba.gbapal.lz"); + const u16 gMonPalette_Salamence[] = INCBIN_U16("graphics/pokemon/salamence/normal_gba.gbapal"); const u32 gMonBackPic_Salamence[] = INCBIN_U32("graphics/pokemon/salamence/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Salamence[] = INCBIN_U32("graphics/pokemon/salamence/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Salamence[] = INCBIN_U16("graphics/pokemon/salamence/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Salamence[] = INCBIN_U8("graphics/pokemon/salamence/icon.4bpp"); @@ -13482,22 +13482,22 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Salamence[] = INCBIN_U16("graphics/pokemon/salamence/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Salamence[] = INCBIN_U16("graphics/pokemon/salamence/overworld_shiny.gbapal"); #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"); - const u32 gMonPalette_SalamenceMega[] = INCBIN_U32("graphics/pokemon/salamence/mega/normal.gbapal.lz"); + const u16 gMonPalette_SalamenceMega[] = INCBIN_U16("graphics/pokemon/salamence/mega/normal.gbapal"); 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 u16 gMonShinyPalette_SalamenceMega[] = INCBIN_U16("graphics/pokemon/salamence/mega/shiny.gbapal"); const u8 gMonIcon_SalamenceMega[] = INCBIN_U8("graphics/pokemon/salamence/mega/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS 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"); + const u16 gOverworldPalette_SalamenceMega[] = INCBIN_U16("graphics/pokemon/salamence/mega/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_SalamenceMega[] = INCBIN_U16("graphics/pokemon/salamence/mega/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS #endif //P_MEGA_EVOLUTIONS @@ -13506,14 +13506,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_BELDUM #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Beldum[] = INCBIN_U32("graphics/pokemon/beldum/anim_front.4bpp.lz"); - const u32 gMonPalette_Beldum[] = INCBIN_U32("graphics/pokemon/beldum/normal.gbapal.lz"); + const u16 gMonPalette_Beldum[] = INCBIN_U16("graphics/pokemon/beldum/normal.gbapal"); const u32 gMonBackPic_Beldum[] = INCBIN_U32("graphics/pokemon/beldum/back.4bpp.lz"); - const u32 gMonShinyPalette_Beldum[] = INCBIN_U32("graphics/pokemon/beldum/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Beldum[] = INCBIN_U16("graphics/pokemon/beldum/shiny.gbapal"); #else const u32 gMonFrontPic_Beldum[] = INCBIN_U32("graphics/pokemon/beldum/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Beldum[] = INCBIN_U32("graphics/pokemon/beldum/normal_gba.gbapal.lz"); + const u16 gMonPalette_Beldum[] = INCBIN_U16("graphics/pokemon/beldum/normal_gba.gbapal"); const u32 gMonBackPic_Beldum[] = INCBIN_U32("graphics/pokemon/beldum/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Beldum[] = INCBIN_U32("graphics/pokemon/beldum/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Beldum[] = INCBIN_U16("graphics/pokemon/beldum/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Beldum[] = INCBIN_U8("graphics/pokemon/beldum/icon.4bpp"); @@ -13526,21 +13526,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Beldum[] = INCBIN_U16("graphics/pokemon/beldum/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Beldum[] = INCBIN_U16("graphics/pokemon/beldum/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Metang[] = INCBIN_U32("graphics/pokemon/metang/anim_front.4bpp.lz"); - const u32 gMonPalette_Metang[] = INCBIN_U32("graphics/pokemon/metang/normal.gbapal.lz"); + const u16 gMonPalette_Metang[] = INCBIN_U16("graphics/pokemon/metang/normal.gbapal"); const u32 gMonBackPic_Metang[] = INCBIN_U32("graphics/pokemon/metang/back.4bpp.lz"); - const u32 gMonShinyPalette_Metang[] = INCBIN_U32("graphics/pokemon/metang/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Metang[] = INCBIN_U16("graphics/pokemon/metang/shiny.gbapal"); #else const u32 gMonFrontPic_Metang[] = INCBIN_U32("graphics/pokemon/metang/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Metang[] = INCBIN_U32("graphics/pokemon/metang/normal_gba.gbapal.lz"); + const u16 gMonPalette_Metang[] = INCBIN_U16("graphics/pokemon/metang/normal_gba.gbapal"); const u32 gMonBackPic_Metang[] = INCBIN_U32("graphics/pokemon/metang/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Metang[] = INCBIN_U32("graphics/pokemon/metang/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Metang[] = INCBIN_U16("graphics/pokemon/metang/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Metang[] = INCBIN_U8("graphics/pokemon/metang/icon.4bpp"); @@ -13553,21 +13553,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Metang[] = INCBIN_U16("graphics/pokemon/metang/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Metang[] = INCBIN_U16("graphics/pokemon/metang/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Metagross[] = INCBIN_U32("graphics/pokemon/metagross/anim_front.4bpp.lz"); - const u32 gMonPalette_Metagross[] = INCBIN_U32("graphics/pokemon/metagross/normal.gbapal.lz"); + const u16 gMonPalette_Metagross[] = INCBIN_U16("graphics/pokemon/metagross/normal.gbapal"); const u32 gMonBackPic_Metagross[] = INCBIN_U32("graphics/pokemon/metagross/back.4bpp.lz"); - const u32 gMonShinyPalette_Metagross[] = INCBIN_U32("graphics/pokemon/metagross/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Metagross[] = INCBIN_U16("graphics/pokemon/metagross/shiny.gbapal"); #else const u32 gMonFrontPic_Metagross[] = INCBIN_U32("graphics/pokemon/metagross/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Metagross[] = INCBIN_U32("graphics/pokemon/metagross/normal_gba.gbapal.lz"); + const u16 gMonPalette_Metagross[] = INCBIN_U16("graphics/pokemon/metagross/normal_gba.gbapal"); const u32 gMonBackPic_Metagross[] = INCBIN_U32("graphics/pokemon/metagross/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Metagross[] = INCBIN_U32("graphics/pokemon/metagross/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Metagross[] = INCBIN_U16("graphics/pokemon/metagross/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Metagross[] = INCBIN_U8("graphics/pokemon/metagross/icon.4bpp"); @@ -13580,22 +13580,22 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Metagross[] = INCBIN_U16("graphics/pokemon/metagross/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Metagross[] = INCBIN_U16("graphics/pokemon/metagross/overworld_shiny.gbapal"); #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"); - const u32 gMonPalette_MetagrossMega[] = INCBIN_U32("graphics/pokemon/metagross/mega/normal.gbapal.lz"); + const u16 gMonPalette_MetagrossMega[] = INCBIN_U16("graphics/pokemon/metagross/mega/normal.gbapal"); 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 u16 gMonShinyPalette_MetagrossMega[] = INCBIN_U16("graphics/pokemon/metagross/mega/shiny.gbapal"); const u8 gMonIcon_MetagrossMega[] = INCBIN_U8("graphics/pokemon/metagross/mega/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS 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"); + const u16 gOverworldPalette_MetagrossMega[] = INCBIN_U16("graphics/pokemon/metagross/mega/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_MetagrossMega[] = INCBIN_U16("graphics/pokemon/metagross/mega/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS #endif //P_MEGA_EVOLUTIONS @@ -13604,14 +13604,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_REGIROCK #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Regirock[] = INCBIN_U32("graphics/pokemon/regirock/anim_front.4bpp.lz"); - const u32 gMonPalette_Regirock[] = INCBIN_U32("graphics/pokemon/regirock/normal.gbapal.lz"); + const u16 gMonPalette_Regirock[] = INCBIN_U16("graphics/pokemon/regirock/normal.gbapal"); const u32 gMonBackPic_Regirock[] = INCBIN_U32("graphics/pokemon/regirock/back.4bpp.lz"); - const u32 gMonShinyPalette_Regirock[] = INCBIN_U32("graphics/pokemon/regirock/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Regirock[] = INCBIN_U16("graphics/pokemon/regirock/shiny.gbapal"); #else const u32 gMonFrontPic_Regirock[] = INCBIN_U32("graphics/pokemon/regirock/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Regirock[] = INCBIN_U32("graphics/pokemon/regirock/normal_gba.gbapal.lz"); + const u16 gMonPalette_Regirock[] = INCBIN_U16("graphics/pokemon/regirock/normal_gba.gbapal"); const u32 gMonBackPic_Regirock[] = INCBIN_U32("graphics/pokemon/regirock/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Regirock[] = INCBIN_U32("graphics/pokemon/regirock/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Regirock[] = INCBIN_U16("graphics/pokemon/regirock/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Regirock[] = INCBIN_U8("graphics/pokemon/regirock/icon.4bpp"); @@ -13624,8 +13624,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Regirock[] = INCBIN_U16("graphics/pokemon/regirock/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Regirock[] = INCBIN_U16("graphics/pokemon/regirock/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_REGIROCK @@ -13633,14 +13633,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_REGICE #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Regice[] = INCBIN_U32("graphics/pokemon/regice/anim_front.4bpp.lz"); - const u32 gMonPalette_Regice[] = INCBIN_U32("graphics/pokemon/regice/normal.gbapal.lz"); + const u16 gMonPalette_Regice[] = INCBIN_U16("graphics/pokemon/regice/normal.gbapal"); const u32 gMonBackPic_Regice[] = INCBIN_U32("graphics/pokemon/regice/back.4bpp.lz"); - const u32 gMonShinyPalette_Regice[] = INCBIN_U32("graphics/pokemon/regice/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Regice[] = INCBIN_U16("graphics/pokemon/regice/shiny.gbapal"); #else const u32 gMonFrontPic_Regice[] = INCBIN_U32("graphics/pokemon/regice/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Regice[] = INCBIN_U32("graphics/pokemon/regice/normal_gba.gbapal.lz"); + const u16 gMonPalette_Regice[] = INCBIN_U16("graphics/pokemon/regice/normal_gba.gbapal"); const u32 gMonBackPic_Regice[] = INCBIN_U32("graphics/pokemon/regice/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Regice[] = INCBIN_U32("graphics/pokemon/regice/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Regice[] = INCBIN_U16("graphics/pokemon/regice/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Regice[] = INCBIN_U8("graphics/pokemon/regice/icon.4bpp"); @@ -13653,8 +13653,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Regice[] = INCBIN_U16("graphics/pokemon/regice/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Regice[] = INCBIN_U16("graphics/pokemon/regice/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_REGICE @@ -13662,14 +13662,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_REGISTEEL #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Registeel[] = INCBIN_U32("graphics/pokemon/registeel/anim_front.4bpp.lz"); - const u32 gMonPalette_Registeel[] = INCBIN_U32("graphics/pokemon/registeel/normal.gbapal.lz"); + const u16 gMonPalette_Registeel[] = INCBIN_U16("graphics/pokemon/registeel/normal.gbapal"); const u32 gMonBackPic_Registeel[] = INCBIN_U32("graphics/pokemon/registeel/back.4bpp.lz"); - const u32 gMonShinyPalette_Registeel[] = INCBIN_U32("graphics/pokemon/registeel/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Registeel[] = INCBIN_U16("graphics/pokemon/registeel/shiny.gbapal"); #else const u32 gMonFrontPic_Registeel[] = INCBIN_U32("graphics/pokemon/registeel/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Registeel[] = INCBIN_U32("graphics/pokemon/registeel/normal_gba.gbapal.lz"); + const u16 gMonPalette_Registeel[] = INCBIN_U16("graphics/pokemon/registeel/normal_gba.gbapal"); const u32 gMonBackPic_Registeel[] = INCBIN_U32("graphics/pokemon/registeel/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Registeel[] = INCBIN_U32("graphics/pokemon/registeel/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Registeel[] = INCBIN_U16("graphics/pokemon/registeel/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Registeel[] = INCBIN_U8("graphics/pokemon/registeel/icon.4bpp"); @@ -13682,8 +13682,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Registeel[] = INCBIN_U16("graphics/pokemon/registeel/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Registeel[] = INCBIN_U16("graphics/pokemon/registeel/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_REGISTEEL @@ -13691,14 +13691,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_LATIAS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Latias[] = INCBIN_U32("graphics/pokemon/latias/anim_front.4bpp.lz"); - const u32 gMonPalette_Latias[] = INCBIN_U32("graphics/pokemon/latias/normal.gbapal.lz"); + const u16 gMonPalette_Latias[] = INCBIN_U16("graphics/pokemon/latias/normal.gbapal"); const u32 gMonBackPic_Latias[] = INCBIN_U32("graphics/pokemon/latias/back.4bpp.lz"); - const u32 gMonShinyPalette_Latias[] = INCBIN_U32("graphics/pokemon/latias/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Latias[] = INCBIN_U16("graphics/pokemon/latias/shiny.gbapal"); #else const u32 gMonFrontPic_Latias[] = INCBIN_U32("graphics/pokemon/latias/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Latias[] = INCBIN_U32("graphics/pokemon/latias/normal_gba.gbapal.lz"); + const u16 gMonPalette_Latias[] = INCBIN_U16("graphics/pokemon/latias/normal_gba.gbapal"); const u32 gMonBackPic_Latias[] = INCBIN_U32("graphics/pokemon/latias/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Latias[] = INCBIN_U32("graphics/pokemon/latias/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Latias[] = INCBIN_U16("graphics/pokemon/latias/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Latias[] = INCBIN_U8("graphics/pokemon/latias/icon.4bpp"); @@ -13711,22 +13711,22 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Latias[] = INCBIN_U16("graphics/pokemon/latias/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Latias[] = INCBIN_U16("graphics/pokemon/latias/overworld_shiny.gbapal"); #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"); - const u32 gMonPalette_LatiasMega[] = INCBIN_U32("graphics/pokemon/latias/mega/normal.gbapal.lz"); + const u16 gMonPalette_LatiasMega[] = INCBIN_U16("graphics/pokemon/latias/mega/normal.gbapal"); 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 u16 gMonShinyPalette_LatiasMega[] = INCBIN_U16("graphics/pokemon/latias/mega/shiny.gbapal"); const u8 gMonIcon_LatiasMega[] = INCBIN_U8("graphics/pokemon/latias/mega/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS 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"); + const u16 gOverworldPalette_LatiasMega[] = INCBIN_U16("graphics/pokemon/latias/mega/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_LatiasMega[] = INCBIN_U16("graphics/pokemon/latias/mega/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS #endif //P_MEGA_EVOLUTIONS @@ -13735,14 +13735,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_LATIOS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Latios[] = INCBIN_U32("graphics/pokemon/latios/anim_front.4bpp.lz"); - const u32 gMonPalette_Latios[] = INCBIN_U32("graphics/pokemon/latios/normal.gbapal.lz"); + const u16 gMonPalette_Latios[] = INCBIN_U16("graphics/pokemon/latios/normal.gbapal"); const u32 gMonBackPic_Latios[] = INCBIN_U32("graphics/pokemon/latios/back.4bpp.lz"); - const u32 gMonShinyPalette_Latios[] = INCBIN_U32("graphics/pokemon/latios/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Latios[] = INCBIN_U16("graphics/pokemon/latios/shiny.gbapal"); #else const u32 gMonFrontPic_Latios[] = INCBIN_U32("graphics/pokemon/latios/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Latios[] = INCBIN_U32("graphics/pokemon/latios/normal_gba.gbapal.lz"); + const u16 gMonPalette_Latios[] = INCBIN_U16("graphics/pokemon/latios/normal_gba.gbapal"); const u32 gMonBackPic_Latios[] = INCBIN_U32("graphics/pokemon/latios/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Latios[] = INCBIN_U32("graphics/pokemon/latios/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Latios[] = INCBIN_U16("graphics/pokemon/latios/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Latios[] = INCBIN_U8("graphics/pokemon/latios/icon.4bpp"); @@ -13755,22 +13755,22 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Latios[] = INCBIN_U16("graphics/pokemon/latios/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Latios[] = INCBIN_U16("graphics/pokemon/latios/overworld_shiny.gbapal"); #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"); - const u32 gMonPalette_LatiosMega[] = INCBIN_U32("graphics/pokemon/latios/mega/normal.gbapal.lz"); + const u16 gMonPalette_LatiosMega[] = INCBIN_U16("graphics/pokemon/latios/mega/normal.gbapal"); 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 u16 gMonShinyPalette_LatiosMega[] = INCBIN_U16("graphics/pokemon/latios/mega/shiny.gbapal"); const u8 gMonIcon_LatiosMega[] = INCBIN_U8("graphics/pokemon/latios/mega/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS 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"); + const u16 gOverworldPalette_LatiosMega[] = INCBIN_U16("graphics/pokemon/latios/mega/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_LatiosMega[] = INCBIN_U16("graphics/pokemon/latios/mega/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS #endif //P_MEGA_EVOLUTIONS @@ -13779,14 +13779,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_KYOGRE #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Kyogre[] = INCBIN_U32("graphics/pokemon/kyogre/anim_front.4bpp.lz"); - const u32 gMonPalette_Kyogre[] = INCBIN_U32("graphics/pokemon/kyogre/normal.gbapal.lz"); + const u16 gMonPalette_Kyogre[] = INCBIN_U16("graphics/pokemon/kyogre/normal.gbapal"); const u32 gMonBackPic_Kyogre[] = INCBIN_U32("graphics/pokemon/kyogre/back.4bpp.lz"); - const u32 gMonShinyPalette_Kyogre[] = INCBIN_U32("graphics/pokemon/kyogre/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Kyogre[] = INCBIN_U16("graphics/pokemon/kyogre/shiny.gbapal"); #else const u32 gMonFrontPic_Kyogre[] = INCBIN_U32("graphics/pokemon/kyogre/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Kyogre[] = INCBIN_U32("graphics/pokemon/kyogre/normal_gba.gbapal.lz"); + const u16 gMonPalette_Kyogre[] = INCBIN_U16("graphics/pokemon/kyogre/normal_gba.gbapal"); const u32 gMonBackPic_Kyogre[] = INCBIN_U32("graphics/pokemon/kyogre/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Kyogre[] = INCBIN_U32("graphics/pokemon/kyogre/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Kyogre[] = INCBIN_U16("graphics/pokemon/kyogre/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Kyogre[] = INCBIN_U8("graphics/pokemon/kyogre/icon.4bpp"); @@ -13799,22 +13799,22 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Kyogre[] = INCBIN_U16("graphics/pokemon/kyogre/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Kyogre[] = INCBIN_U16("graphics/pokemon/kyogre/overworld_shiny.gbapal"); #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"); - const u32 gMonPalette_KyogrePrimal[] = INCBIN_U32("graphics/pokemon/kyogre/primal/normal.gbapal.lz"); + const u16 gMonPalette_KyogrePrimal[] = INCBIN_U16("graphics/pokemon/kyogre/primal/normal.gbapal"); 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 u16 gMonShinyPalette_KyogrePrimal[] = INCBIN_U16("graphics/pokemon/kyogre/primal/shiny.gbapal"); const u8 gMonIcon_KyogrePrimal[] = INCBIN_U8("graphics/pokemon/kyogre/primal/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS 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"); + const u16 gOverworldPalette_KyogrePrimal[] = INCBIN_U16("graphics/pokemon/kyogre/primal/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_KyogrePrimal[] = INCBIN_U16("graphics/pokemon/kyogre/primal/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS #endif //P_PRIMAL_REVERSIONS @@ -13823,14 +13823,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_GROUDON #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Groudon[] = INCBIN_U32("graphics/pokemon/groudon/anim_front.4bpp.lz"); - const u32 gMonPalette_Groudon[] = INCBIN_U32("graphics/pokemon/groudon/normal.gbapal.lz"); + const u16 gMonPalette_Groudon[] = INCBIN_U16("graphics/pokemon/groudon/normal.gbapal"); const u32 gMonBackPic_Groudon[] = INCBIN_U32("graphics/pokemon/groudon/back.4bpp.lz"); - const u32 gMonShinyPalette_Groudon[] = INCBIN_U32("graphics/pokemon/groudon/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Groudon[] = INCBIN_U16("graphics/pokemon/groudon/shiny.gbapal"); #else const u32 gMonFrontPic_Groudon[] = INCBIN_U32("graphics/pokemon/groudon/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Groudon[] = INCBIN_U32("graphics/pokemon/groudon/normal_gba.gbapal.lz"); + const u16 gMonPalette_Groudon[] = INCBIN_U16("graphics/pokemon/groudon/normal_gba.gbapal"); const u32 gMonBackPic_Groudon[] = INCBIN_U32("graphics/pokemon/groudon/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Groudon[] = INCBIN_U32("graphics/pokemon/groudon/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Groudon[] = INCBIN_U16("graphics/pokemon/groudon/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Groudon[] = INCBIN_U8("graphics/pokemon/groudon/icon.4bpp"); @@ -13843,22 +13843,22 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Groudon[] = INCBIN_U16("graphics/pokemon/groudon/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Groudon[] = INCBIN_U16("graphics/pokemon/groudon/overworld_shiny.gbapal"); #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"); - const u32 gMonPalette_GroudonPrimal[] = INCBIN_U32("graphics/pokemon/groudon/primal/normal.gbapal.lz"); + const u16 gMonPalette_GroudonPrimal[] = INCBIN_U16("graphics/pokemon/groudon/primal/normal.gbapal"); 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 u16 gMonShinyPalette_GroudonPrimal[] = INCBIN_U16("graphics/pokemon/groudon/primal/shiny.gbapal"); const u8 gMonIcon_GroudonPrimal[] = INCBIN_U8("graphics/pokemon/groudon/primal/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS 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"); + const u16 gOverworldPalette_GroudonPrimal[] = INCBIN_U16("graphics/pokemon/groudon/primal/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_GroudonPrimal[] = INCBIN_U16("graphics/pokemon/groudon/primal/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS #endif //P_PRIMAL_REVERSIONS @@ -13867,14 +13867,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_RAYQUAZA #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Rayquaza[] = INCBIN_U32("graphics/pokemon/rayquaza/anim_front.4bpp.lz"); - const u32 gMonPalette_Rayquaza[] = INCBIN_U32("graphics/pokemon/rayquaza/normal.gbapal.lz"); + const u16 gMonPalette_Rayquaza[] = INCBIN_U16("graphics/pokemon/rayquaza/normal.gbapal"); const u32 gMonBackPic_Rayquaza[] = INCBIN_U32("graphics/pokemon/rayquaza/back.4bpp.lz"); - const u32 gMonShinyPalette_Rayquaza[] = INCBIN_U32("graphics/pokemon/rayquaza/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Rayquaza[] = INCBIN_U16("graphics/pokemon/rayquaza/shiny.gbapal"); #else const u32 gMonFrontPic_Rayquaza[] = INCBIN_U32("graphics/pokemon/rayquaza/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Rayquaza[] = INCBIN_U32("graphics/pokemon/rayquaza/normal_gba.gbapal.lz"); + const u16 gMonPalette_Rayquaza[] = INCBIN_U16("graphics/pokemon/rayquaza/normal_gba.gbapal"); const u32 gMonBackPic_Rayquaza[] = INCBIN_U32("graphics/pokemon/rayquaza/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Rayquaza[] = INCBIN_U32("graphics/pokemon/rayquaza/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Rayquaza[] = INCBIN_U16("graphics/pokemon/rayquaza/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Rayquaza[] = INCBIN_U8("graphics/pokemon/rayquaza/icon.4bpp"); @@ -13887,22 +13887,22 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Rayquaza[] = INCBIN_U16("graphics/pokemon/rayquaza/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Rayquaza[] = INCBIN_U16("graphics/pokemon/rayquaza/overworld_shiny.gbapal"); #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"); - const u32 gMonPalette_RayquazaMega[] = INCBIN_U32("graphics/pokemon/rayquaza/mega/normal.gbapal.lz"); + const u16 gMonPalette_RayquazaMega[] = INCBIN_U16("graphics/pokemon/rayquaza/mega/normal.gbapal"); 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 u16 gMonShinyPalette_RayquazaMega[] = INCBIN_U16("graphics/pokemon/rayquaza/mega/shiny.gbapal"); const u8 gMonIcon_RayquazaMega[] = INCBIN_U8("graphics/pokemon/rayquaza/mega/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS 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"); + const u16 gOverworldPalette_RayquazaMega[] = INCBIN_U16("graphics/pokemon/rayquaza/mega/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_RayquazaMega[] = INCBIN_U16("graphics/pokemon/rayquaza/mega/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS #endif //P_MEGA_EVOLUTIONS @@ -13911,14 +13911,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_JIRACHI #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_Jirachi[] = INCBIN_U32("graphics/pokemon/jirachi/anim_front.4bpp.lz"); - const u32 gMonPalette_Jirachi[] = INCBIN_U32("graphics/pokemon/jirachi/normal.gbapal.lz"); + const u16 gMonPalette_Jirachi[] = INCBIN_U16("graphics/pokemon/jirachi/normal.gbapal"); const u32 gMonBackPic_Jirachi[] = INCBIN_U32("graphics/pokemon/jirachi/back.4bpp.lz"); - const u32 gMonShinyPalette_Jirachi[] = INCBIN_U32("graphics/pokemon/jirachi/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Jirachi[] = INCBIN_U16("graphics/pokemon/jirachi/shiny.gbapal"); #else const u32 gMonFrontPic_Jirachi[] = INCBIN_U32("graphics/pokemon/jirachi/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_Jirachi[] = INCBIN_U32("graphics/pokemon/jirachi/normal_gba.gbapal.lz"); + const u16 gMonPalette_Jirachi[] = INCBIN_U16("graphics/pokemon/jirachi/normal_gba.gbapal"); const u32 gMonBackPic_Jirachi[] = INCBIN_U32("graphics/pokemon/jirachi/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_Jirachi[] = INCBIN_U32("graphics/pokemon/jirachi/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_Jirachi[] = INCBIN_U16("graphics/pokemon/jirachi/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_Jirachi[] = INCBIN_U8("graphics/pokemon/jirachi/icon.4bpp"); @@ -13931,8 +13931,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Jirachi[] = INCBIN_U16("graphics/pokemon/jirachi/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Jirachi[] = INCBIN_U16("graphics/pokemon/jirachi/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_JIRACHI @@ -13940,14 +13940,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_DEOXYS #if !P_GBA_STYLE_SPECIES_GFX const u32 gMonFrontPic_DeoxysNormal[] = INCBIN_U32("graphics/pokemon/deoxys/anim_front.4bpp.lz"); - const u32 gMonPalette_DeoxysNormal[] = INCBIN_U32("graphics/pokemon/deoxys/normal.gbapal.lz"); + const u16 gMonPalette_DeoxysNormal[] = INCBIN_U16("graphics/pokemon/deoxys/normal.gbapal"); const u32 gMonBackPic_DeoxysNormal[] = INCBIN_U32("graphics/pokemon/deoxys/back.4bpp.lz"); - const u32 gMonShinyPalette_DeoxysNormal[] = INCBIN_U32("graphics/pokemon/deoxys/shiny.gbapal.lz"); + const u16 gMonShinyPalette_DeoxysNormal[] = INCBIN_U16("graphics/pokemon/deoxys/shiny.gbapal"); #else const u32 gMonFrontPic_DeoxysNormal[] = INCBIN_U32("graphics/pokemon/deoxys/anim_front_gba.4bpp.lz"); - const u32 gMonPalette_DeoxysNormal[] = INCBIN_U32("graphics/pokemon/deoxys/normal_gba.gbapal.lz"); + const u16 gMonPalette_DeoxysNormal[] = INCBIN_U16("graphics/pokemon/deoxys/normal_gba.gbapal"); const u32 gMonBackPic_DeoxysNormal[] = INCBIN_U32("graphics/pokemon/deoxys/back_gba.4bpp.lz"); - const u32 gMonShinyPalette_DeoxysNormal[] = INCBIN_U32("graphics/pokemon/deoxys/shiny_gba.gbapal.lz"); + const u16 gMonShinyPalette_DeoxysNormal[] = INCBIN_U16("graphics/pokemon/deoxys/shiny_gba.gbapal"); #endif //P_GBA_STYLE_SPECIES_GFX #if !P_GBA_STYLE_SPECIES_ICONS const u8 gMonIcon_DeoxysNormal[] = INCBIN_U8("graphics/pokemon/deoxys/icon.4bpp"); @@ -13959,21 +13959,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #endif //P_FOOTPRINTS const u32 gMonFrontPic_DeoxysAttack[] = INCBIN_U32("graphics/pokemon/deoxys/attack/anim_front.4bpp.lz"); - const u32 gMonPalette_DeoxysAttack[] = INCBIN_U32("graphics/pokemon/deoxys/attack/normal.gbapal.lz"); + const u16 gMonPalette_DeoxysAttack[] = INCBIN_U16("graphics/pokemon/deoxys/attack/normal.gbapal"); const u32 gMonBackPic_DeoxysAttack[] = INCBIN_U32("graphics/pokemon/deoxys/attack/back.4bpp.lz"); - const u32 gMonShinyPalette_DeoxysAttack[] = INCBIN_U32("graphics/pokemon/deoxys/attack/shiny.gbapal.lz"); + const u16 gMonShinyPalette_DeoxysAttack[] = INCBIN_U16("graphics/pokemon/deoxys/attack/shiny.gbapal"); const u8 gMonIcon_DeoxysAttack[] = INCBIN_U8("graphics/pokemon/deoxys/attack/icon.4bpp"); const u32 gMonFrontPic_DeoxysDefense[] = INCBIN_U32("graphics/pokemon/deoxys/defense/anim_front.4bpp.lz"); - const u32 gMonPalette_DeoxysDefense[] = INCBIN_U32("graphics/pokemon/deoxys/defense/normal.gbapal.lz"); + const u16 gMonPalette_DeoxysDefense[] = INCBIN_U16("graphics/pokemon/deoxys/defense/normal.gbapal"); const u32 gMonBackPic_DeoxysDefense[] = INCBIN_U32("graphics/pokemon/deoxys/defense/back.4bpp.lz"); - const u32 gMonShinyPalette_DeoxysDefense[] = INCBIN_U32("graphics/pokemon/deoxys/defense/shiny.gbapal.lz"); + const u16 gMonShinyPalette_DeoxysDefense[] = INCBIN_U16("graphics/pokemon/deoxys/defense/shiny.gbapal"); const u8 gMonIcon_DeoxysDefense[] = INCBIN_U8("graphics/pokemon/deoxys/defense/icon.4bpp"); const u32 gMonFrontPic_DeoxysSpeed[] = INCBIN_U32("graphics/pokemon/deoxys/speed/anim_front.4bpp.lz"); - const u32 gMonPalette_DeoxysSpeed[] = INCBIN_U32("graphics/pokemon/deoxys/speed/normal.gbapal.lz"); + const u16 gMonPalette_DeoxysSpeed[] = INCBIN_U16("graphics/pokemon/deoxys/speed/normal.gbapal"); 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 u16 gMonShinyPalette_DeoxysSpeed[] = INCBIN_U16("graphics/pokemon/deoxys/speed/shiny.gbapal"); const u8 gMonIcon_DeoxysSpeed[] = INCBIN_U8("graphics/pokemon/deoxys/speed/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS @@ -13982,23 +13982,23 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ 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"); + const u16 gOverworldPalette_DeoxysNormal[] = INCBIN_U16("graphics/pokemon/deoxys/overworld_normal.gbapal"); + const u16 gOverworldPalette_DeoxysAttack[] = INCBIN_U16("graphics/pokemon/deoxys/attack/overworld_normal.gbapal"); + const u16 gOverworldPalette_DeoxysDefense[] = INCBIN_U16("graphics/pokemon/deoxys/defense/overworld_normal.gbapal"); + const u16 gOverworldPalette_DeoxysSpeed[] = INCBIN_U16("graphics/pokemon/deoxys/speed/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_DeoxysNormal[] = INCBIN_U16("graphics/pokemon/deoxys/overworld_shiny.gbapal"); + const u16 gShinyOverworldPalette_DeoxysAttack[] = INCBIN_U16("graphics/pokemon/deoxys/attack/overworld_shiny.gbapal"); + const u16 gShinyOverworldPalette_DeoxysDefense[] = INCBIN_U16("graphics/pokemon/deoxys/defense/overworld_shiny.gbapal"); + const u16 gShinyOverworldPalette_DeoxysSpeed[] = INCBIN_U16("graphics/pokemon/deoxys/speed/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_DEOXYS #if P_FAMILY_TURTWIG const u32 gMonFrontPic_Turtwig[] = INCBIN_U32("graphics/pokemon/turtwig/anim_front.4bpp.lz"); - const u32 gMonPalette_Turtwig[] = INCBIN_U32("graphics/pokemon/turtwig/normal.gbapal.lz"); + const u16 gMonPalette_Turtwig[] = INCBIN_U16("graphics/pokemon/turtwig/normal.gbapal"); const u32 gMonBackPic_Turtwig[] = INCBIN_U32("graphics/pokemon/turtwig/back.4bpp.lz"); - const u32 gMonShinyPalette_Turtwig[] = INCBIN_U32("graphics/pokemon/turtwig/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Turtwig[] = INCBIN_U16("graphics/pokemon/turtwig/shiny.gbapal"); const u8 gMonIcon_Turtwig[] = INCBIN_U8("graphics/pokemon/turtwig/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Turtwig[] = INCBIN_U8("graphics/pokemon/turtwig/footprint.1bpp"); @@ -14006,15 +14006,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Turtwig[] = INCBIN_U16("graphics/pokemon/turtwig/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Turtwig[] = INCBIN_U16("graphics/pokemon/turtwig/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Grotle[] = INCBIN_U16("graphics/pokemon/grotle/normal.gbapal"); const u32 gMonBackPic_Grotle[] = INCBIN_U32("graphics/pokemon/grotle/back.4bpp.lz"); - const u32 gMonShinyPalette_Grotle[] = INCBIN_U32("graphics/pokemon/grotle/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Grotle[] = INCBIN_U16("graphics/pokemon/grotle/shiny.gbapal"); const u8 gMonIcon_Grotle[] = INCBIN_U8("graphics/pokemon/grotle/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Grotle[] = INCBIN_U8("graphics/pokemon/grotle/footprint.1bpp"); @@ -14022,15 +14022,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Grotle[] = INCBIN_U16("graphics/pokemon/grotle/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Grotle[] = INCBIN_U16("graphics/pokemon/grotle/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Torterra[] = INCBIN_U16("graphics/pokemon/torterra/normal.gbapal"); const u32 gMonBackPic_Torterra[] = INCBIN_U32("graphics/pokemon/torterra/back.4bpp.lz"); - const u32 gMonShinyPalette_Torterra[] = INCBIN_U32("graphics/pokemon/torterra/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Torterra[] = INCBIN_U16("graphics/pokemon/torterra/shiny.gbapal"); const u8 gMonIcon_Torterra[] = INCBIN_U8("graphics/pokemon/torterra/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Torterra[] = INCBIN_U8("graphics/pokemon/torterra/footprint.1bpp"); @@ -14038,17 +14038,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Torterra[] = INCBIN_U16("graphics/pokemon/torterra/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Torterra[] = INCBIN_U16("graphics/pokemon/torterra/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_TURTWIG #if P_FAMILY_CHIMCHAR const u32 gMonFrontPic_Chimchar[] = INCBIN_U32("graphics/pokemon/chimchar/anim_front.4bpp.lz"); - const u32 gMonPalette_Chimchar[] = INCBIN_U32("graphics/pokemon/chimchar/normal.gbapal.lz"); + const u16 gMonPalette_Chimchar[] = INCBIN_U16("graphics/pokemon/chimchar/normal.gbapal"); const u32 gMonBackPic_Chimchar[] = INCBIN_U32("graphics/pokemon/chimchar/back.4bpp.lz"); - const u32 gMonShinyPalette_Chimchar[] = INCBIN_U32("graphics/pokemon/chimchar/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Chimchar[] = INCBIN_U16("graphics/pokemon/chimchar/shiny.gbapal"); const u8 gMonIcon_Chimchar[] = INCBIN_U8("graphics/pokemon/chimchar/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Chimchar[] = INCBIN_U8("graphics/pokemon/chimchar/footprint.1bpp"); @@ -14056,15 +14056,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Chimchar[] = INCBIN_U16("graphics/pokemon/chimchar/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Chimchar[] = INCBIN_U16("graphics/pokemon/chimchar/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Monferno[] = INCBIN_U16("graphics/pokemon/monferno/normal.gbapal"); const u32 gMonBackPic_Monferno[] = INCBIN_U32("graphics/pokemon/monferno/back.4bpp.lz"); - const u32 gMonShinyPalette_Monferno[] = INCBIN_U32("graphics/pokemon/monferno/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Monferno[] = INCBIN_U16("graphics/pokemon/monferno/shiny.gbapal"); const u8 gMonIcon_Monferno[] = INCBIN_U8("graphics/pokemon/monferno/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Monferno[] = INCBIN_U8("graphics/pokemon/monferno/footprint.1bpp"); @@ -14072,15 +14072,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Monferno[] = INCBIN_U16("graphics/pokemon/monferno/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Monferno[] = INCBIN_U16("graphics/pokemon/monferno/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Infernape[] = INCBIN_U16("graphics/pokemon/infernape/normal.gbapal"); const u32 gMonBackPic_Infernape[] = INCBIN_U32("graphics/pokemon/infernape/back.4bpp.lz"); - const u32 gMonShinyPalette_Infernape[] = INCBIN_U32("graphics/pokemon/infernape/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Infernape[] = INCBIN_U16("graphics/pokemon/infernape/shiny.gbapal"); const u8 gMonIcon_Infernape[] = INCBIN_U8("graphics/pokemon/infernape/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Infernape[] = INCBIN_U8("graphics/pokemon/infernape/footprint.1bpp"); @@ -14088,17 +14088,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Infernape[] = INCBIN_U16("graphics/pokemon/infernape/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Infernape[] = INCBIN_U16("graphics/pokemon/infernape/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_CHIMCHAR #if P_FAMILY_PIPLUP const u32 gMonFrontPic_Piplup[] = INCBIN_U32("graphics/pokemon/piplup/anim_front.4bpp.lz"); - const u32 gMonPalette_Piplup[] = INCBIN_U32("graphics/pokemon/piplup/normal.gbapal.lz"); + const u16 gMonPalette_Piplup[] = INCBIN_U16("graphics/pokemon/piplup/normal.gbapal"); const u32 gMonBackPic_Piplup[] = INCBIN_U32("graphics/pokemon/piplup/back.4bpp.lz"); - const u32 gMonShinyPalette_Piplup[] = INCBIN_U32("graphics/pokemon/piplup/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Piplup[] = INCBIN_U16("graphics/pokemon/piplup/shiny.gbapal"); const u8 gMonIcon_Piplup[] = INCBIN_U8("graphics/pokemon/piplup/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Piplup[] = INCBIN_U8("graphics/pokemon/piplup/footprint.1bpp"); @@ -14106,15 +14106,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Piplup[] = INCBIN_U16("graphics/pokemon/piplup/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Piplup[] = INCBIN_U16("graphics/pokemon/piplup/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Prinplup[] = INCBIN_U16("graphics/pokemon/prinplup/normal.gbapal"); const u32 gMonBackPic_Prinplup[] = INCBIN_U32("graphics/pokemon/prinplup/back.4bpp.lz"); - const u32 gMonShinyPalette_Prinplup[] = INCBIN_U32("graphics/pokemon/prinplup/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Prinplup[] = INCBIN_U16("graphics/pokemon/prinplup/shiny.gbapal"); const u8 gMonIcon_Prinplup[] = INCBIN_U8("graphics/pokemon/prinplup/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Prinplup[] = INCBIN_U8("graphics/pokemon/prinplup/footprint.1bpp"); @@ -14122,15 +14122,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Prinplup[] = INCBIN_U16("graphics/pokemon/prinplup/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Prinplup[] = INCBIN_U16("graphics/pokemon/prinplup/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Empoleon[] = INCBIN_U16("graphics/pokemon/empoleon/normal.gbapal"); const u32 gMonBackPic_Empoleon[] = INCBIN_U32("graphics/pokemon/empoleon/back.4bpp.lz"); - const u32 gMonShinyPalette_Empoleon[] = INCBIN_U32("graphics/pokemon/empoleon/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Empoleon[] = INCBIN_U16("graphics/pokemon/empoleon/shiny.gbapal"); const u8 gMonIcon_Empoleon[] = INCBIN_U8("graphics/pokemon/empoleon/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Empoleon[] = INCBIN_U8("graphics/pokemon/empoleon/footprint.1bpp"); @@ -14138,17 +14138,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Empoleon[] = INCBIN_U16("graphics/pokemon/empoleon/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Empoleon[] = INCBIN_U16("graphics/pokemon/empoleon/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_PIPLUP #if P_FAMILY_STARLY const u32 gMonFrontPic_Starly[] = INCBIN_U32("graphics/pokemon/starly/anim_front.4bpp.lz"); - const u32 gMonPalette_Starly[] = INCBIN_U32("graphics/pokemon/starly/normal.gbapal.lz"); + const u16 gMonPalette_Starly[] = INCBIN_U16("graphics/pokemon/starly/normal.gbapal"); const u32 gMonBackPic_Starly[] = INCBIN_U32("graphics/pokemon/starly/back.4bpp.lz"); - const u32 gMonShinyPalette_Starly[] = INCBIN_U32("graphics/pokemon/starly/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Starly[] = INCBIN_U16("graphics/pokemon/starly/shiny.gbapal"); const u8 gMonIcon_Starly[] = INCBIN_U8("graphics/pokemon/starly/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Starly[] = INCBIN_U8("graphics/pokemon/starly/footprint.1bpp"); @@ -14156,8 +14156,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Starly[] = INCBIN_U16("graphics/pokemon/starly/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Starly[] = INCBIN_U16("graphics/pokemon/starly/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -14170,9 +14170,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #endif //P_GENDER_DIFFERENCES const u32 gMonFrontPic_Staravia[] = INCBIN_U32("graphics/pokemon/staravia/anim_front.4bpp.lz"); - const u32 gMonPalette_Staravia[] = INCBIN_U32("graphics/pokemon/staravia/normal.gbapal.lz"); + const u16 gMonPalette_Staravia[] = INCBIN_U16("graphics/pokemon/staravia/normal.gbapal"); const u32 gMonBackPic_Staravia[] = INCBIN_U32("graphics/pokemon/staravia/back.4bpp.lz"); - const u32 gMonShinyPalette_Staravia[] = INCBIN_U32("graphics/pokemon/staravia/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Staravia[] = INCBIN_U16("graphics/pokemon/staravia/shiny.gbapal"); const u8 gMonIcon_Staravia[] = INCBIN_U8("graphics/pokemon/staravia/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Staravia[] = INCBIN_U8("graphics/pokemon/staravia/footprint.1bpp"); @@ -14180,8 +14180,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Staravia[] = INCBIN_U16("graphics/pokemon/staravia/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Staravia[] = INCBIN_U16("graphics/pokemon/staravia/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -14194,9 +14194,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #endif //P_GENDER_DIFFERENCES const u32 gMonFrontPic_Staraptor[] = INCBIN_U32("graphics/pokemon/staraptor/anim_front.4bpp.lz"); - const u32 gMonPalette_Staraptor[] = INCBIN_U32("graphics/pokemon/staraptor/normal.gbapal.lz"); + const u16 gMonPalette_Staraptor[] = INCBIN_U16("graphics/pokemon/staraptor/normal.gbapal"); const u32 gMonBackPic_Staraptor[] = INCBIN_U32("graphics/pokemon/staraptor/back.4bpp.lz"); - const u32 gMonShinyPalette_Staraptor[] = INCBIN_U32("graphics/pokemon/staraptor/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Staraptor[] = INCBIN_U16("graphics/pokemon/staraptor/shiny.gbapal"); const u8 gMonIcon_Staraptor[] = INCBIN_U8("graphics/pokemon/staraptor/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Staraptor[] = INCBIN_U8("graphics/pokemon/staraptor/footprint.1bpp"); @@ -14204,8 +14204,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Staraptor[] = INCBIN_U16("graphics/pokemon/staraptor/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Staraptor[] = INCBIN_U16("graphics/pokemon/staraptor/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -14219,9 +14219,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_BIDOOF const u32 gMonFrontPic_Bidoof[] = INCBIN_U32("graphics/pokemon/bidoof/anim_front.4bpp.lz"); - const u32 gMonPalette_Bidoof[] = INCBIN_U32("graphics/pokemon/bidoof/normal.gbapal.lz"); + const u16 gMonPalette_Bidoof[] = INCBIN_U16("graphics/pokemon/bidoof/normal.gbapal"); const u32 gMonBackPic_Bidoof[] = INCBIN_U32("graphics/pokemon/bidoof/back.4bpp.lz"); - const u32 gMonShinyPalette_Bidoof[] = INCBIN_U32("graphics/pokemon/bidoof/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Bidoof[] = INCBIN_U16("graphics/pokemon/bidoof/shiny.gbapal"); const u8 gMonIcon_Bidoof[] = INCBIN_U8("graphics/pokemon/bidoof/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Bidoof[] = INCBIN_U8("graphics/pokemon/bidoof/footprint.1bpp"); @@ -14229,8 +14229,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Bidoof[] = INCBIN_U16("graphics/pokemon/bidoof/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Bidoof[] = INCBIN_U16("graphics/pokemon/bidoof/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -14243,9 +14243,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #endif //P_GENDER_DIFFERENCES const u32 gMonFrontPic_Bibarel[] = INCBIN_U32("graphics/pokemon/bibarel/anim_front.4bpp.lz"); - const u32 gMonPalette_Bibarel[] = INCBIN_U32("graphics/pokemon/bibarel/normal.gbapal.lz"); + const u16 gMonPalette_Bibarel[] = INCBIN_U16("graphics/pokemon/bibarel/normal.gbapal"); const u32 gMonBackPic_Bibarel[] = INCBIN_U32("graphics/pokemon/bibarel/back.4bpp.lz"); - const u32 gMonShinyPalette_Bibarel[] = INCBIN_U32("graphics/pokemon/bibarel/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Bibarel[] = INCBIN_U16("graphics/pokemon/bibarel/shiny.gbapal"); const u8 gMonIcon_Bibarel[] = INCBIN_U8("graphics/pokemon/bibarel/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Bibarel[] = INCBIN_U8("graphics/pokemon/bibarel/footprint.1bpp"); @@ -14253,8 +14253,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Bibarel[] = INCBIN_U16("graphics/pokemon/bibarel/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Bibarel[] = INCBIN_U16("graphics/pokemon/bibarel/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -14268,9 +14268,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_KRICKETOT const u32 gMonFrontPic_Kricketot[] = INCBIN_U32("graphics/pokemon/kricketot/anim_front.4bpp.lz"); - const u32 gMonPalette_Kricketot[] = INCBIN_U32("graphics/pokemon/kricketot/normal.gbapal.lz"); + const u16 gMonPalette_Kricketot[] = INCBIN_U16("graphics/pokemon/kricketot/normal.gbapal"); const u32 gMonBackPic_Kricketot[] = INCBIN_U32("graphics/pokemon/kricketot/back.4bpp.lz"); - const u32 gMonShinyPalette_Kricketot[] = INCBIN_U32("graphics/pokemon/kricketot/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Kricketot[] = INCBIN_U16("graphics/pokemon/kricketot/shiny.gbapal"); const u8 gMonIcon_Kricketot[] = INCBIN_U8("graphics/pokemon/kricketot/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Kricketot[] = INCBIN_U8("graphics/pokemon/kricketot/footprint.1bpp"); @@ -14278,8 +14278,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Kricketot[] = INCBIN_U16("graphics/pokemon/kricketot/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Kricketot[] = INCBIN_U16("graphics/pokemon/kricketot/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -14292,9 +14292,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #endif //P_GENDER_DIFFERENCES const u32 gMonFrontPic_Kricketune[] = INCBIN_U32("graphics/pokemon/kricketune/anim_front.4bpp.lz"); - const u32 gMonPalette_Kricketune[] = INCBIN_U32("graphics/pokemon/kricketune/normal.gbapal.lz"); + const u16 gMonPalette_Kricketune[] = INCBIN_U16("graphics/pokemon/kricketune/normal.gbapal"); const u32 gMonBackPic_Kricketune[] = INCBIN_U32("graphics/pokemon/kricketune/back.4bpp.lz"); - const u32 gMonShinyPalette_Kricketune[] = INCBIN_U32("graphics/pokemon/kricketune/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Kricketune[] = INCBIN_U16("graphics/pokemon/kricketune/shiny.gbapal"); const u8 gMonIcon_Kricketune[] = INCBIN_U8("graphics/pokemon/kricketune/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Kricketune[] = INCBIN_U8("graphics/pokemon/kricketune/footprint.1bpp"); @@ -14302,8 +14302,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Kricketune[] = INCBIN_U16("graphics/pokemon/kricketune/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Kricketune[] = INCBIN_U16("graphics/pokemon/kricketune/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -14318,9 +14318,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_SHINX const u32 gMonFrontPic_Shinx[] = INCBIN_U32("graphics/pokemon/shinx/anim_front.4bpp.lz"); - const u32 gMonPalette_Shinx[] = INCBIN_U32("graphics/pokemon/shinx/normal.gbapal.lz"); + const u16 gMonPalette_Shinx[] = INCBIN_U16("graphics/pokemon/shinx/normal.gbapal"); const u32 gMonBackPic_Shinx[] = INCBIN_U32("graphics/pokemon/shinx/back.4bpp.lz"); - const u32 gMonShinyPalette_Shinx[] = INCBIN_U32("graphics/pokemon/shinx/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Shinx[] = INCBIN_U16("graphics/pokemon/shinx/shiny.gbapal"); const u8 gMonIcon_Shinx[] = INCBIN_U8("graphics/pokemon/shinx/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Shinx[] = INCBIN_U8("graphics/pokemon/shinx/footprint.1bpp"); @@ -14328,8 +14328,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Shinx[] = INCBIN_U16("graphics/pokemon/shinx/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Shinx[] = INCBIN_U16("graphics/pokemon/shinx/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -14342,9 +14342,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #endif //P_GENDER_DIFFERENCES const u32 gMonFrontPic_Luxio[] = INCBIN_U32("graphics/pokemon/luxio/anim_front.4bpp.lz"); - const u32 gMonPalette_Luxio[] = INCBIN_U32("graphics/pokemon/luxio/normal.gbapal.lz"); + const u16 gMonPalette_Luxio[] = INCBIN_U16("graphics/pokemon/luxio/normal.gbapal"); const u32 gMonBackPic_Luxio[] = INCBIN_U32("graphics/pokemon/luxio/back.4bpp.lz"); - const u32 gMonShinyPalette_Luxio[] = INCBIN_U32("graphics/pokemon/luxio/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Luxio[] = INCBIN_U16("graphics/pokemon/luxio/shiny.gbapal"); const u8 gMonIcon_Luxio[] = INCBIN_U8("graphics/pokemon/luxio/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Luxio[] = INCBIN_U8("graphics/pokemon/luxio/footprint.1bpp"); @@ -14352,8 +14352,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Luxio[] = INCBIN_U16("graphics/pokemon/luxio/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Luxio[] = INCBIN_U16("graphics/pokemon/luxio/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -14366,9 +14366,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #endif //P_GENDER_DIFFERENCES const u32 gMonFrontPic_Luxray[] = INCBIN_U32("graphics/pokemon/luxray/anim_front.4bpp.lz"); - const u32 gMonPalette_Luxray[] = INCBIN_U32("graphics/pokemon/luxray/normal.gbapal.lz"); + const u16 gMonPalette_Luxray[] = INCBIN_U16("graphics/pokemon/luxray/normal.gbapal"); const u32 gMonBackPic_Luxray[] = INCBIN_U32("graphics/pokemon/luxray/back.4bpp.lz"); - const u32 gMonShinyPalette_Luxray[] = INCBIN_U32("graphics/pokemon/luxray/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Luxray[] = INCBIN_U16("graphics/pokemon/luxray/shiny.gbapal"); const u8 gMonIcon_Luxray[] = INCBIN_U8("graphics/pokemon/luxray/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Luxray[] = INCBIN_U8("graphics/pokemon/luxray/footprint.1bpp"); @@ -14376,8 +14376,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Luxray[] = INCBIN_U16("graphics/pokemon/luxray/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Luxray[] = INCBIN_U16("graphics/pokemon/luxray/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -14392,9 +14392,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_CRANIDOS const u32 gMonFrontPic_Cranidos[] = INCBIN_U32("graphics/pokemon/cranidos/anim_front.4bpp.lz"); - const u32 gMonPalette_Cranidos[] = INCBIN_U32("graphics/pokemon/cranidos/normal.gbapal.lz"); + const u16 gMonPalette_Cranidos[] = INCBIN_U16("graphics/pokemon/cranidos/normal.gbapal"); const u32 gMonBackPic_Cranidos[] = INCBIN_U32("graphics/pokemon/cranidos/back.4bpp.lz"); - const u32 gMonShinyPalette_Cranidos[] = INCBIN_U32("graphics/pokemon/cranidos/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Cranidos[] = INCBIN_U16("graphics/pokemon/cranidos/shiny.gbapal"); const u8 gMonIcon_Cranidos[] = INCBIN_U8("graphics/pokemon/cranidos/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Cranidos[] = INCBIN_U8("graphics/pokemon/cranidos/footprint.1bpp"); @@ -14402,15 +14402,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Cranidos[] = INCBIN_U16("graphics/pokemon/cranidos/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Cranidos[] = INCBIN_U16("graphics/pokemon/cranidos/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Rampardos[] = INCBIN_U16("graphics/pokemon/rampardos/normal.gbapal"); const u32 gMonBackPic_Rampardos[] = INCBIN_U32("graphics/pokemon/rampardos/back.4bpp.lz"); - const u32 gMonShinyPalette_Rampardos[] = INCBIN_U32("graphics/pokemon/rampardos/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Rampardos[] = INCBIN_U16("graphics/pokemon/rampardos/shiny.gbapal"); const u8 gMonIcon_Rampardos[] = INCBIN_U8("graphics/pokemon/rampardos/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Rampardos[] = INCBIN_U8("graphics/pokemon/rampardos/footprint.1bpp"); @@ -14418,17 +14418,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Rampardos[] = INCBIN_U16("graphics/pokemon/rampardos/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Rampardos[] = INCBIN_U16("graphics/pokemon/rampardos/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_CRANIDOS #if P_FAMILY_SHIELDON const u32 gMonFrontPic_Shieldon[] = INCBIN_U32("graphics/pokemon/shieldon/anim_front.4bpp.lz"); - const u32 gMonPalette_Shieldon[] = INCBIN_U32("graphics/pokemon/shieldon/normal.gbapal.lz"); + const u16 gMonPalette_Shieldon[] = INCBIN_U16("graphics/pokemon/shieldon/normal.gbapal"); const u32 gMonBackPic_Shieldon[] = INCBIN_U32("graphics/pokemon/shieldon/back.4bpp.lz"); - const u32 gMonShinyPalette_Shieldon[] = INCBIN_U32("graphics/pokemon/shieldon/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Shieldon[] = INCBIN_U16("graphics/pokemon/shieldon/shiny.gbapal"); const u8 gMonIcon_Shieldon[] = INCBIN_U8("graphics/pokemon/shieldon/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Shieldon[] = INCBIN_U8("graphics/pokemon/shieldon/footprint.1bpp"); @@ -14436,15 +14436,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Shieldon[] = INCBIN_U16("graphics/pokemon/shieldon/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Shieldon[] = INCBIN_U16("graphics/pokemon/shieldon/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Bastiodon[] = INCBIN_U16("graphics/pokemon/bastiodon/normal.gbapal"); const u32 gMonBackPic_Bastiodon[] = INCBIN_U32("graphics/pokemon/bastiodon/back.4bpp.lz"); - const u32 gMonShinyPalette_Bastiodon[] = INCBIN_U32("graphics/pokemon/bastiodon/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Bastiodon[] = INCBIN_U16("graphics/pokemon/bastiodon/shiny.gbapal"); const u8 gMonIcon_Bastiodon[] = INCBIN_U8("graphics/pokemon/bastiodon/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Bastiodon[] = INCBIN_U8("graphics/pokemon/bastiodon/footprint.1bpp"); @@ -14452,32 +14452,32 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Bastiodon[] = INCBIN_U16("graphics/pokemon/bastiodon/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Bastiodon[] = INCBIN_U16("graphics/pokemon/bastiodon/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SHIELDON #if P_FAMILY_BURMY const u32 gMonFrontPic_BurmyPlant[] = INCBIN_U32("graphics/pokemon/burmy/anim_front.4bpp.lz"); - const u32 gMonPalette_BurmyPlant[] = INCBIN_U32("graphics/pokemon/burmy/normal.gbapal.lz"); + const u16 gMonPalette_BurmyPlant[] = INCBIN_U16("graphics/pokemon/burmy/normal.gbapal"); const u32 gMonBackPic_BurmyPlant[] = INCBIN_U32("graphics/pokemon/burmy/back.4bpp.lz"); - const u32 gMonShinyPalette_BurmyPlant[] = INCBIN_U32("graphics/pokemon/burmy/shiny.gbapal.lz"); + const u16 gMonShinyPalette_BurmyPlant[] = INCBIN_U16("graphics/pokemon/burmy/shiny.gbapal"); const u8 gMonIcon_BurmyPlant[] = INCBIN_U8("graphics/pokemon/burmy/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Burmy[] = INCBIN_U8("graphics/pokemon/burmy/footprint.1bpp"); #endif //P_FOOTPRINTS const u32 gMonFrontPic_BurmySandy[] = INCBIN_U32("graphics/pokemon/burmy/sandy/anim_front.4bpp.lz"); - const u32 gMonPalette_BurmySandy[] = INCBIN_U32("graphics/pokemon/burmy/sandy/normal.gbapal.lz"); + const u16 gMonPalette_BurmySandy[] = INCBIN_U16("graphics/pokemon/burmy/sandy/normal.gbapal"); const u32 gMonBackPic_BurmySandy[] = INCBIN_U32("graphics/pokemon/burmy/sandy/back.4bpp.lz"); - const u32 gMonShinyPalette_BurmySandy[] = INCBIN_U32("graphics/pokemon/burmy/sandy/shiny.gbapal.lz"); + const u16 gMonShinyPalette_BurmySandy[] = INCBIN_U16("graphics/pokemon/burmy/sandy/shiny.gbapal"); const u8 gMonIcon_BurmySandy[] = INCBIN_U8("graphics/pokemon/burmy/sandy/icon.4bpp"); const u32 gMonFrontPic_BurmyTrash[] = INCBIN_U32("graphics/pokemon/burmy/trash/anim_front.4bpp.lz"); - const u32 gMonPalette_BurmyTrash[] = INCBIN_U32("graphics/pokemon/burmy/trash/normal.gbapal.lz"); + const u16 gMonPalette_BurmyTrash[] = INCBIN_U16("graphics/pokemon/burmy/trash/normal.gbapal"); const u32 gMonBackPic_BurmyTrash[] = INCBIN_U32("graphics/pokemon/burmy/trash/back.4bpp.lz"); - const u32 gMonShinyPalette_BurmyTrash[] = INCBIN_U32("graphics/pokemon/burmy/trash/shiny.gbapal.lz"); + const u16 gMonShinyPalette_BurmyTrash[] = INCBIN_U16("graphics/pokemon/burmy/trash/shiny.gbapal"); const u8 gMonIcon_BurmyTrash[] = INCBIN_U8("graphics/pokemon/burmy/trash/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS @@ -14485,34 +14485,34 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gObjectEventPic_BurmySandy[] = INCBIN_COMP("graphics/pokemon/burmy/sandy/overworld.4bpp"); const u32 gObjectEventPic_BurmyTrash[] = INCBIN_COMP("graphics/pokemon/burmy/trash/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - const u32 gOverworldPalette_BurmyPlant[] = INCBIN_U32("graphics/pokemon/burmy/overworld_normal.gbapal.lz"); - const u32 gOverworldPalette_BurmySandy[] = INCBIN_U32("graphics/pokemon/burmy/sandy/overworld_normal.gbapal.lz"); - const u32 gOverworldPalette_BurmyTrash[] = INCBIN_U32("graphics/pokemon/burmy/trash/overworld_normal.gbapal.lz"); - const u32 gShinyOverworldPalette_BurmyPlant[] = INCBIN_U32("graphics/pokemon/burmy/overworld_shiny.gbapal.lz"); - const u32 gShinyOverworldPalette_BurmySandy[] = INCBIN_U32("graphics/pokemon/burmy/sandy/overworld_shiny.gbapal.lz"); - const u32 gShinyOverworldPalette_BurmyTrash[] = INCBIN_U32("graphics/pokemon/burmy/trash/overworld_shiny.gbapal.lz"); + const u16 gOverworldPalette_BurmyPlant[] = INCBIN_U16("graphics/pokemon/burmy/overworld_normal.gbapal"); + const u16 gOverworldPalette_BurmySandy[] = INCBIN_U16("graphics/pokemon/burmy/sandy/overworld_normal.gbapal"); + const u16 gOverworldPalette_BurmyTrash[] = INCBIN_U16("graphics/pokemon/burmy/trash/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_BurmyPlant[] = INCBIN_U16("graphics/pokemon/burmy/overworld_shiny.gbapal"); + const u16 gShinyOverworldPalette_BurmySandy[] = INCBIN_U16("graphics/pokemon/burmy/sandy/overworld_shiny.gbapal"); + const u16 gShinyOverworldPalette_BurmyTrash[] = INCBIN_U16("graphics/pokemon/burmy/trash/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_WormadamPlant[] = INCBIN_U32("graphics/pokemon/wormadam/anim_front.4bpp.lz"); - const u32 gMonPalette_WormadamPlant[] = INCBIN_U32("graphics/pokemon/wormadam/normal.gbapal.lz"); + const u16 gMonPalette_WormadamPlant[] = INCBIN_U16("graphics/pokemon/wormadam/normal.gbapal"); const u32 gMonBackPic_WormadamPlant[] = INCBIN_U32("graphics/pokemon/wormadam/back.4bpp.lz"); - const u32 gMonShinyPalette_WormadamPlant[] = INCBIN_U32("graphics/pokemon/wormadam/shiny.gbapal.lz"); + const u16 gMonShinyPalette_WormadamPlant[] = INCBIN_U16("graphics/pokemon/wormadam/shiny.gbapal"); const u8 gMonIcon_WormadamPlant[] = INCBIN_U8("graphics/pokemon/wormadam/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Wormadam[] = INCBIN_U8("graphics/pokemon/wormadam/footprint.1bpp"); #endif //P_FOOTPRINTS const u32 gMonFrontPic_WormadamSandy[] = INCBIN_U32("graphics/pokemon/wormadam/sandy/anim_front.4bpp.lz"); - const u32 gMonPalette_WormadamSandy[] = INCBIN_U32("graphics/pokemon/wormadam/sandy/normal.gbapal.lz"); + const u16 gMonPalette_WormadamSandy[] = INCBIN_U16("graphics/pokemon/wormadam/sandy/normal.gbapal"); const u32 gMonBackPic_WormadamSandy[] = INCBIN_U32("graphics/pokemon/wormadam/sandy/back.4bpp.lz"); - const u32 gMonShinyPalette_WormadamSandy[] = INCBIN_U32("graphics/pokemon/wormadam/sandy/shiny.gbapal.lz"); + const u16 gMonShinyPalette_WormadamSandy[] = INCBIN_U16("graphics/pokemon/wormadam/sandy/shiny.gbapal"); const u8 gMonIcon_WormadamSandy[] = INCBIN_U8("graphics/pokemon/wormadam/sandy/icon.4bpp"); const u32 gMonFrontPic_WormadamTrash[] = INCBIN_U32("graphics/pokemon/wormadam/trash/anim_front.4bpp.lz"); - const u32 gMonPalette_WormadamTrash[] = INCBIN_U32("graphics/pokemon/wormadam/trash/normal.gbapal.lz"); + const u16 gMonPalette_WormadamTrash[] = INCBIN_U16("graphics/pokemon/wormadam/trash/normal.gbapal"); const u32 gMonBackPic_WormadamTrash[] = INCBIN_U32("graphics/pokemon/wormadam/trash/back.4bpp.lz"); - const u32 gMonShinyPalette_WormadamTrash[] = INCBIN_U32("graphics/pokemon/wormadam/trash/shiny.gbapal.lz"); + const u16 gMonShinyPalette_WormadamTrash[] = INCBIN_U16("graphics/pokemon/wormadam/trash/shiny.gbapal"); const u8 gMonIcon_WormadamTrash[] = INCBIN_U8("graphics/pokemon/wormadam/trash/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS @@ -14520,19 +14520,19 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gObjectEventPic_WormadamSandy[] = INCBIN_COMP("graphics/pokemon/wormadam/sandy/overworld.4bpp"); const u32 gObjectEventPic_WormadamTrash[] = INCBIN_COMP("graphics/pokemon/wormadam/trash/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - const u32 gOverworldPalette_WormadamPlant[] = INCBIN_U32("graphics/pokemon/wormadam/overworld_normal.gbapal.lz"); - const u32 gOverworldPalette_WormadamSandy[] = INCBIN_U32("graphics/pokemon/wormadam/sandy/overworld_normal.gbapal.lz"); - const u32 gOverworldPalette_WormadamTrash[] = INCBIN_U32("graphics/pokemon/wormadam/trash/overworld_normal.gbapal.lz"); - const u32 gShinyOverworldPalette_WormadamPlant[] = INCBIN_U32("graphics/pokemon/wormadam/overworld_shiny.gbapal.lz"); - const u32 gShinyOverworldPalette_WormadamSandy[] = INCBIN_U32("graphics/pokemon/wormadam/sandy/overworld_shiny.gbapal.lz"); - const u32 gShinyOverworldPalette_WormadamTrash[] = INCBIN_U32("graphics/pokemon/wormadam/trash/overworld_shiny.gbapal.lz"); + const u16 gOverworldPalette_WormadamPlant[] = INCBIN_U16("graphics/pokemon/wormadam/overworld_normal.gbapal"); + const u16 gOverworldPalette_WormadamSandy[] = INCBIN_U16("graphics/pokemon/wormadam/sandy/overworld_normal.gbapal"); + const u16 gOverworldPalette_WormadamTrash[] = INCBIN_U16("graphics/pokemon/wormadam/trash/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_WormadamPlant[] = INCBIN_U16("graphics/pokemon/wormadam/overworld_shiny.gbapal"); + const u16 gShinyOverworldPalette_WormadamSandy[] = INCBIN_U16("graphics/pokemon/wormadam/sandy/overworld_shiny.gbapal"); + const u16 gShinyOverworldPalette_WormadamTrash[] = INCBIN_U16("graphics/pokemon/wormadam/trash/overworld_shiny.gbapal"); #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 u16 gMonPalette_Mothim[] = INCBIN_U16("graphics/pokemon/mothim/normal.gbapal"); const u32 gMonBackPic_Mothim[] = INCBIN_U32("graphics/pokemon/mothim/back.4bpp.lz"); - const u32 gMonShinyPalette_Mothim[] = INCBIN_U32("graphics/pokemon/mothim/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Mothim[] = INCBIN_U16("graphics/pokemon/mothim/shiny.gbapal"); const u8 gMonIcon_Mothim[] = INCBIN_U8("graphics/pokemon/mothim/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Mothim[] = INCBIN_U8("graphics/pokemon/mothim/footprint.1bpp"); @@ -14540,17 +14540,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Mothim[] = INCBIN_U16("graphics/pokemon/mothim/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Mothim[] = INCBIN_U16("graphics/pokemon/mothim/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_BURMY #if P_FAMILY_COMBEE const u32 gMonFrontPic_Combee[] = INCBIN_U32("graphics/pokemon/combee/anim_front.4bpp.lz"); - const u32 gMonPalette_Combee[] = INCBIN_U32("graphics/pokemon/combee/normal.gbapal.lz"); + const u16 gMonPalette_Combee[] = INCBIN_U16("graphics/pokemon/combee/normal.gbapal"); const u32 gMonBackPic_Combee[] = INCBIN_U32("graphics/pokemon/combee/back.4bpp.lz"); - const u32 gMonShinyPalette_Combee[] = INCBIN_U32("graphics/pokemon/combee/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Combee[] = INCBIN_U16("graphics/pokemon/combee/shiny.gbapal"); const u8 gMonIcon_Combee[] = INCBIN_U8("graphics/pokemon/combee/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Combee[] = INCBIN_U8("graphics/pokemon/combee/footprint.1bpp"); @@ -14558,23 +14558,23 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Combee[] = INCBIN_U16("graphics/pokemon/combee/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Combee[] = INCBIN_U16("graphics/pokemon/combee/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if P_GENDER_DIFFERENCES - const u32 gMonPalette_CombeeF[] = INCBIN_U32("graphics/pokemon/combee/normalf.gbapal.lz"); - const u32 gMonShinyPalette_CombeeF[] = INCBIN_U32("graphics/pokemon/combee/shinyf.gbapal.lz"); + const u16 gMonPalette_CombeeF[] = INCBIN_U16("graphics/pokemon/combee/normalf.gbapal"); + const u16 gMonShinyPalette_CombeeF[] = INCBIN_U16("graphics/pokemon/combee/shinyf.gbapal"); #if OW_POKEMON_OBJECT_EVENTS const u32 gObjectEventPic_CombeeF[] = INCBIN_COMP("graphics/pokemon/combee/overworldf.4bpp"); #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GENDER_DIFFERENCES const u32 gMonFrontPic_Vespiquen[] = INCBIN_U32("graphics/pokemon/vespiquen/anim_front.4bpp.lz"); - const u32 gMonPalette_Vespiquen[] = INCBIN_U32("graphics/pokemon/vespiquen/normal.gbapal.lz"); + const u16 gMonPalette_Vespiquen[] = INCBIN_U16("graphics/pokemon/vespiquen/normal.gbapal"); const u32 gMonBackPic_Vespiquen[] = INCBIN_U32("graphics/pokemon/vespiquen/back.4bpp.lz"); - const u32 gMonShinyPalette_Vespiquen[] = INCBIN_U32("graphics/pokemon/vespiquen/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Vespiquen[] = INCBIN_U16("graphics/pokemon/vespiquen/shiny.gbapal"); const u8 gMonIcon_Vespiquen[] = INCBIN_U8("graphics/pokemon/vespiquen/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Vespiquen[] = INCBIN_U8("graphics/pokemon/vespiquen/footprint.1bpp"); @@ -14582,17 +14582,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Vespiquen[] = INCBIN_U16("graphics/pokemon/vespiquen/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Vespiquen[] = INCBIN_U16("graphics/pokemon/vespiquen/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_COMBEE #if P_FAMILY_PACHIRISU const u32 gMonFrontPic_Pachirisu[] = INCBIN_U32("graphics/pokemon/pachirisu/anim_front.4bpp.lz"); - const u32 gMonPalette_Pachirisu[] = INCBIN_U32("graphics/pokemon/pachirisu/normal.gbapal.lz"); + const u16 gMonPalette_Pachirisu[] = INCBIN_U16("graphics/pokemon/pachirisu/normal.gbapal"); const u32 gMonBackPic_Pachirisu[] = INCBIN_U32("graphics/pokemon/pachirisu/back.4bpp.lz"); - const u32 gMonShinyPalette_Pachirisu[] = INCBIN_U32("graphics/pokemon/pachirisu/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Pachirisu[] = INCBIN_U16("graphics/pokemon/pachirisu/shiny.gbapal"); const u8 gMonIcon_Pachirisu[] = INCBIN_U8("graphics/pokemon/pachirisu/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Pachirisu[] = INCBIN_U8("graphics/pokemon/pachirisu/footprint.1bpp"); @@ -14600,8 +14600,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Pachirisu[] = INCBIN_U16("graphics/pokemon/pachirisu/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Pachirisu[] = INCBIN_U16("graphics/pokemon/pachirisu/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -14615,9 +14615,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_BUIZEL const u32 gMonFrontPic_Buizel[] = INCBIN_U32("graphics/pokemon/buizel/anim_front.4bpp.lz"); - const u32 gMonPalette_Buizel[] = INCBIN_U32("graphics/pokemon/buizel/normal.gbapal.lz"); + const u16 gMonPalette_Buizel[] = INCBIN_U16("graphics/pokemon/buizel/normal.gbapal"); const u32 gMonBackPic_Buizel[] = INCBIN_U32("graphics/pokemon/buizel/back.4bpp.lz"); - const u32 gMonShinyPalette_Buizel[] = INCBIN_U32("graphics/pokemon/buizel/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Buizel[] = INCBIN_U16("graphics/pokemon/buizel/shiny.gbapal"); const u8 gMonIcon_Buizel[] = INCBIN_U8("graphics/pokemon/buizel/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Buizel[] = INCBIN_U8("graphics/pokemon/buizel/footprint.1bpp"); @@ -14625,8 +14625,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Buizel[] = INCBIN_U16("graphics/pokemon/buizel/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Buizel[] = INCBIN_U16("graphics/pokemon/buizel/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -14638,9 +14638,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #endif //P_GENDER_DIFFERENCES const u32 gMonFrontPic_Floatzel[] = INCBIN_U32("graphics/pokemon/floatzel/anim_front.4bpp.lz"); - const u32 gMonPalette_Floatzel[] = INCBIN_U32("graphics/pokemon/floatzel/normal.gbapal.lz"); + const u16 gMonPalette_Floatzel[] = INCBIN_U16("graphics/pokemon/floatzel/normal.gbapal"); const u32 gMonBackPic_Floatzel[] = INCBIN_U32("graphics/pokemon/floatzel/back.4bpp.lz"); - const u32 gMonShinyPalette_Floatzel[] = INCBIN_U32("graphics/pokemon/floatzel/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Floatzel[] = INCBIN_U16("graphics/pokemon/floatzel/shiny.gbapal"); const u8 gMonIcon_Floatzel[] = INCBIN_U8("graphics/pokemon/floatzel/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Floatzel[] = INCBIN_U8("graphics/pokemon/floatzel/footprint.1bpp"); @@ -14648,8 +14648,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Floatzel[] = INCBIN_U16("graphics/pokemon/floatzel/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Floatzel[] = INCBIN_U16("graphics/pokemon/floatzel/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -14663,9 +14663,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_CHERUBI const u32 gMonFrontPic_Cherubi[] = INCBIN_U32("graphics/pokemon/cherubi/anim_front.4bpp.lz"); - const u32 gMonPalette_Cherubi[] = INCBIN_U32("graphics/pokemon/cherubi/normal.gbapal.lz"); + const u16 gMonPalette_Cherubi[] = INCBIN_U16("graphics/pokemon/cherubi/normal.gbapal"); const u32 gMonBackPic_Cherubi[] = INCBIN_U32("graphics/pokemon/cherubi/back.4bpp.lz"); - const u32 gMonShinyPalette_Cherubi[] = INCBIN_U32("graphics/pokemon/cherubi/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Cherubi[] = INCBIN_U16("graphics/pokemon/cherubi/shiny.gbapal"); const u8 gMonIcon_Cherubi[] = INCBIN_U8("graphics/pokemon/cherubi/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Cherubi[] = INCBIN_U8("graphics/pokemon/cherubi/footprint.1bpp"); @@ -14673,96 +14673,96 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Cherubi[] = INCBIN_U16("graphics/pokemon/cherubi/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Cherubi[] = INCBIN_U16("graphics/pokemon/cherubi/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_CherrimOvercast[] = INCBIN_U16("graphics/pokemon/cherrim/normal.gbapal"); const u32 gMonBackPic_CherrimOvercast[] = INCBIN_U32("graphics/pokemon/cherrim/back.4bpp.lz"); - const u32 gMonShinyPalette_CherrimOvercast[] = INCBIN_U32("graphics/pokemon/cherrim/shiny.gbapal.lz"); + const u16 gMonShinyPalette_CherrimOvercast[] = INCBIN_U16("graphics/pokemon/cherrim/shiny.gbapal"); const u8 gMonIcon_CherrimOvercast[] = INCBIN_U8("graphics/pokemon/cherrim/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Cherrim[] = INCBIN_U8("graphics/pokemon/cherrim/footprint.1bpp"); #endif //P_FOOTPRINTS const u32 gMonFrontPic_CherrimSunshine[] = INCBIN_U32("graphics/pokemon/cherrim/sunshine/anim_front.4bpp.lz"); - const u32 gMonPalette_CherrimSunshine[] = INCBIN_U32("graphics/pokemon/cherrim/sunshine/normal.gbapal.lz"); + const u16 gMonPalette_CherrimSunshine[] = INCBIN_U16("graphics/pokemon/cherrim/sunshine/normal.gbapal"); 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 u16 gMonShinyPalette_CherrimSunshine[] = INCBIN_U16("graphics/pokemon/cherrim/sunshine/shiny.gbapal"); 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"); + const u16 gOverworldPalette_CherrimOvercast[] = INCBIN_U16("graphics/pokemon/cherrim/overworld_normal.gbapal"); + // const u16 gOverworldPalette_CherrimSunshine[] = INCBIN_U16("graphics/pokemon/cherrim/sunshine/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_CherrimOvercast[] = INCBIN_U16("graphics/pokemon/cherrim/overworld_shiny.gbapal"); + // const u16 gShinyOverworldPalette_CherrimSunshine[] = INCBIN_U16("graphics/pokemon/cherrim/sunshine/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_CHERUBI #if P_FAMILY_SHELLOS const u32 gMonFrontPic_ShellosWestSea[] = INCBIN_U32("graphics/pokemon/shellos/anim_front.4bpp.lz"); - const u32 gMonPalette_ShellosWestSea[] = INCBIN_U32("graphics/pokemon/shellos/normal.gbapal.lz"); + const u16 gMonPalette_ShellosWestSea[] = INCBIN_U16("graphics/pokemon/shellos/normal.gbapal"); const u32 gMonBackPic_ShellosWestSea[] = INCBIN_U32("graphics/pokemon/shellos/back.4bpp.lz"); - const u32 gMonShinyPalette_ShellosWestSea[] = INCBIN_U32("graphics/pokemon/shellos/shiny.gbapal.lz"); + const u16 gMonShinyPalette_ShellosWestSea[] = INCBIN_U16("graphics/pokemon/shellos/shiny.gbapal"); const u8 gMonIcon_ShellosWestSea[] = INCBIN_U8("graphics/pokemon/shellos/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Shellos[] = INCBIN_U8("graphics/pokemon/shellos/footprint.1bpp"); #endif //P_FOOTPRINTS const u32 gMonFrontPic_ShellosEast[] = INCBIN_U32("graphics/pokemon/shellos/east/anim_front.4bpp.lz"); - const u32 gMonPalette_ShellosEast[] = INCBIN_U32("graphics/pokemon/shellos/east/normal.gbapal.lz"); + const u16 gMonPalette_ShellosEast[] = INCBIN_U16("graphics/pokemon/shellos/east/normal.gbapal"); const u32 gMonBackPic_ShellosEast[] = INCBIN_U32("graphics/pokemon/shellos/east/back.4bpp.lz"); - const u32 gMonShinyPalette_ShellosEast[] = INCBIN_U32("graphics/pokemon/shellos/east/shiny.gbapal.lz"); + const u16 gMonShinyPalette_ShellosEast[] = INCBIN_U16("graphics/pokemon/shellos/east/shiny.gbapal"); const u8 gMonIcon_ShellosEast[] = INCBIN_U8("graphics/pokemon/shellos/east/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS const u32 gObjectEventPic_ShellosWestSea[] = INCBIN_COMP("graphics/pokemon/shellos/overworld.4bpp"); const u32 gObjectEventPic_ShellosEast[] = INCBIN_COMP("graphics/pokemon/shellos/east/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_ShellosEast[] = INCBIN_U32("graphics/pokemon/shellos/east/overworld_normal.gbapal.lz"); - const u32 gShinyOverworldPalette_ShellosWestSea[] = INCBIN_U32("graphics/pokemon/shellos/overworld_shiny.gbapal.lz"); - const u32 gShinyOverworldPalette_ShellosEast[] = INCBIN_U32("graphics/pokemon/shellos/east/overworld_shiny.gbapal.lz"); + const u16 gOverworldPalette_ShellosWestSea[] = INCBIN_U16("graphics/pokemon/shellos/overworld_normal.gbapal"); + const u16 gOverworldPalette_ShellosEast[] = INCBIN_U16("graphics/pokemon/shellos/east/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_ShellosWestSea[] = INCBIN_U16("graphics/pokemon/shellos/overworld_shiny.gbapal"); + const u16 gShinyOverworldPalette_ShellosEast[] = INCBIN_U16("graphics/pokemon/shellos/east/overworld_shiny.gbapal"); #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 u16 gMonPalette_GastrodonWestSea[] = INCBIN_U16("graphics/pokemon/gastrodon/normal.gbapal"); const u32 gMonBackPic_GastrodonWestSea[] = INCBIN_U32("graphics/pokemon/gastrodon/back.4bpp.lz"); - const u32 gMonShinyPalette_GastrodonWestSea[] = INCBIN_U32("graphics/pokemon/gastrodon/shiny.gbapal.lz"); + const u16 gMonShinyPalette_GastrodonWestSea[] = INCBIN_U16("graphics/pokemon/gastrodon/shiny.gbapal"); const u8 gMonIcon_GastrodonWestSea[] = INCBIN_U8("graphics/pokemon/gastrodon/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Gastrodon[] = INCBIN_U8("graphics/pokemon/gastrodon/footprint.1bpp"); #endif //P_FOOTPRINTS const u32 gMonFrontPic_GastrodonEast[] = INCBIN_U32("graphics/pokemon/gastrodon/east/anim_front.4bpp.lz"); - const u32 gMonPalette_GastrodonEast[] = INCBIN_U32("graphics/pokemon/gastrodon/east/normal.gbapal.lz"); + const u16 gMonPalette_GastrodonEast[] = INCBIN_U16("graphics/pokemon/gastrodon/east/normal.gbapal"); const u32 gMonBackPic_GastrodonEast[] = INCBIN_U32("graphics/pokemon/gastrodon/east/back.4bpp.lz"); - const u32 gMonShinyPalette_GastrodonEast[] = INCBIN_U32("graphics/pokemon/gastrodon/east/shiny.gbapal.lz"); + const u16 gMonShinyPalette_GastrodonEast[] = INCBIN_U16("graphics/pokemon/gastrodon/east/shiny.gbapal"); const u8 gMonIcon_GastrodonEast[] = INCBIN_U8("graphics/pokemon/gastrodon/east/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS const u32 gObjectEventPic_GastrodonWestSea[] = INCBIN_COMP("graphics/pokemon/gastrodon/overworld.4bpp"); const u32 gObjectEventPic_GastrodonEast[] = INCBIN_COMP("graphics/pokemon/gastrodon/east/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_GastrodonEast[] = INCBIN_U32("graphics/pokemon/gastrodon/east/overworld_normal.gbapal.lz"); - const u32 gShinyOverworldPalette_GastrodonWestSea[] = INCBIN_U32("graphics/pokemon/gastrodon/overworld_shiny.gbapal.lz"); - const u32 gShinyOverworldPalette_GastrodonEast[] = INCBIN_U32("graphics/pokemon/gastrodon/east/overworld_shiny.gbapal.lz"); + const u16 gOverworldPalette_GastrodonWestSea[] = INCBIN_U16("graphics/pokemon/gastrodon/overworld_normal.gbapal"); + const u16 gOverworldPalette_GastrodonEast[] = INCBIN_U16("graphics/pokemon/gastrodon/east/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_GastrodonWestSea[] = INCBIN_U16("graphics/pokemon/gastrodon/overworld_shiny.gbapal"); + const u16 gShinyOverworldPalette_GastrodonEast[] = INCBIN_U16("graphics/pokemon/gastrodon/east/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SHELLOS #if P_FAMILY_DRIFLOON const u32 gMonFrontPic_Drifloon[] = INCBIN_U32("graphics/pokemon/drifloon/anim_front.4bpp.lz"); - const u32 gMonPalette_Drifloon[] = INCBIN_U32("graphics/pokemon/drifloon/normal.gbapal.lz"); + const u16 gMonPalette_Drifloon[] = INCBIN_U16("graphics/pokemon/drifloon/normal.gbapal"); const u32 gMonBackPic_Drifloon[] = INCBIN_U32("graphics/pokemon/drifloon/back.4bpp.lz"); - const u32 gMonShinyPalette_Drifloon[] = INCBIN_U32("graphics/pokemon/drifloon/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Drifloon[] = INCBIN_U16("graphics/pokemon/drifloon/shiny.gbapal"); const u8 gMonIcon_Drifloon[] = INCBIN_U8("graphics/pokemon/drifloon/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Drifloon[] = INCBIN_U8("graphics/pokemon/drifloon/footprint.1bpp"); @@ -14770,15 +14770,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Drifloon[] = INCBIN_U16("graphics/pokemon/drifloon/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Drifloon[] = INCBIN_U16("graphics/pokemon/drifloon/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Drifblim[] = INCBIN_U16("graphics/pokemon/drifblim/normal.gbapal"); const u32 gMonBackPic_Drifblim[] = INCBIN_U32("graphics/pokemon/drifblim/back.4bpp.lz"); - const u32 gMonShinyPalette_Drifblim[] = INCBIN_U32("graphics/pokemon/drifblim/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Drifblim[] = INCBIN_U16("graphics/pokemon/drifblim/shiny.gbapal"); const u8 gMonIcon_Drifblim[] = INCBIN_U8("graphics/pokemon/drifblim/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Drifblim[] = INCBIN_U8("graphics/pokemon/drifblim/footprint.1bpp"); @@ -14786,17 +14786,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Drifblim[] = INCBIN_U16("graphics/pokemon/drifblim/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Drifblim[] = INCBIN_U16("graphics/pokemon/drifblim/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_DRIFLOON #if P_FAMILY_BUNEARY const u32 gMonFrontPic_Buneary[] = INCBIN_U32("graphics/pokemon/buneary/anim_front.4bpp.lz"); - const u32 gMonPalette_Buneary[] = INCBIN_U32("graphics/pokemon/buneary/normal.gbapal.lz"); + const u16 gMonPalette_Buneary[] = INCBIN_U16("graphics/pokemon/buneary/normal.gbapal"); const u32 gMonBackPic_Buneary[] = INCBIN_U32("graphics/pokemon/buneary/back.4bpp.lz"); - const u32 gMonShinyPalette_Buneary[] = INCBIN_U32("graphics/pokemon/buneary/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Buneary[] = INCBIN_U16("graphics/pokemon/buneary/shiny.gbapal"); const u8 gMonIcon_Buneary[] = INCBIN_U8("graphics/pokemon/buneary/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Buneary[] = INCBIN_U8("graphics/pokemon/buneary/footprint.1bpp"); @@ -14804,15 +14804,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Buneary[] = INCBIN_U16("graphics/pokemon/buneary/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Buneary[] = INCBIN_U16("graphics/pokemon/buneary/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Lopunny[] = INCBIN_U16("graphics/pokemon/lopunny/normal.gbapal"); const u32 gMonBackPic_Lopunny[] = INCBIN_U32("graphics/pokemon/lopunny/back.4bpp.lz"); - const u32 gMonShinyPalette_Lopunny[] = INCBIN_U32("graphics/pokemon/lopunny/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Lopunny[] = INCBIN_U16("graphics/pokemon/lopunny/shiny.gbapal"); const u8 gMonIcon_Lopunny[] = INCBIN_U8("graphics/pokemon/lopunny/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Lopunny[] = INCBIN_U8("graphics/pokemon/lopunny/footprint.1bpp"); @@ -14820,22 +14820,22 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Lopunny[] = INCBIN_U16("graphics/pokemon/lopunny/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Lopunny[] = INCBIN_U16("graphics/pokemon/lopunny/overworld_shiny.gbapal"); #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"); - const u32 gMonPalette_LopunnyMega[] = INCBIN_U32("graphics/pokemon/lopunny/mega/normal.gbapal.lz"); + const u16 gMonPalette_LopunnyMega[] = INCBIN_U16("graphics/pokemon/lopunny/mega/normal.gbapal"); 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 u16 gMonShinyPalette_LopunnyMega[] = INCBIN_U16("graphics/pokemon/lopunny/mega/shiny.gbapal"); const u8 gMonIcon_LopunnyMega[] = INCBIN_U8("graphics/pokemon/lopunny/mega/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS 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"); + const u16 gOverworldPalette_LopunnyMega[] = INCBIN_U16("graphics/pokemon/lopunny/mega/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_LopunnyMega[] = INCBIN_U16("graphics/pokemon/lopunny/mega/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS #endif //P_MEGA_EVOLUTIONS @@ -14843,9 +14843,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_GLAMEOW const u32 gMonFrontPic_Glameow[] = INCBIN_U32("graphics/pokemon/glameow/anim_front.4bpp.lz"); - const u32 gMonPalette_Glameow[] = INCBIN_U32("graphics/pokemon/glameow/normal.gbapal.lz"); + const u16 gMonPalette_Glameow[] = INCBIN_U16("graphics/pokemon/glameow/normal.gbapal"); const u32 gMonBackPic_Glameow[] = INCBIN_U32("graphics/pokemon/glameow/back.4bpp.lz"); - const u32 gMonShinyPalette_Glameow[] = INCBIN_U32("graphics/pokemon/glameow/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Glameow[] = INCBIN_U16("graphics/pokemon/glameow/shiny.gbapal"); const u8 gMonIcon_Glameow[] = INCBIN_U8("graphics/pokemon/glameow/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Glameow[] = INCBIN_U8("graphics/pokemon/glameow/footprint.1bpp"); @@ -14853,15 +14853,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Glameow[] = INCBIN_U16("graphics/pokemon/glameow/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Glameow[] = INCBIN_U16("graphics/pokemon/glameow/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Purugly[] = INCBIN_U16("graphics/pokemon/purugly/normal.gbapal"); const u32 gMonBackPic_Purugly[] = INCBIN_U32("graphics/pokemon/purugly/back.4bpp.lz"); - const u32 gMonShinyPalette_Purugly[] = INCBIN_U32("graphics/pokemon/purugly/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Purugly[] = INCBIN_U16("graphics/pokemon/purugly/shiny.gbapal"); const u8 gMonIcon_Purugly[] = INCBIN_U8("graphics/pokemon/purugly/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Purugly[] = INCBIN_U8("graphics/pokemon/purugly/footprint.1bpp"); @@ -14869,17 +14869,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Purugly[] = INCBIN_U16("graphics/pokemon/purugly/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Purugly[] = INCBIN_U16("graphics/pokemon/purugly/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_GLAMEOW #if P_FAMILY_STUNKY const u32 gMonFrontPic_Stunky[] = INCBIN_U32("graphics/pokemon/stunky/anim_front.4bpp.lz"); - const u32 gMonPalette_Stunky[] = INCBIN_U32("graphics/pokemon/stunky/normal.gbapal.lz"); + const u16 gMonPalette_Stunky[] = INCBIN_U16("graphics/pokemon/stunky/normal.gbapal"); const u32 gMonBackPic_Stunky[] = INCBIN_U32("graphics/pokemon/stunky/back.4bpp.lz"); - const u32 gMonShinyPalette_Stunky[] = INCBIN_U32("graphics/pokemon/stunky/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Stunky[] = INCBIN_U16("graphics/pokemon/stunky/shiny.gbapal"); const u8 gMonIcon_Stunky[] = INCBIN_U8("graphics/pokemon/stunky/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Stunky[] = INCBIN_U8("graphics/pokemon/stunky/footprint.1bpp"); @@ -14887,15 +14887,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Stunky[] = INCBIN_U16("graphics/pokemon/stunky/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Stunky[] = INCBIN_U16("graphics/pokemon/stunky/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Skuntank[] = INCBIN_U16("graphics/pokemon/skuntank/normal.gbapal"); const u32 gMonBackPic_Skuntank[] = INCBIN_U32("graphics/pokemon/skuntank/back.4bpp.lz"); - const u32 gMonShinyPalette_Skuntank[] = INCBIN_U32("graphics/pokemon/skuntank/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Skuntank[] = INCBIN_U16("graphics/pokemon/skuntank/shiny.gbapal"); const u8 gMonIcon_Skuntank[] = INCBIN_U8("graphics/pokemon/skuntank/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Skuntank[] = INCBIN_U8("graphics/pokemon/skuntank/footprint.1bpp"); @@ -14903,17 +14903,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Skuntank[] = INCBIN_U16("graphics/pokemon/skuntank/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Skuntank[] = INCBIN_U16("graphics/pokemon/skuntank/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_STUNKY #if P_FAMILY_BRONZOR const u32 gMonFrontPic_Bronzor[] = INCBIN_U32("graphics/pokemon/bronzor/anim_front.4bpp.lz"); - const u32 gMonPalette_Bronzor[] = INCBIN_U32("graphics/pokemon/bronzor/normal.gbapal.lz"); + const u16 gMonPalette_Bronzor[] = INCBIN_U16("graphics/pokemon/bronzor/normal.gbapal"); const u32 gMonBackPic_Bronzor[] = INCBIN_U32("graphics/pokemon/bronzor/back.4bpp.lz"); - const u32 gMonShinyPalette_Bronzor[] = INCBIN_U32("graphics/pokemon/bronzor/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Bronzor[] = INCBIN_U16("graphics/pokemon/bronzor/shiny.gbapal"); const u8 gMonIcon_Bronzor[] = INCBIN_U8("graphics/pokemon/bronzor/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Bronzor[] = INCBIN_U8("graphics/pokemon/bronzor/footprint.1bpp"); @@ -14921,15 +14921,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Bronzor[] = INCBIN_U16("graphics/pokemon/bronzor/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Bronzor[] = INCBIN_U16("graphics/pokemon/bronzor/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Bronzong[] = INCBIN_U16("graphics/pokemon/bronzong/normal.gbapal"); const u32 gMonBackPic_Bronzong[] = INCBIN_U32("graphics/pokemon/bronzong/back.4bpp.lz"); - const u32 gMonShinyPalette_Bronzong[] = INCBIN_U32("graphics/pokemon/bronzong/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Bronzong[] = INCBIN_U16("graphics/pokemon/bronzong/shiny.gbapal"); const u8 gMonIcon_Bronzong[] = INCBIN_U8("graphics/pokemon/bronzong/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Bronzong[] = INCBIN_U8("graphics/pokemon/bronzong/footprint.1bpp"); @@ -14937,17 +14937,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Bronzong[] = INCBIN_U16("graphics/pokemon/bronzong/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Bronzong[] = INCBIN_U16("graphics/pokemon/bronzong/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_BRONZOR #if P_FAMILY_CHATOT const u32 gMonFrontPic_Chatot[] = INCBIN_U32("graphics/pokemon/chatot/anim_front.4bpp.lz"); - const u32 gMonPalette_Chatot[] = INCBIN_U32("graphics/pokemon/chatot/normal.gbapal.lz"); + const u16 gMonPalette_Chatot[] = INCBIN_U16("graphics/pokemon/chatot/normal.gbapal"); const u32 gMonBackPic_Chatot[] = INCBIN_U32("graphics/pokemon/chatot/back.4bpp.lz"); - const u32 gMonShinyPalette_Chatot[] = INCBIN_U32("graphics/pokemon/chatot/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Chatot[] = INCBIN_U16("graphics/pokemon/chatot/shiny.gbapal"); const u8 gMonIcon_Chatot[] = INCBIN_U8("graphics/pokemon/chatot/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Chatot[] = INCBIN_U8("graphics/pokemon/chatot/footprint.1bpp"); @@ -14955,17 +14955,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Chatot[] = INCBIN_U16("graphics/pokemon/chatot/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Chatot[] = INCBIN_U16("graphics/pokemon/chatot/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_CHATOT #if P_FAMILY_SPIRITOMB const u32 gMonFrontPic_Spiritomb[] = INCBIN_U32("graphics/pokemon/spiritomb/anim_front.4bpp.lz"); - const u32 gMonPalette_Spiritomb[] = INCBIN_U32("graphics/pokemon/spiritomb/normal.gbapal.lz"); + const u16 gMonPalette_Spiritomb[] = INCBIN_U16("graphics/pokemon/spiritomb/normal.gbapal"); const u32 gMonBackPic_Spiritomb[] = INCBIN_U32("graphics/pokemon/spiritomb/back.4bpp.lz"); - const u32 gMonShinyPalette_Spiritomb[] = INCBIN_U32("graphics/pokemon/spiritomb/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Spiritomb[] = INCBIN_U16("graphics/pokemon/spiritomb/shiny.gbapal"); const u8 gMonIcon_Spiritomb[] = INCBIN_U8("graphics/pokemon/spiritomb/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Spiritomb[] = INCBIN_U8("graphics/pokemon/spiritomb/footprint.1bpp"); @@ -14973,17 +14973,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Spiritomb[] = INCBIN_U16("graphics/pokemon/spiritomb/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Spiritomb[] = INCBIN_U16("graphics/pokemon/spiritomb/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SPIRITOMB #if P_FAMILY_GIBLE const u32 gMonFrontPic_Gible[] = INCBIN_U32("graphics/pokemon/gible/anim_front.4bpp.lz"); - const u32 gMonPalette_Gible[] = INCBIN_U32("graphics/pokemon/gible/normal.gbapal.lz"); + const u16 gMonPalette_Gible[] = INCBIN_U16("graphics/pokemon/gible/normal.gbapal"); const u32 gMonBackPic_Gible[] = INCBIN_U32("graphics/pokemon/gible/back.4bpp.lz"); - const u32 gMonShinyPalette_Gible[] = INCBIN_U32("graphics/pokemon/gible/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Gible[] = INCBIN_U16("graphics/pokemon/gible/shiny.gbapal"); const u8 gMonIcon_Gible[] = INCBIN_U8("graphics/pokemon/gible/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Gible[] = INCBIN_U8("graphics/pokemon/gible/footprint.1bpp"); @@ -14991,8 +14991,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Gible[] = INCBIN_U16("graphics/pokemon/gible/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Gible[] = INCBIN_U16("graphics/pokemon/gible/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -15005,9 +15005,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #endif //P_GENDER_DIFFERENCES const u32 gMonFrontPic_Gabite[] = INCBIN_U32("graphics/pokemon/gabite/anim_front.4bpp.lz"); - const u32 gMonPalette_Gabite[] = INCBIN_U32("graphics/pokemon/gabite/normal.gbapal.lz"); + const u16 gMonPalette_Gabite[] = INCBIN_U16("graphics/pokemon/gabite/normal.gbapal"); const u32 gMonBackPic_Gabite[] = INCBIN_U32("graphics/pokemon/gabite/back.4bpp.lz"); - const u32 gMonShinyPalette_Gabite[] = INCBIN_U32("graphics/pokemon/gabite/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Gabite[] = INCBIN_U16("graphics/pokemon/gabite/shiny.gbapal"); const u8 gMonIcon_Gabite[] = INCBIN_U8("graphics/pokemon/gabite/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Gabite[] = INCBIN_U8("graphics/pokemon/gabite/footprint.1bpp"); @@ -15015,8 +15015,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Gabite[] = INCBIN_U16("graphics/pokemon/gabite/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Gabite[] = INCBIN_U16("graphics/pokemon/gabite/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -15029,9 +15029,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #endif //P_GENDER_DIFFERENCES const u32 gMonFrontPic_Garchomp[] = INCBIN_U32("graphics/pokemon/garchomp/anim_front.4bpp.lz"); - const u32 gMonPalette_Garchomp[] = INCBIN_U32("graphics/pokemon/garchomp/normal.gbapal.lz"); + const u16 gMonPalette_Garchomp[] = INCBIN_U16("graphics/pokemon/garchomp/normal.gbapal"); const u32 gMonBackPic_Garchomp[] = INCBIN_U32("graphics/pokemon/garchomp/back.4bpp.lz"); - const u32 gMonShinyPalette_Garchomp[] = INCBIN_U32("graphics/pokemon/garchomp/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Garchomp[] = INCBIN_U16("graphics/pokemon/garchomp/shiny.gbapal"); const u8 gMonIcon_Garchomp[] = INCBIN_U8("graphics/pokemon/garchomp/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Garchomp[] = INCBIN_U8("graphics/pokemon/garchomp/footprint.1bpp"); @@ -15039,8 +15039,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Garchomp[] = INCBIN_U16("graphics/pokemon/garchomp/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Garchomp[] = INCBIN_U16("graphics/pokemon/garchomp/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -15053,15 +15053,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_MEGA_EVOLUTIONS const u32 gMonFrontPic_GarchompMega[] = INCBIN_U32("graphics/pokemon/garchomp/mega/front.4bpp.lz"); - const u32 gMonPalette_GarchompMega[] = INCBIN_U32("graphics/pokemon/garchomp/mega/normal.gbapal.lz"); + const u16 gMonPalette_GarchompMega[] = INCBIN_U16("graphics/pokemon/garchomp/mega/normal.gbapal"); 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 u16 gMonShinyPalette_GarchompMega[] = INCBIN_U16("graphics/pokemon/garchomp/mega/shiny.gbapal"); const u8 gMonIcon_GarchompMega[] = INCBIN_U8("graphics/pokemon/garchomp/mega/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS 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"); + const u16 gOverworldPalette_GarchompMega[] = INCBIN_U16("graphics/pokemon/garchomp/mega/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_GarchompMega[] = INCBIN_U16("graphics/pokemon/garchomp/mega/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS #endif //P_MEGA_EVOLUTIONS @@ -15069,9 +15069,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_RIOLU const u32 gMonFrontPic_Riolu[] = INCBIN_U32("graphics/pokemon/riolu/anim_front.4bpp.lz"); - const u32 gMonPalette_Riolu[] = INCBIN_U32("graphics/pokemon/riolu/normal.gbapal.lz"); + const u16 gMonPalette_Riolu[] = INCBIN_U16("graphics/pokemon/riolu/normal.gbapal"); const u32 gMonBackPic_Riolu[] = INCBIN_U32("graphics/pokemon/riolu/back.4bpp.lz"); - const u32 gMonShinyPalette_Riolu[] = INCBIN_U32("graphics/pokemon/riolu/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Riolu[] = INCBIN_U16("graphics/pokemon/riolu/shiny.gbapal"); const u8 gMonIcon_Riolu[] = INCBIN_U8("graphics/pokemon/riolu/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Riolu[] = INCBIN_U8("graphics/pokemon/riolu/footprint.1bpp"); @@ -15079,15 +15079,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Riolu[] = INCBIN_U16("graphics/pokemon/riolu/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Riolu[] = INCBIN_U16("graphics/pokemon/riolu/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Lucario[] = INCBIN_U16("graphics/pokemon/lucario/normal.gbapal"); const u32 gMonBackPic_Lucario[] = INCBIN_U32("graphics/pokemon/lucario/back.4bpp.lz"); - const u32 gMonShinyPalette_Lucario[] = INCBIN_U32("graphics/pokemon/lucario/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Lucario[] = INCBIN_U16("graphics/pokemon/lucario/shiny.gbapal"); const u8 gMonIcon_Lucario[] = INCBIN_U8("graphics/pokemon/lucario/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Lucario[] = INCBIN_U8("graphics/pokemon/lucario/footprint.1bpp"); @@ -15095,22 +15095,22 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Lucario[] = INCBIN_U16("graphics/pokemon/lucario/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Lucario[] = INCBIN_U16("graphics/pokemon/lucario/overworld_shiny.gbapal"); #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"); - const u32 gMonPalette_LucarioMega[] = INCBIN_U32("graphics/pokemon/lucario/mega/normal.gbapal.lz"); + const u16 gMonPalette_LucarioMega[] = INCBIN_U16("graphics/pokemon/lucario/mega/normal.gbapal"); 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 u16 gMonShinyPalette_LucarioMega[] = INCBIN_U16("graphics/pokemon/lucario/mega/shiny.gbapal"); const u8 gMonIcon_LucarioMega[] = INCBIN_U8("graphics/pokemon/lucario/mega/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS 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"); + const u16 gOverworldPalette_LucarioMega[] = INCBIN_U16("graphics/pokemon/lucario/mega/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_LucarioMega[] = INCBIN_U16("graphics/pokemon/lucario/mega/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS #endif //P_MEGA_EVOLUTIONS @@ -15118,9 +15118,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_HIPPOPOTAS const u32 gMonFrontPic_Hippopotas[] = INCBIN_U32("graphics/pokemon/hippopotas/anim_front.4bpp.lz"); - const u32 gMonPalette_Hippopotas[] = INCBIN_U32("graphics/pokemon/hippopotas/normal.gbapal.lz"); + const u16 gMonPalette_Hippopotas[] = INCBIN_U16("graphics/pokemon/hippopotas/normal.gbapal"); const u32 gMonBackPic_Hippopotas[] = INCBIN_U32("graphics/pokemon/hippopotas/back.4bpp.lz"); - const u32 gMonShinyPalette_Hippopotas[] = INCBIN_U32("graphics/pokemon/hippopotas/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Hippopotas[] = INCBIN_U16("graphics/pokemon/hippopotas/shiny.gbapal"); const u8 gMonIcon_Hippopotas[] = INCBIN_U8("graphics/pokemon/hippopotas/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Hippopotas[] = INCBIN_U8("graphics/pokemon/hippopotas/footprint.1bpp"); @@ -15128,14 +15128,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Hippopotas[] = INCBIN_U16("graphics/pokemon/hippopotas/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Hippopotas[] = INCBIN_U16("graphics/pokemon/hippopotas/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if P_GENDER_DIFFERENCES - const u32 gMonPalette_HippopotasF[] = INCBIN_U32("graphics/pokemon/hippopotas/normalf.gbapal.lz"); - const u32 gMonShinyPalette_HippopotasF[] = INCBIN_U32("graphics/pokemon/hippopotas/shinyf.gbapal.lz"); + const u16 gMonPalette_HippopotasF[] = INCBIN_U16("graphics/pokemon/hippopotas/normalf.gbapal"); + const u16 gMonShinyPalette_HippopotasF[] = INCBIN_U16("graphics/pokemon/hippopotas/shinyf.gbapal"); #if P_CUSTOM_GENDER_DIFF_ICONS const u8 gMonIcon_HippopotasF[] = INCBIN_U8("graphics/pokemon/hippopotas/iconf.4bpp"); #endif @@ -15145,9 +15145,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #endif //P_GENDER_DIFFERENCES const u32 gMonFrontPic_Hippowdon[] = INCBIN_U32("graphics/pokemon/hippowdon/anim_front.4bpp.lz"); - const u32 gMonPalette_Hippowdon[] = INCBIN_U32("graphics/pokemon/hippowdon/normal.gbapal.lz"); + const u16 gMonPalette_Hippowdon[] = INCBIN_U16("graphics/pokemon/hippowdon/normal.gbapal"); const u32 gMonBackPic_Hippowdon[] = INCBIN_U32("graphics/pokemon/hippowdon/back.4bpp.lz"); - const u32 gMonShinyPalette_Hippowdon[] = INCBIN_U32("graphics/pokemon/hippowdon/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Hippowdon[] = INCBIN_U16("graphics/pokemon/hippowdon/shiny.gbapal"); const u8 gMonIcon_Hippowdon[] = INCBIN_U8("graphics/pokemon/hippowdon/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Hippowdon[] = INCBIN_U8("graphics/pokemon/hippowdon/footprint.1bpp"); @@ -15155,21 +15155,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Hippowdon[] = INCBIN_U16("graphics/pokemon/hippowdon/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Hippowdon[] = INCBIN_U16("graphics/pokemon/hippowdon/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if P_GENDER_DIFFERENCES - const u32 gMonPalette_HippowdonF[] = INCBIN_U32("graphics/pokemon/hippowdon/normalf.gbapal.lz"); - const u32 gMonShinyPalette_HippowdonF[] = INCBIN_U32("graphics/pokemon/hippowdon/shinyf.gbapal.lz"); + const u16 gMonPalette_HippowdonF[] = INCBIN_U16("graphics/pokemon/hippowdon/normalf.gbapal"); + const u16 gMonShinyPalette_HippowdonF[] = INCBIN_U16("graphics/pokemon/hippowdon/shinyf.gbapal"); #if P_CUSTOM_GENDER_DIFF_ICONS const u8 gMonIcon_HippowdonF[] = INCBIN_U8("graphics/pokemon/hippowdon/iconf.4bpp"); #endif #if OW_POKEMON_OBJECT_EVENTS #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - const u32 gOverworldPalette_HippowdonF[] = INCBIN_U32("graphics/pokemon/hippowdon/overworld_normalf.gbapal.lz"); - const u32 gShinyOverworldPalette_HippowdonF[] = INCBIN_U32("graphics/pokemon/hippowdon/overworld_shinyf.gbapal.lz"); + const u16 gOverworldPalette_HippowdonF[] = INCBIN_U16("graphics/pokemon/hippowdon/overworld_normalf.gbapal"); + const u16 gShinyOverworldPalette_HippowdonF[] = INCBIN_U16("graphics/pokemon/hippowdon/overworld_shinyf.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GENDER_DIFFERENCES @@ -15177,9 +15177,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_SKORUPI const u32 gMonFrontPic_Skorupi[] = INCBIN_U32("graphics/pokemon/skorupi/anim_front.4bpp.lz"); - const u32 gMonPalette_Skorupi[] = INCBIN_U32("graphics/pokemon/skorupi/normal.gbapal.lz"); + const u16 gMonPalette_Skorupi[] = INCBIN_U16("graphics/pokemon/skorupi/normal.gbapal"); const u32 gMonBackPic_Skorupi[] = INCBIN_U32("graphics/pokemon/skorupi/back.4bpp.lz"); - const u32 gMonShinyPalette_Skorupi[] = INCBIN_U32("graphics/pokemon/skorupi/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Skorupi[] = INCBIN_U16("graphics/pokemon/skorupi/shiny.gbapal"); const u8 gMonIcon_Skorupi[] = INCBIN_U8("graphics/pokemon/skorupi/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Skorupi[] = INCBIN_U8("graphics/pokemon/skorupi/footprint.1bpp"); @@ -15187,15 +15187,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Skorupi[] = INCBIN_U16("graphics/pokemon/skorupi/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Skorupi[] = INCBIN_U16("graphics/pokemon/skorupi/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Drapion[] = INCBIN_U16("graphics/pokemon/drapion/normal.gbapal"); const u32 gMonBackPic_Drapion[] = INCBIN_U32("graphics/pokemon/drapion/back.4bpp.lz"); - const u32 gMonShinyPalette_Drapion[] = INCBIN_U32("graphics/pokemon/drapion/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Drapion[] = INCBIN_U16("graphics/pokemon/drapion/shiny.gbapal"); const u8 gMonIcon_Drapion[] = INCBIN_U8("graphics/pokemon/drapion/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Drapion[] = INCBIN_U8("graphics/pokemon/drapion/footprint.1bpp"); @@ -15203,17 +15203,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Drapion[] = INCBIN_U16("graphics/pokemon/drapion/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Drapion[] = INCBIN_U16("graphics/pokemon/drapion/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SKORUPI #if P_FAMILY_CROAGUNK const u32 gMonFrontPic_Croagunk[] = INCBIN_U32("graphics/pokemon/croagunk/anim_front.4bpp.lz"); - const u32 gMonPalette_Croagunk[] = INCBIN_U32("graphics/pokemon/croagunk/normal.gbapal.lz"); + const u16 gMonPalette_Croagunk[] = INCBIN_U16("graphics/pokemon/croagunk/normal.gbapal"); const u32 gMonBackPic_Croagunk[] = INCBIN_U32("graphics/pokemon/croagunk/back.4bpp.lz"); - const u32 gMonShinyPalette_Croagunk[] = INCBIN_U32("graphics/pokemon/croagunk/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Croagunk[] = INCBIN_U16("graphics/pokemon/croagunk/shiny.gbapal"); const u8 gMonIcon_Croagunk[] = INCBIN_U8("graphics/pokemon/croagunk/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Croagunk[] = INCBIN_U8("graphics/pokemon/croagunk/footprint.1bpp"); @@ -15221,8 +15221,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Croagunk[] = INCBIN_U16("graphics/pokemon/croagunk/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Croagunk[] = INCBIN_U16("graphics/pokemon/croagunk/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -15235,9 +15235,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #endif //P_GENDER_DIFFERENCES const u32 gMonFrontPic_Toxicroak[] = INCBIN_U32("graphics/pokemon/toxicroak/anim_front.4bpp.lz"); - const u32 gMonPalette_Toxicroak[] = INCBIN_U32("graphics/pokemon/toxicroak/normal.gbapal.lz"); + const u16 gMonPalette_Toxicroak[] = INCBIN_U16("graphics/pokemon/toxicroak/normal.gbapal"); const u32 gMonBackPic_Toxicroak[] = INCBIN_U32("graphics/pokemon/toxicroak/back.4bpp.lz"); - const u32 gMonShinyPalette_Toxicroak[] = INCBIN_U32("graphics/pokemon/toxicroak/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Toxicroak[] = INCBIN_U16("graphics/pokemon/toxicroak/shiny.gbapal"); const u8 gMonIcon_Toxicroak[] = INCBIN_U8("graphics/pokemon/toxicroak/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Toxicroak[] = INCBIN_U8("graphics/pokemon/toxicroak/footprint.1bpp"); @@ -15245,8 +15245,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Toxicroak[] = INCBIN_U16("graphics/pokemon/toxicroak/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Toxicroak[] = INCBIN_U16("graphics/pokemon/toxicroak/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -15261,9 +15261,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_CARNIVINE const u32 gMonFrontPic_Carnivine[] = INCBIN_U32("graphics/pokemon/carnivine/anim_front.4bpp.lz"); - const u32 gMonPalette_Carnivine[] = INCBIN_U32("graphics/pokemon/carnivine/normal.gbapal.lz"); + const u16 gMonPalette_Carnivine[] = INCBIN_U16("graphics/pokemon/carnivine/normal.gbapal"); const u32 gMonBackPic_Carnivine[] = INCBIN_U32("graphics/pokemon/carnivine/back.4bpp.lz"); - const u32 gMonShinyPalette_Carnivine[] = INCBIN_U32("graphics/pokemon/carnivine/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Carnivine[] = INCBIN_U16("graphics/pokemon/carnivine/shiny.gbapal"); const u8 gMonIcon_Carnivine[] = INCBIN_U8("graphics/pokemon/carnivine/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Carnivine[] = INCBIN_U8("graphics/pokemon/carnivine/footprint.1bpp"); @@ -15271,17 +15271,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Carnivine[] = INCBIN_U16("graphics/pokemon/carnivine/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Carnivine[] = INCBIN_U16("graphics/pokemon/carnivine/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_CARNIVINE #if P_FAMILY_FINNEON const u32 gMonFrontPic_Finneon[] = INCBIN_U32("graphics/pokemon/finneon/anim_front.4bpp.lz"); - const u32 gMonPalette_Finneon[] = INCBIN_U32("graphics/pokemon/finneon/normal.gbapal.lz"); + const u16 gMonPalette_Finneon[] = INCBIN_U16("graphics/pokemon/finneon/normal.gbapal"); const u32 gMonBackPic_Finneon[] = INCBIN_U32("graphics/pokemon/finneon/back.4bpp.lz"); - const u32 gMonShinyPalette_Finneon[] = INCBIN_U32("graphics/pokemon/finneon/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Finneon[] = INCBIN_U16("graphics/pokemon/finneon/shiny.gbapal"); const u8 gMonIcon_Finneon[] = INCBIN_U8("graphics/pokemon/finneon/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Finneon[] = INCBIN_U8("graphics/pokemon/finneon/footprint.1bpp"); @@ -15289,8 +15289,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Finneon[] = INCBIN_U16("graphics/pokemon/finneon/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Finneon[] = INCBIN_U16("graphics/pokemon/finneon/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -15303,9 +15303,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #endif //P_GENDER_DIFFERENCES const u32 gMonFrontPic_Lumineon[] = INCBIN_U32("graphics/pokemon/lumineon/anim_front.4bpp.lz"); - const u32 gMonPalette_Lumineon[] = INCBIN_U32("graphics/pokemon/lumineon/normal.gbapal.lz"); + const u16 gMonPalette_Lumineon[] = INCBIN_U16("graphics/pokemon/lumineon/normal.gbapal"); const u32 gMonBackPic_Lumineon[] = INCBIN_U32("graphics/pokemon/lumineon/back.4bpp.lz"); - const u32 gMonShinyPalette_Lumineon[] = INCBIN_U32("graphics/pokemon/lumineon/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Lumineon[] = INCBIN_U16("graphics/pokemon/lumineon/shiny.gbapal"); const u8 gMonIcon_Lumineon[] = INCBIN_U8("graphics/pokemon/lumineon/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Lumineon[] = INCBIN_U8("graphics/pokemon/lumineon/footprint.1bpp"); @@ -15313,8 +15313,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Lumineon[] = INCBIN_U16("graphics/pokemon/lumineon/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Lumineon[] = INCBIN_U16("graphics/pokemon/lumineon/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -15329,9 +15329,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_SNOVER const u32 gMonFrontPic_Snover[] = INCBIN_U32("graphics/pokemon/snover/anim_front.4bpp.lz"); - const u32 gMonPalette_Snover[] = INCBIN_U32("graphics/pokemon/snover/normal.gbapal.lz"); + const u16 gMonPalette_Snover[] = INCBIN_U16("graphics/pokemon/snover/normal.gbapal"); const u32 gMonBackPic_Snover[] = INCBIN_U32("graphics/pokemon/snover/back.4bpp.lz"); - const u32 gMonShinyPalette_Snover[] = INCBIN_U32("graphics/pokemon/snover/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Snover[] = INCBIN_U16("graphics/pokemon/snover/shiny.gbapal"); const u8 gMonIcon_Snover[] = INCBIN_U8("graphics/pokemon/snover/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Snover[] = INCBIN_U8("graphics/pokemon/snover/footprint.1bpp"); @@ -15339,8 +15339,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Snover[] = INCBIN_U16("graphics/pokemon/snover/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Snover[] = INCBIN_U16("graphics/pokemon/snover/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -15353,9 +15353,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #endif //P_GENDER_DIFFERENCES const u32 gMonFrontPic_Abomasnow[] = INCBIN_U32("graphics/pokemon/abomasnow/anim_front.4bpp.lz"); - const u32 gMonPalette_Abomasnow[] = INCBIN_U32("graphics/pokemon/abomasnow/normal.gbapal.lz"); + const u16 gMonPalette_Abomasnow[] = INCBIN_U16("graphics/pokemon/abomasnow/normal.gbapal"); const u32 gMonBackPic_Abomasnow[] = INCBIN_U32("graphics/pokemon/abomasnow/back.4bpp.lz"); - const u32 gMonShinyPalette_Abomasnow[] = INCBIN_U32("graphics/pokemon/abomasnow/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Abomasnow[] = INCBIN_U16("graphics/pokemon/abomasnow/shiny.gbapal"); const u8 gMonIcon_Abomasnow[] = INCBIN_U8("graphics/pokemon/abomasnow/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Abomasnow[] = INCBIN_U8("graphics/pokemon/abomasnow/footprint.1bpp"); @@ -15363,8 +15363,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Abomasnow[] = INCBIN_U16("graphics/pokemon/abomasnow/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Abomasnow[] = INCBIN_U16("graphics/pokemon/abomasnow/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -15377,15 +15377,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_MEGA_EVOLUTIONS const u32 gMonFrontPic_AbomasnowMega[] = INCBIN_U32("graphics/pokemon/abomasnow/mega/front.4bpp.lz"); - const u32 gMonPalette_AbomasnowMega[] = INCBIN_U32("graphics/pokemon/abomasnow/mega/normal.gbapal.lz"); + const u16 gMonPalette_AbomasnowMega[] = INCBIN_U16("graphics/pokemon/abomasnow/mega/normal.gbapal"); 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 u16 gMonShinyPalette_AbomasnowMega[] = INCBIN_U16("graphics/pokemon/abomasnow/mega/shiny.gbapal"); const u8 gMonIcon_AbomasnowMega[] = INCBIN_U8("graphics/pokemon/abomasnow/mega/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS 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"); + const u16 gOverworldPalette_AbomasnowMega[] = INCBIN_U16("graphics/pokemon/abomasnow/mega/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_AbomasnowMega[] = INCBIN_U16("graphics/pokemon/abomasnow/mega/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS #endif //P_MEGA_EVOLUTIONS @@ -15393,42 +15393,42 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_ROTOM const u32 gMonFrontPic_Rotom[] = INCBIN_U32("graphics/pokemon/rotom/anim_front.4bpp.lz"); - const u32 gMonPalette_Rotom[] = INCBIN_U32("graphics/pokemon/rotom/normal.gbapal.lz"); + const u16 gMonPalette_Rotom[] = INCBIN_U16("graphics/pokemon/rotom/normal.gbapal"); const u32 gMonBackPic_Rotom[] = INCBIN_U32("graphics/pokemon/rotom/back.4bpp.lz"); - const u32 gMonShinyPalette_Rotom[] = INCBIN_U32("graphics/pokemon/rotom/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Rotom[] = INCBIN_U16("graphics/pokemon/rotom/shiny.gbapal"); const u8 gMonIcon_Rotom[] = INCBIN_U8("graphics/pokemon/rotom/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Rotom[] = INCBIN_U8("graphics/pokemon/rotom/normal/footprint.1bpp"); #endif //P_FOOTPRINTS const u32 gMonFrontPic_RotomHeat[] = INCBIN_U32("graphics/pokemon/rotom/heat/anim_front.4bpp.lz"); - const u32 gMonPalette_RotomHeat[] = INCBIN_U32("graphics/pokemon/rotom/heat/normal.gbapal.lz"); + const u16 gMonPalette_RotomHeat[] = INCBIN_U16("graphics/pokemon/rotom/heat/normal.gbapal"); const u32 gMonBackPic_RotomHeat[] = INCBIN_U32("graphics/pokemon/rotom/heat/back.4bpp.lz"); - const u32 gMonShinyPalette_RotomHeat[] = INCBIN_U32("graphics/pokemon/rotom/heat/shiny.gbapal.lz"); + const u16 gMonShinyPalette_RotomHeat[] = INCBIN_U16("graphics/pokemon/rotom/heat/shiny.gbapal"); const u8 gMonIcon_RotomHeat[] = INCBIN_U8("graphics/pokemon/rotom/heat/icon.4bpp"); const u32 gMonFrontPic_RotomWash[] = INCBIN_U32("graphics/pokemon/rotom/wash/anim_front.4bpp.lz"); - const u32 gMonPalette_RotomWash[] = INCBIN_U32("graphics/pokemon/rotom/wash/normal.gbapal.lz"); + const u16 gMonPalette_RotomWash[] = INCBIN_U16("graphics/pokemon/rotom/wash/normal.gbapal"); const u32 gMonBackPic_RotomWash[] = INCBIN_U32("graphics/pokemon/rotom/wash/back.4bpp.lz"); - const u32 gMonShinyPalette_RotomWash[] = INCBIN_U32("graphics/pokemon/rotom/wash/shiny.gbapal.lz"); + const u16 gMonShinyPalette_RotomWash[] = INCBIN_U16("graphics/pokemon/rotom/wash/shiny.gbapal"); const u8 gMonIcon_RotomWash[] = INCBIN_U8("graphics/pokemon/rotom/wash/icon.4bpp"); const u32 gMonFrontPic_RotomFrost[] = INCBIN_U32("graphics/pokemon/rotom/frost/anim_front.4bpp.lz"); - const u32 gMonPalette_RotomFrost[] = INCBIN_U32("graphics/pokemon/rotom/frost/normal.gbapal.lz"); + const u16 gMonPalette_RotomFrost[] = INCBIN_U16("graphics/pokemon/rotom/frost/normal.gbapal"); const u32 gMonBackPic_RotomFrost[] = INCBIN_U32("graphics/pokemon/rotom/frost/back.4bpp.lz"); - const u32 gMonShinyPalette_RotomFrost[] = INCBIN_U32("graphics/pokemon/rotom/frost/shiny.gbapal.lz"); + const u16 gMonShinyPalette_RotomFrost[] = INCBIN_U16("graphics/pokemon/rotom/frost/shiny.gbapal"); const u8 gMonIcon_RotomFrost[] = INCBIN_U8("graphics/pokemon/rotom/frost/icon.4bpp"); const u32 gMonFrontPic_RotomFan[] = INCBIN_U32("graphics/pokemon/rotom/fan/anim_front.4bpp.lz"); - const u32 gMonPalette_RotomFan[] = INCBIN_U32("graphics/pokemon/rotom/fan/normal.gbapal.lz"); + const u16 gMonPalette_RotomFan[] = INCBIN_U16("graphics/pokemon/rotom/fan/normal.gbapal"); const u32 gMonBackPic_RotomFan[] = INCBIN_U32("graphics/pokemon/rotom/fan/back.4bpp.lz"); - const u32 gMonShinyPalette_RotomFan[] = INCBIN_U32("graphics/pokemon/rotom/fan/shiny.gbapal.lz"); + const u16 gMonShinyPalette_RotomFan[] = INCBIN_U16("graphics/pokemon/rotom/fan/shiny.gbapal"); const u8 gMonIcon_RotomFan[] = INCBIN_U8("graphics/pokemon/rotom/fan/icon.4bpp"); const u32 gMonFrontPic_RotomMow[] = INCBIN_U32("graphics/pokemon/rotom/mow/anim_front.4bpp.lz"); - const u32 gMonPalette_RotomMow[] = INCBIN_U32("graphics/pokemon/rotom/mow/normal.gbapal.lz"); + const u16 gMonPalette_RotomMow[] = INCBIN_U16("graphics/pokemon/rotom/mow/normal.gbapal"); 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 u16 gMonShinyPalette_RotomMow[] = INCBIN_U16("graphics/pokemon/rotom/mow/shiny.gbapal"); const u8 gMonIcon_RotomMow[] = INCBIN_U8("graphics/pokemon/rotom/mow/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS @@ -15439,27 +15439,27 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ 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"); + const u16 gOverworldPalette_Rotom[] = INCBIN_U16("graphics/pokemon/rotom/overworld_normal.gbapal"); + const u16 gOverworldPalette_RotomHeat[] = INCBIN_U16("graphics/pokemon/rotom/heat/overworld_normal.gbapal"); + const u16 gOverworldPalette_RotomWash[] = INCBIN_U16("graphics/pokemon/rotom/wash/overworld_normal.gbapal"); + const u16 gOverworldPalette_RotomFrost[] = INCBIN_U16("graphics/pokemon/rotom/frost/overworld_normal.gbapal"); + const u16 gOverworldPalette_RotomFan[] = INCBIN_U16("graphics/pokemon/rotom/fan/overworld_normal.gbapal"); + const u16 gOverworldPalette_RotomMow[] = INCBIN_U16("graphics/pokemon/rotom/mow/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Rotom[] = INCBIN_U16("graphics/pokemon/rotom/overworld_shiny.gbapal"); + const u16 gShinyOverworldPalette_RotomHeat[] = INCBIN_U16("graphics/pokemon/rotom/heat/overworld_shiny.gbapal"); + const u16 gShinyOverworldPalette_RotomWash[] = INCBIN_U16("graphics/pokemon/rotom/wash/overworld_shiny.gbapal"); + const u16 gShinyOverworldPalette_RotomFrost[] = INCBIN_U16("graphics/pokemon/rotom/frost/overworld_shiny.gbapal"); + const u16 gShinyOverworldPalette_RotomFan[] = INCBIN_U16("graphics/pokemon/rotom/fan/overworld_shiny.gbapal"); + const u16 gShinyOverworldPalette_RotomMow[] = INCBIN_U16("graphics/pokemon/rotom/mow/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_ROTOM #if P_FAMILY_UXIE const u32 gMonFrontPic_Uxie[] = INCBIN_U32("graphics/pokemon/uxie/anim_front.4bpp.lz"); - const u32 gMonPalette_Uxie[] = INCBIN_U32("graphics/pokemon/uxie/normal.gbapal.lz"); + const u16 gMonPalette_Uxie[] = INCBIN_U16("graphics/pokemon/uxie/normal.gbapal"); const u32 gMonBackPic_Uxie[] = INCBIN_U32("graphics/pokemon/uxie/back.4bpp.lz"); - const u32 gMonShinyPalette_Uxie[] = INCBIN_U32("graphics/pokemon/uxie/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Uxie[] = INCBIN_U16("graphics/pokemon/uxie/shiny.gbapal"); const u8 gMonIcon_Uxie[] = INCBIN_U8("graphics/pokemon/uxie/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Uxie[] = INCBIN_U8("graphics/pokemon/uxie/footprint.1bpp"); @@ -15467,17 +15467,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Uxie[] = INCBIN_U16("graphics/pokemon/uxie/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Uxie[] = INCBIN_U16("graphics/pokemon/uxie/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_UXIE #if P_FAMILY_MESPRIT const u32 gMonFrontPic_Mesprit[] = INCBIN_U32("graphics/pokemon/mesprit/anim_front.4bpp.lz"); - const u32 gMonPalette_Mesprit[] = INCBIN_U32("graphics/pokemon/mesprit/normal.gbapal.lz"); + const u16 gMonPalette_Mesprit[] = INCBIN_U16("graphics/pokemon/mesprit/normal.gbapal"); const u32 gMonBackPic_Mesprit[] = INCBIN_U32("graphics/pokemon/mesprit/back.4bpp.lz"); - const u32 gMonShinyPalette_Mesprit[] = INCBIN_U32("graphics/pokemon/mesprit/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Mesprit[] = INCBIN_U16("graphics/pokemon/mesprit/shiny.gbapal"); const u8 gMonIcon_Mesprit[] = INCBIN_U8("graphics/pokemon/mesprit/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Mesprit[] = INCBIN_U8("graphics/pokemon/mesprit/footprint.1bpp"); @@ -15485,17 +15485,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Mesprit[] = INCBIN_U16("graphics/pokemon/mesprit/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Mesprit[] = INCBIN_U16("graphics/pokemon/mesprit/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_MESPRIT #if P_FAMILY_AZELF const u32 gMonFrontPic_Azelf[] = INCBIN_U32("graphics/pokemon/azelf/anim_front.4bpp.lz"); - const u32 gMonPalette_Azelf[] = INCBIN_U32("graphics/pokemon/azelf/normal.gbapal.lz"); + const u16 gMonPalette_Azelf[] = INCBIN_U16("graphics/pokemon/azelf/normal.gbapal"); const u32 gMonBackPic_Azelf[] = INCBIN_U32("graphics/pokemon/azelf/back.4bpp.lz"); - const u32 gMonShinyPalette_Azelf[] = INCBIN_U32("graphics/pokemon/azelf/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Azelf[] = INCBIN_U16("graphics/pokemon/azelf/shiny.gbapal"); const u8 gMonIcon_Azelf[] = INCBIN_U8("graphics/pokemon/azelf/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Azelf[] = INCBIN_U8("graphics/pokemon/azelf/footprint.1bpp"); @@ -15503,17 +15503,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Azelf[] = INCBIN_U16("graphics/pokemon/azelf/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Azelf[] = INCBIN_U16("graphics/pokemon/azelf/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_AZELF #if P_FAMILY_DIALGA const u32 gMonFrontPic_Dialga[] = INCBIN_U32("graphics/pokemon/dialga/anim_front.4bpp.lz"); - const u32 gMonPalette_Dialga[] = INCBIN_U32("graphics/pokemon/dialga/normal.gbapal.lz"); + const u16 gMonPalette_Dialga[] = INCBIN_U16("graphics/pokemon/dialga/normal.gbapal"); const u32 gMonBackPic_Dialga[] = INCBIN_U32("graphics/pokemon/dialga/back.4bpp.lz"); - const u32 gMonShinyPalette_Dialga[] = INCBIN_U32("graphics/pokemon/dialga/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Dialga[] = INCBIN_U16("graphics/pokemon/dialga/shiny.gbapal"); const u8 gMonIcon_Dialga[] = INCBIN_U8("graphics/pokemon/dialga/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Dialga[] = INCBIN_U8("graphics/pokemon/dialga/footprint.1bpp"); @@ -15521,30 +15521,30 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Dialga[] = INCBIN_U16("graphics/pokemon/dialga/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Dialga[] = INCBIN_U16("graphics/pokemon/dialga/overworld_shiny.gbapal"); #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 u16 gMonPalette_DialgaOrigin[] = INCBIN_U16("graphics/pokemon/dialga/origin/normal.gbapal"); 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 u16 gMonShinyPalette_DialgaOrigin[] = INCBIN_U16("graphics/pokemon/dialga/origin/shiny.gbapal"); 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"); + const u16 gOverworldPalette_DialgaOrigin[] = INCBIN_U16("graphics/pokemon/dialga/origin/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_DialgaOrigin[] = INCBIN_U16("graphics/pokemon/dialga/origin/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_DIALGA #if P_FAMILY_PALKIA const u32 gMonFrontPic_Palkia[] = INCBIN_U32("graphics/pokemon/palkia/anim_front.4bpp.lz"); - const u32 gMonPalette_Palkia[] = INCBIN_U32("graphics/pokemon/palkia/normal.gbapal.lz"); + const u16 gMonPalette_Palkia[] = INCBIN_U16("graphics/pokemon/palkia/normal.gbapal"); const u32 gMonBackPic_Palkia[] = INCBIN_U32("graphics/pokemon/palkia/back.4bpp.lz"); - const u32 gMonShinyPalette_Palkia[] = INCBIN_U32("graphics/pokemon/palkia/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Palkia[] = INCBIN_U16("graphics/pokemon/palkia/shiny.gbapal"); const u8 gMonIcon_Palkia[] = INCBIN_U8("graphics/pokemon/palkia/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Palkia[] = INCBIN_U8("graphics/pokemon/palkia/footprint.1bpp"); @@ -15552,30 +15552,30 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Palkia[] = INCBIN_U16("graphics/pokemon/palkia/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Palkia[] = INCBIN_U16("graphics/pokemon/palkia/overworld_shiny.gbapal"); #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 u16 gMonPalette_PalkiaOrigin[] = INCBIN_U16("graphics/pokemon/palkia/origin/normal.gbapal"); 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 u16 gMonShinyPalette_PalkiaOrigin[] = INCBIN_U16("graphics/pokemon/palkia/origin/shiny.gbapal"); 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"); + const u16 gOverworldPalette_PalkiaOrigin[] = INCBIN_U16("graphics/pokemon/palkia/origin/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_PalkiaOrigin[] = INCBIN_U16("graphics/pokemon/palkia/origin/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_PALKIA #if P_FAMILY_HEATRAN const u32 gMonFrontPic_Heatran[] = INCBIN_U32("graphics/pokemon/heatran/anim_front.4bpp.lz"); - const u32 gMonPalette_Heatran[] = INCBIN_U32("graphics/pokemon/heatran/normal.gbapal.lz"); + const u16 gMonPalette_Heatran[] = INCBIN_U16("graphics/pokemon/heatran/normal.gbapal"); const u32 gMonBackPic_Heatran[] = INCBIN_U32("graphics/pokemon/heatran/back.4bpp.lz"); - const u32 gMonShinyPalette_Heatran[] = INCBIN_U32("graphics/pokemon/heatran/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Heatran[] = INCBIN_U16("graphics/pokemon/heatran/shiny.gbapal"); const u8 gMonIcon_Heatran[] = INCBIN_U8("graphics/pokemon/heatran/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Heatran[] = INCBIN_U8("graphics/pokemon/heatran/footprint.1bpp"); @@ -15583,17 +15583,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Heatran[] = INCBIN_U16("graphics/pokemon/heatran/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Heatran[] = INCBIN_U16("graphics/pokemon/heatran/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_HEATRAN #if P_FAMILY_REGIGIGAS const u32 gMonFrontPic_Regigigas[] = INCBIN_U32("graphics/pokemon/regigigas/anim_front.4bpp.lz"); - const u32 gMonPalette_Regigigas[] = INCBIN_U32("graphics/pokemon/regigigas/normal.gbapal.lz"); + const u16 gMonPalette_Regigigas[] = INCBIN_U16("graphics/pokemon/regigigas/normal.gbapal"); const u32 gMonBackPic_Regigigas[] = INCBIN_U32("graphics/pokemon/regigigas/back.4bpp.lz"); - const u32 gMonShinyPalette_Regigigas[] = INCBIN_U32("graphics/pokemon/regigigas/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Regigigas[] = INCBIN_U16("graphics/pokemon/regigigas/shiny.gbapal"); const u8 gMonIcon_Regigigas[] = INCBIN_U8("graphics/pokemon/regigigas/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Regigigas[] = INCBIN_U8("graphics/pokemon/regigigas/footprint.1bpp"); @@ -15601,17 +15601,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Regigigas[] = INCBIN_U16("graphics/pokemon/regigigas/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Regigigas[] = INCBIN_U16("graphics/pokemon/regigigas/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_REGIGIGAS #if P_FAMILY_GIRATINA const u32 gMonFrontPic_GiratinaAltered[] = INCBIN_U32("graphics/pokemon/giratina/anim_front.4bpp.lz"); - const u32 gMonPalette_GiratinaAltered[] = INCBIN_U32("graphics/pokemon/giratina/normal.gbapal.lz"); + const u16 gMonPalette_GiratinaAltered[] = INCBIN_U16("graphics/pokemon/giratina/normal.gbapal"); const u32 gMonBackPic_GiratinaAltered[] = INCBIN_U32("graphics/pokemon/giratina/back.4bpp.lz"); - const u32 gMonShinyPalette_GiratinaAltered[] = INCBIN_U32("graphics/pokemon/giratina/shiny.gbapal.lz"); + const u16 gMonShinyPalette_GiratinaAltered[] = INCBIN_U16("graphics/pokemon/giratina/shiny.gbapal"); const u8 gMonIcon_GiratinaAltered[] = INCBIN_U8("graphics/pokemon/giratina/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_GiratinaAltered[] = INCBIN_U8("graphics/pokemon/giratina/footprint.1bpp"); @@ -15619,15 +15619,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_GiratinaAltered[] = INCBIN_U16("graphics/pokemon/giratina/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_GiratinaAltered[] = INCBIN_U16("graphics/pokemon/giratina/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_GiratinaOrigin[] = INCBIN_U16("graphics/pokemon/giratina/origin/normal.gbapal"); const u32 gMonBackPic_GiratinaOrigin[] = INCBIN_U32("graphics/pokemon/giratina/origin/back.4bpp.lz"); - const u32 gMonShinyPalette_GiratinaOrigin[] = INCBIN_U32("graphics/pokemon/giratina/origin/shiny.gbapal.lz"); + const u16 gMonShinyPalette_GiratinaOrigin[] = INCBIN_U16("graphics/pokemon/giratina/origin/shiny.gbapal"); const u8 gMonIcon_GiratinaOrigin[] = INCBIN_U8("graphics/pokemon/giratina/origin/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_GiratinaOrigin[] = INCBIN_U8("graphics/pokemon/giratina/origin/footprint.1bpp"); @@ -15635,17 +15635,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_GiratinaOrigin[] = INCBIN_U16("graphics/pokemon/giratina/origin/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_GiratinaOrigin[] = INCBIN_U16("graphics/pokemon/giratina/origin/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_GIRATINA #if P_FAMILY_CRESSELIA const u32 gMonFrontPic_Cresselia[] = INCBIN_U32("graphics/pokemon/cresselia/anim_front.4bpp.lz"); - const u32 gMonPalette_Cresselia[] = INCBIN_U32("graphics/pokemon/cresselia/normal.gbapal.lz"); + const u16 gMonPalette_Cresselia[] = INCBIN_U16("graphics/pokemon/cresselia/normal.gbapal"); const u32 gMonBackPic_Cresselia[] = INCBIN_U32("graphics/pokemon/cresselia/back.4bpp.lz"); - const u32 gMonShinyPalette_Cresselia[] = INCBIN_U32("graphics/pokemon/cresselia/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Cresselia[] = INCBIN_U16("graphics/pokemon/cresselia/shiny.gbapal"); const u8 gMonIcon_Cresselia[] = INCBIN_U8("graphics/pokemon/cresselia/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Cresselia[] = INCBIN_U8("graphics/pokemon/cresselia/footprint.1bpp"); @@ -15653,17 +15653,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Cresselia[] = INCBIN_U16("graphics/pokemon/cresselia/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Cresselia[] = INCBIN_U16("graphics/pokemon/cresselia/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_CRESSELIA #if P_FAMILY_MANAPHY const u32 gMonFrontPic_Phione[] = INCBIN_U32("graphics/pokemon/phione/anim_front.4bpp.lz"); - const u32 gMonPalette_Phione[] = INCBIN_U32("graphics/pokemon/phione/normal.gbapal.lz"); + const u16 gMonPalette_Phione[] = INCBIN_U16("graphics/pokemon/phione/normal.gbapal"); const u32 gMonBackPic_Phione[] = INCBIN_U32("graphics/pokemon/phione/back.4bpp.lz"); - const u32 gMonShinyPalette_Phione[] = INCBIN_U32("graphics/pokemon/phione/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Phione[] = INCBIN_U16("graphics/pokemon/phione/shiny.gbapal"); const u8 gMonIcon_Phione[] = INCBIN_U8("graphics/pokemon/phione/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Phione[] = INCBIN_U8("graphics/pokemon/phione/footprint.1bpp"); @@ -15671,15 +15671,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Phione[] = INCBIN_U16("graphics/pokemon/phione/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Phione[] = INCBIN_U16("graphics/pokemon/phione/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Manaphy[] = INCBIN_U16("graphics/pokemon/manaphy/normal.gbapal"); const u32 gMonBackPic_Manaphy[] = INCBIN_U32("graphics/pokemon/manaphy/back.4bpp.lz"); - const u32 gMonShinyPalette_Manaphy[] = INCBIN_U32("graphics/pokemon/manaphy/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Manaphy[] = INCBIN_U16("graphics/pokemon/manaphy/shiny.gbapal"); const u8 gMonIcon_Manaphy[] = INCBIN_U8("graphics/pokemon/manaphy/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Manaphy[] = INCBIN_U8("graphics/pokemon/manaphy/footprint.1bpp"); @@ -15687,17 +15687,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Manaphy[] = INCBIN_U16("graphics/pokemon/manaphy/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Manaphy[] = INCBIN_U16("graphics/pokemon/manaphy/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_MANAPHY #if P_FAMILY_DARKRAI const u32 gMonFrontPic_Darkrai[] = INCBIN_U32("graphics/pokemon/darkrai/anim_front.4bpp.lz"); - const u32 gMonPalette_Darkrai[] = INCBIN_U32("graphics/pokemon/darkrai/normal.gbapal.lz"); + const u16 gMonPalette_Darkrai[] = INCBIN_U16("graphics/pokemon/darkrai/normal.gbapal"); const u32 gMonBackPic_Darkrai[] = INCBIN_U32("graphics/pokemon/darkrai/back.4bpp.lz"); - const u32 gMonShinyPalette_Darkrai[] = INCBIN_U32("graphics/pokemon/darkrai/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Darkrai[] = INCBIN_U16("graphics/pokemon/darkrai/shiny.gbapal"); const u8 gMonIcon_Darkrai[] = INCBIN_U8("graphics/pokemon/darkrai/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Darkrai[] = INCBIN_U8("graphics/pokemon/darkrai/footprint.1bpp"); @@ -15705,17 +15705,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Darkrai[] = INCBIN_U16("graphics/pokemon/darkrai/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Darkrai[] = INCBIN_U16("graphics/pokemon/darkrai/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_DARKRAI #if P_FAMILY_SHAYMIN const u32 gMonFrontPic_ShayminLand[] = INCBIN_U32("graphics/pokemon/shaymin/anim_front.4bpp.lz"); - const u32 gMonPalette_ShayminLand[] = INCBIN_U32("graphics/pokemon/shaymin/normal.gbapal.lz"); + const u16 gMonPalette_ShayminLand[] = INCBIN_U16("graphics/pokemon/shaymin/normal.gbapal"); const u32 gMonBackPic_ShayminLand[] = INCBIN_U32("graphics/pokemon/shaymin/back.4bpp.lz"); - const u32 gMonShinyPalette_ShayminLand[] = INCBIN_U32("graphics/pokemon/shaymin/shiny.gbapal.lz"); + const u16 gMonShinyPalette_ShayminLand[] = INCBIN_U16("graphics/pokemon/shaymin/shiny.gbapal"); const u8 gMonIcon_ShayminLand[] = INCBIN_U8("graphics/pokemon/shaymin/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Shaymin[] = INCBIN_U8("graphics/pokemon/shaymin/footprint.1bpp"); @@ -15723,21 +15723,21 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_ShayminLand[] = INCBIN_U16("graphics/pokemon/shaymin/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_ShayminLand[] = INCBIN_U16("graphics/pokemon/shaymin/overworld_shiny.gbapal"); #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 u16 gMonPalette_ShayminSky[] = INCBIN_U16("graphics/pokemon/shaymin/sky/normal.gbapal"); 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 u16 gMonShinyPalette_ShayminSky[] = INCBIN_U16("graphics/pokemon/shaymin/sky/shiny.gbapal"); 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"); + const u16 gOverworldPalette_ShayminSky[] = INCBIN_U16("graphics/pokemon/shaymin/sky/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_ShayminSky[] = INCBIN_U16("graphics/pokemon/shaymin/sky/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SHAYMIN @@ -15749,60 +15749,60 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ 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 u16 gMonPalette_ArceusNormal[] = INCBIN_U16("graphics/pokemon/arceus/normal.gbapal"); + const u16 gMonShinyPalette_ArceusNormal[] = INCBIN_U16("graphics/pokemon/arceus/shiny.gbapal"); 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"); + const u16 gMonPalette_ArceusFighting[] = INCBIN_U16("graphics/pokemon/arceus/fighting/normal.gbapal"); + const u16 gMonShinyPalette_ArceusFighting[] = INCBIN_U16("graphics/pokemon/arceus/fighting/shiny.gbapal"); - const u32 gMonPalette_ArceusFlying[] = INCBIN_U32("graphics/pokemon/arceus/flying/normal.gbapal.lz"); - const u32 gMonShinyPalette_ArceusFlying[] = INCBIN_U32("graphics/pokemon/arceus/flying/shiny.gbapal.lz"); + const u16 gMonPalette_ArceusFlying[] = INCBIN_U16("graphics/pokemon/arceus/flying/normal.gbapal"); + const u16 gMonShinyPalette_ArceusFlying[] = INCBIN_U16("graphics/pokemon/arceus/flying/shiny.gbapal"); - const u32 gMonPalette_ArceusPoison[] = INCBIN_U32("graphics/pokemon/arceus/poison/normal.gbapal.lz"); - const u32 gMonShinyPalette_ArceusPoison[] = INCBIN_U32("graphics/pokemon/arceus/poison/shiny.gbapal.lz"); + const u16 gMonPalette_ArceusPoison[] = INCBIN_U16("graphics/pokemon/arceus/poison/normal.gbapal"); + const u16 gMonShinyPalette_ArceusPoison[] = INCBIN_U16("graphics/pokemon/arceus/poison/shiny.gbapal"); - const u32 gMonPalette_ArceusGround[] = INCBIN_U32("graphics/pokemon/arceus/ground/normal.gbapal.lz"); - const u32 gMonShinyPalette_ArceusGround[] = INCBIN_U32("graphics/pokemon/arceus/ground/shiny.gbapal.lz"); + const u16 gMonPalette_ArceusGround[] = INCBIN_U16("graphics/pokemon/arceus/ground/normal.gbapal"); + const u16 gMonShinyPalette_ArceusGround[] = INCBIN_U16("graphics/pokemon/arceus/ground/shiny.gbapal"); - const u32 gMonPalette_ArceusRock[] = INCBIN_U32("graphics/pokemon/arceus/rock/normal.gbapal.lz"); - const u32 gMonShinyPalette_ArceusRock[] = INCBIN_U32("graphics/pokemon/arceus/rock/shiny.gbapal.lz"); + const u16 gMonPalette_ArceusRock[] = INCBIN_U16("graphics/pokemon/arceus/rock/normal.gbapal"); + const u16 gMonShinyPalette_ArceusRock[] = INCBIN_U16("graphics/pokemon/arceus/rock/shiny.gbapal"); - const u32 gMonPalette_ArceusBug[] = INCBIN_U32("graphics/pokemon/arceus/bug/normal.gbapal.lz"); - const u32 gMonShinyPalette_ArceusBug[] = INCBIN_U32("graphics/pokemon/arceus/bug/shiny.gbapal.lz"); + const u16 gMonPalette_ArceusBug[] = INCBIN_U16("graphics/pokemon/arceus/bug/normal.gbapal"); + const u16 gMonShinyPalette_ArceusBug[] = INCBIN_U16("graphics/pokemon/arceus/bug/shiny.gbapal"); - const u32 gMonPalette_ArceusGhost[] = INCBIN_U32("graphics/pokemon/arceus/ghost/normal.gbapal.lz"); - const u32 gMonShinyPalette_ArceusGhost[] = INCBIN_U32("graphics/pokemon/arceus/ghost/shiny.gbapal.lz"); + const u16 gMonPalette_ArceusGhost[] = INCBIN_U16("graphics/pokemon/arceus/ghost/normal.gbapal"); + const u16 gMonShinyPalette_ArceusGhost[] = INCBIN_U16("graphics/pokemon/arceus/ghost/shiny.gbapal"); - const u32 gMonPalette_ArceusSteel[] = INCBIN_U32("graphics/pokemon/arceus/steel/normal.gbapal.lz"); - const u32 gMonShinyPalette_ArceusSteel[] = INCBIN_U32("graphics/pokemon/arceus/steel/shiny.gbapal.lz"); + const u16 gMonPalette_ArceusSteel[] = INCBIN_U16("graphics/pokemon/arceus/steel/normal.gbapal"); + const u16 gMonShinyPalette_ArceusSteel[] = INCBIN_U16("graphics/pokemon/arceus/steel/shiny.gbapal"); - const u32 gMonPalette_ArceusFire[] = INCBIN_U32("graphics/pokemon/arceus/fire/normal.gbapal.lz"); - const u32 gMonShinyPalette_ArceusFire[] = INCBIN_U32("graphics/pokemon/arceus/fire/shiny.gbapal.lz"); + const u16 gMonPalette_ArceusFire[] = INCBIN_U16("graphics/pokemon/arceus/fire/normal.gbapal"); + const u16 gMonShinyPalette_ArceusFire[] = INCBIN_U16("graphics/pokemon/arceus/fire/shiny.gbapal"); - const u32 gMonPalette_ArceusWater[] = INCBIN_U32("graphics/pokemon/arceus/water/normal.gbapal.lz"); - const u32 gMonShinyPalette_ArceusWater[] = INCBIN_U32("graphics/pokemon/arceus/water/shiny.gbapal.lz"); + const u16 gMonPalette_ArceusWater[] = INCBIN_U16("graphics/pokemon/arceus/water/normal.gbapal"); + const u16 gMonShinyPalette_ArceusWater[] = INCBIN_U16("graphics/pokemon/arceus/water/shiny.gbapal"); - const u32 gMonPalette_ArceusGrass[] = INCBIN_U32("graphics/pokemon/arceus/grass/normal.gbapal.lz"); - const u32 gMonShinyPalette_ArceusGrass[] = INCBIN_U32("graphics/pokemon/arceus/grass/shiny.gbapal.lz"); + const u16 gMonPalette_ArceusGrass[] = INCBIN_U16("graphics/pokemon/arceus/grass/normal.gbapal"); + const u16 gMonShinyPalette_ArceusGrass[] = INCBIN_U16("graphics/pokemon/arceus/grass/shiny.gbapal"); - const u32 gMonPalette_ArceusElectric[] = INCBIN_U32("graphics/pokemon/arceus/electric/normal.gbapal.lz"); - const u32 gMonShinyPalette_ArceusElectric[] = INCBIN_U32("graphics/pokemon/arceus/electric/shiny.gbapal.lz"); + const u16 gMonPalette_ArceusElectric[] = INCBIN_U16("graphics/pokemon/arceus/electric/normal.gbapal"); + const u16 gMonShinyPalette_ArceusElectric[] = INCBIN_U16("graphics/pokemon/arceus/electric/shiny.gbapal"); - const u32 gMonPalette_ArceusPsychic[] = INCBIN_U32("graphics/pokemon/arceus/psychic/normal.gbapal.lz"); - const u32 gMonShinyPalette_ArceusPsychic[] = INCBIN_U32("graphics/pokemon/arceus/psychic/shiny.gbapal.lz"); + const u16 gMonPalette_ArceusPsychic[] = INCBIN_U16("graphics/pokemon/arceus/psychic/normal.gbapal"); + const u16 gMonShinyPalette_ArceusPsychic[] = INCBIN_U16("graphics/pokemon/arceus/psychic/shiny.gbapal"); - const u32 gMonPalette_ArceusIce[] = INCBIN_U32("graphics/pokemon/arceus/ice/normal.gbapal.lz"); - const u32 gMonShinyPalette_ArceusIce[] = INCBIN_U32("graphics/pokemon/arceus/ice/shiny.gbapal.lz"); + const u16 gMonPalette_ArceusIce[] = INCBIN_U16("graphics/pokemon/arceus/ice/normal.gbapal"); + const u16 gMonShinyPalette_ArceusIce[] = INCBIN_U16("graphics/pokemon/arceus/ice/shiny.gbapal"); - const u32 gMonPalette_ArceusDragon[] = INCBIN_U32("graphics/pokemon/arceus/dragon/normal.gbapal.lz"); - const u32 gMonShinyPalette_ArceusDragon[] = INCBIN_U32("graphics/pokemon/arceus/dragon/shiny.gbapal.lz"); + const u16 gMonPalette_ArceusDragon[] = INCBIN_U16("graphics/pokemon/arceus/dragon/normal.gbapal"); + const u16 gMonShinyPalette_ArceusDragon[] = INCBIN_U16("graphics/pokemon/arceus/dragon/shiny.gbapal"); - const u32 gMonPalette_ArceusDark[] = INCBIN_U32("graphics/pokemon/arceus/dark/normal.gbapal.lz"); - const u32 gMonShinyPalette_ArceusDark[] = INCBIN_U32("graphics/pokemon/arceus/dark/shiny.gbapal.lz"); + const u16 gMonPalette_ArceusDark[] = INCBIN_U16("graphics/pokemon/arceus/dark/normal.gbapal"); + const u16 gMonShinyPalette_ArceusDark[] = INCBIN_U16("graphics/pokemon/arceus/dark/shiny.gbapal"); - 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"); + const u16 gMonPalette_ArceusFairy[] = INCBIN_U16("graphics/pokemon/arceus/fairy/normal.gbapal"); + const u16 gMonShinyPalette_ArceusFairy[] = INCBIN_U16("graphics/pokemon/arceus/fairy/shiny.gbapal"); #if P_ARCEUS_UNIQUE_FORM_ICONS >= GEN_9 const u8 gMonIcon_ArceusFighting[] = INCBIN_U8("graphics/pokemon/arceus/fighting/icon.4bpp"); @@ -15843,51 +15843,51 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ 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"); + const u16 gOverworldPalette_ArceusNormal[] = INCBIN_U16("graphics/pokemon/arceus/overworld_normal.gbapal"); + const u16 gOverworldPalette_ArceusFighting[] = INCBIN_U16("graphics/pokemon/arceus/fighting/overworld_normal.gbapal"); + const u16 gOverworldPalette_ArceusFlying[] = INCBIN_U16("graphics/pokemon/arceus/flying/overworld_normal.gbapal"); + const u16 gOverworldPalette_ArceusPoison[] = INCBIN_U16("graphics/pokemon/arceus/poison/overworld_normal.gbapal"); + const u16 gOverworldPalette_ArceusGround[] = INCBIN_U16("graphics/pokemon/arceus/ground/overworld_normal.gbapal"); + const u16 gOverworldPalette_ArceusRock[] = INCBIN_U16("graphics/pokemon/arceus/rock/overworld_normal.gbapal"); + const u16 gOverworldPalette_ArceusBug[] = INCBIN_U16("graphics/pokemon/arceus/bug/overworld_normal.gbapal"); + const u16 gOverworldPalette_ArceusGhost[] = INCBIN_U16("graphics/pokemon/arceus/ghost/overworld_normal.gbapal"); + const u16 gOverworldPalette_ArceusSteel[] = INCBIN_U16("graphics/pokemon/arceus/steel/overworld_normal.gbapal"); + const u16 gOverworldPalette_ArceusFire[] = INCBIN_U16("graphics/pokemon/arceus/fire/overworld_normal.gbapal"); + const u16 gOverworldPalette_ArceusWater[] = INCBIN_U16("graphics/pokemon/arceus/water/overworld_normal.gbapal"); + const u16 gOverworldPalette_ArceusGrass[] = INCBIN_U16("graphics/pokemon/arceus/grass/overworld_normal.gbapal"); + const u16 gOverworldPalette_ArceusElectric[] = INCBIN_U16("graphics/pokemon/arceus/electric/overworld_normal.gbapal"); + const u16 gOverworldPalette_ArceusPsychic[] = INCBIN_U16("graphics/pokemon/arceus/psychic/overworld_normal.gbapal"); + const u16 gOverworldPalette_ArceusIce[] = INCBIN_U16("graphics/pokemon/arceus/ice/overworld_normal.gbapal"); + const u16 gOverworldPalette_ArceusDragon[] = INCBIN_U16("graphics/pokemon/arceus/dragon/overworld_normal.gbapal"); + const u16 gOverworldPalette_ArceusDark[] = INCBIN_U16("graphics/pokemon/arceus/dark/overworld_normal.gbapal"); + const u16 gOverworldPalette_ArceusFairy[] = INCBIN_U16("graphics/pokemon/arceus/fairy/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_ArceusNormal[] = INCBIN_U16("graphics/pokemon/arceus/overworld_shiny.gbapal"); + const u16 gShinyOverworldPalette_ArceusFighting[] = INCBIN_U16("graphics/pokemon/arceus/fighting/overworld_shiny.gbapal"); + const u16 gShinyOverworldPalette_ArceusFlying[] = INCBIN_U16("graphics/pokemon/arceus/flying/overworld_shiny.gbapal"); + const u16 gShinyOverworldPalette_ArceusPoison[] = INCBIN_U16("graphics/pokemon/arceus/poison/overworld_shiny.gbapal"); + const u16 gShinyOverworldPalette_ArceusGround[] = INCBIN_U16("graphics/pokemon/arceus/ground/overworld_shiny.gbapal"); + const u16 gShinyOverworldPalette_ArceusRock[] = INCBIN_U16("graphics/pokemon/arceus/rock/overworld_shiny.gbapal"); + const u16 gShinyOverworldPalette_ArceusBug[] = INCBIN_U16("graphics/pokemon/arceus/bug/overworld_shiny.gbapal"); + const u16 gShinyOverworldPalette_ArceusGhost[] = INCBIN_U16("graphics/pokemon/arceus/ghost/overworld_shiny.gbapal"); + const u16 gShinyOverworldPalette_ArceusSteel[] = INCBIN_U16("graphics/pokemon/arceus/steel/overworld_shiny.gbapal"); + const u16 gShinyOverworldPalette_ArceusFire[] = INCBIN_U16("graphics/pokemon/arceus/fire/overworld_shiny.gbapal"); + const u16 gShinyOverworldPalette_ArceusWater[] = INCBIN_U16("graphics/pokemon/arceus/water/overworld_shiny.gbapal"); + const u16 gShinyOverworldPalette_ArceusGrass[] = INCBIN_U16("graphics/pokemon/arceus/grass/overworld_shiny.gbapal"); + const u16 gShinyOverworldPalette_ArceusElectric[] = INCBIN_U16("graphics/pokemon/arceus/electric/overworld_shiny.gbapal"); + const u16 gShinyOverworldPalette_ArceusPsychic[] = INCBIN_U16("graphics/pokemon/arceus/psychic/overworld_shiny.gbapal"); + const u16 gShinyOverworldPalette_ArceusIce[] = INCBIN_U16("graphics/pokemon/arceus/ice/overworld_shiny.gbapal"); + const u16 gShinyOverworldPalette_ArceusDragon[] = INCBIN_U16("graphics/pokemon/arceus/dragon/overworld_shiny.gbapal"); + const u16 gShinyOverworldPalette_ArceusDark[] = INCBIN_U16("graphics/pokemon/arceus/dark/overworld_shiny.gbapal"); + const u16 gShinyOverworldPalette_ArceusFairy[] = INCBIN_U16("graphics/pokemon/arceus/fairy/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_ARCEUS #if P_FAMILY_VICTINI const u32 gMonFrontPic_Victini[] = INCBIN_U32("graphics/pokemon/victini/anim_front.4bpp.lz"); - const u32 gMonPalette_Victini[] = INCBIN_U32("graphics/pokemon/victini/normal.gbapal.lz"); + const u16 gMonPalette_Victini[] = INCBIN_U16("graphics/pokemon/victini/normal.gbapal"); const u32 gMonBackPic_Victini[] = INCBIN_U32("graphics/pokemon/victini/back.4bpp.lz"); - const u32 gMonShinyPalette_Victini[] = INCBIN_U32("graphics/pokemon/victini/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Victini[] = INCBIN_U16("graphics/pokemon/victini/shiny.gbapal"); const u8 gMonIcon_Victini[] = INCBIN_U8("graphics/pokemon/victini/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Victini[] = INCBIN_U8("graphics/pokemon/victini/footprint.1bpp"); @@ -15895,17 +15895,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Victini[] = INCBIN_U16("graphics/pokemon/victini/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Victini[] = INCBIN_U16("graphics/pokemon/victini/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_VICTINI #if P_FAMILY_SNIVY const u32 gMonFrontPic_Snivy[] = INCBIN_U32("graphics/pokemon/snivy/anim_front.4bpp.lz"); - const u32 gMonPalette_Snivy[] = INCBIN_U32("graphics/pokemon/snivy/normal.gbapal.lz"); + const u16 gMonPalette_Snivy[] = INCBIN_U16("graphics/pokemon/snivy/normal.gbapal"); const u32 gMonBackPic_Snivy[] = INCBIN_U32("graphics/pokemon/snivy/back.4bpp.lz"); - const u32 gMonShinyPalette_Snivy[] = INCBIN_U32("graphics/pokemon/snivy/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Snivy[] = INCBIN_U16("graphics/pokemon/snivy/shiny.gbapal"); const u8 gMonIcon_Snivy[] = INCBIN_U8("graphics/pokemon/snivy/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Snivy[] = INCBIN_U8("graphics/pokemon/snivy/footprint.1bpp"); @@ -15913,15 +15913,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Snivy[] = INCBIN_U16("graphics/pokemon/snivy/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Snivy[] = INCBIN_U16("graphics/pokemon/snivy/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Servine[] = INCBIN_U16("graphics/pokemon/servine/normal.gbapal"); const u32 gMonBackPic_Servine[] = INCBIN_U32("graphics/pokemon/servine/back.4bpp.lz"); - const u32 gMonShinyPalette_Servine[] = INCBIN_U32("graphics/pokemon/servine/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Servine[] = INCBIN_U16("graphics/pokemon/servine/shiny.gbapal"); const u8 gMonIcon_Servine[] = INCBIN_U8("graphics/pokemon/servine/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Servine[] = INCBIN_U8("graphics/pokemon/servine/footprint.1bpp"); @@ -15929,15 +15929,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Servine[] = INCBIN_U16("graphics/pokemon/servine/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Servine[] = INCBIN_U16("graphics/pokemon/servine/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Serperior[] = INCBIN_U16("graphics/pokemon/serperior/normal.gbapal"); const u32 gMonBackPic_Serperior[] = INCBIN_U32("graphics/pokemon/serperior/back.4bpp.lz"); - const u32 gMonShinyPalette_Serperior[] = INCBIN_U32("graphics/pokemon/serperior/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Serperior[] = INCBIN_U16("graphics/pokemon/serperior/shiny.gbapal"); const u8 gMonIcon_Serperior[] = INCBIN_U8("graphics/pokemon/serperior/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Serperior[] = INCBIN_U8("graphics/pokemon/serperior/footprint.1bpp"); @@ -15945,17 +15945,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Serperior[] = INCBIN_U16("graphics/pokemon/serperior/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Serperior[] = INCBIN_U16("graphics/pokemon/serperior/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SNIVY #if P_FAMILY_TEPIG const u32 gMonFrontPic_Tepig[] = INCBIN_U32("graphics/pokemon/tepig/anim_front.4bpp.lz"); - const u32 gMonPalette_Tepig[] = INCBIN_U32("graphics/pokemon/tepig/normal.gbapal.lz"); + const u16 gMonPalette_Tepig[] = INCBIN_U16("graphics/pokemon/tepig/normal.gbapal"); const u32 gMonBackPic_Tepig[] = INCBIN_U32("graphics/pokemon/tepig/back.4bpp.lz"); - const u32 gMonShinyPalette_Tepig[] = INCBIN_U32("graphics/pokemon/tepig/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Tepig[] = INCBIN_U16("graphics/pokemon/tepig/shiny.gbapal"); const u8 gMonIcon_Tepig[] = INCBIN_U8("graphics/pokemon/tepig/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Tepig[] = INCBIN_U8("graphics/pokemon/tepig/footprint.1bpp"); @@ -15963,15 +15963,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Tepig[] = INCBIN_U16("graphics/pokemon/tepig/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Tepig[] = INCBIN_U16("graphics/pokemon/tepig/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Pignite[] = INCBIN_U16("graphics/pokemon/pignite/normal.gbapal"); const u32 gMonBackPic_Pignite[] = INCBIN_U32("graphics/pokemon/pignite/back.4bpp.lz"); - const u32 gMonShinyPalette_Pignite[] = INCBIN_U32("graphics/pokemon/pignite/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Pignite[] = INCBIN_U16("graphics/pokemon/pignite/shiny.gbapal"); const u8 gMonIcon_Pignite[] = INCBIN_U8("graphics/pokemon/pignite/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Pignite[] = INCBIN_U8("graphics/pokemon/pignite/footprint.1bpp"); @@ -15979,15 +15979,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Pignite[] = INCBIN_U16("graphics/pokemon/pignite/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Pignite[] = INCBIN_U16("graphics/pokemon/pignite/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Emboar[] = INCBIN_U16("graphics/pokemon/emboar/normal.gbapal"); const u32 gMonBackPic_Emboar[] = INCBIN_U32("graphics/pokemon/emboar/back.4bpp.lz"); - const u32 gMonShinyPalette_Emboar[] = INCBIN_U32("graphics/pokemon/emboar/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Emboar[] = INCBIN_U16("graphics/pokemon/emboar/shiny.gbapal"); const u8 gMonIcon_Emboar[] = INCBIN_U8("graphics/pokemon/emboar/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Emboar[] = INCBIN_U8("graphics/pokemon/emboar/footprint.1bpp"); @@ -15995,17 +15995,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Emboar[] = INCBIN_U16("graphics/pokemon/emboar/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Emboar[] = INCBIN_U16("graphics/pokemon/emboar/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_TEPIG #if P_FAMILY_OSHAWOTT const u32 gMonFrontPic_Oshawott[] = INCBIN_U32("graphics/pokemon/oshawott/anim_front.4bpp.lz"); - const u32 gMonPalette_Oshawott[] = INCBIN_U32("graphics/pokemon/oshawott/normal.gbapal.lz"); + const u16 gMonPalette_Oshawott[] = INCBIN_U16("graphics/pokemon/oshawott/normal.gbapal"); const u32 gMonBackPic_Oshawott[] = INCBIN_U32("graphics/pokemon/oshawott/back.4bpp.lz"); - const u32 gMonShinyPalette_Oshawott[] = INCBIN_U32("graphics/pokemon/oshawott/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Oshawott[] = INCBIN_U16("graphics/pokemon/oshawott/shiny.gbapal"); const u8 gMonIcon_Oshawott[] = INCBIN_U8("graphics/pokemon/oshawott/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Oshawott[] = INCBIN_U8("graphics/pokemon/oshawott/footprint.1bpp"); @@ -16013,15 +16013,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Oshawott[] = INCBIN_U16("graphics/pokemon/oshawott/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Oshawott[] = INCBIN_U16("graphics/pokemon/oshawott/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Dewott[] = INCBIN_U16("graphics/pokemon/dewott/normal.gbapal"); const u32 gMonBackPic_Dewott[] = INCBIN_U32("graphics/pokemon/dewott/back.4bpp.lz"); - const u32 gMonShinyPalette_Dewott[] = INCBIN_U32("graphics/pokemon/dewott/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Dewott[] = INCBIN_U16("graphics/pokemon/dewott/shiny.gbapal"); const u8 gMonIcon_Dewott[] = INCBIN_U8("graphics/pokemon/dewott/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Dewott[] = INCBIN_U8("graphics/pokemon/dewott/footprint.1bpp"); @@ -16029,15 +16029,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Dewott[] = INCBIN_U16("graphics/pokemon/dewott/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Dewott[] = INCBIN_U16("graphics/pokemon/dewott/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Samurott[] = INCBIN_U16("graphics/pokemon/samurott/normal.gbapal"); const u32 gMonBackPic_Samurott[] = INCBIN_U32("graphics/pokemon/samurott/back.4bpp.lz"); - const u32 gMonShinyPalette_Samurott[] = INCBIN_U32("graphics/pokemon/samurott/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Samurott[] = INCBIN_U16("graphics/pokemon/samurott/shiny.gbapal"); const u8 gMonIcon_Samurott[] = INCBIN_U8("graphics/pokemon/samurott/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Samurott[] = INCBIN_U8("graphics/pokemon/samurott/footprint.1bpp"); @@ -16045,22 +16045,22 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Samurott[] = INCBIN_U16("graphics/pokemon/samurott/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Samurott[] = INCBIN_U16("graphics/pokemon/samurott/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if P_HISUIAN_FORMS const u32 gMonFrontPic_SamurottHisui[] = INCBIN_U32("graphics/pokemon/samurott/hisui/front.4bpp.lz"); - const u32 gMonPalette_SamurottHisui[] = INCBIN_U32("graphics/pokemon/samurott/hisui/normal.gbapal.lz"); + const u16 gMonPalette_SamurottHisui[] = INCBIN_U16("graphics/pokemon/samurott/hisui/normal.gbapal"); const u32 gMonBackPic_SamurottHisui[] = INCBIN_U32("graphics/pokemon/samurott/hisui/back.4bpp.lz"); - const u32 gMonShinyPalette_SamurottHisui[] = INCBIN_U32("graphics/pokemon/samurott/hisui/shiny.gbapal.lz"); + const u16 gMonShinyPalette_SamurottHisui[] = INCBIN_U16("graphics/pokemon/samurott/hisui/shiny.gbapal"); const u8 gMonIcon_SamurottHisui[] = INCBIN_U8("graphics/pokemon/samurott/hisui/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS const u32 gObjectEventPic_SamurottHisui[] = INCBIN_COMP("graphics/pokemon/samurott/hisui/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - const u32 gOverworldPalette_SamurottHisui[] = INCBIN_U32("graphics/pokemon/samurott/hisui/overworld_normal.gbapal.lz"); - const u32 gShinyOverworldPalette_SamurottHisui[] = INCBIN_U32("graphics/pokemon/samurott/hisui/overworld_shiny.gbapal.lz"); + const u16 gOverworldPalette_SamurottHisui[] = INCBIN_U16("graphics/pokemon/samurott/hisui/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_SamurottHisui[] = INCBIN_U16("graphics/pokemon/samurott/hisui/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_HISUIAN_FORMS @@ -16068,9 +16068,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_PATRAT const u32 gMonFrontPic_Patrat[] = INCBIN_U32("graphics/pokemon/patrat/anim_front.4bpp.lz"); - const u32 gMonPalette_Patrat[] = INCBIN_U32("graphics/pokemon/patrat/normal.gbapal.lz"); + const u16 gMonPalette_Patrat[] = INCBIN_U16("graphics/pokemon/patrat/normal.gbapal"); const u32 gMonBackPic_Patrat[] = INCBIN_U32("graphics/pokemon/patrat/back.4bpp.lz"); - const u32 gMonShinyPalette_Patrat[] = INCBIN_U32("graphics/pokemon/patrat/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Patrat[] = INCBIN_U16("graphics/pokemon/patrat/shiny.gbapal"); const u8 gMonIcon_Patrat[] = INCBIN_U8("graphics/pokemon/patrat/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Patrat[] = INCBIN_U8("graphics/pokemon/patrat/footprint.1bpp"); @@ -16078,15 +16078,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Patrat[] = INCBIN_U16("graphics/pokemon/patrat/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Patrat[] = INCBIN_U16("graphics/pokemon/patrat/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Watchog[] = INCBIN_U16("graphics/pokemon/watchog/normal.gbapal"); const u32 gMonBackPic_Watchog[] = INCBIN_U32("graphics/pokemon/watchog/back.4bpp.lz"); - const u32 gMonShinyPalette_Watchog[] = INCBIN_U32("graphics/pokemon/watchog/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Watchog[] = INCBIN_U16("graphics/pokemon/watchog/shiny.gbapal"); const u8 gMonIcon_Watchog[] = INCBIN_U8("graphics/pokemon/watchog/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Watchog[] = INCBIN_U8("graphics/pokemon/watchog/footprint.1bpp"); @@ -16094,17 +16094,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Watchog[] = INCBIN_U16("graphics/pokemon/watchog/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Watchog[] = INCBIN_U16("graphics/pokemon/watchog/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_PATRAT #if P_FAMILY_LILLIPUP const u32 gMonFrontPic_Lillipup[] = INCBIN_U32("graphics/pokemon/lillipup/anim_front.4bpp.lz"); - const u32 gMonPalette_Lillipup[] = INCBIN_U32("graphics/pokemon/lillipup/normal.gbapal.lz"); + const u16 gMonPalette_Lillipup[] = INCBIN_U16("graphics/pokemon/lillipup/normal.gbapal"); const u32 gMonBackPic_Lillipup[] = INCBIN_U32("graphics/pokemon/lillipup/back.4bpp.lz"); - const u32 gMonShinyPalette_Lillipup[] = INCBIN_U32("graphics/pokemon/lillipup/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Lillipup[] = INCBIN_U16("graphics/pokemon/lillipup/shiny.gbapal"); const u8 gMonIcon_Lillipup[] = INCBIN_U8("graphics/pokemon/lillipup/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Lillipup[] = INCBIN_U8("graphics/pokemon/lillipup/footprint.1bpp"); @@ -16112,15 +16112,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Lillipup[] = INCBIN_U16("graphics/pokemon/lillipup/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Lillipup[] = INCBIN_U16("graphics/pokemon/lillipup/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Herdier[] = INCBIN_U16("graphics/pokemon/herdier/normal.gbapal"); const u32 gMonBackPic_Herdier[] = INCBIN_U32("graphics/pokemon/herdier/back.4bpp.lz"); - const u32 gMonShinyPalette_Herdier[] = INCBIN_U32("graphics/pokemon/herdier/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Herdier[] = INCBIN_U16("graphics/pokemon/herdier/shiny.gbapal"); const u8 gMonIcon_Herdier[] = INCBIN_U8("graphics/pokemon/herdier/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Herdier[] = INCBIN_U8("graphics/pokemon/herdier/footprint.1bpp"); @@ -16128,15 +16128,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Herdier[] = INCBIN_U16("graphics/pokemon/herdier/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Herdier[] = INCBIN_U16("graphics/pokemon/herdier/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Stoutland[] = INCBIN_U16("graphics/pokemon/stoutland/normal.gbapal"); const u32 gMonBackPic_Stoutland[] = INCBIN_U32("graphics/pokemon/stoutland/back.4bpp.lz"); - const u32 gMonShinyPalette_Stoutland[] = INCBIN_U32("graphics/pokemon/stoutland/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Stoutland[] = INCBIN_U16("graphics/pokemon/stoutland/shiny.gbapal"); const u8 gMonIcon_Stoutland[] = INCBIN_U8("graphics/pokemon/stoutland/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Stoutland[] = INCBIN_U8("graphics/pokemon/stoutland/footprint.1bpp"); @@ -16144,17 +16144,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Stoutland[] = INCBIN_U16("graphics/pokemon/stoutland/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Stoutland[] = INCBIN_U16("graphics/pokemon/stoutland/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_LILLIPUP #if P_FAMILY_PURRLOIN const u32 gMonFrontPic_Purrloin[] = INCBIN_U32("graphics/pokemon/purrloin/anim_front.4bpp.lz"); - const u32 gMonPalette_Purrloin[] = INCBIN_U32("graphics/pokemon/purrloin/normal.gbapal.lz"); + const u16 gMonPalette_Purrloin[] = INCBIN_U16("graphics/pokemon/purrloin/normal.gbapal"); const u32 gMonBackPic_Purrloin[] = INCBIN_U32("graphics/pokemon/purrloin/back.4bpp.lz"); - const u32 gMonShinyPalette_Purrloin[] = INCBIN_U32("graphics/pokemon/purrloin/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Purrloin[] = INCBIN_U16("graphics/pokemon/purrloin/shiny.gbapal"); const u8 gMonIcon_Purrloin[] = INCBIN_U8("graphics/pokemon/purrloin/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Purrloin[] = INCBIN_U8("graphics/pokemon/purrloin/footprint.1bpp"); @@ -16162,15 +16162,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Purrloin[] = INCBIN_U16("graphics/pokemon/purrloin/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Purrloin[] = INCBIN_U16("graphics/pokemon/purrloin/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Liepard[] = INCBIN_U16("graphics/pokemon/liepard/normal.gbapal"); const u32 gMonBackPic_Liepard[] = INCBIN_U32("graphics/pokemon/liepard/back.4bpp.lz"); - const u32 gMonShinyPalette_Liepard[] = INCBIN_U32("graphics/pokemon/liepard/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Liepard[] = INCBIN_U16("graphics/pokemon/liepard/shiny.gbapal"); const u8 gMonIcon_Liepard[] = INCBIN_U8("graphics/pokemon/liepard/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Liepard[] = INCBIN_U8("graphics/pokemon/liepard/footprint.1bpp"); @@ -16178,17 +16178,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Liepard[] = INCBIN_U16("graphics/pokemon/liepard/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Liepard[] = INCBIN_U16("graphics/pokemon/liepard/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_PURRLOIN #if P_FAMILY_PANSAGE const u32 gMonFrontPic_Pansage[] = INCBIN_U32("graphics/pokemon/pansage/anim_front.4bpp.lz"); - const u32 gMonPalette_Pansage[] = INCBIN_U32("graphics/pokemon/pansage/normal.gbapal.lz"); + const u16 gMonPalette_Pansage[] = INCBIN_U16("graphics/pokemon/pansage/normal.gbapal"); const u32 gMonBackPic_Pansage[] = INCBIN_U32("graphics/pokemon/pansage/back.4bpp.lz"); - const u32 gMonShinyPalette_Pansage[] = INCBIN_U32("graphics/pokemon/pansage/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Pansage[] = INCBIN_U16("graphics/pokemon/pansage/shiny.gbapal"); const u8 gMonIcon_Pansage[] = INCBIN_U8("graphics/pokemon/pansage/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Pansage[] = INCBIN_U8("graphics/pokemon/pansage/footprint.1bpp"); @@ -16196,15 +16196,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Pansage[] = INCBIN_U16("graphics/pokemon/pansage/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Pansage[] = INCBIN_U16("graphics/pokemon/pansage/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Simisage[] = INCBIN_U16("graphics/pokemon/simisage/normal.gbapal"); const u32 gMonBackPic_Simisage[] = INCBIN_U32("graphics/pokemon/simisage/back.4bpp.lz"); - const u32 gMonShinyPalette_Simisage[] = INCBIN_U32("graphics/pokemon/simisage/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Simisage[] = INCBIN_U16("graphics/pokemon/simisage/shiny.gbapal"); const u8 gMonIcon_Simisage[] = INCBIN_U8("graphics/pokemon/simisage/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Simisage[] = INCBIN_U8("graphics/pokemon/simisage/footprint.1bpp"); @@ -16212,17 +16212,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Simisage[] = INCBIN_U16("graphics/pokemon/simisage/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Simisage[] = INCBIN_U16("graphics/pokemon/simisage/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_PANSAGE #if P_FAMILY_PANSEAR const u32 gMonFrontPic_Pansear[] = INCBIN_U32("graphics/pokemon/pansear/anim_front.4bpp.lz"); - const u32 gMonPalette_Pansear[] = INCBIN_U32("graphics/pokemon/pansear/normal.gbapal.lz"); + const u16 gMonPalette_Pansear[] = INCBIN_U16("graphics/pokemon/pansear/normal.gbapal"); const u32 gMonBackPic_Pansear[] = INCBIN_U32("graphics/pokemon/pansear/back.4bpp.lz"); - const u32 gMonShinyPalette_Pansear[] = INCBIN_U32("graphics/pokemon/pansear/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Pansear[] = INCBIN_U16("graphics/pokemon/pansear/shiny.gbapal"); const u8 gMonIcon_Pansear[] = INCBIN_U8("graphics/pokemon/pansear/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Pansear[] = INCBIN_U8("graphics/pokemon/pansear/footprint.1bpp"); @@ -16230,15 +16230,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Pansear[] = INCBIN_U16("graphics/pokemon/pansear/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Pansear[] = INCBIN_U16("graphics/pokemon/pansear/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Simisear[] = INCBIN_U16("graphics/pokemon/simisear/normal.gbapal"); const u32 gMonBackPic_Simisear[] = INCBIN_U32("graphics/pokemon/simisear/back.4bpp.lz"); - const u32 gMonShinyPalette_Simisear[] = INCBIN_U32("graphics/pokemon/simisear/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Simisear[] = INCBIN_U16("graphics/pokemon/simisear/shiny.gbapal"); const u8 gMonIcon_Simisear[] = INCBIN_U8("graphics/pokemon/simisear/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Simisear[] = INCBIN_U8("graphics/pokemon/simisear/footprint.1bpp"); @@ -16246,17 +16246,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Simisear[] = INCBIN_U16("graphics/pokemon/simisear/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Simisear[] = INCBIN_U16("graphics/pokemon/simisear/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_PANSEAR #if P_FAMILY_PANPOUR const u32 gMonFrontPic_Panpour[] = INCBIN_U32("graphics/pokemon/panpour/anim_front.4bpp.lz"); - const u32 gMonPalette_Panpour[] = INCBIN_U32("graphics/pokemon/panpour/normal.gbapal.lz"); + const u16 gMonPalette_Panpour[] = INCBIN_U16("graphics/pokemon/panpour/normal.gbapal"); const u32 gMonBackPic_Panpour[] = INCBIN_U32("graphics/pokemon/panpour/back.4bpp.lz"); - const u32 gMonShinyPalette_Panpour[] = INCBIN_U32("graphics/pokemon/panpour/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Panpour[] = INCBIN_U16("graphics/pokemon/panpour/shiny.gbapal"); const u8 gMonIcon_Panpour[] = INCBIN_U8("graphics/pokemon/panpour/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Panpour[] = INCBIN_U8("graphics/pokemon/panpour/footprint.1bpp"); @@ -16264,15 +16264,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Panpour[] = INCBIN_U16("graphics/pokemon/panpour/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Panpour[] = INCBIN_U16("graphics/pokemon/panpour/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Simipour[] = INCBIN_U16("graphics/pokemon/simipour/normal.gbapal"); const u32 gMonBackPic_Simipour[] = INCBIN_U32("graphics/pokemon/simipour/back.4bpp.lz"); - const u32 gMonShinyPalette_Simipour[] = INCBIN_U32("graphics/pokemon/simipour/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Simipour[] = INCBIN_U16("graphics/pokemon/simipour/shiny.gbapal"); const u8 gMonIcon_Simipour[] = INCBIN_U8("graphics/pokemon/simipour/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Simipour[] = INCBIN_U8("graphics/pokemon/simipour/footprint.1bpp"); @@ -16280,17 +16280,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Simipour[] = INCBIN_U16("graphics/pokemon/simipour/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Simipour[] = INCBIN_U16("graphics/pokemon/simipour/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_PANPOUR #if P_FAMILY_MUNNA const u32 gMonFrontPic_Munna[] = INCBIN_U32("graphics/pokemon/munna/anim_front.4bpp.lz"); - const u32 gMonPalette_Munna[] = INCBIN_U32("graphics/pokemon/munna/normal.gbapal.lz"); + const u16 gMonPalette_Munna[] = INCBIN_U16("graphics/pokemon/munna/normal.gbapal"); const u32 gMonBackPic_Munna[] = INCBIN_U32("graphics/pokemon/munna/back.4bpp.lz"); - const u32 gMonShinyPalette_Munna[] = INCBIN_U32("graphics/pokemon/munna/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Munna[] = INCBIN_U16("graphics/pokemon/munna/shiny.gbapal"); const u8 gMonIcon_Munna[] = INCBIN_U8("graphics/pokemon/munna/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Munna[] = INCBIN_U8("graphics/pokemon/munna/footprint.1bpp"); @@ -16298,15 +16298,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Munna[] = INCBIN_U16("graphics/pokemon/munna/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Munna[] = INCBIN_U16("graphics/pokemon/munna/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Musharna[] = INCBIN_U16("graphics/pokemon/musharna/normal.gbapal"); const u32 gMonBackPic_Musharna[] = INCBIN_U32("graphics/pokemon/musharna/back.4bpp.lz"); - const u32 gMonShinyPalette_Musharna[] = INCBIN_U32("graphics/pokemon/musharna/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Musharna[] = INCBIN_U16("graphics/pokemon/musharna/shiny.gbapal"); const u8 gMonIcon_Musharna[] = INCBIN_U8("graphics/pokemon/musharna/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Musharna[] = INCBIN_U8("graphics/pokemon/musharna/footprint.1bpp"); @@ -16314,17 +16314,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Musharna[] = INCBIN_U16("graphics/pokemon/musharna/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Musharna[] = INCBIN_U16("graphics/pokemon/musharna/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_MUNNA #if P_FAMILY_PIDOVE const u32 gMonFrontPic_Pidove[] = INCBIN_U32("graphics/pokemon/pidove/anim_front.4bpp.lz"); - const u32 gMonPalette_Pidove[] = INCBIN_U32("graphics/pokemon/pidove/normal.gbapal.lz"); + const u16 gMonPalette_Pidove[] = INCBIN_U16("graphics/pokemon/pidove/normal.gbapal"); const u32 gMonBackPic_Pidove[] = INCBIN_U32("graphics/pokemon/pidove/back.4bpp.lz"); - const u32 gMonShinyPalette_Pidove[] = INCBIN_U32("graphics/pokemon/pidove/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Pidove[] = INCBIN_U16("graphics/pokemon/pidove/shiny.gbapal"); const u8 gMonIcon_Pidove[] = INCBIN_U8("graphics/pokemon/pidove/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Pidove[] = INCBIN_U8("graphics/pokemon/pidove/footprint.1bpp"); @@ -16332,15 +16332,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Pidove[] = INCBIN_U16("graphics/pokemon/pidove/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Pidove[] = INCBIN_U16("graphics/pokemon/pidove/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Tranquill[] = INCBIN_U16("graphics/pokemon/tranquill/normal.gbapal"); const u32 gMonBackPic_Tranquill[] = INCBIN_U32("graphics/pokemon/tranquill/back.4bpp.lz"); - const u32 gMonShinyPalette_Tranquill[] = INCBIN_U32("graphics/pokemon/tranquill/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Tranquill[] = INCBIN_U16("graphics/pokemon/tranquill/shiny.gbapal"); const u8 gMonIcon_Tranquill[] = INCBIN_U8("graphics/pokemon/tranquill/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Tranquill[] = INCBIN_U8("graphics/pokemon/tranquill/footprint.1bpp"); @@ -16348,15 +16348,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Tranquill[] = INCBIN_U16("graphics/pokemon/tranquill/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Tranquill[] = INCBIN_U16("graphics/pokemon/tranquill/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Unfezant[] = INCBIN_U16("graphics/pokemon/unfezant/normal.gbapal"); const u32 gMonBackPic_Unfezant[] = INCBIN_U32("graphics/pokemon/unfezant/back.4bpp.lz"); - const u32 gMonShinyPalette_Unfezant[] = INCBIN_U32("graphics/pokemon/unfezant/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Unfezant[] = INCBIN_U16("graphics/pokemon/unfezant/shiny.gbapal"); const u8 gMonIcon_Unfezant[] = INCBIN_U8("graphics/pokemon/unfezant/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Unfezant[] = INCBIN_U8("graphics/pokemon/unfezant/footprint.1bpp"); @@ -16364,22 +16364,22 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Unfezant[] = INCBIN_U16("graphics/pokemon/unfezant/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Unfezant[] = INCBIN_U16("graphics/pokemon/unfezant/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if P_GENDER_DIFFERENCES 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 u16 gMonPalette_UnfezantF[] = INCBIN_U16("graphics/pokemon/unfezant/normalf.gbapal"); 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 u16 gMonShinyPalette_UnfezantF[] = INCBIN_U16("graphics/pokemon/unfezant/shinyf.gbapal"); 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/overworldf.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - const u32 gOverworldPalette_UnfezantF[] = INCBIN_U32("graphics/pokemon/unfezant/overworld_normalf.gbapal.lz"); - const u32 gShinyOverworldPalette_UnfezantF[] = INCBIN_U32("graphics/pokemon/unfezant/overworld_shinyf.gbapal.lz"); + const u16 gOverworldPalette_UnfezantF[] = INCBIN_U16("graphics/pokemon/unfezant/overworld_normalf.gbapal"); + const u16 gShinyOverworldPalette_UnfezantF[] = INCBIN_U16("graphics/pokemon/unfezant/overworld_shinyf.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GENDER_DIFFERENCES @@ -16387,9 +16387,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_BLITZLE const u32 gMonFrontPic_Blitzle[] = INCBIN_U32("graphics/pokemon/blitzle/anim_front.4bpp.lz"); - const u32 gMonPalette_Blitzle[] = INCBIN_U32("graphics/pokemon/blitzle/normal.gbapal.lz"); + const u16 gMonPalette_Blitzle[] = INCBIN_U16("graphics/pokemon/blitzle/normal.gbapal"); const u32 gMonBackPic_Blitzle[] = INCBIN_U32("graphics/pokemon/blitzle/back.4bpp.lz"); - const u32 gMonShinyPalette_Blitzle[] = INCBIN_U32("graphics/pokemon/blitzle/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Blitzle[] = INCBIN_U16("graphics/pokemon/blitzle/shiny.gbapal"); const u8 gMonIcon_Blitzle[] = INCBIN_U8("graphics/pokemon/blitzle/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Blitzle[] = INCBIN_U8("graphics/pokemon/blitzle/footprint.1bpp"); @@ -16397,15 +16397,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Blitzle[] = INCBIN_U16("graphics/pokemon/blitzle/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Blitzle[] = INCBIN_U16("graphics/pokemon/blitzle/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Zebstrika[] = INCBIN_U16("graphics/pokemon/zebstrika/normal.gbapal"); const u32 gMonBackPic_Zebstrika[] = INCBIN_U32("graphics/pokemon/zebstrika/back.4bpp.lz"); - const u32 gMonShinyPalette_Zebstrika[] = INCBIN_U32("graphics/pokemon/zebstrika/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Zebstrika[] = INCBIN_U16("graphics/pokemon/zebstrika/shiny.gbapal"); const u8 gMonIcon_Zebstrika[] = INCBIN_U8("graphics/pokemon/zebstrika/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Zebstrika[] = INCBIN_U8("graphics/pokemon/zebstrika/footprint.1bpp"); @@ -16413,17 +16413,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Zebstrika[] = INCBIN_U16("graphics/pokemon/zebstrika/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Zebstrika[] = INCBIN_U16("graphics/pokemon/zebstrika/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_BLITZLE #if P_FAMILY_ROGGENROLA const u32 gMonFrontPic_Roggenrola[] = INCBIN_U32("graphics/pokemon/roggenrola/anim_front.4bpp.lz"); - const u32 gMonPalette_Roggenrola[] = INCBIN_U32("graphics/pokemon/roggenrola/normal.gbapal.lz"); + const u16 gMonPalette_Roggenrola[] = INCBIN_U16("graphics/pokemon/roggenrola/normal.gbapal"); const u32 gMonBackPic_Roggenrola[] = INCBIN_U32("graphics/pokemon/roggenrola/back.4bpp.lz"); - const u32 gMonShinyPalette_Roggenrola[] = INCBIN_U32("graphics/pokemon/roggenrola/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Roggenrola[] = INCBIN_U16("graphics/pokemon/roggenrola/shiny.gbapal"); const u8 gMonIcon_Roggenrola[] = INCBIN_U8("graphics/pokemon/roggenrola/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Roggenrola[] = INCBIN_U8("graphics/pokemon/roggenrola/footprint.1bpp"); @@ -16431,15 +16431,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Roggenrola[] = INCBIN_U16("graphics/pokemon/roggenrola/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Roggenrola[] = INCBIN_U16("graphics/pokemon/roggenrola/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Boldore[] = INCBIN_U16("graphics/pokemon/boldore/normal.gbapal"); const u32 gMonBackPic_Boldore[] = INCBIN_U32("graphics/pokemon/boldore/back.4bpp.lz"); - const u32 gMonShinyPalette_Boldore[] = INCBIN_U32("graphics/pokemon/boldore/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Boldore[] = INCBIN_U16("graphics/pokemon/boldore/shiny.gbapal"); const u8 gMonIcon_Boldore[] = INCBIN_U8("graphics/pokemon/boldore/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Boldore[] = INCBIN_U8("graphics/pokemon/boldore/footprint.1bpp"); @@ -16447,15 +16447,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Boldore[] = INCBIN_U16("graphics/pokemon/boldore/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Boldore[] = INCBIN_U16("graphics/pokemon/boldore/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Gigalith[] = INCBIN_U16("graphics/pokemon/gigalith/normal.gbapal"); const u32 gMonBackPic_Gigalith[] = INCBIN_U32("graphics/pokemon/gigalith/back.4bpp.lz"); - const u32 gMonShinyPalette_Gigalith[] = INCBIN_U32("graphics/pokemon/gigalith/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Gigalith[] = INCBIN_U16("graphics/pokemon/gigalith/shiny.gbapal"); const u8 gMonIcon_Gigalith[] = INCBIN_U8("graphics/pokemon/gigalith/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Gigalith[] = INCBIN_U8("graphics/pokemon/gigalith/footprint.1bpp"); @@ -16463,17 +16463,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Gigalith[] = INCBIN_U16("graphics/pokemon/gigalith/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Gigalith[] = INCBIN_U16("graphics/pokemon/gigalith/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_ROGGENROLA #if P_FAMILY_WOOBAT const u32 gMonFrontPic_Woobat[] = INCBIN_U32("graphics/pokemon/woobat/anim_front.4bpp.lz"); - const u32 gMonPalette_Woobat[] = INCBIN_U32("graphics/pokemon/woobat/normal.gbapal.lz"); + const u16 gMonPalette_Woobat[] = INCBIN_U16("graphics/pokemon/woobat/normal.gbapal"); const u32 gMonBackPic_Woobat[] = INCBIN_U32("graphics/pokemon/woobat/back.4bpp.lz"); - const u32 gMonShinyPalette_Woobat[] = INCBIN_U32("graphics/pokemon/woobat/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Woobat[] = INCBIN_U16("graphics/pokemon/woobat/shiny.gbapal"); const u8 gMonIcon_Woobat[] = INCBIN_U8("graphics/pokemon/woobat/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Woobat[] = INCBIN_U8("graphics/pokemon/woobat/footprint.1bpp"); @@ -16481,15 +16481,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Woobat[] = INCBIN_U16("graphics/pokemon/woobat/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Woobat[] = INCBIN_U16("graphics/pokemon/woobat/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Swoobat[] = INCBIN_U16("graphics/pokemon/swoobat/normal.gbapal"); const u32 gMonBackPic_Swoobat[] = INCBIN_U32("graphics/pokemon/swoobat/back.4bpp.lz"); - const u32 gMonShinyPalette_Swoobat[] = INCBIN_U32("graphics/pokemon/swoobat/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Swoobat[] = INCBIN_U16("graphics/pokemon/swoobat/shiny.gbapal"); const u8 gMonIcon_Swoobat[] = INCBIN_U8("graphics/pokemon/swoobat/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Swoobat[] = INCBIN_U8("graphics/pokemon/swoobat/footprint.1bpp"); @@ -16497,17 +16497,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Swoobat[] = INCBIN_U16("graphics/pokemon/swoobat/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Swoobat[] = INCBIN_U16("graphics/pokemon/swoobat/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_WOOBAT #if P_FAMILY_DRILBUR const u32 gMonFrontPic_Drilbur[] = INCBIN_U32("graphics/pokemon/drilbur/anim_front.4bpp.lz"); - const u32 gMonPalette_Drilbur[] = INCBIN_U32("graphics/pokemon/drilbur/normal.gbapal.lz"); + const u16 gMonPalette_Drilbur[] = INCBIN_U16("graphics/pokemon/drilbur/normal.gbapal"); const u32 gMonBackPic_Drilbur[] = INCBIN_U32("graphics/pokemon/drilbur/back.4bpp.lz"); - const u32 gMonShinyPalette_Drilbur[] = INCBIN_U32("graphics/pokemon/drilbur/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Drilbur[] = INCBIN_U16("graphics/pokemon/drilbur/shiny.gbapal"); const u8 gMonIcon_Drilbur[] = INCBIN_U8("graphics/pokemon/drilbur/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Drilbur[] = INCBIN_U8("graphics/pokemon/drilbur/footprint.1bpp"); @@ -16515,15 +16515,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Drilbur[] = INCBIN_U16("graphics/pokemon/drilbur/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Drilbur[] = INCBIN_U16("graphics/pokemon/drilbur/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Excadrill[] = INCBIN_U16("graphics/pokemon/excadrill/normal.gbapal"); const u32 gMonBackPic_Excadrill[] = INCBIN_U32("graphics/pokemon/excadrill/back.4bpp.lz"); - const u32 gMonShinyPalette_Excadrill[] = INCBIN_U32("graphics/pokemon/excadrill/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Excadrill[] = INCBIN_U16("graphics/pokemon/excadrill/shiny.gbapal"); const u8 gMonIcon_Excadrill[] = INCBIN_U8("graphics/pokemon/excadrill/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Excadrill[] = INCBIN_U8("graphics/pokemon/excadrill/footprint.1bpp"); @@ -16531,17 +16531,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Excadrill[] = INCBIN_U16("graphics/pokemon/excadrill/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Excadrill[] = INCBIN_U16("graphics/pokemon/excadrill/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_DRILBUR #if P_FAMILY_AUDINO const u32 gMonFrontPic_Audino[] = INCBIN_U32("graphics/pokemon/audino/anim_front.4bpp.lz"); - const u32 gMonPalette_Audino[] = INCBIN_U32("graphics/pokemon/audino/normal.gbapal.lz"); + const u16 gMonPalette_Audino[] = INCBIN_U16("graphics/pokemon/audino/normal.gbapal"); const u32 gMonBackPic_Audino[] = INCBIN_U32("graphics/pokemon/audino/back.4bpp.lz"); - const u32 gMonShinyPalette_Audino[] = INCBIN_U32("graphics/pokemon/audino/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Audino[] = INCBIN_U16("graphics/pokemon/audino/shiny.gbapal"); const u8 gMonIcon_Audino[] = INCBIN_U8("graphics/pokemon/audino/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Audino[] = INCBIN_U8("graphics/pokemon/audino/footprint.1bpp"); @@ -16549,22 +16549,22 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Audino[] = INCBIN_U16("graphics/pokemon/audino/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Audino[] = INCBIN_U16("graphics/pokemon/audino/overworld_shiny.gbapal"); #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"); - const u32 gMonPalette_AudinoMega[] = INCBIN_U32("graphics/pokemon/audino/mega/normal.gbapal.lz"); + const u16 gMonPalette_AudinoMega[] = INCBIN_U16("graphics/pokemon/audino/mega/normal.gbapal"); 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 u16 gMonShinyPalette_AudinoMega[] = INCBIN_U16("graphics/pokemon/audino/mega/shiny.gbapal"); 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"); + const u16 gOverworldPalette_AudinoMega[] = INCBIN_U16("graphics/pokemon/audino/mega/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_AudinoMega[] = INCBIN_U16("graphics/pokemon/audino/mega/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS #endif //P_MEGA_EVOLUTIONS @@ -16572,9 +16572,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_TIMBURR const u32 gMonFrontPic_Timburr[] = INCBIN_U32("graphics/pokemon/timburr/anim_front.4bpp.lz"); - const u32 gMonPalette_Timburr[] = INCBIN_U32("graphics/pokemon/timburr/normal.gbapal.lz"); + const u16 gMonPalette_Timburr[] = INCBIN_U16("graphics/pokemon/timburr/normal.gbapal"); const u32 gMonBackPic_Timburr[] = INCBIN_U32("graphics/pokemon/timburr/back.4bpp.lz"); - const u32 gMonShinyPalette_Timburr[] = INCBIN_U32("graphics/pokemon/timburr/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Timburr[] = INCBIN_U16("graphics/pokemon/timburr/shiny.gbapal"); const u8 gMonIcon_Timburr[] = INCBIN_U8("graphics/pokemon/timburr/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Timburr[] = INCBIN_U8("graphics/pokemon/timburr/footprint.1bpp"); @@ -16582,15 +16582,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Timburr[] = INCBIN_U16("graphics/pokemon/timburr/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Timburr[] = INCBIN_U16("graphics/pokemon/timburr/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Gurdurr[] = INCBIN_U16("graphics/pokemon/gurdurr/normal.gbapal"); const u32 gMonBackPic_Gurdurr[] = INCBIN_U32("graphics/pokemon/gurdurr/back.4bpp.lz"); - const u32 gMonShinyPalette_Gurdurr[] = INCBIN_U32("graphics/pokemon/gurdurr/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Gurdurr[] = INCBIN_U16("graphics/pokemon/gurdurr/shiny.gbapal"); const u8 gMonIcon_Gurdurr[] = INCBIN_U8("graphics/pokemon/gurdurr/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Gurdurr[] = INCBIN_U8("graphics/pokemon/gurdurr/footprint.1bpp"); @@ -16598,15 +16598,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Gurdurr[] = INCBIN_U16("graphics/pokemon/gurdurr/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Gurdurr[] = INCBIN_U16("graphics/pokemon/gurdurr/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Conkeldurr[] = INCBIN_U16("graphics/pokemon/conkeldurr/normal.gbapal"); const u32 gMonBackPic_Conkeldurr[] = INCBIN_U32("graphics/pokemon/conkeldurr/back.4bpp.lz"); - const u32 gMonShinyPalette_Conkeldurr[] = INCBIN_U32("graphics/pokemon/conkeldurr/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Conkeldurr[] = INCBIN_U16("graphics/pokemon/conkeldurr/shiny.gbapal"); const u8 gMonIcon_Conkeldurr[] = INCBIN_U8("graphics/pokemon/conkeldurr/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Conkeldurr[] = INCBIN_U8("graphics/pokemon/conkeldurr/footprint.1bpp"); @@ -16614,17 +16614,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Conkeldurr[] = INCBIN_U16("graphics/pokemon/conkeldurr/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Conkeldurr[] = INCBIN_U16("graphics/pokemon/conkeldurr/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_TIMBURR #if P_FAMILY_TYMPOLE const u32 gMonFrontPic_Tympole[] = INCBIN_U32("graphics/pokemon/tympole/anim_front.4bpp.lz"); - const u32 gMonPalette_Tympole[] = INCBIN_U32("graphics/pokemon/tympole/normal.gbapal.lz"); + const u16 gMonPalette_Tympole[] = INCBIN_U16("graphics/pokemon/tympole/normal.gbapal"); const u32 gMonBackPic_Tympole[] = INCBIN_U32("graphics/pokemon/tympole/back.4bpp.lz"); - const u32 gMonShinyPalette_Tympole[] = INCBIN_U32("graphics/pokemon/tympole/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Tympole[] = INCBIN_U16("graphics/pokemon/tympole/shiny.gbapal"); const u8 gMonIcon_Tympole[] = INCBIN_U8("graphics/pokemon/tympole/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Tympole[] = INCBIN_U8("graphics/pokemon/tympole/footprint.1bpp"); @@ -16632,15 +16632,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Tympole[] = INCBIN_U16("graphics/pokemon/tympole/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Tympole[] = INCBIN_U16("graphics/pokemon/tympole/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Palpitoad[] = INCBIN_U16("graphics/pokemon/palpitoad/normal.gbapal"); const u32 gMonBackPic_Palpitoad[] = INCBIN_U32("graphics/pokemon/palpitoad/back.4bpp.lz"); - const u32 gMonShinyPalette_Palpitoad[] = INCBIN_U32("graphics/pokemon/palpitoad/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Palpitoad[] = INCBIN_U16("graphics/pokemon/palpitoad/shiny.gbapal"); const u8 gMonIcon_Palpitoad[] = INCBIN_U8("graphics/pokemon/palpitoad/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Palpitoad[] = INCBIN_U8("graphics/pokemon/palpitoad/footprint.1bpp"); @@ -16648,15 +16648,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Palpitoad[] = INCBIN_U16("graphics/pokemon/palpitoad/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Palpitoad[] = INCBIN_U16("graphics/pokemon/palpitoad/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Seismitoad[] = INCBIN_U16("graphics/pokemon/seismitoad/normal.gbapal"); const u32 gMonBackPic_Seismitoad[] = INCBIN_U32("graphics/pokemon/seismitoad/back.4bpp.lz"); - const u32 gMonShinyPalette_Seismitoad[] = INCBIN_U32("graphics/pokemon/seismitoad/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Seismitoad[] = INCBIN_U16("graphics/pokemon/seismitoad/shiny.gbapal"); const u8 gMonIcon_Seismitoad[] = INCBIN_U8("graphics/pokemon/seismitoad/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Seismitoad[] = INCBIN_U8("graphics/pokemon/seismitoad/footprint.1bpp"); @@ -16664,17 +16664,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Seismitoad[] = INCBIN_U16("graphics/pokemon/seismitoad/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Seismitoad[] = INCBIN_U16("graphics/pokemon/seismitoad/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_TYMPOLE #if P_FAMILY_THROH const u32 gMonFrontPic_Throh[] = INCBIN_U32("graphics/pokemon/throh/anim_front.4bpp.lz"); - const u32 gMonPalette_Throh[] = INCBIN_U32("graphics/pokemon/throh/normal.gbapal.lz"); + const u16 gMonPalette_Throh[] = INCBIN_U16("graphics/pokemon/throh/normal.gbapal"); const u32 gMonBackPic_Throh[] = INCBIN_U32("graphics/pokemon/throh/back.4bpp.lz"); - const u32 gMonShinyPalette_Throh[] = INCBIN_U32("graphics/pokemon/throh/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Throh[] = INCBIN_U16("graphics/pokemon/throh/shiny.gbapal"); const u8 gMonIcon_Throh[] = INCBIN_U8("graphics/pokemon/throh/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Throh[] = INCBIN_U8("graphics/pokemon/throh/footprint.1bpp"); @@ -16682,17 +16682,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Throh[] = INCBIN_U16("graphics/pokemon/throh/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Throh[] = INCBIN_U16("graphics/pokemon/throh/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_THROH #if P_FAMILY_SAWK const u32 gMonFrontPic_Sawk[] = INCBIN_U32("graphics/pokemon/sawk/anim_front.4bpp.lz"); - const u32 gMonPalette_Sawk[] = INCBIN_U32("graphics/pokemon/sawk/normal.gbapal.lz"); + const u16 gMonPalette_Sawk[] = INCBIN_U16("graphics/pokemon/sawk/normal.gbapal"); const u32 gMonBackPic_Sawk[] = INCBIN_U32("graphics/pokemon/sawk/back.4bpp.lz"); - const u32 gMonShinyPalette_Sawk[] = INCBIN_U32("graphics/pokemon/sawk/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Sawk[] = INCBIN_U16("graphics/pokemon/sawk/shiny.gbapal"); const u8 gMonIcon_Sawk[] = INCBIN_U8("graphics/pokemon/sawk/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Sawk[] = INCBIN_U8("graphics/pokemon/sawk/footprint.1bpp"); @@ -16700,17 +16700,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Sawk[] = INCBIN_U16("graphics/pokemon/sawk/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Sawk[] = INCBIN_U16("graphics/pokemon/sawk/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SAWK #if P_FAMILY_SEWADDLE const u32 gMonFrontPic_Sewaddle[] = INCBIN_U32("graphics/pokemon/sewaddle/anim_front.4bpp.lz"); - const u32 gMonPalette_Sewaddle[] = INCBIN_U32("graphics/pokemon/sewaddle/normal.gbapal.lz"); + const u16 gMonPalette_Sewaddle[] = INCBIN_U16("graphics/pokemon/sewaddle/normal.gbapal"); const u32 gMonBackPic_Sewaddle[] = INCBIN_U32("graphics/pokemon/sewaddle/back.4bpp.lz"); - const u32 gMonShinyPalette_Sewaddle[] = INCBIN_U32("graphics/pokemon/sewaddle/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Sewaddle[] = INCBIN_U16("graphics/pokemon/sewaddle/shiny.gbapal"); const u8 gMonIcon_Sewaddle[] = INCBIN_U8("graphics/pokemon/sewaddle/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Sewaddle[] = INCBIN_U8("graphics/pokemon/sewaddle/footprint.1bpp"); @@ -16718,15 +16718,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Sewaddle[] = INCBIN_U16("graphics/pokemon/sewaddle/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Sewaddle[] = INCBIN_U16("graphics/pokemon/sewaddle/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Swadloon[] = INCBIN_U16("graphics/pokemon/swadloon/normal.gbapal"); const u32 gMonBackPic_Swadloon[] = INCBIN_U32("graphics/pokemon/swadloon/back.4bpp.lz"); - const u32 gMonShinyPalette_Swadloon[] = INCBIN_U32("graphics/pokemon/swadloon/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Swadloon[] = INCBIN_U16("graphics/pokemon/swadloon/shiny.gbapal"); const u8 gMonIcon_Swadloon[] = INCBIN_U8("graphics/pokemon/swadloon/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Swadloon[] = INCBIN_U8("graphics/pokemon/swadloon/footprint.1bpp"); @@ -16734,15 +16734,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Swadloon[] = INCBIN_U16("graphics/pokemon/swadloon/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Swadloon[] = INCBIN_U16("graphics/pokemon/swadloon/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Leavanny[] = INCBIN_U16("graphics/pokemon/leavanny/normal.gbapal"); const u32 gMonBackPic_Leavanny[] = INCBIN_U32("graphics/pokemon/leavanny/back.4bpp.lz"); - const u32 gMonShinyPalette_Leavanny[] = INCBIN_U32("graphics/pokemon/leavanny/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Leavanny[] = INCBIN_U16("graphics/pokemon/leavanny/shiny.gbapal"); const u8 gMonIcon_Leavanny[] = INCBIN_U8("graphics/pokemon/leavanny/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Leavanny[] = INCBIN_U8("graphics/pokemon/leavanny/footprint.1bpp"); @@ -16750,17 +16750,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Leavanny[] = INCBIN_U16("graphics/pokemon/leavanny/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Leavanny[] = INCBIN_U16("graphics/pokemon/leavanny/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SEWADDLE #if P_FAMILY_VENIPEDE const u32 gMonFrontPic_Venipede[] = INCBIN_U32("graphics/pokemon/venipede/anim_front.4bpp.lz"); - const u32 gMonPalette_Venipede[] = INCBIN_U32("graphics/pokemon/venipede/normal.gbapal.lz"); + const u16 gMonPalette_Venipede[] = INCBIN_U16("graphics/pokemon/venipede/normal.gbapal"); const u32 gMonBackPic_Venipede[] = INCBIN_U32("graphics/pokemon/venipede/back.4bpp.lz"); - const u32 gMonShinyPalette_Venipede[] = INCBIN_U32("graphics/pokemon/venipede/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Venipede[] = INCBIN_U16("graphics/pokemon/venipede/shiny.gbapal"); const u8 gMonIcon_Venipede[] = INCBIN_U8("graphics/pokemon/venipede/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Venipede[] = INCBIN_U8("graphics/pokemon/venipede/footprint.1bpp"); @@ -16768,15 +16768,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Venipede[] = INCBIN_U16("graphics/pokemon/venipede/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Venipede[] = INCBIN_U16("graphics/pokemon/venipede/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Whirlipede[] = INCBIN_U16("graphics/pokemon/whirlipede/normal.gbapal"); const u32 gMonBackPic_Whirlipede[] = INCBIN_U32("graphics/pokemon/whirlipede/back.4bpp.lz"); - const u32 gMonShinyPalette_Whirlipede[] = INCBIN_U32("graphics/pokemon/whirlipede/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Whirlipede[] = INCBIN_U16("graphics/pokemon/whirlipede/shiny.gbapal"); const u8 gMonIcon_Whirlipede[] = INCBIN_U8("graphics/pokemon/whirlipede/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Whirlipede[] = INCBIN_U8("graphics/pokemon/whirlipede/footprint.1bpp"); @@ -16784,15 +16784,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Whirlipede[] = INCBIN_U16("graphics/pokemon/whirlipede/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Whirlipede[] = INCBIN_U16("graphics/pokemon/whirlipede/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Scolipede[] = INCBIN_U16("graphics/pokemon/scolipede/normal.gbapal"); const u32 gMonBackPic_Scolipede[] = INCBIN_U32("graphics/pokemon/scolipede/back.4bpp.lz"); - const u32 gMonShinyPalette_Scolipede[] = INCBIN_U32("graphics/pokemon/scolipede/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Scolipede[] = INCBIN_U16("graphics/pokemon/scolipede/shiny.gbapal"); const u8 gMonIcon_Scolipede[] = INCBIN_U8("graphics/pokemon/scolipede/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Scolipede[] = INCBIN_U8("graphics/pokemon/scolipede/footprint.1bpp"); @@ -16800,17 +16800,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Scolipede[] = INCBIN_U16("graphics/pokemon/scolipede/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Scolipede[] = INCBIN_U16("graphics/pokemon/scolipede/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_VENIPEDE #if P_FAMILY_COTTONEE const u32 gMonFrontPic_Cottonee[] = INCBIN_U32("graphics/pokemon/cottonee/anim_front.4bpp.lz"); - const u32 gMonPalette_Cottonee[] = INCBIN_U32("graphics/pokemon/cottonee/normal.gbapal.lz"); + const u16 gMonPalette_Cottonee[] = INCBIN_U16("graphics/pokemon/cottonee/normal.gbapal"); const u32 gMonBackPic_Cottonee[] = INCBIN_U32("graphics/pokemon/cottonee/back.4bpp.lz"); - const u32 gMonShinyPalette_Cottonee[] = INCBIN_U32("graphics/pokemon/cottonee/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Cottonee[] = INCBIN_U16("graphics/pokemon/cottonee/shiny.gbapal"); const u8 gMonIcon_Cottonee[] = INCBIN_U8("graphics/pokemon/cottonee/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Cottonee[] = INCBIN_U8("graphics/pokemon/cottonee/footprint.1bpp"); @@ -16818,15 +16818,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Cottonee[] = INCBIN_U16("graphics/pokemon/cottonee/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Cottonee[] = INCBIN_U16("graphics/pokemon/cottonee/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Whimsicott[] = INCBIN_U16("graphics/pokemon/whimsicott/normal.gbapal"); const u32 gMonBackPic_Whimsicott[] = INCBIN_U32("graphics/pokemon/whimsicott/back.4bpp.lz"); - const u32 gMonShinyPalette_Whimsicott[] = INCBIN_U32("graphics/pokemon/whimsicott/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Whimsicott[] = INCBIN_U16("graphics/pokemon/whimsicott/shiny.gbapal"); const u8 gMonIcon_Whimsicott[] = INCBIN_U8("graphics/pokemon/whimsicott/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Whimsicott[] = INCBIN_U8("graphics/pokemon/whimsicott/footprint.1bpp"); @@ -16834,17 +16834,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Whimsicott[] = INCBIN_U16("graphics/pokemon/whimsicott/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Whimsicott[] = INCBIN_U16("graphics/pokemon/whimsicott/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_COTTONEE #if P_FAMILY_PETILIL const u32 gMonFrontPic_Petilil[] = INCBIN_U32("graphics/pokemon/petilil/anim_front.4bpp.lz"); - const u32 gMonPalette_Petilil[] = INCBIN_U32("graphics/pokemon/petilil/normal.gbapal.lz"); + const u16 gMonPalette_Petilil[] = INCBIN_U16("graphics/pokemon/petilil/normal.gbapal"); const u32 gMonBackPic_Petilil[] = INCBIN_U32("graphics/pokemon/petilil/back.4bpp.lz"); - const u32 gMonShinyPalette_Petilil[] = INCBIN_U32("graphics/pokemon/petilil/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Petilil[] = INCBIN_U16("graphics/pokemon/petilil/shiny.gbapal"); const u8 gMonIcon_Petilil[] = INCBIN_U8("graphics/pokemon/petilil/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Petilil[] = INCBIN_U8("graphics/pokemon/petilil/footprint.1bpp"); @@ -16852,15 +16852,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Petilil[] = INCBIN_U16("graphics/pokemon/petilil/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Petilil[] = INCBIN_U16("graphics/pokemon/petilil/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Lilligant[] = INCBIN_U16("graphics/pokemon/lilligant/normal.gbapal"); const u32 gMonBackPic_Lilligant[] = INCBIN_U32("graphics/pokemon/lilligant/back.4bpp.lz"); - const u32 gMonShinyPalette_Lilligant[] = INCBIN_U32("graphics/pokemon/lilligant/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Lilligant[] = INCBIN_U16("graphics/pokemon/lilligant/shiny.gbapal"); const u8 gMonIcon_Lilligant[] = INCBIN_U8("graphics/pokemon/lilligant/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Lilligant[] = INCBIN_U8("graphics/pokemon/lilligant/footprint.1bpp"); @@ -16868,22 +16868,22 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Lilligant[] = INCBIN_U16("graphics/pokemon/lilligant/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Lilligant[] = INCBIN_U16("graphics/pokemon/lilligant/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if P_HISUIAN_FORMS const u32 gMonFrontPic_LilligantHisui[] = INCBIN_U32("graphics/pokemon/lilligant/hisui/front.4bpp.lz"); - const u32 gMonPalette_LilligantHisui[] = INCBIN_U32("graphics/pokemon/lilligant/hisui/normal.gbapal.lz"); + const u16 gMonPalette_LilligantHisui[] = INCBIN_U16("graphics/pokemon/lilligant/hisui/normal.gbapal"); const u32 gMonBackPic_LilligantHisui[] = INCBIN_U32("graphics/pokemon/lilligant/hisui/back.4bpp.lz"); - const u32 gMonShinyPalette_LilligantHisui[] = INCBIN_U32("graphics/pokemon/lilligant/hisui/shiny.gbapal.lz"); + const u16 gMonShinyPalette_LilligantHisui[] = INCBIN_U16("graphics/pokemon/lilligant/hisui/shiny.gbapal"); const u8 gMonIcon_LilligantHisui[] = INCBIN_U8("graphics/pokemon/lilligant/hisui/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS const u32 gObjectEventPic_LilligantHisui[] = INCBIN_COMP("graphics/pokemon/lilligant/hisui/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - const u32 gOverworldPalette_LilligantHisui[] = INCBIN_U32("graphics/pokemon/lilligant/hisui/overworld_normal.gbapal.lz"); - const u32 gShinyOverworldPalette_LilligantHisui[] = INCBIN_U32("graphics/pokemon/lilligant/hisui/overworld_shiny.gbapal.lz"); + const u16 gOverworldPalette_LilligantHisui[] = INCBIN_U16("graphics/pokemon/lilligant/hisui/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_LilligantHisui[] = INCBIN_U16("graphics/pokemon/lilligant/hisui/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_HISUIAN_FORMS @@ -16891,69 +16891,69 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_BASCULIN const u32 gMonFrontPic_BasculinRedStriped[] = INCBIN_U32("graphics/pokemon/basculin/anim_front.4bpp.lz"); - const u32 gMonPalette_BasculinRedStriped[] = INCBIN_U32("graphics/pokemon/basculin/normal.gbapal.lz"); + const u16 gMonPalette_BasculinRedStriped[] = INCBIN_U16("graphics/pokemon/basculin/normal.gbapal"); const u32 gMonBackPic_BasculinRedStriped[] = INCBIN_U32("graphics/pokemon/basculin/back.4bpp.lz"); - const u32 gMonShinyPalette_BasculinRedStriped[] = INCBIN_U32("graphics/pokemon/basculin/shiny.gbapal.lz"); + const u16 gMonShinyPalette_BasculinRedStriped[] = INCBIN_U16("graphics/pokemon/basculin/shiny.gbapal"); const u8 gMonIcon_BasculinRedStriped[] = INCBIN_U8("graphics/pokemon/basculin/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Basculin[] = INCBIN_U8("graphics/pokemon/basculin/footprint.1bpp"); #endif //P_FOOTPRINTS const u32 gMonFrontPic_BasculinBlueStriped[] = INCBIN_U32("graphics/pokemon/basculin/blue_striped/anim_front.4bpp.lz"); - const u32 gMonPalette_BasculinBlueStriped[] = INCBIN_U32("graphics/pokemon/basculin/blue_striped/normal.gbapal.lz"); + const u16 gMonPalette_BasculinBlueStriped[] = INCBIN_U16("graphics/pokemon/basculin/blue_striped/normal.gbapal"); const u32 gMonBackPic_BasculinBlueStriped[] = INCBIN_U32("graphics/pokemon/basculin/blue_striped/back.4bpp.lz"); - const u32 gMonShinyPalette_BasculinBlueStriped[] = INCBIN_U32("graphics/pokemon/basculin/blue_striped/shiny.gbapal.lz"); + const u16 gMonShinyPalette_BasculinBlueStriped[] = INCBIN_U16("graphics/pokemon/basculin/blue_striped/shiny.gbapal"); const u8 gMonIcon_BasculinBlueStriped[] = INCBIN_U8("graphics/pokemon/basculin/blue_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"); #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 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 u16 gOverworldPalette_BasculinRedStriped[] = INCBIN_U16("graphics/pokemon/basculin/overworld_normal.gbapal"); + const u16 gOverworldPalette_BasculinBlueStriped[] = INCBIN_U16("graphics/pokemon/basculin/blue_striped/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_BasculinRedStriped[] = INCBIN_U16("graphics/pokemon/basculin/overworld_shiny.gbapal"); + const u16 gShinyOverworldPalette_BasculinBlueStriped[] = INCBIN_U16("graphics/pokemon/basculin/blue_striped/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if P_HISUIAN_FORMS const u32 gMonFrontPic_BasculinWhiteStriped[] = INCBIN_U32("graphics/pokemon/basculin/white_striped/anim_front.4bpp.lz"); - const u32 gMonPalette_BasculinWhiteStriped[] = INCBIN_U32("graphics/pokemon/basculin/white_striped/normal.gbapal.lz"); + const u16 gMonPalette_BasculinWhiteStriped[] = INCBIN_U16("graphics/pokemon/basculin/white_striped/normal.gbapal"); const u32 gMonBackPic_BasculinWhiteStriped[] = INCBIN_U32("graphics/pokemon/basculin/white_striped/back.4bpp.lz"); - const u32 gMonShinyPalette_BasculinWhiteStriped[] = INCBIN_U32("graphics/pokemon/basculin/white_striped/shiny.gbapal.lz"); + const u16 gMonShinyPalette_BasculinWhiteStriped[] = INCBIN_U16("graphics/pokemon/basculin/white_striped/shiny.gbapal"); const u8 gMonIcon_BasculinWhiteStriped[] = INCBIN_U8("graphics/pokemon/basculin/white_striped/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS const u32 gObjectEventPic_BasculinWhiteStriped[] = INCBIN_COMP("graphics/pokemon/basculin/white_striped/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - const u32 gOverworldPalette_BasculinWhiteStriped[] = INCBIN_U32("graphics/pokemon/basculin/white_striped/overworld_normal.gbapal.lz"); - const u32 gShinyOverworldPalette_BasculinWhiteStriped[] = INCBIN_U32("graphics/pokemon/basculin/white_striped/overworld_shiny.gbapal.lz"); + const u16 gOverworldPalette_BasculinWhiteStriped[] = INCBIN_U16("graphics/pokemon/basculin/white_striped/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_BasculinWhiteStriped[] = INCBIN_U16("graphics/pokemon/basculin/white_striped/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_BasculegionM[] = INCBIN_U32("graphics/pokemon/basculegion/front.4bpp.lz"); - const u32 gMonPalette_BasculegionM[] = INCBIN_U32("graphics/pokemon/basculegion/normal.gbapal.lz"); + const u16 gMonPalette_BasculegionM[] = INCBIN_U16("graphics/pokemon/basculegion/normal.gbapal"); const u32 gMonBackPic_BasculegionM[] = INCBIN_U32("graphics/pokemon/basculegion/back.4bpp.lz"); - const u32 gMonShinyPalette_BasculegionM[] = INCBIN_U32("graphics/pokemon/basculegion/shiny.gbapal.lz"); + const u16 gMonShinyPalette_BasculegionM[] = INCBIN_U16("graphics/pokemon/basculegion/shiny.gbapal"); const u8 gMonIcon_BasculegionM[] = INCBIN_U8("graphics/pokemon/basculegion/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Basculegion[] = INCBIN_U8("graphics/pokemon/basculegion/footprint.1bpp"); #endif //P_FOOTPRINTS const u32 gMonFrontPic_BasculegionF[] = INCBIN_U32("graphics/pokemon/basculegion/f/front.4bpp.lz"); - const u32 gMonPalette_BasculegionF[] = INCBIN_U32("graphics/pokemon/basculegion/f/normal.gbapal.lz"); + const u16 gMonPalette_BasculegionF[] = INCBIN_U16("graphics/pokemon/basculegion/f/normal.gbapal"); const u32 gMonBackPic_BasculegionF[] = INCBIN_U32("graphics/pokemon/basculegion/f/back.4bpp.lz"); - const u32 gMonShinyPalette_BasculegionF[] = INCBIN_U32("graphics/pokemon/basculegion/f/shiny.gbapal.lz"); + const u16 gMonShinyPalette_BasculegionF[] = INCBIN_U16("graphics/pokemon/basculegion/f/shiny.gbapal"); const u8 gMonIcon_BasculegionF[] = INCBIN_U8("graphics/pokemon/basculegion/f/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS const u32 gObjectEventPic_BasculegionM[] = INCBIN_COMP("graphics/pokemon/basculegion/overworld.4bpp"); const u32 gObjectEventPic_BasculegionF[] = INCBIN_COMP("graphics/pokemon/basculegion/f/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - const u32 gOverworldPalette_BasculegionM[] = INCBIN_U32("graphics/pokemon/basculegion/overworld_normal.gbapal.lz"); - const u32 gOverworldPalette_BasculegionF[] = INCBIN_U32("graphics/pokemon/basculegion/f/overworld_normal.gbapal.lz"); - const u32 gShinyOverworldPalette_BasculegionM[] = INCBIN_U32("graphics/pokemon/basculegion/overworld_shiny.gbapal.lz"); - const u32 gShinyOverworldPalette_BasculegionF[] = INCBIN_U32("graphics/pokemon/basculegion/f/overworld_shiny.gbapal.lz"); + const u16 gOverworldPalette_BasculegionM[] = INCBIN_U16("graphics/pokemon/basculegion/overworld_normal.gbapal"); + const u16 gOverworldPalette_BasculegionF[] = INCBIN_U16("graphics/pokemon/basculegion/f/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_BasculegionM[] = INCBIN_U16("graphics/pokemon/basculegion/overworld_shiny.gbapal"); + const u16 gShinyOverworldPalette_BasculegionF[] = INCBIN_U16("graphics/pokemon/basculegion/f/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_HISUIAN_FORMS @@ -16961,9 +16961,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_SANDILE const u32 gMonFrontPic_Sandile[] = INCBIN_U32("graphics/pokemon/sandile/anim_front.4bpp.lz"); - const u32 gMonPalette_Sandile[] = INCBIN_U32("graphics/pokemon/sandile/normal.gbapal.lz"); + const u16 gMonPalette_Sandile[] = INCBIN_U16("graphics/pokemon/sandile/normal.gbapal"); const u32 gMonBackPic_Sandile[] = INCBIN_U32("graphics/pokemon/sandile/back.4bpp.lz"); - const u32 gMonShinyPalette_Sandile[] = INCBIN_U32("graphics/pokemon/sandile/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Sandile[] = INCBIN_U16("graphics/pokemon/sandile/shiny.gbapal"); const u8 gMonIcon_Sandile[] = INCBIN_U8("graphics/pokemon/sandile/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Sandile[] = INCBIN_U8("graphics/pokemon/sandile/footprint.1bpp"); @@ -16971,15 +16971,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Sandile[] = INCBIN_U16("graphics/pokemon/sandile/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Sandile[] = INCBIN_U16("graphics/pokemon/sandile/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Krokorok[] = INCBIN_U16("graphics/pokemon/krokorok/normal.gbapal"); const u32 gMonBackPic_Krokorok[] = INCBIN_U32("graphics/pokemon/krokorok/back.4bpp.lz"); - const u32 gMonShinyPalette_Krokorok[] = INCBIN_U32("graphics/pokemon/krokorok/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Krokorok[] = INCBIN_U16("graphics/pokemon/krokorok/shiny.gbapal"); const u8 gMonIcon_Krokorok[] = INCBIN_U8("graphics/pokemon/krokorok/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Krokorok[] = INCBIN_U8("graphics/pokemon/krokorok/footprint.1bpp"); @@ -16987,15 +16987,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Krokorok[] = INCBIN_U16("graphics/pokemon/krokorok/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Krokorok[] = INCBIN_U16("graphics/pokemon/krokorok/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Krookodile[] = INCBIN_U16("graphics/pokemon/krookodile/normal.gbapal"); const u32 gMonBackPic_Krookodile[] = INCBIN_U32("graphics/pokemon/krookodile/back.4bpp.lz"); - const u32 gMonShinyPalette_Krookodile[] = INCBIN_U32("graphics/pokemon/krookodile/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Krookodile[] = INCBIN_U16("graphics/pokemon/krookodile/shiny.gbapal"); const u8 gMonIcon_Krookodile[] = INCBIN_U8("graphics/pokemon/krookodile/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Krookodile[] = INCBIN_U8("graphics/pokemon/krookodile/footprint.1bpp"); @@ -17003,17 +17003,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Krookodile[] = INCBIN_U16("graphics/pokemon/krookodile/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Krookodile[] = INCBIN_U16("graphics/pokemon/krookodile/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SANDILE #if P_FAMILY_DARUMAKA const u32 gMonFrontPic_Darumaka[] = INCBIN_U32("graphics/pokemon/darumaka/anim_front.4bpp.lz"); - const u32 gMonPalette_Darumaka[] = INCBIN_U32("graphics/pokemon/darumaka/normal.gbapal.lz"); + const u16 gMonPalette_Darumaka[] = INCBIN_U16("graphics/pokemon/darumaka/normal.gbapal"); const u32 gMonBackPic_Darumaka[] = INCBIN_U32("graphics/pokemon/darumaka/back.4bpp.lz"); - const u32 gMonShinyPalette_Darumaka[] = INCBIN_U32("graphics/pokemon/darumaka/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Darumaka[] = INCBIN_U16("graphics/pokemon/darumaka/shiny.gbapal"); const u8 gMonIcon_Darumaka[] = INCBIN_U8("graphics/pokemon/darumaka/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Darumaka[] = INCBIN_U8("graphics/pokemon/darumaka/footprint.1bpp"); @@ -17021,15 +17021,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Darumaka[] = INCBIN_U16("graphics/pokemon/darumaka/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Darumaka[] = INCBIN_U16("graphics/pokemon/darumaka/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_DarmanitanStandard[] = INCBIN_U32("graphics/pokemon/darmanitan/anim_front.4bpp.lz"); - const u32 gMonPalette_DarmanitanStandard[] = INCBIN_U32("graphics/pokemon/darmanitan/normal.gbapal.lz"); + const u16 gMonPalette_DarmanitanStandard[] = INCBIN_U16("graphics/pokemon/darmanitan/normal.gbapal"); const u32 gMonBackPic_DarmanitanStandard[] = INCBIN_U32("graphics/pokemon/darmanitan/back.4bpp.lz"); - const u32 gMonShinyPalette_DarmanitanStandard[] = INCBIN_U32("graphics/pokemon/darmanitan/shiny.gbapal.lz"); + const u16 gMonShinyPalette_DarmanitanStandard[] = INCBIN_U16("graphics/pokemon/darmanitan/shiny.gbapal"); const u8 gMonIcon_DarmanitanStandard[] = INCBIN_U8("graphics/pokemon/darmanitan/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Darmanitan[] = INCBIN_U8("graphics/pokemon/darmanitan/footprint.1bpp"); @@ -17037,61 +17037,61 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if OW_POKEMON_OBJECT_EVENTS const u32 gObjectEventPic_DarmanitanStandard[] = INCBIN_COMP("graphics/pokemon/darmanitan/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - const u32 gOverworldPalette_DarmanitanStandard[] = INCBIN_U32("graphics/pokemon/darmanitan/overworld_normal.gbapal.lz"); - const u32 gShinyOverworldPalette_DarmanitanStandard[] = INCBIN_U32("graphics/pokemon/darmanitan/overworld_shiny.gbapal.lz"); + const u16 gOverworldPalette_DarmanitanStandard[] = INCBIN_U16("graphics/pokemon/darmanitan/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_DarmanitanStandard[] = INCBIN_U16("graphics/pokemon/darmanitan/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_DarmanitanZen[] = INCBIN_U32("graphics/pokemon/darmanitan/zen/anim_front.4bpp.lz"); - const u32 gMonPalette_DarmanitanZen[] = INCBIN_U32("graphics/pokemon/darmanitan/zen/normal.gbapal.lz"); + const u16 gMonPalette_DarmanitanZen[] = INCBIN_U16("graphics/pokemon/darmanitan/zen/normal.gbapal"); const u32 gMonBackPic_DarmanitanZen[] = INCBIN_U32("graphics/pokemon/darmanitan/zen/back.4bpp.lz"); - const u32 gMonShinyPalette_DarmanitanZen[] = INCBIN_U32("graphics/pokemon/darmanitan/zen/shiny.gbapal.lz"); + const u16 gMonShinyPalette_DarmanitanZen[] = INCBIN_U16("graphics/pokemon/darmanitan/zen/shiny.gbapal"); const u8 gMonIcon_DarmanitanZen[] = INCBIN_U8("graphics/pokemon/darmanitan/zen/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS // const u32 gObjectEventPic_DarmanitanZen[] = INCBIN_COMP("graphics/pokemon/darmanitan/zen/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - // const u32 gOverworldPalette_DarmanitanZen[] = INCBIN_U32("graphics/pokemon/darmanitan/zen/overworld_normal.gbapal.lz"); - // const u32 gShinyOverworldPalette_DarmanitanZen[] = INCBIN_U32("graphics/pokemon/darmanitan/zen/overworld_shiny.gbapal.lz"); + // const u16 gOverworldPalette_DarmanitanZen[] = INCBIN_U16("graphics/pokemon/darmanitan/zen/overworld_normal.gbapal"); + // const u16 gShinyOverworldPalette_DarmanitanZen[] = INCBIN_U16("graphics/pokemon/darmanitan/zen/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if P_GALARIAN_FORMS const u32 gMonFrontPic_DarumakaGalar[] = INCBIN_U32("graphics/pokemon/darumaka/galar/front.4bpp.lz"); - const u32 gMonPalette_DarumakaGalar[] = INCBIN_U32("graphics/pokemon/darumaka/galar/normal.gbapal.lz"); + const u16 gMonPalette_DarumakaGalar[] = INCBIN_U16("graphics/pokemon/darumaka/galar/normal.gbapal"); const u32 gMonBackPic_DarumakaGalar[] = INCBIN_U32("graphics/pokemon/darumaka/galar/back.4bpp.lz"); - const u32 gMonShinyPalette_DarumakaGalar[] = INCBIN_U32("graphics/pokemon/darumaka/galar/shiny.gbapal.lz"); + const u16 gMonShinyPalette_DarumakaGalar[] = INCBIN_U16("graphics/pokemon/darumaka/galar/shiny.gbapal"); const u8 gMonIcon_DarumakaGalar[] = INCBIN_U8("graphics/pokemon/darumaka/galar/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS const u32 gObjectEventPic_DarumakaGalar[] = INCBIN_COMP("graphics/pokemon/darumaka/galar/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - const u32 gOverworldPalette_DarumakaGalar[] = INCBIN_U32("graphics/pokemon/darumaka/galar/overworld_normal.gbapal.lz"); - const u32 gShinyOverworldPalette_DarumakaGalar[] = INCBIN_U32("graphics/pokemon/darumaka/galar/overworld_shiny.gbapal.lz"); + const u16 gOverworldPalette_DarumakaGalar[] = INCBIN_U16("graphics/pokemon/darumaka/galar/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_DarumakaGalar[] = INCBIN_U16("graphics/pokemon/darumaka/galar/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_DarmanitanGalarStandard[] = INCBIN_U32("graphics/pokemon/darmanitan/galar_standard/front.4bpp.lz"); - const u32 gMonPalette_DarmanitanGalarStandard[] = INCBIN_U32("graphics/pokemon/darmanitan/galar_standard/normal.gbapal.lz"); + const u16 gMonPalette_DarmanitanGalarStandard[] = INCBIN_U16("graphics/pokemon/darmanitan/galar_standard/normal.gbapal"); const u32 gMonBackPic_DarmanitanGalarStandard[] = INCBIN_U32("graphics/pokemon/darmanitan/galar_standard/back.4bpp.lz"); - const u32 gMonShinyPalette_DarmanitanGalarStandard[] = INCBIN_U32("graphics/pokemon/darmanitan/galar_standard/shiny.gbapal.lz"); + const u16 gMonShinyPalette_DarmanitanGalarStandard[] = INCBIN_U16("graphics/pokemon/darmanitan/galar_standard/shiny.gbapal"); const u8 gMonIcon_DarmanitanGalarStandard[] = INCBIN_U8("graphics/pokemon/darmanitan/galar_standard/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS const u32 gObjectEventPic_DarmanitanGalarStandard[] = INCBIN_COMP("graphics/pokemon/darmanitan/galar_standard/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - const u32 gOverworldPalette_DarmanitanGalarStandard[] = INCBIN_U32("graphics/pokemon/darmanitan/galar_standard/overworld_normal.gbapal.lz"); - const u32 gShinyOverworldPalette_DarmanitanGalarStandard[] = INCBIN_U32("graphics/pokemon/darmanitan/galar_standard/overworld_shiny.gbapal.lz"); + const u16 gOverworldPalette_DarmanitanGalarStandard[] = INCBIN_U16("graphics/pokemon/darmanitan/galar_standard/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_DarmanitanGalarStandard[] = INCBIN_U16("graphics/pokemon/darmanitan/galar_standard/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_DarmanitanGalarZen[] = INCBIN_U32("graphics/pokemon/darmanitan/galar_zen/front.4bpp.lz"); - const u32 gMonPalette_DarmanitanGalarZen[] = INCBIN_U32("graphics/pokemon/darmanitan/galar_zen/normal.gbapal.lz"); + const u16 gMonPalette_DarmanitanGalarZen[] = INCBIN_U16("graphics/pokemon/darmanitan/galar_zen/normal.gbapal"); const u32 gMonBackPic_DarmanitanGalarZen[] = INCBIN_U32("graphics/pokemon/darmanitan/galar_zen/back.4bpp.lz"); - const u32 gMonShinyPalette_DarmanitanGalarZen[] = INCBIN_U32("graphics/pokemon/darmanitan/galar_zen/shiny.gbapal.lz"); + const u16 gMonShinyPalette_DarmanitanGalarZen[] = INCBIN_U16("graphics/pokemon/darmanitan/galar_zen/shiny.gbapal"); const u8 gMonIcon_DarmanitanGalarZen[] = INCBIN_U8("graphics/pokemon/darmanitan/galar_zen/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS // const u32 gObjectEventPic_DarmanitanGalarZen[] = INCBIN_COMP("graphics/pokemon/darmanitan/galar_zen/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - // const u32 gOverworldPalette_DarmanitanGalarZen[] = INCBIN_U32("graphics/pokemon/darmanitan/galar_zen/overworld_normal.gbapal.lz"); - // const u32 gShinyOverworldPalette_DarmanitanGalarZen[] = INCBIN_U32("graphics/pokemon/darmanitan/galar_zen/overworld_shiny.gbapal.lz"); + // const u16 gOverworldPalette_DarmanitanGalarZen[] = INCBIN_U16("graphics/pokemon/darmanitan/galar_zen/overworld_normal.gbapal"); + // const u16 gShinyOverworldPalette_DarmanitanGalarZen[] = INCBIN_U16("graphics/pokemon/darmanitan/galar_zen/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GALARIAN_FORMS @@ -17099,9 +17099,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_MARACTUS const u32 gMonFrontPic_Maractus[] = INCBIN_U32("graphics/pokemon/maractus/anim_front.4bpp.lz"); - const u32 gMonPalette_Maractus[] = INCBIN_U32("graphics/pokemon/maractus/normal.gbapal.lz"); + const u16 gMonPalette_Maractus[] = INCBIN_U16("graphics/pokemon/maractus/normal.gbapal"); const u32 gMonBackPic_Maractus[] = INCBIN_U32("graphics/pokemon/maractus/back.4bpp.lz"); - const u32 gMonShinyPalette_Maractus[] = INCBIN_U32("graphics/pokemon/maractus/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Maractus[] = INCBIN_U16("graphics/pokemon/maractus/shiny.gbapal"); const u8 gMonIcon_Maractus[] = INCBIN_U8("graphics/pokemon/maractus/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Maractus[] = INCBIN_U8("graphics/pokemon/maractus/footprint.1bpp"); @@ -17109,17 +17109,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Maractus[] = INCBIN_U16("graphics/pokemon/maractus/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Maractus[] = INCBIN_U16("graphics/pokemon/maractus/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_MARACTUS #if P_FAMILY_DWEBBLE const u32 gMonFrontPic_Dwebble[] = INCBIN_U32("graphics/pokemon/dwebble/anim_front.4bpp.lz"); - const u32 gMonPalette_Dwebble[] = INCBIN_U32("graphics/pokemon/dwebble/normal.gbapal.lz"); + const u16 gMonPalette_Dwebble[] = INCBIN_U16("graphics/pokemon/dwebble/normal.gbapal"); const u32 gMonBackPic_Dwebble[] = INCBIN_U32("graphics/pokemon/dwebble/back.4bpp.lz"); - const u32 gMonShinyPalette_Dwebble[] = INCBIN_U32("graphics/pokemon/dwebble/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Dwebble[] = INCBIN_U16("graphics/pokemon/dwebble/shiny.gbapal"); const u8 gMonIcon_Dwebble[] = INCBIN_U8("graphics/pokemon/dwebble/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Dwebble[] = INCBIN_U8("graphics/pokemon/dwebble/footprint.1bpp"); @@ -17127,15 +17127,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Dwebble[] = INCBIN_U16("graphics/pokemon/dwebble/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Dwebble[] = INCBIN_U16("graphics/pokemon/dwebble/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Crustle[] = INCBIN_U16("graphics/pokemon/crustle/normal.gbapal"); const u32 gMonBackPic_Crustle[] = INCBIN_U32("graphics/pokemon/crustle/back.4bpp.lz"); - const u32 gMonShinyPalette_Crustle[] = INCBIN_U32("graphics/pokemon/crustle/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Crustle[] = INCBIN_U16("graphics/pokemon/crustle/shiny.gbapal"); const u8 gMonIcon_Crustle[] = INCBIN_U8("graphics/pokemon/crustle/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Crustle[] = INCBIN_U8("graphics/pokemon/crustle/footprint.1bpp"); @@ -17143,17 +17143,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Crustle[] = INCBIN_U16("graphics/pokemon/crustle/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Crustle[] = INCBIN_U16("graphics/pokemon/crustle/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_DWEBBLE #if P_FAMILY_SCRAGGY const u32 gMonFrontPic_Scraggy[] = INCBIN_U32("graphics/pokemon/scraggy/anim_front.4bpp.lz"); - const u32 gMonPalette_Scraggy[] = INCBIN_U32("graphics/pokemon/scraggy/normal.gbapal.lz"); + const u16 gMonPalette_Scraggy[] = INCBIN_U16("graphics/pokemon/scraggy/normal.gbapal"); const u32 gMonBackPic_Scraggy[] = INCBIN_U32("graphics/pokemon/scraggy/back.4bpp.lz"); - const u32 gMonShinyPalette_Scraggy[] = INCBIN_U32("graphics/pokemon/scraggy/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Scraggy[] = INCBIN_U16("graphics/pokemon/scraggy/shiny.gbapal"); const u8 gMonIcon_Scraggy[] = INCBIN_U8("graphics/pokemon/scraggy/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Scraggy[] = INCBIN_U8("graphics/pokemon/scraggy/footprint.1bpp"); @@ -17161,15 +17161,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Scraggy[] = INCBIN_U16("graphics/pokemon/scraggy/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Scraggy[] = INCBIN_U16("graphics/pokemon/scraggy/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Scrafty[] = INCBIN_U16("graphics/pokemon/scrafty/normal.gbapal"); const u32 gMonBackPic_Scrafty[] = INCBIN_U32("graphics/pokemon/scrafty/back.4bpp.lz"); - const u32 gMonShinyPalette_Scrafty[] = INCBIN_U32("graphics/pokemon/scrafty/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Scrafty[] = INCBIN_U16("graphics/pokemon/scrafty/shiny.gbapal"); const u8 gMonIcon_Scrafty[] = INCBIN_U8("graphics/pokemon/scrafty/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Scrafty[] = INCBIN_U8("graphics/pokemon/scrafty/footprint.1bpp"); @@ -17177,17 +17177,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Scrafty[] = INCBIN_U16("graphics/pokemon/scrafty/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Scrafty[] = INCBIN_U16("graphics/pokemon/scrafty/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SCRAGGY #if P_FAMILY_SIGILYPH const u32 gMonFrontPic_Sigilyph[] = INCBIN_U32("graphics/pokemon/sigilyph/anim_front.4bpp.lz"); - const u32 gMonPalette_Sigilyph[] = INCBIN_U32("graphics/pokemon/sigilyph/normal.gbapal.lz"); + const u16 gMonPalette_Sigilyph[] = INCBIN_U16("graphics/pokemon/sigilyph/normal.gbapal"); const u32 gMonBackPic_Sigilyph[] = INCBIN_U32("graphics/pokemon/sigilyph/back.4bpp.lz"); - const u32 gMonShinyPalette_Sigilyph[] = INCBIN_U32("graphics/pokemon/sigilyph/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Sigilyph[] = INCBIN_U16("graphics/pokemon/sigilyph/shiny.gbapal"); const u8 gMonIcon_Sigilyph[] = INCBIN_U8("graphics/pokemon/sigilyph/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Sigilyph[] = INCBIN_U8("graphics/pokemon/sigilyph/footprint.1bpp"); @@ -17195,17 +17195,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Sigilyph[] = INCBIN_U16("graphics/pokemon/sigilyph/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Sigilyph[] = INCBIN_U16("graphics/pokemon/sigilyph/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SIGILYPH #if P_FAMILY_YAMASK const u32 gMonFrontPic_Yamask[] = INCBIN_U32("graphics/pokemon/yamask/anim_front.4bpp.lz"); - const u32 gMonPalette_Yamask[] = INCBIN_U32("graphics/pokemon/yamask/normal.gbapal.lz"); + const u16 gMonPalette_Yamask[] = INCBIN_U16("graphics/pokemon/yamask/normal.gbapal"); const u32 gMonBackPic_Yamask[] = INCBIN_U32("graphics/pokemon/yamask/back.4bpp.lz"); - const u32 gMonShinyPalette_Yamask[] = INCBIN_U32("graphics/pokemon/yamask/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Yamask[] = INCBIN_U16("graphics/pokemon/yamask/shiny.gbapal"); const u8 gMonIcon_Yamask[] = INCBIN_U8("graphics/pokemon/yamask/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Yamask[] = INCBIN_U8("graphics/pokemon/yamask/footprint.1bpp"); @@ -17213,15 +17213,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Yamask[] = INCBIN_U16("graphics/pokemon/yamask/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Yamask[] = INCBIN_U16("graphics/pokemon/yamask/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Cofagrigus[] = INCBIN_U16("graphics/pokemon/cofagrigus/normal.gbapal"); const u32 gMonBackPic_Cofagrigus[] = INCBIN_U32("graphics/pokemon/cofagrigus/back.4bpp.lz"); - const u32 gMonShinyPalette_Cofagrigus[] = INCBIN_U32("graphics/pokemon/cofagrigus/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Cofagrigus[] = INCBIN_U16("graphics/pokemon/cofagrigus/shiny.gbapal"); const u8 gMonIcon_Cofagrigus[] = INCBIN_U8("graphics/pokemon/cofagrigus/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Cofagrigus[] = INCBIN_U8("graphics/pokemon/cofagrigus/footprint.1bpp"); @@ -17229,29 +17229,29 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Cofagrigus[] = INCBIN_U16("graphics/pokemon/cofagrigus/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Cofagrigus[] = INCBIN_U16("graphics/pokemon/cofagrigus/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if P_GALARIAN_FORMS const u32 gMonFrontPic_YamaskGalar[] = INCBIN_U32("graphics/pokemon/yamask/galar/front.4bpp.lz"); - const u32 gMonPalette_YamaskGalar[] = INCBIN_U32("graphics/pokemon/yamask/galar/normal.gbapal.lz"); + const u16 gMonPalette_YamaskGalar[] = INCBIN_U16("graphics/pokemon/yamask/galar/normal.gbapal"); const u32 gMonBackPic_YamaskGalar[] = INCBIN_U32("graphics/pokemon/yamask/galar/back.4bpp.lz"); - const u32 gMonShinyPalette_YamaskGalar[] = INCBIN_U32("graphics/pokemon/yamask/galar/shiny.gbapal.lz"); + const u16 gMonShinyPalette_YamaskGalar[] = INCBIN_U16("graphics/pokemon/yamask/galar/shiny.gbapal"); const u8 gMonIcon_YamaskGalar[] = INCBIN_U8("graphics/pokemon/yamask/galar/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS const u32 gObjectEventPic_YamaskGalar[] = INCBIN_COMP("graphics/pokemon/yamask/galar/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - const u32 gOverworldPalette_YamaskGalar[] = INCBIN_U32("graphics/pokemon/yamask/galar/overworld_normal.gbapal.lz"); - const u32 gShinyOverworldPalette_YamaskGalar[] = INCBIN_U32("graphics/pokemon/yamask/galar/overworld_shiny.gbapal.lz"); + const u16 gOverworldPalette_YamaskGalar[] = INCBIN_U16("graphics/pokemon/yamask/galar/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_YamaskGalar[] = INCBIN_U16("graphics/pokemon/yamask/galar/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Runerigus[] = INCBIN_U16("graphics/pokemon/runerigus/normal.gbapal"); const u32 gMonBackPic_Runerigus[] = INCBIN_U32("graphics/pokemon/runerigus/back.4bpp.lz"); - const u32 gMonShinyPalette_Runerigus[] = INCBIN_U32("graphics/pokemon/runerigus/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Runerigus[] = INCBIN_U16("graphics/pokemon/runerigus/shiny.gbapal"); const u8 gMonIcon_Runerigus[] = INCBIN_U8("graphics/pokemon/runerigus/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Runerigus[] = INCBIN_U8("graphics/pokemon/runerigus/footprint.1bpp"); @@ -17259,8 +17259,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Runerigus[] = INCBIN_U16("graphics/pokemon/runerigus/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Runerigus[] = INCBIN_U16("graphics/pokemon/runerigus/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GALARIAN_FORMS @@ -17268,9 +17268,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_TIRTOUGA const u32 gMonFrontPic_Tirtouga[] = INCBIN_U32("graphics/pokemon/tirtouga/anim_front.4bpp.lz"); - const u32 gMonPalette_Tirtouga[] = INCBIN_U32("graphics/pokemon/tirtouga/normal.gbapal.lz"); + const u16 gMonPalette_Tirtouga[] = INCBIN_U16("graphics/pokemon/tirtouga/normal.gbapal"); const u32 gMonBackPic_Tirtouga[] = INCBIN_U32("graphics/pokemon/tirtouga/back.4bpp.lz"); - const u32 gMonShinyPalette_Tirtouga[] = INCBIN_U32("graphics/pokemon/tirtouga/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Tirtouga[] = INCBIN_U16("graphics/pokemon/tirtouga/shiny.gbapal"); const u8 gMonIcon_Tirtouga[] = INCBIN_U8("graphics/pokemon/tirtouga/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Tirtouga[] = INCBIN_U8("graphics/pokemon/tirtouga/footprint.1bpp"); @@ -17278,15 +17278,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Tirtouga[] = INCBIN_U16("graphics/pokemon/tirtouga/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Tirtouga[] = INCBIN_U16("graphics/pokemon/tirtouga/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Carracosta[] = INCBIN_U16("graphics/pokemon/carracosta/normal.gbapal"); const u32 gMonBackPic_Carracosta[] = INCBIN_U32("graphics/pokemon/carracosta/back.4bpp.lz"); - const u32 gMonShinyPalette_Carracosta[] = INCBIN_U32("graphics/pokemon/carracosta/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Carracosta[] = INCBIN_U16("graphics/pokemon/carracosta/shiny.gbapal"); const u8 gMonIcon_Carracosta[] = INCBIN_U8("graphics/pokemon/carracosta/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Carracosta[] = INCBIN_U8("graphics/pokemon/carracosta/footprint.1bpp"); @@ -17294,17 +17294,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Carracosta[] = INCBIN_U16("graphics/pokemon/carracosta/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Carracosta[] = INCBIN_U16("graphics/pokemon/carracosta/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_TIRTOUGA #if P_FAMILY_ARCHEN const u32 gMonFrontPic_Archen[] = INCBIN_U32("graphics/pokemon/archen/anim_front.4bpp.lz"); - const u32 gMonPalette_Archen[] = INCBIN_U32("graphics/pokemon/archen/normal.gbapal.lz"); + const u16 gMonPalette_Archen[] = INCBIN_U16("graphics/pokemon/archen/normal.gbapal"); const u32 gMonBackPic_Archen[] = INCBIN_U32("graphics/pokemon/archen/back.4bpp.lz"); - const u32 gMonShinyPalette_Archen[] = INCBIN_U32("graphics/pokemon/archen/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Archen[] = INCBIN_U16("graphics/pokemon/archen/shiny.gbapal"); const u8 gMonIcon_Archen[] = INCBIN_U8("graphics/pokemon/archen/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Archen[] = INCBIN_U8("graphics/pokemon/archen/footprint.1bpp"); @@ -17312,15 +17312,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Archen[] = INCBIN_U16("graphics/pokemon/archen/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Archen[] = INCBIN_U16("graphics/pokemon/archen/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Archeops[] = INCBIN_U16("graphics/pokemon/archeops/normal.gbapal"); const u32 gMonBackPic_Archeops[] = INCBIN_U32("graphics/pokemon/archeops/back.4bpp.lz"); - const u32 gMonShinyPalette_Archeops[] = INCBIN_U32("graphics/pokemon/archeops/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Archeops[] = INCBIN_U16("graphics/pokemon/archeops/shiny.gbapal"); const u8 gMonIcon_Archeops[] = INCBIN_U8("graphics/pokemon/archeops/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Archeops[] = INCBIN_U8("graphics/pokemon/archeops/footprint.1bpp"); @@ -17328,17 +17328,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Archeops[] = INCBIN_U16("graphics/pokemon/archeops/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Archeops[] = INCBIN_U16("graphics/pokemon/archeops/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_ARCHEN #if P_FAMILY_TRUBBISH const u32 gMonFrontPic_Trubbish[] = INCBIN_U32("graphics/pokemon/trubbish/anim_front.4bpp.lz"); - const u32 gMonPalette_Trubbish[] = INCBIN_U32("graphics/pokemon/trubbish/normal.gbapal.lz"); + const u16 gMonPalette_Trubbish[] = INCBIN_U16("graphics/pokemon/trubbish/normal.gbapal"); const u32 gMonBackPic_Trubbish[] = INCBIN_U32("graphics/pokemon/trubbish/back.4bpp.lz"); - const u32 gMonShinyPalette_Trubbish[] = INCBIN_U32("graphics/pokemon/trubbish/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Trubbish[] = INCBIN_U16("graphics/pokemon/trubbish/shiny.gbapal"); const u8 gMonIcon_Trubbish[] = INCBIN_U8("graphics/pokemon/trubbish/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Trubbish[] = INCBIN_U8("graphics/pokemon/trubbish/footprint.1bpp"); @@ -17346,15 +17346,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Trubbish[] = INCBIN_U16("graphics/pokemon/trubbish/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Trubbish[] = INCBIN_U16("graphics/pokemon/trubbish/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Garbodor[] = INCBIN_U16("graphics/pokemon/garbodor/normal.gbapal"); const u32 gMonBackPic_Garbodor[] = INCBIN_U32("graphics/pokemon/garbodor/back.4bpp.lz"); - const u32 gMonShinyPalette_Garbodor[] = INCBIN_U32("graphics/pokemon/garbodor/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Garbodor[] = INCBIN_U16("graphics/pokemon/garbodor/shiny.gbapal"); const u8 gMonIcon_Garbodor[] = INCBIN_U8("graphics/pokemon/garbodor/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Garbodor[] = INCBIN_U8("graphics/pokemon/garbodor/footprint.1bpp"); @@ -17362,22 +17362,22 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Garbodor[] = INCBIN_U16("graphics/pokemon/garbodor/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Garbodor[] = INCBIN_U16("graphics/pokemon/garbodor/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if P_GIGANTAMAX_FORMS const u32 gMonFrontPic_GarbodorGmax[] = INCBIN_U32("graphics/pokemon/garbodor/gmax/front.4bpp.lz"); const u32 gMonBackPic_GarbodorGmax[] = INCBIN_U32("graphics/pokemon/garbodor/gmax/back.4bpp.lz"); - const u32 gMonPalette_GarbodorGmax[] = INCBIN_U32("graphics/pokemon/garbodor/gmax/normal.gbapal.lz"); - const u32 gMonShinyPalette_GarbodorGmax[] = INCBIN_U32("graphics/pokemon/garbodor/gmax/shiny.gbapal.lz"); + const u16 gMonPalette_GarbodorGmax[] = INCBIN_U16("graphics/pokemon/garbodor/gmax/normal.gbapal"); + const u16 gMonShinyPalette_GarbodorGmax[] = INCBIN_U16("graphics/pokemon/garbodor/gmax/shiny.gbapal"); const u8 gMonIcon_GarbodorGmax[] = INCBIN_U8("graphics/pokemon/garbodor/gmax/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS // const u32 gObjectEventPic_GarbodorGmax[] = INCBIN_COMP("graphics/pokemon/garbodor/gmax/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - // const u32 gOverworldPalette_GarbodorGmax[] = INCBIN_U32("graphics/pokemon/garbodor/gmax/overworld_normal.gbapal.lz"); - // const u32 gShinyOverworldPalette_GarbodorGmax[] = INCBIN_U32("graphics/pokemon/garbodor/gmax/overworld_shiny.gbapal.lz"); + // const u16 gOverworldPalette_GarbodorGmax[] = INCBIN_U16("graphics/pokemon/garbodor/gmax/overworld_normal.gbapal"); + // const u16 gShinyOverworldPalette_GarbodorGmax[] = INCBIN_U16("graphics/pokemon/garbodor/gmax/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GIGANTAMAX_FORMS @@ -17385,9 +17385,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_ZORUA const u32 gMonFrontPic_Zorua[] = INCBIN_U32("graphics/pokemon/zorua/anim_front.4bpp.lz"); - const u32 gMonPalette_Zorua[] = INCBIN_U32("graphics/pokemon/zorua/normal.gbapal.lz"); + const u16 gMonPalette_Zorua[] = INCBIN_U16("graphics/pokemon/zorua/normal.gbapal"); const u32 gMonBackPic_Zorua[] = INCBIN_U32("graphics/pokemon/zorua/back.4bpp.lz"); - const u32 gMonShinyPalette_Zorua[] = INCBIN_U32("graphics/pokemon/zorua/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Zorua[] = INCBIN_U16("graphics/pokemon/zorua/shiny.gbapal"); const u8 gMonIcon_Zorua[] = INCBIN_U8("graphics/pokemon/zorua/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Zorua[] = INCBIN_U8("graphics/pokemon/zorua/footprint.1bpp"); @@ -17395,15 +17395,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Zorua[] = INCBIN_U16("graphics/pokemon/zorua/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Zorua[] = INCBIN_U16("graphics/pokemon/zorua/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Zoroark[] = INCBIN_U16("graphics/pokemon/zoroark/normal.gbapal"); const u32 gMonBackPic_Zoroark[] = INCBIN_U32("graphics/pokemon/zoroark/back.4bpp.lz"); - const u32 gMonShinyPalette_Zoroark[] = INCBIN_U32("graphics/pokemon/zoroark/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Zoroark[] = INCBIN_U16("graphics/pokemon/zoroark/shiny.gbapal"); const u8 gMonIcon_Zoroark[] = INCBIN_U8("graphics/pokemon/zoroark/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Zoroark[] = INCBIN_U8("graphics/pokemon/zoroark/footprint.1bpp"); @@ -17411,35 +17411,35 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Zoroark[] = INCBIN_U16("graphics/pokemon/zoroark/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Zoroark[] = INCBIN_U16("graphics/pokemon/zoroark/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if P_HISUIAN_FORMS const u32 gMonFrontPic_ZoruaHisui[] = INCBIN_U32("graphics/pokemon/zorua/hisui/front.4bpp.lz"); - const u32 gMonPalette_ZoruaHisui[] = INCBIN_U32("graphics/pokemon/zorua/hisui/normal.gbapal.lz"); + const u16 gMonPalette_ZoruaHisui[] = INCBIN_U16("graphics/pokemon/zorua/hisui/normal.gbapal"); const u32 gMonBackPic_ZoruaHisui[] = INCBIN_U32("graphics/pokemon/zorua/hisui/back.4bpp.lz"); - const u32 gMonShinyPalette_ZoruaHisui[] = INCBIN_U32("graphics/pokemon/zorua/hisui/shiny.gbapal.lz"); + const u16 gMonShinyPalette_ZoruaHisui[] = INCBIN_U16("graphics/pokemon/zorua/hisui/shiny.gbapal"); const u8 gMonIcon_ZoruaHisui[] = INCBIN_U8("graphics/pokemon/zorua/hisui/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS const u32 gObjectEventPic_ZoruaHisui[] = INCBIN_COMP("graphics/pokemon/zorua/hisui/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - const u32 gOverworldPalette_ZoruaHisui[] = INCBIN_U32("graphics/pokemon/zorua/hisui/overworld_normal.gbapal.lz"); - const u32 gShinyOverworldPalette_ZoruaHisui[] = INCBIN_U32("graphics/pokemon/zorua/hisui/overworld_shiny.gbapal.lz"); + const u16 gOverworldPalette_ZoruaHisui[] = INCBIN_U16("graphics/pokemon/zorua/hisui/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_ZoruaHisui[] = INCBIN_U16("graphics/pokemon/zorua/hisui/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_ZoroarkHisui[] = INCBIN_U32("graphics/pokemon/zoroark/hisui/front.4bpp.lz"); - const u32 gMonPalette_ZoroarkHisui[] = INCBIN_U32("graphics/pokemon/zoroark/hisui/normal.gbapal.lz"); + const u16 gMonPalette_ZoroarkHisui[] = INCBIN_U16("graphics/pokemon/zoroark/hisui/normal.gbapal"); const u32 gMonBackPic_ZoroarkHisui[] = INCBIN_U32("graphics/pokemon/zoroark/hisui/back.4bpp.lz"); - const u32 gMonShinyPalette_ZoroarkHisui[] = INCBIN_U32("graphics/pokemon/zoroark/hisui/shiny.gbapal.lz"); + const u16 gMonShinyPalette_ZoroarkHisui[] = INCBIN_U16("graphics/pokemon/zoroark/hisui/shiny.gbapal"); const u8 gMonIcon_ZoroarkHisui[] = INCBIN_U8("graphics/pokemon/zoroark/hisui/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS const u32 gObjectEventPic_ZoroarkHisui[] = INCBIN_COMP("graphics/pokemon/zoroark/hisui/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - const u32 gOverworldPalette_ZoroarkHisui[] = INCBIN_U32("graphics/pokemon/zoroark/hisui/overworld_normal.gbapal.lz"); - const u32 gShinyOverworldPalette_ZoroarkHisui[] = INCBIN_U32("graphics/pokemon/zoroark/hisui/overworld_shiny.gbapal.lz"); + const u16 gOverworldPalette_ZoroarkHisui[] = INCBIN_U16("graphics/pokemon/zoroark/hisui/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_ZoroarkHisui[] = INCBIN_U16("graphics/pokemon/zoroark/hisui/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_HISUIAN_FORMS @@ -17447,9 +17447,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_MINCCINO const u32 gMonFrontPic_Minccino[] = INCBIN_U32("graphics/pokemon/minccino/anim_front.4bpp.lz"); - const u32 gMonPalette_Minccino[] = INCBIN_U32("graphics/pokemon/minccino/normal.gbapal.lz"); + const u16 gMonPalette_Minccino[] = INCBIN_U16("graphics/pokemon/minccino/normal.gbapal"); const u32 gMonBackPic_Minccino[] = INCBIN_U32("graphics/pokemon/minccino/back.4bpp.lz"); - const u32 gMonShinyPalette_Minccino[] = INCBIN_U32("graphics/pokemon/minccino/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Minccino[] = INCBIN_U16("graphics/pokemon/minccino/shiny.gbapal"); const u8 gMonIcon_Minccino[] = INCBIN_U8("graphics/pokemon/minccino/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Minccino[] = INCBIN_U8("graphics/pokemon/minccino/footprint.1bpp"); @@ -17457,15 +17457,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Minccino[] = INCBIN_U16("graphics/pokemon/minccino/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Minccino[] = INCBIN_U16("graphics/pokemon/minccino/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Cinccino[] = INCBIN_U16("graphics/pokemon/cinccino/normal.gbapal"); const u32 gMonBackPic_Cinccino[] = INCBIN_U32("graphics/pokemon/cinccino/back.4bpp.lz"); - const u32 gMonShinyPalette_Cinccino[] = INCBIN_U32("graphics/pokemon/cinccino/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Cinccino[] = INCBIN_U16("graphics/pokemon/cinccino/shiny.gbapal"); const u8 gMonIcon_Cinccino[] = INCBIN_U8("graphics/pokemon/cinccino/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Cinccino[] = INCBIN_U8("graphics/pokemon/cinccino/footprint.1bpp"); @@ -17473,17 +17473,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Cinccino[] = INCBIN_U16("graphics/pokemon/cinccino/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Cinccino[] = INCBIN_U16("graphics/pokemon/cinccino/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_MINCCINO #if P_FAMILY_GOTHITA const u32 gMonFrontPic_Gothita[] = INCBIN_U32("graphics/pokemon/gothita/anim_front.4bpp.lz"); - const u32 gMonPalette_Gothita[] = INCBIN_U32("graphics/pokemon/gothita/normal.gbapal.lz"); + const u16 gMonPalette_Gothita[] = INCBIN_U16("graphics/pokemon/gothita/normal.gbapal"); const u32 gMonBackPic_Gothita[] = INCBIN_U32("graphics/pokemon/gothita/back.4bpp.lz"); - const u32 gMonShinyPalette_Gothita[] = INCBIN_U32("graphics/pokemon/gothita/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Gothita[] = INCBIN_U16("graphics/pokemon/gothita/shiny.gbapal"); const u8 gMonIcon_Gothita[] = INCBIN_U8("graphics/pokemon/gothita/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Gothita[] = INCBIN_U8("graphics/pokemon/gothita/footprint.1bpp"); @@ -17491,15 +17491,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Gothita[] = INCBIN_U16("graphics/pokemon/gothita/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Gothita[] = INCBIN_U16("graphics/pokemon/gothita/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Gothorita[] = INCBIN_U16("graphics/pokemon/gothorita/normal.gbapal"); const u32 gMonBackPic_Gothorita[] = INCBIN_U32("graphics/pokemon/gothorita/back.4bpp.lz"); - const u32 gMonShinyPalette_Gothorita[] = INCBIN_U32("graphics/pokemon/gothorita/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Gothorita[] = INCBIN_U16("graphics/pokemon/gothorita/shiny.gbapal"); const u8 gMonIcon_Gothorita[] = INCBIN_U8("graphics/pokemon/gothorita/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Gothorita[] = INCBIN_U8("graphics/pokemon/gothorita/footprint.1bpp"); @@ -17507,15 +17507,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Gothorita[] = INCBIN_U16("graphics/pokemon/gothorita/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Gothorita[] = INCBIN_U16("graphics/pokemon/gothorita/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Gothitelle[] = INCBIN_U16("graphics/pokemon/gothitelle/normal.gbapal"); const u32 gMonBackPic_Gothitelle[] = INCBIN_U32("graphics/pokemon/gothitelle/back.4bpp.lz"); - const u32 gMonShinyPalette_Gothitelle[] = INCBIN_U32("graphics/pokemon/gothitelle/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Gothitelle[] = INCBIN_U16("graphics/pokemon/gothitelle/shiny.gbapal"); const u8 gMonIcon_Gothitelle[] = INCBIN_U8("graphics/pokemon/gothitelle/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Gothitelle[] = INCBIN_U8("graphics/pokemon/gothitelle/footprint.1bpp"); @@ -17523,17 +17523,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Gothitelle[] = INCBIN_U16("graphics/pokemon/gothitelle/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Gothitelle[] = INCBIN_U16("graphics/pokemon/gothitelle/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_GOTHITA #if P_FAMILY_SOLOSIS const u32 gMonFrontPic_Solosis[] = INCBIN_U32("graphics/pokemon/solosis/anim_front.4bpp.lz"); - const u32 gMonPalette_Solosis[] = INCBIN_U32("graphics/pokemon/solosis/normal.gbapal.lz"); + const u16 gMonPalette_Solosis[] = INCBIN_U16("graphics/pokemon/solosis/normal.gbapal"); const u32 gMonBackPic_Solosis[] = INCBIN_U32("graphics/pokemon/solosis/back.4bpp.lz"); - const u32 gMonShinyPalette_Solosis[] = INCBIN_U32("graphics/pokemon/solosis/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Solosis[] = INCBIN_U16("graphics/pokemon/solosis/shiny.gbapal"); const u8 gMonIcon_Solosis[] = INCBIN_U8("graphics/pokemon/solosis/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Solosis[] = INCBIN_U8("graphics/pokemon/solosis/footprint.1bpp"); @@ -17541,15 +17541,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Solosis[] = INCBIN_U16("graphics/pokemon/solosis/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Solosis[] = INCBIN_U16("graphics/pokemon/solosis/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Duosion[] = INCBIN_U16("graphics/pokemon/duosion/normal.gbapal"); const u32 gMonBackPic_Duosion[] = INCBIN_U32("graphics/pokemon/duosion/back.4bpp.lz"); - const u32 gMonShinyPalette_Duosion[] = INCBIN_U32("graphics/pokemon/duosion/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Duosion[] = INCBIN_U16("graphics/pokemon/duosion/shiny.gbapal"); const u8 gMonIcon_Duosion[] = INCBIN_U8("graphics/pokemon/duosion/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Duosion[] = INCBIN_U8("graphics/pokemon/duosion/footprint.1bpp"); @@ -17557,15 +17557,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Duosion[] = INCBIN_U16("graphics/pokemon/duosion/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Duosion[] = INCBIN_U16("graphics/pokemon/duosion/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Reuniclus[] = INCBIN_U16("graphics/pokemon/reuniclus/normal.gbapal"); const u32 gMonBackPic_Reuniclus[] = INCBIN_U32("graphics/pokemon/reuniclus/back.4bpp.lz"); - const u32 gMonShinyPalette_Reuniclus[] = INCBIN_U32("graphics/pokemon/reuniclus/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Reuniclus[] = INCBIN_U16("graphics/pokemon/reuniclus/shiny.gbapal"); const u8 gMonIcon_Reuniclus[] = INCBIN_U8("graphics/pokemon/reuniclus/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Reuniclus[] = INCBIN_U8("graphics/pokemon/reuniclus/footprint.1bpp"); @@ -17573,17 +17573,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Reuniclus[] = INCBIN_U16("graphics/pokemon/reuniclus/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Reuniclus[] = INCBIN_U16("graphics/pokemon/reuniclus/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SOLOSIS #if P_FAMILY_DUCKLETT const u32 gMonFrontPic_Ducklett[] = INCBIN_U32("graphics/pokemon/ducklett/anim_front.4bpp.lz"); - const u32 gMonPalette_Ducklett[] = INCBIN_U32("graphics/pokemon/ducklett/normal.gbapal.lz"); + const u16 gMonPalette_Ducklett[] = INCBIN_U16("graphics/pokemon/ducklett/normal.gbapal"); const u32 gMonBackPic_Ducklett[] = INCBIN_U32("graphics/pokemon/ducklett/back.4bpp.lz"); - const u32 gMonShinyPalette_Ducklett[] = INCBIN_U32("graphics/pokemon/ducklett/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Ducklett[] = INCBIN_U16("graphics/pokemon/ducklett/shiny.gbapal"); const u8 gMonIcon_Ducklett[] = INCBIN_U8("graphics/pokemon/ducklett/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Ducklett[] = INCBIN_U8("graphics/pokemon/ducklett/footprint.1bpp"); @@ -17591,15 +17591,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Ducklett[] = INCBIN_U16("graphics/pokemon/ducklett/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Ducklett[] = INCBIN_U16("graphics/pokemon/ducklett/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Swanna[] = INCBIN_U16("graphics/pokemon/swanna/normal.gbapal"); const u32 gMonBackPic_Swanna[] = INCBIN_U32("graphics/pokemon/swanna/back.4bpp.lz"); - const u32 gMonShinyPalette_Swanna[] = INCBIN_U32("graphics/pokemon/swanna/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Swanna[] = INCBIN_U16("graphics/pokemon/swanna/shiny.gbapal"); const u8 gMonIcon_Swanna[] = INCBIN_U8("graphics/pokemon/swanna/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Swanna[] = INCBIN_U8("graphics/pokemon/swanna/footprint.1bpp"); @@ -17607,17 +17607,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Swanna[] = INCBIN_U16("graphics/pokemon/swanna/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Swanna[] = INCBIN_U16("graphics/pokemon/swanna/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_DUCKLETT #if P_FAMILY_VANILLITE const u32 gMonFrontPic_Vanillite[] = INCBIN_U32("graphics/pokemon/vanillite/anim_front.4bpp.lz"); - const u32 gMonPalette_Vanillite[] = INCBIN_U32("graphics/pokemon/vanillite/normal.gbapal.lz"); + const u16 gMonPalette_Vanillite[] = INCBIN_U16("graphics/pokemon/vanillite/normal.gbapal"); const u32 gMonBackPic_Vanillite[] = INCBIN_U32("graphics/pokemon/vanillite/back.4bpp.lz"); - const u32 gMonShinyPalette_Vanillite[] = INCBIN_U32("graphics/pokemon/vanillite/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Vanillite[] = INCBIN_U16("graphics/pokemon/vanillite/shiny.gbapal"); const u8 gMonIcon_Vanillite[] = INCBIN_U8("graphics/pokemon/vanillite/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Vanillite[] = INCBIN_U8("graphics/pokemon/vanillite/footprint.1bpp"); @@ -17625,15 +17625,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Vanillite[] = INCBIN_U16("graphics/pokemon/vanillite/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Vanillite[] = INCBIN_U16("graphics/pokemon/vanillite/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Vanillish[] = INCBIN_U16("graphics/pokemon/vanillish/normal.gbapal"); const u32 gMonBackPic_Vanillish[] = INCBIN_U32("graphics/pokemon/vanillish/back.4bpp.lz"); - const u32 gMonShinyPalette_Vanillish[] = INCBIN_U32("graphics/pokemon/vanillish/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Vanillish[] = INCBIN_U16("graphics/pokemon/vanillish/shiny.gbapal"); const u8 gMonIcon_Vanillish[] = INCBIN_U8("graphics/pokemon/vanillish/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Vanillish[] = INCBIN_U8("graphics/pokemon/vanillish/footprint.1bpp"); @@ -17641,15 +17641,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Vanillish[] = INCBIN_U16("graphics/pokemon/vanillish/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Vanillish[] = INCBIN_U16("graphics/pokemon/vanillish/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Vanilluxe[] = INCBIN_U16("graphics/pokemon/vanilluxe/normal.gbapal"); const u32 gMonBackPic_Vanilluxe[] = INCBIN_U32("graphics/pokemon/vanilluxe/back.4bpp.lz"); - const u32 gMonShinyPalette_Vanilluxe[] = INCBIN_U32("graphics/pokemon/vanilluxe/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Vanilluxe[] = INCBIN_U16("graphics/pokemon/vanilluxe/shiny.gbapal"); const u8 gMonIcon_Vanilluxe[] = INCBIN_U8("graphics/pokemon/vanilluxe/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Vanilluxe[] = INCBIN_U8("graphics/pokemon/vanilluxe/footprint.1bpp"); @@ -17657,8 +17657,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Vanilluxe[] = INCBIN_U16("graphics/pokemon/vanilluxe/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Vanilluxe[] = INCBIN_U16("graphics/pokemon/vanilluxe/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_VANILLITE @@ -17670,20 +17670,20 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u8 gMonFootprint_Deerling[] = INCBIN_U8("graphics/pokemon/deerling/footprint.1bpp"); #endif //P_FOOTPRINTS - const u32 gMonPalette_DeerlingSpring[] = INCBIN_U32("graphics/pokemon/deerling/normal.gbapal.lz"); - const u32 gMonShinyPalette_DeerlingSpring[] = INCBIN_U32("graphics/pokemon/deerling/shiny.gbapal.lz"); + const u16 gMonPalette_DeerlingSpring[] = INCBIN_U16("graphics/pokemon/deerling/normal.gbapal"); + const u16 gMonShinyPalette_DeerlingSpring[] = INCBIN_U16("graphics/pokemon/deerling/shiny.gbapal"); const u8 gMonIcon_DeerlingSpring[] = INCBIN_U8("graphics/pokemon/deerling/icon.4bpp"); - const u32 gMonPalette_DeerlingSummer[] = INCBIN_U32("graphics/pokemon/deerling/summer/normal.gbapal.lz"); - const u32 gMonShinyPalette_DeerlingSummer[] = INCBIN_U32("graphics/pokemon/deerling/summer/shiny.gbapal.lz"); + const u16 gMonPalette_DeerlingSummer[] = INCBIN_U16("graphics/pokemon/deerling/summer/normal.gbapal"); + const u16 gMonShinyPalette_DeerlingSummer[] = INCBIN_U16("graphics/pokemon/deerling/summer/shiny.gbapal"); const u8 gMonIcon_DeerlingSummer[] = INCBIN_U8("graphics/pokemon/deerling/summer/icon.4bpp"); - const u32 gMonPalette_DeerlingAutumn[] = INCBIN_U32("graphics/pokemon/deerling/autumn/normal.gbapal.lz"); - const u32 gMonShinyPalette_DeerlingAutumn[] = INCBIN_U32("graphics/pokemon/deerling/autumn/shiny.gbapal.lz"); + const u16 gMonPalette_DeerlingAutumn[] = INCBIN_U16("graphics/pokemon/deerling/autumn/normal.gbapal"); + const u16 gMonShinyPalette_DeerlingAutumn[] = INCBIN_U16("graphics/pokemon/deerling/autumn/shiny.gbapal"); const u8 gMonIcon_DeerlingAutumn[] = INCBIN_U8("graphics/pokemon/deerling/autumn/icon.4bpp"); - const u32 gMonPalette_DeerlingWinter[] = INCBIN_U32("graphics/pokemon/deerling/winter/normal.gbapal.lz"); - const u32 gMonShinyPalette_DeerlingWinter[] = INCBIN_U32("graphics/pokemon/deerling/winter/shiny.gbapal.lz"); + const u16 gMonPalette_DeerlingWinter[] = INCBIN_U16("graphics/pokemon/deerling/winter/normal.gbapal"); + const u16 gMonShinyPalette_DeerlingWinter[] = INCBIN_U16("graphics/pokemon/deerling/winter/shiny.gbapal"); const u8 gMonIcon_DeerlingWinter[] = INCBIN_U8("graphics/pokemon/deerling/winter/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS @@ -17692,42 +17692,42 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ 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"); + const u16 gOverworldPalette_DeerlingSpring[] = INCBIN_U16("graphics/pokemon/deerling/overworld_normal.gbapal"); + const u16 gOverworldPalette_DeerlingSummer[] = INCBIN_U16("graphics/pokemon/deerling/summer/overworld_normal.gbapal"); + const u16 gOverworldPalette_DeerlingAutumn[] = INCBIN_U16("graphics/pokemon/deerling/autumn/overworld_normal.gbapal"); + const u16 gOverworldPalette_DeerlingWinter[] = INCBIN_U16("graphics/pokemon/deerling/winter/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_DeerlingSpring[] = INCBIN_U16("graphics/pokemon/deerling/overworld_shiny.gbapal"); + const u16 gShinyOverworldPalette_DeerlingSummer[] = INCBIN_U16("graphics/pokemon/deerling/summer/overworld_shiny.gbapal"); + const u16 gShinyOverworldPalette_DeerlingAutumn[] = INCBIN_U16("graphics/pokemon/deerling/autumn/overworld_shiny.gbapal"); + const u16 gShinyOverworldPalette_DeerlingWinter[] = INCBIN_U16("graphics/pokemon/deerling/winter/overworld_shiny.gbapal"); #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 u16 gMonPalette_SawsbuckSpring[] = INCBIN_U16("graphics/pokemon/sawsbuck/normal.gbapal"); const u32 gMonBackPic_SawsbuckSpring[] = INCBIN_U32("graphics/pokemon/sawsbuck/back.4bpp.lz"); - const u32 gMonShinyPalette_SawsbuckSpring[] = INCBIN_U32("graphics/pokemon/sawsbuck/shiny.gbapal.lz"); + const u16 gMonShinyPalette_SawsbuckSpring[] = INCBIN_U16("graphics/pokemon/sawsbuck/shiny.gbapal"); const u8 gMonIcon_SawsbuckSpring[] = INCBIN_U8("graphics/pokemon/sawsbuck/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Sawsbuck[] = INCBIN_U8("graphics/pokemon/sawsbuck/footprint.1bpp"); #endif //P_FOOTPRINTS const u32 gMonFrontPic_SawsbuckSummer[] = INCBIN_U32("graphics/pokemon/sawsbuck/summer/anim_front.4bpp.lz"); - const u32 gMonPalette_SawsbuckSummer[] = INCBIN_U32("graphics/pokemon/sawsbuck/summer/normal.gbapal.lz"); + const u16 gMonPalette_SawsbuckSummer[] = INCBIN_U16("graphics/pokemon/sawsbuck/summer/normal.gbapal"); const u32 gMonBackPic_SawsbuckSummer[] = INCBIN_U32("graphics/pokemon/sawsbuck/summer/back.4bpp.lz"); - const u32 gMonShinyPalette_SawsbuckSummer[] = INCBIN_U32("graphics/pokemon/sawsbuck/summer/shiny.gbapal.lz"); + const u16 gMonShinyPalette_SawsbuckSummer[] = INCBIN_U16("graphics/pokemon/sawsbuck/summer/shiny.gbapal"); const u8 gMonIcon_SawsbuckSummer[] = INCBIN_U8("graphics/pokemon/sawsbuck/summer/icon.4bpp"); const u32 gMonFrontPic_SawsbuckAutumn[] = INCBIN_U32("graphics/pokemon/sawsbuck/autumn/anim_front.4bpp.lz"); - const u32 gMonPalette_SawsbuckAutumn[] = INCBIN_U32("graphics/pokemon/sawsbuck/autumn/normal.gbapal.lz"); + const u16 gMonPalette_SawsbuckAutumn[] = INCBIN_U16("graphics/pokemon/sawsbuck/autumn/normal.gbapal"); const u32 gMonBackPic_SawsbuckAutumn[] = INCBIN_U32("graphics/pokemon/sawsbuck/autumn/back.4bpp.lz"); - const u32 gMonShinyPalette_SawsbuckAutumn[] = INCBIN_U32("graphics/pokemon/sawsbuck/autumn/shiny.gbapal.lz"); + const u16 gMonShinyPalette_SawsbuckAutumn[] = INCBIN_U16("graphics/pokemon/sawsbuck/autumn/shiny.gbapal"); const u8 gMonIcon_SawsbuckAutumn[] = INCBIN_U8("graphics/pokemon/sawsbuck/autumn/icon.4bpp"); const u32 gMonFrontPic_SawsbuckWinter[] = INCBIN_U32("graphics/pokemon/sawsbuck/winter/anim_front.4bpp.lz"); - const u32 gMonPalette_SawsbuckWinter[] = INCBIN_U32("graphics/pokemon/sawsbuck/winter/normal.gbapal.lz"); + const u16 gMonPalette_SawsbuckWinter[] = INCBIN_U16("graphics/pokemon/sawsbuck/winter/normal.gbapal"); 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 u16 gMonShinyPalette_SawsbuckWinter[] = INCBIN_U16("graphics/pokemon/sawsbuck/winter/shiny.gbapal"); const u8 gMonIcon_SawsbuckWinter[] = INCBIN_U8("graphics/pokemon/sawsbuck/winter/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS @@ -17736,23 +17736,23 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ 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"); + const u16 gOverworldPalette_SawsbuckSpring[] = INCBIN_U16("graphics/pokemon/sawsbuck/overworld_normal.gbapal"); + const u16 gOverworldPalette_SawsbuckSummer[] = INCBIN_U16("graphics/pokemon/sawsbuck/summer/overworld_normal.gbapal"); + const u16 gOverworldPalette_SawsbuckAutumn[] = INCBIN_U16("graphics/pokemon/sawsbuck/autumn/overworld_normal.gbapal"); + const u16 gOverworldPalette_SawsbuckWinter[] = INCBIN_U16("graphics/pokemon/sawsbuck/winter/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_SawsbuckSpring[] = INCBIN_U16("graphics/pokemon/sawsbuck/overworld_shiny.gbapal"); + const u16 gShinyOverworldPalette_SawsbuckSummer[] = INCBIN_U16("graphics/pokemon/sawsbuck/summer/overworld_shiny.gbapal"); + const u16 gShinyOverworldPalette_SawsbuckAutumn[] = INCBIN_U16("graphics/pokemon/sawsbuck/autumn/overworld_shiny.gbapal"); + const u16 gShinyOverworldPalette_SawsbuckWinter[] = INCBIN_U16("graphics/pokemon/sawsbuck/winter/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_DEERLING #if P_FAMILY_EMOLGA const u32 gMonFrontPic_Emolga[] = INCBIN_U32("graphics/pokemon/emolga/anim_front.4bpp.lz"); - const u32 gMonPalette_Emolga[] = INCBIN_U32("graphics/pokemon/emolga/normal.gbapal.lz"); + const u16 gMonPalette_Emolga[] = INCBIN_U16("graphics/pokemon/emolga/normal.gbapal"); const u32 gMonBackPic_Emolga[] = INCBIN_U32("graphics/pokemon/emolga/back.4bpp.lz"); - const u32 gMonShinyPalette_Emolga[] = INCBIN_U32("graphics/pokemon/emolga/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Emolga[] = INCBIN_U16("graphics/pokemon/emolga/shiny.gbapal"); const u8 gMonIcon_Emolga[] = INCBIN_U8("graphics/pokemon/emolga/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Emolga[] = INCBIN_U8("graphics/pokemon/emolga/footprint.1bpp"); @@ -17760,17 +17760,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Emolga[] = INCBIN_U16("graphics/pokemon/emolga/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Emolga[] = INCBIN_U16("graphics/pokemon/emolga/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_EMOLGA #if P_FAMILY_KARRABLAST const u32 gMonFrontPic_Karrablast[] = INCBIN_U32("graphics/pokemon/karrablast/anim_front.4bpp.lz"); - const u32 gMonPalette_Karrablast[] = INCBIN_U32("graphics/pokemon/karrablast/normal.gbapal.lz"); + const u16 gMonPalette_Karrablast[] = INCBIN_U16("graphics/pokemon/karrablast/normal.gbapal"); const u32 gMonBackPic_Karrablast[] = INCBIN_U32("graphics/pokemon/karrablast/back.4bpp.lz"); - const u32 gMonShinyPalette_Karrablast[] = INCBIN_U32("graphics/pokemon/karrablast/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Karrablast[] = INCBIN_U16("graphics/pokemon/karrablast/shiny.gbapal"); const u8 gMonIcon_Karrablast[] = INCBIN_U8("graphics/pokemon/karrablast/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Karrablast[] = INCBIN_U8("graphics/pokemon/karrablast/footprint.1bpp"); @@ -17778,15 +17778,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Karrablast[] = INCBIN_U16("graphics/pokemon/karrablast/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Karrablast[] = INCBIN_U16("graphics/pokemon/karrablast/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Escavalier[] = INCBIN_U16("graphics/pokemon/escavalier/normal.gbapal"); const u32 gMonBackPic_Escavalier[] = INCBIN_U32("graphics/pokemon/escavalier/back.4bpp.lz"); - const u32 gMonShinyPalette_Escavalier[] = INCBIN_U32("graphics/pokemon/escavalier/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Escavalier[] = INCBIN_U16("graphics/pokemon/escavalier/shiny.gbapal"); const u8 gMonIcon_Escavalier[] = INCBIN_U8("graphics/pokemon/escavalier/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Escavalier[] = INCBIN_U8("graphics/pokemon/escavalier/footprint.1bpp"); @@ -17794,17 +17794,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Escavalier[] = INCBIN_U16("graphics/pokemon/escavalier/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Escavalier[] = INCBIN_U16("graphics/pokemon/escavalier/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_KARRABLAST #if P_FAMILY_FOONGUS const u32 gMonFrontPic_Foongus[] = INCBIN_U32("graphics/pokemon/foongus/anim_front.4bpp.lz"); - const u32 gMonPalette_Foongus[] = INCBIN_U32("graphics/pokemon/foongus/normal.gbapal.lz"); + const u16 gMonPalette_Foongus[] = INCBIN_U16("graphics/pokemon/foongus/normal.gbapal"); const u32 gMonBackPic_Foongus[] = INCBIN_U32("graphics/pokemon/foongus/back.4bpp.lz"); - const u32 gMonShinyPalette_Foongus[] = INCBIN_U32("graphics/pokemon/foongus/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Foongus[] = INCBIN_U16("graphics/pokemon/foongus/shiny.gbapal"); const u8 gMonIcon_Foongus[] = INCBIN_U8("graphics/pokemon/foongus/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Foongus[] = INCBIN_U8("graphics/pokemon/foongus/footprint.1bpp"); @@ -17812,15 +17812,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Foongus[] = INCBIN_U16("graphics/pokemon/foongus/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Foongus[] = INCBIN_U16("graphics/pokemon/foongus/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Amoonguss[] = INCBIN_U16("graphics/pokemon/amoonguss/normal.gbapal"); const u32 gMonBackPic_Amoonguss[] = INCBIN_U32("graphics/pokemon/amoonguss/back.4bpp.lz"); - const u32 gMonShinyPalette_Amoonguss[] = INCBIN_U32("graphics/pokemon/amoonguss/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Amoonguss[] = INCBIN_U16("graphics/pokemon/amoonguss/shiny.gbapal"); const u8 gMonIcon_Amoonguss[] = INCBIN_U8("graphics/pokemon/amoonguss/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Amoonguss[] = INCBIN_U8("graphics/pokemon/amoonguss/footprint.1bpp"); @@ -17828,17 +17828,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Amoonguss[] = INCBIN_U16("graphics/pokemon/amoonguss/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Amoonguss[] = INCBIN_U16("graphics/pokemon/amoonguss/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_FOONGUS #if P_FAMILY_FRILLISH const u32 gMonFrontPic_Frillish[] = INCBIN_U32("graphics/pokemon/frillish/anim_front.4bpp.lz"); - const u32 gMonPalette_Frillish[] = INCBIN_U32("graphics/pokemon/frillish/normal.gbapal.lz"); + const u16 gMonPalette_Frillish[] = INCBIN_U16("graphics/pokemon/frillish/normal.gbapal"); const u32 gMonBackPic_Frillish[] = INCBIN_U32("graphics/pokemon/frillish/back.4bpp.lz"); - const u32 gMonShinyPalette_Frillish[] = INCBIN_U32("graphics/pokemon/frillish/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Frillish[] = INCBIN_U16("graphics/pokemon/frillish/shiny.gbapal"); const u8 gMonIcon_Frillish[] = INCBIN_U8("graphics/pokemon/frillish/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Frillish[] = INCBIN_U8("graphics/pokemon/frillish/footprint.1bpp"); @@ -17846,30 +17846,30 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Frillish[] = INCBIN_U16("graphics/pokemon/frillish/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Frillish[] = INCBIN_U16("graphics/pokemon/frillish/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if P_GENDER_DIFFERENCES 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 u16 gMonPalette_FrillishF[] = INCBIN_U16("graphics/pokemon/frillish/normalf.gbapal"); 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 u16 gMonShinyPalette_FrillishF[] = INCBIN_U16("graphics/pokemon/frillish/shinyf.gbapal"); 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/overworldf.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"); + const u16 gOverworldPalette_FrillishF[] = INCBIN_U16("graphics/pokemon/frillish/overworld_normalf.gbapal"); + const u16 gShinyOverworldPalette_FrillishF[] = INCBIN_U16("graphics/pokemon/frillish/overworld_shinyf.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GENDER_DIFFERENCES const u32 gMonFrontPic_Jellicent[] = INCBIN_U32("graphics/pokemon/jellicent/anim_front.4bpp.lz"); - const u32 gMonPalette_Jellicent[] = INCBIN_U32("graphics/pokemon/jellicent/normal.gbapal.lz"); + const u16 gMonPalette_Jellicent[] = INCBIN_U16("graphics/pokemon/jellicent/normal.gbapal"); const u32 gMonBackPic_Jellicent[] = INCBIN_U32("graphics/pokemon/jellicent/back.4bpp.lz"); - const u32 gMonShinyPalette_Jellicent[] = INCBIN_U32("graphics/pokemon/jellicent/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Jellicent[] = INCBIN_U16("graphics/pokemon/jellicent/shiny.gbapal"); const u8 gMonIcon_Jellicent[] = INCBIN_U8("graphics/pokemon/jellicent/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Jellicent[] = INCBIN_U8("graphics/pokemon/jellicent/footprint.1bpp"); @@ -17877,22 +17877,22 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Jellicent[] = INCBIN_U16("graphics/pokemon/jellicent/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Jellicent[] = INCBIN_U16("graphics/pokemon/jellicent/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if P_GENDER_DIFFERENCES 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 u16 gMonPalette_JellicentF[] = INCBIN_U16("graphics/pokemon/jellicent/normalf.gbapal"); 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 u16 gMonShinyPalette_JellicentF[] = INCBIN_U16("graphics/pokemon/jellicent/shinyf.gbapal"); 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/overworldf.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - const u32 gOverworldPalette_JellicentF[] = INCBIN_U32("graphics/pokemon/jellicent/overworld_normalf.gbapal.lz"); - const u32 gShinyOverworldPalette_JellicentF[] = INCBIN_U32("graphics/pokemon/jellicent/overworld_shinyf.gbapal.lz"); + const u16 gOverworldPalette_JellicentF[] = INCBIN_U16("graphics/pokemon/jellicent/overworld_normalf.gbapal"); + const u16 gShinyOverworldPalette_JellicentF[] = INCBIN_U16("graphics/pokemon/jellicent/overworld_shinyf.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GENDER_DIFFERENCES @@ -17900,9 +17900,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_ALOMOMOLA const u32 gMonFrontPic_Alomomola[] = INCBIN_U32("graphics/pokemon/alomomola/anim_front.4bpp.lz"); - const u32 gMonPalette_Alomomola[] = INCBIN_U32("graphics/pokemon/alomomola/normal.gbapal.lz"); + const u16 gMonPalette_Alomomola[] = INCBIN_U16("graphics/pokemon/alomomola/normal.gbapal"); const u32 gMonBackPic_Alomomola[] = INCBIN_U32("graphics/pokemon/alomomola/back.4bpp.lz"); - const u32 gMonShinyPalette_Alomomola[] = INCBIN_U32("graphics/pokemon/alomomola/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Alomomola[] = INCBIN_U16("graphics/pokemon/alomomola/shiny.gbapal"); const u8 gMonIcon_Alomomola[] = INCBIN_U8("graphics/pokemon/alomomola/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Alomomola[] = INCBIN_U8("graphics/pokemon/alomomola/footprint.1bpp"); @@ -17910,17 +17910,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Alomomola[] = INCBIN_U16("graphics/pokemon/alomomola/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Alomomola[] = INCBIN_U16("graphics/pokemon/alomomola/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_ALOMOMOLA #if P_FAMILY_JOLTIK const u32 gMonFrontPic_Joltik[] = INCBIN_U32("graphics/pokemon/joltik/anim_front.4bpp.lz"); - const u32 gMonPalette_Joltik[] = INCBIN_U32("graphics/pokemon/joltik/normal.gbapal.lz"); + const u16 gMonPalette_Joltik[] = INCBIN_U16("graphics/pokemon/joltik/normal.gbapal"); const u32 gMonBackPic_Joltik[] = INCBIN_U32("graphics/pokemon/joltik/back.4bpp.lz"); - const u32 gMonShinyPalette_Joltik[] = INCBIN_U32("graphics/pokemon/joltik/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Joltik[] = INCBIN_U16("graphics/pokemon/joltik/shiny.gbapal"); const u8 gMonIcon_Joltik[] = INCBIN_U8("graphics/pokemon/joltik/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Joltik[] = INCBIN_U8("graphics/pokemon/joltik/footprint.1bpp"); @@ -17928,15 +17928,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Joltik[] = INCBIN_U16("graphics/pokemon/joltik/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Joltik[] = INCBIN_U16("graphics/pokemon/joltik/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Galvantula[] = INCBIN_U16("graphics/pokemon/galvantula/normal.gbapal"); const u32 gMonBackPic_Galvantula[] = INCBIN_U32("graphics/pokemon/galvantula/back.4bpp.lz"); - const u32 gMonShinyPalette_Galvantula[] = INCBIN_U32("graphics/pokemon/galvantula/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Galvantula[] = INCBIN_U16("graphics/pokemon/galvantula/shiny.gbapal"); const u8 gMonIcon_Galvantula[] = INCBIN_U8("graphics/pokemon/galvantula/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Galvantula[] = INCBIN_U8("graphics/pokemon/galvantula/footprint.1bpp"); @@ -17944,17 +17944,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Galvantula[] = INCBIN_U16("graphics/pokemon/galvantula/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Galvantula[] = INCBIN_U16("graphics/pokemon/galvantula/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_JOLTIK #if P_FAMILY_FERROSEED const u32 gMonFrontPic_Ferroseed[] = INCBIN_U32("graphics/pokemon/ferroseed/anim_front.4bpp.lz"); - const u32 gMonPalette_Ferroseed[] = INCBIN_U32("graphics/pokemon/ferroseed/normal.gbapal.lz"); + const u16 gMonPalette_Ferroseed[] = INCBIN_U16("graphics/pokemon/ferroseed/normal.gbapal"); const u32 gMonBackPic_Ferroseed[] = INCBIN_U32("graphics/pokemon/ferroseed/back.4bpp.lz"); - const u32 gMonShinyPalette_Ferroseed[] = INCBIN_U32("graphics/pokemon/ferroseed/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Ferroseed[] = INCBIN_U16("graphics/pokemon/ferroseed/shiny.gbapal"); const u8 gMonIcon_Ferroseed[] = INCBIN_U8("graphics/pokemon/ferroseed/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Ferroseed[] = INCBIN_U8("graphics/pokemon/ferroseed/footprint.1bpp"); @@ -17962,15 +17962,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Ferroseed[] = INCBIN_U16("graphics/pokemon/ferroseed/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Ferroseed[] = INCBIN_U16("graphics/pokemon/ferroseed/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Ferrothorn[] = INCBIN_U16("graphics/pokemon/ferrothorn/normal.gbapal"); const u32 gMonBackPic_Ferrothorn[] = INCBIN_U32("graphics/pokemon/ferrothorn/back.4bpp.lz"); - const u32 gMonShinyPalette_Ferrothorn[] = INCBIN_U32("graphics/pokemon/ferrothorn/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Ferrothorn[] = INCBIN_U16("graphics/pokemon/ferrothorn/shiny.gbapal"); const u8 gMonIcon_Ferrothorn[] = INCBIN_U8("graphics/pokemon/ferrothorn/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Ferrothorn[] = INCBIN_U8("graphics/pokemon/ferrothorn/footprint.1bpp"); @@ -17978,17 +17978,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Ferrothorn[] = INCBIN_U16("graphics/pokemon/ferrothorn/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Ferrothorn[] = INCBIN_U16("graphics/pokemon/ferrothorn/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_FERROSEED #if P_FAMILY_KLINK const u32 gMonFrontPic_Klink[] = INCBIN_U32("graphics/pokemon/klink/anim_front.4bpp.lz"); - const u32 gMonPalette_Klink[] = INCBIN_U32("graphics/pokemon/klink/normal.gbapal.lz"); + const u16 gMonPalette_Klink[] = INCBIN_U16("graphics/pokemon/klink/normal.gbapal"); const u32 gMonBackPic_Klink[] = INCBIN_U32("graphics/pokemon/klink/back.4bpp.lz"); - const u32 gMonShinyPalette_Klink[] = INCBIN_U32("graphics/pokemon/klink/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Klink[] = INCBIN_U16("graphics/pokemon/klink/shiny.gbapal"); const u8 gMonIcon_Klink[] = INCBIN_U8("graphics/pokemon/klink/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Klink[] = INCBIN_U8("graphics/pokemon/klink/footprint.1bpp"); @@ -17996,15 +17996,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Klink[] = INCBIN_U16("graphics/pokemon/klink/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Klink[] = INCBIN_U16("graphics/pokemon/klink/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Klang[] = INCBIN_U16("graphics/pokemon/klang/normal.gbapal"); const u32 gMonBackPic_Klang[] = INCBIN_U32("graphics/pokemon/klang/back.4bpp.lz"); - const u32 gMonShinyPalette_Klang[] = INCBIN_U32("graphics/pokemon/klang/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Klang[] = INCBIN_U16("graphics/pokemon/klang/shiny.gbapal"); const u8 gMonIcon_Klang[] = INCBIN_U8("graphics/pokemon/klang/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Klang[] = INCBIN_U8("graphics/pokemon/klang/footprint.1bpp"); @@ -18012,15 +18012,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Klang[] = INCBIN_U16("graphics/pokemon/klang/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Klang[] = INCBIN_U16("graphics/pokemon/klang/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Klinklang[] = INCBIN_U16("graphics/pokemon/klinklang/normal.gbapal"); const u32 gMonBackPic_Klinklang[] = INCBIN_U32("graphics/pokemon/klinklang/back.4bpp.lz"); - const u32 gMonShinyPalette_Klinklang[] = INCBIN_U32("graphics/pokemon/klinklang/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Klinklang[] = INCBIN_U16("graphics/pokemon/klinklang/shiny.gbapal"); const u8 gMonIcon_Klinklang[] = INCBIN_U8("graphics/pokemon/klinklang/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Klinklang[] = INCBIN_U8("graphics/pokemon/klinklang/footprint.1bpp"); @@ -18028,17 +18028,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Klinklang[] = INCBIN_U16("graphics/pokemon/klinklang/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Klinklang[] = INCBIN_U16("graphics/pokemon/klinklang/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_KLINK #if P_FAMILY_TYNAMO const u32 gMonFrontPic_Tynamo[] = INCBIN_U32("graphics/pokemon/tynamo/anim_front.4bpp.lz"); - const u32 gMonPalette_Tynamo[] = INCBIN_U32("graphics/pokemon/tynamo/normal.gbapal.lz"); + const u16 gMonPalette_Tynamo[] = INCBIN_U16("graphics/pokemon/tynamo/normal.gbapal"); const u32 gMonBackPic_Tynamo[] = INCBIN_U32("graphics/pokemon/tynamo/back.4bpp.lz"); - const u32 gMonShinyPalette_Tynamo[] = INCBIN_U32("graphics/pokemon/tynamo/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Tynamo[] = INCBIN_U16("graphics/pokemon/tynamo/shiny.gbapal"); const u8 gMonIcon_Tynamo[] = INCBIN_U8("graphics/pokemon/tynamo/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Tynamo[] = INCBIN_U8("graphics/pokemon/tynamo/footprint.1bpp"); @@ -18046,15 +18046,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Tynamo[] = INCBIN_U16("graphics/pokemon/tynamo/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Tynamo[] = INCBIN_U16("graphics/pokemon/tynamo/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Eelektrik[] = INCBIN_U16("graphics/pokemon/eelektrik/normal.gbapal"); const u32 gMonBackPic_Eelektrik[] = INCBIN_U32("graphics/pokemon/eelektrik/back.4bpp.lz"); - const u32 gMonShinyPalette_Eelektrik[] = INCBIN_U32("graphics/pokemon/eelektrik/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Eelektrik[] = INCBIN_U16("graphics/pokemon/eelektrik/shiny.gbapal"); const u8 gMonIcon_Eelektrik[] = INCBIN_U8("graphics/pokemon/eelektrik/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Eelektrik[] = INCBIN_U8("graphics/pokemon/eelektrik/footprint.1bpp"); @@ -18062,15 +18062,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Eelektrik[] = INCBIN_U16("graphics/pokemon/eelektrik/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Eelektrik[] = INCBIN_U16("graphics/pokemon/eelektrik/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Eelektross[] = INCBIN_U16("graphics/pokemon/eelektross/normal.gbapal"); const u32 gMonBackPic_Eelektross[] = INCBIN_U32("graphics/pokemon/eelektross/back.4bpp.lz"); - const u32 gMonShinyPalette_Eelektross[] = INCBIN_U32("graphics/pokemon/eelektross/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Eelektross[] = INCBIN_U16("graphics/pokemon/eelektross/shiny.gbapal"); const u8 gMonIcon_Eelektross[] = INCBIN_U8("graphics/pokemon/eelektross/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Eelektross[] = INCBIN_U8("graphics/pokemon/eelektross/footprint.1bpp"); @@ -18078,17 +18078,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Eelektross[] = INCBIN_U16("graphics/pokemon/eelektross/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Eelektross[] = INCBIN_U16("graphics/pokemon/eelektross/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_TYNAMO #if P_FAMILY_ELGYEM const u32 gMonFrontPic_Elgyem[] = INCBIN_U32("graphics/pokemon/elgyem/anim_front.4bpp.lz"); - const u32 gMonPalette_Elgyem[] = INCBIN_U32("graphics/pokemon/elgyem/normal.gbapal.lz"); + const u16 gMonPalette_Elgyem[] = INCBIN_U16("graphics/pokemon/elgyem/normal.gbapal"); const u32 gMonBackPic_Elgyem[] = INCBIN_U32("graphics/pokemon/elgyem/back.4bpp.lz"); - const u32 gMonShinyPalette_Elgyem[] = INCBIN_U32("graphics/pokemon/elgyem/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Elgyem[] = INCBIN_U16("graphics/pokemon/elgyem/shiny.gbapal"); const u8 gMonIcon_Elgyem[] = INCBIN_U8("graphics/pokemon/elgyem/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Elgyem[] = INCBIN_U8("graphics/pokemon/elgyem/footprint.1bpp"); @@ -18096,15 +18096,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Elgyem[] = INCBIN_U16("graphics/pokemon/elgyem/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Elgyem[] = INCBIN_U16("graphics/pokemon/elgyem/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Beheeyem[] = INCBIN_U16("graphics/pokemon/beheeyem/normal.gbapal"); const u32 gMonBackPic_Beheeyem[] = INCBIN_U32("graphics/pokemon/beheeyem/back.4bpp.lz"); - const u32 gMonShinyPalette_Beheeyem[] = INCBIN_U32("graphics/pokemon/beheeyem/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Beheeyem[] = INCBIN_U16("graphics/pokemon/beheeyem/shiny.gbapal"); const u8 gMonIcon_Beheeyem[] = INCBIN_U8("graphics/pokemon/beheeyem/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Beheeyem[] = INCBIN_U8("graphics/pokemon/beheeyem/footprint.1bpp"); @@ -18112,17 +18112,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Beheeyem[] = INCBIN_U16("graphics/pokemon/beheeyem/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Beheeyem[] = INCBIN_U16("graphics/pokemon/beheeyem/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_ELGYEM #if P_FAMILY_LITWICK const u32 gMonFrontPic_Litwick[] = INCBIN_U32("graphics/pokemon/litwick/anim_front.4bpp.lz"); - const u32 gMonPalette_Litwick[] = INCBIN_U32("graphics/pokemon/litwick/normal.gbapal.lz"); + const u16 gMonPalette_Litwick[] = INCBIN_U16("graphics/pokemon/litwick/normal.gbapal"); const u32 gMonBackPic_Litwick[] = INCBIN_U32("graphics/pokemon/litwick/back.4bpp.lz"); - const u32 gMonShinyPalette_Litwick[] = INCBIN_U32("graphics/pokemon/litwick/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Litwick[] = INCBIN_U16("graphics/pokemon/litwick/shiny.gbapal"); const u8 gMonIcon_Litwick[] = INCBIN_U8("graphics/pokemon/litwick/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Litwick[] = INCBIN_U8("graphics/pokemon/litwick/footprint.1bpp"); @@ -18130,15 +18130,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Litwick[] = INCBIN_U16("graphics/pokemon/litwick/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Litwick[] = INCBIN_U16("graphics/pokemon/litwick/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Lampent[] = INCBIN_U16("graphics/pokemon/lampent/normal.gbapal"); const u32 gMonBackPic_Lampent[] = INCBIN_U32("graphics/pokemon/lampent/back.4bpp.lz"); - const u32 gMonShinyPalette_Lampent[] = INCBIN_U32("graphics/pokemon/lampent/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Lampent[] = INCBIN_U16("graphics/pokemon/lampent/shiny.gbapal"); const u8 gMonIcon_Lampent[] = INCBIN_U8("graphics/pokemon/lampent/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Lampent[] = INCBIN_U8("graphics/pokemon/lampent/footprint.1bpp"); @@ -18146,15 +18146,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Lampent[] = INCBIN_U16("graphics/pokemon/lampent/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Lampent[] = INCBIN_U16("graphics/pokemon/lampent/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Chandelure[] = INCBIN_U16("graphics/pokemon/chandelure/normal.gbapal"); const u32 gMonBackPic_Chandelure[] = INCBIN_U32("graphics/pokemon/chandelure/back.4bpp.lz"); - const u32 gMonShinyPalette_Chandelure[] = INCBIN_U32("graphics/pokemon/chandelure/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Chandelure[] = INCBIN_U16("graphics/pokemon/chandelure/shiny.gbapal"); const u8 gMonIcon_Chandelure[] = INCBIN_U8("graphics/pokemon/chandelure/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Chandelure[] = INCBIN_U8("graphics/pokemon/chandelure/footprint.1bpp"); @@ -18162,17 +18162,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Chandelure[] = INCBIN_U16("graphics/pokemon/chandelure/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Chandelure[] = INCBIN_U16("graphics/pokemon/chandelure/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_LITWICK #if P_FAMILY_AXEW const u32 gMonFrontPic_Axew[] = INCBIN_U32("graphics/pokemon/axew/anim_front.4bpp.lz"); - const u32 gMonPalette_Axew[] = INCBIN_U32("graphics/pokemon/axew/normal.gbapal.lz"); + const u16 gMonPalette_Axew[] = INCBIN_U16("graphics/pokemon/axew/normal.gbapal"); const u32 gMonBackPic_Axew[] = INCBIN_U32("graphics/pokemon/axew/back.4bpp.lz"); - const u32 gMonShinyPalette_Axew[] = INCBIN_U32("graphics/pokemon/axew/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Axew[] = INCBIN_U16("graphics/pokemon/axew/shiny.gbapal"); const u8 gMonIcon_Axew[] = INCBIN_U8("graphics/pokemon/axew/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Axew[] = INCBIN_U8("graphics/pokemon/axew/footprint.1bpp"); @@ -18180,15 +18180,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Axew[] = INCBIN_U16("graphics/pokemon/axew/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Axew[] = INCBIN_U16("graphics/pokemon/axew/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Fraxure[] = INCBIN_U16("graphics/pokemon/fraxure/normal.gbapal"); const u32 gMonBackPic_Fraxure[] = INCBIN_U32("graphics/pokemon/fraxure/back.4bpp.lz"); - const u32 gMonShinyPalette_Fraxure[] = INCBIN_U32("graphics/pokemon/fraxure/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Fraxure[] = INCBIN_U16("graphics/pokemon/fraxure/shiny.gbapal"); const u8 gMonIcon_Fraxure[] = INCBIN_U8("graphics/pokemon/fraxure/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Fraxure[] = INCBIN_U8("graphics/pokemon/fraxure/footprint.1bpp"); @@ -18196,15 +18196,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Fraxure[] = INCBIN_U16("graphics/pokemon/fraxure/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Fraxure[] = INCBIN_U16("graphics/pokemon/fraxure/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Haxorus[] = INCBIN_U16("graphics/pokemon/haxorus/normal.gbapal"); const u32 gMonBackPic_Haxorus[] = INCBIN_U32("graphics/pokemon/haxorus/back.4bpp.lz"); - const u32 gMonShinyPalette_Haxorus[] = INCBIN_U32("graphics/pokemon/haxorus/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Haxorus[] = INCBIN_U16("graphics/pokemon/haxorus/shiny.gbapal"); const u8 gMonIcon_Haxorus[] = INCBIN_U8("graphics/pokemon/haxorus/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Haxorus[] = INCBIN_U8("graphics/pokemon/haxorus/footprint.1bpp"); @@ -18212,17 +18212,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Haxorus[] = INCBIN_U16("graphics/pokemon/haxorus/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Haxorus[] = INCBIN_U16("graphics/pokemon/haxorus/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_AXEW #if P_FAMILY_CUBCHOO const u32 gMonFrontPic_Cubchoo[] = INCBIN_U32("graphics/pokemon/cubchoo/anim_front.4bpp.lz"); - const u32 gMonPalette_Cubchoo[] = INCBIN_U32("graphics/pokemon/cubchoo/normal.gbapal.lz"); + const u16 gMonPalette_Cubchoo[] = INCBIN_U16("graphics/pokemon/cubchoo/normal.gbapal"); const u32 gMonBackPic_Cubchoo[] = INCBIN_U32("graphics/pokemon/cubchoo/back.4bpp.lz"); - const u32 gMonShinyPalette_Cubchoo[] = INCBIN_U32("graphics/pokemon/cubchoo/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Cubchoo[] = INCBIN_U16("graphics/pokemon/cubchoo/shiny.gbapal"); const u8 gMonIcon_Cubchoo[] = INCBIN_U8("graphics/pokemon/cubchoo/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Cubchoo[] = INCBIN_U8("graphics/pokemon/cubchoo/footprint.1bpp"); @@ -18230,15 +18230,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Cubchoo[] = INCBIN_U16("graphics/pokemon/cubchoo/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Cubchoo[] = INCBIN_U16("graphics/pokemon/cubchoo/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Beartic[] = INCBIN_U16("graphics/pokemon/beartic/normal.gbapal"); const u32 gMonBackPic_Beartic[] = INCBIN_U32("graphics/pokemon/beartic/back.4bpp.lz"); - const u32 gMonShinyPalette_Beartic[] = INCBIN_U32("graphics/pokemon/beartic/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Beartic[] = INCBIN_U16("graphics/pokemon/beartic/shiny.gbapal"); const u8 gMonIcon_Beartic[] = INCBIN_U8("graphics/pokemon/beartic/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Beartic[] = INCBIN_U8("graphics/pokemon/beartic/footprint.1bpp"); @@ -18246,17 +18246,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Beartic[] = INCBIN_U16("graphics/pokemon/beartic/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Beartic[] = INCBIN_U16("graphics/pokemon/beartic/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_CUBCHOO #if P_FAMILY_CRYOGONAL const u32 gMonFrontPic_Cryogonal[] = INCBIN_U32("graphics/pokemon/cryogonal/anim_front.4bpp.lz"); - const u32 gMonPalette_Cryogonal[] = INCBIN_U32("graphics/pokemon/cryogonal/normal.gbapal.lz"); + const u16 gMonPalette_Cryogonal[] = INCBIN_U16("graphics/pokemon/cryogonal/normal.gbapal"); const u32 gMonBackPic_Cryogonal[] = INCBIN_U32("graphics/pokemon/cryogonal/back.4bpp.lz"); - const u32 gMonShinyPalette_Cryogonal[] = INCBIN_U32("graphics/pokemon/cryogonal/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Cryogonal[] = INCBIN_U16("graphics/pokemon/cryogonal/shiny.gbapal"); const u8 gMonIcon_Cryogonal[] = INCBIN_U8("graphics/pokemon/cryogonal/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Cryogonal[] = INCBIN_U8("graphics/pokemon/cryogonal/footprint.1bpp"); @@ -18264,17 +18264,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Cryogonal[] = INCBIN_U16("graphics/pokemon/cryogonal/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Cryogonal[] = INCBIN_U16("graphics/pokemon/cryogonal/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_CRYOGONAL #if P_FAMILY_SHELMET const u32 gMonFrontPic_Shelmet[] = INCBIN_U32("graphics/pokemon/shelmet/anim_front.4bpp.lz"); - const u32 gMonPalette_Shelmet[] = INCBIN_U32("graphics/pokemon/shelmet/normal.gbapal.lz"); + const u16 gMonPalette_Shelmet[] = INCBIN_U16("graphics/pokemon/shelmet/normal.gbapal"); const u32 gMonBackPic_Shelmet[] = INCBIN_U32("graphics/pokemon/shelmet/back.4bpp.lz"); - const u32 gMonShinyPalette_Shelmet[] = INCBIN_U32("graphics/pokemon/shelmet/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Shelmet[] = INCBIN_U16("graphics/pokemon/shelmet/shiny.gbapal"); const u8 gMonIcon_Shelmet[] = INCBIN_U8("graphics/pokemon/shelmet/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Shelmet[] = INCBIN_U8("graphics/pokemon/shelmet/footprint.1bpp"); @@ -18282,15 +18282,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Shelmet[] = INCBIN_U16("graphics/pokemon/shelmet/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Shelmet[] = INCBIN_U16("graphics/pokemon/shelmet/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Accelgor[] = INCBIN_U16("graphics/pokemon/accelgor/normal.gbapal"); const u32 gMonBackPic_Accelgor[] = INCBIN_U32("graphics/pokemon/accelgor/back.4bpp.lz"); - const u32 gMonShinyPalette_Accelgor[] = INCBIN_U32("graphics/pokemon/accelgor/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Accelgor[] = INCBIN_U16("graphics/pokemon/accelgor/shiny.gbapal"); const u8 gMonIcon_Accelgor[] = INCBIN_U8("graphics/pokemon/accelgor/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Accelgor[] = INCBIN_U8("graphics/pokemon/accelgor/footprint.1bpp"); @@ -18298,17 +18298,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Accelgor[] = INCBIN_U16("graphics/pokemon/accelgor/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Accelgor[] = INCBIN_U16("graphics/pokemon/accelgor/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SHELMET #if P_FAMILY_STUNFISK const u32 gMonFrontPic_Stunfisk[] = INCBIN_U32("graphics/pokemon/stunfisk/anim_front.4bpp.lz"); - const u32 gMonPalette_Stunfisk[] = INCBIN_U32("graphics/pokemon/stunfisk/normal.gbapal.lz"); + const u16 gMonPalette_Stunfisk[] = INCBIN_U16("graphics/pokemon/stunfisk/normal.gbapal"); const u32 gMonBackPic_Stunfisk[] = INCBIN_U32("graphics/pokemon/stunfisk/back.4bpp.lz"); - const u32 gMonShinyPalette_Stunfisk[] = INCBIN_U32("graphics/pokemon/stunfisk/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Stunfisk[] = INCBIN_U16("graphics/pokemon/stunfisk/shiny.gbapal"); const u8 gMonIcon_Stunfisk[] = INCBIN_U8("graphics/pokemon/stunfisk/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Stunfisk[] = INCBIN_U8("graphics/pokemon/stunfisk/footprint.1bpp"); @@ -18316,22 +18316,22 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Stunfisk[] = INCBIN_U16("graphics/pokemon/stunfisk/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Stunfisk[] = INCBIN_U16("graphics/pokemon/stunfisk/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if P_GALARIAN_FORMS const u32 gMonFrontPic_StunfiskGalar[] = INCBIN_U32("graphics/pokemon/stunfisk/galar/front.4bpp.lz"); - const u32 gMonPalette_StunfiskGalar[] = INCBIN_U32("graphics/pokemon/stunfisk/galar/normal.gbapal.lz"); + const u16 gMonPalette_StunfiskGalar[] = INCBIN_U16("graphics/pokemon/stunfisk/galar/normal.gbapal"); const u32 gMonBackPic_StunfiskGalar[] = INCBIN_U32("graphics/pokemon/stunfisk/galar/back.4bpp.lz"); - const u32 gMonShinyPalette_StunfiskGalar[] = INCBIN_U32("graphics/pokemon/stunfisk/galar/shiny.gbapal.lz"); + const u16 gMonShinyPalette_StunfiskGalar[] = INCBIN_U16("graphics/pokemon/stunfisk/galar/shiny.gbapal"); const u8 gMonIcon_StunfiskGalar[] = INCBIN_U8("graphics/pokemon/stunfisk/galar/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS const u32 gObjectEventPic_StunfiskGalar[] = INCBIN_COMP("graphics/pokemon/stunfisk/galar/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - const u32 gOverworldPalette_StunfiskGalar[] = INCBIN_U32("graphics/pokemon/stunfisk/galar/overworld_normal.gbapal.lz"); - const u32 gShinyOverworldPalette_StunfiskGalar[] = INCBIN_U32("graphics/pokemon/stunfisk/galar/overworld_shiny.gbapal.lz"); + const u16 gOverworldPalette_StunfiskGalar[] = INCBIN_U16("graphics/pokemon/stunfisk/galar/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_StunfiskGalar[] = INCBIN_U16("graphics/pokemon/stunfisk/galar/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GALARIAN_FORMS @@ -18339,9 +18339,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_MIENFOO const u32 gMonFrontPic_Mienfoo[] = INCBIN_U32("graphics/pokemon/mienfoo/anim_front.4bpp.lz"); - const u32 gMonPalette_Mienfoo[] = INCBIN_U32("graphics/pokemon/mienfoo/normal.gbapal.lz"); + const u16 gMonPalette_Mienfoo[] = INCBIN_U16("graphics/pokemon/mienfoo/normal.gbapal"); const u32 gMonBackPic_Mienfoo[] = INCBIN_U32("graphics/pokemon/mienfoo/back.4bpp.lz"); - const u32 gMonShinyPalette_Mienfoo[] = INCBIN_U32("graphics/pokemon/mienfoo/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Mienfoo[] = INCBIN_U16("graphics/pokemon/mienfoo/shiny.gbapal"); const u8 gMonIcon_Mienfoo[] = INCBIN_U8("graphics/pokemon/mienfoo/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Mienfoo[] = INCBIN_U8("graphics/pokemon/mienfoo/footprint.1bpp"); @@ -18349,15 +18349,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Mienfoo[] = INCBIN_U16("graphics/pokemon/mienfoo/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Mienfoo[] = INCBIN_U16("graphics/pokemon/mienfoo/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Mienshao[] = INCBIN_U16("graphics/pokemon/mienshao/normal.gbapal"); const u32 gMonBackPic_Mienshao[] = INCBIN_U32("graphics/pokemon/mienshao/back.4bpp.lz"); - const u32 gMonShinyPalette_Mienshao[] = INCBIN_U32("graphics/pokemon/mienshao/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Mienshao[] = INCBIN_U16("graphics/pokemon/mienshao/shiny.gbapal"); const u8 gMonIcon_Mienshao[] = INCBIN_U8("graphics/pokemon/mienshao/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Mienshao[] = INCBIN_U8("graphics/pokemon/mienshao/footprint.1bpp"); @@ -18365,17 +18365,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Mienshao[] = INCBIN_U16("graphics/pokemon/mienshao/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Mienshao[] = INCBIN_U16("graphics/pokemon/mienshao/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_MIENFOO #if P_FAMILY_DRUDDIGON const u32 gMonFrontPic_Druddigon[] = INCBIN_U32("graphics/pokemon/druddigon/anim_front.4bpp.lz"); - const u32 gMonPalette_Druddigon[] = INCBIN_U32("graphics/pokemon/druddigon/normal.gbapal.lz"); + const u16 gMonPalette_Druddigon[] = INCBIN_U16("graphics/pokemon/druddigon/normal.gbapal"); const u32 gMonBackPic_Druddigon[] = INCBIN_U32("graphics/pokemon/druddigon/back.4bpp.lz"); - const u32 gMonShinyPalette_Druddigon[] = INCBIN_U32("graphics/pokemon/druddigon/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Druddigon[] = INCBIN_U16("graphics/pokemon/druddigon/shiny.gbapal"); const u8 gMonIcon_Druddigon[] = INCBIN_U8("graphics/pokemon/druddigon/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Druddigon[] = INCBIN_U8("graphics/pokemon/druddigon/footprint.1bpp"); @@ -18383,17 +18383,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Druddigon[] = INCBIN_U16("graphics/pokemon/druddigon/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Druddigon[] = INCBIN_U16("graphics/pokemon/druddigon/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_DRUDDIGON #if P_FAMILY_GOLETT const u32 gMonFrontPic_Golett[] = INCBIN_U32("graphics/pokemon/golett/anim_front.4bpp.lz"); - const u32 gMonPalette_Golett[] = INCBIN_U32("graphics/pokemon/golett/normal.gbapal.lz"); + const u16 gMonPalette_Golett[] = INCBIN_U16("graphics/pokemon/golett/normal.gbapal"); const u32 gMonBackPic_Golett[] = INCBIN_U32("graphics/pokemon/golett/back.4bpp.lz"); - const u32 gMonShinyPalette_Golett[] = INCBIN_U32("graphics/pokemon/golett/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Golett[] = INCBIN_U16("graphics/pokemon/golett/shiny.gbapal"); const u8 gMonIcon_Golett[] = INCBIN_U8("graphics/pokemon/golett/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Golett[] = INCBIN_U8("graphics/pokemon/golett/footprint.1bpp"); @@ -18401,15 +18401,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Golett[] = INCBIN_U16("graphics/pokemon/golett/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Golett[] = INCBIN_U16("graphics/pokemon/golett/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Golurk[] = INCBIN_U16("graphics/pokemon/golurk/normal.gbapal"); const u32 gMonBackPic_Golurk[] = INCBIN_U32("graphics/pokemon/golurk/back.4bpp.lz"); - const u32 gMonShinyPalette_Golurk[] = INCBIN_U32("graphics/pokemon/golurk/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Golurk[] = INCBIN_U16("graphics/pokemon/golurk/shiny.gbapal"); const u8 gMonIcon_Golurk[] = INCBIN_U8("graphics/pokemon/golurk/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Golurk[] = INCBIN_U8("graphics/pokemon/golurk/footprint.1bpp"); @@ -18417,17 +18417,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Golurk[] = INCBIN_U16("graphics/pokemon/golurk/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Golurk[] = INCBIN_U16("graphics/pokemon/golurk/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_GOLETT #if P_FAMILY_PAWNIARD const u32 gMonFrontPic_Pawniard[] = INCBIN_U32("graphics/pokemon/pawniard/anim_front.4bpp.lz"); - const u32 gMonPalette_Pawniard[] = INCBIN_U32("graphics/pokemon/pawniard/normal.gbapal.lz"); + const u16 gMonPalette_Pawniard[] = INCBIN_U16("graphics/pokemon/pawniard/normal.gbapal"); const u32 gMonBackPic_Pawniard[] = INCBIN_U32("graphics/pokemon/pawniard/back.4bpp.lz"); - const u32 gMonShinyPalette_Pawniard[] = INCBIN_U32("graphics/pokemon/pawniard/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Pawniard[] = INCBIN_U16("graphics/pokemon/pawniard/shiny.gbapal"); const u8 gMonIcon_Pawniard[] = INCBIN_U8("graphics/pokemon/pawniard/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Pawniard[] = INCBIN_U8("graphics/pokemon/pawniard/footprint.1bpp"); @@ -18435,15 +18435,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Pawniard[] = INCBIN_U16("graphics/pokemon/pawniard/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Pawniard[] = INCBIN_U16("graphics/pokemon/pawniard/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Bisharp[] = INCBIN_U16("graphics/pokemon/bisharp/normal.gbapal"); const u32 gMonBackPic_Bisharp[] = INCBIN_U32("graphics/pokemon/bisharp/back.4bpp.lz"); - const u32 gMonShinyPalette_Bisharp[] = INCBIN_U32("graphics/pokemon/bisharp/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Bisharp[] = INCBIN_U16("graphics/pokemon/bisharp/shiny.gbapal"); const u8 gMonIcon_Bisharp[] = INCBIN_U8("graphics/pokemon/bisharp/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Bisharp[] = INCBIN_U8("graphics/pokemon/bisharp/footprint.1bpp"); @@ -18451,16 +18451,16 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Bisharp[] = INCBIN_U16("graphics/pokemon/bisharp/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Bisharp[] = INCBIN_U16("graphics/pokemon/bisharp/overworld_shiny.gbapal"); #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"); - const u32 gMonPalette_Kingambit[] = INCBIN_U32("graphics/pokemon/kingambit/normal.gbapal.lz"); + const u16 gMonPalette_Kingambit[] = INCBIN_U16("graphics/pokemon/kingambit/normal.gbapal"); const u32 gMonBackPic_Kingambit[] = INCBIN_U32("graphics/pokemon/kingambit/back.4bpp.lz"); - const u32 gMonShinyPalette_Kingambit[] = INCBIN_U32("graphics/pokemon/kingambit/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Kingambit[] = INCBIN_U16("graphics/pokemon/kingambit/shiny.gbapal"); const u8 gMonIcon_Kingambit[] = INCBIN_U8("graphics/pokemon/kingambit/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Kingambit[] = INCBIN_U8("graphics/pokemon/kingambit/footprint.1bpp"); @@ -18468,8 +18468,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Kingambit[] = INCBIN_U16("graphics/pokemon/kingambit/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Kingambit[] = INCBIN_U16("graphics/pokemon/kingambit/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_9_CROSS_EVOS @@ -18477,9 +18477,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_BOUFFALANT const u32 gMonFrontPic_Bouffalant[] = INCBIN_U32("graphics/pokemon/bouffalant/anim_front.4bpp.lz"); - const u32 gMonPalette_Bouffalant[] = INCBIN_U32("graphics/pokemon/bouffalant/normal.gbapal.lz"); + const u16 gMonPalette_Bouffalant[] = INCBIN_U16("graphics/pokemon/bouffalant/normal.gbapal"); const u32 gMonBackPic_Bouffalant[] = INCBIN_U32("graphics/pokemon/bouffalant/back.4bpp.lz"); - const u32 gMonShinyPalette_Bouffalant[] = INCBIN_U32("graphics/pokemon/bouffalant/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Bouffalant[] = INCBIN_U16("graphics/pokemon/bouffalant/shiny.gbapal"); const u8 gMonIcon_Bouffalant[] = INCBIN_U8("graphics/pokemon/bouffalant/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Bouffalant[] = INCBIN_U8("graphics/pokemon/bouffalant/footprint.1bpp"); @@ -18487,17 +18487,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Bouffalant[] = INCBIN_U16("graphics/pokemon/bouffalant/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Bouffalant[] = INCBIN_U16("graphics/pokemon/bouffalant/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_BOUFFALANT #if P_FAMILY_RUFFLET const u32 gMonFrontPic_Rufflet[] = INCBIN_U32("graphics/pokemon/rufflet/anim_front.4bpp.lz"); - const u32 gMonPalette_Rufflet[] = INCBIN_U32("graphics/pokemon/rufflet/normal.gbapal.lz"); + const u16 gMonPalette_Rufflet[] = INCBIN_U16("graphics/pokemon/rufflet/normal.gbapal"); const u32 gMonBackPic_Rufflet[] = INCBIN_U32("graphics/pokemon/rufflet/back.4bpp.lz"); - const u32 gMonShinyPalette_Rufflet[] = INCBIN_U32("graphics/pokemon/rufflet/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Rufflet[] = INCBIN_U16("graphics/pokemon/rufflet/shiny.gbapal"); const u8 gMonIcon_Rufflet[] = INCBIN_U8("graphics/pokemon/rufflet/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Rufflet[] = INCBIN_U8("graphics/pokemon/rufflet/footprint.1bpp"); @@ -18505,15 +18505,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Rufflet[] = INCBIN_U16("graphics/pokemon/rufflet/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Rufflet[] = INCBIN_U16("graphics/pokemon/rufflet/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Braviary[] = INCBIN_U16("graphics/pokemon/braviary/normal.gbapal"); const u32 gMonBackPic_Braviary[] = INCBIN_U32("graphics/pokemon/braviary/back.4bpp.lz"); - const u32 gMonShinyPalette_Braviary[] = INCBIN_U32("graphics/pokemon/braviary/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Braviary[] = INCBIN_U16("graphics/pokemon/braviary/shiny.gbapal"); const u8 gMonIcon_Braviary[] = INCBIN_U8("graphics/pokemon/braviary/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Braviary[] = INCBIN_U8("graphics/pokemon/braviary/footprint.1bpp"); @@ -18521,22 +18521,22 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Braviary[] = INCBIN_U16("graphics/pokemon/braviary/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Braviary[] = INCBIN_U16("graphics/pokemon/braviary/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if P_HISUIAN_FORMS const u32 gMonFrontPic_BraviaryHisui[] = INCBIN_U32("graphics/pokemon/braviary/hisui/front.4bpp.lz"); - const u32 gMonPalette_BraviaryHisui[] = INCBIN_U32("graphics/pokemon/braviary/hisui/normal.gbapal.lz"); + const u16 gMonPalette_BraviaryHisui[] = INCBIN_U16("graphics/pokemon/braviary/hisui/normal.gbapal"); const u32 gMonBackPic_BraviaryHisui[] = INCBIN_U32("graphics/pokemon/braviary/hisui/back.4bpp.lz"); - const u32 gMonShinyPalette_BraviaryHisui[] = INCBIN_U32("graphics/pokemon/braviary/hisui/shiny.gbapal.lz"); + const u16 gMonShinyPalette_BraviaryHisui[] = INCBIN_U16("graphics/pokemon/braviary/hisui/shiny.gbapal"); const u8 gMonIcon_BraviaryHisui[] = INCBIN_U8("graphics/pokemon/braviary/hisui/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS const u32 gObjectEventPic_BraviaryHisui[] = INCBIN_COMP("graphics/pokemon/braviary/hisui/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - const u32 gOverworldPalette_BraviaryHisui[] = INCBIN_U32("graphics/pokemon/braviary/hisui/overworld_normal.gbapal.lz"); - const u32 gShinyOverworldPalette_BraviaryHisui[] = INCBIN_U32("graphics/pokemon/braviary/hisui/overworld_shiny.gbapal.lz"); + const u16 gOverworldPalette_BraviaryHisui[] = INCBIN_U16("graphics/pokemon/braviary/hisui/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_BraviaryHisui[] = INCBIN_U16("graphics/pokemon/braviary/hisui/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_HISUIAN_FORMS @@ -18544,9 +18544,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_VULLABY const u32 gMonFrontPic_Vullaby[] = INCBIN_U32("graphics/pokemon/vullaby/anim_front.4bpp.lz"); - const u32 gMonPalette_Vullaby[] = INCBIN_U32("graphics/pokemon/vullaby/normal.gbapal.lz"); + const u16 gMonPalette_Vullaby[] = INCBIN_U16("graphics/pokemon/vullaby/normal.gbapal"); const u32 gMonBackPic_Vullaby[] = INCBIN_U32("graphics/pokemon/vullaby/back.4bpp.lz"); - const u32 gMonShinyPalette_Vullaby[] = INCBIN_U32("graphics/pokemon/vullaby/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Vullaby[] = INCBIN_U16("graphics/pokemon/vullaby/shiny.gbapal"); const u8 gMonIcon_Vullaby[] = INCBIN_U8("graphics/pokemon/vullaby/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Vullaby[] = INCBIN_U8("graphics/pokemon/vullaby/footprint.1bpp"); @@ -18554,15 +18554,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Vullaby[] = INCBIN_U16("graphics/pokemon/vullaby/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Vullaby[] = INCBIN_U16("graphics/pokemon/vullaby/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Mandibuzz[] = INCBIN_U16("graphics/pokemon/mandibuzz/normal.gbapal"); const u32 gMonBackPic_Mandibuzz[] = INCBIN_U32("graphics/pokemon/mandibuzz/back.4bpp.lz"); - const u32 gMonShinyPalette_Mandibuzz[] = INCBIN_U32("graphics/pokemon/mandibuzz/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Mandibuzz[] = INCBIN_U16("graphics/pokemon/mandibuzz/shiny.gbapal"); const u8 gMonIcon_Mandibuzz[] = INCBIN_U8("graphics/pokemon/mandibuzz/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Mandibuzz[] = INCBIN_U8("graphics/pokemon/mandibuzz/footprint.1bpp"); @@ -18570,17 +18570,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Mandibuzz[] = INCBIN_U16("graphics/pokemon/mandibuzz/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Mandibuzz[] = INCBIN_U16("graphics/pokemon/mandibuzz/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_VULLABY #if P_FAMILY_HEATMOR const u32 gMonFrontPic_Heatmor[] = INCBIN_U32("graphics/pokemon/heatmor/anim_front.4bpp.lz"); - const u32 gMonPalette_Heatmor[] = INCBIN_U32("graphics/pokemon/heatmor/normal.gbapal.lz"); + const u16 gMonPalette_Heatmor[] = INCBIN_U16("graphics/pokemon/heatmor/normal.gbapal"); const u32 gMonBackPic_Heatmor[] = INCBIN_U32("graphics/pokemon/heatmor/back.4bpp.lz"); - const u32 gMonShinyPalette_Heatmor[] = INCBIN_U32("graphics/pokemon/heatmor/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Heatmor[] = INCBIN_U16("graphics/pokemon/heatmor/shiny.gbapal"); const u8 gMonIcon_Heatmor[] = INCBIN_U8("graphics/pokemon/heatmor/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Heatmor[] = INCBIN_U8("graphics/pokemon/heatmor/footprint.1bpp"); @@ -18588,17 +18588,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Heatmor[] = INCBIN_U16("graphics/pokemon/heatmor/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Heatmor[] = INCBIN_U16("graphics/pokemon/heatmor/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_HEATMOR #if P_FAMILY_DURANT const u32 gMonFrontPic_Durant[] = INCBIN_U32("graphics/pokemon/durant/anim_front.4bpp.lz"); - const u32 gMonPalette_Durant[] = INCBIN_U32("graphics/pokemon/durant/normal.gbapal.lz"); + const u16 gMonPalette_Durant[] = INCBIN_U16("graphics/pokemon/durant/normal.gbapal"); const u32 gMonBackPic_Durant[] = INCBIN_U32("graphics/pokemon/durant/back.4bpp.lz"); - const u32 gMonShinyPalette_Durant[] = INCBIN_U32("graphics/pokemon/durant/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Durant[] = INCBIN_U16("graphics/pokemon/durant/shiny.gbapal"); const u8 gMonIcon_Durant[] = INCBIN_U8("graphics/pokemon/durant/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Durant[] = INCBIN_U8("graphics/pokemon/durant/footprint.1bpp"); @@ -18606,17 +18606,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Durant[] = INCBIN_U16("graphics/pokemon/durant/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Durant[] = INCBIN_U16("graphics/pokemon/durant/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_DURANT #if P_FAMILY_DEINO const u32 gMonFrontPic_Deino[] = INCBIN_U32("graphics/pokemon/deino/anim_front.4bpp.lz"); - const u32 gMonPalette_Deino[] = INCBIN_U32("graphics/pokemon/deino/normal.gbapal.lz"); + const u16 gMonPalette_Deino[] = INCBIN_U16("graphics/pokemon/deino/normal.gbapal"); const u32 gMonBackPic_Deino[] = INCBIN_U32("graphics/pokemon/deino/back.4bpp.lz"); - const u32 gMonShinyPalette_Deino[] = INCBIN_U32("graphics/pokemon/deino/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Deino[] = INCBIN_U16("graphics/pokemon/deino/shiny.gbapal"); const u8 gMonIcon_Deino[] = INCBIN_U8("graphics/pokemon/deino/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Deino[] = INCBIN_U8("graphics/pokemon/deino/footprint.1bpp"); @@ -18624,15 +18624,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Deino[] = INCBIN_U16("graphics/pokemon/deino/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Deino[] = INCBIN_U16("graphics/pokemon/deino/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Zweilous[] = INCBIN_U16("graphics/pokemon/zweilous/normal.gbapal"); const u32 gMonBackPic_Zweilous[] = INCBIN_U32("graphics/pokemon/zweilous/back.4bpp.lz"); - const u32 gMonShinyPalette_Zweilous[] = INCBIN_U32("graphics/pokemon/zweilous/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Zweilous[] = INCBIN_U16("graphics/pokemon/zweilous/shiny.gbapal"); const u8 gMonIcon_Zweilous[] = INCBIN_U8("graphics/pokemon/zweilous/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Zweilous[] = INCBIN_U8("graphics/pokemon/zweilous/footprint.1bpp"); @@ -18640,15 +18640,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Zweilous[] = INCBIN_U16("graphics/pokemon/zweilous/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Zweilous[] = INCBIN_U16("graphics/pokemon/zweilous/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Hydreigon[] = INCBIN_U16("graphics/pokemon/hydreigon/normal.gbapal"); const u32 gMonBackPic_Hydreigon[] = INCBIN_U32("graphics/pokemon/hydreigon/back.4bpp.lz"); - const u32 gMonShinyPalette_Hydreigon[] = INCBIN_U32("graphics/pokemon/hydreigon/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Hydreigon[] = INCBIN_U16("graphics/pokemon/hydreigon/shiny.gbapal"); const u8 gMonIcon_Hydreigon[] = INCBIN_U8("graphics/pokemon/hydreigon/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Hydreigon[] = INCBIN_U8("graphics/pokemon/hydreigon/footprint.1bpp"); @@ -18656,17 +18656,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Hydreigon[] = INCBIN_U16("graphics/pokemon/hydreigon/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Hydreigon[] = INCBIN_U16("graphics/pokemon/hydreigon/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_DEINO #if P_FAMILY_LARVESTA const u32 gMonFrontPic_Larvesta[] = INCBIN_U32("graphics/pokemon/larvesta/anim_front.4bpp.lz"); - const u32 gMonPalette_Larvesta[] = INCBIN_U32("graphics/pokemon/larvesta/normal.gbapal.lz"); + const u16 gMonPalette_Larvesta[] = INCBIN_U16("graphics/pokemon/larvesta/normal.gbapal"); const u32 gMonBackPic_Larvesta[] = INCBIN_U32("graphics/pokemon/larvesta/back.4bpp.lz"); - const u32 gMonShinyPalette_Larvesta[] = INCBIN_U32("graphics/pokemon/larvesta/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Larvesta[] = INCBIN_U16("graphics/pokemon/larvesta/shiny.gbapal"); const u8 gMonIcon_Larvesta[] = INCBIN_U8("graphics/pokemon/larvesta/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Larvesta[] = INCBIN_U8("graphics/pokemon/larvesta/footprint.1bpp"); @@ -18674,15 +18674,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Larvesta[] = INCBIN_U16("graphics/pokemon/larvesta/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Larvesta[] = INCBIN_U16("graphics/pokemon/larvesta/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Volcarona[] = INCBIN_U16("graphics/pokemon/volcarona/normal.gbapal"); const u32 gMonBackPic_Volcarona[] = INCBIN_U32("graphics/pokemon/volcarona/back.4bpp.lz"); - const u32 gMonShinyPalette_Volcarona[] = INCBIN_U32("graphics/pokemon/volcarona/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Volcarona[] = INCBIN_U16("graphics/pokemon/volcarona/shiny.gbapal"); const u8 gMonIcon_Volcarona[] = INCBIN_U8("graphics/pokemon/volcarona/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Volcarona[] = INCBIN_U8("graphics/pokemon/volcarona/footprint.1bpp"); @@ -18690,17 +18690,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Volcarona[] = INCBIN_U16("graphics/pokemon/volcarona/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Volcarona[] = INCBIN_U16("graphics/pokemon/volcarona/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_LARVESTA #if P_FAMILY_COBALION const u32 gMonFrontPic_Cobalion[] = INCBIN_U32("graphics/pokemon/cobalion/anim_front.4bpp.lz"); - const u32 gMonPalette_Cobalion[] = INCBIN_U32("graphics/pokemon/cobalion/normal.gbapal.lz"); + const u16 gMonPalette_Cobalion[] = INCBIN_U16("graphics/pokemon/cobalion/normal.gbapal"); const u32 gMonBackPic_Cobalion[] = INCBIN_U32("graphics/pokemon/cobalion/back.4bpp.lz"); - const u32 gMonShinyPalette_Cobalion[] = INCBIN_U32("graphics/pokemon/cobalion/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Cobalion[] = INCBIN_U16("graphics/pokemon/cobalion/shiny.gbapal"); const u8 gMonIcon_Cobalion[] = INCBIN_U8("graphics/pokemon/cobalion/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Cobalion[] = INCBIN_U8("graphics/pokemon/cobalion/footprint.1bpp"); @@ -18708,17 +18708,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Cobalion[] = INCBIN_U16("graphics/pokemon/cobalion/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Cobalion[] = INCBIN_U16("graphics/pokemon/cobalion/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_COBALION #if P_FAMILY_TERRAKION const u32 gMonFrontPic_Terrakion[] = INCBIN_U32("graphics/pokemon/terrakion/anim_front.4bpp.lz"); - const u32 gMonPalette_Terrakion[] = INCBIN_U32("graphics/pokemon/terrakion/normal.gbapal.lz"); + const u16 gMonPalette_Terrakion[] = INCBIN_U16("graphics/pokemon/terrakion/normal.gbapal"); const u32 gMonBackPic_Terrakion[] = INCBIN_U32("graphics/pokemon/terrakion/back.4bpp.lz"); - const u32 gMonShinyPalette_Terrakion[] = INCBIN_U32("graphics/pokemon/terrakion/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Terrakion[] = INCBIN_U16("graphics/pokemon/terrakion/shiny.gbapal"); const u8 gMonIcon_Terrakion[] = INCBIN_U8("graphics/pokemon/terrakion/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Terrakion[] = INCBIN_U8("graphics/pokemon/terrakion/footprint.1bpp"); @@ -18726,17 +18726,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Terrakion[] = INCBIN_U16("graphics/pokemon/terrakion/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Terrakion[] = INCBIN_U16("graphics/pokemon/terrakion/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_TERRAKION #if P_FAMILY_VIRIZION const u32 gMonFrontPic_Virizion[] = INCBIN_U32("graphics/pokemon/virizion/anim_front.4bpp.lz"); - const u32 gMonPalette_Virizion[] = INCBIN_U32("graphics/pokemon/virizion/normal.gbapal.lz"); + const u16 gMonPalette_Virizion[] = INCBIN_U16("graphics/pokemon/virizion/normal.gbapal"); const u32 gMonBackPic_Virizion[] = INCBIN_U32("graphics/pokemon/virizion/back.4bpp.lz"); - const u32 gMonShinyPalette_Virizion[] = INCBIN_U32("graphics/pokemon/virizion/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Virizion[] = INCBIN_U16("graphics/pokemon/virizion/shiny.gbapal"); const u8 gMonIcon_Virizion[] = INCBIN_U8("graphics/pokemon/virizion/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Virizion[] = INCBIN_U8("graphics/pokemon/virizion/footprint.1bpp"); @@ -18744,17 +18744,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Virizion[] = INCBIN_U16("graphics/pokemon/virizion/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Virizion[] = INCBIN_U16("graphics/pokemon/virizion/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_VIRIZION #if P_FAMILY_TORNADUS const u32 gMonFrontPic_TornadusIncarnate[] = INCBIN_U32("graphics/pokemon/tornadus/anim_front.4bpp.lz"); - const u32 gMonPalette_TornadusIncarnate[] = INCBIN_U32("graphics/pokemon/tornadus/normal.gbapal.lz"); + const u16 gMonPalette_TornadusIncarnate[] = INCBIN_U16("graphics/pokemon/tornadus/normal.gbapal"); const u32 gMonBackPic_TornadusIncarnate[] = INCBIN_U32("graphics/pokemon/tornadus/back.4bpp.lz"); - const u32 gMonShinyPalette_TornadusIncarnate[] = INCBIN_U32("graphics/pokemon/tornadus/shiny.gbapal.lz"); + const u16 gMonShinyPalette_TornadusIncarnate[] = INCBIN_U16("graphics/pokemon/tornadus/shiny.gbapal"); const u8 gMonIcon_TornadusIncarnate[] = INCBIN_U8("graphics/pokemon/tornadus/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Tornadus[] = INCBIN_U8("graphics/pokemon/tornadus/footprint.1bpp"); @@ -18762,30 +18762,30 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_TornadusIncarnate[] = INCBIN_U16("graphics/pokemon/tornadus/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_TornadusIncarnate[] = INCBIN_U16("graphics/pokemon/tornadus/overworld_shiny.gbapal"); #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 u16 gMonPalette_TornadusTherian[] = INCBIN_U16("graphics/pokemon/tornadus/therian/normal.gbapal"); 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 u16 gMonShinyPalette_TornadusTherian[] = INCBIN_U16("graphics/pokemon/tornadus/therian/shiny.gbapal"); 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"); + const u16 gOverworldPalette_TornadusTherian[] = INCBIN_U16("graphics/pokemon/tornadus/therian/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_TornadusTherian[] = INCBIN_U16("graphics/pokemon/tornadus/therian/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_TORNADUS #if P_FAMILY_THUNDURUS const u32 gMonFrontPic_ThundurusIncarnate[] = INCBIN_U32("graphics/pokemon/thundurus/anim_front.4bpp.lz"); - const u32 gMonPalette_ThundurusIncarnate[] = INCBIN_U32("graphics/pokemon/thundurus/normal.gbapal.lz"); + const u16 gMonPalette_ThundurusIncarnate[] = INCBIN_U16("graphics/pokemon/thundurus/normal.gbapal"); const u32 gMonBackPic_ThundurusIncarnate[] = INCBIN_U32("graphics/pokemon/thundurus/back.4bpp.lz"); - const u32 gMonShinyPalette_ThundurusIncarnate[] = INCBIN_U32("graphics/pokemon/thundurus/shiny.gbapal.lz"); + const u16 gMonShinyPalette_ThundurusIncarnate[] = INCBIN_U16("graphics/pokemon/thundurus/shiny.gbapal"); const u8 gMonIcon_ThundurusIncarnate[] = INCBIN_U8("graphics/pokemon/thundurus/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Thundurus[] = INCBIN_U8("graphics/pokemon/thundurus/footprint.1bpp"); @@ -18793,30 +18793,30 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_ThundurusIncarnate[] = INCBIN_U16("graphics/pokemon/thundurus/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_ThundurusIncarnate[] = INCBIN_U16("graphics/pokemon/thundurus/overworld_shiny.gbapal"); #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 u16 gMonPalette_ThundurusTherian[] = INCBIN_U16("graphics/pokemon/thundurus/therian/normal.gbapal"); 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 u16 gMonShinyPalette_ThundurusTherian[] = INCBIN_U16("graphics/pokemon/thundurus/therian/shiny.gbapal"); 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"); + const u16 gOverworldPalette_ThundurusTherian[] = INCBIN_U16("graphics/pokemon/thundurus/therian/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_ThundurusTherian[] = INCBIN_U16("graphics/pokemon/thundurus/therian/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_THUNDURUS #if P_FAMILY_RESHIRAM const u32 gMonFrontPic_Reshiram[] = INCBIN_U32("graphics/pokemon/reshiram/anim_front.4bpp.lz"); - const u32 gMonPalette_Reshiram[] = INCBIN_U32("graphics/pokemon/reshiram/normal.gbapal.lz"); + const u16 gMonPalette_Reshiram[] = INCBIN_U16("graphics/pokemon/reshiram/normal.gbapal"); const u32 gMonBackPic_Reshiram[] = INCBIN_U32("graphics/pokemon/reshiram/back.4bpp.lz"); - const u32 gMonShinyPalette_Reshiram[] = INCBIN_U32("graphics/pokemon/reshiram/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Reshiram[] = INCBIN_U16("graphics/pokemon/reshiram/shiny.gbapal"); const u8 gMonIcon_Reshiram[] = INCBIN_U8("graphics/pokemon/reshiram/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Reshiram[] = INCBIN_U8("graphics/pokemon/reshiram/footprint.1bpp"); @@ -18824,17 +18824,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Reshiram[] = INCBIN_U16("graphics/pokemon/reshiram/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Reshiram[] = INCBIN_U16("graphics/pokemon/reshiram/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_RESHIRAM #if P_FAMILY_ZEKROM const u32 gMonFrontPic_Zekrom[] = INCBIN_U32("graphics/pokemon/zekrom/anim_front.4bpp.lz"); - const u32 gMonPalette_Zekrom[] = INCBIN_U32("graphics/pokemon/zekrom/normal.gbapal.lz"); + const u16 gMonPalette_Zekrom[] = INCBIN_U16("graphics/pokemon/zekrom/normal.gbapal"); const u32 gMonBackPic_Zekrom[] = INCBIN_U32("graphics/pokemon/zekrom/back.4bpp.lz"); - const u32 gMonShinyPalette_Zekrom[] = INCBIN_U32("graphics/pokemon/zekrom/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Zekrom[] = INCBIN_U16("graphics/pokemon/zekrom/shiny.gbapal"); const u8 gMonIcon_Zekrom[] = INCBIN_U8("graphics/pokemon/zekrom/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Zekrom[] = INCBIN_U8("graphics/pokemon/zekrom/footprint.1bpp"); @@ -18842,17 +18842,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Zekrom[] = INCBIN_U16("graphics/pokemon/zekrom/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Zekrom[] = INCBIN_U16("graphics/pokemon/zekrom/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_ZEKROM #if P_FAMILY_LANDORUS const u32 gMonFrontPic_LandorusIncarnate[] = INCBIN_U32("graphics/pokemon/landorus/anim_front.4bpp.lz"); - const u32 gMonPalette_LandorusIncarnate[] = INCBIN_U32("graphics/pokemon/landorus/normal.gbapal.lz"); + const u16 gMonPalette_LandorusIncarnate[] = INCBIN_U16("graphics/pokemon/landorus/normal.gbapal"); const u32 gMonBackPic_LandorusIncarnate[] = INCBIN_U32("graphics/pokemon/landorus/back.4bpp.lz"); - const u32 gMonShinyPalette_LandorusIncarnate[] = INCBIN_U32("graphics/pokemon/landorus/shiny.gbapal.lz"); + const u16 gMonShinyPalette_LandorusIncarnate[] = INCBIN_U16("graphics/pokemon/landorus/shiny.gbapal"); const u8 gMonIcon_LandorusIncarnate[] = INCBIN_U8("graphics/pokemon/landorus/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Landorus[] = INCBIN_U8("graphics/pokemon/landorus/footprint.1bpp"); @@ -18860,30 +18860,30 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_LandorusIncarnate[] = INCBIN_U16("graphics/pokemon/landorus/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_LandorusIncarnate[] = INCBIN_U16("graphics/pokemon/landorus/overworld_shiny.gbapal"); #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 u16 gMonPalette_LandorusTherian[] = INCBIN_U16("graphics/pokemon/landorus/therian/normal.gbapal"); 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 u16 gMonShinyPalette_LandorusTherian[] = INCBIN_U16("graphics/pokemon/landorus/therian/shiny.gbapal"); 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"); + const u16 gOverworldPalette_LandorusTherian[] = INCBIN_U16("graphics/pokemon/landorus/therian/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_LandorusTherian[] = INCBIN_U16("graphics/pokemon/landorus/therian/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_LANDORUS #if P_FAMILY_ENAMORUS const u32 gMonFrontPic_EnamorusIncarnate[] = INCBIN_U32("graphics/pokemon/enamorus/anim_front.4bpp.lz"); - const u32 gMonPalette_EnamorusIncarnate[] = INCBIN_U32("graphics/pokemon/enamorus/normal.gbapal.lz"); + const u16 gMonPalette_EnamorusIncarnate[] = INCBIN_U16("graphics/pokemon/enamorus/normal.gbapal"); const u32 gMonBackPic_EnamorusIncarnate[] = INCBIN_U32("graphics/pokemon/enamorus/back.4bpp.lz"); - const u32 gMonShinyPalette_EnamorusIncarnate[] = INCBIN_U32("graphics/pokemon/enamorus/shiny.gbapal.lz"); + const u16 gMonShinyPalette_EnamorusIncarnate[] = INCBIN_U16("graphics/pokemon/enamorus/shiny.gbapal"); const u8 gMonIcon_EnamorusIncarnate[] = INCBIN_U8("graphics/pokemon/enamorus/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Enamorus[] = INCBIN_U8("graphics/pokemon/enamorus/footprint.1bpp"); @@ -18891,30 +18891,30 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_EnamorusIncarnate[] = INCBIN_U16("graphics/pokemon/enamorus/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_EnamorusIncarnate[] = INCBIN_U16("graphics/pokemon/enamorus/overworld_shiny.gbapal"); #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 u16 gMonPalette_EnamorusTherian[] = INCBIN_U16("graphics/pokemon/enamorus/therian/normal.gbapal"); 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 u16 gMonShinyPalette_EnamorusTherian[] = INCBIN_U16("graphics/pokemon/enamorus/therian/shiny.gbapal"); 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"); + const u16 gOverworldPalette_EnamorusTherian[] = INCBIN_U16("graphics/pokemon/enamorus/therian/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_EnamorusTherian[] = INCBIN_U16("graphics/pokemon/enamorus/therian/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_ENAMORUS #if P_FAMILY_KYUREM const u32 gMonFrontPic_Kyurem[] = INCBIN_U32("graphics/pokemon/kyurem/anim_front.4bpp.lz"); - const u32 gMonPalette_Kyurem[] = INCBIN_U32("graphics/pokemon/kyurem/normal.gbapal.lz"); + const u16 gMonPalette_Kyurem[] = INCBIN_U16("graphics/pokemon/kyurem/normal.gbapal"); const u32 gMonBackPic_Kyurem[] = INCBIN_U32("graphics/pokemon/kyurem/back.4bpp.lz"); - const u32 gMonShinyPalette_Kyurem[] = INCBIN_U32("graphics/pokemon/kyurem/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Kyurem[] = INCBIN_U16("graphics/pokemon/kyurem/shiny.gbapal"); const u8 gMonIcon_Kyurem[] = INCBIN_U8("graphics/pokemon/kyurem/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Kyurem[] = INCBIN_U8("graphics/pokemon/kyurem/footprint.1bpp"); @@ -18922,35 +18922,35 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Kyurem[] = INCBIN_U16("graphics/pokemon/kyurem/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Kyurem[] = INCBIN_U16("graphics/pokemon/kyurem/overworld_shiny.gbapal"); #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"); - const u32 gMonPalette_KyuremWhite[] = INCBIN_U32("graphics/pokemon/kyurem/white/normal.gbapal.lz"); + const u16 gMonPalette_KyuremWhite[] = INCBIN_U16("graphics/pokemon/kyurem/white/normal.gbapal"); 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 u16 gMonShinyPalette_KyuremWhite[] = INCBIN_U16("graphics/pokemon/kyurem/white/shiny.gbapal"); 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"); + const u16 gOverworldPalette_KyuremWhite[] = INCBIN_U16("graphics/pokemon/kyurem/white/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_KyuremWhite[] = INCBIN_U16("graphics/pokemon/kyurem/white/overworld_shiny.gbapal"); #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 u16 gMonPalette_KyuremBlack[] = INCBIN_U16("graphics/pokemon/kyurem/black/normal.gbapal"); 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 u16 gMonShinyPalette_KyuremBlack[] = INCBIN_U16("graphics/pokemon/kyurem/black/shiny.gbapal"); 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"); + const u16 gOverworldPalette_KyuremBlack[] = INCBIN_U16("graphics/pokemon/kyurem/black/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_KyuremBlack[] = INCBIN_U16("graphics/pokemon/kyurem/black/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FUSION_FORMS @@ -18958,9 +18958,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_KELDEO const u32 gMonFrontPic_KeldeoOrdinary[] = INCBIN_U32("graphics/pokemon/keldeo/anim_front.4bpp.lz"); - const u32 gMonPalette_KeldeoOrdinary[] = INCBIN_U32("graphics/pokemon/keldeo/normal.gbapal.lz"); + const u16 gMonPalette_KeldeoOrdinary[] = INCBIN_U16("graphics/pokemon/keldeo/normal.gbapal"); const u32 gMonBackPic_KeldeoOrdinary[] = INCBIN_U32("graphics/pokemon/keldeo/back.4bpp.lz"); - const u32 gMonShinyPalette_KeldeoOrdinary[] = INCBIN_U32("graphics/pokemon/keldeo/shiny.gbapal.lz"); + const u16 gMonShinyPalette_KeldeoOrdinary[] = INCBIN_U16("graphics/pokemon/keldeo/shiny.gbapal"); const u8 gMonIcon_KeldeoOrdinary[] = INCBIN_U8("graphics/pokemon/keldeo/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Keldeo[] = INCBIN_U8("graphics/pokemon/keldeo/footprint.1bpp"); @@ -18968,30 +18968,30 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_KeldeoOrdinary[] = INCBIN_U16("graphics/pokemon/keldeo/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_KeldeoOrdinary[] = INCBIN_U16("graphics/pokemon/keldeo/overworld_shiny.gbapal"); #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 u16 gMonPalette_KeldeoResolute[] = INCBIN_U16("graphics/pokemon/keldeo/resolute/normal.gbapal"); 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 u16 gMonShinyPalette_KeldeoResolute[] = INCBIN_U16("graphics/pokemon/keldeo/resolute/shiny.gbapal"); 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"); + // const u16 gOverworldPalette_KeldeoResolute[] = INCBIN_U16("graphics/pokemon/keldeo/resolute/overworld_normal.gbapal"); + // const u16 gShinyOverworldPalette_KeldeoResolute[] = INCBIN_U16("graphics/pokemon/keldeo/resolute/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_KELDEO #if P_FAMILY_MELOETTA const u32 gMonFrontPic_MeloettaAria[] = INCBIN_U32("graphics/pokemon/meloetta/anim_front.4bpp.lz"); - const u32 gMonPalette_MeloettaAria[] = INCBIN_U32("graphics/pokemon/meloetta/normal.gbapal.lz"); + const u16 gMonPalette_MeloettaAria[] = INCBIN_U16("graphics/pokemon/meloetta/normal.gbapal"); const u32 gMonBackPic_MeloettaAria[] = INCBIN_U32("graphics/pokemon/meloetta/back.4bpp.lz"); - const u32 gMonShinyPalette_MeloettaAria[] = INCBIN_U32("graphics/pokemon/meloetta/shiny.gbapal.lz"); + const u16 gMonShinyPalette_MeloettaAria[] = INCBIN_U16("graphics/pokemon/meloetta/shiny.gbapal"); const u8 gMonIcon_MeloettaAria[] = INCBIN_U8("graphics/pokemon/meloetta/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Meloetta[] = INCBIN_U8("graphics/pokemon/meloetta/footprint.1bpp"); @@ -18999,30 +18999,30 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_MeloettaAria[] = INCBIN_U16("graphics/pokemon/meloetta/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_MeloettaAria[] = INCBIN_U16("graphics/pokemon/meloetta/overworld_shiny.gbapal"); #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 u16 gMonPalette_MeloettaPirouette[] = INCBIN_U16("graphics/pokemon/meloetta/pirouette/normal.gbapal"); 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 u16 gMonShinyPalette_MeloettaPirouette[] = INCBIN_U16("graphics/pokemon/meloetta/pirouette/shiny.gbapal"); 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"); + const u16 gOverworldPalette_MeloettaPirouette[] = INCBIN_U16("graphics/pokemon/meloetta/pirouette/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_MeloettaPirouette[] = INCBIN_U16("graphics/pokemon/meloetta/pirouette/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_MELOETTA #if P_FAMILY_GENESECT const u32 gMonFrontPic_Genesect[] = INCBIN_U32("graphics/pokemon/genesect/anim_front.4bpp.lz"); - const u32 gMonPalette_Genesect[] = INCBIN_U32("graphics/pokemon/genesect/normal.gbapal.lz"); + const u16 gMonPalette_Genesect[] = INCBIN_U16("graphics/pokemon/genesect/normal.gbapal"); const u32 gMonBackPic_Genesect[] = INCBIN_U32("graphics/pokemon/genesect/back.4bpp.lz"); - const u32 gMonShinyPalette_Genesect[] = INCBIN_U32("graphics/pokemon/genesect/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Genesect[] = INCBIN_U16("graphics/pokemon/genesect/shiny.gbapal"); const u8 gMonIcon_Genesect[] = INCBIN_U8("graphics/pokemon/genesect/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Genesect[] = INCBIN_U8("graphics/pokemon/genesect/footprint.1bpp"); @@ -19030,29 +19030,29 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Genesect[] = INCBIN_U16("graphics/pokemon/genesect/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Genesect[] = INCBIN_U16("graphics/pokemon/genesect/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_GenesectDouseDrive[] = INCBIN_U16("graphics/pokemon/genesect/douse_drive/normal.gbapal"); + const u16 gMonShinyPalette_GenesectDouseDrive[] = INCBIN_U16("graphics/pokemon/genesect/douse_drive/shiny.gbapal"); - const u32 gMonPalette_GenesectShockDrive[] = INCBIN_U32("graphics/pokemon/genesect/shock_drive/normal.gbapal.lz"); - const u32 gMonShinyPalette_GenesectShockDrive[] = INCBIN_U32("graphics/pokemon/genesect/shock_drive/shiny.gbapal.lz"); + const u16 gMonPalette_GenesectShockDrive[] = INCBIN_U16("graphics/pokemon/genesect/shock_drive/normal.gbapal"); + const u16 gMonShinyPalette_GenesectShockDrive[] = INCBIN_U16("graphics/pokemon/genesect/shock_drive/shiny.gbapal"); - const u32 gMonPalette_GenesectBurnDrive[] = INCBIN_U32("graphics/pokemon/genesect/burn_drive/normal.gbapal.lz"); - const u32 gMonShinyPalette_GenesectBurnDrive[] = INCBIN_U32("graphics/pokemon/genesect/burn_drive/shiny.gbapal.lz"); + const u16 gMonPalette_GenesectBurnDrive[] = INCBIN_U16("graphics/pokemon/genesect/burn_drive/normal.gbapal"); + const u16 gMonShinyPalette_GenesectBurnDrive[] = INCBIN_U16("graphics/pokemon/genesect/burn_drive/shiny.gbapal"); - const u32 gMonPalette_GenesectChillDrive[] = INCBIN_U32("graphics/pokemon/genesect/chill_drive/normal.gbapal.lz"); - const u32 gMonShinyPalette_GenesectChillDrive[] = INCBIN_U32("graphics/pokemon/genesect/chill_drive/shiny.gbapal.lz"); + const u16 gMonPalette_GenesectChillDrive[] = INCBIN_U16("graphics/pokemon/genesect/chill_drive/normal.gbapal"); + const u16 gMonShinyPalette_GenesectChillDrive[] = INCBIN_U16("graphics/pokemon/genesect/chill_drive/shiny.gbapal"); #endif //P_FAMILY_GENESECT #if P_FAMILY_CHESPIN const u32 gMonFrontPic_Chespin[] = INCBIN_U32("graphics/pokemon/chespin/anim_front.4bpp.lz"); - const u32 gMonPalette_Chespin[] = INCBIN_U32("graphics/pokemon/chespin/normal.gbapal.lz"); + const u16 gMonPalette_Chespin[] = INCBIN_U16("graphics/pokemon/chespin/normal.gbapal"); const u32 gMonBackPic_Chespin[] = INCBIN_U32("graphics/pokemon/chespin/back.4bpp.lz"); - const u32 gMonShinyPalette_Chespin[] = INCBIN_U32("graphics/pokemon/chespin/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Chespin[] = INCBIN_U16("graphics/pokemon/chespin/shiny.gbapal"); const u8 gMonIcon_Chespin[] = INCBIN_U8("graphics/pokemon/chespin/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Chespin[] = INCBIN_U8("graphics/pokemon/chespin/footprint.1bpp"); @@ -19060,15 +19060,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Chespin[] = INCBIN_U16("graphics/pokemon/chespin/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Chespin[] = INCBIN_U16("graphics/pokemon/chespin/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Quilladin[] = INCBIN_U16("graphics/pokemon/quilladin/normal.gbapal"); const u32 gMonBackPic_Quilladin[] = INCBIN_U32("graphics/pokemon/quilladin/back.4bpp.lz"); - const u32 gMonShinyPalette_Quilladin[] = INCBIN_U32("graphics/pokemon/quilladin/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Quilladin[] = INCBIN_U16("graphics/pokemon/quilladin/shiny.gbapal"); const u8 gMonIcon_Quilladin[] = INCBIN_U8("graphics/pokemon/quilladin/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Quilladin[] = INCBIN_U8("graphics/pokemon/quilladin/footprint.1bpp"); @@ -19076,15 +19076,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Quilladin[] = INCBIN_U16("graphics/pokemon/quilladin/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Quilladin[] = INCBIN_U16("graphics/pokemon/quilladin/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Chesnaught[] = INCBIN_U16("graphics/pokemon/chesnaught/normal.gbapal"); const u32 gMonBackPic_Chesnaught[] = INCBIN_U32("graphics/pokemon/chesnaught/back.4bpp.lz"); - const u32 gMonShinyPalette_Chesnaught[] = INCBIN_U32("graphics/pokemon/chesnaught/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Chesnaught[] = INCBIN_U16("graphics/pokemon/chesnaught/shiny.gbapal"); const u8 gMonIcon_Chesnaught[] = INCBIN_U8("graphics/pokemon/chesnaught/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Chesnaught[] = INCBIN_U8("graphics/pokemon/chesnaught/footprint.1bpp"); @@ -19092,17 +19092,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Chesnaught[] = INCBIN_U16("graphics/pokemon/chesnaught/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Chesnaught[] = INCBIN_U16("graphics/pokemon/chesnaught/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_CHESPIN #if P_FAMILY_FENNEKIN const u32 gMonFrontPic_Fennekin[] = INCBIN_U32("graphics/pokemon/fennekin/anim_front.4bpp.lz"); - const u32 gMonPalette_Fennekin[] = INCBIN_U32("graphics/pokemon/fennekin/normal.gbapal.lz"); + const u16 gMonPalette_Fennekin[] = INCBIN_U16("graphics/pokemon/fennekin/normal.gbapal"); const u32 gMonBackPic_Fennekin[] = INCBIN_U32("graphics/pokemon/fennekin/back.4bpp.lz"); - const u32 gMonShinyPalette_Fennekin[] = INCBIN_U32("graphics/pokemon/fennekin/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Fennekin[] = INCBIN_U16("graphics/pokemon/fennekin/shiny.gbapal"); const u8 gMonIcon_Fennekin[] = INCBIN_U8("graphics/pokemon/fennekin/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Fennekin[] = INCBIN_U8("graphics/pokemon/fennekin/footprint.1bpp"); @@ -19110,15 +19110,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Fennekin[] = INCBIN_U16("graphics/pokemon/fennekin/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Fennekin[] = INCBIN_U16("graphics/pokemon/fennekin/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Braixen[] = INCBIN_U16("graphics/pokemon/braixen/normal.gbapal"); const u32 gMonBackPic_Braixen[] = INCBIN_U32("graphics/pokemon/braixen/back.4bpp.lz"); - const u32 gMonShinyPalette_Braixen[] = INCBIN_U32("graphics/pokemon/braixen/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Braixen[] = INCBIN_U16("graphics/pokemon/braixen/shiny.gbapal"); const u8 gMonIcon_Braixen[] = INCBIN_U8("graphics/pokemon/braixen/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Braixen[] = INCBIN_U8("graphics/pokemon/braixen/footprint.1bpp"); @@ -19126,15 +19126,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Braixen[] = INCBIN_U16("graphics/pokemon/braixen/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Braixen[] = INCBIN_U16("graphics/pokemon/braixen/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Delphox[] = INCBIN_U16("graphics/pokemon/delphox/normal.gbapal"); const u32 gMonBackPic_Delphox[] = INCBIN_U32("graphics/pokemon/delphox/back.4bpp.lz"); - const u32 gMonShinyPalette_Delphox[] = INCBIN_U32("graphics/pokemon/delphox/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Delphox[] = INCBIN_U16("graphics/pokemon/delphox/shiny.gbapal"); const u8 gMonIcon_Delphox[] = INCBIN_U8("graphics/pokemon/delphox/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Delphox[] = INCBIN_U8("graphics/pokemon/delphox/footprint.1bpp"); @@ -19142,17 +19142,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Delphox[] = INCBIN_U16("graphics/pokemon/delphox/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Delphox[] = INCBIN_U16("graphics/pokemon/delphox/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_FENNEKIN #if P_FAMILY_FROAKIE const u32 gMonFrontPic_Froakie[] = INCBIN_U32("graphics/pokemon/froakie/anim_front.4bpp.lz"); - const u32 gMonPalette_Froakie[] = INCBIN_U32("graphics/pokemon/froakie/normal.gbapal.lz"); + const u16 gMonPalette_Froakie[] = INCBIN_U16("graphics/pokemon/froakie/normal.gbapal"); const u32 gMonBackPic_Froakie[] = INCBIN_U32("graphics/pokemon/froakie/back.4bpp.lz"); - const u32 gMonShinyPalette_Froakie[] = INCBIN_U32("graphics/pokemon/froakie/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Froakie[] = INCBIN_U16("graphics/pokemon/froakie/shiny.gbapal"); const u8 gMonIcon_Froakie[] = INCBIN_U8("graphics/pokemon/froakie/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Froakie[] = INCBIN_U8("graphics/pokemon/froakie/footprint.1bpp"); @@ -19160,15 +19160,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Froakie[] = INCBIN_U16("graphics/pokemon/froakie/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Froakie[] = INCBIN_U16("graphics/pokemon/froakie/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Frogadier[] = INCBIN_U16("graphics/pokemon/frogadier/normal.gbapal"); const u32 gMonBackPic_Frogadier[] = INCBIN_U32("graphics/pokemon/frogadier/back.4bpp.lz"); - const u32 gMonShinyPalette_Frogadier[] = INCBIN_U32("graphics/pokemon/frogadier/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Frogadier[] = INCBIN_U16("graphics/pokemon/frogadier/shiny.gbapal"); const u8 gMonIcon_Frogadier[] = INCBIN_U8("graphics/pokemon/frogadier/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Frogadier[] = INCBIN_U8("graphics/pokemon/frogadier/footprint.1bpp"); @@ -19176,15 +19176,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Frogadier[] = INCBIN_U16("graphics/pokemon/frogadier/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Frogadier[] = INCBIN_U16("graphics/pokemon/frogadier/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Greninja[] = INCBIN_U16("graphics/pokemon/greninja/normal.gbapal"); const u32 gMonBackPic_Greninja[] = INCBIN_U32("graphics/pokemon/greninja/back.4bpp.lz"); - const u32 gMonShinyPalette_Greninja[] = INCBIN_U32("graphics/pokemon/greninja/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Greninja[] = INCBIN_U16("graphics/pokemon/greninja/shiny.gbapal"); const u8 gMonIcon_Greninja[] = INCBIN_U8("graphics/pokemon/greninja/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Greninja[] = INCBIN_U8("graphics/pokemon/greninja/footprint.1bpp"); @@ -19192,30 +19192,30 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Greninja[] = INCBIN_U16("graphics/pokemon/greninja/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Greninja[] = INCBIN_U16("graphics/pokemon/greninja/overworld_shiny.gbapal"); #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 u16 gMonPalette_GreninjaAsh[] = INCBIN_U16("graphics/pokemon/greninja/ash/normal.gbapal"); 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 u16 gMonShinyPalette_GreninjaAsh[] = INCBIN_U16("graphics/pokemon/greninja/ash/shiny.gbapal"); 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"); + // const u16 gOverworldPalette_GreninjaAsh[] = INCBIN_U16("graphics/pokemon/greninja/ash/overworld_normal.gbapal"); + // const u16 gShinyOverworldPalette_GreninjaAsh[] = INCBIN_U16("graphics/pokemon/greninja/ash/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_FROAKIE #if P_FAMILY_BUNNELBY const u32 gMonFrontPic_Bunnelby[] = INCBIN_U32("graphics/pokemon/bunnelby/anim_front.4bpp.lz"); - const u32 gMonPalette_Bunnelby[] = INCBIN_U32("graphics/pokemon/bunnelby/normal.gbapal.lz"); + const u16 gMonPalette_Bunnelby[] = INCBIN_U16("graphics/pokemon/bunnelby/normal.gbapal"); const u32 gMonBackPic_Bunnelby[] = INCBIN_U32("graphics/pokemon/bunnelby/back.4bpp.lz"); - const u32 gMonShinyPalette_Bunnelby[] = INCBIN_U32("graphics/pokemon/bunnelby/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Bunnelby[] = INCBIN_U16("graphics/pokemon/bunnelby/shiny.gbapal"); const u8 gMonIcon_Bunnelby[] = INCBIN_U8("graphics/pokemon/bunnelby/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Bunnelby[] = INCBIN_U8("graphics/pokemon/bunnelby/footprint.1bpp"); @@ -19223,15 +19223,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Bunnelby[] = INCBIN_U16("graphics/pokemon/bunnelby/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Bunnelby[] = INCBIN_U16("graphics/pokemon/bunnelby/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Diggersby[] = INCBIN_U16("graphics/pokemon/diggersby/normal.gbapal"); const u32 gMonBackPic_Diggersby[] = INCBIN_U32("graphics/pokemon/diggersby/back.4bpp.lz"); - const u32 gMonShinyPalette_Diggersby[] = INCBIN_U32("graphics/pokemon/diggersby/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Diggersby[] = INCBIN_U16("graphics/pokemon/diggersby/shiny.gbapal"); const u8 gMonIcon_Diggersby[] = INCBIN_U8("graphics/pokemon/diggersby/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Diggersby[] = INCBIN_U8("graphics/pokemon/diggersby/footprint.1bpp"); @@ -19239,17 +19239,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Diggersby[] = INCBIN_U16("graphics/pokemon/diggersby/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Diggersby[] = INCBIN_U16("graphics/pokemon/diggersby/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_BUNNELBY #if P_FAMILY_FLETCHLING const u32 gMonFrontPic_Fletchling[] = INCBIN_U32("graphics/pokemon/fletchling/anim_front.4bpp.lz"); - const u32 gMonPalette_Fletchling[] = INCBIN_U32("graphics/pokemon/fletchling/normal.gbapal.lz"); + const u16 gMonPalette_Fletchling[] = INCBIN_U16("graphics/pokemon/fletchling/normal.gbapal"); const u32 gMonBackPic_Fletchling[] = INCBIN_U32("graphics/pokemon/fletchling/back.4bpp.lz"); - const u32 gMonShinyPalette_Fletchling[] = INCBIN_U32("graphics/pokemon/fletchling/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Fletchling[] = INCBIN_U16("graphics/pokemon/fletchling/shiny.gbapal"); const u8 gMonIcon_Fletchling[] = INCBIN_U8("graphics/pokemon/fletchling/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Fletchling[] = INCBIN_U8("graphics/pokemon/fletchling/footprint.1bpp"); @@ -19257,15 +19257,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Fletchling[] = INCBIN_U16("graphics/pokemon/fletchling/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Fletchling[] = INCBIN_U16("graphics/pokemon/fletchling/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Fletchinder[] = INCBIN_U16("graphics/pokemon/fletchinder/normal.gbapal"); const u32 gMonBackPic_Fletchinder[] = INCBIN_U32("graphics/pokemon/fletchinder/back.4bpp.lz"); - const u32 gMonShinyPalette_Fletchinder[] = INCBIN_U32("graphics/pokemon/fletchinder/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Fletchinder[] = INCBIN_U16("graphics/pokemon/fletchinder/shiny.gbapal"); const u8 gMonIcon_Fletchinder[] = INCBIN_U8("graphics/pokemon/fletchinder/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Fletchinder[] = INCBIN_U8("graphics/pokemon/fletchinder/footprint.1bpp"); @@ -19273,15 +19273,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Fletchinder[] = INCBIN_U16("graphics/pokemon/fletchinder/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Fletchinder[] = INCBIN_U16("graphics/pokemon/fletchinder/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Talonflame[] = INCBIN_U16("graphics/pokemon/talonflame/normal.gbapal"); const u32 gMonBackPic_Talonflame[] = INCBIN_U32("graphics/pokemon/talonflame/back.4bpp.lz"); - const u32 gMonShinyPalette_Talonflame[] = INCBIN_U32("graphics/pokemon/talonflame/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Talonflame[] = INCBIN_U16("graphics/pokemon/talonflame/shiny.gbapal"); const u8 gMonIcon_Talonflame[] = INCBIN_U8("graphics/pokemon/talonflame/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Talonflame[] = INCBIN_U8("graphics/pokemon/talonflame/footprint.1bpp"); @@ -19289,17 +19289,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Talonflame[] = INCBIN_U16("graphics/pokemon/talonflame/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Talonflame[] = INCBIN_U16("graphics/pokemon/talonflame/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_FLETCHLING #if P_FAMILY_SCATTERBUG const u32 gMonFrontPic_Scatterbug[] = INCBIN_U32("graphics/pokemon/scatterbug/anim_front.4bpp.lz"); - const u32 gMonPalette_Scatterbug[] = INCBIN_U32("graphics/pokemon/scatterbug/normal.gbapal.lz"); + const u16 gMonPalette_Scatterbug[] = INCBIN_U16("graphics/pokemon/scatterbug/normal.gbapal"); const u32 gMonBackPic_Scatterbug[] = INCBIN_U32("graphics/pokemon/scatterbug/back.4bpp.lz"); - const u32 gMonShinyPalette_Scatterbug[] = INCBIN_U32("graphics/pokemon/scatterbug/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Scatterbug[] = INCBIN_U16("graphics/pokemon/scatterbug/shiny.gbapal"); const u8 gMonIcon_Scatterbug[] = INCBIN_U8("graphics/pokemon/scatterbug/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Scatterbug[] = INCBIN_U8("graphics/pokemon/scatterbug/footprint.1bpp"); @@ -19307,15 +19307,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Scatterbug[] = INCBIN_U16("graphics/pokemon/scatterbug/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Scatterbug[] = INCBIN_U16("graphics/pokemon/scatterbug/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Spewpa[] = INCBIN_U16("graphics/pokemon/spewpa/normal.gbapal"); const u32 gMonBackPic_Spewpa[] = INCBIN_U32("graphics/pokemon/spewpa/back.4bpp.lz"); - const u32 gMonShinyPalette_Spewpa[] = INCBIN_U32("graphics/pokemon/spewpa/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Spewpa[] = INCBIN_U16("graphics/pokemon/spewpa/shiny.gbapal"); const u8 gMonIcon_Spewpa[] = INCBIN_U8("graphics/pokemon/spewpa/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Spewpa[] = INCBIN_U8("graphics/pokemon/spewpa/footprint.1bpp"); @@ -19323,108 +19323,108 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Spewpa[] = INCBIN_U16("graphics/pokemon/spewpa/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Spewpa[] = INCBIN_U16("graphics/pokemon/spewpa/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_VivillonIcySnow[] = INCBIN_U16("graphics/pokemon/vivillon/normal.gbapal"); const u32 gMonBackPic_VivillonIcySnow[] = INCBIN_U32("graphics/pokemon/vivillon/back.4bpp.lz"); - const u32 gMonShinyPalette_VivillonIcySnow[] = INCBIN_U32("graphics/pokemon/vivillon/shiny.gbapal.lz"); + const u16 gMonShinyPalette_VivillonIcySnow[] = INCBIN_U16("graphics/pokemon/vivillon/shiny.gbapal"); const u8 gMonIcon_VivillonIcySnow[] = INCBIN_U8("graphics/pokemon/vivillon/meadow/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Vivillon[] = INCBIN_U8("graphics/pokemon/vivillon/footprint.1bpp"); #endif //P_FOOTPRINTS const u32 gMonFrontPic_VivillonPolar[] = INCBIN_U32("graphics/pokemon/vivillon/polar/anim_front.4bpp.lz"); - const u32 gMonPalette_VivillonPolar[] = INCBIN_U32("graphics/pokemon/vivillon/polar/normal.gbapal.lz"); + const u16 gMonPalette_VivillonPolar[] = INCBIN_U16("graphics/pokemon/vivillon/polar/normal.gbapal"); const u32 gMonBackPic_VivillonPolar[] = INCBIN_U32("graphics/pokemon/vivillon/polar/back.4bpp.lz"); - const u32 gMonShinyPalette_VivillonPolar[] = INCBIN_U32("graphics/pokemon/vivillon/polar/shiny.gbapal.lz"); + const u16 gMonShinyPalette_VivillonPolar[] = INCBIN_U16("graphics/pokemon/vivillon/polar/shiny.gbapal"); const u8 gMonIcon_VivillonPolar[] = INCBIN_U8("graphics/pokemon/vivillon/polar/icon.4bpp"); const u32 gMonFrontPic_VivillonTundra[] = INCBIN_U32("graphics/pokemon/vivillon/tundra/anim_front.4bpp.lz"); - const u32 gMonPalette_VivillonTundra[] = INCBIN_U32("graphics/pokemon/vivillon/tundra/normal.gbapal.lz"); + const u16 gMonPalette_VivillonTundra[] = INCBIN_U16("graphics/pokemon/vivillon/tundra/normal.gbapal"); const u32 gMonBackPic_VivillonTundra[] = INCBIN_U32("graphics/pokemon/vivillon/tundra/back.4bpp.lz"); - const u32 gMonShinyPalette_VivillonTundra[] = INCBIN_U32("graphics/pokemon/vivillon/tundra/shiny.gbapal.lz"); + const u16 gMonShinyPalette_VivillonTundra[] = INCBIN_U16("graphics/pokemon/vivillon/tundra/shiny.gbapal"); const u8 gMonIcon_VivillonTundra[] = INCBIN_U8("graphics/pokemon/vivillon/tundra/icon.4bpp"); const u32 gMonFrontPic_VivillonContinental[] = INCBIN_U32("graphics/pokemon/vivillon/continental/anim_front.4bpp.lz"); - const u32 gMonPalette_VivillonContinental[] = INCBIN_U32("graphics/pokemon/vivillon/continental/normal.gbapal.lz"); + const u16 gMonPalette_VivillonContinental[] = INCBIN_U16("graphics/pokemon/vivillon/continental/normal.gbapal"); const u32 gMonBackPic_VivillonContinental[] = INCBIN_U32("graphics/pokemon/vivillon/continental/back.4bpp.lz"); - const u32 gMonShinyPalette_VivillonContinental[] = INCBIN_U32("graphics/pokemon/vivillon/continental/shiny.gbapal.lz"); + const u16 gMonShinyPalette_VivillonContinental[] = INCBIN_U16("graphics/pokemon/vivillon/continental/shiny.gbapal"); const u8 gMonIcon_VivillonContinental[] = INCBIN_U8("graphics/pokemon/vivillon/continental/icon.4bpp"); const u32 gMonFrontPic_VivillonGarden[] = INCBIN_U32("graphics/pokemon/vivillon/garden/anim_front.4bpp.lz"); - const u32 gMonPalette_VivillonGarden[] = INCBIN_U32("graphics/pokemon/vivillon/garden/normal.gbapal.lz"); + const u16 gMonPalette_VivillonGarden[] = INCBIN_U16("graphics/pokemon/vivillon/garden/normal.gbapal"); const u32 gMonBackPic_VivillonGarden[] = INCBIN_U32("graphics/pokemon/vivillon/garden/back.4bpp.lz"); - const u32 gMonShinyPalette_VivillonGarden[] = INCBIN_U32("graphics/pokemon/vivillon/garden/shiny.gbapal.lz"); + const u16 gMonShinyPalette_VivillonGarden[] = INCBIN_U16("graphics/pokemon/vivillon/garden/shiny.gbapal"); const u8 gMonIcon_VivillonGarden[] = INCBIN_U8("graphics/pokemon/vivillon/garden/icon.4bpp"); const u32 gMonFrontPic_VivillonElegant[] = INCBIN_U32("graphics/pokemon/vivillon/elegant/anim_front.4bpp.lz"); - const u32 gMonPalette_VivillonElegant[] = INCBIN_U32("graphics/pokemon/vivillon/elegant/normal.gbapal.lz"); + const u16 gMonPalette_VivillonElegant[] = INCBIN_U16("graphics/pokemon/vivillon/elegant/normal.gbapal"); const u32 gMonBackPic_VivillonElegant[] = INCBIN_U32("graphics/pokemon/vivillon/elegant/back.4bpp.lz"); - const u32 gMonShinyPalette_VivillonElegant[] = INCBIN_U32("graphics/pokemon/vivillon/elegant/shiny.gbapal.lz"); + const u16 gMonShinyPalette_VivillonElegant[] = INCBIN_U16("graphics/pokemon/vivillon/elegant/shiny.gbapal"); const u8 gMonIcon_VivillonElegant[] = INCBIN_U8("graphics/pokemon/vivillon/elegant/icon.4bpp"); const u32 gMonFrontPic_VivillonMeadow[] = INCBIN_U32("graphics/pokemon/vivillon/meadow/anim_front.4bpp.lz"); - const u32 gMonPalette_VivillonMeadow[] = INCBIN_U32("graphics/pokemon/vivillon/meadow/normal.gbapal.lz"); + const u16 gMonPalette_VivillonMeadow[] = INCBIN_U16("graphics/pokemon/vivillon/meadow/normal.gbapal"); const u32 gMonBackPic_VivillonMeadow[] = INCBIN_U32("graphics/pokemon/vivillon/meadow/back.4bpp.lz"); - const u32 gMonShinyPalette_VivillonMeadow[] = INCBIN_U32("graphics/pokemon/vivillon/meadow/shiny.gbapal.lz"); + const u16 gMonShinyPalette_VivillonMeadow[] = INCBIN_U16("graphics/pokemon/vivillon/meadow/shiny.gbapal"); const u8 gMonIcon_VivillonMeadow[] = INCBIN_U8("graphics/pokemon/vivillon/meadow/icon.4bpp"); const u32 gMonFrontPic_VivillonModern[] = INCBIN_U32("graphics/pokemon/vivillon/modern/anim_front.4bpp.lz"); - const u32 gMonPalette_VivillonModern[] = INCBIN_U32("graphics/pokemon/vivillon/modern/normal.gbapal.lz"); + const u16 gMonPalette_VivillonModern[] = INCBIN_U16("graphics/pokemon/vivillon/modern/normal.gbapal"); const u32 gMonBackPic_VivillonModern[] = INCBIN_U32("graphics/pokemon/vivillon/modern/back.4bpp.lz"); - const u32 gMonShinyPalette_VivillonModern[] = INCBIN_U32("graphics/pokemon/vivillon/modern/shiny.gbapal.lz"); + const u16 gMonShinyPalette_VivillonModern[] = INCBIN_U16("graphics/pokemon/vivillon/modern/shiny.gbapal"); const u8 gMonIcon_VivillonModern[] = INCBIN_U8("graphics/pokemon/vivillon/modern/icon.4bpp"); const u32 gMonFrontPic_VivillonMarine[] = INCBIN_U32("graphics/pokemon/vivillon/marine/anim_front.4bpp.lz"); - const u32 gMonPalette_VivillonMarine[] = INCBIN_U32("graphics/pokemon/vivillon/marine/normal.gbapal.lz"); + const u16 gMonPalette_VivillonMarine[] = INCBIN_U16("graphics/pokemon/vivillon/marine/normal.gbapal"); const u32 gMonBackPic_VivillonMarine[] = INCBIN_U32("graphics/pokemon/vivillon/marine/back.4bpp.lz"); - const u32 gMonShinyPalette_VivillonMarine[] = INCBIN_U32("graphics/pokemon/vivillon/marine/shiny.gbapal.lz"); + const u16 gMonShinyPalette_VivillonMarine[] = INCBIN_U16("graphics/pokemon/vivillon/marine/shiny.gbapal"); const u8 gMonIcon_VivillonMarine[] = INCBIN_U8("graphics/pokemon/vivillon/marine/icon.4bpp"); const u32 gMonFrontPic_VivillonArchipelago[] = INCBIN_U32("graphics/pokemon/vivillon/archipelago/anim_front.4bpp.lz"); - const u32 gMonPalette_VivillonArchipelago[] = INCBIN_U32("graphics/pokemon/vivillon/archipelago/normal.gbapal.lz"); + const u16 gMonPalette_VivillonArchipelago[] = INCBIN_U16("graphics/pokemon/vivillon/archipelago/normal.gbapal"); const u32 gMonBackPic_VivillonArchipelago[] = INCBIN_U32("graphics/pokemon/vivillon/archipelago/back.4bpp.lz"); - const u32 gMonShinyPalette_VivillonArchipelago[] = INCBIN_U32("graphics/pokemon/vivillon/archipelago/shiny.gbapal.lz"); + const u16 gMonShinyPalette_VivillonArchipelago[] = INCBIN_U16("graphics/pokemon/vivillon/archipelago/shiny.gbapal"); const u8 gMonIcon_VivillonArchipelago[] = INCBIN_U8("graphics/pokemon/vivillon/archipelago/icon.4bpp"); const u32 gMonFrontPic_VivillonHighPlains[] = INCBIN_U32("graphics/pokemon/vivillon/high_plains/anim_front.4bpp.lz"); - const u32 gMonPalette_VivillonHighPlains[] = INCBIN_U32("graphics/pokemon/vivillon/high_plains/normal.gbapal.lz"); + const u16 gMonPalette_VivillonHighPlains[] = INCBIN_U16("graphics/pokemon/vivillon/high_plains/normal.gbapal"); const u32 gMonBackPic_VivillonHighPlains[] = INCBIN_U32("graphics/pokemon/vivillon/high_plains/back.4bpp.lz"); - const u32 gMonShinyPalette_VivillonHighPlains[] = INCBIN_U32("graphics/pokemon/vivillon/high_plains/shiny.gbapal.lz"); + const u16 gMonShinyPalette_VivillonHighPlains[] = INCBIN_U16("graphics/pokemon/vivillon/high_plains/shiny.gbapal"); const u8 gMonIcon_VivillonHighPlains[] = INCBIN_U8("graphics/pokemon/vivillon/high_plains/icon.4bpp"); const u32 gMonFrontPic_VivillonSandstorm[] = INCBIN_U32("graphics/pokemon/vivillon/sandstorm/anim_front.4bpp.lz"); - const u32 gMonPalette_VivillonSandstorm[] = INCBIN_U32("graphics/pokemon/vivillon/sandstorm/normal.gbapal.lz"); + const u16 gMonPalette_VivillonSandstorm[] = INCBIN_U16("graphics/pokemon/vivillon/sandstorm/normal.gbapal"); const u32 gMonBackPic_VivillonSandstorm[] = INCBIN_U32("graphics/pokemon/vivillon/sandstorm/back.4bpp.lz"); - const u32 gMonShinyPalette_VivillonSandstorm[] = INCBIN_U32("graphics/pokemon/vivillon/sandstorm/shiny.gbapal.lz"); + const u16 gMonShinyPalette_VivillonSandstorm[] = INCBIN_U16("graphics/pokemon/vivillon/sandstorm/shiny.gbapal"); const u8 gMonIcon_VivillonSandstorm[] = INCBIN_U8("graphics/pokemon/vivillon/sandstorm/icon.4bpp"); const u32 gMonFrontPic_VivillonRiver[] = INCBIN_U32("graphics/pokemon/vivillon/river/anim_front.4bpp.lz"); - const u32 gMonPalette_VivillonRiver[] = INCBIN_U32("graphics/pokemon/vivillon/river/normal.gbapal.lz"); + const u16 gMonPalette_VivillonRiver[] = INCBIN_U16("graphics/pokemon/vivillon/river/normal.gbapal"); const u32 gMonBackPic_VivillonRiver[] = INCBIN_U32("graphics/pokemon/vivillon/river/back.4bpp.lz"); - const u32 gMonShinyPalette_VivillonRiver[] = INCBIN_U32("graphics/pokemon/vivillon/river/shiny.gbapal.lz"); + const u16 gMonShinyPalette_VivillonRiver[] = INCBIN_U16("graphics/pokemon/vivillon/river/shiny.gbapal"); const u8 gMonIcon_VivillonRiver[] = INCBIN_U8("graphics/pokemon/vivillon/river/icon.4bpp"); const u32 gMonFrontPic_VivillonMonsoon[] = INCBIN_U32("graphics/pokemon/vivillon/monsoon/anim_front.4bpp.lz"); - const u32 gMonPalette_VivillonMonsoon[] = INCBIN_U32("graphics/pokemon/vivillon/monsoon/normal.gbapal.lz"); + const u16 gMonPalette_VivillonMonsoon[] = INCBIN_U16("graphics/pokemon/vivillon/monsoon/normal.gbapal"); const u32 gMonBackPic_VivillonMonsoon[] = INCBIN_U32("graphics/pokemon/vivillon/monsoon/back.4bpp.lz"); - const u32 gMonShinyPalette_VivillonMonsoon[] = INCBIN_U32("graphics/pokemon/vivillon/monsoon/shiny.gbapal.lz"); + const u16 gMonShinyPalette_VivillonMonsoon[] = INCBIN_U16("graphics/pokemon/vivillon/monsoon/shiny.gbapal"); const u8 gMonIcon_VivillonMonsoon[] = INCBIN_U8("graphics/pokemon/vivillon/monsoon/icon.4bpp"); const u32 gMonFrontPic_VivillonSavanna[] = INCBIN_U32("graphics/pokemon/vivillon/savanna/anim_front.4bpp.lz"); - const u32 gMonPalette_VivillonSavanna[] = INCBIN_U32("graphics/pokemon/vivillon/savanna/normal.gbapal.lz"); + const u16 gMonPalette_VivillonSavanna[] = INCBIN_U16("graphics/pokemon/vivillon/savanna/normal.gbapal"); const u32 gMonBackPic_VivillonSavanna[] = INCBIN_U32("graphics/pokemon/vivillon/savanna/back.4bpp.lz"); - const u32 gMonShinyPalette_VivillonSavanna[] = INCBIN_U32("graphics/pokemon/vivillon/savanna/shiny.gbapal.lz"); + const u16 gMonShinyPalette_VivillonSavanna[] = INCBIN_U16("graphics/pokemon/vivillon/savanna/shiny.gbapal"); const u8 gMonIcon_VivillonSavanna[] = INCBIN_U8("graphics/pokemon/vivillon/savanna/icon.4bpp"); const u32 gMonFrontPic_VivillonSun[] = INCBIN_U32("graphics/pokemon/vivillon/sun/anim_front.4bpp.lz"); - const u32 gMonPalette_VivillonSun[] = INCBIN_U32("graphics/pokemon/vivillon/sun/normal.gbapal.lz"); + const u16 gMonPalette_VivillonSun[] = INCBIN_U16("graphics/pokemon/vivillon/sun/normal.gbapal"); const u32 gMonBackPic_VivillonSun[] = INCBIN_U32("graphics/pokemon/vivillon/sun/back.4bpp.lz"); - const u32 gMonShinyPalette_VivillonSun[] = INCBIN_U32("graphics/pokemon/vivillon/sun/shiny.gbapal.lz"); + const u16 gMonShinyPalette_VivillonSun[] = INCBIN_U16("graphics/pokemon/vivillon/sun/shiny.gbapal"); const u8 gMonIcon_VivillonSun[] = INCBIN_U8("graphics/pokemon/vivillon/sun/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS @@ -19449,79 +19449,79 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ 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"); + const u16 gOverworldPalette_VivillonIcySnow[] = INCBIN_U16("graphics/pokemon/vivillon/overworld_normal.gbapal"); + const u16 gOverworldPalette_VivillonPolar[] = INCBIN_U16("graphics/pokemon/vivillon/polar/overworld_normal.gbapal"); + const u16 gOverworldPalette_VivillonTundra[] = INCBIN_U16("graphics/pokemon/vivillon/tundra/overworld_normal.gbapal"); + const u16 gOverworldPalette_VivillonContinental[] = INCBIN_U16("graphics/pokemon/vivillon/continental/overworld_normal.gbapal"); + const u16 gOverworldPalette_VivillonGarden[] = INCBIN_U16("graphics/pokemon/vivillon/garden/overworld_normal.gbapal"); + const u16 gOverworldPalette_VivillonElegant[] = INCBIN_U16("graphics/pokemon/vivillon/elegant/overworld_normal.gbapal"); + const u16 gOverworldPalette_VivillonMeadow[] = INCBIN_U16("graphics/pokemon/vivillon/meadow/overworld_normal.gbapal"); + const u16 gOverworldPalette_VivillonModern[] = INCBIN_U16("graphics/pokemon/vivillon/modern/overworld_normal.gbapal"); + const u16 gOverworldPalette_VivillonMarine[] = INCBIN_U16("graphics/pokemon/vivillon/marine/overworld_normal.gbapal"); + const u16 gOverworldPalette_VivillonArchipelago[] = INCBIN_U16("graphics/pokemon/vivillon/archipelago/overworld_normal.gbapal"); + const u16 gOverworldPalette_VivillonHighPlains[] = INCBIN_U16("graphics/pokemon/vivillon/high_plains/overworld_normal.gbapal"); + const u16 gOverworldPalette_VivillonSandstorm[] = INCBIN_U16("graphics/pokemon/vivillon/sandstorm/overworld_normal.gbapal"); + const u16 gOverworldPalette_VivillonRiver[] = INCBIN_U16("graphics/pokemon/vivillon/river/overworld_normal.gbapal"); + const u16 gOverworldPalette_VivillonMonsoon[] = INCBIN_U16("graphics/pokemon/vivillon/monsoon/overworld_normal.gbapal"); + const u16 gOverworldPalette_VivillonSavanna[] = INCBIN_U16("graphics/pokemon/vivillon/savanna/overworld_normal.gbapal"); + const u16 gOverworldPalette_VivillonSun[] = INCBIN_U16("graphics/pokemon/vivillon/sun/overworld_normal.gbapal"); + const u16 gOverworldPalette_VivillonOcean[] = INCBIN_U16("graphics/pokemon/vivillon/ocean/overworld_normal.gbapal"); + const u16 gOverworldPalette_VivillonJungle[] = INCBIN_U16("graphics/pokemon/vivillon/jungle/overworld_normal.gbapal"); + const u16 gOverworldPalette_VivillonFancy[] = INCBIN_U16("graphics/pokemon/vivillon/fancy/overworld_normal.gbapal"); + const u16 gOverworldPalette_VivillonPokeBall[] = INCBIN_U16("graphics/pokemon/vivillon/poke_ball/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_VivillonIcySnow[] = INCBIN_U16("graphics/pokemon/vivillon/overworld_shiny.gbapal"); + const u16 gShinyOverworldPalette_VivillonPolar[] = INCBIN_U16("graphics/pokemon/vivillon/polar/overworld_shiny.gbapal"); + const u16 gShinyOverworldPalette_VivillonTundra[] = INCBIN_U16("graphics/pokemon/vivillon/tundra/overworld_shiny.gbapal"); + const u16 gShinyOverworldPalette_VivillonContinental[] = INCBIN_U16("graphics/pokemon/vivillon/continental/overworld_shiny.gbapal"); + const u16 gShinyOverworldPalette_VivillonGarden[] = INCBIN_U16("graphics/pokemon/vivillon/garden/overworld_shiny.gbapal"); + const u16 gShinyOverworldPalette_VivillonElegant[] = INCBIN_U16("graphics/pokemon/vivillon/elegant/overworld_shiny.gbapal"); + const u16 gShinyOverworldPalette_VivillonMeadow[] = INCBIN_U16("graphics/pokemon/vivillon/meadow/overworld_shiny.gbapal"); + const u16 gShinyOverworldPalette_VivillonModern[] = INCBIN_U16("graphics/pokemon/vivillon/modern/overworld_shiny.gbapal"); + const u16 gShinyOverworldPalette_VivillonMarine[] = INCBIN_U16("graphics/pokemon/vivillon/marine/overworld_shiny.gbapal"); + const u16 gShinyOverworldPalette_VivillonArchipelago[] = INCBIN_U16("graphics/pokemon/vivillon/archipelago/overworld_shiny.gbapal"); + const u16 gShinyOverworldPalette_VivillonHighPlains[] = INCBIN_U16("graphics/pokemon/vivillon/high_plains/overworld_shiny.gbapal"); + const u16 gShinyOverworldPalette_VivillonSandstorm[] = INCBIN_U16("graphics/pokemon/vivillon/sandstorm/overworld_shiny.gbapal"); + const u16 gShinyOverworldPalette_VivillonRiver[] = INCBIN_U16("graphics/pokemon/vivillon/river/overworld_shiny.gbapal"); + const u16 gShinyOverworldPalette_VivillonMonsoon[] = INCBIN_U16("graphics/pokemon/vivillon/monsoon/overworld_shiny.gbapal"); + const u16 gShinyOverworldPalette_VivillonSavanna[] = INCBIN_U16("graphics/pokemon/vivillon/savanna/overworld_shiny.gbapal"); + const u16 gShinyOverworldPalette_VivillonSun[] = INCBIN_U16("graphics/pokemon/vivillon/sun/overworld_shiny.gbapal"); + const u16 gShinyOverworldPalette_VivillonOcean[] = INCBIN_U16("graphics/pokemon/vivillon/ocean/overworld_shiny.gbapal"); + const u16 gShinyOverworldPalette_VivillonJungle[] = INCBIN_U16("graphics/pokemon/vivillon/jungle/overworld_shiny.gbapal"); + const u16 gShinyOverworldPalette_VivillonFancy[] = INCBIN_U16("graphics/pokemon/vivillon/fancy/overworld_shiny.gbapal"); + const u16 gShinyOverworldPalette_VivillonPokeBall[] = INCBIN_U16("graphics/pokemon/vivillon/poke_ball/overworld_shiny.gbapal"); #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 u16 gMonPalette_VivillonOcean[] = INCBIN_U16("graphics/pokemon/vivillon/ocean/normal.gbapal"); const u32 gMonBackPic_VivillonOcean[] = INCBIN_U32("graphics/pokemon/vivillon/ocean/back.4bpp.lz"); - const u32 gMonShinyPalette_VivillonOcean[] = INCBIN_U32("graphics/pokemon/vivillon/ocean/shiny.gbapal.lz"); + const u16 gMonShinyPalette_VivillonOcean[] = INCBIN_U16("graphics/pokemon/vivillon/ocean/shiny.gbapal"); const u8 gMonIcon_VivillonOcean[] = INCBIN_U8("graphics/pokemon/vivillon/ocean/icon.4bpp"); const u32 gMonFrontPic_VivillonJungle[] = INCBIN_U32("graphics/pokemon/vivillon/jungle/anim_front.4bpp.lz"); - const u32 gMonPalette_VivillonJungle[] = INCBIN_U32("graphics/pokemon/vivillon/jungle/normal.gbapal.lz"); + const u16 gMonPalette_VivillonJungle[] = INCBIN_U16("graphics/pokemon/vivillon/jungle/normal.gbapal"); const u32 gMonBackPic_VivillonJungle[] = INCBIN_U32("graphics/pokemon/vivillon/jungle/back.4bpp.lz"); - const u32 gMonShinyPalette_VivillonJungle[] = INCBIN_U32("graphics/pokemon/vivillon/jungle/shiny.gbapal.lz"); + const u16 gMonShinyPalette_VivillonJungle[] = INCBIN_U16("graphics/pokemon/vivillon/jungle/shiny.gbapal"); const u8 gMonIcon_VivillonJungle[] = INCBIN_U8("graphics/pokemon/vivillon/jungle/icon.4bpp"); const u32 gMonFrontPic_VivillonFancy[] = INCBIN_U32("graphics/pokemon/vivillon/fancy/anim_front.4bpp.lz"); - const u32 gMonPalette_VivillonFancy[] = INCBIN_U32("graphics/pokemon/vivillon/fancy/normal.gbapal.lz"); + const u16 gMonPalette_VivillonFancy[] = INCBIN_U16("graphics/pokemon/vivillon/fancy/normal.gbapal"); const u32 gMonBackPic_VivillonFancy[] = INCBIN_U32("graphics/pokemon/vivillon/fancy/back.4bpp.lz"); - const u32 gMonShinyPalette_VivillonFancy[] = INCBIN_U32("graphics/pokemon/vivillon/fancy/shiny.gbapal.lz"); + const u16 gMonShinyPalette_VivillonFancy[] = INCBIN_U16("graphics/pokemon/vivillon/fancy/shiny.gbapal"); const u8 gMonIcon_VivillonFancy[] = INCBIN_U8("graphics/pokemon/vivillon/fancy/icon.4bpp"); const u32 gMonFrontPic_VivillonPokeBall[] = INCBIN_U32("graphics/pokemon/vivillon/poke_ball/anim_front.4bpp.lz"); - const u32 gMonPalette_VivillonPokeBall[] = INCBIN_U32("graphics/pokemon/vivillon/poke_ball/normal.gbapal.lz"); + const u16 gMonPalette_VivillonPokeBall[] = INCBIN_U16("graphics/pokemon/vivillon/poke_ball/normal.gbapal"); const u32 gMonBackPic_VivillonPokeBall[] = INCBIN_U32("graphics/pokemon/vivillon/poke_ball/back.4bpp.lz"); - const u32 gMonShinyPalette_VivillonPokeBall[] = INCBIN_U32("graphics/pokemon/vivillon/poke_ball/shiny.gbapal.lz"); + const u16 gMonShinyPalette_VivillonPokeBall[] = INCBIN_U16("graphics/pokemon/vivillon/poke_ball/shiny.gbapal"); const u8 gMonIcon_VivillonPokeBall[] = INCBIN_U8("graphics/pokemon/vivillon/poke_ball/icon.4bpp"); #endif //P_FAMILY_SCATTERBUG #if P_FAMILY_LITLEO const u32 gMonFrontPic_Litleo[] = INCBIN_U32("graphics/pokemon/litleo/anim_front.4bpp.lz"); - const u32 gMonPalette_Litleo[] = INCBIN_U32("graphics/pokemon/litleo/normal.gbapal.lz"); + const u16 gMonPalette_Litleo[] = INCBIN_U16("graphics/pokemon/litleo/normal.gbapal"); const u32 gMonBackPic_Litleo[] = INCBIN_U32("graphics/pokemon/litleo/back.4bpp.lz"); - const u32 gMonShinyPalette_Litleo[] = INCBIN_U32("graphics/pokemon/litleo/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Litleo[] = INCBIN_U16("graphics/pokemon/litleo/shiny.gbapal"); const u8 gMonIcon_Litleo[] = INCBIN_U8("graphics/pokemon/litleo/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Litleo[] = INCBIN_U8("graphics/pokemon/litleo/footprint.1bpp"); @@ -19529,15 +19529,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Litleo[] = INCBIN_U16("graphics/pokemon/litleo/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Litleo[] = INCBIN_U16("graphics/pokemon/litleo/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Pyroar[] = INCBIN_U16("graphics/pokemon/pyroar/normal.gbapal"); const u32 gMonBackPic_Pyroar[] = INCBIN_U32("graphics/pokemon/pyroar/back.4bpp.lz"); - const u32 gMonShinyPalette_Pyroar[] = INCBIN_U32("graphics/pokemon/pyroar/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Pyroar[] = INCBIN_U16("graphics/pokemon/pyroar/shiny.gbapal"); const u8 gMonIcon_Pyroar[] = INCBIN_U8("graphics/pokemon/pyroar/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Pyroar[] = INCBIN_U8("graphics/pokemon/pyroar/footprint.1bpp"); @@ -19545,8 +19545,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Pyroar[] = INCBIN_U16("graphics/pokemon/pyroar/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Pyroar[] = INCBIN_U16("graphics/pokemon/pyroar/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -19567,24 +19567,24 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u8 gMonFootprint_Flabebe[] = INCBIN_U8("graphics/pokemon/flabebe/footprint.1bpp"); #endif //P_FOOTPRINTS - const u32 gMonPalette_FlabebeRed[] = INCBIN_U32("graphics/pokemon/flabebe/normal.gbapal.lz"); - const u32 gMonShinyPalette_FlabebeRed[] = INCBIN_U32("graphics/pokemon/flabebe/shiny.gbapal.lz"); + const u16 gMonPalette_FlabebeRed[] = INCBIN_U16("graphics/pokemon/flabebe/normal.gbapal"); + const u16 gMonShinyPalette_FlabebeRed[] = INCBIN_U16("graphics/pokemon/flabebe/shiny.gbapal"); const u8 gMonIcon_FlabebeRed[] = INCBIN_U8("graphics/pokemon/flabebe/icon.4bpp"); - const u32 gMonPalette_FlabebeYellow[] = INCBIN_U32("graphics/pokemon/flabebe/yellow/normal.gbapal.lz"); - const u32 gMonShinyPalette_FlabebeYellow[] = INCBIN_U32("graphics/pokemon/flabebe/yellow/shiny.gbapal.lz"); + const u16 gMonPalette_FlabebeYellow[] = INCBIN_U16("graphics/pokemon/flabebe/yellow/normal.gbapal"); + const u16 gMonShinyPalette_FlabebeYellow[] = INCBIN_U16("graphics/pokemon/flabebe/yellow/shiny.gbapal"); const u8 gMonIcon_FlabebeYellow[] = INCBIN_U8("graphics/pokemon/flabebe/yellow/icon.4bpp"); - const u32 gMonPalette_FlabebeOrange[] = INCBIN_U32("graphics/pokemon/flabebe/orange/normal.gbapal.lz"); - const u32 gMonShinyPalette_FlabebeOrange[] = INCBIN_U32("graphics/pokemon/flabebe/orange/shiny.gbapal.lz"); + const u16 gMonPalette_FlabebeOrange[] = INCBIN_U16("graphics/pokemon/flabebe/orange/normal.gbapal"); + const u16 gMonShinyPalette_FlabebeOrange[] = INCBIN_U16("graphics/pokemon/flabebe/orange/shiny.gbapal"); const u8 gMonIcon_FlabebeOrange[] = INCBIN_U8("graphics/pokemon/flabebe/orange/icon.4bpp"); - const u32 gMonPalette_FlabebeBlue[] = INCBIN_U32("graphics/pokemon/flabebe/blue/normal.gbapal.lz"); - const u32 gMonShinyPalette_FlabebeBlue[] = INCBIN_U32("graphics/pokemon/flabebe/blue/shiny.gbapal.lz"); + const u16 gMonPalette_FlabebeBlue[] = INCBIN_U16("graphics/pokemon/flabebe/blue/normal.gbapal"); + const u16 gMonShinyPalette_FlabebeBlue[] = INCBIN_U16("graphics/pokemon/flabebe/blue/shiny.gbapal"); const u8 gMonIcon_FlabebeBlue[] = INCBIN_U8("graphics/pokemon/flabebe/blue/icon.4bpp"); - const u32 gMonPalette_FlabebeWhite[] = INCBIN_U32("graphics/pokemon/flabebe/white/normal.gbapal.lz"); - const u32 gMonShinyPalette_FlabebeWhite[] = INCBIN_U32("graphics/pokemon/flabebe/white/shiny.gbapal.lz"); + const u16 gMonPalette_FlabebeWhite[] = INCBIN_U16("graphics/pokemon/flabebe/white/normal.gbapal"); + const u16 gMonShinyPalette_FlabebeWhite[] = INCBIN_U16("graphics/pokemon/flabebe/white/shiny.gbapal"); const u8 gMonIcon_FlabebeWhite[] = INCBIN_U8("graphics/pokemon/flabebe/white/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS @@ -19594,16 +19594,16 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gObjectEventPic_FlabebeBlue[] = INCBIN_COMP("graphics/pokemon/flabebe/blue/overworld.4bpp"); const u32 gObjectEventPic_FlabebeWhite[] = INCBIN_COMP("graphics/pokemon/flabebe/white/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - const u32 gOverworldPalette_FlabebeRed[] = INCBIN_U32("graphics/pokemon/flabebe/overworld_normal.gbapal.lz"); - const u32 gOverworldPalette_FlabebeYellow[] = INCBIN_U32("graphics/pokemon/flabebe/yellow/overworld_normal.gbapal.lz"); - const u32 gOverworldPalette_FlabebeOrange[] = INCBIN_U32("graphics/pokemon/flabebe/orange/overworld_normal.gbapal.lz"); - const u32 gOverworldPalette_FlabebeBlue[] = INCBIN_U32("graphics/pokemon/flabebe/blue/overworld_normal.gbapal.lz"); - const u32 gOverworldPalette_FlabebeWhite[] = INCBIN_U32("graphics/pokemon/flabebe/white/overworld_normal.gbapal.lz"); - const u32 gShinyOverworldPalette_FlabebeRed[] = INCBIN_U32("graphics/pokemon/flabebe/overworld_shiny.gbapal.lz"); - const u32 gShinyOverworldPalette_FlabebeYellow[] = INCBIN_U32("graphics/pokemon/flabebe/yellow/overworld_shiny.gbapal.lz"); - const u32 gShinyOverworldPalette_FlabebeOrange[] = INCBIN_U32("graphics/pokemon/flabebe/orange/overworld_shiny.gbapal.lz"); - const u32 gShinyOverworldPalette_FlabebeBlue[] = INCBIN_U32("graphics/pokemon/flabebe/blue/overworld_shiny.gbapal.lz"); - const u32 gShinyOverworldPalette_FlabebeWhite[] = INCBIN_U32("graphics/pokemon/flabebe/white/overworld_shiny.gbapal.lz"); + const u16 gOverworldPalette_FlabebeRed[] = INCBIN_U16("graphics/pokemon/flabebe/overworld_normal.gbapal"); + const u16 gOverworldPalette_FlabebeYellow[] = INCBIN_U16("graphics/pokemon/flabebe/yellow/overworld_normal.gbapal"); + const u16 gOverworldPalette_FlabebeOrange[] = INCBIN_U16("graphics/pokemon/flabebe/orange/overworld_normal.gbapal"); + const u16 gOverworldPalette_FlabebeBlue[] = INCBIN_U16("graphics/pokemon/flabebe/blue/overworld_normal.gbapal"); + const u16 gOverworldPalette_FlabebeWhite[] = INCBIN_U16("graphics/pokemon/flabebe/white/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_FlabebeRed[] = INCBIN_U16("graphics/pokemon/flabebe/overworld_shiny.gbapal"); + const u16 gShinyOverworldPalette_FlabebeYellow[] = INCBIN_U16("graphics/pokemon/flabebe/yellow/overworld_shiny.gbapal"); + const u16 gShinyOverworldPalette_FlabebeOrange[] = INCBIN_U16("graphics/pokemon/flabebe/orange/overworld_shiny.gbapal"); + const u16 gShinyOverworldPalette_FlabebeBlue[] = INCBIN_U16("graphics/pokemon/flabebe/blue/overworld_shiny.gbapal"); + const u16 gShinyOverworldPalette_FlabebeWhite[] = INCBIN_U16("graphics/pokemon/flabebe/white/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -19613,30 +19613,30 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u8 gMonFootprint_Floette[] = INCBIN_U8("graphics/pokemon/floette/footprint.1bpp"); #endif //P_FOOTPRINTS - const u32 gMonPalette_FloetteRed[] = INCBIN_U32("graphics/pokemon/floette/normal.gbapal.lz"); - const u32 gMonShinyPalette_FloetteRed[] = INCBIN_U32("graphics/pokemon/floette/shiny.gbapal.lz"); + const u16 gMonPalette_FloetteRed[] = INCBIN_U16("graphics/pokemon/floette/normal.gbapal"); + const u16 gMonShinyPalette_FloetteRed[] = INCBIN_U16("graphics/pokemon/floette/shiny.gbapal"); const u8 gMonIcon_FloetteRed[] = INCBIN_U8("graphics/pokemon/floette/icon.4bpp"); - const u32 gMonPalette_FloetteYellow[] = INCBIN_U32("graphics/pokemon/floette/yellow/normal.gbapal.lz"); - const u32 gMonShinyPalette_FloetteYellow[] = INCBIN_U32("graphics/pokemon/floette/yellow/shiny.gbapal.lz"); + const u16 gMonPalette_FloetteYellow[] = INCBIN_U16("graphics/pokemon/floette/yellow/normal.gbapal"); + const u16 gMonShinyPalette_FloetteYellow[] = INCBIN_U16("graphics/pokemon/floette/yellow/shiny.gbapal"); const u8 gMonIcon_FloetteYellow[] = INCBIN_U8("graphics/pokemon/floette/yellow/icon.4bpp"); - const u32 gMonPalette_FloetteOrange[] = INCBIN_U32("graphics/pokemon/floette/orange/normal.gbapal.lz"); - const u32 gMonShinyPalette_FloetteOrange[] = INCBIN_U32("graphics/pokemon/floette/orange/shiny.gbapal.lz"); + const u16 gMonPalette_FloetteOrange[] = INCBIN_U16("graphics/pokemon/floette/orange/normal.gbapal"); + const u16 gMonShinyPalette_FloetteOrange[] = INCBIN_U16("graphics/pokemon/floette/orange/shiny.gbapal"); const u8 gMonIcon_FloetteOrange[] = INCBIN_U8("graphics/pokemon/floette/orange/icon.4bpp"); - const u32 gMonPalette_FloetteBlue[] = INCBIN_U32("graphics/pokemon/floette/blue/normal.gbapal.lz"); - const u32 gMonShinyPalette_FloetteBlue[] = INCBIN_U32("graphics/pokemon/floette/blue/shiny.gbapal.lz"); + const u16 gMonPalette_FloetteBlue[] = INCBIN_U16("graphics/pokemon/floette/blue/normal.gbapal"); + const u16 gMonShinyPalette_FloetteBlue[] = INCBIN_U16("graphics/pokemon/floette/blue/shiny.gbapal"); const u8 gMonIcon_FloetteBlue[] = INCBIN_U8("graphics/pokemon/floette/blue/icon.4bpp"); - const u32 gMonPalette_FloetteWhite[] = INCBIN_U32("graphics/pokemon/floette/white/normal.gbapal.lz"); - const u32 gMonShinyPalette_FloetteWhite[] = INCBIN_U32("graphics/pokemon/floette/white/shiny.gbapal.lz"); + const u16 gMonPalette_FloetteWhite[] = INCBIN_U16("graphics/pokemon/floette/white/normal.gbapal"); + const u16 gMonShinyPalette_FloetteWhite[] = INCBIN_U16("graphics/pokemon/floette/white/shiny.gbapal"); const u8 gMonIcon_FloetteWhite[] = INCBIN_U8("graphics/pokemon/floette/white/icon.4bpp"); const u32 gMonFrontPic_FloetteEternal[] = INCBIN_U32("graphics/pokemon/floette/eternal/anim_front.4bpp.lz"); - const u32 gMonPalette_FloetteEternal[] = INCBIN_U32("graphics/pokemon/floette/eternal/normal.gbapal.lz"); + const u16 gMonPalette_FloetteEternal[] = INCBIN_U16("graphics/pokemon/floette/eternal/normal.gbapal"); const u32 gMonBackPic_FloetteEternal[] = INCBIN_U32("graphics/pokemon/floette/eternal/back.4bpp.lz"); - const u32 gMonShinyPalette_FloetteEternal[] = INCBIN_U32("graphics/pokemon/floette/eternal/shiny.gbapal.lz"); + const u16 gMonShinyPalette_FloetteEternal[] = INCBIN_U16("graphics/pokemon/floette/eternal/shiny.gbapal"); const u8 gMonIcon_FloetteEternal[] = INCBIN_U8("graphics/pokemon/floette/eternal/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS @@ -19647,18 +19647,18 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gObjectEventPic_FloetteWhite[] = INCBIN_COMP("graphics/pokemon/floette/white/overworld.4bpp"); const u32 gObjectEventPic_FloetteEternal[] = INCBIN_COMP("graphics/pokemon/floette/eternal/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - const u32 gOverworldPalette_FloetteRed[] = INCBIN_U32("graphics/pokemon/floette/overworld_normal.gbapal.lz"); - const u32 gOverworldPalette_FloetteYellow[] = INCBIN_U32("graphics/pokemon/floette/yellow/overworld_normal.gbapal.lz"); - const u32 gOverworldPalette_FloetteOrange[] = INCBIN_U32("graphics/pokemon/floette/orange/overworld_normal.gbapal.lz"); - const u32 gOverworldPalette_FloetteBlue[] = INCBIN_U32("graphics/pokemon/floette/blue/overworld_normal.gbapal.lz"); - const u32 gOverworldPalette_FloetteWhite[] = INCBIN_U32("graphics/pokemon/floette/white/overworld_normal.gbapal.lz"); - const u32 gOverworldPalette_FloetteEternal[] = INCBIN_U32("graphics/pokemon/floette/eternal/overworld_normal.gbapal.lz"); - const u32 gShinyOverworldPalette_FloetteRed[] = INCBIN_U32("graphics/pokemon/floette/overworld_shiny.gbapal.lz"); - const u32 gShinyOverworldPalette_FloetteYellow[] = INCBIN_U32("graphics/pokemon/floette/yellow/overworld_shiny.gbapal.lz"); - const u32 gShinyOverworldPalette_FloetteOrange[] = INCBIN_U32("graphics/pokemon/floette/orange/overworld_shiny.gbapal.lz"); - const u32 gShinyOverworldPalette_FloetteBlue[] = INCBIN_U32("graphics/pokemon/floette/blue/overworld_shiny.gbapal.lz"); - const u32 gShinyOverworldPalette_FloetteWhite[] = INCBIN_U32("graphics/pokemon/floette/white/overworld_shiny.gbapal.lz"); - const u32 gShinyOverworldPalette_FloetteEternal[] = INCBIN_U32("graphics/pokemon/floette/eternal/overworld_shiny.gbapal.lz"); + const u16 gOverworldPalette_FloetteRed[] = INCBIN_U16("graphics/pokemon/floette/overworld_normal.gbapal"); + const u16 gOverworldPalette_FloetteYellow[] = INCBIN_U16("graphics/pokemon/floette/yellow/overworld_normal.gbapal"); + const u16 gOverworldPalette_FloetteOrange[] = INCBIN_U16("graphics/pokemon/floette/orange/overworld_normal.gbapal"); + const u16 gOverworldPalette_FloetteBlue[] = INCBIN_U16("graphics/pokemon/floette/blue/overworld_normal.gbapal"); + const u16 gOverworldPalette_FloetteWhite[] = INCBIN_U16("graphics/pokemon/floette/white/overworld_normal.gbapal"); + const u16 gOverworldPalette_FloetteEternal[] = INCBIN_U16("graphics/pokemon/floette/eternal/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_FloetteRed[] = INCBIN_U16("graphics/pokemon/floette/overworld_shiny.gbapal"); + const u16 gShinyOverworldPalette_FloetteYellow[] = INCBIN_U16("graphics/pokemon/floette/yellow/overworld_shiny.gbapal"); + const u16 gShinyOverworldPalette_FloetteOrange[] = INCBIN_U16("graphics/pokemon/floette/orange/overworld_shiny.gbapal"); + const u16 gShinyOverworldPalette_FloetteBlue[] = INCBIN_U16("graphics/pokemon/floette/blue/overworld_shiny.gbapal"); + const u16 gShinyOverworldPalette_FloetteWhite[] = INCBIN_U16("graphics/pokemon/floette/white/overworld_shiny.gbapal"); + const u16 gShinyOverworldPalette_FloetteEternal[] = INCBIN_U16("graphics/pokemon/floette/eternal/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -19668,24 +19668,24 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u8 gMonFootprint_Florges[] = INCBIN_U8("graphics/pokemon/florges/footprint.1bpp"); #endif //P_FOOTPRINTS - const u32 gMonPalette_FlorgesRed[] = INCBIN_U32("graphics/pokemon/florges/normal.gbapal.lz"); - const u32 gMonShinyPalette_FlorgesRed[] = INCBIN_U32("graphics/pokemon/florges/shiny.gbapal.lz"); + const u16 gMonPalette_FlorgesRed[] = INCBIN_U16("graphics/pokemon/florges/normal.gbapal"); + const u16 gMonShinyPalette_FlorgesRed[] = INCBIN_U16("graphics/pokemon/florges/shiny.gbapal"); const u8 gMonIcon_FlorgesRed[] = INCBIN_U8("graphics/pokemon/florges/icon.4bpp"); - const u32 gMonPalette_FlorgesYellow[] = INCBIN_U32("graphics/pokemon/florges/yellow/normal.gbapal.lz"); - const u32 gMonShinyPalette_FlorgesYellow[] = INCBIN_U32("graphics/pokemon/florges/yellow/shiny.gbapal.lz"); + const u16 gMonPalette_FlorgesYellow[] = INCBIN_U16("graphics/pokemon/florges/yellow/normal.gbapal"); + const u16 gMonShinyPalette_FlorgesYellow[] = INCBIN_U16("graphics/pokemon/florges/yellow/shiny.gbapal"); const u8 gMonIcon_FlorgesYellow[] = INCBIN_U8("graphics/pokemon/florges/yellow/icon.4bpp"); - const u32 gMonPalette_FlorgesOrange[] = INCBIN_U32("graphics/pokemon/florges/orange/normal.gbapal.lz"); - const u32 gMonShinyPalette_FlorgesOrange[] = INCBIN_U32("graphics/pokemon/florges/orange/shiny.gbapal.lz"); + const u16 gMonPalette_FlorgesOrange[] = INCBIN_U16("graphics/pokemon/florges/orange/normal.gbapal"); + const u16 gMonShinyPalette_FlorgesOrange[] = INCBIN_U16("graphics/pokemon/florges/orange/shiny.gbapal"); const u8 gMonIcon_FlorgesOrange[] = INCBIN_U8("graphics/pokemon/florges/orange/icon.4bpp"); - const u32 gMonPalette_FlorgesBlue[] = INCBIN_U32("graphics/pokemon/florges/blue/normal.gbapal.lz"); - const u32 gMonShinyPalette_FlorgesBlue[] = INCBIN_U32("graphics/pokemon/florges/blue/shiny.gbapal.lz"); + const u16 gMonPalette_FlorgesBlue[] = INCBIN_U16("graphics/pokemon/florges/blue/normal.gbapal"); + const u16 gMonShinyPalette_FlorgesBlue[] = INCBIN_U16("graphics/pokemon/florges/blue/shiny.gbapal"); const u8 gMonIcon_FlorgesBlue[] = INCBIN_U8("graphics/pokemon/florges/blue/icon.4bpp"); - const u32 gMonPalette_FlorgesWhite[] = INCBIN_U32("graphics/pokemon/florges/white/normal.gbapal.lz"); - const u32 gMonShinyPalette_FlorgesWhite[] = INCBIN_U32("graphics/pokemon/florges/white/shiny.gbapal.lz"); + const u16 gMonPalette_FlorgesWhite[] = INCBIN_U16("graphics/pokemon/florges/white/normal.gbapal"); + const u16 gMonShinyPalette_FlorgesWhite[] = INCBIN_U16("graphics/pokemon/florges/white/shiny.gbapal"); const u8 gMonIcon_FlorgesWhite[] = INCBIN_U8("graphics/pokemon/florges/white/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS @@ -19695,25 +19695,25 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gObjectEventPic_FlorgesBlue[] = INCBIN_COMP("graphics/pokemon/florges/blue/overworld.4bpp"); const u32 gObjectEventPic_FlorgesWhite[] = INCBIN_COMP("graphics/pokemon/florges/white/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - const u32 gOverworldPalette_FlorgesRed[] = INCBIN_U32("graphics/pokemon/florges/overworld_normal.gbapal.lz"); - const u32 gOverworldPalette_FlorgesYellow[] = INCBIN_U32("graphics/pokemon/florges/yellow/overworld_normal.gbapal.lz"); - const u32 gOverworldPalette_FlorgesOrange[] = INCBIN_U32("graphics/pokemon/florges/orange/overworld_normal.gbapal.lz"); - const u32 gOverworldPalette_FlorgesBlue[] = INCBIN_U32("graphics/pokemon/florges/blue/overworld_normal.gbapal.lz"); - const u32 gOverworldPalette_FlorgesWhite[] = INCBIN_U32("graphics/pokemon/florges/white/overworld_normal.gbapal.lz"); - const u32 gShinyOverworldPalette_FlorgesRed[] = INCBIN_U32("graphics/pokemon/florges/overworld_shiny.gbapal.lz"); - const u32 gShinyOverworldPalette_FlorgesYellow[] = INCBIN_U32("graphics/pokemon/florges/yellow/overworld_shiny.gbapal.lz"); - const u32 gShinyOverworldPalette_FlorgesOrange[] = INCBIN_U32("graphics/pokemon/florges/orange/overworld_shiny.gbapal.lz"); - const u32 gShinyOverworldPalette_FlorgesBlue[] = INCBIN_U32("graphics/pokemon/florges/blue/overworld_shiny.gbapal.lz"); - const u32 gShinyOverworldPalette_FlorgesWhite[] = INCBIN_U32("graphics/pokemon/florges/white/overworld_shiny.gbapal.lz"); + const u16 gOverworldPalette_FlorgesRed[] = INCBIN_U16("graphics/pokemon/florges/overworld_normal.gbapal"); + const u16 gOverworldPalette_FlorgesYellow[] = INCBIN_U16("graphics/pokemon/florges/yellow/overworld_normal.gbapal"); + const u16 gOverworldPalette_FlorgesOrange[] = INCBIN_U16("graphics/pokemon/florges/orange/overworld_normal.gbapal"); + const u16 gOverworldPalette_FlorgesBlue[] = INCBIN_U16("graphics/pokemon/florges/blue/overworld_normal.gbapal"); + const u16 gOverworldPalette_FlorgesWhite[] = INCBIN_U16("graphics/pokemon/florges/white/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_FlorgesRed[] = INCBIN_U16("graphics/pokemon/florges/overworld_shiny.gbapal"); + const u16 gShinyOverworldPalette_FlorgesYellow[] = INCBIN_U16("graphics/pokemon/florges/yellow/overworld_shiny.gbapal"); + const u16 gShinyOverworldPalette_FlorgesOrange[] = INCBIN_U16("graphics/pokemon/florges/orange/overworld_shiny.gbapal"); + const u16 gShinyOverworldPalette_FlorgesBlue[] = INCBIN_U16("graphics/pokemon/florges/blue/overworld_shiny.gbapal"); + const u16 gShinyOverworldPalette_FlorgesWhite[] = INCBIN_U16("graphics/pokemon/florges/white/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_FLABEBE #if P_FAMILY_SKIDDO const u32 gMonFrontPic_Skiddo[] = INCBIN_U32("graphics/pokemon/skiddo/anim_front.4bpp.lz"); - const u32 gMonPalette_Skiddo[] = INCBIN_U32("graphics/pokemon/skiddo/normal.gbapal.lz"); + const u16 gMonPalette_Skiddo[] = INCBIN_U16("graphics/pokemon/skiddo/normal.gbapal"); const u32 gMonBackPic_Skiddo[] = INCBIN_U32("graphics/pokemon/skiddo/back.4bpp.lz"); - const u32 gMonShinyPalette_Skiddo[] = INCBIN_U32("graphics/pokemon/skiddo/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Skiddo[] = INCBIN_U16("graphics/pokemon/skiddo/shiny.gbapal"); const u8 gMonIcon_Skiddo[] = INCBIN_U8("graphics/pokemon/skiddo/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Skiddo[] = INCBIN_U8("graphics/pokemon/skiddo/footprint.1bpp"); @@ -19721,15 +19721,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Skiddo[] = INCBIN_U16("graphics/pokemon/skiddo/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Skiddo[] = INCBIN_U16("graphics/pokemon/skiddo/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Gogoat[] = INCBIN_U16("graphics/pokemon/gogoat/normal.gbapal"); const u32 gMonBackPic_Gogoat[] = INCBIN_U32("graphics/pokemon/gogoat/back.4bpp.lz"); - const u32 gMonShinyPalette_Gogoat[] = INCBIN_U32("graphics/pokemon/gogoat/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Gogoat[] = INCBIN_U16("graphics/pokemon/gogoat/shiny.gbapal"); const u8 gMonIcon_Gogoat[] = INCBIN_U8("graphics/pokemon/gogoat/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Gogoat[] = INCBIN_U8("graphics/pokemon/gogoat/footprint.1bpp"); @@ -19737,17 +19737,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Gogoat[] = INCBIN_U16("graphics/pokemon/gogoat/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Gogoat[] = INCBIN_U16("graphics/pokemon/gogoat/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SKIDDO #if P_FAMILY_PANCHAM const u32 gMonFrontPic_Pancham[] = INCBIN_U32("graphics/pokemon/pancham/anim_front.4bpp.lz"); - const u32 gMonPalette_Pancham[] = INCBIN_U32("graphics/pokemon/pancham/normal.gbapal.lz"); + const u16 gMonPalette_Pancham[] = INCBIN_U16("graphics/pokemon/pancham/normal.gbapal"); const u32 gMonBackPic_Pancham[] = INCBIN_U32("graphics/pokemon/pancham/back.4bpp.lz"); - const u32 gMonShinyPalette_Pancham[] = INCBIN_U32("graphics/pokemon/pancham/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Pancham[] = INCBIN_U16("graphics/pokemon/pancham/shiny.gbapal"); const u8 gMonIcon_Pancham[] = INCBIN_U8("graphics/pokemon/pancham/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Pancham[] = INCBIN_U8("graphics/pokemon/pancham/footprint.1bpp"); @@ -19755,15 +19755,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Pancham[] = INCBIN_U16("graphics/pokemon/pancham/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Pancham[] = INCBIN_U16("graphics/pokemon/pancham/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Pangoro[] = INCBIN_U16("graphics/pokemon/pangoro/normal.gbapal"); const u32 gMonBackPic_Pangoro[] = INCBIN_U32("graphics/pokemon/pangoro/back.4bpp.lz"); - const u32 gMonShinyPalette_Pangoro[] = INCBIN_U32("graphics/pokemon/pangoro/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Pangoro[] = INCBIN_U16("graphics/pokemon/pangoro/shiny.gbapal"); const u8 gMonIcon_Pangoro[] = INCBIN_U8("graphics/pokemon/pangoro/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Pangoro[] = INCBIN_U8("graphics/pokemon/pangoro/footprint.1bpp"); @@ -19771,74 +19771,74 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Pangoro[] = INCBIN_U16("graphics/pokemon/pangoro/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Pangoro[] = INCBIN_U16("graphics/pokemon/pangoro/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_PANCHAM #if P_FAMILY_FURFROU const u32 gMonFrontPic_FurfrouNatural[] = INCBIN_U32("graphics/pokemon/furfrou/anim_front.4bpp.lz"); - const u32 gMonPalette_FurfrouNatural[] = INCBIN_U32("graphics/pokemon/furfrou/normal.gbapal.lz"); + const u16 gMonPalette_FurfrouNatural[] = INCBIN_U16("graphics/pokemon/furfrou/normal.gbapal"); const u32 gMonBackPic_FurfrouNatural[] = INCBIN_U32("graphics/pokemon/furfrou/back.4bpp.lz"); - const u32 gMonShinyPalette_FurfrouNatural[] = INCBIN_U32("graphics/pokemon/furfrou/shiny.gbapal.lz"); + const u16 gMonShinyPalette_FurfrouNatural[] = INCBIN_U16("graphics/pokemon/furfrou/shiny.gbapal"); const u8 gMonIcon_FurfrouNatural[] = INCBIN_U8("graphics/pokemon/furfrou/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Furfrou[] = INCBIN_U8("graphics/pokemon/furfrou/footprint.1bpp"); #endif //P_FOOTPRINTS const u32 gMonFrontPic_FurfrouHeart[] = INCBIN_U32("graphics/pokemon/furfrou/heart/anim_front.4bpp.lz"); - const u32 gMonPalette_FurfrouHeart[] = INCBIN_U32("graphics/pokemon/furfrou/heart/normal.gbapal.lz"); + const u16 gMonPalette_FurfrouHeart[] = INCBIN_U16("graphics/pokemon/furfrou/heart/normal.gbapal"); const u32 gMonBackPic_FurfrouHeart[] = INCBIN_U32("graphics/pokemon/furfrou/heart/back.4bpp.lz"); - const u32 gMonShinyPalette_FurfrouHeart[] = INCBIN_U32("graphics/pokemon/furfrou/heart/shiny.gbapal.lz"); + const u16 gMonShinyPalette_FurfrouHeart[] = INCBIN_U16("graphics/pokemon/furfrou/heart/shiny.gbapal"); const u8 gMonIcon_FurfrouHeart[] = INCBIN_U8("graphics/pokemon/furfrou/heart/icon.4bpp"); const u32 gMonFrontPic_FurfrouStar[] = INCBIN_U32("graphics/pokemon/furfrou/star/anim_front.4bpp.lz"); - const u32 gMonPalette_FurfrouStar[] = INCBIN_U32("graphics/pokemon/furfrou/star/normal.gbapal.lz"); + const u16 gMonPalette_FurfrouStar[] = INCBIN_U16("graphics/pokemon/furfrou/star/normal.gbapal"); const u32 gMonBackPic_FurfrouStar[] = INCBIN_U32("graphics/pokemon/furfrou/star/back.4bpp.lz"); - const u32 gMonShinyPalette_FurfrouStar[] = INCBIN_U32("graphics/pokemon/furfrou/star/shiny.gbapal.lz"); + const u16 gMonShinyPalette_FurfrouStar[] = INCBIN_U16("graphics/pokemon/furfrou/star/shiny.gbapal"); const u8 gMonIcon_FurfrouStar[] = INCBIN_U8("graphics/pokemon/furfrou/star/icon.4bpp"); const u32 gMonFrontPic_FurfrouDiamond[] = INCBIN_U32("graphics/pokemon/furfrou/diamond/anim_front.4bpp.lz"); - const u32 gMonPalette_FurfrouDiamond[] = INCBIN_U32("graphics/pokemon/furfrou/diamond/normal.gbapal.lz"); + const u16 gMonPalette_FurfrouDiamond[] = INCBIN_U16("graphics/pokemon/furfrou/diamond/normal.gbapal"); const u32 gMonBackPic_FurfrouDiamond[] = INCBIN_U32("graphics/pokemon/furfrou/diamond/back.4bpp.lz"); - const u32 gMonShinyPalette_FurfrouDiamond[] = INCBIN_U32("graphics/pokemon/furfrou/diamond/shiny.gbapal.lz"); + const u16 gMonShinyPalette_FurfrouDiamond[] = INCBIN_U16("graphics/pokemon/furfrou/diamond/shiny.gbapal"); const u8 gMonIcon_FurfrouDiamond[] = INCBIN_U8("graphics/pokemon/furfrou/diamond/icon.4bpp"); const u32 gMonFrontPic_FurfrouDebutante[] = INCBIN_U32("graphics/pokemon/furfrou/debutante/anim_front.4bpp.lz"); - const u32 gMonPalette_FurfrouDebutante[] = INCBIN_U32("graphics/pokemon/furfrou/debutante/normal.gbapal.lz"); + const u16 gMonPalette_FurfrouDebutante[] = INCBIN_U16("graphics/pokemon/furfrou/debutante/normal.gbapal"); const u32 gMonBackPic_FurfrouDebutante[] = INCBIN_U32("graphics/pokemon/furfrou/debutante/back.4bpp.lz"); - const u32 gMonShinyPalette_FurfrouDebutante[] = INCBIN_U32("graphics/pokemon/furfrou/debutante/shiny.gbapal.lz"); + const u16 gMonShinyPalette_FurfrouDebutante[] = INCBIN_U16("graphics/pokemon/furfrou/debutante/shiny.gbapal"); const u8 gMonIcon_FurfrouDebutante[] = INCBIN_U8("graphics/pokemon/furfrou/debutante/icon.4bpp"); const u32 gMonFrontPic_FurfrouMatron[] = INCBIN_U32("graphics/pokemon/furfrou/matron/anim_front.4bpp.lz"); - const u32 gMonPalette_FurfrouMatron[] = INCBIN_U32("graphics/pokemon/furfrou/matron/normal.gbapal.lz"); + const u16 gMonPalette_FurfrouMatron[] = INCBIN_U16("graphics/pokemon/furfrou/matron/normal.gbapal"); const u32 gMonBackPic_FurfrouMatron[] = INCBIN_U32("graphics/pokemon/furfrou/matron/back.4bpp.lz"); - const u32 gMonShinyPalette_FurfrouMatron[] = INCBIN_U32("graphics/pokemon/furfrou/matron/shiny.gbapal.lz"); + const u16 gMonShinyPalette_FurfrouMatron[] = INCBIN_U16("graphics/pokemon/furfrou/matron/shiny.gbapal"); const u8 gMonIcon_FurfrouMatron[] = INCBIN_U8("graphics/pokemon/furfrou/matron/icon.4bpp"); const u32 gMonFrontPic_FurfrouDandy[] = INCBIN_U32("graphics/pokemon/furfrou/dandy/anim_front.4bpp.lz"); - const u32 gMonPalette_FurfrouDandy[] = INCBIN_U32("graphics/pokemon/furfrou/dandy/normal.gbapal.lz"); + const u16 gMonPalette_FurfrouDandy[] = INCBIN_U16("graphics/pokemon/furfrou/dandy/normal.gbapal"); const u32 gMonBackPic_FurfrouDandy[] = INCBIN_U32("graphics/pokemon/furfrou/dandy/back.4bpp.lz"); - const u32 gMonShinyPalette_FurfrouDandy[] = INCBIN_U32("graphics/pokemon/furfrou/dandy/shiny.gbapal.lz"); + const u16 gMonShinyPalette_FurfrouDandy[] = INCBIN_U16("graphics/pokemon/furfrou/dandy/shiny.gbapal"); const u8 gMonIcon_FurfrouDandy[] = INCBIN_U8("graphics/pokemon/furfrou/dandy/icon.4bpp"); const u32 gMonFrontPic_FurfrouLaReine[] = INCBIN_U32("graphics/pokemon/furfrou/la_reine/anim_front.4bpp.lz"); - const u32 gMonPalette_FurfrouLaReine[] = INCBIN_U32("graphics/pokemon/furfrou/la_reine/normal.gbapal.lz"); + const u16 gMonPalette_FurfrouLaReine[] = INCBIN_U16("graphics/pokemon/furfrou/la_reine/normal.gbapal"); const u32 gMonBackPic_FurfrouLaReine[] = INCBIN_U32("graphics/pokemon/furfrou/la_reine/back.4bpp.lz"); - const u32 gMonShinyPalette_FurfrouLaReine[] = INCBIN_U32("graphics/pokemon/furfrou/la_reine/shiny.gbapal.lz"); + const u16 gMonShinyPalette_FurfrouLaReine[] = INCBIN_U16("graphics/pokemon/furfrou/la_reine/shiny.gbapal"); const u8 gMonIcon_FurfrouLaReine[] = INCBIN_U8("graphics/pokemon/furfrou/la_reine/icon.4bpp"); const u32 gMonFrontPic_FurfrouKabuki[] = INCBIN_U32("graphics/pokemon/furfrou/kabuki/anim_front.4bpp.lz"); - const u32 gMonPalette_FurfrouKabuki[] = INCBIN_U32("graphics/pokemon/furfrou/kabuki/normal.gbapal.lz"); + const u16 gMonPalette_FurfrouKabuki[] = INCBIN_U16("graphics/pokemon/furfrou/kabuki/normal.gbapal"); const u32 gMonBackPic_FurfrouKabuki[] = INCBIN_U32("graphics/pokemon/furfrou/kabuki/back.4bpp.lz"); - const u32 gMonShinyPalette_FurfrouKabuki[] = INCBIN_U32("graphics/pokemon/furfrou/kabuki/shiny.gbapal.lz"); + const u16 gMonShinyPalette_FurfrouKabuki[] = INCBIN_U16("graphics/pokemon/furfrou/kabuki/shiny.gbapal"); const u8 gMonIcon_FurfrouKabuki[] = INCBIN_U8("graphics/pokemon/furfrou/kabuki/icon.4bpp"); const u32 gMonFrontPic_FurfrouPharaoh[] = INCBIN_U32("graphics/pokemon/furfrou/pharaoh/anim_front.4bpp.lz"); - const u32 gMonPalette_FurfrouPharaoh[] = INCBIN_U32("graphics/pokemon/furfrou/pharaoh/normal.gbapal.lz"); + const u16 gMonPalette_FurfrouPharaoh[] = INCBIN_U16("graphics/pokemon/furfrou/pharaoh/normal.gbapal"); const u32 gMonBackPic_FurfrouPharaoh[] = INCBIN_U32("graphics/pokemon/furfrou/pharaoh/back.4bpp.lz"); - const u32 gMonShinyPalette_FurfrouPharaoh[] = INCBIN_U32("graphics/pokemon/furfrou/pharaoh/shiny.gbapal.lz"); + const u16 gMonShinyPalette_FurfrouPharaoh[] = INCBIN_U16("graphics/pokemon/furfrou/pharaoh/shiny.gbapal"); const u8 gMonIcon_FurfrouPharaoh[] = INCBIN_U8("graphics/pokemon/furfrou/pharaoh/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS @@ -19853,35 +19853,35 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gObjectEventPic_FurfrouKabuki[] = INCBIN_COMP("graphics/pokemon/furfrou/kabuki/overworld.4bpp"); const u32 gObjectEventPic_FurfrouPharaoh[] = INCBIN_COMP("graphics/pokemon/furfrou/pharaoh/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_FurfrouHeart[] = INCBIN_U32("graphics/pokemon/furfrou/heart/overworld_normal.gbapal.lz"); - const u32 gOverworldPalette_FurfrouStar[] = INCBIN_U32("graphics/pokemon/furfrou/star/overworld_normal.gbapal.lz"); - const u32 gOverworldPalette_FurfrouDiamond[] = INCBIN_U32("graphics/pokemon/furfrou/diamond/overworld_normal.gbapal.lz"); - const u32 gOverworldPalette_FurfrouDebutante[] = INCBIN_U32("graphics/pokemon/furfrou/debutante/overworld_normal.gbapal.lz"); - const u32 gOverworldPalette_FurfrouMatron[] = INCBIN_U32("graphics/pokemon/furfrou/matron/overworld_normal.gbapal.lz"); - const u32 gOverworldPalette_FurfrouDandy[] = INCBIN_U32("graphics/pokemon/furfrou/dandy/overworld_normal.gbapal.lz"); - const u32 gOverworldPalette_FurfrouLaReine[] = INCBIN_U32("graphics/pokemon/furfrou/la_reine/overworld_normal.gbapal.lz"); - const u32 gOverworldPalette_FurfrouKabuki[] = INCBIN_U32("graphics/pokemon/furfrou/kabuki/overworld_normal.gbapal.lz"); - const u32 gOverworldPalette_FurfrouPharaoh[] = INCBIN_U32("graphics/pokemon/furfrou/pharaoh/overworld_normal.gbapal.lz"); - const u32 gShinyOverworldPalette_FurfrouNatural[] = INCBIN_U32("graphics/pokemon/furfrou/overworld_shiny.gbapal.lz"); - const u32 gShinyOverworldPalette_FurfrouHeart[] = INCBIN_U32("graphics/pokemon/furfrou/heart/overworld_shiny.gbapal.lz"); - const u32 gShinyOverworldPalette_FurfrouStar[] = INCBIN_U32("graphics/pokemon/furfrou/star/overworld_shiny.gbapal.lz"); - const u32 gShinyOverworldPalette_FurfrouDiamond[] = INCBIN_U32("graphics/pokemon/furfrou/diamond/overworld_shiny.gbapal.lz"); - const u32 gShinyOverworldPalette_FurfrouDebutante[] = INCBIN_U32("graphics/pokemon/furfrou/debutante/overworld_shiny.gbapal.lz"); - const u32 gShinyOverworldPalette_FurfrouMatron[] = INCBIN_U32("graphics/pokemon/furfrou/matron/overworld_shiny.gbapal.lz"); - const u32 gShinyOverworldPalette_FurfrouDandy[] = INCBIN_U32("graphics/pokemon/furfrou/dandy/overworld_shiny.gbapal.lz"); - const u32 gShinyOverworldPalette_FurfrouLaReine[] = INCBIN_U32("graphics/pokemon/furfrou/la_reine/overworld_shiny.gbapal.lz"); - const u32 gShinyOverworldPalette_FurfrouKabuki[] = INCBIN_U32("graphics/pokemon/furfrou/kabuki/overworld_shiny.gbapal.lz"); - const u32 gShinyOverworldPalette_FurfrouPharaoh[] = INCBIN_U32("graphics/pokemon/furfrou/pharaoh/overworld_shiny.gbapal.lz"); + const u16 gOverworldPalette_FurfrouNatural[] = INCBIN_U16("graphics/pokemon/furfrou/overworld_normal.gbapal"); + const u16 gOverworldPalette_FurfrouHeart[] = INCBIN_U16("graphics/pokemon/furfrou/heart/overworld_normal.gbapal"); + const u16 gOverworldPalette_FurfrouStar[] = INCBIN_U16("graphics/pokemon/furfrou/star/overworld_normal.gbapal"); + const u16 gOverworldPalette_FurfrouDiamond[] = INCBIN_U16("graphics/pokemon/furfrou/diamond/overworld_normal.gbapal"); + const u16 gOverworldPalette_FurfrouDebutante[] = INCBIN_U16("graphics/pokemon/furfrou/debutante/overworld_normal.gbapal"); + const u16 gOverworldPalette_FurfrouMatron[] = INCBIN_U16("graphics/pokemon/furfrou/matron/overworld_normal.gbapal"); + const u16 gOverworldPalette_FurfrouDandy[] = INCBIN_U16("graphics/pokemon/furfrou/dandy/overworld_normal.gbapal"); + const u16 gOverworldPalette_FurfrouLaReine[] = INCBIN_U16("graphics/pokemon/furfrou/la_reine/overworld_normal.gbapal"); + const u16 gOverworldPalette_FurfrouKabuki[] = INCBIN_U16("graphics/pokemon/furfrou/kabuki/overworld_normal.gbapal"); + const u16 gOverworldPalette_FurfrouPharaoh[] = INCBIN_U16("graphics/pokemon/furfrou/pharaoh/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_FurfrouNatural[] = INCBIN_U16("graphics/pokemon/furfrou/overworld_shiny.gbapal"); + const u16 gShinyOverworldPalette_FurfrouHeart[] = INCBIN_U16("graphics/pokemon/furfrou/heart/overworld_shiny.gbapal"); + const u16 gShinyOverworldPalette_FurfrouStar[] = INCBIN_U16("graphics/pokemon/furfrou/star/overworld_shiny.gbapal"); + const u16 gShinyOverworldPalette_FurfrouDiamond[] = INCBIN_U16("graphics/pokemon/furfrou/diamond/overworld_shiny.gbapal"); + const u16 gShinyOverworldPalette_FurfrouDebutante[] = INCBIN_U16("graphics/pokemon/furfrou/debutante/overworld_shiny.gbapal"); + const u16 gShinyOverworldPalette_FurfrouMatron[] = INCBIN_U16("graphics/pokemon/furfrou/matron/overworld_shiny.gbapal"); + const u16 gShinyOverworldPalette_FurfrouDandy[] = INCBIN_U16("graphics/pokemon/furfrou/dandy/overworld_shiny.gbapal"); + const u16 gShinyOverworldPalette_FurfrouLaReine[] = INCBIN_U16("graphics/pokemon/furfrou/la_reine/overworld_shiny.gbapal"); + const u16 gShinyOverworldPalette_FurfrouKabuki[] = INCBIN_U16("graphics/pokemon/furfrou/kabuki/overworld_shiny.gbapal"); + const u16 gShinyOverworldPalette_FurfrouPharaoh[] = INCBIN_U16("graphics/pokemon/furfrou/pharaoh/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_FURFROU #if P_FAMILY_ESPURR const u32 gMonFrontPic_Espurr[] = INCBIN_U32("graphics/pokemon/espurr/anim_front.4bpp.lz"); - const u32 gMonPalette_Espurr[] = INCBIN_U32("graphics/pokemon/espurr/normal.gbapal.lz"); + const u16 gMonPalette_Espurr[] = INCBIN_U16("graphics/pokemon/espurr/normal.gbapal"); const u32 gMonBackPic_Espurr[] = INCBIN_U32("graphics/pokemon/espurr/back.4bpp.lz"); - const u32 gMonShinyPalette_Espurr[] = INCBIN_U32("graphics/pokemon/espurr/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Espurr[] = INCBIN_U16("graphics/pokemon/espurr/shiny.gbapal"); const u8 gMonIcon_Espurr[] = INCBIN_U8("graphics/pokemon/espurr/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Espurr[] = INCBIN_U8("graphics/pokemon/espurr/footprint.1bpp"); @@ -19889,15 +19889,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Espurr[] = INCBIN_U16("graphics/pokemon/espurr/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Espurr[] = INCBIN_U16("graphics/pokemon/espurr/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_MeowsticM[] = INCBIN_U32("graphics/pokemon/meowstic/anim_front.4bpp.lz"); - const u32 gMonPalette_MeowsticM[] = INCBIN_U32("graphics/pokemon/meowstic/normal.gbapal.lz"); + const u16 gMonPalette_MeowsticM[] = INCBIN_U16("graphics/pokemon/meowstic/normal.gbapal"); const u32 gMonBackPic_MeowsticM[] = INCBIN_U32("graphics/pokemon/meowstic/back.4bpp.lz"); - const u32 gMonShinyPalette_MeowsticM[] = INCBIN_U32("graphics/pokemon/meowstic/shiny.gbapal.lz"); + const u16 gMonShinyPalette_MeowsticM[] = INCBIN_U16("graphics/pokemon/meowstic/shiny.gbapal"); const u8 gMonIcon_MeowsticM[] = INCBIN_U8("graphics/pokemon/meowstic/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Meowstic[] = INCBIN_U8("graphics/pokemon/meowstic/footprint.1bpp"); @@ -19905,30 +19905,30 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if OW_POKEMON_OBJECT_EVENTS const u32 gObjectEventPic_MeowsticM[] = INCBIN_COMP("graphics/pokemon/meowstic/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - const u32 gOverworldPalette_MeowsticM[] = INCBIN_U32("graphics/pokemon/meowstic/overworld_normal.gbapal.lz"); - const u32 gShinyOverworldPalette_MeowsticM[] = INCBIN_U32("graphics/pokemon/meowstic/overworld_shiny.gbapal.lz"); + const u16 gOverworldPalette_MeowsticM[] = INCBIN_U16("graphics/pokemon/meowstic/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_MeowsticM[] = INCBIN_U16("graphics/pokemon/meowstic/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_MeowsticF[] = INCBIN_U32("graphics/pokemon/meowstic/f/anim_front.4bpp.lz"); - const u32 gMonPalette_MeowsticF[] = INCBIN_U32("graphics/pokemon/meowstic/f/normal.gbapal.lz"); + const u16 gMonPalette_MeowsticF[] = INCBIN_U16("graphics/pokemon/meowstic/f/normal.gbapal"); const u32 gMonBackPic_MeowsticF[] = INCBIN_U32("graphics/pokemon/meowstic/f/back.4bpp.lz"); - const u32 gMonShinyPalette_MeowsticF[] = INCBIN_U32("graphics/pokemon/meowstic/f/shiny.gbapal.lz"); + const u16 gMonShinyPalette_MeowsticF[] = INCBIN_U16("graphics/pokemon/meowstic/f/shiny.gbapal"); const u8 gMonIcon_MeowsticF[] = INCBIN_U8("graphics/pokemon/meowstic/f/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS const u32 gObjectEventPic_MeowsticF[] = INCBIN_COMP("graphics/pokemon/meowstic/f/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - const u32 gOverworldPalette_MeowsticF[] = INCBIN_U32("graphics/pokemon/meowstic/f/overworld_normal.gbapal.lz"); - const u32 gShinyOverworldPalette_MeowsticF[] = INCBIN_U32("graphics/pokemon/meowstic/f/overworld_shiny.gbapal.lz"); + const u16 gOverworldPalette_MeowsticF[] = INCBIN_U16("graphics/pokemon/meowstic/f/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_MeowsticF[] = INCBIN_U16("graphics/pokemon/meowstic/f/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_ESPURR #if P_FAMILY_HONEDGE const u32 gMonFrontPic_Honedge[] = INCBIN_U32("graphics/pokemon/honedge/anim_front.4bpp.lz"); - const u32 gMonPalette_Honedge[] = INCBIN_U32("graphics/pokemon/honedge/normal.gbapal.lz"); + const u16 gMonPalette_Honedge[] = INCBIN_U16("graphics/pokemon/honedge/normal.gbapal"); const u32 gMonBackPic_Honedge[] = INCBIN_U32("graphics/pokemon/honedge/back.4bpp.lz"); - const u32 gMonShinyPalette_Honedge[] = INCBIN_U32("graphics/pokemon/honedge/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Honedge[] = INCBIN_U16("graphics/pokemon/honedge/shiny.gbapal"); const u8 gMonIcon_Honedge[] = INCBIN_U8("graphics/pokemon/honedge/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Honedge[] = INCBIN_U8("graphics/pokemon/honedge/footprint.1bpp"); @@ -19936,15 +19936,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Honedge[] = INCBIN_U16("graphics/pokemon/honedge/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Honedge[] = INCBIN_U16("graphics/pokemon/honedge/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Doublade[] = INCBIN_U16("graphics/pokemon/doublade/normal.gbapal"); const u32 gMonBackPic_Doublade[] = INCBIN_U32("graphics/pokemon/doublade/back.4bpp.lz"); - const u32 gMonShinyPalette_Doublade[] = INCBIN_U32("graphics/pokemon/doublade/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Doublade[] = INCBIN_U16("graphics/pokemon/doublade/shiny.gbapal"); const u8 gMonIcon_Doublade[] = INCBIN_U8("graphics/pokemon/doublade/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Doublade[] = INCBIN_U8("graphics/pokemon/doublade/footprint.1bpp"); @@ -19952,15 +19952,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Doublade[] = INCBIN_U16("graphics/pokemon/doublade/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Doublade[] = INCBIN_U16("graphics/pokemon/doublade/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_AegislashShield[] = INCBIN_U16("graphics/pokemon/aegislash/normal.gbapal"); const u32 gMonBackPic_AegislashShield[] = INCBIN_U32("graphics/pokemon/aegislash/back.4bpp.lz"); - const u32 gMonShinyPalette_AegislashShield[] = INCBIN_U32("graphics/pokemon/aegislash/shiny.gbapal.lz"); + const u16 gMonShinyPalette_AegislashShield[] = INCBIN_U16("graphics/pokemon/aegislash/shiny.gbapal"); const u8 gMonIcon_AegislashShield[] = INCBIN_U8("graphics/pokemon/aegislash/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Aegislash[] = INCBIN_U8("graphics/pokemon/aegislash/footprint.1bpp"); @@ -19968,30 +19968,30 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_AegislashShield[] = INCBIN_U16("graphics/pokemon/aegislash/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_AegislashShield[] = INCBIN_U16("graphics/pokemon/aegislash/overworld_shiny.gbapal"); #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 u16 gMonPalette_AegislashBlade[] = INCBIN_U16("graphics/pokemon/aegislash/blade/normal.gbapal"); 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 u16 gMonShinyPalette_AegislashBlade[] = INCBIN_U16("graphics/pokemon/aegislash/blade/shiny.gbapal"); 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"); + // const u16 gOverworldPalette_AegislashBlade[] = INCBIN_U16("graphics/pokemon/aegislash/blade/overworld_normal.gbapal"); + // const u16 gShinyOverworldPalette_AegislashBlade[] = INCBIN_U16("graphics/pokemon/aegislash/blade/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_HONEDGE #if P_FAMILY_SPRITZEE const u32 gMonFrontPic_Spritzee[] = INCBIN_U32("graphics/pokemon/spritzee/anim_front.4bpp.lz"); - const u32 gMonPalette_Spritzee[] = INCBIN_U32("graphics/pokemon/spritzee/normal.gbapal.lz"); + const u16 gMonPalette_Spritzee[] = INCBIN_U16("graphics/pokemon/spritzee/normal.gbapal"); const u32 gMonBackPic_Spritzee[] = INCBIN_U32("graphics/pokemon/spritzee/back.4bpp.lz"); - const u32 gMonShinyPalette_Spritzee[] = INCBIN_U32("graphics/pokemon/spritzee/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Spritzee[] = INCBIN_U16("graphics/pokemon/spritzee/shiny.gbapal"); const u8 gMonIcon_Spritzee[] = INCBIN_U8("graphics/pokemon/spritzee/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Spritzee[] = INCBIN_U8("graphics/pokemon/spritzee/footprint.1bpp"); @@ -19999,15 +19999,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Spritzee[] = INCBIN_U16("graphics/pokemon/spritzee/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Spritzee[] = INCBIN_U16("graphics/pokemon/spritzee/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Aromatisse[] = INCBIN_U16("graphics/pokemon/aromatisse/normal.gbapal"); const u32 gMonBackPic_Aromatisse[] = INCBIN_U32("graphics/pokemon/aromatisse/back.4bpp.lz"); - const u32 gMonShinyPalette_Aromatisse[] = INCBIN_U32("graphics/pokemon/aromatisse/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Aromatisse[] = INCBIN_U16("graphics/pokemon/aromatisse/shiny.gbapal"); const u8 gMonIcon_Aromatisse[] = INCBIN_U8("graphics/pokemon/aromatisse/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Aromatisse[] = INCBIN_U8("graphics/pokemon/aromatisse/footprint.1bpp"); @@ -20015,17 +20015,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Aromatisse[] = INCBIN_U16("graphics/pokemon/aromatisse/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Aromatisse[] = INCBIN_U16("graphics/pokemon/aromatisse/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SPRITZEE #if P_FAMILY_SWIRLIX const u32 gMonFrontPic_Swirlix[] = INCBIN_U32("graphics/pokemon/swirlix/anim_front.4bpp.lz"); - const u32 gMonPalette_Swirlix[] = INCBIN_U32("graphics/pokemon/swirlix/normal.gbapal.lz"); + const u16 gMonPalette_Swirlix[] = INCBIN_U16("graphics/pokemon/swirlix/normal.gbapal"); const u32 gMonBackPic_Swirlix[] = INCBIN_U32("graphics/pokemon/swirlix/back.4bpp.lz"); - const u32 gMonShinyPalette_Swirlix[] = INCBIN_U32("graphics/pokemon/swirlix/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Swirlix[] = INCBIN_U16("graphics/pokemon/swirlix/shiny.gbapal"); const u8 gMonIcon_Swirlix[] = INCBIN_U8("graphics/pokemon/swirlix/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Swirlix[] = INCBIN_U8("graphics/pokemon/swirlix/footprint.1bpp"); @@ -20033,15 +20033,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Swirlix[] = INCBIN_U16("graphics/pokemon/swirlix/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Swirlix[] = INCBIN_U16("graphics/pokemon/swirlix/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Slurpuff[] = INCBIN_U16("graphics/pokemon/slurpuff/normal.gbapal"); const u32 gMonBackPic_Slurpuff[] = INCBIN_U32("graphics/pokemon/slurpuff/back.4bpp.lz"); - const u32 gMonShinyPalette_Slurpuff[] = INCBIN_U32("graphics/pokemon/slurpuff/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Slurpuff[] = INCBIN_U16("graphics/pokemon/slurpuff/shiny.gbapal"); const u8 gMonIcon_Slurpuff[] = INCBIN_U8("graphics/pokemon/slurpuff/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Slurpuff[] = INCBIN_U8("graphics/pokemon/slurpuff/footprint.1bpp"); @@ -20049,17 +20049,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Slurpuff[] = INCBIN_U16("graphics/pokemon/slurpuff/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Slurpuff[] = INCBIN_U16("graphics/pokemon/slurpuff/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SWIRLIX #if P_FAMILY_INKAY const u32 gMonFrontPic_Inkay[] = INCBIN_U32("graphics/pokemon/inkay/anim_front.4bpp.lz"); - const u32 gMonPalette_Inkay[] = INCBIN_U32("graphics/pokemon/inkay/normal.gbapal.lz"); + const u16 gMonPalette_Inkay[] = INCBIN_U16("graphics/pokemon/inkay/normal.gbapal"); const u32 gMonBackPic_Inkay[] = INCBIN_U32("graphics/pokemon/inkay/back.4bpp.lz"); - const u32 gMonShinyPalette_Inkay[] = INCBIN_U32("graphics/pokemon/inkay/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Inkay[] = INCBIN_U16("graphics/pokemon/inkay/shiny.gbapal"); const u8 gMonIcon_Inkay[] = INCBIN_U8("graphics/pokemon/inkay/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Inkay[] = INCBIN_U8("graphics/pokemon/inkay/footprint.1bpp"); @@ -20067,15 +20067,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Inkay[] = INCBIN_U16("graphics/pokemon/inkay/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Inkay[] = INCBIN_U16("graphics/pokemon/inkay/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Malamar[] = INCBIN_U16("graphics/pokemon/malamar/normal.gbapal"); const u32 gMonBackPic_Malamar[] = INCBIN_U32("graphics/pokemon/malamar/back.4bpp.lz"); - const u32 gMonShinyPalette_Malamar[] = INCBIN_U32("graphics/pokemon/malamar/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Malamar[] = INCBIN_U16("graphics/pokemon/malamar/shiny.gbapal"); const u8 gMonIcon_Malamar[] = INCBIN_U8("graphics/pokemon/malamar/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Malamar[] = INCBIN_U8("graphics/pokemon/malamar/footprint.1bpp"); @@ -20083,17 +20083,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Malamar[] = INCBIN_U16("graphics/pokemon/malamar/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Malamar[] = INCBIN_U16("graphics/pokemon/malamar/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_INKAY #if P_FAMILY_BINACLE const u32 gMonFrontPic_Binacle[] = INCBIN_U32("graphics/pokemon/binacle/anim_front.4bpp.lz"); - const u32 gMonPalette_Binacle[] = INCBIN_U32("graphics/pokemon/binacle/normal.gbapal.lz"); + const u16 gMonPalette_Binacle[] = INCBIN_U16("graphics/pokemon/binacle/normal.gbapal"); const u32 gMonBackPic_Binacle[] = INCBIN_U32("graphics/pokemon/binacle/back.4bpp.lz"); - const u32 gMonShinyPalette_Binacle[] = INCBIN_U32("graphics/pokemon/binacle/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Binacle[] = INCBIN_U16("graphics/pokemon/binacle/shiny.gbapal"); const u8 gMonIcon_Binacle[] = INCBIN_U8("graphics/pokemon/binacle/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Binacle[] = INCBIN_U8("graphics/pokemon/binacle/footprint.1bpp"); @@ -20101,15 +20101,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Binacle[] = INCBIN_U16("graphics/pokemon/binacle/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Binacle[] = INCBIN_U16("graphics/pokemon/binacle/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Barbaracle[] = INCBIN_U16("graphics/pokemon/barbaracle/normal.gbapal"); const u32 gMonBackPic_Barbaracle[] = INCBIN_U32("graphics/pokemon/barbaracle/back.4bpp.lz"); - const u32 gMonShinyPalette_Barbaracle[] = INCBIN_U32("graphics/pokemon/barbaracle/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Barbaracle[] = INCBIN_U16("graphics/pokemon/barbaracle/shiny.gbapal"); const u8 gMonIcon_Barbaracle[] = INCBIN_U8("graphics/pokemon/barbaracle/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Barbaracle[] = INCBIN_U8("graphics/pokemon/barbaracle/footprint.1bpp"); @@ -20117,17 +20117,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Barbaracle[] = INCBIN_U16("graphics/pokemon/barbaracle/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Barbaracle[] = INCBIN_U16("graphics/pokemon/barbaracle/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_BINACLE #if P_FAMILY_SKRELP const u32 gMonFrontPic_Skrelp[] = INCBIN_U32("graphics/pokemon/skrelp/anim_front.4bpp.lz"); - const u32 gMonPalette_Skrelp[] = INCBIN_U32("graphics/pokemon/skrelp/normal.gbapal.lz"); + const u16 gMonPalette_Skrelp[] = INCBIN_U16("graphics/pokemon/skrelp/normal.gbapal"); const u32 gMonBackPic_Skrelp[] = INCBIN_U32("graphics/pokemon/skrelp/back.4bpp.lz"); - const u32 gMonShinyPalette_Skrelp[] = INCBIN_U32("graphics/pokemon/skrelp/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Skrelp[] = INCBIN_U16("graphics/pokemon/skrelp/shiny.gbapal"); const u8 gMonIcon_Skrelp[] = INCBIN_U8("graphics/pokemon/skrelp/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Skrelp[] = INCBIN_U8("graphics/pokemon/skrelp/footprint.1bpp"); @@ -20135,15 +20135,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Skrelp[] = INCBIN_U16("graphics/pokemon/skrelp/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Skrelp[] = INCBIN_U16("graphics/pokemon/skrelp/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Dragalge[] = INCBIN_U16("graphics/pokemon/dragalge/normal.gbapal"); const u32 gMonBackPic_Dragalge[] = INCBIN_U32("graphics/pokemon/dragalge/back.4bpp.lz"); - const u32 gMonShinyPalette_Dragalge[] = INCBIN_U32("graphics/pokemon/dragalge/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Dragalge[] = INCBIN_U16("graphics/pokemon/dragalge/shiny.gbapal"); const u8 gMonIcon_Dragalge[] = INCBIN_U8("graphics/pokemon/dragalge/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Dragalge[] = INCBIN_U8("graphics/pokemon/dragalge/footprint.1bpp"); @@ -20151,17 +20151,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Dragalge[] = INCBIN_U16("graphics/pokemon/dragalge/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Dragalge[] = INCBIN_U16("graphics/pokemon/dragalge/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SKRELP #if P_FAMILY_CLAUNCHER const u32 gMonFrontPic_Clauncher[] = INCBIN_U32("graphics/pokemon/clauncher/anim_front.4bpp.lz"); - const u32 gMonPalette_Clauncher[] = INCBIN_U32("graphics/pokemon/clauncher/normal.gbapal.lz"); + const u16 gMonPalette_Clauncher[] = INCBIN_U16("graphics/pokemon/clauncher/normal.gbapal"); const u32 gMonBackPic_Clauncher[] = INCBIN_U32("graphics/pokemon/clauncher/back.4bpp.lz"); - const u32 gMonShinyPalette_Clauncher[] = INCBIN_U32("graphics/pokemon/clauncher/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Clauncher[] = INCBIN_U16("graphics/pokemon/clauncher/shiny.gbapal"); const u8 gMonIcon_Clauncher[] = INCBIN_U8("graphics/pokemon/clauncher/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Clauncher[] = INCBIN_U8("graphics/pokemon/clauncher/footprint.1bpp"); @@ -20169,15 +20169,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Clauncher[] = INCBIN_U16("graphics/pokemon/clauncher/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Clauncher[] = INCBIN_U16("graphics/pokemon/clauncher/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Clawitzer[] = INCBIN_U16("graphics/pokemon/clawitzer/normal.gbapal"); const u32 gMonBackPic_Clawitzer[] = INCBIN_U32("graphics/pokemon/clawitzer/back.4bpp.lz"); - const u32 gMonShinyPalette_Clawitzer[] = INCBIN_U32("graphics/pokemon/clawitzer/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Clawitzer[] = INCBIN_U16("graphics/pokemon/clawitzer/shiny.gbapal"); const u8 gMonIcon_Clawitzer[] = INCBIN_U8("graphics/pokemon/clawitzer/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Clawitzer[] = INCBIN_U8("graphics/pokemon/clawitzer/footprint.1bpp"); @@ -20185,17 +20185,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Clawitzer[] = INCBIN_U16("graphics/pokemon/clawitzer/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Clawitzer[] = INCBIN_U16("graphics/pokemon/clawitzer/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_CLAUNCHER #if P_FAMILY_HELIOPTILE const u32 gMonFrontPic_Helioptile[] = INCBIN_U32("graphics/pokemon/helioptile/anim_front.4bpp.lz"); - const u32 gMonPalette_Helioptile[] = INCBIN_U32("graphics/pokemon/helioptile/normal.gbapal.lz"); + const u16 gMonPalette_Helioptile[] = INCBIN_U16("graphics/pokemon/helioptile/normal.gbapal"); const u32 gMonBackPic_Helioptile[] = INCBIN_U32("graphics/pokemon/helioptile/back.4bpp.lz"); - const u32 gMonShinyPalette_Helioptile[] = INCBIN_U32("graphics/pokemon/helioptile/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Helioptile[] = INCBIN_U16("graphics/pokemon/helioptile/shiny.gbapal"); const u8 gMonIcon_Helioptile[] = INCBIN_U8("graphics/pokemon/helioptile/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Helioptile[] = INCBIN_U8("graphics/pokemon/helioptile/footprint.1bpp"); @@ -20203,15 +20203,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Helioptile[] = INCBIN_U16("graphics/pokemon/helioptile/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Helioptile[] = INCBIN_U16("graphics/pokemon/helioptile/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Heliolisk[] = INCBIN_U16("graphics/pokemon/heliolisk/normal.gbapal"); const u32 gMonBackPic_Heliolisk[] = INCBIN_U32("graphics/pokemon/heliolisk/back.4bpp.lz"); - const u32 gMonShinyPalette_Heliolisk[] = INCBIN_U32("graphics/pokemon/heliolisk/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Heliolisk[] = INCBIN_U16("graphics/pokemon/heliolisk/shiny.gbapal"); const u8 gMonIcon_Heliolisk[] = INCBIN_U8("graphics/pokemon/heliolisk/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Heliolisk[] = INCBIN_U8("graphics/pokemon/heliolisk/footprint.1bpp"); @@ -20219,17 +20219,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Heliolisk[] = INCBIN_U16("graphics/pokemon/heliolisk/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Heliolisk[] = INCBIN_U16("graphics/pokemon/heliolisk/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_HELIOPTILE #if P_FAMILY_TYRUNT const u32 gMonFrontPic_Tyrunt[] = INCBIN_U32("graphics/pokemon/tyrunt/anim_front.4bpp.lz"); - const u32 gMonPalette_Tyrunt[] = INCBIN_U32("graphics/pokemon/tyrunt/normal.gbapal.lz"); + const u16 gMonPalette_Tyrunt[] = INCBIN_U16("graphics/pokemon/tyrunt/normal.gbapal"); const u32 gMonBackPic_Tyrunt[] = INCBIN_U32("graphics/pokemon/tyrunt/back.4bpp.lz"); - const u32 gMonShinyPalette_Tyrunt[] = INCBIN_U32("graphics/pokemon/tyrunt/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Tyrunt[] = INCBIN_U16("graphics/pokemon/tyrunt/shiny.gbapal"); const u8 gMonIcon_Tyrunt[] = INCBIN_U8("graphics/pokemon/tyrunt/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Tyrunt[] = INCBIN_U8("graphics/pokemon/tyrunt/footprint.1bpp"); @@ -20237,15 +20237,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Tyrunt[] = INCBIN_U16("graphics/pokemon/tyrunt/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Tyrunt[] = INCBIN_U16("graphics/pokemon/tyrunt/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Tyrantrum[] = INCBIN_U16("graphics/pokemon/tyrantrum/normal.gbapal"); const u32 gMonBackPic_Tyrantrum[] = INCBIN_U32("graphics/pokemon/tyrantrum/back.4bpp.lz"); - const u32 gMonShinyPalette_Tyrantrum[] = INCBIN_U32("graphics/pokemon/tyrantrum/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Tyrantrum[] = INCBIN_U16("graphics/pokemon/tyrantrum/shiny.gbapal"); const u8 gMonIcon_Tyrantrum[] = INCBIN_U8("graphics/pokemon/tyrantrum/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Tyrantrum[] = INCBIN_U8("graphics/pokemon/tyrantrum/footprint.1bpp"); @@ -20253,17 +20253,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Tyrantrum[] = INCBIN_U16("graphics/pokemon/tyrantrum/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Tyrantrum[] = INCBIN_U16("graphics/pokemon/tyrantrum/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_TYRUNT #if P_FAMILY_AMAURA const u32 gMonFrontPic_Amaura[] = INCBIN_U32("graphics/pokemon/amaura/anim_front.4bpp.lz"); - const u32 gMonPalette_Amaura[] = INCBIN_U32("graphics/pokemon/amaura/normal.gbapal.lz"); + const u16 gMonPalette_Amaura[] = INCBIN_U16("graphics/pokemon/amaura/normal.gbapal"); const u32 gMonBackPic_Amaura[] = INCBIN_U32("graphics/pokemon/amaura/back.4bpp.lz"); - const u32 gMonShinyPalette_Amaura[] = INCBIN_U32("graphics/pokemon/amaura/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Amaura[] = INCBIN_U16("graphics/pokemon/amaura/shiny.gbapal"); const u8 gMonIcon_Amaura[] = INCBIN_U8("graphics/pokemon/amaura/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Amaura[] = INCBIN_U8("graphics/pokemon/amaura/footprint.1bpp"); @@ -20271,15 +20271,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Amaura[] = INCBIN_U16("graphics/pokemon/amaura/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Amaura[] = INCBIN_U16("graphics/pokemon/amaura/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Aurorus[] = INCBIN_U16("graphics/pokemon/aurorus/normal.gbapal"); const u32 gMonBackPic_Aurorus[] = INCBIN_U32("graphics/pokemon/aurorus/back.4bpp.lz"); - const u32 gMonShinyPalette_Aurorus[] = INCBIN_U32("graphics/pokemon/aurorus/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Aurorus[] = INCBIN_U16("graphics/pokemon/aurorus/shiny.gbapal"); const u8 gMonIcon_Aurorus[] = INCBIN_U8("graphics/pokemon/aurorus/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Aurorus[] = INCBIN_U8("graphics/pokemon/aurorus/footprint.1bpp"); @@ -20287,17 +20287,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Aurorus[] = INCBIN_U16("graphics/pokemon/aurorus/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Aurorus[] = INCBIN_U16("graphics/pokemon/aurorus/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_AMAURA #if P_FAMILY_HAWLUCHA const u32 gMonFrontPic_Hawlucha[] = INCBIN_U32("graphics/pokemon/hawlucha/anim_front.4bpp.lz"); - const u32 gMonPalette_Hawlucha[] = INCBIN_U32("graphics/pokemon/hawlucha/normal.gbapal.lz"); + const u16 gMonPalette_Hawlucha[] = INCBIN_U16("graphics/pokemon/hawlucha/normal.gbapal"); const u32 gMonBackPic_Hawlucha[] = INCBIN_U32("graphics/pokemon/hawlucha/back.4bpp.lz"); - const u32 gMonShinyPalette_Hawlucha[] = INCBIN_U32("graphics/pokemon/hawlucha/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Hawlucha[] = INCBIN_U16("graphics/pokemon/hawlucha/shiny.gbapal"); const u8 gMonIcon_Hawlucha[] = INCBIN_U8("graphics/pokemon/hawlucha/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Hawlucha[] = INCBIN_U8("graphics/pokemon/hawlucha/footprint.1bpp"); @@ -20305,17 +20305,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Hawlucha[] = INCBIN_U16("graphics/pokemon/hawlucha/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Hawlucha[] = INCBIN_U16("graphics/pokemon/hawlucha/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_HAWLUCHA #if P_FAMILY_DEDENNE const u32 gMonFrontPic_Dedenne[] = INCBIN_U32("graphics/pokemon/dedenne/anim_front.4bpp.lz"); - const u32 gMonPalette_Dedenne[] = INCBIN_U32("graphics/pokemon/dedenne/normal.gbapal.lz"); + const u16 gMonPalette_Dedenne[] = INCBIN_U16("graphics/pokemon/dedenne/normal.gbapal"); const u32 gMonBackPic_Dedenne[] = INCBIN_U32("graphics/pokemon/dedenne/back.4bpp.lz"); - const u32 gMonShinyPalette_Dedenne[] = INCBIN_U32("graphics/pokemon/dedenne/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Dedenne[] = INCBIN_U16("graphics/pokemon/dedenne/shiny.gbapal"); const u8 gMonIcon_Dedenne[] = INCBIN_U8("graphics/pokemon/dedenne/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Dedenne[] = INCBIN_U8("graphics/pokemon/dedenne/footprint.1bpp"); @@ -20323,17 +20323,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Dedenne[] = INCBIN_U16("graphics/pokemon/dedenne/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Dedenne[] = INCBIN_U16("graphics/pokemon/dedenne/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_DEDENNE #if P_FAMILY_CARBINK const u32 gMonFrontPic_Carbink[] = INCBIN_U32("graphics/pokemon/carbink/anim_front.4bpp.lz"); - const u32 gMonPalette_Carbink[] = INCBIN_U32("graphics/pokemon/carbink/normal.gbapal.lz"); + const u16 gMonPalette_Carbink[] = INCBIN_U16("graphics/pokemon/carbink/normal.gbapal"); const u32 gMonBackPic_Carbink[] = INCBIN_U32("graphics/pokemon/carbink/back.4bpp.lz"); - const u32 gMonShinyPalette_Carbink[] = INCBIN_U32("graphics/pokemon/carbink/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Carbink[] = INCBIN_U16("graphics/pokemon/carbink/shiny.gbapal"); const u8 gMonIcon_Carbink[] = INCBIN_U8("graphics/pokemon/carbink/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Carbink[] = INCBIN_U8("graphics/pokemon/carbink/footprint.1bpp"); @@ -20341,17 +20341,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Carbink[] = INCBIN_U16("graphics/pokemon/carbink/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Carbink[] = INCBIN_U16("graphics/pokemon/carbink/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_CARBINK #if P_FAMILY_GOOMY const u32 gMonFrontPic_Goomy[] = INCBIN_U32("graphics/pokemon/goomy/anim_front.4bpp.lz"); - const u32 gMonPalette_Goomy[] = INCBIN_U32("graphics/pokemon/goomy/normal.gbapal.lz"); + const u16 gMonPalette_Goomy[] = INCBIN_U16("graphics/pokemon/goomy/normal.gbapal"); const u32 gMonBackPic_Goomy[] = INCBIN_U32("graphics/pokemon/goomy/back.4bpp.lz"); - const u32 gMonShinyPalette_Goomy[] = INCBIN_U32("graphics/pokemon/goomy/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Goomy[] = INCBIN_U16("graphics/pokemon/goomy/shiny.gbapal"); const u8 gMonIcon_Goomy[] = INCBIN_U8("graphics/pokemon/goomy/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Goomy[] = INCBIN_U8("graphics/pokemon/goomy/footprint.1bpp"); @@ -20359,15 +20359,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Goomy[] = INCBIN_U16("graphics/pokemon/goomy/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Goomy[] = INCBIN_U16("graphics/pokemon/goomy/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Sliggoo[] = INCBIN_U16("graphics/pokemon/sliggoo/normal.gbapal"); const u32 gMonBackPic_Sliggoo[] = INCBIN_U32("graphics/pokemon/sliggoo/back.4bpp.lz"); - const u32 gMonShinyPalette_Sliggoo[] = INCBIN_U32("graphics/pokemon/sliggoo/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Sliggoo[] = INCBIN_U16("graphics/pokemon/sliggoo/shiny.gbapal"); const u8 gMonIcon_Sliggoo[] = INCBIN_U8("graphics/pokemon/sliggoo/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Sliggoo[] = INCBIN_U8("graphics/pokemon/sliggoo/footprint.1bpp"); @@ -20375,30 +20375,30 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Sliggoo[] = INCBIN_U16("graphics/pokemon/sliggoo/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Sliggoo[] = INCBIN_U16("graphics/pokemon/sliggoo/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if P_HISUIAN_FORMS const u32 gMonFrontPic_SliggooHisui[] = INCBIN_U32("graphics/pokemon/sliggoo/hisui/front.4bpp.lz"); - const u32 gMonPalette_SliggooHisui[] = INCBIN_U32("graphics/pokemon/sliggoo/hisui/normal.gbapal.lz"); + const u16 gMonPalette_SliggooHisui[] = INCBIN_U16("graphics/pokemon/sliggoo/hisui/normal.gbapal"); const u32 gMonBackPic_SliggooHisui[] = INCBIN_U32("graphics/pokemon/sliggoo/hisui/back.4bpp.lz"); - const u32 gMonShinyPalette_SliggooHisui[] = INCBIN_U32("graphics/pokemon/sliggoo/hisui/shiny.gbapal.lz"); + const u16 gMonShinyPalette_SliggooHisui[] = INCBIN_U16("graphics/pokemon/sliggoo/hisui/shiny.gbapal"); const u8 gMonIcon_SliggooHisui[] = INCBIN_U8("graphics/pokemon/sliggoo/hisui/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS const u32 gObjectEventPic_SliggooHisui[] = INCBIN_COMP("graphics/pokemon/sliggoo/hisui/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - const u32 gOverworldPalette_SliggooHisui[] = INCBIN_U32("graphics/pokemon/sliggoo/hisui/overworld_normal.gbapal.lz"); - const u32 gShinyOverworldPalette_SliggooHisui[] = INCBIN_U32("graphics/pokemon/sliggoo/hisui/overworld_shiny.gbapal.lz"); + const u16 gOverworldPalette_SliggooHisui[] = INCBIN_U16("graphics/pokemon/sliggoo/hisui/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_SliggooHisui[] = INCBIN_U16("graphics/pokemon/sliggoo/hisui/overworld_shiny.gbapal"); #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"); - const u32 gMonPalette_Goodra[] = INCBIN_U32("graphics/pokemon/goodra/normal.gbapal.lz"); + const u16 gMonPalette_Goodra[] = INCBIN_U16("graphics/pokemon/goodra/normal.gbapal"); const u32 gMonBackPic_Goodra[] = INCBIN_U32("graphics/pokemon/goodra/back.4bpp.lz"); - const u32 gMonShinyPalette_Goodra[] = INCBIN_U32("graphics/pokemon/goodra/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Goodra[] = INCBIN_U16("graphics/pokemon/goodra/shiny.gbapal"); const u8 gMonIcon_Goodra[] = INCBIN_U8("graphics/pokemon/goodra/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Goodra[] = INCBIN_U8("graphics/pokemon/goodra/footprint.1bpp"); @@ -20406,22 +20406,22 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Goodra[] = INCBIN_U16("graphics/pokemon/goodra/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Goodra[] = INCBIN_U16("graphics/pokemon/goodra/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if P_HISUIAN_FORMS const u32 gMonFrontPic_GoodraHisui[] = INCBIN_U32("graphics/pokemon/goodra/hisui/front.4bpp.lz"); - const u32 gMonPalette_GoodraHisui[] = INCBIN_U32("graphics/pokemon/goodra/hisui/normal.gbapal.lz"); + const u16 gMonPalette_GoodraHisui[] = INCBIN_U16("graphics/pokemon/goodra/hisui/normal.gbapal"); const u32 gMonBackPic_GoodraHisui[] = INCBIN_U32("graphics/pokemon/goodra/hisui/back.4bpp.lz"); - const u32 gMonShinyPalette_GoodraHisui[] = INCBIN_U32("graphics/pokemon/goodra/hisui/shiny.gbapal.lz"); + const u16 gMonShinyPalette_GoodraHisui[] = INCBIN_U16("graphics/pokemon/goodra/hisui/shiny.gbapal"); const u8 gMonIcon_GoodraHisui[] = INCBIN_U8("graphics/pokemon/goodra/hisui/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS const u32 gObjectEventPic_GoodraHisui[] = INCBIN_COMP("graphics/pokemon/goodra/hisui/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - const u32 gOverworldPalette_GoodraHisui[] = INCBIN_U32("graphics/pokemon/goodra/hisui/overworld_normal.gbapal.lz"); - const u32 gShinyOverworldPalette_GoodraHisui[] = INCBIN_U32("graphics/pokemon/goodra/hisui/overworld_shiny.gbapal.lz"); + const u16 gOverworldPalette_GoodraHisui[] = INCBIN_U16("graphics/pokemon/goodra/hisui/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_GoodraHisui[] = INCBIN_U16("graphics/pokemon/goodra/hisui/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_HISUIAN_FORMS @@ -20429,9 +20429,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_KLEFKI const u32 gMonFrontPic_Klefki[] = INCBIN_U32("graphics/pokemon/klefki/anim_front.4bpp.lz"); - const u32 gMonPalette_Klefki[] = INCBIN_U32("graphics/pokemon/klefki/normal.gbapal.lz"); + const u16 gMonPalette_Klefki[] = INCBIN_U16("graphics/pokemon/klefki/normal.gbapal"); const u32 gMonBackPic_Klefki[] = INCBIN_U32("graphics/pokemon/klefki/back.4bpp.lz"); - const u32 gMonShinyPalette_Klefki[] = INCBIN_U32("graphics/pokemon/klefki/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Klefki[] = INCBIN_U16("graphics/pokemon/klefki/shiny.gbapal"); const u8 gMonIcon_Klefki[] = INCBIN_U8("graphics/pokemon/klefki/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Klefki[] = INCBIN_U8("graphics/pokemon/klefki/footprint.1bpp"); @@ -20439,17 +20439,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Klefki[] = INCBIN_U16("graphics/pokemon/klefki/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Klefki[] = INCBIN_U16("graphics/pokemon/klefki/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_KLEFKI #if P_FAMILY_PHANTUMP const u32 gMonFrontPic_Phantump[] = INCBIN_U32("graphics/pokemon/phantump/anim_front.4bpp.lz"); - const u32 gMonPalette_Phantump[] = INCBIN_U32("graphics/pokemon/phantump/normal.gbapal.lz"); + const u16 gMonPalette_Phantump[] = INCBIN_U16("graphics/pokemon/phantump/normal.gbapal"); const u32 gMonBackPic_Phantump[] = INCBIN_U32("graphics/pokemon/phantump/back.4bpp.lz"); - const u32 gMonShinyPalette_Phantump[] = INCBIN_U32("graphics/pokemon/phantump/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Phantump[] = INCBIN_U16("graphics/pokemon/phantump/shiny.gbapal"); const u8 gMonIcon_Phantump[] = INCBIN_U8("graphics/pokemon/phantump/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Phantump[] = INCBIN_U8("graphics/pokemon/phantump/footprint.1bpp"); @@ -20457,15 +20457,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Phantump[] = INCBIN_U16("graphics/pokemon/phantump/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Phantump[] = INCBIN_U16("graphics/pokemon/phantump/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Trevenant[] = INCBIN_U16("graphics/pokemon/trevenant/normal.gbapal"); const u32 gMonBackPic_Trevenant[] = INCBIN_U32("graphics/pokemon/trevenant/back.4bpp.lz"); - const u32 gMonShinyPalette_Trevenant[] = INCBIN_U32("graphics/pokemon/trevenant/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Trevenant[] = INCBIN_U16("graphics/pokemon/trevenant/shiny.gbapal"); const u8 gMonIcon_Trevenant[] = INCBIN_U8("graphics/pokemon/trevenant/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Trevenant[] = INCBIN_U8("graphics/pokemon/trevenant/footprint.1bpp"); @@ -20473,15 +20473,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Trevenant[] = INCBIN_U16("graphics/pokemon/trevenant/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Trevenant[] = INCBIN_U16("graphics/pokemon/trevenant/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_PHANTUMP #if P_FAMILY_PUMPKABOO - const u32 gMonPalette_Pumpkaboo[] = INCBIN_U32("graphics/pokemon/pumpkaboo/normal.gbapal.lz"); - const u32 gMonShinyPalette_Pumpkaboo[] = INCBIN_U32("graphics/pokemon/pumpkaboo/shiny.gbapal.lz"); + const u16 gMonPalette_Pumpkaboo[] = INCBIN_U16("graphics/pokemon/pumpkaboo/normal.gbapal"); + const u16 gMonShinyPalette_Pumpkaboo[] = INCBIN_U16("graphics/pokemon/pumpkaboo/shiny.gbapal"); const u8 gMonIcon_Pumpkaboo[] = INCBIN_U8("graphics/pokemon/pumpkaboo/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Pumpkaboo[] = INCBIN_U8("graphics/pokemon/pumpkaboo/footprint.1bpp"); @@ -20500,8 +20500,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ 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"); + const u16 gOverworldPalette_Pumpkaboo[] = INCBIN_U16("graphics/pokemon/pumpkaboo/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Pumpkaboo[] = INCBIN_U16("graphics/pokemon/pumpkaboo/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #if OW_POKEMON_OBJECT_EVENTS @@ -20511,8 +20511,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ 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 u16 gMonPalette_Gourgeist[] = INCBIN_U16("graphics/pokemon/gourgeist/normal.gbapal"); + const u16 gMonShinyPalette_Gourgeist[] = INCBIN_U16("graphics/pokemon/gourgeist/shiny.gbapal"); const u8 gMonIcon_Gourgeist[] = INCBIN_U8("graphics/pokemon/gourgeist/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Gourgeist[] = INCBIN_U8("graphics/pokemon/gourgeist/footprint.1bpp"); @@ -20531,8 +20531,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ 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"); + const u16 gOverworldPalette_Gourgeist[] = INCBIN_U16("graphics/pokemon/gourgeist/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Gourgeist[] = INCBIN_U16("graphics/pokemon/gourgeist/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #if OW_POKEMON_OBJECT_EVENTS @@ -20545,9 +20545,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_BERGMITE const u32 gMonFrontPic_Bergmite[] = INCBIN_U32("graphics/pokemon/bergmite/anim_front.4bpp.lz"); - const u32 gMonPalette_Bergmite[] = INCBIN_U32("graphics/pokemon/bergmite/normal.gbapal.lz"); + const u16 gMonPalette_Bergmite[] = INCBIN_U16("graphics/pokemon/bergmite/normal.gbapal"); const u32 gMonBackPic_Bergmite[] = INCBIN_U32("graphics/pokemon/bergmite/back.4bpp.lz"); - const u32 gMonShinyPalette_Bergmite[] = INCBIN_U32("graphics/pokemon/bergmite/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Bergmite[] = INCBIN_U16("graphics/pokemon/bergmite/shiny.gbapal"); const u8 gMonIcon_Bergmite[] = INCBIN_U8("graphics/pokemon/bergmite/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Bergmite[] = INCBIN_U8("graphics/pokemon/bergmite/footprint.1bpp"); @@ -20555,15 +20555,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Bergmite[] = INCBIN_U16("graphics/pokemon/bergmite/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Bergmite[] = INCBIN_U16("graphics/pokemon/bergmite/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Avalugg[] = INCBIN_U16("graphics/pokemon/avalugg/normal.gbapal"); const u32 gMonBackPic_Avalugg[] = INCBIN_U32("graphics/pokemon/avalugg/back.4bpp.lz"); - const u32 gMonShinyPalette_Avalugg[] = INCBIN_U32("graphics/pokemon/avalugg/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Avalugg[] = INCBIN_U16("graphics/pokemon/avalugg/shiny.gbapal"); const u8 gMonIcon_Avalugg[] = INCBIN_U8("graphics/pokemon/avalugg/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Avalugg[] = INCBIN_U8("graphics/pokemon/avalugg/footprint.1bpp"); @@ -20571,22 +20571,22 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Avalugg[] = INCBIN_U16("graphics/pokemon/avalugg/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Avalugg[] = INCBIN_U16("graphics/pokemon/avalugg/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if P_HISUIAN_FORMS const u32 gMonFrontPic_AvaluggHisui[] = INCBIN_U32("graphics/pokemon/avalugg/hisui/front.4bpp.lz"); - const u32 gMonPalette_AvaluggHisui[] = INCBIN_U32("graphics/pokemon/avalugg/hisui/normal.gbapal.lz"); + const u16 gMonPalette_AvaluggHisui[] = INCBIN_U16("graphics/pokemon/avalugg/hisui/normal.gbapal"); const u32 gMonBackPic_AvaluggHisui[] = INCBIN_U32("graphics/pokemon/avalugg/hisui/back.4bpp.lz"); - const u32 gMonShinyPalette_AvaluggHisui[] = INCBIN_U32("graphics/pokemon/avalugg/hisui/shiny.gbapal.lz"); + const u16 gMonShinyPalette_AvaluggHisui[] = INCBIN_U16("graphics/pokemon/avalugg/hisui/shiny.gbapal"); const u8 gMonIcon_AvaluggHisui[] = INCBIN_U8("graphics/pokemon/avalugg/hisui/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS const u32 gObjectEventPic_AvaluggHisui[] = INCBIN_COMP("graphics/pokemon/avalugg/hisui/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - const u32 gOverworldPalette_AvaluggHisui[] = INCBIN_U32("graphics/pokemon/avalugg/hisui/overworld_normal.gbapal.lz"); - const u32 gShinyOverworldPalette_AvaluggHisui[] = INCBIN_U32("graphics/pokemon/avalugg/hisui/overworld_shiny.gbapal.lz"); + const u16 gOverworldPalette_AvaluggHisui[] = INCBIN_U16("graphics/pokemon/avalugg/hisui/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_AvaluggHisui[] = INCBIN_U16("graphics/pokemon/avalugg/hisui/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_HISUIAN_FORMS @@ -20594,9 +20594,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_NOIBAT const u32 gMonFrontPic_Noibat[] = INCBIN_U32("graphics/pokemon/noibat/anim_front.4bpp.lz"); - const u32 gMonPalette_Noibat[] = INCBIN_U32("graphics/pokemon/noibat/normal.gbapal.lz"); + const u16 gMonPalette_Noibat[] = INCBIN_U16("graphics/pokemon/noibat/normal.gbapal"); const u32 gMonBackPic_Noibat[] = INCBIN_U32("graphics/pokemon/noibat/back.4bpp.lz"); - const u32 gMonShinyPalette_Noibat[] = INCBIN_U32("graphics/pokemon/noibat/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Noibat[] = INCBIN_U16("graphics/pokemon/noibat/shiny.gbapal"); const u8 gMonIcon_Noibat[] = INCBIN_U8("graphics/pokemon/noibat/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Noibat[] = INCBIN_U8("graphics/pokemon/noibat/footprint.1bpp"); @@ -20604,15 +20604,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Noibat[] = INCBIN_U16("graphics/pokemon/noibat/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Noibat[] = INCBIN_U16("graphics/pokemon/noibat/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Noivern[] = INCBIN_U16("graphics/pokemon/noivern/normal.gbapal"); const u32 gMonBackPic_Noivern[] = INCBIN_U32("graphics/pokemon/noivern/back.4bpp.lz"); - const u32 gMonShinyPalette_Noivern[] = INCBIN_U32("graphics/pokemon/noivern/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Noivern[] = INCBIN_U16("graphics/pokemon/noivern/shiny.gbapal"); const u8 gMonIcon_Noivern[] = INCBIN_U8("graphics/pokemon/noivern/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Noivern[] = INCBIN_U8("graphics/pokemon/noivern/footprint.1bpp"); @@ -20620,17 +20620,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Noivern[] = INCBIN_U16("graphics/pokemon/noivern/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Noivern[] = INCBIN_U16("graphics/pokemon/noivern/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_NOIBAT #if P_FAMILY_XERNEAS const u32 gMonFrontPic_XerneasNeutral[] = INCBIN_U32("graphics/pokemon/xerneas/anim_front.4bpp.lz"); - const u32 gMonPalette_XerneasNeutral[] = INCBIN_U32("graphics/pokemon/xerneas/normal.gbapal.lz"); + const u16 gMonPalette_XerneasNeutral[] = INCBIN_U16("graphics/pokemon/xerneas/normal.gbapal"); const u32 gMonBackPic_XerneasNeutral[] = INCBIN_U32("graphics/pokemon/xerneas/back.4bpp.lz"); - const u32 gMonShinyPalette_XerneasNeutral[] = INCBIN_U32("graphics/pokemon/xerneas/shiny.gbapal.lz"); + const u16 gMonShinyPalette_XerneasNeutral[] = INCBIN_U16("graphics/pokemon/xerneas/shiny.gbapal"); const u8 gMonIcon_XerneasNeutral[] = INCBIN_U8("graphics/pokemon/xerneas/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Xerneas[] = INCBIN_U8("graphics/pokemon/xerneas/footprint.1bpp"); @@ -20638,30 +20638,30 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_XerneasNeutral[] = INCBIN_U16("graphics/pokemon/xerneas/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_XerneasNeutral[] = INCBIN_U16("graphics/pokemon/xerneas/overworld_shiny.gbapal"); #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 u16 gMonPalette_XerneasActive[] = INCBIN_U16("graphics/pokemon/xerneas/active/normal.gbapal"); 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 u16 gMonShinyPalette_XerneasActive[] = INCBIN_U16("graphics/pokemon/xerneas/active/shiny.gbapal"); 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"); + //const u16 gOverworldPalette_XerneasActive[] = INCBIN_U16("graphics/pokemon/xerneas/active/overworld_normal.gbapal"); + //const u16 gShinyOverworldPalette_XerneasActive[] = INCBIN_U16("graphics/pokemon/xerneas/active/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_XERNEAS #if P_FAMILY_YVELTAL const u32 gMonFrontPic_Yveltal[] = INCBIN_U32("graphics/pokemon/yveltal/anim_front.4bpp.lz"); - const u32 gMonPalette_Yveltal[] = INCBIN_U32("graphics/pokemon/yveltal/normal.gbapal.lz"); + const u16 gMonPalette_Yveltal[] = INCBIN_U16("graphics/pokemon/yveltal/normal.gbapal"); const u32 gMonBackPic_Yveltal[] = INCBIN_U32("graphics/pokemon/yveltal/back.4bpp.lz"); - const u32 gMonShinyPalette_Yveltal[] = INCBIN_U32("graphics/pokemon/yveltal/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Yveltal[] = INCBIN_U16("graphics/pokemon/yveltal/shiny.gbapal"); const u8 gMonIcon_Yveltal[] = INCBIN_U8("graphics/pokemon/yveltal/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Yveltal[] = INCBIN_U8("graphics/pokemon/yveltal/footprint.1bpp"); @@ -20669,17 +20669,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Yveltal[] = INCBIN_U16("graphics/pokemon/yveltal/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Yveltal[] = INCBIN_U16("graphics/pokemon/yveltal/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_YVELTAL #if P_FAMILY_ZYGARDE const u32 gMonFrontPic_Zygarde50[] = INCBIN_U32("graphics/pokemon/zygarde/anim_front.4bpp.lz"); - const u32 gMonPalette_Zygarde50[] = INCBIN_U32("graphics/pokemon/zygarde/normal.gbapal.lz"); + const u16 gMonPalette_Zygarde50[] = INCBIN_U16("graphics/pokemon/zygarde/normal.gbapal"); const u32 gMonBackPic_Zygarde50[] = INCBIN_U32("graphics/pokemon/zygarde/back.4bpp.lz"); - const u32 gMonShinyPalette_Zygarde50[] = INCBIN_U32("graphics/pokemon/zygarde/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Zygarde50[] = INCBIN_U16("graphics/pokemon/zygarde/shiny.gbapal"); const u8 gMonIcon_Zygarde50[] = INCBIN_U8("graphics/pokemon/zygarde/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Zygarde[] = INCBIN_U8("graphics/pokemon/zygarde/footprint.1bpp"); @@ -20688,43 +20688,43 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Zygarde50[] = INCBIN_U16("graphics/pokemon/zygarde/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Zygarde50[] = INCBIN_U16("graphics/pokemon/zygarde/overworld_shiny.gbapal"); #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 u16 gMonPalette_Zygarde10[] = INCBIN_U16("graphics/pokemon/zygarde/10_percent/normal.gbapal"); 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 u16 gMonShinyPalette_Zygarde10[] = INCBIN_U16("graphics/pokemon/zygarde/10_percent/shiny.gbapal"); 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"); + const u16 gOverworldPalette_Zygarde10[] = INCBIN_U16("graphics/pokemon/zygarde/10_percent/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Zygarde10[] = INCBIN_U16("graphics/pokemon/zygarde/10_percent/overworld_shiny.gbapal"); #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 u16 gMonPalette_ZygardeComplete[] = INCBIN_U16("graphics/pokemon/zygarde/complete/normal.gbapal"); 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 u16 gMonShinyPalette_ZygardeComplete[] = INCBIN_U16("graphics/pokemon/zygarde/complete/shiny.gbapal"); 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"); + const u16 gOverworldPalette_ZygardeComplete[] = INCBIN_U16("graphics/pokemon/zygarde/complete/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_ZygardeComplete[] = INCBIN_U16("graphics/pokemon/zygarde/complete/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_ZYGARDE #if P_FAMILY_DIANCIE const u32 gMonFrontPic_Diancie[] = INCBIN_U32("graphics/pokemon/diancie/anim_front.4bpp.lz"); - const u32 gMonPalette_Diancie[] = INCBIN_U32("graphics/pokemon/diancie/normal.gbapal.lz"); + const u16 gMonPalette_Diancie[] = INCBIN_U16("graphics/pokemon/diancie/normal.gbapal"); const u32 gMonBackPic_Diancie[] = INCBIN_U32("graphics/pokemon/diancie/back.4bpp.lz"); - const u32 gMonShinyPalette_Diancie[] = INCBIN_U32("graphics/pokemon/diancie/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Diancie[] = INCBIN_U16("graphics/pokemon/diancie/shiny.gbapal"); const u8 gMonIcon_Diancie[] = INCBIN_U8("graphics/pokemon/diancie/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Diancie[] = INCBIN_U8("graphics/pokemon/diancie/footprint.1bpp"); @@ -20732,22 +20732,22 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Diancie[] = INCBIN_U16("graphics/pokemon/diancie/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Diancie[] = INCBIN_U16("graphics/pokemon/diancie/overworld_shiny.gbapal"); #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"); - const u32 gMonPalette_DiancieMega[] = INCBIN_U32("graphics/pokemon/diancie/mega/normal.gbapal.lz"); + const u16 gMonPalette_DiancieMega[] = INCBIN_U16("graphics/pokemon/diancie/mega/normal.gbapal"); 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 u16 gMonShinyPalette_DiancieMega[] = INCBIN_U16("graphics/pokemon/diancie/mega/shiny.gbapal"); const u8 gMonIcon_DiancieMega[] = INCBIN_U8("graphics/pokemon/diancie/mega/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS 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"); + const u16 gOverworldPalette_DiancieMega[] = INCBIN_U16("graphics/pokemon/diancie/mega/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_DiancieMega[] = INCBIN_U16("graphics/pokemon/diancie/mega/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS && OW_BATTLE_ONLY_FORMS #endif //P_MEGA_EVOLUTIONS @@ -20755,9 +20755,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_HOOPA const u32 gMonFrontPic_HoopaConfined[] = INCBIN_U32("graphics/pokemon/hoopa/anim_front.4bpp.lz"); - const u32 gMonPalette_HoopaConfined[] = INCBIN_U32("graphics/pokemon/hoopa/normal.gbapal.lz"); + const u16 gMonPalette_HoopaConfined[] = INCBIN_U16("graphics/pokemon/hoopa/normal.gbapal"); const u32 gMonBackPic_HoopaConfined[] = INCBIN_U32("graphics/pokemon/hoopa/back.4bpp.lz"); - const u32 gMonShinyPalette_HoopaConfined[] = INCBIN_U32("graphics/pokemon/hoopa/shiny.gbapal.lz"); + const u16 gMonShinyPalette_HoopaConfined[] = INCBIN_U16("graphics/pokemon/hoopa/shiny.gbapal"); const u8 gMonIcon_HoopaConfined[] = INCBIN_U8("graphics/pokemon/hoopa/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Hoopa[] = INCBIN_U8("graphics/pokemon/hoopa/footprint.1bpp"); @@ -20765,30 +20765,30 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_HoopaConfined[] = INCBIN_U16("graphics/pokemon/hoopa/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_HoopaConfined[] = INCBIN_U16("graphics/pokemon/hoopa/overworld_shiny.gbapal"); #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 u16 gMonPalette_HoopaUnbound[] = INCBIN_U16("graphics/pokemon/hoopa/unbound/normal.gbapal"); 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 u16 gMonShinyPalette_HoopaUnbound[] = INCBIN_U16("graphics/pokemon/hoopa/unbound/shiny.gbapal"); 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"); + const u16 gOverworldPalette_HoopaUnbound[] = INCBIN_U16("graphics/pokemon/hoopa/unbound/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_HoopaUnbound[] = INCBIN_U16("graphics/pokemon/hoopa/unbound/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_HOOPA #if P_FAMILY_VOLCANION const u32 gMonFrontPic_Volcanion[] = INCBIN_U32("graphics/pokemon/volcanion/anim_front.4bpp.lz"); - const u32 gMonPalette_Volcanion[] = INCBIN_U32("graphics/pokemon/volcanion/normal.gbapal.lz"); + const u16 gMonPalette_Volcanion[] = INCBIN_U16("graphics/pokemon/volcanion/normal.gbapal"); const u32 gMonBackPic_Volcanion[] = INCBIN_U32("graphics/pokemon/volcanion/back.4bpp.lz"); - const u32 gMonShinyPalette_Volcanion[] = INCBIN_U32("graphics/pokemon/volcanion/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Volcanion[] = INCBIN_U16("graphics/pokemon/volcanion/shiny.gbapal"); const u8 gMonIcon_Volcanion[] = INCBIN_U8("graphics/pokemon/volcanion/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Volcanion[] = INCBIN_U8("graphics/pokemon/volcanion/footprint.1bpp"); @@ -20796,17 +20796,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Volcanion[] = INCBIN_U16("graphics/pokemon/volcanion/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Volcanion[] = INCBIN_U16("graphics/pokemon/volcanion/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_VOLCANION #if P_FAMILY_ROWLET const u32 gMonFrontPic_Rowlet[] = INCBIN_U32("graphics/pokemon/rowlet/anim_front.4bpp.lz"); - const u32 gMonPalette_Rowlet[] = INCBIN_U32("graphics/pokemon/rowlet/normal.gbapal.lz"); + const u16 gMonPalette_Rowlet[] = INCBIN_U16("graphics/pokemon/rowlet/normal.gbapal"); const u32 gMonBackPic_Rowlet[] = INCBIN_U32("graphics/pokemon/rowlet/back.4bpp.lz"); - const u32 gMonShinyPalette_Rowlet[] = INCBIN_U32("graphics/pokemon/rowlet/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Rowlet[] = INCBIN_U16("graphics/pokemon/rowlet/shiny.gbapal"); const u8 gMonIcon_Rowlet[] = INCBIN_U8("graphics/pokemon/rowlet/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Rowlet[] = INCBIN_U8("graphics/pokemon/rowlet/footprint.1bpp"); @@ -20814,15 +20814,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Rowlet[] = INCBIN_U16("graphics/pokemon/rowlet/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Rowlet[] = INCBIN_U16("graphics/pokemon/rowlet/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Dartrix[] = INCBIN_U16("graphics/pokemon/dartrix/normal.gbapal"); const u32 gMonBackPic_Dartrix[] = INCBIN_U32("graphics/pokemon/dartrix/back.4bpp.lz"); - const u32 gMonShinyPalette_Dartrix[] = INCBIN_U32("graphics/pokemon/dartrix/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Dartrix[] = INCBIN_U16("graphics/pokemon/dartrix/shiny.gbapal"); const u8 gMonIcon_Dartrix[] = INCBIN_U8("graphics/pokemon/dartrix/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Dartrix[] = INCBIN_U8("graphics/pokemon/dartrix/footprint.1bpp"); @@ -20830,15 +20830,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Dartrix[] = INCBIN_U16("graphics/pokemon/dartrix/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Dartrix[] = INCBIN_U16("graphics/pokemon/dartrix/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Decidueye[] = INCBIN_U16("graphics/pokemon/decidueye/normal.gbapal"); const u32 gMonBackPic_Decidueye[] = INCBIN_U32("graphics/pokemon/decidueye/back.4bpp.lz"); - const u32 gMonShinyPalette_Decidueye[] = INCBIN_U32("graphics/pokemon/decidueye/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Decidueye[] = INCBIN_U16("graphics/pokemon/decidueye/shiny.gbapal"); const u8 gMonIcon_Decidueye[] = INCBIN_U8("graphics/pokemon/decidueye/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Decidueye[] = INCBIN_U8("graphics/pokemon/decidueye/footprint.1bpp"); @@ -20846,22 +20846,22 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Decidueye[] = INCBIN_U16("graphics/pokemon/decidueye/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Decidueye[] = INCBIN_U16("graphics/pokemon/decidueye/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if P_HISUIAN_FORMS const u32 gMonFrontPic_DecidueyeHisui[] = INCBIN_U32("graphics/pokemon/decidueye/hisui/front.4bpp.lz"); - const u32 gMonPalette_DecidueyeHisui[] = INCBIN_U32("graphics/pokemon/decidueye/hisui/normal.gbapal.lz"); + const u16 gMonPalette_DecidueyeHisui[] = INCBIN_U16("graphics/pokemon/decidueye/hisui/normal.gbapal"); const u32 gMonBackPic_DecidueyeHisui[] = INCBIN_U32("graphics/pokemon/decidueye/hisui/back.4bpp.lz"); - const u32 gMonShinyPalette_DecidueyeHisui[] = INCBIN_U32("graphics/pokemon/decidueye/hisui/shiny.gbapal.lz"); + const u16 gMonShinyPalette_DecidueyeHisui[] = INCBIN_U16("graphics/pokemon/decidueye/hisui/shiny.gbapal"); const u8 gMonIcon_DecidueyeHisui[] = INCBIN_U8("graphics/pokemon/decidueye/hisui/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS const u32 gObjectEventPic_DecidueyeHisui[] = INCBIN_COMP("graphics/pokemon/decidueye/hisui/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - const u32 gOverworldPalette_DecidueyeHisui[] = INCBIN_U32("graphics/pokemon/decidueye/hisui/overworld_normal.gbapal.lz"); - const u32 gShinyOverworldPalette_DecidueyeHisui[] = INCBIN_U32("graphics/pokemon/decidueye/hisui/overworld_shiny.gbapal.lz"); + const u16 gOverworldPalette_DecidueyeHisui[] = INCBIN_U16("graphics/pokemon/decidueye/hisui/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_DecidueyeHisui[] = INCBIN_U16("graphics/pokemon/decidueye/hisui/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_HISUIAN_FORMS @@ -20869,9 +20869,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_LITTEN const u32 gMonFrontPic_Litten[] = INCBIN_U32("graphics/pokemon/litten/front.4bpp.lz"); - const u32 gMonPalette_Litten[] = INCBIN_U32("graphics/pokemon/litten/normal.gbapal.lz"); + const u16 gMonPalette_Litten[] = INCBIN_U16("graphics/pokemon/litten/normal.gbapal"); const u32 gMonBackPic_Litten[] = INCBIN_U32("graphics/pokemon/litten/back.4bpp.lz"); - const u32 gMonShinyPalette_Litten[] = INCBIN_U32("graphics/pokemon/litten/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Litten[] = INCBIN_U16("graphics/pokemon/litten/shiny.gbapal"); const u8 gMonIcon_Litten[] = INCBIN_U8("graphics/pokemon/litten/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Litten[] = INCBIN_U8("graphics/pokemon/litten/footprint.1bpp"); @@ -20879,15 +20879,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Litten[] = INCBIN_U16("graphics/pokemon/litten/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Litten[] = INCBIN_U16("graphics/pokemon/litten/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Torracat[] = INCBIN_U16("graphics/pokemon/torracat/normal.gbapal"); const u32 gMonBackPic_Torracat[] = INCBIN_U32("graphics/pokemon/torracat/back.4bpp.lz"); - const u32 gMonShinyPalette_Torracat[] = INCBIN_U32("graphics/pokemon/torracat/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Torracat[] = INCBIN_U16("graphics/pokemon/torracat/shiny.gbapal"); const u8 gMonIcon_Torracat[] = INCBIN_U8("graphics/pokemon/torracat/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Torracat[] = INCBIN_U8("graphics/pokemon/torracat/footprint.1bpp"); @@ -20895,15 +20895,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Torracat[] = INCBIN_U16("graphics/pokemon/torracat/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Torracat[] = INCBIN_U16("graphics/pokemon/torracat/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Incineroar[] = INCBIN_U16("graphics/pokemon/incineroar/normal.gbapal"); const u32 gMonBackPic_Incineroar[] = INCBIN_U32("graphics/pokemon/incineroar/back.4bpp.lz"); - const u32 gMonShinyPalette_Incineroar[] = INCBIN_U32("graphics/pokemon/incineroar/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Incineroar[] = INCBIN_U16("graphics/pokemon/incineroar/shiny.gbapal"); const u8 gMonIcon_Incineroar[] = INCBIN_U8("graphics/pokemon/incineroar/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Incineroar[] = INCBIN_U8("graphics/pokemon/incineroar/footprint.1bpp"); @@ -20911,17 +20911,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Incineroar[] = INCBIN_U16("graphics/pokemon/incineroar/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Incineroar[] = INCBIN_U16("graphics/pokemon/incineroar/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_LITTEN #if P_FAMILY_POPPLIO const u32 gMonFrontPic_Popplio[] = INCBIN_U32("graphics/pokemon/popplio/front.4bpp.lz"); - const u32 gMonPalette_Popplio[] = INCBIN_U32("graphics/pokemon/popplio/normal.gbapal.lz"); + const u16 gMonPalette_Popplio[] = INCBIN_U16("graphics/pokemon/popplio/normal.gbapal"); const u32 gMonBackPic_Popplio[] = INCBIN_U32("graphics/pokemon/popplio/back.4bpp.lz"); - const u32 gMonShinyPalette_Popplio[] = INCBIN_U32("graphics/pokemon/popplio/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Popplio[] = INCBIN_U16("graphics/pokemon/popplio/shiny.gbapal"); const u8 gMonIcon_Popplio[] = INCBIN_U8("graphics/pokemon/popplio/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Popplio[] = INCBIN_U8("graphics/pokemon/popplio/footprint.1bpp"); @@ -20929,15 +20929,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Popplio[] = INCBIN_U16("graphics/pokemon/popplio/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Popplio[] = INCBIN_U16("graphics/pokemon/popplio/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Brionne[] = INCBIN_U16("graphics/pokemon/brionne/normal.gbapal"); const u32 gMonBackPic_Brionne[] = INCBIN_U32("graphics/pokemon/brionne/back.4bpp.lz"); - const u32 gMonShinyPalette_Brionne[] = INCBIN_U32("graphics/pokemon/brionne/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Brionne[] = INCBIN_U16("graphics/pokemon/brionne/shiny.gbapal"); const u8 gMonIcon_Brionne[] = INCBIN_U8("graphics/pokemon/brionne/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Brionne[] = INCBIN_U8("graphics/pokemon/brionne/footprint.1bpp"); @@ -20945,15 +20945,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Brionne[] = INCBIN_U16("graphics/pokemon/brionne/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Brionne[] = INCBIN_U16("graphics/pokemon/brionne/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Primarina[] = INCBIN_U16("graphics/pokemon/primarina/normal.gbapal"); const u32 gMonBackPic_Primarina[] = INCBIN_U32("graphics/pokemon/primarina/back.4bpp.lz"); - const u32 gMonShinyPalette_Primarina[] = INCBIN_U32("graphics/pokemon/primarina/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Primarina[] = INCBIN_U16("graphics/pokemon/primarina/shiny.gbapal"); const u8 gMonIcon_Primarina[] = INCBIN_U8("graphics/pokemon/primarina/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Primarina[] = INCBIN_U8("graphics/pokemon/primarina/footprint.1bpp"); @@ -20961,17 +20961,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Primarina[] = INCBIN_U16("graphics/pokemon/primarina/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Primarina[] = INCBIN_U16("graphics/pokemon/primarina/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_POPPLIO #if P_FAMILY_PIKIPEK const u32 gMonFrontPic_Pikipek[] = INCBIN_U32("graphics/pokemon/pikipek/anim_front.4bpp.lz"); - const u32 gMonPalette_Pikipek[] = INCBIN_U32("graphics/pokemon/pikipek/normal.gbapal.lz"); + const u16 gMonPalette_Pikipek[] = INCBIN_U16("graphics/pokemon/pikipek/normal.gbapal"); const u32 gMonBackPic_Pikipek[] = INCBIN_U32("graphics/pokemon/pikipek/back.4bpp.lz"); - const u32 gMonShinyPalette_Pikipek[] = INCBIN_U32("graphics/pokemon/pikipek/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Pikipek[] = INCBIN_U16("graphics/pokemon/pikipek/shiny.gbapal"); const u8 gMonIcon_Pikipek[] = INCBIN_U8("graphics/pokemon/pikipek/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Pikipek[] = INCBIN_U8("graphics/pokemon/pikipek/footprint.1bpp"); @@ -20979,15 +20979,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Pikipek[] = INCBIN_U16("graphics/pokemon/pikipek/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Pikipek[] = INCBIN_U16("graphics/pokemon/pikipek/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Trumbeak[] = INCBIN_U16("graphics/pokemon/trumbeak/normal.gbapal"); const u32 gMonBackPic_Trumbeak[] = INCBIN_U32("graphics/pokemon/trumbeak/back.4bpp.lz"); - const u32 gMonShinyPalette_Trumbeak[] = INCBIN_U32("graphics/pokemon/trumbeak/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Trumbeak[] = INCBIN_U16("graphics/pokemon/trumbeak/shiny.gbapal"); const u8 gMonIcon_Trumbeak[] = INCBIN_U8("graphics/pokemon/trumbeak/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Trumbeak[] = INCBIN_U8("graphics/pokemon/trumbeak/footprint.1bpp"); @@ -20995,15 +20995,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Trumbeak[] = INCBIN_U16("graphics/pokemon/trumbeak/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Trumbeak[] = INCBIN_U16("graphics/pokemon/trumbeak/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Toucannon[] = INCBIN_U16("graphics/pokemon/toucannon/normal.gbapal"); const u32 gMonBackPic_Toucannon[] = INCBIN_U32("graphics/pokemon/toucannon/back.4bpp.lz"); - const u32 gMonShinyPalette_Toucannon[] = INCBIN_U32("graphics/pokemon/toucannon/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Toucannon[] = INCBIN_U16("graphics/pokemon/toucannon/shiny.gbapal"); const u8 gMonIcon_Toucannon[] = INCBIN_U8("graphics/pokemon/toucannon/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Toucannon[] = INCBIN_U8("graphics/pokemon/toucannon/footprint.1bpp"); @@ -21011,17 +21011,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Toucannon[] = INCBIN_U16("graphics/pokemon/toucannon/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Toucannon[] = INCBIN_U16("graphics/pokemon/toucannon/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_PIKIPEK #if P_FAMILY_YUNGOOS const u32 gMonFrontPic_Yungoos[] = INCBIN_U32("graphics/pokemon/yungoos/front.4bpp.lz"); - const u32 gMonPalette_Yungoos[] = INCBIN_U32("graphics/pokemon/yungoos/normal.gbapal.lz"); + const u16 gMonPalette_Yungoos[] = INCBIN_U16("graphics/pokemon/yungoos/normal.gbapal"); const u32 gMonBackPic_Yungoos[] = INCBIN_U32("graphics/pokemon/yungoos/back.4bpp.lz"); - const u32 gMonShinyPalette_Yungoos[] = INCBIN_U32("graphics/pokemon/yungoos/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Yungoos[] = INCBIN_U16("graphics/pokemon/yungoos/shiny.gbapal"); const u8 gMonIcon_Yungoos[] = INCBIN_U8("graphics/pokemon/yungoos/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Yungoos[] = INCBIN_U8("graphics/pokemon/yungoos/footprint.1bpp"); @@ -21029,15 +21029,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Yungoos[] = INCBIN_U16("graphics/pokemon/yungoos/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Yungoos[] = INCBIN_U16("graphics/pokemon/yungoos/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Gumshoos[] = INCBIN_U16("graphics/pokemon/gumshoos/normal.gbapal"); const u32 gMonBackPic_Gumshoos[] = INCBIN_U32("graphics/pokemon/gumshoos/back.4bpp.lz"); - const u32 gMonShinyPalette_Gumshoos[] = INCBIN_U32("graphics/pokemon/gumshoos/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Gumshoos[] = INCBIN_U16("graphics/pokemon/gumshoos/shiny.gbapal"); const u8 gMonIcon_Gumshoos[] = INCBIN_U8("graphics/pokemon/gumshoos/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Gumshoos[] = INCBIN_U8("graphics/pokemon/gumshoos/footprint.1bpp"); @@ -21045,17 +21045,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Gumshoos[] = INCBIN_U16("graphics/pokemon/gumshoos/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Gumshoos[] = INCBIN_U16("graphics/pokemon/gumshoos/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_YUNGOOS #if P_FAMILY_GRUBBIN const u32 gMonFrontPic_Grubbin[] = INCBIN_U32("graphics/pokemon/grubbin/anim_front.4bpp.lz"); - const u32 gMonPalette_Grubbin[] = INCBIN_U32("graphics/pokemon/grubbin/normal.gbapal.lz"); + const u16 gMonPalette_Grubbin[] = INCBIN_U16("graphics/pokemon/grubbin/normal.gbapal"); const u32 gMonBackPic_Grubbin[] = INCBIN_U32("graphics/pokemon/grubbin/back.4bpp.lz"); - const u32 gMonShinyPalette_Grubbin[] = INCBIN_U32("graphics/pokemon/grubbin/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Grubbin[] = INCBIN_U16("graphics/pokemon/grubbin/shiny.gbapal"); const u8 gMonIcon_Grubbin[] = INCBIN_U8("graphics/pokemon/grubbin/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Grubbin[] = INCBIN_U8("graphics/pokemon/grubbin/footprint.1bpp"); @@ -21063,15 +21063,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Grubbin[] = INCBIN_U16("graphics/pokemon/grubbin/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Grubbin[] = INCBIN_U16("graphics/pokemon/grubbin/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Charjabug[] = INCBIN_U16("graphics/pokemon/charjabug/normal.gbapal"); const u32 gMonBackPic_Charjabug[] = INCBIN_U32("graphics/pokemon/charjabug/back.4bpp.lz"); - const u32 gMonShinyPalette_Charjabug[] = INCBIN_U32("graphics/pokemon/charjabug/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Charjabug[] = INCBIN_U16("graphics/pokemon/charjabug/shiny.gbapal"); const u8 gMonIcon_Charjabug[] = INCBIN_U8("graphics/pokemon/charjabug/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Charjabug[] = INCBIN_U8("graphics/pokemon/charjabug/footprint.1bpp"); @@ -21079,15 +21079,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Charjabug[] = INCBIN_U16("graphics/pokemon/charjabug/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Charjabug[] = INCBIN_U16("graphics/pokemon/charjabug/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Vikavolt[] = INCBIN_U16("graphics/pokemon/vikavolt/normal.gbapal"); const u32 gMonBackPic_Vikavolt[] = INCBIN_U32("graphics/pokemon/vikavolt/back.4bpp.lz"); - const u32 gMonShinyPalette_Vikavolt[] = INCBIN_U32("graphics/pokemon/vikavolt/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Vikavolt[] = INCBIN_U16("graphics/pokemon/vikavolt/shiny.gbapal"); const u8 gMonIcon_Vikavolt[] = INCBIN_U8("graphics/pokemon/vikavolt/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Vikavolt[] = INCBIN_U8("graphics/pokemon/vikavolt/footprint.1bpp"); @@ -21095,17 +21095,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Vikavolt[] = INCBIN_U16("graphics/pokemon/vikavolt/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Vikavolt[] = INCBIN_U16("graphics/pokemon/vikavolt/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_GRUBBIN #if P_FAMILY_CRABRAWLER const u32 gMonFrontPic_Crabrawler[] = INCBIN_U32("graphics/pokemon/crabrawler/front.4bpp.lz"); - const u32 gMonPalette_Crabrawler[] = INCBIN_U32("graphics/pokemon/crabrawler/normal.gbapal.lz"); + const u16 gMonPalette_Crabrawler[] = INCBIN_U16("graphics/pokemon/crabrawler/normal.gbapal"); const u32 gMonBackPic_Crabrawler[] = INCBIN_U32("graphics/pokemon/crabrawler/back.4bpp.lz"); - const u32 gMonShinyPalette_Crabrawler[] = INCBIN_U32("graphics/pokemon/crabrawler/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Crabrawler[] = INCBIN_U16("graphics/pokemon/crabrawler/shiny.gbapal"); const u8 gMonIcon_Crabrawler[] = INCBIN_U8("graphics/pokemon/crabrawler/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Crabrawler[] = INCBIN_U8("graphics/pokemon/crabrawler/footprint.1bpp"); @@ -21113,15 +21113,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Crabrawler[] = INCBIN_U16("graphics/pokemon/crabrawler/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Crabrawler[] = INCBIN_U16("graphics/pokemon/crabrawler/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Crabominable[] = INCBIN_U16("graphics/pokemon/crabominable/normal.gbapal"); const u32 gMonBackPic_Crabominable[] = INCBIN_U32("graphics/pokemon/crabominable/back.4bpp.lz"); - const u32 gMonShinyPalette_Crabominable[] = INCBIN_U32("graphics/pokemon/crabominable/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Crabominable[] = INCBIN_U16("graphics/pokemon/crabominable/shiny.gbapal"); const u8 gMonIcon_Crabominable[] = INCBIN_U8("graphics/pokemon/crabominable/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Crabominable[] = INCBIN_U8("graphics/pokemon/crabominable/footprint.1bpp"); @@ -21129,17 +21129,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Crabominable[] = INCBIN_U16("graphics/pokemon/crabominable/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Crabominable[] = INCBIN_U16("graphics/pokemon/crabominable/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_CRABRAWLER #if P_FAMILY_ORICORIO const u32 gMonFrontPic_OricorioBaile[] = INCBIN_U32("graphics/pokemon/oricorio/front.4bpp.lz"); - const u32 gMonPalette_OricorioBaile[] = INCBIN_U32("graphics/pokemon/oricorio/normal.gbapal.lz"); + const u16 gMonPalette_OricorioBaile[] = INCBIN_U16("graphics/pokemon/oricorio/normal.gbapal"); const u32 gMonBackPic_OricorioBaile[] = INCBIN_U32("graphics/pokemon/oricorio/back.4bpp.lz"); - const u32 gMonShinyPalette_OricorioBaile[] = INCBIN_U32("graphics/pokemon/oricorio/shiny.gbapal.lz"); + const u16 gMonShinyPalette_OricorioBaile[] = INCBIN_U16("graphics/pokemon/oricorio/shiny.gbapal"); const u8 gMonIcon_OricorioBaile[] = INCBIN_U8("graphics/pokemon/oricorio/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Oricorio[] = INCBIN_U8("graphics/pokemon/oricorio/footprint.1bpp"); @@ -21147,56 +21147,56 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_OricorioBaile[] = INCBIN_U16("graphics/pokemon/oricorio/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_OricorioBaile[] = INCBIN_U16("graphics/pokemon/oricorio/overworld_shiny.gbapal"); #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 u16 gMonPalette_OricorioPomPom[] = INCBIN_U16("graphics/pokemon/oricorio/pom_pom/normal.gbapal"); 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 u16 gMonShinyPalette_OricorioPomPom[] = INCBIN_U16("graphics/pokemon/oricorio/pom_pom/shiny.gbapal"); 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"); + const u16 gOverworldPalette_OricorioPomPom[] = INCBIN_U16("graphics/pokemon/oricorio/pom_pom/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_OricorioPomPom[] = INCBIN_U16("graphics/pokemon/oricorio/pom_pom/overworld_shiny.gbapal"); #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 u16 gMonPalette_OricorioPau[] = INCBIN_U16("graphics/pokemon/oricorio/pau/normal.gbapal"); 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 u16 gMonShinyPalette_OricorioPau[] = INCBIN_U16("graphics/pokemon/oricorio/pau/shiny.gbapal"); 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"); + const u16 gOverworldPalette_OricorioPau[] = INCBIN_U16("graphics/pokemon/oricorio/pau/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_OricorioPau[] = INCBIN_U16("graphics/pokemon/oricorio/pau/overworld_shiny.gbapal"); #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 u16 gMonPalette_OricorioSensu[] = INCBIN_U16("graphics/pokemon/oricorio/sensu/normal.gbapal"); 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 u16 gMonShinyPalette_OricorioSensu[] = INCBIN_U16("graphics/pokemon/oricorio/sensu/shiny.gbapal"); 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"); + const u16 gOverworldPalette_OricorioSensu[] = INCBIN_U16("graphics/pokemon/oricorio/sensu/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_OricorioSensu[] = INCBIN_U16("graphics/pokemon/oricorio/sensu/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_ORICORIO #if P_FAMILY_CUTIEFLY const u32 gMonFrontPic_Cutiefly[] = INCBIN_U32("graphics/pokemon/cutiefly/anim_front.4bpp.lz"); - const u32 gMonPalette_Cutiefly[] = INCBIN_U32("graphics/pokemon/cutiefly/normal.gbapal.lz"); + const u16 gMonPalette_Cutiefly[] = INCBIN_U16("graphics/pokemon/cutiefly/normal.gbapal"); const u32 gMonBackPic_Cutiefly[] = INCBIN_U32("graphics/pokemon/cutiefly/back.4bpp.lz"); - const u32 gMonShinyPalette_Cutiefly[] = INCBIN_U32("graphics/pokemon/cutiefly/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Cutiefly[] = INCBIN_U16("graphics/pokemon/cutiefly/shiny.gbapal"); const u8 gMonIcon_Cutiefly[] = INCBIN_U8("graphics/pokemon/cutiefly/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Cutiefly[] = INCBIN_U8("graphics/pokemon/cutiefly/footprint.1bpp"); @@ -21204,15 +21204,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Cutiefly[] = INCBIN_U16("graphics/pokemon/cutiefly/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Cutiefly[] = INCBIN_U16("graphics/pokemon/cutiefly/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Ribombee[] = INCBIN_U16("graphics/pokemon/ribombee/normal.gbapal"); const u32 gMonBackPic_Ribombee[] = INCBIN_U32("graphics/pokemon/ribombee/back.4bpp.lz"); - const u32 gMonShinyPalette_Ribombee[] = INCBIN_U32("graphics/pokemon/ribombee/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Ribombee[] = INCBIN_U16("graphics/pokemon/ribombee/shiny.gbapal"); const u8 gMonIcon_Ribombee[] = INCBIN_U8("graphics/pokemon/ribombee/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Ribombee[] = INCBIN_U8("graphics/pokemon/ribombee/footprint.1bpp"); @@ -21220,17 +21220,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Ribombee[] = INCBIN_U16("graphics/pokemon/ribombee/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Ribombee[] = INCBIN_U16("graphics/pokemon/ribombee/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_CUTIEFLY #if P_FAMILY_ROCKRUFF const u32 gMonFrontPic_Rockruff[] = INCBIN_U32("graphics/pokemon/rockruff/anim_front.4bpp.lz"); - const u32 gMonPalette_Rockruff[] = INCBIN_U32("graphics/pokemon/rockruff/normal.gbapal.lz"); + const u16 gMonPalette_Rockruff[] = INCBIN_U16("graphics/pokemon/rockruff/normal.gbapal"); const u32 gMonBackPic_Rockruff[] = INCBIN_U32("graphics/pokemon/rockruff/back.4bpp.lz"); - const u32 gMonShinyPalette_Rockruff[] = INCBIN_U32("graphics/pokemon/rockruff/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Rockruff[] = INCBIN_U16("graphics/pokemon/rockruff/shiny.gbapal"); const u8 gMonIcon_Rockruff[] = INCBIN_U8("graphics/pokemon/rockruff/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Rockruff[] = INCBIN_U8("graphics/pokemon/rockruff/footprint.1bpp"); @@ -21238,15 +21238,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Rockruff[] = INCBIN_U16("graphics/pokemon/rockruff/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Rockruff[] = INCBIN_U16("graphics/pokemon/rockruff/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_LycanrocMidday[] = INCBIN_U16("graphics/pokemon/lycanroc/normal.gbapal"); const u32 gMonBackPic_LycanrocMidday[] = INCBIN_U32("graphics/pokemon/lycanroc/back.4bpp.lz"); - const u32 gMonShinyPalette_LycanrocMidday[] = INCBIN_U32("graphics/pokemon/lycanroc/shiny.gbapal.lz"); + const u16 gMonShinyPalette_LycanrocMidday[] = INCBIN_U16("graphics/pokemon/lycanroc/shiny.gbapal"); const u8 gMonIcon_LycanrocMidday[] = INCBIN_U8("graphics/pokemon/lycanroc/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Lycanroc[] = INCBIN_U8("graphics/pokemon/lycanroc/footprint.1bpp"); @@ -21254,43 +21254,43 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_LycanrocMidday[] = INCBIN_U16("graphics/pokemon/lycanroc/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_LycanrocMidday[] = INCBIN_U16("graphics/pokemon/lycanroc/overworld_shiny.gbapal"); #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 u16 gMonPalette_LycanrocMidnight[] = INCBIN_U16("graphics/pokemon/lycanroc/midnight/normal.gbapal"); 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 u16 gMonShinyPalette_LycanrocMidnight[] = INCBIN_U16("graphics/pokemon/lycanroc/midnight/shiny.gbapal"); 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"); + const u16 gOverworldPalette_LycanrocMidnight[] = INCBIN_U16("graphics/pokemon/lycanroc/midnight/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_LycanrocMidnight[] = INCBIN_U16("graphics/pokemon/lycanroc/midnight/overworld_shiny.gbapal"); #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 u16 gMonPalette_LycanrocDusk[] = INCBIN_U16("graphics/pokemon/lycanroc/dusk/normal.gbapal"); 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 u16 gMonShinyPalette_LycanrocDusk[] = INCBIN_U16("graphics/pokemon/lycanroc/dusk/shiny.gbapal"); 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"); + const u16 gOverworldPalette_LycanrocDusk[] = INCBIN_U16("graphics/pokemon/lycanroc/dusk/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_LycanrocDusk[] = INCBIN_U16("graphics/pokemon/lycanroc/dusk/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_ROCKRUFF #if P_FAMILY_WISHIWASHI const u32 gMonFrontPic_WishiwashiSolo[] = INCBIN_U32("graphics/pokemon/wishiwashi/front.4bpp.lz"); - const u32 gMonPalette_WishiwashiSolo[] = INCBIN_U32("graphics/pokemon/wishiwashi/normal.gbapal.lz"); + const u16 gMonPalette_WishiwashiSolo[] = INCBIN_U16("graphics/pokemon/wishiwashi/normal.gbapal"); const u32 gMonBackPic_WishiwashiSolo[] = INCBIN_U32("graphics/pokemon/wishiwashi/back.4bpp.lz"); - const u32 gMonShinyPalette_WishiwashiSolo[] = INCBIN_U32("graphics/pokemon/wishiwashi/shiny.gbapal.lz"); + const u16 gMonShinyPalette_WishiwashiSolo[] = INCBIN_U16("graphics/pokemon/wishiwashi/shiny.gbapal"); const u8 gMonIcon_WishiwashiSolo[] = INCBIN_U8("graphics/pokemon/wishiwashi/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Wishiwashi[] = INCBIN_U8("graphics/pokemon/wishiwashi/footprint.1bpp"); @@ -21298,30 +21298,30 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_WishiwashiSolo[] = INCBIN_U16("graphics/pokemon/wishiwashi/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_WishiwashiSolo[] = INCBIN_U16("graphics/pokemon/wishiwashi/overworld_shiny.gbapal"); #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 u16 gMonPalette_WishiwashiSchool[] = INCBIN_U16("graphics/pokemon/wishiwashi/school/normal.gbapal"); 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 u16 gMonShinyPalette_WishiwashiSchool[] = INCBIN_U16("graphics/pokemon/wishiwashi/school/shiny.gbapal"); 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"); + // const u16 gOverworldPalette_WishiwashiSchool[] = INCBIN_U16("graphics/pokemon/wishiwashi/school/overworld_normal.gbapal"); + // const u16 gShinyOverworldPalette_WishiwashiSchool[] = INCBIN_U16("graphics/pokemon/wishiwashi/school/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_WISHIWASHI #if P_FAMILY_MAREANIE const u32 gMonFrontPic_Mareanie[] = INCBIN_U32("graphics/pokemon/mareanie/front.4bpp.lz"); - const u32 gMonPalette_Mareanie[] = INCBIN_U32("graphics/pokemon/mareanie/normal.gbapal.lz"); + const u16 gMonPalette_Mareanie[] = INCBIN_U16("graphics/pokemon/mareanie/normal.gbapal"); const u32 gMonBackPic_Mareanie[] = INCBIN_U32("graphics/pokemon/mareanie/back.4bpp.lz"); - const u32 gMonShinyPalette_Mareanie[] = INCBIN_U32("graphics/pokemon/mareanie/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Mareanie[] = INCBIN_U16("graphics/pokemon/mareanie/shiny.gbapal"); const u8 gMonIcon_Mareanie[] = INCBIN_U8("graphics/pokemon/mareanie/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Mareanie[] = INCBIN_U8("graphics/pokemon/mareanie/footprint.1bpp"); @@ -21329,15 +21329,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Mareanie[] = INCBIN_U16("graphics/pokemon/mareanie/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Mareanie[] = INCBIN_U16("graphics/pokemon/mareanie/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Toxapex[] = INCBIN_U16("graphics/pokemon/toxapex/normal.gbapal"); const u32 gMonBackPic_Toxapex[] = INCBIN_U32("graphics/pokemon/toxapex/back.4bpp.lz"); - const u32 gMonShinyPalette_Toxapex[] = INCBIN_U32("graphics/pokemon/toxapex/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Toxapex[] = INCBIN_U16("graphics/pokemon/toxapex/shiny.gbapal"); const u8 gMonIcon_Toxapex[] = INCBIN_U8("graphics/pokemon/toxapex/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Toxapex[] = INCBIN_U8("graphics/pokemon/toxapex/footprint.1bpp"); @@ -21345,17 +21345,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Toxapex[] = INCBIN_U16("graphics/pokemon/toxapex/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Toxapex[] = INCBIN_U16("graphics/pokemon/toxapex/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_MAREANIE #if P_FAMILY_MUDBRAY const u32 gMonFrontPic_Mudbray[] = INCBIN_U32("graphics/pokemon/mudbray/front.4bpp.lz"); - const u32 gMonPalette_Mudbray[] = INCBIN_U32("graphics/pokemon/mudbray/normal.gbapal.lz"); + const u16 gMonPalette_Mudbray[] = INCBIN_U16("graphics/pokemon/mudbray/normal.gbapal"); const u32 gMonBackPic_Mudbray[] = INCBIN_U32("graphics/pokemon/mudbray/back.4bpp.lz"); - const u32 gMonShinyPalette_Mudbray[] = INCBIN_U32("graphics/pokemon/mudbray/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Mudbray[] = INCBIN_U16("graphics/pokemon/mudbray/shiny.gbapal"); const u8 gMonIcon_Mudbray[] = INCBIN_U8("graphics/pokemon/mudbray/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Mudbray[] = INCBIN_U8("graphics/pokemon/mudbray/footprint.1bpp"); @@ -21363,15 +21363,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Mudbray[] = INCBIN_U16("graphics/pokemon/mudbray/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Mudbray[] = INCBIN_U16("graphics/pokemon/mudbray/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Mudsdale[] = INCBIN_U16("graphics/pokemon/mudsdale/normal.gbapal"); const u32 gMonBackPic_Mudsdale[] = INCBIN_U32("graphics/pokemon/mudsdale/back.4bpp.lz"); - const u32 gMonShinyPalette_Mudsdale[] = INCBIN_U32("graphics/pokemon/mudsdale/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Mudsdale[] = INCBIN_U16("graphics/pokemon/mudsdale/shiny.gbapal"); const u8 gMonIcon_Mudsdale[] = INCBIN_U8("graphics/pokemon/mudsdale/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Mudsdale[] = INCBIN_U8("graphics/pokemon/mudsdale/footprint.1bpp"); @@ -21379,17 +21379,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Mudsdale[] = INCBIN_U16("graphics/pokemon/mudsdale/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Mudsdale[] = INCBIN_U16("graphics/pokemon/mudsdale/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_MUDBRAY #if P_FAMILY_DEWPIDER const u32 gMonFrontPic_Dewpider[] = INCBIN_U32("graphics/pokemon/dewpider/anim_front.4bpp.lz"); - const u32 gMonPalette_Dewpider[] = INCBIN_U32("graphics/pokemon/dewpider/normal.gbapal.lz"); + const u16 gMonPalette_Dewpider[] = INCBIN_U16("graphics/pokemon/dewpider/normal.gbapal"); const u32 gMonBackPic_Dewpider[] = INCBIN_U32("graphics/pokemon/dewpider/back.4bpp.lz"); - const u32 gMonShinyPalette_Dewpider[] = INCBIN_U32("graphics/pokemon/dewpider/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Dewpider[] = INCBIN_U16("graphics/pokemon/dewpider/shiny.gbapal"); const u8 gMonIcon_Dewpider[] = INCBIN_U8("graphics/pokemon/dewpider/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Dewpider[] = INCBIN_U8("graphics/pokemon/dewpider/footprint.1bpp"); @@ -21397,15 +21397,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Dewpider[] = INCBIN_U16("graphics/pokemon/dewpider/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Dewpider[] = INCBIN_U16("graphics/pokemon/dewpider/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Araquanid[] = INCBIN_U16("graphics/pokemon/araquanid/normal.gbapal"); const u32 gMonBackPic_Araquanid[] = INCBIN_U32("graphics/pokemon/araquanid/back.4bpp.lz"); - const u32 gMonShinyPalette_Araquanid[] = INCBIN_U32("graphics/pokemon/araquanid/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Araquanid[] = INCBIN_U16("graphics/pokemon/araquanid/shiny.gbapal"); const u8 gMonIcon_Araquanid[] = INCBIN_U8("graphics/pokemon/araquanid/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Araquanid[] = INCBIN_U8("graphics/pokemon/araquanid/footprint.1bpp"); @@ -21413,17 +21413,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Araquanid[] = INCBIN_U16("graphics/pokemon/araquanid/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Araquanid[] = INCBIN_U16("graphics/pokemon/araquanid/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_DEWPIDER #if P_FAMILY_FOMANTIS const u32 gMonFrontPic_Fomantis[] = INCBIN_U32("graphics/pokemon/fomantis/front.4bpp.lz"); - const u32 gMonPalette_Fomantis[] = INCBIN_U32("graphics/pokemon/fomantis/normal.gbapal.lz"); + const u16 gMonPalette_Fomantis[] = INCBIN_U16("graphics/pokemon/fomantis/normal.gbapal"); const u32 gMonBackPic_Fomantis[] = INCBIN_U32("graphics/pokemon/fomantis/back.4bpp.lz"); - const u32 gMonShinyPalette_Fomantis[] = INCBIN_U32("graphics/pokemon/fomantis/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Fomantis[] = INCBIN_U16("graphics/pokemon/fomantis/shiny.gbapal"); const u8 gMonIcon_Fomantis[] = INCBIN_U8("graphics/pokemon/fomantis/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Fomantis[] = INCBIN_U8("graphics/pokemon/fomantis/footprint.1bpp"); @@ -21431,15 +21431,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Fomantis[] = INCBIN_U16("graphics/pokemon/fomantis/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Fomantis[] = INCBIN_U16("graphics/pokemon/fomantis/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Lurantis[] = INCBIN_U32("graphics/pokemon/lurantis/anim_front.4bpp.lz"); - const u32 gMonPalette_Lurantis[] = INCBIN_U32("graphics/pokemon/lurantis/normal.gbapal.lz"); + const u16 gMonPalette_Lurantis[] = INCBIN_U16("graphics/pokemon/lurantis/normal.gbapal"); const u32 gMonBackPic_Lurantis[] = INCBIN_U32("graphics/pokemon/lurantis/back.4bpp.lz"); - const u32 gMonShinyPalette_Lurantis[] = INCBIN_U32("graphics/pokemon/lurantis/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Lurantis[] = INCBIN_U16("graphics/pokemon/lurantis/shiny.gbapal"); const u8 gMonIcon_Lurantis[] = INCBIN_U8("graphics/pokemon/lurantis/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Lurantis[] = INCBIN_U8("graphics/pokemon/lurantis/footprint.1bpp"); @@ -21447,17 +21447,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Lurantis[] = INCBIN_U16("graphics/pokemon/lurantis/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Lurantis[] = INCBIN_U16("graphics/pokemon/lurantis/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_FOMANTIS #if P_FAMILY_MORELULL const u32 gMonFrontPic_Morelull[] = INCBIN_U32("graphics/pokemon/morelull/front.4bpp.lz"); - const u32 gMonPalette_Morelull[] = INCBIN_U32("graphics/pokemon/morelull/normal.gbapal.lz"); + const u16 gMonPalette_Morelull[] = INCBIN_U16("graphics/pokemon/morelull/normal.gbapal"); const u32 gMonBackPic_Morelull[] = INCBIN_U32("graphics/pokemon/morelull/back.4bpp.lz"); - const u32 gMonShinyPalette_Morelull[] = INCBIN_U32("graphics/pokemon/morelull/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Morelull[] = INCBIN_U16("graphics/pokemon/morelull/shiny.gbapal"); const u8 gMonIcon_Morelull[] = INCBIN_U8("graphics/pokemon/morelull/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Morelull[] = INCBIN_U8("graphics/pokemon/morelull/footprint.1bpp"); @@ -21465,15 +21465,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Morelull[] = INCBIN_U16("graphics/pokemon/morelull/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Morelull[] = INCBIN_U16("graphics/pokemon/morelull/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Shiinotic[] = INCBIN_U16("graphics/pokemon/shiinotic/normal.gbapal"); const u32 gMonBackPic_Shiinotic[] = INCBIN_U32("graphics/pokemon/shiinotic/back.4bpp.lz"); - const u32 gMonShinyPalette_Shiinotic[] = INCBIN_U32("graphics/pokemon/shiinotic/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Shiinotic[] = INCBIN_U16("graphics/pokemon/shiinotic/shiny.gbapal"); const u8 gMonIcon_Shiinotic[] = INCBIN_U8("graphics/pokemon/shiinotic/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Shiinotic[] = INCBIN_U8("graphics/pokemon/shiinotic/footprint.1bpp"); @@ -21481,17 +21481,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Shiinotic[] = INCBIN_U16("graphics/pokemon/shiinotic/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Shiinotic[] = INCBIN_U16("graphics/pokemon/shiinotic/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_MORELULL #if P_FAMILY_SALANDIT const u32 gMonFrontPic_Salandit[] = INCBIN_U32("graphics/pokemon/salandit/anim_front.4bpp.lz"); - const u32 gMonPalette_Salandit[] = INCBIN_U32("graphics/pokemon/salandit/normal.gbapal.lz"); + const u16 gMonPalette_Salandit[] = INCBIN_U16("graphics/pokemon/salandit/normal.gbapal"); const u32 gMonBackPic_Salandit[] = INCBIN_U32("graphics/pokemon/salandit/back.4bpp.lz"); - const u32 gMonShinyPalette_Salandit[] = INCBIN_U32("graphics/pokemon/salandit/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Salandit[] = INCBIN_U16("graphics/pokemon/salandit/shiny.gbapal"); const u8 gMonIcon_Salandit[] = INCBIN_U8("graphics/pokemon/salandit/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Salandit[] = INCBIN_U8("graphics/pokemon/salandit/footprint.1bpp"); @@ -21499,15 +21499,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Salandit[] = INCBIN_U16("graphics/pokemon/salandit/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Salandit[] = INCBIN_U16("graphics/pokemon/salandit/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Salazzle[] = INCBIN_U16("graphics/pokemon/salazzle/normal.gbapal"); const u32 gMonBackPic_Salazzle[] = INCBIN_U32("graphics/pokemon/salazzle/back.4bpp.lz"); - const u32 gMonShinyPalette_Salazzle[] = INCBIN_U32("graphics/pokemon/salazzle/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Salazzle[] = INCBIN_U16("graphics/pokemon/salazzle/shiny.gbapal"); const u8 gMonIcon_Salazzle[] = INCBIN_U8("graphics/pokemon/salazzle/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Salazzle[] = INCBIN_U8("graphics/pokemon/salazzle/footprint.1bpp"); @@ -21515,17 +21515,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Salazzle[] = INCBIN_U16("graphics/pokemon/salazzle/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Salazzle[] = INCBIN_U16("graphics/pokemon/salazzle/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SALANDIT #if P_FAMILY_STUFFUL const u32 gMonFrontPic_Stufful[] = INCBIN_U32("graphics/pokemon/stufful/anim_front.4bpp.lz"); - const u32 gMonPalette_Stufful[] = INCBIN_U32("graphics/pokemon/stufful/normal.gbapal.lz"); + const u16 gMonPalette_Stufful[] = INCBIN_U16("graphics/pokemon/stufful/normal.gbapal"); const u32 gMonBackPic_Stufful[] = INCBIN_U32("graphics/pokemon/stufful/back.4bpp.lz"); - const u32 gMonShinyPalette_Stufful[] = INCBIN_U32("graphics/pokemon/stufful/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Stufful[] = INCBIN_U16("graphics/pokemon/stufful/shiny.gbapal"); const u8 gMonIcon_Stufful[] = INCBIN_U8("graphics/pokemon/stufful/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Stufful[] = INCBIN_U8("graphics/pokemon/stufful/footprint.1bpp"); @@ -21533,15 +21533,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Stufful[] = INCBIN_U16("graphics/pokemon/stufful/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Stufful[] = INCBIN_U16("graphics/pokemon/stufful/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Bewear[] = INCBIN_U16("graphics/pokemon/bewear/normal.gbapal"); const u32 gMonBackPic_Bewear[] = INCBIN_U32("graphics/pokemon/bewear/back.4bpp.lz"); - const u32 gMonShinyPalette_Bewear[] = INCBIN_U32("graphics/pokemon/bewear/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Bewear[] = INCBIN_U16("graphics/pokemon/bewear/shiny.gbapal"); const u8 gMonIcon_Bewear[] = INCBIN_U8("graphics/pokemon/bewear/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Bewear[] = INCBIN_U8("graphics/pokemon/bewear/footprint.1bpp"); @@ -21549,17 +21549,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Bewear[] = INCBIN_U16("graphics/pokemon/bewear/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Bewear[] = INCBIN_U16("graphics/pokemon/bewear/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_STUFFUL #if P_FAMILY_BOUNSWEET const u32 gMonFrontPic_Bounsweet[] = INCBIN_U32("graphics/pokemon/bounsweet/front.4bpp.lz"); - const u32 gMonPalette_Bounsweet[] = INCBIN_U32("graphics/pokemon/bounsweet/normal.gbapal.lz"); + const u16 gMonPalette_Bounsweet[] = INCBIN_U16("graphics/pokemon/bounsweet/normal.gbapal"); const u32 gMonBackPic_Bounsweet[] = INCBIN_U32("graphics/pokemon/bounsweet/back.4bpp.lz"); - const u32 gMonShinyPalette_Bounsweet[] = INCBIN_U32("graphics/pokemon/bounsweet/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Bounsweet[] = INCBIN_U16("graphics/pokemon/bounsweet/shiny.gbapal"); const u8 gMonIcon_Bounsweet[] = INCBIN_U8("graphics/pokemon/bounsweet/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Bounsweet[] = INCBIN_U8("graphics/pokemon/bounsweet/footprint.1bpp"); @@ -21567,15 +21567,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Bounsweet[] = INCBIN_U16("graphics/pokemon/bounsweet/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Bounsweet[] = INCBIN_U16("graphics/pokemon/bounsweet/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Steenee[] = INCBIN_U16("graphics/pokemon/steenee/normal.gbapal"); const u32 gMonBackPic_Steenee[] = INCBIN_U32("graphics/pokemon/steenee/back.4bpp.lz"); - const u32 gMonShinyPalette_Steenee[] = INCBIN_U32("graphics/pokemon/steenee/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Steenee[] = INCBIN_U16("graphics/pokemon/steenee/shiny.gbapal"); const u8 gMonIcon_Steenee[] = INCBIN_U8("graphics/pokemon/steenee/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Steenee[] = INCBIN_U8("graphics/pokemon/steenee/footprint.1bpp"); @@ -21583,15 +21583,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Steenee[] = INCBIN_U16("graphics/pokemon/steenee/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Steenee[] = INCBIN_U16("graphics/pokemon/steenee/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Tsareena[] = INCBIN_U16("graphics/pokemon/tsareena/normal.gbapal"); const u32 gMonBackPic_Tsareena[] = INCBIN_U32("graphics/pokemon/tsareena/back.4bpp.lz"); - const u32 gMonShinyPalette_Tsareena[] = INCBIN_U32("graphics/pokemon/tsareena/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Tsareena[] = INCBIN_U16("graphics/pokemon/tsareena/shiny.gbapal"); const u8 gMonIcon_Tsareena[] = INCBIN_U8("graphics/pokemon/tsareena/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Tsareena[] = INCBIN_U8("graphics/pokemon/tsareena/footprint.1bpp"); @@ -21599,17 +21599,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Tsareena[] = INCBIN_U16("graphics/pokemon/tsareena/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Tsareena[] = INCBIN_U16("graphics/pokemon/tsareena/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_BOUNSWEET #if P_FAMILY_COMFEY const u32 gMonFrontPic_Comfey[] = INCBIN_U32("graphics/pokemon/comfey/front.4bpp.lz"); - const u32 gMonPalette_Comfey[] = INCBIN_U32("graphics/pokemon/comfey/normal.gbapal.lz"); + const u16 gMonPalette_Comfey[] = INCBIN_U16("graphics/pokemon/comfey/normal.gbapal"); const u32 gMonBackPic_Comfey[] = INCBIN_U32("graphics/pokemon/comfey/back.4bpp.lz"); - const u32 gMonShinyPalette_Comfey[] = INCBIN_U32("graphics/pokemon/comfey/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Comfey[] = INCBIN_U16("graphics/pokemon/comfey/shiny.gbapal"); const u8 gMonIcon_Comfey[] = INCBIN_U8("graphics/pokemon/comfey/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Comfey[] = INCBIN_U8("graphics/pokemon/comfey/footprint.1bpp"); @@ -21617,17 +21617,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Comfey[] = INCBIN_U16("graphics/pokemon/comfey/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Comfey[] = INCBIN_U16("graphics/pokemon/comfey/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_COMFEY #if P_FAMILY_ORANGURU const u32 gMonFrontPic_Oranguru[] = INCBIN_U32("graphics/pokemon/oranguru/anim_front.4bpp.lz"); - const u32 gMonPalette_Oranguru[] = INCBIN_U32("graphics/pokemon/oranguru/normal.gbapal.lz"); + const u16 gMonPalette_Oranguru[] = INCBIN_U16("graphics/pokemon/oranguru/normal.gbapal"); const u32 gMonBackPic_Oranguru[] = INCBIN_U32("graphics/pokemon/oranguru/back.4bpp.lz"); - const u32 gMonShinyPalette_Oranguru[] = INCBIN_U32("graphics/pokemon/oranguru/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Oranguru[] = INCBIN_U16("graphics/pokemon/oranguru/shiny.gbapal"); const u8 gMonIcon_Oranguru[] = INCBIN_U8("graphics/pokemon/oranguru/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Oranguru[] = INCBIN_U8("graphics/pokemon/oranguru/footprint.1bpp"); @@ -21635,17 +21635,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Oranguru[] = INCBIN_U16("graphics/pokemon/oranguru/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Oranguru[] = INCBIN_U16("graphics/pokemon/oranguru/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_ORANGURU #if P_FAMILY_PASSIMIAN const u32 gMonFrontPic_Passimian[] = INCBIN_U32("graphics/pokemon/passimian/anim_front.4bpp.lz"); - const u32 gMonPalette_Passimian[] = INCBIN_U32("graphics/pokemon/passimian/normal.gbapal.lz"); + const u16 gMonPalette_Passimian[] = INCBIN_U16("graphics/pokemon/passimian/normal.gbapal"); const u32 gMonBackPic_Passimian[] = INCBIN_U32("graphics/pokemon/passimian/back.4bpp.lz"); - const u32 gMonShinyPalette_Passimian[] = INCBIN_U32("graphics/pokemon/passimian/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Passimian[] = INCBIN_U16("graphics/pokemon/passimian/shiny.gbapal"); const u8 gMonIcon_Passimian[] = INCBIN_U8("graphics/pokemon/passimian/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Passimian[] = INCBIN_U8("graphics/pokemon/passimian/footprint.1bpp"); @@ -21653,17 +21653,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Passimian[] = INCBIN_U16("graphics/pokemon/passimian/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Passimian[] = INCBIN_U16("graphics/pokemon/passimian/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_PASSIMIAN #if P_FAMILY_WIMPOD const u32 gMonFrontPic_Wimpod[] = INCBIN_U32("graphics/pokemon/wimpod/anim_front.4bpp.lz"); - const u32 gMonPalette_Wimpod[] = INCBIN_U32("graphics/pokemon/wimpod/normal.gbapal.lz"); + const u16 gMonPalette_Wimpod[] = INCBIN_U16("graphics/pokemon/wimpod/normal.gbapal"); const u32 gMonBackPic_Wimpod[] = INCBIN_U32("graphics/pokemon/wimpod/back.4bpp.lz"); - const u32 gMonShinyPalette_Wimpod[] = INCBIN_U32("graphics/pokemon/wimpod/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Wimpod[] = INCBIN_U16("graphics/pokemon/wimpod/shiny.gbapal"); const u8 gMonIcon_Wimpod[] = INCBIN_U8("graphics/pokemon/wimpod/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Wimpod[] = INCBIN_U8("graphics/pokemon/wimpod/footprint.1bpp"); @@ -21671,15 +21671,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Wimpod[] = INCBIN_U16("graphics/pokemon/wimpod/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Wimpod[] = INCBIN_U16("graphics/pokemon/wimpod/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Golisopod[] = INCBIN_U16("graphics/pokemon/golisopod/normal.gbapal"); const u32 gMonBackPic_Golisopod[] = INCBIN_U32("graphics/pokemon/golisopod/back.4bpp.lz"); - const u32 gMonShinyPalette_Golisopod[] = INCBIN_U32("graphics/pokemon/golisopod/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Golisopod[] = INCBIN_U16("graphics/pokemon/golisopod/shiny.gbapal"); const u8 gMonIcon_Golisopod[] = INCBIN_U8("graphics/pokemon/golisopod/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Golisopod[] = INCBIN_U8("graphics/pokemon/golisopod/footprint.1bpp"); @@ -21687,17 +21687,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Golisopod[] = INCBIN_U16("graphics/pokemon/golisopod/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Golisopod[] = INCBIN_U16("graphics/pokemon/golisopod/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_WIMPOD #if P_FAMILY_SANDYGAST const u32 gMonFrontPic_Sandygast[] = INCBIN_U32("graphics/pokemon/sandygast/front.4bpp.lz"); - const u32 gMonPalette_Sandygast[] = INCBIN_U32("graphics/pokemon/sandygast/normal.gbapal.lz"); + const u16 gMonPalette_Sandygast[] = INCBIN_U16("graphics/pokemon/sandygast/normal.gbapal"); const u32 gMonBackPic_Sandygast[] = INCBIN_U32("graphics/pokemon/sandygast/back.4bpp.lz"); - const u32 gMonShinyPalette_Sandygast[] = INCBIN_U32("graphics/pokemon/sandygast/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Sandygast[] = INCBIN_U16("graphics/pokemon/sandygast/shiny.gbapal"); const u8 gMonIcon_Sandygast[] = INCBIN_U8("graphics/pokemon/sandygast/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Sandygast[] = INCBIN_U8("graphics/pokemon/sandygast/footprint.1bpp"); @@ -21705,15 +21705,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Sandygast[] = INCBIN_U16("graphics/pokemon/sandygast/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Sandygast[] = INCBIN_U16("graphics/pokemon/sandygast/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Palossand[] = INCBIN_U16("graphics/pokemon/palossand/normal.gbapal"); const u32 gMonBackPic_Palossand[] = INCBIN_U32("graphics/pokemon/palossand/back.4bpp.lz"); - const u32 gMonShinyPalette_Palossand[] = INCBIN_U32("graphics/pokemon/palossand/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Palossand[] = INCBIN_U16("graphics/pokemon/palossand/shiny.gbapal"); const u8 gMonIcon_Palossand[] = INCBIN_U8("graphics/pokemon/palossand/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Palossand[] = INCBIN_U8("graphics/pokemon/palossand/footprint.1bpp"); @@ -21721,17 +21721,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Palossand[] = INCBIN_U16("graphics/pokemon/palossand/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Palossand[] = INCBIN_U16("graphics/pokemon/palossand/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SANDYGAST #if P_FAMILY_PYUKUMUKU const u32 gMonFrontPic_Pyukumuku[] = INCBIN_U32("graphics/pokemon/pyukumuku/anim_front.4bpp.lz"); - const u32 gMonPalette_Pyukumuku[] = INCBIN_U32("graphics/pokemon/pyukumuku/normal.gbapal.lz"); + const u16 gMonPalette_Pyukumuku[] = INCBIN_U16("graphics/pokemon/pyukumuku/normal.gbapal"); const u32 gMonBackPic_Pyukumuku[] = INCBIN_U32("graphics/pokemon/pyukumuku/back.4bpp.lz"); - const u32 gMonShinyPalette_Pyukumuku[] = INCBIN_U32("graphics/pokemon/pyukumuku/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Pyukumuku[] = INCBIN_U16("graphics/pokemon/pyukumuku/shiny.gbapal"); const u8 gMonIcon_Pyukumuku[] = INCBIN_U8("graphics/pokemon/pyukumuku/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Pyukumuku[] = INCBIN_U8("graphics/pokemon/pyukumuku/footprint.1bpp"); @@ -21739,17 +21739,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Pyukumuku[] = INCBIN_U16("graphics/pokemon/pyukumuku/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Pyukumuku[] = INCBIN_U16("graphics/pokemon/pyukumuku/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_PYUKUMUKU #if P_FAMILY_TYPE_NULL const u32 gMonFrontPic_TypeNull[] = INCBIN_U32("graphics/pokemon/type_null/front.4bpp.lz"); - const u32 gMonPalette_TypeNull[] = INCBIN_U32("graphics/pokemon/type_null/normal.gbapal.lz"); + const u16 gMonPalette_TypeNull[] = INCBIN_U16("graphics/pokemon/type_null/normal.gbapal"); const u32 gMonBackPic_TypeNull[] = INCBIN_U32("graphics/pokemon/type_null/back.4bpp.lz"); - const u32 gMonShinyPalette_TypeNull[] = INCBIN_U32("graphics/pokemon/type_null/shiny.gbapal.lz"); + const u16 gMonShinyPalette_TypeNull[] = INCBIN_U16("graphics/pokemon/type_null/shiny.gbapal"); const u8 gMonIcon_TypeNull[] = INCBIN_U8("graphics/pokemon/type_null/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Type_Null[] = INCBIN_U8("graphics/pokemon/type_null/footprint.1bpp"); @@ -21757,8 +21757,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_TypeNull[] = INCBIN_U16("graphics/pokemon/type_null/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_TypeNull[] = INCBIN_U16("graphics/pokemon/type_null/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -21771,71 +21771,71 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Silvally[] = INCBIN_U16("graphics/pokemon/silvally/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Silvally[] = INCBIN_U16("graphics/pokemon/silvally/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_SilvallyNormal[] = INCBIN_U16("graphics/pokemon/silvally/normal.gbapal"); + const u16 gMonShinyPalette_SilvallyNormal[] = INCBIN_U16("graphics/pokemon/silvally/shiny.gbapal"); - const u32 gMonPalette_SilvallyFighting[] = INCBIN_U32("graphics/pokemon/silvally/fighting/normal.gbapal.lz"); - const u32 gMonShinyPalette_SilvallyFighting[] = INCBIN_U32("graphics/pokemon/silvally/fighting/shiny.gbapal.lz"); + const u16 gMonPalette_SilvallyFighting[] = INCBIN_U16("graphics/pokemon/silvally/fighting/normal.gbapal"); + const u16 gMonShinyPalette_SilvallyFighting[] = INCBIN_U16("graphics/pokemon/silvally/fighting/shiny.gbapal"); - const u32 gMonPalette_SilvallyFlying[] = INCBIN_U32("graphics/pokemon/silvally/flying/normal.gbapal.lz"); - const u32 gMonShinyPalette_SilvallyFlying[] = INCBIN_U32("graphics/pokemon/silvally/flying/shiny.gbapal.lz"); + const u16 gMonPalette_SilvallyFlying[] = INCBIN_U16("graphics/pokemon/silvally/flying/normal.gbapal"); + const u16 gMonShinyPalette_SilvallyFlying[] = INCBIN_U16("graphics/pokemon/silvally/flying/shiny.gbapal"); - const u32 gMonPalette_SilvallyPoison[] = INCBIN_U32("graphics/pokemon/silvally/poison/normal.gbapal.lz"); - const u32 gMonShinyPalette_SilvallyPoison[] = INCBIN_U32("graphics/pokemon/silvally/poison/shiny.gbapal.lz"); + const u16 gMonPalette_SilvallyPoison[] = INCBIN_U16("graphics/pokemon/silvally/poison/normal.gbapal"); + const u16 gMonShinyPalette_SilvallyPoison[] = INCBIN_U16("graphics/pokemon/silvally/poison/shiny.gbapal"); - const u32 gMonPalette_SilvallyGround[] = INCBIN_U32("graphics/pokemon/silvally/ground/normal.gbapal.lz"); - const u32 gMonShinyPalette_SilvallyGround[] = INCBIN_U32("graphics/pokemon/silvally/ground/shiny.gbapal.lz"); + const u16 gMonPalette_SilvallyGround[] = INCBIN_U16("graphics/pokemon/silvally/ground/normal.gbapal"); + const u16 gMonShinyPalette_SilvallyGround[] = INCBIN_U16("graphics/pokemon/silvally/ground/shiny.gbapal"); - const u32 gMonPalette_SilvallyRock[] = INCBIN_U32("graphics/pokemon/silvally/rock/normal.gbapal.lz"); - const u32 gMonShinyPalette_SilvallyRock[] = INCBIN_U32("graphics/pokemon/silvally/rock/shiny.gbapal.lz"); + const u16 gMonPalette_SilvallyRock[] = INCBIN_U16("graphics/pokemon/silvally/rock/normal.gbapal"); + const u16 gMonShinyPalette_SilvallyRock[] = INCBIN_U16("graphics/pokemon/silvally/rock/shiny.gbapal"); - const u32 gMonPalette_SilvallyBug[] = INCBIN_U32("graphics/pokemon/silvally/bug/normal.gbapal.lz"); - const u32 gMonShinyPalette_SilvallyBug[] = INCBIN_U32("graphics/pokemon/silvally/bug/shiny.gbapal.lz"); + const u16 gMonPalette_SilvallyBug[] = INCBIN_U16("graphics/pokemon/silvally/bug/normal.gbapal"); + const u16 gMonShinyPalette_SilvallyBug[] = INCBIN_U16("graphics/pokemon/silvally/bug/shiny.gbapal"); - const u32 gMonPalette_SilvallyGhost[] = INCBIN_U32("graphics/pokemon/silvally/ghost/normal.gbapal.lz"); - const u32 gMonShinyPalette_SilvallyGhost[] = INCBIN_U32("graphics/pokemon/silvally/ghost/shiny.gbapal.lz"); + const u16 gMonPalette_SilvallyGhost[] = INCBIN_U16("graphics/pokemon/silvally/ghost/normal.gbapal"); + const u16 gMonShinyPalette_SilvallyGhost[] = INCBIN_U16("graphics/pokemon/silvally/ghost/shiny.gbapal"); - const u32 gMonPalette_SilvallySteel[] = INCBIN_U32("graphics/pokemon/silvally/steel/normal.gbapal.lz"); - const u32 gMonShinyPalette_SilvallySteel[] = INCBIN_U32("graphics/pokemon/silvally/steel/shiny.gbapal.lz"); + const u16 gMonPalette_SilvallySteel[] = INCBIN_U16("graphics/pokemon/silvally/steel/normal.gbapal"); + const u16 gMonShinyPalette_SilvallySteel[] = INCBIN_U16("graphics/pokemon/silvally/steel/shiny.gbapal"); - const u32 gMonPalette_SilvallyFire[] = INCBIN_U32("graphics/pokemon/silvally/fire/normal.gbapal.lz"); - const u32 gMonShinyPalette_SilvallyFire[] = INCBIN_U32("graphics/pokemon/silvally/fire/shiny.gbapal.lz"); + const u16 gMonPalette_SilvallyFire[] = INCBIN_U16("graphics/pokemon/silvally/fire/normal.gbapal"); + const u16 gMonShinyPalette_SilvallyFire[] = INCBIN_U16("graphics/pokemon/silvally/fire/shiny.gbapal"); - const u32 gMonPalette_SilvallyWater[] = INCBIN_U32("graphics/pokemon/silvally/water/normal.gbapal.lz"); - const u32 gMonShinyPalette_SilvallyWater[] = INCBIN_U32("graphics/pokemon/silvally/water/shiny.gbapal.lz"); + const u16 gMonPalette_SilvallyWater[] = INCBIN_U16("graphics/pokemon/silvally/water/normal.gbapal"); + const u16 gMonShinyPalette_SilvallyWater[] = INCBIN_U16("graphics/pokemon/silvally/water/shiny.gbapal"); - const u32 gMonPalette_SilvallyGrass[] = INCBIN_U32("graphics/pokemon/silvally/grass/normal.gbapal.lz"); - const u32 gMonShinyPalette_SilvallyGrass[] = INCBIN_U32("graphics/pokemon/silvally/grass/shiny.gbapal.lz"); + const u16 gMonPalette_SilvallyGrass[] = INCBIN_U16("graphics/pokemon/silvally/grass/normal.gbapal"); + const u16 gMonShinyPalette_SilvallyGrass[] = INCBIN_U16("graphics/pokemon/silvally/grass/shiny.gbapal"); - const u32 gMonPalette_SilvallyElectric[] = INCBIN_U32("graphics/pokemon/silvally/electric/normal.gbapal.lz"); - const u32 gMonShinyPalette_SilvallyElectric[] = INCBIN_U32("graphics/pokemon/silvally/electric/shiny.gbapal.lz"); + const u16 gMonPalette_SilvallyElectric[] = INCBIN_U16("graphics/pokemon/silvally/electric/normal.gbapal"); + const u16 gMonShinyPalette_SilvallyElectric[] = INCBIN_U16("graphics/pokemon/silvally/electric/shiny.gbapal"); - const u32 gMonPalette_SilvallyPsychic[] = INCBIN_U32("graphics/pokemon/silvally/psychic/normal.gbapal.lz"); - const u32 gMonShinyPalette_SilvallyPsychic[] = INCBIN_U32("graphics/pokemon/silvally/psychic/shiny.gbapal.lz"); + const u16 gMonPalette_SilvallyPsychic[] = INCBIN_U16("graphics/pokemon/silvally/psychic/normal.gbapal"); + const u16 gMonShinyPalette_SilvallyPsychic[] = INCBIN_U16("graphics/pokemon/silvally/psychic/shiny.gbapal"); - const u32 gMonPalette_SilvallyIce[] = INCBIN_U32("graphics/pokemon/silvally/ice/normal.gbapal.lz"); - const u32 gMonShinyPalette_SilvallyIce[] = INCBIN_U32("graphics/pokemon/silvally/ice/shiny.gbapal.lz"); + const u16 gMonPalette_SilvallyIce[] = INCBIN_U16("graphics/pokemon/silvally/ice/normal.gbapal"); + const u16 gMonShinyPalette_SilvallyIce[] = INCBIN_U16("graphics/pokemon/silvally/ice/shiny.gbapal"); - const u32 gMonPalette_SilvallyDragon[] = INCBIN_U32("graphics/pokemon/silvally/dragon/normal.gbapal.lz"); - const u32 gMonShinyPalette_SilvallyDragon[] = INCBIN_U32("graphics/pokemon/silvally/dragon/shiny.gbapal.lz"); + const u16 gMonPalette_SilvallyDragon[] = INCBIN_U16("graphics/pokemon/silvally/dragon/normal.gbapal"); + const u16 gMonShinyPalette_SilvallyDragon[] = INCBIN_U16("graphics/pokemon/silvally/dragon/shiny.gbapal"); - const u32 gMonPalette_SilvallyDark[] = INCBIN_U32("graphics/pokemon/silvally/dark/normal.gbapal.lz"); - const u32 gMonShinyPalette_SilvallyDark[] = INCBIN_U32("graphics/pokemon/silvally/dark/shiny.gbapal.lz"); + const u16 gMonPalette_SilvallyDark[] = INCBIN_U16("graphics/pokemon/silvally/dark/normal.gbapal"); + const u16 gMonShinyPalette_SilvallyDark[] = INCBIN_U16("graphics/pokemon/silvally/dark/shiny.gbapal"); - const u32 gMonPalette_SilvallyFairy[] = INCBIN_U32("graphics/pokemon/silvally/fairy/normal.gbapal.lz"); - const u32 gMonShinyPalette_SilvallyFairy[] = INCBIN_U32("graphics/pokemon/silvally/fairy/shiny.gbapal.lz"); + const u16 gMonPalette_SilvallyFairy[] = INCBIN_U16("graphics/pokemon/silvally/fairy/normal.gbapal"); + const u16 gMonShinyPalette_SilvallyFairy[] = INCBIN_U16("graphics/pokemon/silvally/fairy/shiny.gbapal"); #endif //P_FAMILY_TYPE_NULL #if P_FAMILY_MINIOR const u32 gMonFrontPic_MiniorMeteor[] = INCBIN_U32("graphics/pokemon/minior/front.4bpp.lz"); - const u32 gMonPalette_MiniorMeteor[] = INCBIN_U32("graphics/pokemon/minior/normal.gbapal.lz"); + const u16 gMonPalette_MiniorMeteor[] = INCBIN_U16("graphics/pokemon/minior/normal.gbapal"); const u32 gMonBackPic_MiniorMeteor[] = INCBIN_U32("graphics/pokemon/minior/back.4bpp.lz"); - const u32 gMonShinyPalette_MiniorMeteor[] = INCBIN_U32("graphics/pokemon/minior/shiny.gbapal.lz"); + const u16 gMonShinyPalette_MiniorMeteor[] = INCBIN_U16("graphics/pokemon/minior/shiny.gbapal"); const u8 gMonIcon_MiniorMeteor[] = INCBIN_U8("graphics/pokemon/minior/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Minior[] = INCBIN_U8("graphics/pokemon/minior/footprint.1bpp"); @@ -21843,43 +21843,43 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gMonFrontPic_MiniorCore[] = INCBIN_U32("graphics/pokemon/minior/core/front.4bpp.lz"); const u32 gMonBackPic_MiniorCore[] = INCBIN_U32("graphics/pokemon/minior/core/back.4bpp.lz"); - const u32 gMonShinyPalette_MiniorCore[] = INCBIN_U32("graphics/pokemon/minior/core/shiny.gbapal.lz"); + const u16 gMonShinyPalette_MiniorCore[] = INCBIN_U16("graphics/pokemon/minior/core/shiny.gbapal"); - const u32 gMonPalette_MiniorCoreRed[] = INCBIN_U32("graphics/pokemon/minior/core/red/normal.gbapal.lz"); + const u16 gMonPalette_MiniorCoreRed[] = INCBIN_U16("graphics/pokemon/minior/core/red/normal.gbapal"); const u8 gMonIcon_MiniorCoreRed[] = INCBIN_U8("graphics/pokemon/minior/core/red/icon.4bpp"); - const u32 gMonPalette_MiniorCoreOrange[] = INCBIN_U32("graphics/pokemon/minior/core/orange/normal.gbapal.lz"); + const u16 gMonPalette_MiniorCoreOrange[] = INCBIN_U16("graphics/pokemon/minior/core/orange/normal.gbapal"); const u8 gMonIcon_MiniorCoreOrange[] = INCBIN_U8("graphics/pokemon/minior/core/orange/icon.4bpp"); - const u32 gMonPalette_MiniorCoreYellow[] = INCBIN_U32("graphics/pokemon/minior/core/yellow/normal.gbapal.lz"); + const u16 gMonPalette_MiniorCoreYellow[] = INCBIN_U16("graphics/pokemon/minior/core/yellow/normal.gbapal"); const u8 gMonIcon_MiniorCoreYellow[] = INCBIN_U8("graphics/pokemon/minior/core/yellow/icon.4bpp"); - const u32 gMonPalette_MiniorCoreGreen[] = INCBIN_U32("graphics/pokemon/minior/core/green/normal.gbapal.lz"); + const u16 gMonPalette_MiniorCoreGreen[] = INCBIN_U16("graphics/pokemon/minior/core/green/normal.gbapal"); const u8 gMonIcon_MiniorCoreGreen[] = INCBIN_U8("graphics/pokemon/minior/core/green/icon.4bpp"); - const u32 gMonPalette_MiniorCoreBlue[] = INCBIN_U32("graphics/pokemon/minior/core/blue/normal.gbapal.lz"); + const u16 gMonPalette_MiniorCoreBlue[] = INCBIN_U16("graphics/pokemon/minior/core/blue/normal.gbapal"); const u8 gMonIcon_MiniorCoreBlue[] = INCBIN_U8("graphics/pokemon/minior/core/blue/icon.4bpp"); - const u32 gMonPalette_MiniorCoreIndigo[] = INCBIN_U32("graphics/pokemon/minior/core/indigo/normal.gbapal.lz"); + const u16 gMonPalette_MiniorCoreIndigo[] = INCBIN_U16("graphics/pokemon/minior/core/indigo/normal.gbapal"); const u8 gMonIcon_MiniorCoreIndigo[] = INCBIN_U8("graphics/pokemon/minior/core/indigo/icon.4bpp"); - const u32 gMonPalette_MiniorCoreViolet[] = INCBIN_U32("graphics/pokemon/minior/core/violet/normal.gbapal.lz"); + const u16 gMonPalette_MiniorCoreViolet[] = INCBIN_U16("graphics/pokemon/minior/core/violet/normal.gbapal"); 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"); + const u16 gOverworldPalette_MiniorMeteor[] = INCBIN_U16("graphics/pokemon/minior/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_MiniorMeteor[] = INCBIN_U16("graphics/pokemon/minior/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_MINIOR #if P_FAMILY_KOMALA const u32 gMonFrontPic_Komala[] = INCBIN_U32("graphics/pokemon/komala/front.4bpp.lz"); - const u32 gMonPalette_Komala[] = INCBIN_U32("graphics/pokemon/komala/normal.gbapal.lz"); + const u16 gMonPalette_Komala[] = INCBIN_U16("graphics/pokemon/komala/normal.gbapal"); const u32 gMonBackPic_Komala[] = INCBIN_U32("graphics/pokemon/komala/back.4bpp.lz"); - const u32 gMonShinyPalette_Komala[] = INCBIN_U32("graphics/pokemon/komala/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Komala[] = INCBIN_U16("graphics/pokemon/komala/shiny.gbapal"); const u8 gMonIcon_Komala[] = INCBIN_U8("graphics/pokemon/komala/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Komala[] = INCBIN_U8("graphics/pokemon/komala/footprint.1bpp"); @@ -21887,17 +21887,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Komala[] = INCBIN_U16("graphics/pokemon/komala/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Komala[] = INCBIN_U16("graphics/pokemon/komala/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_KOMALA #if P_FAMILY_TURTONATOR const u32 gMonFrontPic_Turtonator[] = INCBIN_U32("graphics/pokemon/turtonator/anim_front.4bpp.lz"); - const u32 gMonPalette_Turtonator[] = INCBIN_U32("graphics/pokemon/turtonator/normal.gbapal.lz"); + const u16 gMonPalette_Turtonator[] = INCBIN_U16("graphics/pokemon/turtonator/normal.gbapal"); const u32 gMonBackPic_Turtonator[] = INCBIN_U32("graphics/pokemon/turtonator/back.4bpp.lz"); - const u32 gMonShinyPalette_Turtonator[] = INCBIN_U32("graphics/pokemon/turtonator/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Turtonator[] = INCBIN_U16("graphics/pokemon/turtonator/shiny.gbapal"); const u8 gMonIcon_Turtonator[] = INCBIN_U8("graphics/pokemon/turtonator/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Turtonator[] = INCBIN_U8("graphics/pokemon/turtonator/footprint.1bpp"); @@ -21905,17 +21905,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Turtonator[] = INCBIN_U16("graphics/pokemon/turtonator/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Turtonator[] = INCBIN_U16("graphics/pokemon/turtonator/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_TURTONATOR #if P_FAMILY_TOGEDEMARU const u32 gMonFrontPic_Togedemaru[] = INCBIN_U32("graphics/pokemon/togedemaru/anim_front.4bpp.lz"); - const u32 gMonPalette_Togedemaru[] = INCBIN_U32("graphics/pokemon/togedemaru/normal.gbapal.lz"); + const u16 gMonPalette_Togedemaru[] = INCBIN_U16("graphics/pokemon/togedemaru/normal.gbapal"); const u32 gMonBackPic_Togedemaru[] = INCBIN_U32("graphics/pokemon/togedemaru/back.4bpp.lz"); - const u32 gMonShinyPalette_Togedemaru[] = INCBIN_U32("graphics/pokemon/togedemaru/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Togedemaru[] = INCBIN_U16("graphics/pokemon/togedemaru/shiny.gbapal"); const u8 gMonIcon_Togedemaru[] = INCBIN_U8("graphics/pokemon/togedemaru/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Togedemaru[] = INCBIN_U8("graphics/pokemon/togedemaru/footprint.1bpp"); @@ -21923,17 +21923,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Togedemaru[] = INCBIN_U16("graphics/pokemon/togedemaru/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Togedemaru[] = INCBIN_U16("graphics/pokemon/togedemaru/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_TOGEDEMARU #if P_FAMILY_MIMIKYU const u32 gMonFrontPic_MimikyuDisguised[] = INCBIN_U32("graphics/pokemon/mimikyu/front.4bpp.lz"); - const u32 gMonPalette_MimikyuDisguised[] = INCBIN_U32("graphics/pokemon/mimikyu/normal.gbapal.lz"); + const u16 gMonPalette_MimikyuDisguised[] = INCBIN_U16("graphics/pokemon/mimikyu/normal.gbapal"); const u32 gMonBackPic_MimikyuDisguised[] = INCBIN_U32("graphics/pokemon/mimikyu/back.4bpp.lz"); - const u32 gMonShinyPalette_MimikyuDisguised[] = INCBIN_U32("graphics/pokemon/mimikyu/shiny.gbapal.lz"); + const u16 gMonShinyPalette_MimikyuDisguised[] = INCBIN_U16("graphics/pokemon/mimikyu/shiny.gbapal"); const u8 gMonIcon_MimikyuDisguised[] = INCBIN_U8("graphics/pokemon/mimikyu/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Mimikyu[] = INCBIN_U8("graphics/pokemon/mimikyu/footprint.1bpp"); @@ -21941,30 +21941,30 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_MimikyuDisguised[] = INCBIN_U16("graphics/pokemon/mimikyu/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_MimikyuDisguised[] = INCBIN_U16("graphics/pokemon/mimikyu/overworld_shiny.gbapal"); #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 u16 gMonPalette_MimikyuBusted[] = INCBIN_U16("graphics/pokemon/mimikyu/busted/normal.gbapal"); 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 u16 gMonShinyPalette_MimikyuBusted[] = INCBIN_U16("graphics/pokemon/mimikyu/busted/shiny.gbapal"); 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"); + // const u16 gOverworldPalette_MimikyuBusted[] = INCBIN_U16("graphics/pokemon/mimikyu/busted/overworld_normal.gbapal"); + // const u16 gShinyOverworldPalette_MimikyuBusted[] = INCBIN_U16("graphics/pokemon/mimikyu/busted/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_MIMIKYU #if P_FAMILY_BRUXISH const u32 gMonFrontPic_Bruxish[] = INCBIN_U32("graphics/pokemon/bruxish/front.4bpp.lz"); - const u32 gMonPalette_Bruxish[] = INCBIN_U32("graphics/pokemon/bruxish/normal.gbapal.lz"); + const u16 gMonPalette_Bruxish[] = INCBIN_U16("graphics/pokemon/bruxish/normal.gbapal"); const u32 gMonBackPic_Bruxish[] = INCBIN_U32("graphics/pokemon/bruxish/back.4bpp.lz"); - const u32 gMonShinyPalette_Bruxish[] = INCBIN_U32("graphics/pokemon/bruxish/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Bruxish[] = INCBIN_U16("graphics/pokemon/bruxish/shiny.gbapal"); const u8 gMonIcon_Bruxish[] = INCBIN_U8("graphics/pokemon/bruxish/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Bruxish[] = INCBIN_U8("graphics/pokemon/bruxish/footprint.1bpp"); @@ -21972,17 +21972,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Bruxish[] = INCBIN_U16("graphics/pokemon/bruxish/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Bruxish[] = INCBIN_U16("graphics/pokemon/bruxish/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_BRUXISH #if P_FAMILY_DRAMPA const u32 gMonFrontPic_Drampa[] = INCBIN_U32("graphics/pokemon/drampa/anim_front.4bpp.lz"); - const u32 gMonPalette_Drampa[] = INCBIN_U32("graphics/pokemon/drampa/normal.gbapal.lz"); + const u16 gMonPalette_Drampa[] = INCBIN_U16("graphics/pokemon/drampa/normal.gbapal"); const u32 gMonBackPic_Drampa[] = INCBIN_U32("graphics/pokemon/drampa/back.4bpp.lz"); - const u32 gMonShinyPalette_Drampa[] = INCBIN_U32("graphics/pokemon/drampa/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Drampa[] = INCBIN_U16("graphics/pokemon/drampa/shiny.gbapal"); const u8 gMonIcon_Drampa[] = INCBIN_U8("graphics/pokemon/drampa/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Drampa[] = INCBIN_U8("graphics/pokemon/drampa/footprint.1bpp"); @@ -21990,17 +21990,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Drampa[] = INCBIN_U16("graphics/pokemon/drampa/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Drampa[] = INCBIN_U16("graphics/pokemon/drampa/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_DRAMPA #if P_FAMILY_DHELMISE const u32 gMonFrontPic_Dhelmise[] = INCBIN_U32("graphics/pokemon/dhelmise/front.4bpp.lz"); - const u32 gMonPalette_Dhelmise[] = INCBIN_U32("graphics/pokemon/dhelmise/normal.gbapal.lz"); + const u16 gMonPalette_Dhelmise[] = INCBIN_U16("graphics/pokemon/dhelmise/normal.gbapal"); const u32 gMonBackPic_Dhelmise[] = INCBIN_U32("graphics/pokemon/dhelmise/back.4bpp.lz"); - const u32 gMonShinyPalette_Dhelmise[] = INCBIN_U32("graphics/pokemon/dhelmise/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Dhelmise[] = INCBIN_U16("graphics/pokemon/dhelmise/shiny.gbapal"); const u8 gMonIcon_Dhelmise[] = INCBIN_U8("graphics/pokemon/dhelmise/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Dhelmise[] = INCBIN_U8("graphics/pokemon/dhelmise/footprint.1bpp"); @@ -22008,17 +22008,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Dhelmise[] = INCBIN_U16("graphics/pokemon/dhelmise/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Dhelmise[] = INCBIN_U16("graphics/pokemon/dhelmise/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_DHELMISE #if P_FAMILY_JANGMO_O const u32 gMonFrontPic_JangmoO[] = INCBIN_U32("graphics/pokemon/jangmo_o/anim_front.4bpp.lz"); - const u32 gMonPalette_JangmoO[] = INCBIN_U32("graphics/pokemon/jangmo_o/normal.gbapal.lz"); + const u16 gMonPalette_JangmoO[] = INCBIN_U16("graphics/pokemon/jangmo_o/normal.gbapal"); const u32 gMonBackPic_JangmoO[] = INCBIN_U32("graphics/pokemon/jangmo_o/back.4bpp.lz"); - const u32 gMonShinyPalette_JangmoO[] = INCBIN_U32("graphics/pokemon/jangmo_o/shiny.gbapal.lz"); + const u16 gMonShinyPalette_JangmoO[] = INCBIN_U16("graphics/pokemon/jangmo_o/shiny.gbapal"); const u8 gMonIcon_JangmoO[] = INCBIN_U8("graphics/pokemon/jangmo_o/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_JangmoO[] = INCBIN_U8("graphics/pokemon/jangmo_o/footprint.1bpp"); @@ -22026,15 +22026,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_JangmoO[] = INCBIN_U16("graphics/pokemon/jangmo_o/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_JangmoO[] = INCBIN_U16("graphics/pokemon/jangmo_o/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_HakamoO[] = INCBIN_U16("graphics/pokemon/hakamo_o/normal.gbapal"); const u32 gMonBackPic_HakamoO[] = INCBIN_U32("graphics/pokemon/hakamo_o/back.4bpp.lz"); - const u32 gMonShinyPalette_HakamoO[] = INCBIN_U32("graphics/pokemon/hakamo_o/shiny.gbapal.lz"); + const u16 gMonShinyPalette_HakamoO[] = INCBIN_U16("graphics/pokemon/hakamo_o/shiny.gbapal"); const u8 gMonIcon_HakamoO[] = INCBIN_U8("graphics/pokemon/hakamo_o/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_HakamoO[] = INCBIN_U8("graphics/pokemon/hakamo_o/footprint.1bpp"); @@ -22042,15 +22042,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_HakamoO[] = INCBIN_U16("graphics/pokemon/hakamo_o/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_HakamoO[] = INCBIN_U16("graphics/pokemon/hakamo_o/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_KommoO[] = INCBIN_U16("graphics/pokemon/kommo_o/normal.gbapal"); const u32 gMonBackPic_KommoO[] = INCBIN_U32("graphics/pokemon/kommo_o/back.4bpp.lz"); - const u32 gMonShinyPalette_KommoO[] = INCBIN_U32("graphics/pokemon/kommo_o/shiny.gbapal.lz"); + const u16 gMonShinyPalette_KommoO[] = INCBIN_U16("graphics/pokemon/kommo_o/shiny.gbapal"); const u8 gMonIcon_KommoO[] = INCBIN_U8("graphics/pokemon/kommo_o/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_KommoO[] = INCBIN_U8("graphics/pokemon/kommo_o/footprint.1bpp"); @@ -22058,17 +22058,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_KommoO[] = INCBIN_U16("graphics/pokemon/kommo_o/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_KommoO[] = INCBIN_U16("graphics/pokemon/kommo_o/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_JANGMO_O #if P_FAMILY_TAPU_KOKO const u32 gMonFrontPic_TapuKoko[] = INCBIN_U32("graphics/pokemon/tapu_koko/anim_front.4bpp.lz"); - const u32 gMonPalette_TapuKoko[] = INCBIN_U32("graphics/pokemon/tapu_koko/normal.gbapal.lz"); + const u16 gMonPalette_TapuKoko[] = INCBIN_U16("graphics/pokemon/tapu_koko/normal.gbapal"); const u32 gMonBackPic_TapuKoko[] = INCBIN_U32("graphics/pokemon/tapu_koko/back.4bpp.lz"); - const u32 gMonShinyPalette_TapuKoko[] = INCBIN_U32("graphics/pokemon/tapu_koko/shiny.gbapal.lz"); + const u16 gMonShinyPalette_TapuKoko[] = INCBIN_U16("graphics/pokemon/tapu_koko/shiny.gbapal"); const u8 gMonIcon_TapuKoko[] = INCBIN_U8("graphics/pokemon/tapu_koko/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_TapuKoko[] = INCBIN_U8("graphics/pokemon/tapu_koko/footprint.1bpp"); @@ -22076,17 +22076,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_TapuKoko[] = INCBIN_U16("graphics/pokemon/tapu_koko/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_TapuKoko[] = INCBIN_U16("graphics/pokemon/tapu_koko/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_TAPU_KOKO #if P_FAMILY_TAPU_LELE const u32 gMonFrontPic_TapuLele[] = INCBIN_U32("graphics/pokemon/tapu_lele/anim_front.4bpp.lz"); - const u32 gMonPalette_TapuLele[] = INCBIN_U32("graphics/pokemon/tapu_lele/normal.gbapal.lz"); + const u16 gMonPalette_TapuLele[] = INCBIN_U16("graphics/pokemon/tapu_lele/normal.gbapal"); const u32 gMonBackPic_TapuLele[] = INCBIN_U32("graphics/pokemon/tapu_lele/back.4bpp.lz"); - const u32 gMonShinyPalette_TapuLele[] = INCBIN_U32("graphics/pokemon/tapu_lele/shiny.gbapal.lz"); + const u16 gMonShinyPalette_TapuLele[] = INCBIN_U16("graphics/pokemon/tapu_lele/shiny.gbapal"); const u8 gMonIcon_TapuLele[] = INCBIN_U8("graphics/pokemon/tapu_lele/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_TapuLele[] = INCBIN_U8("graphics/pokemon/tapu_lele/footprint.1bpp"); @@ -22094,17 +22094,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_TapuLele[] = INCBIN_U16("graphics/pokemon/tapu_lele/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_TapuLele[] = INCBIN_U16("graphics/pokemon/tapu_lele/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_TAPU_LELE #if P_FAMILY_TAPU_BULU const u32 gMonFrontPic_TapuBulu[] = INCBIN_U32("graphics/pokemon/tapu_bulu/anim_front.4bpp.lz"); - const u32 gMonPalette_TapuBulu[] = INCBIN_U32("graphics/pokemon/tapu_bulu/normal.gbapal.lz"); + const u16 gMonPalette_TapuBulu[] = INCBIN_U16("graphics/pokemon/tapu_bulu/normal.gbapal"); const u32 gMonBackPic_TapuBulu[] = INCBIN_U32("graphics/pokemon/tapu_bulu/back.4bpp.lz"); - const u32 gMonShinyPalette_TapuBulu[] = INCBIN_U32("graphics/pokemon/tapu_bulu/shiny.gbapal.lz"); + const u16 gMonShinyPalette_TapuBulu[] = INCBIN_U16("graphics/pokemon/tapu_bulu/shiny.gbapal"); const u8 gMonIcon_TapuBulu[] = INCBIN_U8("graphics/pokemon/tapu_bulu/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_TapuBulu[] = INCBIN_U8("graphics/pokemon/tapu_bulu/footprint.1bpp"); @@ -22112,17 +22112,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_TapuBulu[] = INCBIN_U16("graphics/pokemon/tapu_bulu/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_TapuBulu[] = INCBIN_U16("graphics/pokemon/tapu_bulu/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_TAPU_BULU #if P_FAMILY_TAPU_FINI const u32 gMonFrontPic_TapuFini[] = INCBIN_U32("graphics/pokemon/tapu_fini/anim_front.4bpp.lz"); - const u32 gMonPalette_TapuFini[] = INCBIN_U32("graphics/pokemon/tapu_fini/normal.gbapal.lz"); + const u16 gMonPalette_TapuFini[] = INCBIN_U16("graphics/pokemon/tapu_fini/normal.gbapal"); const u32 gMonBackPic_TapuFini[] = INCBIN_U32("graphics/pokemon/tapu_fini/back.4bpp.lz"); - const u32 gMonShinyPalette_TapuFini[] = INCBIN_U32("graphics/pokemon/tapu_fini/shiny.gbapal.lz"); + const u16 gMonShinyPalette_TapuFini[] = INCBIN_U16("graphics/pokemon/tapu_fini/shiny.gbapal"); const u8 gMonIcon_TapuFini[] = INCBIN_U8("graphics/pokemon/tapu_fini/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_TapuFini[] = INCBIN_U8("graphics/pokemon/tapu_fini/footprint.1bpp"); @@ -22130,17 +22130,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_TapuFini[] = INCBIN_U16("graphics/pokemon/tapu_fini/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_TapuFini[] = INCBIN_U16("graphics/pokemon/tapu_fini/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_TAPU_FINI #if P_FAMILY_COSMOG const u32 gMonFrontPic_Cosmog[] = INCBIN_U32("graphics/pokemon/cosmog/front.4bpp.lz"); - const u32 gMonPalette_Cosmog[] = INCBIN_U32("graphics/pokemon/cosmog/normal.gbapal.lz"); + const u16 gMonPalette_Cosmog[] = INCBIN_U16("graphics/pokemon/cosmog/normal.gbapal"); const u32 gMonBackPic_Cosmog[] = INCBIN_U32("graphics/pokemon/cosmog/back.4bpp.lz"); - const u32 gMonShinyPalette_Cosmog[] = INCBIN_U32("graphics/pokemon/cosmog/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Cosmog[] = INCBIN_U16("graphics/pokemon/cosmog/shiny.gbapal"); const u8 gMonIcon_Cosmog[] = INCBIN_U8("graphics/pokemon/cosmog/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Cosmog[] = INCBIN_U8("graphics/pokemon/cosmog/footprint.1bpp"); @@ -22148,15 +22148,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Cosmog[] = INCBIN_U16("graphics/pokemon/cosmog/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Cosmog[] = INCBIN_U16("graphics/pokemon/cosmog/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Cosmoem[] = INCBIN_U16("graphics/pokemon/cosmoem/normal.gbapal"); const u32 gMonBackPic_Cosmoem[] = INCBIN_U32("graphics/pokemon/cosmoem/back.4bpp.lz"); - const u32 gMonShinyPalette_Cosmoem[] = INCBIN_U32("graphics/pokemon/cosmoem/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Cosmoem[] = INCBIN_U16("graphics/pokemon/cosmoem/shiny.gbapal"); const u8 gMonIcon_Cosmoem[] = INCBIN_U8("graphics/pokemon/cosmoem/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Cosmoem[] = INCBIN_U8("graphics/pokemon/cosmoem/footprint.1bpp"); @@ -22164,15 +22164,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Cosmoem[] = INCBIN_U16("graphics/pokemon/cosmoem/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Cosmoem[] = INCBIN_U16("graphics/pokemon/cosmoem/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Solgaleo[] = INCBIN_U16("graphics/pokemon/solgaleo/normal.gbapal"); const u32 gMonBackPic_Solgaleo[] = INCBIN_U32("graphics/pokemon/solgaleo/back.4bpp.lz"); - const u32 gMonShinyPalette_Solgaleo[] = INCBIN_U32("graphics/pokemon/solgaleo/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Solgaleo[] = INCBIN_U16("graphics/pokemon/solgaleo/shiny.gbapal"); const u8 gMonIcon_Solgaleo[] = INCBIN_U8("graphics/pokemon/solgaleo/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Solgaleo[] = INCBIN_U8("graphics/pokemon/solgaleo/footprint.1bpp"); @@ -22180,15 +22180,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Solgaleo[] = INCBIN_U16("graphics/pokemon/solgaleo/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Solgaleo[] = INCBIN_U16("graphics/pokemon/solgaleo/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Lunala[] = INCBIN_U16("graphics/pokemon/lunala/normal.gbapal"); const u32 gMonBackPic_Lunala[] = INCBIN_U32("graphics/pokemon/lunala/back.4bpp.lz"); - const u32 gMonShinyPalette_Lunala[] = INCBIN_U32("graphics/pokemon/lunala/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Lunala[] = INCBIN_U16("graphics/pokemon/lunala/shiny.gbapal"); const u8 gMonIcon_Lunala[] = INCBIN_U8("graphics/pokemon/lunala/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Lunala[] = INCBIN_U8("graphics/pokemon/lunala/footprint.1bpp"); @@ -22196,17 +22196,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Lunala[] = INCBIN_U16("graphics/pokemon/lunala/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Lunala[] = INCBIN_U16("graphics/pokemon/lunala/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_COSMOG #if P_FAMILY_NIHILEGO const u32 gMonFrontPic_Nihilego[] = INCBIN_U32("graphics/pokemon/nihilego/front.4bpp.lz"); - const u32 gMonPalette_Nihilego[] = INCBIN_U32("graphics/pokemon/nihilego/normal.gbapal.lz"); + const u16 gMonPalette_Nihilego[] = INCBIN_U16("graphics/pokemon/nihilego/normal.gbapal"); const u32 gMonBackPic_Nihilego[] = INCBIN_U32("graphics/pokemon/nihilego/back.4bpp.lz"); - const u32 gMonShinyPalette_Nihilego[] = INCBIN_U32("graphics/pokemon/nihilego/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Nihilego[] = INCBIN_U16("graphics/pokemon/nihilego/shiny.gbapal"); const u8 gMonIcon_Nihilego[] = INCBIN_U8("graphics/pokemon/nihilego/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Nihilego[] = INCBIN_U8("graphics/pokemon/nihilego/footprint.1bpp"); @@ -22214,17 +22214,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Nihilego[] = INCBIN_U16("graphics/pokemon/nihilego/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Nihilego[] = INCBIN_U16("graphics/pokemon/nihilego/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_NIHILEGO #if P_FAMILY_BUZZWOLE const u32 gMonFrontPic_Buzzwole[] = INCBIN_U32("graphics/pokemon/buzzwole/front.4bpp.lz"); - const u32 gMonPalette_Buzzwole[] = INCBIN_U32("graphics/pokemon/buzzwole/normal.gbapal.lz"); + const u16 gMonPalette_Buzzwole[] = INCBIN_U16("graphics/pokemon/buzzwole/normal.gbapal"); const u32 gMonBackPic_Buzzwole[] = INCBIN_U32("graphics/pokemon/buzzwole/back.4bpp.lz"); - const u32 gMonShinyPalette_Buzzwole[] = INCBIN_U32("graphics/pokemon/buzzwole/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Buzzwole[] = INCBIN_U16("graphics/pokemon/buzzwole/shiny.gbapal"); const u8 gMonIcon_Buzzwole[] = INCBIN_U8("graphics/pokemon/buzzwole/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Buzzwole[] = INCBIN_U8("graphics/pokemon/buzzwole/footprint.1bpp"); @@ -22232,17 +22232,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Buzzwole[] = INCBIN_U16("graphics/pokemon/buzzwole/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Buzzwole[] = INCBIN_U16("graphics/pokemon/buzzwole/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_BUZZWOLE #if P_FAMILY_PHEROMOSA const u32 gMonFrontPic_Pheromosa[] = INCBIN_U32("graphics/pokemon/pheromosa/front.4bpp.lz"); - const u32 gMonPalette_Pheromosa[] = INCBIN_U32("graphics/pokemon/pheromosa/normal.gbapal.lz"); + const u16 gMonPalette_Pheromosa[] = INCBIN_U16("graphics/pokemon/pheromosa/normal.gbapal"); const u32 gMonBackPic_Pheromosa[] = INCBIN_U32("graphics/pokemon/pheromosa/back.4bpp.lz"); - const u32 gMonShinyPalette_Pheromosa[] = INCBIN_U32("graphics/pokemon/pheromosa/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Pheromosa[] = INCBIN_U16("graphics/pokemon/pheromosa/shiny.gbapal"); const u8 gMonIcon_Pheromosa[] = INCBIN_U8("graphics/pokemon/pheromosa/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Pheromosa[] = INCBIN_U8("graphics/pokemon/pheromosa/footprint.1bpp"); @@ -22250,17 +22250,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Pheromosa[] = INCBIN_U16("graphics/pokemon/pheromosa/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Pheromosa[] = INCBIN_U16("graphics/pokemon/pheromosa/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_PHEROMOSA #if P_FAMILY_XURKITREE const u32 gMonFrontPic_Xurkitree[] = INCBIN_U32("graphics/pokemon/xurkitree/front.4bpp.lz"); - const u32 gMonPalette_Xurkitree[] = INCBIN_U32("graphics/pokemon/xurkitree/normal.gbapal.lz"); + const u16 gMonPalette_Xurkitree[] = INCBIN_U16("graphics/pokemon/xurkitree/normal.gbapal"); const u32 gMonBackPic_Xurkitree[] = INCBIN_U32("graphics/pokemon/xurkitree/back.4bpp.lz"); - const u32 gMonShinyPalette_Xurkitree[] = INCBIN_U32("graphics/pokemon/xurkitree/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Xurkitree[] = INCBIN_U16("graphics/pokemon/xurkitree/shiny.gbapal"); const u8 gMonIcon_Xurkitree[] = INCBIN_U8("graphics/pokemon/xurkitree/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Xurkitree[] = INCBIN_U8("graphics/pokemon/xurkitree/footprint.1bpp"); @@ -22268,17 +22268,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Xurkitree[] = INCBIN_U16("graphics/pokemon/xurkitree/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Xurkitree[] = INCBIN_U16("graphics/pokemon/xurkitree/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_XURKITREE #if P_FAMILY_CELESTEELA const u32 gMonFrontPic_Celesteela[] = INCBIN_U32("graphics/pokemon/celesteela/front.4bpp.lz"); - const u32 gMonPalette_Celesteela[] = INCBIN_U32("graphics/pokemon/celesteela/normal.gbapal.lz"); + const u16 gMonPalette_Celesteela[] = INCBIN_U16("graphics/pokemon/celesteela/normal.gbapal"); const u32 gMonBackPic_Celesteela[] = INCBIN_U32("graphics/pokemon/celesteela/back.4bpp.lz"); - const u32 gMonShinyPalette_Celesteela[] = INCBIN_U32("graphics/pokemon/celesteela/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Celesteela[] = INCBIN_U16("graphics/pokemon/celesteela/shiny.gbapal"); const u8 gMonIcon_Celesteela[] = INCBIN_U8("graphics/pokemon/celesteela/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Celesteela[] = INCBIN_U8("graphics/pokemon/celesteela/footprint.1bpp"); @@ -22286,17 +22286,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Celesteela[] = INCBIN_U16("graphics/pokemon/celesteela/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Celesteela[] = INCBIN_U16("graphics/pokemon/celesteela/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_CELESTEELA #if P_FAMILY_KARTANA const u32 gMonFrontPic_Kartana[] = INCBIN_U32("graphics/pokemon/kartana/front.4bpp.lz"); - const u32 gMonPalette_Kartana[] = INCBIN_U32("graphics/pokemon/kartana/normal.gbapal.lz"); + const u16 gMonPalette_Kartana[] = INCBIN_U16("graphics/pokemon/kartana/normal.gbapal"); const u32 gMonBackPic_Kartana[] = INCBIN_U32("graphics/pokemon/kartana/back.4bpp.lz"); - const u32 gMonShinyPalette_Kartana[] = INCBIN_U32("graphics/pokemon/kartana/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Kartana[] = INCBIN_U16("graphics/pokemon/kartana/shiny.gbapal"); const u8 gMonIcon_Kartana[] = INCBIN_U8("graphics/pokemon/kartana/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Kartana[] = INCBIN_U8("graphics/pokemon/kartana/footprint.1bpp"); @@ -22304,17 +22304,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Kartana[] = INCBIN_U16("graphics/pokemon/kartana/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Kartana[] = INCBIN_U16("graphics/pokemon/kartana/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_KARTANA #if P_FAMILY_GUZZLORD const u32 gMonFrontPic_Guzzlord[] = INCBIN_U32("graphics/pokemon/guzzlord/front.4bpp.lz"); - const u32 gMonPalette_Guzzlord[] = INCBIN_U32("graphics/pokemon/guzzlord/normal.gbapal.lz"); + const u16 gMonPalette_Guzzlord[] = INCBIN_U16("graphics/pokemon/guzzlord/normal.gbapal"); const u32 gMonBackPic_Guzzlord[] = INCBIN_U32("graphics/pokemon/guzzlord/back.4bpp.lz"); - const u32 gMonShinyPalette_Guzzlord[] = INCBIN_U32("graphics/pokemon/guzzlord/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Guzzlord[] = INCBIN_U16("graphics/pokemon/guzzlord/shiny.gbapal"); const u8 gMonIcon_Guzzlord[] = INCBIN_U8("graphics/pokemon/guzzlord/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Guzzlord[] = INCBIN_U8("graphics/pokemon/guzzlord/footprint.1bpp"); @@ -22322,17 +22322,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Guzzlord[] = INCBIN_U16("graphics/pokemon/guzzlord/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Guzzlord[] = INCBIN_U16("graphics/pokemon/guzzlord/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_GUZZLORD #if P_FAMILY_NECROZMA const u32 gMonFrontPic_Necrozma[] = INCBIN_U32("graphics/pokemon/necrozma/front.4bpp.lz"); - const u32 gMonPalette_Necrozma[] = INCBIN_U32("graphics/pokemon/necrozma/normal.gbapal.lz"); + const u16 gMonPalette_Necrozma[] = INCBIN_U16("graphics/pokemon/necrozma/normal.gbapal"); const u32 gMonBackPic_Necrozma[] = INCBIN_U32("graphics/pokemon/necrozma/back.4bpp.lz"); - const u32 gMonShinyPalette_Necrozma[] = INCBIN_U32("graphics/pokemon/necrozma/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Necrozma[] = INCBIN_U16("graphics/pokemon/necrozma/shiny.gbapal"); const u8 gMonIcon_Necrozma[] = INCBIN_U8("graphics/pokemon/necrozma/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Necrozma[] = INCBIN_U8("graphics/pokemon/necrozma/footprint.1bpp"); @@ -22340,49 +22340,49 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Necrozma[] = INCBIN_U16("graphics/pokemon/necrozma/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Necrozma[] = INCBIN_U16("graphics/pokemon/necrozma/overworld_shiny.gbapal"); #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"); - const u32 gMonPalette_NecrozmaDuskMane[] = INCBIN_U32("graphics/pokemon/necrozma/dusk_mane/normal.gbapal.lz"); + const u16 gMonPalette_NecrozmaDuskMane[] = INCBIN_U16("graphics/pokemon/necrozma/dusk_mane/normal.gbapal"); 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 u16 gMonShinyPalette_NecrozmaDuskMane[] = INCBIN_U16("graphics/pokemon/necrozma/dusk_mane/shiny.gbapal"); 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"); + const u16 gOverworldPalette_NecrozmaDuskMane[] = INCBIN_U16("graphics/pokemon/necrozma/dusk_mane/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_NecrozmaDuskMane[] = INCBIN_U16("graphics/pokemon/necrozma/dusk_mane/overworld_shiny.gbapal"); #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 u16 gMonPalette_NecrozmaDawnWings[] = INCBIN_U16("graphics/pokemon/necrozma/dawn_wings/normal.gbapal"); 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 u16 gMonShinyPalette_NecrozmaDawnWings[] = INCBIN_U16("graphics/pokemon/necrozma/dawn_wings/shiny.gbapal"); 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"); + const u16 gOverworldPalette_NecrozmaDawnWings[] = INCBIN_U16("graphics/pokemon/necrozma/dawn_wings/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_NecrozmaDawnWings[] = INCBIN_U16("graphics/pokemon/necrozma/dawn_wings/overworld_shiny.gbapal"); #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"); - const u32 gMonPalette_NecrozmaUltra[] = INCBIN_U32("graphics/pokemon/necrozma/ultra/normal.gbapal.lz"); + const u16 gMonPalette_NecrozmaUltra[] = INCBIN_U16("graphics/pokemon/necrozma/ultra/normal.gbapal"); 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 u16 gMonShinyPalette_NecrozmaUltra[] = INCBIN_U16("graphics/pokemon/necrozma/ultra/shiny.gbapal"); 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"); + const u16 gOverworldPalette_NecrozmaUltra[] = INCBIN_U16("graphics/pokemon/necrozma/ultra/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_NecrozmaUltra[] = INCBIN_U16("graphics/pokemon/necrozma/ultra/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_ULTRA_BURST_FORMS @@ -22391,9 +22391,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_MAGEARNA const u32 gMonFrontPic_Magearna[] = INCBIN_U32("graphics/pokemon/magearna/front.4bpp.lz"); - const u32 gMonPalette_Magearna[] = INCBIN_U32("graphics/pokemon/magearna/normal.gbapal.lz"); + const u16 gMonPalette_Magearna[] = INCBIN_U16("graphics/pokemon/magearna/normal.gbapal"); const u32 gMonBackPic_Magearna[] = INCBIN_U32("graphics/pokemon/magearna/back.4bpp.lz"); - const u32 gMonShinyPalette_Magearna[] = INCBIN_U32("graphics/pokemon/magearna/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Magearna[] = INCBIN_U16("graphics/pokemon/magearna/shiny.gbapal"); const u8 gMonIcon_Magearna[] = INCBIN_U8("graphics/pokemon/magearna/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Magearna[] = INCBIN_U8("graphics/pokemon/magearna/footprint.1bpp"); @@ -22401,30 +22401,30 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Magearna[] = INCBIN_U16("graphics/pokemon/magearna/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Magearna[] = INCBIN_U16("graphics/pokemon/magearna/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_MagearnaOriginal[] = INCBIN_U32("graphics/pokemon/magearna/original_color/front.4bpp.lz"); - const u32 gMonPalette_MagearnaOriginal[] = INCBIN_U32("graphics/pokemon/magearna/original_color/normal.gbapal.lz"); + const u16 gMonPalette_MagearnaOriginal[] = INCBIN_U16("graphics/pokemon/magearna/original_color/normal.gbapal"); const u32 gMonBackPic_MagearnaOriginal[] = INCBIN_U32("graphics/pokemon/magearna/original_color/back.4bpp.lz"); - const u32 gMonShinyPalette_MagearnaOriginal[] = INCBIN_U32("graphics/pokemon/magearna/original_color/shiny.gbapal.lz"); + const u16 gMonShinyPalette_MagearnaOriginal[] = INCBIN_U16("graphics/pokemon/magearna/original_color/shiny.gbapal"); const u8 gMonIcon_MagearnaOriginal[] = INCBIN_U8("graphics/pokemon/magearna/original_color/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS const u32 gObjectEventPic_MagearnaOriginal[] = INCBIN_COMP("graphics/pokemon/magearna/original_color/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - const u32 gOverworldPalette_MagearnaOriginal[] = INCBIN_U32("graphics/pokemon/magearna/original_color/overworld_normal.gbapal.lz"); - const u32 gShinyOverworldPalette_MagearnaOriginal[] = INCBIN_U32("graphics/pokemon/magearna/original_color/overworld_shiny.gbapal.lz"); + const u16 gOverworldPalette_MagearnaOriginal[] = INCBIN_U16("graphics/pokemon/magearna/original_color/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_MagearnaOriginal[] = INCBIN_U16("graphics/pokemon/magearna/original_color/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_MAGEARNA #if P_FAMILY_MARSHADOW const u32 gMonFrontPic_Marshadow[] = INCBIN_U32("graphics/pokemon/marshadow/anim_front.4bpp.lz"); - const u32 gMonPalette_Marshadow[] = INCBIN_U32("graphics/pokemon/marshadow/normal.gbapal.lz"); + const u16 gMonPalette_Marshadow[] = INCBIN_U16("graphics/pokemon/marshadow/normal.gbapal"); const u32 gMonBackPic_Marshadow[] = INCBIN_U32("graphics/pokemon/marshadow/back.4bpp.lz"); - const u32 gMonShinyPalette_Marshadow[] = INCBIN_U32("graphics/pokemon/marshadow/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Marshadow[] = INCBIN_U16("graphics/pokemon/marshadow/shiny.gbapal"); const u8 gMonIcon_Marshadow[] = INCBIN_U8("graphics/pokemon/marshadow/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Marshadow[] = INCBIN_U8("graphics/pokemon/marshadow/footprint.1bpp"); @@ -22432,17 +22432,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Marshadow[] = INCBIN_U16("graphics/pokemon/marshadow/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Marshadow[] = INCBIN_U16("graphics/pokemon/marshadow/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_MARSHADOW #if P_FAMILY_POIPOLE const u32 gMonFrontPic_Poipole[] = INCBIN_U32("graphics/pokemon/poipole/front.4bpp.lz"); - const u32 gMonPalette_Poipole[] = INCBIN_U32("graphics/pokemon/poipole/normal.gbapal.lz"); + const u16 gMonPalette_Poipole[] = INCBIN_U16("graphics/pokemon/poipole/normal.gbapal"); const u32 gMonBackPic_Poipole[] = INCBIN_U32("graphics/pokemon/poipole/back.4bpp.lz"); - const u32 gMonShinyPalette_Poipole[] = INCBIN_U32("graphics/pokemon/poipole/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Poipole[] = INCBIN_U16("graphics/pokemon/poipole/shiny.gbapal"); const u8 gMonIcon_Poipole[] = INCBIN_U8("graphics/pokemon/poipole/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Poipole[] = INCBIN_U8("graphics/pokemon/poipole/footprint.1bpp"); @@ -22450,15 +22450,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Poipole[] = INCBIN_U16("graphics/pokemon/poipole/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Poipole[] = INCBIN_U16("graphics/pokemon/poipole/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Naganadel[] = INCBIN_U16("graphics/pokemon/naganadel/normal.gbapal"); const u32 gMonBackPic_Naganadel[] = INCBIN_U32("graphics/pokemon/naganadel/back.4bpp.lz"); - const u32 gMonShinyPalette_Naganadel[] = INCBIN_U32("graphics/pokemon/naganadel/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Naganadel[] = INCBIN_U16("graphics/pokemon/naganadel/shiny.gbapal"); const u8 gMonIcon_Naganadel[] = INCBIN_U8("graphics/pokemon/naganadel/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Naganadel[] = INCBIN_U8("graphics/pokemon/naganadel/footprint.1bpp"); @@ -22466,17 +22466,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Naganadel[] = INCBIN_U16("graphics/pokemon/naganadel/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Naganadel[] = INCBIN_U16("graphics/pokemon/naganadel/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_POIPOLE #if P_FAMILY_STAKATAKA const u32 gMonFrontPic_Stakataka[] = INCBIN_U32("graphics/pokemon/stakataka/front.4bpp.lz"); - const u32 gMonPalette_Stakataka[] = INCBIN_U32("graphics/pokemon/stakataka/normal.gbapal.lz"); + const u16 gMonPalette_Stakataka[] = INCBIN_U16("graphics/pokemon/stakataka/normal.gbapal"); const u32 gMonBackPic_Stakataka[] = INCBIN_U32("graphics/pokemon/stakataka/back.4bpp.lz"); - const u32 gMonShinyPalette_Stakataka[] = INCBIN_U32("graphics/pokemon/stakataka/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Stakataka[] = INCBIN_U16("graphics/pokemon/stakataka/shiny.gbapal"); const u8 gMonIcon_Stakataka[] = INCBIN_U8("graphics/pokemon/stakataka/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Stakataka[] = INCBIN_U8("graphics/pokemon/stakataka/footprint.1bpp"); @@ -22484,17 +22484,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Stakataka[] = INCBIN_U16("graphics/pokemon/stakataka/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Stakataka[] = INCBIN_U16("graphics/pokemon/stakataka/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_STAKATAKA #if P_FAMILY_BLACEPHALON const u32 gMonFrontPic_Blacephalon[] = INCBIN_U32("graphics/pokemon/blacephalon/front.4bpp.lz"); - const u32 gMonPalette_Blacephalon[] = INCBIN_U32("graphics/pokemon/blacephalon/normal.gbapal.lz"); + const u16 gMonPalette_Blacephalon[] = INCBIN_U16("graphics/pokemon/blacephalon/normal.gbapal"); const u32 gMonBackPic_Blacephalon[] = INCBIN_U32("graphics/pokemon/blacephalon/back.4bpp.lz"); - const u32 gMonShinyPalette_Blacephalon[] = INCBIN_U32("graphics/pokemon/blacephalon/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Blacephalon[] = INCBIN_U16("graphics/pokemon/blacephalon/shiny.gbapal"); const u8 gMonIcon_Blacephalon[] = INCBIN_U8("graphics/pokemon/blacephalon/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Blacephalon[] = INCBIN_U8("graphics/pokemon/blacephalon/footprint.1bpp"); @@ -22502,17 +22502,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Blacephalon[] = INCBIN_U16("graphics/pokemon/blacephalon/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Blacephalon[] = INCBIN_U16("graphics/pokemon/blacephalon/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_BLACEPHALON #if P_FAMILY_ZERAORA const u32 gMonFrontPic_Zeraora[] = INCBIN_U32("graphics/pokemon/zeraora/front.4bpp.lz"); - const u32 gMonPalette_Zeraora[] = INCBIN_U32("graphics/pokemon/zeraora/normal.gbapal.lz"); + const u16 gMonPalette_Zeraora[] = INCBIN_U16("graphics/pokemon/zeraora/normal.gbapal"); const u32 gMonBackPic_Zeraora[] = INCBIN_U32("graphics/pokemon/zeraora/back.4bpp.lz"); - const u32 gMonShinyPalette_Zeraora[] = INCBIN_U32("graphics/pokemon/zeraora/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Zeraora[] = INCBIN_U16("graphics/pokemon/zeraora/shiny.gbapal"); const u8 gMonIcon_Zeraora[] = INCBIN_U8("graphics/pokemon/zeraora/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Zeraora[] = INCBIN_U8("graphics/pokemon/zeraora/footprint.1bpp"); @@ -22520,17 +22520,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Zeraora[] = INCBIN_U16("graphics/pokemon/zeraora/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Zeraora[] = INCBIN_U16("graphics/pokemon/zeraora/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_ZERAORA #if P_FAMILY_MELTAN const u32 gMonFrontPic_Meltan[] = INCBIN_U32("graphics/pokemon/meltan/front.4bpp.lz"); - const u32 gMonPalette_Meltan[] = INCBIN_U32("graphics/pokemon/meltan/normal.gbapal.lz"); + const u16 gMonPalette_Meltan[] = INCBIN_U16("graphics/pokemon/meltan/normal.gbapal"); const u32 gMonBackPic_Meltan[] = INCBIN_U32("graphics/pokemon/meltan/back.4bpp.lz"); - const u32 gMonShinyPalette_Meltan[] = INCBIN_U32("graphics/pokemon/meltan/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Meltan[] = INCBIN_U16("graphics/pokemon/meltan/shiny.gbapal"); const u8 gMonIcon_Meltan[] = INCBIN_U8("graphics/pokemon/meltan/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Meltan[] = INCBIN_U8("graphics/pokemon/meltan/footprint.1bpp"); @@ -22538,15 +22538,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Meltan[] = INCBIN_U16("graphics/pokemon/meltan/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Meltan[] = INCBIN_U16("graphics/pokemon/meltan/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Melmetal[] = INCBIN_U16("graphics/pokemon/melmetal/normal.gbapal"); const u32 gMonBackPic_Melmetal[] = INCBIN_U32("graphics/pokemon/melmetal/back.4bpp.lz"); - const u32 gMonShinyPalette_Melmetal[] = INCBIN_U32("graphics/pokemon/melmetal/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Melmetal[] = INCBIN_U16("graphics/pokemon/melmetal/shiny.gbapal"); const u8 gMonIcon_Melmetal[] = INCBIN_U8("graphics/pokemon/melmetal/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Melmetal[] = INCBIN_U8("graphics/pokemon/melmetal/footprint.1bpp"); @@ -22554,22 +22554,22 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Melmetal[] = INCBIN_U16("graphics/pokemon/melmetal/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Melmetal[] = INCBIN_U16("graphics/pokemon/melmetal/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if P_GIGANTAMAX_FORMS const u32 gMonFrontPic_MelmetalGmax[] = INCBIN_U32("graphics/pokemon/melmetal/gmax/front.4bpp.lz"); const u32 gMonBackPic_MelmetalGmax[] = INCBIN_U32("graphics/pokemon/melmetal/gmax/back.4bpp.lz"); - const u32 gMonPalette_MelmetalGmax[] = INCBIN_U32("graphics/pokemon/melmetal/gmax/normal.gbapal.lz"); - const u32 gMonShinyPalette_MelmetalGmax[] = INCBIN_U32("graphics/pokemon/melmetal/gmax/shiny.gbapal.lz"); + const u16 gMonPalette_MelmetalGmax[] = INCBIN_U16("graphics/pokemon/melmetal/gmax/normal.gbapal"); + const u16 gMonShinyPalette_MelmetalGmax[] = INCBIN_U16("graphics/pokemon/melmetal/gmax/shiny.gbapal"); const u8 gMonIcon_MelmetalGmax[] = INCBIN_U8("graphics/pokemon/melmetal/gmax/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS // const u32 gObjectEventPic_MelmetalGmax[] = INCBIN_COMP("graphics/pokemon/melmetal/gmax/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - // const u32 gOverworldPalette_MelmetalGmax[] = INCBIN_U32("graphics/pokemon/melmetal/gmax/overworld_normal.gbapal.lz"); - // const u32 gShinyOverworldPalette_MelmetalGmax[] = INCBIN_U32("graphics/pokemon/melmetal/gmax/overworld_shiny.gbapal.lz"); + // const u16 gOverworldPalette_MelmetalGmax[] = INCBIN_U16("graphics/pokemon/melmetal/gmax/overworld_normal.gbapal"); + // const u16 gShinyOverworldPalette_MelmetalGmax[] = INCBIN_U16("graphics/pokemon/melmetal/gmax/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GIGANTAMAX_FORMS @@ -22577,9 +22577,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_GROOKEY const u32 gMonFrontPic_Grookey[] = INCBIN_U32("graphics/pokemon/grookey/front.4bpp.lz"); - const u32 gMonPalette_Grookey[] = INCBIN_U32("graphics/pokemon/grookey/normal.gbapal.lz"); + const u16 gMonPalette_Grookey[] = INCBIN_U16("graphics/pokemon/grookey/normal.gbapal"); const u32 gMonBackPic_Grookey[] = INCBIN_U32("graphics/pokemon/grookey/back.4bpp.lz"); - const u32 gMonShinyPalette_Grookey[] = INCBIN_U32("graphics/pokemon/grookey/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Grookey[] = INCBIN_U16("graphics/pokemon/grookey/shiny.gbapal"); const u8 gMonIcon_Grookey[] = INCBIN_U8("graphics/pokemon/grookey/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Grookey[] = INCBIN_U8("graphics/pokemon/grookey/footprint.1bpp"); @@ -22587,15 +22587,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Grookey[] = INCBIN_U16("graphics/pokemon/grookey/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Grookey[] = INCBIN_U16("graphics/pokemon/grookey/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Thwackey[] = INCBIN_U16("graphics/pokemon/thwackey/normal.gbapal"); const u32 gMonBackPic_Thwackey[] = INCBIN_U32("graphics/pokemon/thwackey/back.4bpp.lz"); - const u32 gMonShinyPalette_Thwackey[] = INCBIN_U32("graphics/pokemon/thwackey/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Thwackey[] = INCBIN_U16("graphics/pokemon/thwackey/shiny.gbapal"); const u8 gMonIcon_Thwackey[] = INCBIN_U8("graphics/pokemon/thwackey/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Thwackey[] = INCBIN_U8("graphics/pokemon/thwackey/footprint.1bpp"); @@ -22603,15 +22603,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Thwackey[] = INCBIN_U16("graphics/pokemon/thwackey/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Thwackey[] = INCBIN_U16("graphics/pokemon/thwackey/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Rillaboom[] = INCBIN_U16("graphics/pokemon/rillaboom/normal.gbapal"); const u32 gMonBackPic_Rillaboom[] = INCBIN_U32("graphics/pokemon/rillaboom/back.4bpp.lz"); - const u32 gMonShinyPalette_Rillaboom[] = INCBIN_U32("graphics/pokemon/rillaboom/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Rillaboom[] = INCBIN_U16("graphics/pokemon/rillaboom/shiny.gbapal"); const u8 gMonIcon_Rillaboom[] = INCBIN_U8("graphics/pokemon/rillaboom/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Rillaboom[] = INCBIN_U8("graphics/pokemon/rillaboom/footprint.1bpp"); @@ -22619,22 +22619,22 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Rillaboom[] = INCBIN_U16("graphics/pokemon/rillaboom/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Rillaboom[] = INCBIN_U16("graphics/pokemon/rillaboom/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if P_GIGANTAMAX_FORMS const u32 gMonFrontPic_RillaboomGmax[] = INCBIN_U32("graphics/pokemon/rillaboom/gmax/front.4bpp.lz"); const u32 gMonBackPic_RillaboomGmax[] = INCBIN_U32("graphics/pokemon/rillaboom/gmax/back.4bpp.lz"); - const u32 gMonPalette_RillaboomGmax[] = INCBIN_U32("graphics/pokemon/rillaboom/gmax/normal.gbapal.lz"); - const u32 gMonShinyPalette_RillaboomGmax[] = INCBIN_U32("graphics/pokemon/rillaboom/gmax/shiny.gbapal.lz"); + const u16 gMonPalette_RillaboomGmax[] = INCBIN_U16("graphics/pokemon/rillaboom/gmax/normal.gbapal"); + const u16 gMonShinyPalette_RillaboomGmax[] = INCBIN_U16("graphics/pokemon/rillaboom/gmax/shiny.gbapal"); const u8 gMonIcon_RillaboomGmax[] = INCBIN_U8("graphics/pokemon/rillaboom/gmax/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS // const u32 gObjectEventPic_RillaboomGmax[] = INCBIN_COMP("graphics/pokemon/rillaboom/gmax/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - // const u32 gOverworldPalette_RillaboomGmax[] = INCBIN_U32("graphics/pokemon/rillaboom/gmax/overworld_normal.gbapal.lz"); - // const u32 gShinyOverworldPalette_RillaboomGmax[] = INCBIN_U32("graphics/pokemon/rillaboom/gmax/overworld_shiny.gbapal.lz"); + // const u16 gOverworldPalette_RillaboomGmax[] = INCBIN_U16("graphics/pokemon/rillaboom/gmax/overworld_normal.gbapal"); + // const u16 gShinyOverworldPalette_RillaboomGmax[] = INCBIN_U16("graphics/pokemon/rillaboom/gmax/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GIGANTAMAX_FORMS @@ -22642,9 +22642,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_SCORBUNNY const u32 gMonFrontPic_Scorbunny[] = INCBIN_U32("graphics/pokemon/scorbunny/front.4bpp.lz"); - const u32 gMonPalette_Scorbunny[] = INCBIN_U32("graphics/pokemon/scorbunny/normal.gbapal.lz"); + const u16 gMonPalette_Scorbunny[] = INCBIN_U16("graphics/pokemon/scorbunny/normal.gbapal"); const u32 gMonBackPic_Scorbunny[] = INCBIN_U32("graphics/pokemon/scorbunny/back.4bpp.lz"); - const u32 gMonShinyPalette_Scorbunny[] = INCBIN_U32("graphics/pokemon/scorbunny/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Scorbunny[] = INCBIN_U16("graphics/pokemon/scorbunny/shiny.gbapal"); const u8 gMonIcon_Scorbunny[] = INCBIN_U8("graphics/pokemon/scorbunny/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Scorbunny[] = INCBIN_U8("graphics/pokemon/scorbunny/footprint.1bpp"); @@ -22652,15 +22652,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Scorbunny[] = INCBIN_U16("graphics/pokemon/scorbunny/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Scorbunny[] = INCBIN_U16("graphics/pokemon/scorbunny/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Raboot[] = INCBIN_U16("graphics/pokemon/raboot/normal.gbapal"); const u32 gMonBackPic_Raboot[] = INCBIN_U32("graphics/pokemon/raboot/back.4bpp.lz"); - const u32 gMonShinyPalette_Raboot[] = INCBIN_U32("graphics/pokemon/raboot/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Raboot[] = INCBIN_U16("graphics/pokemon/raboot/shiny.gbapal"); const u8 gMonIcon_Raboot[] = INCBIN_U8("graphics/pokemon/raboot/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Raboot[] = INCBIN_U8("graphics/pokemon/raboot/footprint.1bpp"); @@ -22668,15 +22668,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Raboot[] = INCBIN_U16("graphics/pokemon/raboot/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Raboot[] = INCBIN_U16("graphics/pokemon/raboot/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Cinderace[] = INCBIN_U16("graphics/pokemon/cinderace/normal.gbapal"); const u32 gMonBackPic_Cinderace[] = INCBIN_U32("graphics/pokemon/cinderace/back.4bpp.lz"); - const u32 gMonShinyPalette_Cinderace[] = INCBIN_U32("graphics/pokemon/cinderace/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Cinderace[] = INCBIN_U16("graphics/pokemon/cinderace/shiny.gbapal"); const u8 gMonIcon_Cinderace[] = INCBIN_U8("graphics/pokemon/cinderace/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Cinderace[] = INCBIN_U8("graphics/pokemon/cinderace/footprint.1bpp"); @@ -22684,22 +22684,22 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Cinderace[] = INCBIN_U16("graphics/pokemon/cinderace/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Cinderace[] = INCBIN_U16("graphics/pokemon/cinderace/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if P_GIGANTAMAX_FORMS const u32 gMonFrontPic_CinderaceGmax[] = INCBIN_U32("graphics/pokemon/cinderace/gmax/front.4bpp.lz"); const u32 gMonBackPic_CinderaceGmax[] = INCBIN_U32("graphics/pokemon/cinderace/gmax/back.4bpp.lz"); - const u32 gMonPalette_CinderaceGmax[] = INCBIN_U32("graphics/pokemon/cinderace/gmax/normal.gbapal.lz"); - const u32 gMonShinyPalette_CinderaceGmax[] = INCBIN_U32("graphics/pokemon/cinderace/gmax/shiny.gbapal.lz"); + const u16 gMonPalette_CinderaceGmax[] = INCBIN_U16("graphics/pokemon/cinderace/gmax/normal.gbapal"); + const u16 gMonShinyPalette_CinderaceGmax[] = INCBIN_U16("graphics/pokemon/cinderace/gmax/shiny.gbapal"); const u8 gMonIcon_CinderaceGmax[] = INCBIN_U8("graphics/pokemon/cinderace/gmax/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS // const u32 gObjectEventPic_CinderaceGmax[] = INCBIN_COMP("graphics/pokemon/cinderace/gmax/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - // const u32 gOverworldPalette_CinderaceGmax[] = INCBIN_U32("graphics/pokemon/cinderace/gmax/overworld_normal.gbapal.lz"); - // const u32 gShinyOverworldPalette_CinderaceGmax[] = INCBIN_U32("graphics/pokemon/cinderace/gmax/overworld_shiny.gbapal.lz"); + // const u16 gOverworldPalette_CinderaceGmax[] = INCBIN_U16("graphics/pokemon/cinderace/gmax/overworld_normal.gbapal"); + // const u16 gShinyOverworldPalette_CinderaceGmax[] = INCBIN_U16("graphics/pokemon/cinderace/gmax/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GIGANTAMAX_FORMS @@ -22707,9 +22707,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_SOBBLE const u32 gMonFrontPic_Sobble[] = INCBIN_U32("graphics/pokemon/sobble/front.4bpp.lz"); - const u32 gMonPalette_Sobble[] = INCBIN_U32("graphics/pokemon/sobble/normal.gbapal.lz"); + const u16 gMonPalette_Sobble[] = INCBIN_U16("graphics/pokemon/sobble/normal.gbapal"); const u32 gMonBackPic_Sobble[] = INCBIN_U32("graphics/pokemon/sobble/back.4bpp.lz"); - const u32 gMonShinyPalette_Sobble[] = INCBIN_U32("graphics/pokemon/sobble/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Sobble[] = INCBIN_U16("graphics/pokemon/sobble/shiny.gbapal"); const u8 gMonIcon_Sobble[] = INCBIN_U8("graphics/pokemon/sobble/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Sobble[] = INCBIN_U8("graphics/pokemon/sobble/footprint.1bpp"); @@ -22717,15 +22717,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Sobble[] = INCBIN_U16("graphics/pokemon/sobble/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Sobble[] = INCBIN_U16("graphics/pokemon/sobble/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Drizzile[] = INCBIN_U16("graphics/pokemon/drizzile/normal.gbapal"); const u32 gMonBackPic_Drizzile[] = INCBIN_U32("graphics/pokemon/drizzile/back.4bpp.lz"); - const u32 gMonShinyPalette_Drizzile[] = INCBIN_U32("graphics/pokemon/drizzile/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Drizzile[] = INCBIN_U16("graphics/pokemon/drizzile/shiny.gbapal"); const u8 gMonIcon_Drizzile[] = INCBIN_U8("graphics/pokemon/drizzile/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Drizzile[] = INCBIN_U8("graphics/pokemon/drizzile/footprint.1bpp"); @@ -22733,15 +22733,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Drizzile[] = INCBIN_U16("graphics/pokemon/drizzile/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Drizzile[] = INCBIN_U16("graphics/pokemon/drizzile/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Inteleon[] = INCBIN_U16("graphics/pokemon/inteleon/normal.gbapal"); const u32 gMonBackPic_Inteleon[] = INCBIN_U32("graphics/pokemon/inteleon/back.4bpp.lz"); - const u32 gMonShinyPalette_Inteleon[] = INCBIN_U32("graphics/pokemon/inteleon/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Inteleon[] = INCBIN_U16("graphics/pokemon/inteleon/shiny.gbapal"); const u8 gMonIcon_Inteleon[] = INCBIN_U8("graphics/pokemon/inteleon/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Inteleon[] = INCBIN_U8("graphics/pokemon/inteleon/footprint.1bpp"); @@ -22749,22 +22749,22 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Inteleon[] = INCBIN_U16("graphics/pokemon/inteleon/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Inteleon[] = INCBIN_U16("graphics/pokemon/inteleon/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if P_GIGANTAMAX_FORMS const u32 gMonFrontPic_InteleonGmax[] = INCBIN_U32("graphics/pokemon/inteleon/gmax/front.4bpp.lz"); const u32 gMonBackPic_InteleonGmax[] = INCBIN_U32("graphics/pokemon/inteleon/gmax/back.4bpp.lz"); - const u32 gMonPalette_InteleonGmax[] = INCBIN_U32("graphics/pokemon/inteleon/gmax/normal.gbapal.lz"); - const u32 gMonShinyPalette_InteleonGmax[] = INCBIN_U32("graphics/pokemon/inteleon/gmax/shiny.gbapal.lz"); + const u16 gMonPalette_InteleonGmax[] = INCBIN_U16("graphics/pokemon/inteleon/gmax/normal.gbapal"); + const u16 gMonShinyPalette_InteleonGmax[] = INCBIN_U16("graphics/pokemon/inteleon/gmax/shiny.gbapal"); const u8 gMonIcon_InteleonGmax[] = INCBIN_U8("graphics/pokemon/inteleon/gmax/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS // const u32 gObjectEventPic_InteleonGmax[] = INCBIN_COMP("graphics/pokemon/inteleon/gmax/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - // const u32 gOverworldPalette_InteleonGmax[] = INCBIN_U32("graphics/pokemon/inteleon/gmax/overworld_normal.gbapal.lz"); - // const u32 gShinyOverworldPalette_InteleonGmax[] = INCBIN_U32("graphics/pokemon/inteleon/gmax/overworld_shiny.gbapal.lz"); + // const u16 gOverworldPalette_InteleonGmax[] = INCBIN_U16("graphics/pokemon/inteleon/gmax/overworld_normal.gbapal"); + // const u16 gShinyOverworldPalette_InteleonGmax[] = INCBIN_U16("graphics/pokemon/inteleon/gmax/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GIGANTAMAX_FORMS @@ -22772,9 +22772,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_SKWOVET const u32 gMonFrontPic_Skwovet[] = INCBIN_U32("graphics/pokemon/skwovet/front.4bpp.lz"); - const u32 gMonPalette_Skwovet[] = INCBIN_U32("graphics/pokemon/skwovet/normal.gbapal.lz"); + const u16 gMonPalette_Skwovet[] = INCBIN_U16("graphics/pokemon/skwovet/normal.gbapal"); const u32 gMonBackPic_Skwovet[] = INCBIN_U32("graphics/pokemon/skwovet/back.4bpp.lz"); - const u32 gMonShinyPalette_Skwovet[] = INCBIN_U32("graphics/pokemon/skwovet/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Skwovet[] = INCBIN_U16("graphics/pokemon/skwovet/shiny.gbapal"); const u8 gMonIcon_Skwovet[] = INCBIN_U8("graphics/pokemon/skwovet/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Skwovet[] = INCBIN_U8("graphics/pokemon/skwovet/footprint.1bpp"); @@ -22782,15 +22782,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Skwovet[] = INCBIN_U16("graphics/pokemon/skwovet/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Skwovet[] = INCBIN_U16("graphics/pokemon/skwovet/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Greedent[] = INCBIN_U16("graphics/pokemon/greedent/normal.gbapal"); const u32 gMonBackPic_Greedent[] = INCBIN_U32("graphics/pokemon/greedent/back.4bpp.lz"); - const u32 gMonShinyPalette_Greedent[] = INCBIN_U32("graphics/pokemon/greedent/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Greedent[] = INCBIN_U16("graphics/pokemon/greedent/shiny.gbapal"); const u8 gMonIcon_Greedent[] = INCBIN_U8("graphics/pokemon/greedent/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Greedent[] = INCBIN_U8("graphics/pokemon/greedent/footprint.1bpp"); @@ -22798,17 +22798,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Greedent[] = INCBIN_U16("graphics/pokemon/greedent/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Greedent[] = INCBIN_U16("graphics/pokemon/greedent/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SKWOVET #if P_FAMILY_ROOKIDEE const u32 gMonFrontPic_Rookidee[] = INCBIN_U32("graphics/pokemon/rookidee/anim_front.4bpp.lz"); - const u32 gMonPalette_Rookidee[] = INCBIN_U32("graphics/pokemon/rookidee/normal.gbapal.lz"); + const u16 gMonPalette_Rookidee[] = INCBIN_U16("graphics/pokemon/rookidee/normal.gbapal"); const u32 gMonBackPic_Rookidee[] = INCBIN_U32("graphics/pokemon/rookidee/back.4bpp.lz"); - const u32 gMonShinyPalette_Rookidee[] = INCBIN_U32("graphics/pokemon/rookidee/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Rookidee[] = INCBIN_U16("graphics/pokemon/rookidee/shiny.gbapal"); const u8 gMonIcon_Rookidee[] = INCBIN_U8("graphics/pokemon/rookidee/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Rookidee[] = INCBIN_U8("graphics/pokemon/rookidee/footprint.1bpp"); @@ -22816,15 +22816,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Rookidee[] = INCBIN_U16("graphics/pokemon/rookidee/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Rookidee[] = INCBIN_U16("graphics/pokemon/rookidee/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Corvisquire[] = INCBIN_U16("graphics/pokemon/corvisquire/normal.gbapal"); const u32 gMonBackPic_Corvisquire[] = INCBIN_U32("graphics/pokemon/corvisquire/back.4bpp.lz"); - const u32 gMonShinyPalette_Corvisquire[] = INCBIN_U32("graphics/pokemon/corvisquire/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Corvisquire[] = INCBIN_U16("graphics/pokemon/corvisquire/shiny.gbapal"); const u8 gMonIcon_Corvisquire[] = INCBIN_U8("graphics/pokemon/corvisquire/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Corvisquire[] = INCBIN_U8("graphics/pokemon/corvisquire/footprint.1bpp"); @@ -22832,15 +22832,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Corvisquire[] = INCBIN_U16("graphics/pokemon/corvisquire/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Corvisquire[] = INCBIN_U16("graphics/pokemon/corvisquire/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Corviknight[] = INCBIN_U16("graphics/pokemon/corviknight/normal.gbapal"); const u32 gMonBackPic_Corviknight[] = INCBIN_U32("graphics/pokemon/corviknight/back.4bpp.lz"); - const u32 gMonShinyPalette_Corviknight[] = INCBIN_U32("graphics/pokemon/corviknight/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Corviknight[] = INCBIN_U16("graphics/pokemon/corviknight/shiny.gbapal"); const u8 gMonIcon_Corviknight[] = INCBIN_U8("graphics/pokemon/corviknight/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Corviknight[] = INCBIN_U8("graphics/pokemon/corviknight/footprint.1bpp"); @@ -22848,22 +22848,22 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Corviknight[] = INCBIN_U16("graphics/pokemon/corviknight/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Corviknight[] = INCBIN_U16("graphics/pokemon/corviknight/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if P_GIGANTAMAX_FORMS const u32 gMonFrontPic_CorviknightGmax[] = INCBIN_U32("graphics/pokemon/corviknight/gmax/front.4bpp.lz"); const u32 gMonBackPic_CorviknightGmax[] = INCBIN_U32("graphics/pokemon/corviknight/gmax/back.4bpp.lz"); - const u32 gMonPalette_CorviknightGmax[] = INCBIN_U32("graphics/pokemon/corviknight/gmax/normal.gbapal.lz"); - const u32 gMonShinyPalette_CorviknightGmax[] = INCBIN_U32("graphics/pokemon/corviknight/gmax/shiny.gbapal.lz"); + const u16 gMonPalette_CorviknightGmax[] = INCBIN_U16("graphics/pokemon/corviknight/gmax/normal.gbapal"); + const u16 gMonShinyPalette_CorviknightGmax[] = INCBIN_U16("graphics/pokemon/corviknight/gmax/shiny.gbapal"); const u8 gMonIcon_CorviknightGmax[] = INCBIN_U8("graphics/pokemon/corviknight/gmax/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS // const u32 gObjectEventPic_CorviknightGmax[] = INCBIN_COMP("graphics/pokemon/corviknight/gmax/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - // const u32 gOverworldPalette_CorviknightGmax[] = INCBIN_U32("graphics/pokemon/corviknight/gmax/overworld_normal.gbapal.lz"); - // const u32 gShinyOverworldPalette_CorviknightGmax[] = INCBIN_U32("graphics/pokemon/corviknight/gmax/overworld_shiny.gbapal.lz"); + // const u16 gOverworldPalette_CorviknightGmax[] = INCBIN_U16("graphics/pokemon/corviknight/gmax/overworld_normal.gbapal"); + // const u16 gShinyOverworldPalette_CorviknightGmax[] = INCBIN_U16("graphics/pokemon/corviknight/gmax/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GIGANTAMAX_FORMS @@ -22871,9 +22871,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_BLIPBUG const u32 gMonFrontPic_Blipbug[] = INCBIN_U32("graphics/pokemon/blipbug/front.4bpp.lz"); - const u32 gMonPalette_Blipbug[] = INCBIN_U32("graphics/pokemon/blipbug/normal.gbapal.lz"); + const u16 gMonPalette_Blipbug[] = INCBIN_U16("graphics/pokemon/blipbug/normal.gbapal"); const u32 gMonBackPic_Blipbug[] = INCBIN_U32("graphics/pokemon/blipbug/back.4bpp.lz"); - const u32 gMonShinyPalette_Blipbug[] = INCBIN_U32("graphics/pokemon/blipbug/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Blipbug[] = INCBIN_U16("graphics/pokemon/blipbug/shiny.gbapal"); const u8 gMonIcon_Blipbug[] = INCBIN_U8("graphics/pokemon/blipbug/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Blipbug[] = INCBIN_U8("graphics/pokemon/blipbug/footprint.1bpp"); @@ -22881,15 +22881,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Blipbug[] = INCBIN_U16("graphics/pokemon/blipbug/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Blipbug[] = INCBIN_U16("graphics/pokemon/blipbug/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Dottler[] = INCBIN_U16("graphics/pokemon/dottler/normal.gbapal"); const u32 gMonBackPic_Dottler[] = INCBIN_U32("graphics/pokemon/dottler/back.4bpp.lz"); - const u32 gMonShinyPalette_Dottler[] = INCBIN_U32("graphics/pokemon/dottler/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Dottler[] = INCBIN_U16("graphics/pokemon/dottler/shiny.gbapal"); const u8 gMonIcon_Dottler[] = INCBIN_U8("graphics/pokemon/dottler/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Dottler[] = INCBIN_U8("graphics/pokemon/dottler/footprint.1bpp"); @@ -22897,15 +22897,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Dottler[] = INCBIN_U16("graphics/pokemon/dottler/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Dottler[] = INCBIN_U16("graphics/pokemon/dottler/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Orbeetle[] = INCBIN_U16("graphics/pokemon/orbeetle/normal.gbapal"); const u32 gMonBackPic_Orbeetle[] = INCBIN_U32("graphics/pokemon/orbeetle/back.4bpp.lz"); - const u32 gMonShinyPalette_Orbeetle[] = INCBIN_U32("graphics/pokemon/orbeetle/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Orbeetle[] = INCBIN_U16("graphics/pokemon/orbeetle/shiny.gbapal"); const u8 gMonIcon_Orbeetle[] = INCBIN_U8("graphics/pokemon/orbeetle/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Orbeetle[] = INCBIN_U8("graphics/pokemon/orbeetle/footprint.1bpp"); @@ -22913,22 +22913,22 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Orbeetle[] = INCBIN_U16("graphics/pokemon/orbeetle/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Orbeetle[] = INCBIN_U16("graphics/pokemon/orbeetle/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if P_GIGANTAMAX_FORMS const u32 gMonFrontPic_OrbeetleGmax[] = INCBIN_U32("graphics/pokemon/orbeetle/gmax/front.4bpp.lz"); const u32 gMonBackPic_OrbeetleGmax[] = INCBIN_U32("graphics/pokemon/orbeetle/gmax/back.4bpp.lz"); - const u32 gMonPalette_OrbeetleGmax[] = INCBIN_U32("graphics/pokemon/orbeetle/gmax/normal.gbapal.lz"); - const u32 gMonShinyPalette_OrbeetleGmax[] = INCBIN_U32("graphics/pokemon/orbeetle/gmax/shiny.gbapal.lz"); + const u16 gMonPalette_OrbeetleGmax[] = INCBIN_U16("graphics/pokemon/orbeetle/gmax/normal.gbapal"); + const u16 gMonShinyPalette_OrbeetleGmax[] = INCBIN_U16("graphics/pokemon/orbeetle/gmax/shiny.gbapal"); const u8 gMonIcon_OrbeetleGmax[] = INCBIN_U8("graphics/pokemon/orbeetle/gmax/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS // const u32 gObjectEventPic_OrbeetleGmax[] = INCBIN_COMP("graphics/pokemon/orbeetle/gmax/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - // const u32 gOverworldPalette_OrbeetleGmax[] = INCBIN_U32("graphics/pokemon/orbeetle/gmax/overworld_normal.gbapal.lz"); - // const u32 gShinyOverworldPalette_OrbeetleGmax[] = INCBIN_U32("graphics/pokemon/orbeetle/gmax/overworld_shiny.gbapal.lz"); + // const u16 gOverworldPalette_OrbeetleGmax[] = INCBIN_U16("graphics/pokemon/orbeetle/gmax/overworld_normal.gbapal"); + // const u16 gShinyOverworldPalette_OrbeetleGmax[] = INCBIN_U16("graphics/pokemon/orbeetle/gmax/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GIGANTAMAX_FORMS @@ -22936,9 +22936,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_NICKIT const u32 gMonFrontPic_Nickit[] = INCBIN_U32("graphics/pokemon/nickit/front.4bpp.lz"); - const u32 gMonPalette_Nickit[] = INCBIN_U32("graphics/pokemon/nickit/normal.gbapal.lz"); + const u16 gMonPalette_Nickit[] = INCBIN_U16("graphics/pokemon/nickit/normal.gbapal"); const u32 gMonBackPic_Nickit[] = INCBIN_U32("graphics/pokemon/nickit/back.4bpp.lz"); - const u32 gMonShinyPalette_Nickit[] = INCBIN_U32("graphics/pokemon/nickit/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Nickit[] = INCBIN_U16("graphics/pokemon/nickit/shiny.gbapal"); const u8 gMonIcon_Nickit[] = INCBIN_U8("graphics/pokemon/nickit/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Nickit[] = INCBIN_U8("graphics/pokemon/nickit/footprint.1bpp"); @@ -22946,15 +22946,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Nickit[] = INCBIN_U16("graphics/pokemon/nickit/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Nickit[] = INCBIN_U16("graphics/pokemon/nickit/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Thievul[] = INCBIN_U16("graphics/pokemon/thievul/normal.gbapal"); const u32 gMonBackPic_Thievul[] = INCBIN_U32("graphics/pokemon/thievul/back.4bpp.lz"); - const u32 gMonShinyPalette_Thievul[] = INCBIN_U32("graphics/pokemon/thievul/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Thievul[] = INCBIN_U16("graphics/pokemon/thievul/shiny.gbapal"); const u8 gMonIcon_Thievul[] = INCBIN_U8("graphics/pokemon/thievul/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Thievul[] = INCBIN_U8("graphics/pokemon/thievul/footprint.1bpp"); @@ -22962,17 +22962,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Thievul[] = INCBIN_U16("graphics/pokemon/thievul/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Thievul[] = INCBIN_U16("graphics/pokemon/thievul/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_NICKIT #if P_FAMILY_GOSSIFLEUR const u32 gMonFrontPic_Gossifleur[] = INCBIN_U32("graphics/pokemon/gossifleur/front.4bpp.lz"); - const u32 gMonPalette_Gossifleur[] = INCBIN_U32("graphics/pokemon/gossifleur/normal.gbapal.lz"); + const u16 gMonPalette_Gossifleur[] = INCBIN_U16("graphics/pokemon/gossifleur/normal.gbapal"); const u32 gMonBackPic_Gossifleur[] = INCBIN_U32("graphics/pokemon/gossifleur/back.4bpp.lz"); - const u32 gMonShinyPalette_Gossifleur[] = INCBIN_U32("graphics/pokemon/gossifleur/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Gossifleur[] = INCBIN_U16("graphics/pokemon/gossifleur/shiny.gbapal"); const u8 gMonIcon_Gossifleur[] = INCBIN_U8("graphics/pokemon/gossifleur/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Gossifleur[] = INCBIN_U8("graphics/pokemon/gossifleur/footprint.1bpp"); @@ -22980,15 +22980,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Gossifleur[] = INCBIN_U16("graphics/pokemon/gossifleur/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Gossifleur[] = INCBIN_U16("graphics/pokemon/gossifleur/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Eldegoss[] = INCBIN_U16("graphics/pokemon/eldegoss/normal.gbapal"); const u32 gMonBackPic_Eldegoss[] = INCBIN_U32("graphics/pokemon/eldegoss/back.4bpp.lz"); - const u32 gMonShinyPalette_Eldegoss[] = INCBIN_U32("graphics/pokemon/eldegoss/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Eldegoss[] = INCBIN_U16("graphics/pokemon/eldegoss/shiny.gbapal"); const u8 gMonIcon_Eldegoss[] = INCBIN_U8("graphics/pokemon/eldegoss/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Eldegoss[] = INCBIN_U8("graphics/pokemon/eldegoss/footprint.1bpp"); @@ -22996,17 +22996,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Eldegoss[] = INCBIN_U16("graphics/pokemon/eldegoss/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Eldegoss[] = INCBIN_U16("graphics/pokemon/eldegoss/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_GOSSIFLEUR #if P_FAMILY_WOOLOO const u32 gMonFrontPic_Wooloo[] = INCBIN_U32("graphics/pokemon/wooloo/front.4bpp.lz"); - const u32 gMonPalette_Wooloo[] = INCBIN_U32("graphics/pokemon/wooloo/normal.gbapal.lz"); + const u16 gMonPalette_Wooloo[] = INCBIN_U16("graphics/pokemon/wooloo/normal.gbapal"); const u32 gMonBackPic_Wooloo[] = INCBIN_U32("graphics/pokemon/wooloo/back.4bpp.lz"); - const u32 gMonShinyPalette_Wooloo[] = INCBIN_U32("graphics/pokemon/wooloo/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Wooloo[] = INCBIN_U16("graphics/pokemon/wooloo/shiny.gbapal"); const u8 gMonIcon_Wooloo[] = INCBIN_U8("graphics/pokemon/wooloo/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Wooloo[] = INCBIN_U8("graphics/pokemon/wooloo/footprint.1bpp"); @@ -23014,15 +23014,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Wooloo[] = INCBIN_U16("graphics/pokemon/wooloo/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Wooloo[] = INCBIN_U16("graphics/pokemon/wooloo/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Dubwool[] = INCBIN_U16("graphics/pokemon/dubwool/normal.gbapal"); const u32 gMonBackPic_Dubwool[] = INCBIN_U32("graphics/pokemon/dubwool/back.4bpp.lz"); - const u32 gMonShinyPalette_Dubwool[] = INCBIN_U32("graphics/pokemon/dubwool/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Dubwool[] = INCBIN_U16("graphics/pokemon/dubwool/shiny.gbapal"); const u8 gMonIcon_Dubwool[] = INCBIN_U8("graphics/pokemon/dubwool/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Dubwool[] = INCBIN_U8("graphics/pokemon/dubwool/footprint.1bpp"); @@ -23030,17 +23030,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Dubwool[] = INCBIN_U16("graphics/pokemon/dubwool/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Dubwool[] = INCBIN_U16("graphics/pokemon/dubwool/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_WOOLOO #if P_FAMILY_CHEWTLE const u32 gMonFrontPic_Chewtle[] = INCBIN_U32("graphics/pokemon/chewtle/anim_front.4bpp.lz"); - const u32 gMonPalette_Chewtle[] = INCBIN_U32("graphics/pokemon/chewtle/normal.gbapal.lz"); + const u16 gMonPalette_Chewtle[] = INCBIN_U16("graphics/pokemon/chewtle/normal.gbapal"); const u32 gMonBackPic_Chewtle[] = INCBIN_U32("graphics/pokemon/chewtle/back.4bpp.lz"); - const u32 gMonShinyPalette_Chewtle[] = INCBIN_U32("graphics/pokemon/chewtle/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Chewtle[] = INCBIN_U16("graphics/pokemon/chewtle/shiny.gbapal"); const u8 gMonIcon_Chewtle[] = INCBIN_U8("graphics/pokemon/chewtle/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Chewtle[] = INCBIN_U8("graphics/pokemon/chewtle/footprint.1bpp"); @@ -23048,15 +23048,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Chewtle[] = INCBIN_U16("graphics/pokemon/chewtle/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Chewtle[] = INCBIN_U16("graphics/pokemon/chewtle/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Drednaw[] = INCBIN_U16("graphics/pokemon/drednaw/normal.gbapal"); const u32 gMonBackPic_Drednaw[] = INCBIN_U32("graphics/pokemon/drednaw/back.4bpp.lz"); - const u32 gMonShinyPalette_Drednaw[] = INCBIN_U32("graphics/pokemon/drednaw/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Drednaw[] = INCBIN_U16("graphics/pokemon/drednaw/shiny.gbapal"); const u8 gMonIcon_Drednaw[] = INCBIN_U8("graphics/pokemon/drednaw/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Drednaw[] = INCBIN_U8("graphics/pokemon/drednaw/footprint.1bpp"); @@ -23064,22 +23064,22 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Drednaw[] = INCBIN_U16("graphics/pokemon/drednaw/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Drednaw[] = INCBIN_U16("graphics/pokemon/drednaw/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if P_GIGANTAMAX_FORMS const u32 gMonFrontPic_DrednawGmax[] = INCBIN_U32("graphics/pokemon/drednaw/gmax/front.4bpp.lz"); const u32 gMonBackPic_DrednawGmax[] = INCBIN_U32("graphics/pokemon/drednaw/gmax/back.4bpp.lz"); - const u32 gMonPalette_DrednawGmax[] = INCBIN_U32("graphics/pokemon/drednaw/gmax/normal.gbapal.lz"); - const u32 gMonShinyPalette_DrednawGmax[] = INCBIN_U32("graphics/pokemon/drednaw/gmax/shiny.gbapal.lz"); + const u16 gMonPalette_DrednawGmax[] = INCBIN_U16("graphics/pokemon/drednaw/gmax/normal.gbapal"); + const u16 gMonShinyPalette_DrednawGmax[] = INCBIN_U16("graphics/pokemon/drednaw/gmax/shiny.gbapal"); const u8 gMonIcon_DrednawGmax[] = INCBIN_U8("graphics/pokemon/drednaw/gmax/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS // const u32 gObjectEventPic_DrednawGmax[] = INCBIN_COMP("graphics/pokemon/drednaw/gmax/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - // const u32 gOverworldPalette_DrednawGmax[] = INCBIN_U32("graphics/pokemon/drednaw/gmax/overworld_normal.gbapal.lz"); - // const u32 gShinyOverworldPalette_DrednawGmax[] = INCBIN_U32("graphics/pokemon/drednaw/gmax/overworld_shiny.gbapal.lz"); + // const u16 gOverworldPalette_DrednawGmax[] = INCBIN_U16("graphics/pokemon/drednaw/gmax/overworld_normal.gbapal"); + // const u16 gShinyOverworldPalette_DrednawGmax[] = INCBIN_U16("graphics/pokemon/drednaw/gmax/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GIGANTAMAX_FORMS @@ -23087,9 +23087,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_YAMPER const u32 gMonFrontPic_Yamper[] = INCBIN_U32("graphics/pokemon/yamper/front.4bpp.lz"); - const u32 gMonPalette_Yamper[] = INCBIN_U32("graphics/pokemon/yamper/normal.gbapal.lz"); + const u16 gMonPalette_Yamper[] = INCBIN_U16("graphics/pokemon/yamper/normal.gbapal"); const u32 gMonBackPic_Yamper[] = INCBIN_U32("graphics/pokemon/yamper/back.4bpp.lz"); - const u32 gMonShinyPalette_Yamper[] = INCBIN_U32("graphics/pokemon/yamper/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Yamper[] = INCBIN_U16("graphics/pokemon/yamper/shiny.gbapal"); const u8 gMonIcon_Yamper[] = INCBIN_U8("graphics/pokemon/yamper/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Yamper[] = INCBIN_U8("graphics/pokemon/yamper/footprint.1bpp"); @@ -23097,15 +23097,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Yamper[] = INCBIN_U16("graphics/pokemon/yamper/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Yamper[] = INCBIN_U16("graphics/pokemon/yamper/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Boltund[] = INCBIN_U16("graphics/pokemon/boltund/normal.gbapal"); const u32 gMonBackPic_Boltund[] = INCBIN_U32("graphics/pokemon/boltund/back.4bpp.lz"); - const u32 gMonShinyPalette_Boltund[] = INCBIN_U32("graphics/pokemon/boltund/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Boltund[] = INCBIN_U16("graphics/pokemon/boltund/shiny.gbapal"); const u8 gMonIcon_Boltund[] = INCBIN_U8("graphics/pokemon/boltund/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Boltund[] = INCBIN_U8("graphics/pokemon/boltund/footprint.1bpp"); @@ -23113,17 +23113,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Boltund[] = INCBIN_U16("graphics/pokemon/boltund/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Boltund[] = INCBIN_U16("graphics/pokemon/boltund/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_YAMPER #if P_FAMILY_ROLYCOLY const u32 gMonFrontPic_Rolycoly[] = INCBIN_U32("graphics/pokemon/rolycoly/anim_front.4bpp.lz"); - const u32 gMonPalette_Rolycoly[] = INCBIN_U32("graphics/pokemon/rolycoly/normal.gbapal.lz"); + const u16 gMonPalette_Rolycoly[] = INCBIN_U16("graphics/pokemon/rolycoly/normal.gbapal"); const u32 gMonBackPic_Rolycoly[] = INCBIN_U32("graphics/pokemon/rolycoly/back.4bpp.lz"); - const u32 gMonShinyPalette_Rolycoly[] = INCBIN_U32("graphics/pokemon/rolycoly/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Rolycoly[] = INCBIN_U16("graphics/pokemon/rolycoly/shiny.gbapal"); const u8 gMonIcon_Rolycoly[] = INCBIN_U8("graphics/pokemon/rolycoly/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Rolycoly[] = INCBIN_U8("graphics/pokemon/rolycoly/footprint.1bpp"); @@ -23131,15 +23131,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Rolycoly[] = INCBIN_U16("graphics/pokemon/rolycoly/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Rolycoly[] = INCBIN_U16("graphics/pokemon/rolycoly/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Carkol[] = INCBIN_U16("graphics/pokemon/carkol/normal.gbapal"); const u32 gMonBackPic_Carkol[] = INCBIN_U32("graphics/pokemon/carkol/back.4bpp.lz"); - const u32 gMonShinyPalette_Carkol[] = INCBIN_U32("graphics/pokemon/carkol/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Carkol[] = INCBIN_U16("graphics/pokemon/carkol/shiny.gbapal"); const u8 gMonIcon_Carkol[] = INCBIN_U8("graphics/pokemon/carkol/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Carkol[] = INCBIN_U8("graphics/pokemon/carkol/footprint.1bpp"); @@ -23147,15 +23147,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Carkol[] = INCBIN_U16("graphics/pokemon/carkol/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Carkol[] = INCBIN_U16("graphics/pokemon/carkol/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Coalossal[] = INCBIN_U16("graphics/pokemon/coalossal/normal.gbapal"); const u32 gMonBackPic_Coalossal[] = INCBIN_U32("graphics/pokemon/coalossal/back.4bpp.lz"); - const u32 gMonShinyPalette_Coalossal[] = INCBIN_U32("graphics/pokemon/coalossal/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Coalossal[] = INCBIN_U16("graphics/pokemon/coalossal/shiny.gbapal"); const u8 gMonIcon_Coalossal[] = INCBIN_U8("graphics/pokemon/coalossal/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Coalossal[] = INCBIN_U8("graphics/pokemon/coalossal/footprint.1bpp"); @@ -23163,22 +23163,22 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Coalossal[] = INCBIN_U16("graphics/pokemon/coalossal/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Coalossal[] = INCBIN_U16("graphics/pokemon/coalossal/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if P_GIGANTAMAX_FORMS const u32 gMonFrontPic_CoalossalGmax[] = INCBIN_U32("graphics/pokemon/coalossal/gmax/front.4bpp.lz"); const u32 gMonBackPic_CoalossalGmax[] = INCBIN_U32("graphics/pokemon/coalossal/gmax/back.4bpp.lz"); - const u32 gMonPalette_CoalossalGmax[] = INCBIN_U32("graphics/pokemon/coalossal/gmax/normal.gbapal.lz"); - const u32 gMonShinyPalette_CoalossalGmax[] = INCBIN_U32("graphics/pokemon/coalossal/gmax/shiny.gbapal.lz"); + const u16 gMonPalette_CoalossalGmax[] = INCBIN_U16("graphics/pokemon/coalossal/gmax/normal.gbapal"); + const u16 gMonShinyPalette_CoalossalGmax[] = INCBIN_U16("graphics/pokemon/coalossal/gmax/shiny.gbapal"); const u8 gMonIcon_CoalossalGmax[] = INCBIN_U8("graphics/pokemon/coalossal/gmax/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS // const u32 gObjectEventPic_CoalossalGmax[] = INCBIN_COMP("graphics/pokemon/coalossal/gmax/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - // const u32 gOverworldPalette_CoalossalGmax[] = INCBIN_U32("graphics/pokemon/coalossal/gmax/overworld_normal.gbapal.lz"); - // const u32 gShinyOverworldPalette_CoalossalGmax[] = INCBIN_U32("graphics/pokemon/coalossal/gmax/overworld_shiny.gbapal.lz"); + // const u16 gOverworldPalette_CoalossalGmax[] = INCBIN_U16("graphics/pokemon/coalossal/gmax/overworld_normal.gbapal"); + // const u16 gShinyOverworldPalette_CoalossalGmax[] = INCBIN_U16("graphics/pokemon/coalossal/gmax/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GIGANTAMAX_FORMS @@ -23186,9 +23186,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_APPLIN const u32 gMonFrontPic_Applin[] = INCBIN_U32("graphics/pokemon/applin/anim_front.4bpp.lz"); - const u32 gMonPalette_Applin[] = INCBIN_U32("graphics/pokemon/applin/normal.gbapal.lz"); + const u16 gMonPalette_Applin[] = INCBIN_U16("graphics/pokemon/applin/normal.gbapal"); const u32 gMonBackPic_Applin[] = INCBIN_U32("graphics/pokemon/applin/back.4bpp.lz"); - const u32 gMonShinyPalette_Applin[] = INCBIN_U32("graphics/pokemon/applin/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Applin[] = INCBIN_U16("graphics/pokemon/applin/shiny.gbapal"); const u8 gMonIcon_Applin[] = INCBIN_U8("graphics/pokemon/applin/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Applin[] = INCBIN_U8("graphics/pokemon/applin/footprint.1bpp"); @@ -23196,15 +23196,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Applin[] = INCBIN_U16("graphics/pokemon/applin/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Applin[] = INCBIN_U16("graphics/pokemon/applin/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Flapple[] = INCBIN_U16("graphics/pokemon/flapple/normal.gbapal"); const u32 gMonBackPic_Flapple[] = INCBIN_U32("graphics/pokemon/flapple/back.4bpp.lz"); - const u32 gMonShinyPalette_Flapple[] = INCBIN_U32("graphics/pokemon/flapple/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Flapple[] = INCBIN_U16("graphics/pokemon/flapple/shiny.gbapal"); const u8 gMonIcon_Flapple[] = INCBIN_U8("graphics/pokemon/flapple/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Flapple[] = INCBIN_U8("graphics/pokemon/flapple/footprint.1bpp"); @@ -23212,30 +23212,30 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Flapple[] = INCBIN_U16("graphics/pokemon/flapple/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Flapple[] = INCBIN_U16("graphics/pokemon/flapple/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if P_GIGANTAMAX_FORMS const u32 gMonFrontPic_FlappleGmax[] = INCBIN_U32("graphics/pokemon/flapple/gmax/front.4bpp.lz"); const u32 gMonBackPic_FlappleGmax[] = INCBIN_U32("graphics/pokemon/flapple/gmax/back.4bpp.lz"); - const u32 gMonPalette_FlappleGmax[] = INCBIN_U32("graphics/pokemon/flapple/gmax/normal.gbapal.lz"); - const u32 gMonShinyPalette_FlappleGmax[] = INCBIN_U32("graphics/pokemon/flapple/gmax/shiny.gbapal.lz"); + const u16 gMonPalette_FlappleGmax[] = INCBIN_U16("graphics/pokemon/flapple/gmax/normal.gbapal"); + const u16 gMonShinyPalette_FlappleGmax[] = INCBIN_U16("graphics/pokemon/flapple/gmax/shiny.gbapal"); const u8 gMonIcon_FlappleGmax[] = INCBIN_U8("graphics/pokemon/flapple/gmax/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS // const u32 gObjectEventPic_FlappleGmax[] = INCBIN_COMP("graphics/pokemon/flapple/gmax/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - // const u32 gOverworldPalette_FlappleGmax[] = INCBIN_U32("graphics/pokemon/flapple/gmax/overworld_normal.gbapal.lz"); - // const u32 gShinyOverworldPalette_FlappleGmax[] = INCBIN_U32("graphics/pokemon/flapple/gmax/overworld_shiny.gbapal.lz"); + // const u16 gOverworldPalette_FlappleGmax[] = INCBIN_U16("graphics/pokemon/flapple/gmax/overworld_normal.gbapal"); + // const u16 gShinyOverworldPalette_FlappleGmax[] = INCBIN_U16("graphics/pokemon/flapple/gmax/overworld_shiny.gbapal"); #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"); - const u32 gMonPalette_Appletun[] = INCBIN_U32("graphics/pokemon/appletun/normal.gbapal.lz"); + const u16 gMonPalette_Appletun[] = INCBIN_U16("graphics/pokemon/appletun/normal.gbapal"); const u32 gMonBackPic_Appletun[] = INCBIN_U32("graphics/pokemon/appletun/back.4bpp.lz"); - const u32 gMonShinyPalette_Appletun[] = INCBIN_U32("graphics/pokemon/appletun/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Appletun[] = INCBIN_U16("graphics/pokemon/appletun/shiny.gbapal"); const u8 gMonIcon_Appletun[] = INCBIN_U8("graphics/pokemon/appletun/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Appletun[] = INCBIN_U8("graphics/pokemon/appletun/footprint.1bpp"); @@ -23243,31 +23243,31 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Appletun[] = INCBIN_U16("graphics/pokemon/appletun/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Appletun[] = INCBIN_U16("graphics/pokemon/appletun/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if P_GIGANTAMAX_FORMS const u32 gMonFrontPic_AppletunGmax[] = INCBIN_U32("graphics/pokemon/appletun/gmax/front.4bpp.lz"); const u32 gMonBackPic_AppletunGmax[] = INCBIN_U32("graphics/pokemon/appletun/gmax/back.4bpp.lz"); - const u32 gMonPalette_AppletunGmax[] = INCBIN_U32("graphics/pokemon/appletun/gmax/normal.gbapal.lz"); - const u32 gMonShinyPalette_AppletunGmax[] = INCBIN_U32("graphics/pokemon/appletun/gmax/shiny.gbapal.lz"); + const u16 gMonPalette_AppletunGmax[] = INCBIN_U16("graphics/pokemon/appletun/gmax/normal.gbapal"); + const u16 gMonShinyPalette_AppletunGmax[] = INCBIN_U16("graphics/pokemon/appletun/gmax/shiny.gbapal"); const u8 gMonIcon_AppletunGmax[] = INCBIN_U8("graphics/pokemon/appletun/gmax/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS // const u32 gObjectEventPic_AppletunGmax[] = INCBIN_COMP("graphics/pokemon/appletun/gmax/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - // const u32 gOverworldPalette_AppletunGmax[] = INCBIN_U32("graphics/pokemon/appletun/gmax/overworld_normal.gbapal.lz"); - // const u32 gShinyOverworldPalette_AppletunGmax[] = INCBIN_U32("graphics/pokemon/appletun/gmax/overworld_shiny.gbapal.lz"); + // const u16 gOverworldPalette_AppletunGmax[] = INCBIN_U16("graphics/pokemon/appletun/gmax/overworld_normal.gbapal"); + // const u16 gShinyOverworldPalette_AppletunGmax[] = INCBIN_U16("graphics/pokemon/appletun/gmax/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GIGANTAMAX_FORMS #if P_GEN_9_CROSS_EVOS const u32 gMonFrontPic_Dipplin[] = INCBIN_U32("graphics/pokemon/dipplin/front.4bpp.lz"); - const u32 gMonPalette_Dipplin[] = INCBIN_U32("graphics/pokemon/dipplin/normal.gbapal.lz"); + const u16 gMonPalette_Dipplin[] = INCBIN_U16("graphics/pokemon/dipplin/normal.gbapal"); const u32 gMonBackPic_Dipplin[] = INCBIN_U32("graphics/pokemon/dipplin/back.4bpp.lz"); - const u32 gMonShinyPalette_Dipplin[] = INCBIN_U32("graphics/pokemon/dipplin/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Dipplin[] = INCBIN_U16("graphics/pokemon/dipplin/shiny.gbapal"); const u8 gMonIcon_Dipplin[] = INCBIN_U8("graphics/pokemon/dipplin/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Dipplin[] = INCBIN_U8("graphics/pokemon/dipplin/footprint.1bpp"); @@ -23275,15 +23275,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Dipplin[] = INCBIN_U16("graphics/pokemon/dipplin/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Dipplin[] = INCBIN_U16("graphics/pokemon/dipplin/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Hydrapple[] = INCBIN_U16("graphics/pokemon/hydrapple/normal.gbapal"); const u32 gMonBackPic_Hydrapple[] = INCBIN_U32("graphics/pokemon/hydrapple/back.4bpp.lz"); - const u32 gMonShinyPalette_Hydrapple[] = INCBIN_U32("graphics/pokemon/hydrapple/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Hydrapple[] = INCBIN_U16("graphics/pokemon/hydrapple/shiny.gbapal"); const u8 gMonIcon_Hydrapple[] = INCBIN_U8("graphics/pokemon/hydrapple/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Hydrapple[] = INCBIN_U8("graphics/pokemon/hydrapple/footprint.1bpp"); @@ -23291,8 +23291,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Hydrapple[] = INCBIN_U16("graphics/pokemon/hydrapple/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Hydrapple[] = INCBIN_U16("graphics/pokemon/hydrapple/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_9_CROSS_EVOS @@ -23300,9 +23300,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_SILICOBRA const u32 gMonFrontPic_Silicobra[] = INCBIN_U32("graphics/pokemon/silicobra/front.4bpp.lz"); - const u32 gMonPalette_Silicobra[] = INCBIN_U32("graphics/pokemon/silicobra/normal.gbapal.lz"); + const u16 gMonPalette_Silicobra[] = INCBIN_U16("graphics/pokemon/silicobra/normal.gbapal"); const u32 gMonBackPic_Silicobra[] = INCBIN_U32("graphics/pokemon/silicobra/back.4bpp.lz"); - const u32 gMonShinyPalette_Silicobra[] = INCBIN_U32("graphics/pokemon/silicobra/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Silicobra[] = INCBIN_U16("graphics/pokemon/silicobra/shiny.gbapal"); const u8 gMonIcon_Silicobra[] = INCBIN_U8("graphics/pokemon/silicobra/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Silicobra[] = INCBIN_U8("graphics/pokemon/silicobra/footprint.1bpp"); @@ -23310,15 +23310,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Silicobra[] = INCBIN_U16("graphics/pokemon/silicobra/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Silicobra[] = INCBIN_U16("graphics/pokemon/silicobra/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Sandaconda[] = INCBIN_U16("graphics/pokemon/sandaconda/normal.gbapal"); const u32 gMonBackPic_Sandaconda[] = INCBIN_U32("graphics/pokemon/sandaconda/back.4bpp.lz"); - const u32 gMonShinyPalette_Sandaconda[] = INCBIN_U32("graphics/pokemon/sandaconda/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Sandaconda[] = INCBIN_U16("graphics/pokemon/sandaconda/shiny.gbapal"); const u8 gMonIcon_Sandaconda[] = INCBIN_U8("graphics/pokemon/sandaconda/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Sandaconda[] = INCBIN_U8("graphics/pokemon/sandaconda/footprint.1bpp"); @@ -23326,22 +23326,22 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Sandaconda[] = INCBIN_U16("graphics/pokemon/sandaconda/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Sandaconda[] = INCBIN_U16("graphics/pokemon/sandaconda/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if P_GIGANTAMAX_FORMS const u32 gMonFrontPic_SandacondaGmax[] = INCBIN_U32("graphics/pokemon/sandaconda/gmax/front.4bpp.lz"); const u32 gMonBackPic_SandacondaGmax[] = INCBIN_U32("graphics/pokemon/sandaconda/gmax/back.4bpp.lz"); - const u32 gMonPalette_SandacondaGmax[] = INCBIN_U32("graphics/pokemon/sandaconda/gmax/normal.gbapal.lz"); - const u32 gMonShinyPalette_SandacondaGmax[] = INCBIN_U32("graphics/pokemon/sandaconda/gmax/shiny.gbapal.lz"); + const u16 gMonPalette_SandacondaGmax[] = INCBIN_U16("graphics/pokemon/sandaconda/gmax/normal.gbapal"); + const u16 gMonShinyPalette_SandacondaGmax[] = INCBIN_U16("graphics/pokemon/sandaconda/gmax/shiny.gbapal"); const u8 gMonIcon_SandacondaGmax[] = INCBIN_U8("graphics/pokemon/sandaconda/gmax/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS // const u32 gObjectEventPic_SandacondaGmax[] = INCBIN_COMP("graphics/pokemon/sandaconda/gmax/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - // const u32 gOverworldPalette_SandacondaGmax[] = INCBIN_U32("graphics/pokemon/sandaconda/gmax/overworld_normal.gbapal.lz"); - // const u32 gShinyOverworldPalette_SandacondaGmax[] = INCBIN_U32("graphics/pokemon/sandaconda/gmax/overworld_shiny.gbapal.lz"); + // const u16 gOverworldPalette_SandacondaGmax[] = INCBIN_U16("graphics/pokemon/sandaconda/gmax/overworld_normal.gbapal"); + // const u16 gShinyOverworldPalette_SandacondaGmax[] = INCBIN_U16("graphics/pokemon/sandaconda/gmax/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GIGANTAMAX_FORMS @@ -23349,9 +23349,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_CRAMORANT const u32 gMonFrontPic_Cramorant[] = INCBIN_U32("graphics/pokemon/cramorant/front.4bpp.lz"); - const u32 gMonPalette_Cramorant[] = INCBIN_U32("graphics/pokemon/cramorant/normal.gbapal.lz"); + const u16 gMonPalette_Cramorant[] = INCBIN_U16("graphics/pokemon/cramorant/normal.gbapal"); const u32 gMonBackPic_Cramorant[] = INCBIN_U32("graphics/pokemon/cramorant/back.4bpp.lz"); - const u32 gMonShinyPalette_Cramorant[] = INCBIN_U32("graphics/pokemon/cramorant/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Cramorant[] = INCBIN_U16("graphics/pokemon/cramorant/shiny.gbapal"); const u8 gMonIcon_Cramorant[] = INCBIN_U8("graphics/pokemon/cramorant/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Cramorant[] = INCBIN_U8("graphics/pokemon/cramorant/footprint.1bpp"); @@ -23359,43 +23359,43 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Cramorant[] = INCBIN_U16("graphics/pokemon/cramorant/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Cramorant[] = INCBIN_U16("graphics/pokemon/cramorant/overworld_shiny.gbapal"); #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 u16 gMonPalette_CramorantGulping[] = INCBIN_U16("graphics/pokemon/cramorant/gulping/normal.gbapal"); 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 u16 gMonShinyPalette_CramorantGulping[] = INCBIN_U16("graphics/pokemon/cramorant/gulping/shiny.gbapal"); 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"); + // const u16 gOverworldPalette_CramorantGulping[] = INCBIN_U16("graphics/pokemon/cramorant/gulping/overworld_normal.gbapal"); + // const u16 gShinyOverworldPalette_CramorantGulping[] = INCBIN_U16("graphics/pokemon/cramorant/gulping/overworld_shiny.gbapal"); #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 u16 gMonPalette_CramorantGorging[] = INCBIN_U16("graphics/pokemon/cramorant/gorging/normal.gbapal"); 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 u16 gMonShinyPalette_CramorantGorging[] = INCBIN_U16("graphics/pokemon/cramorant/gorging/shiny.gbapal"); 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"); + // const u16 gOverworldPalette_CramorantGorging[] = INCBIN_U16("graphics/pokemon/cramorant/gorging/overworld_normal.gbapal"); + // const u16 gShinyOverworldPalette_CramorantGorging[] = INCBIN_U16("graphics/pokemon/cramorant/gorging/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_CRAMORANT #if P_FAMILY_ARROKUDA const u32 gMonFrontPic_Arrokuda[] = INCBIN_U32("graphics/pokemon/arrokuda/front.4bpp.lz"); - const u32 gMonPalette_Arrokuda[] = INCBIN_U32("graphics/pokemon/arrokuda/normal.gbapal.lz"); + const u16 gMonPalette_Arrokuda[] = INCBIN_U16("graphics/pokemon/arrokuda/normal.gbapal"); const u32 gMonBackPic_Arrokuda[] = INCBIN_U32("graphics/pokemon/arrokuda/back.4bpp.lz"); - const u32 gMonShinyPalette_Arrokuda[] = INCBIN_U32("graphics/pokemon/arrokuda/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Arrokuda[] = INCBIN_U16("graphics/pokemon/arrokuda/shiny.gbapal"); const u8 gMonIcon_Arrokuda[] = INCBIN_U8("graphics/pokemon/arrokuda/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Arrokuda[] = INCBIN_U8("graphics/pokemon/arrokuda/footprint.1bpp"); @@ -23403,15 +23403,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Arrokuda[] = INCBIN_U16("graphics/pokemon/arrokuda/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Arrokuda[] = INCBIN_U16("graphics/pokemon/arrokuda/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Barraskewda[] = INCBIN_U16("graphics/pokemon/barraskewda/normal.gbapal"); const u32 gMonBackPic_Barraskewda[] = INCBIN_U32("graphics/pokemon/barraskewda/back.4bpp.lz"); - const u32 gMonShinyPalette_Barraskewda[] = INCBIN_U32("graphics/pokemon/barraskewda/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Barraskewda[] = INCBIN_U16("graphics/pokemon/barraskewda/shiny.gbapal"); const u8 gMonIcon_Barraskewda[] = INCBIN_U8("graphics/pokemon/barraskewda/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Barraskewda[] = INCBIN_U8("graphics/pokemon/barraskewda/footprint.1bpp"); @@ -23419,17 +23419,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Barraskewda[] = INCBIN_U16("graphics/pokemon/barraskewda/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Barraskewda[] = INCBIN_U16("graphics/pokemon/barraskewda/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_ARROKUDA #if P_FAMILY_TOXEL const u32 gMonFrontPic_Toxel[] = INCBIN_U32("graphics/pokemon/toxel/front.4bpp.lz"); - const u32 gMonPalette_Toxel[] = INCBIN_U32("graphics/pokemon/toxel/normal.gbapal.lz"); + const u16 gMonPalette_Toxel[] = INCBIN_U16("graphics/pokemon/toxel/normal.gbapal"); const u32 gMonBackPic_Toxel[] = INCBIN_U32("graphics/pokemon/toxel/back.4bpp.lz"); - const u32 gMonShinyPalette_Toxel[] = INCBIN_U32("graphics/pokemon/toxel/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Toxel[] = INCBIN_U16("graphics/pokemon/toxel/shiny.gbapal"); const u8 gMonIcon_Toxel[] = INCBIN_U8("graphics/pokemon/toxel/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Toxel[] = INCBIN_U8("graphics/pokemon/toxel/footprint.1bpp"); @@ -23437,15 +23437,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Toxel[] = INCBIN_U16("graphics/pokemon/toxel/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Toxel[] = INCBIN_U16("graphics/pokemon/toxel/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_ToxtricityAmped[] = INCBIN_U16("graphics/pokemon/toxtricity/normal.gbapal"); const u32 gMonBackPic_ToxtricityAmped[] = INCBIN_U32("graphics/pokemon/toxtricity/back.4bpp.lz"); - const u32 gMonShinyPalette_ToxtricityAmped[] = INCBIN_U32("graphics/pokemon/toxtricity/shiny.gbapal.lz"); + const u16 gMonShinyPalette_ToxtricityAmped[] = INCBIN_U16("graphics/pokemon/toxtricity/shiny.gbapal"); const u8 gMonIcon_ToxtricityAmped[] = INCBIN_U8("graphics/pokemon/toxtricity/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Toxtricity[] = INCBIN_U8("graphics/pokemon/toxtricity/footprint.1bpp"); @@ -23453,35 +23453,35 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_ToxtricityAmped[] = INCBIN_U16("graphics/pokemon/toxtricity/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_ToxtricityAmped[] = INCBIN_U16("graphics/pokemon/toxtricity/overworld_shiny.gbapal"); #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 u16 gMonPalette_ToxtricityLowKey[] = INCBIN_U16("graphics/pokemon/toxtricity/low_key/normal.gbapal"); 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 u16 gMonShinyPalette_ToxtricityLowKey[] = INCBIN_U16("graphics/pokemon/toxtricity/low_key/shiny.gbapal"); 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"); + const u16 gOverworldPalette_ToxtricityLowKey[] = INCBIN_U16("graphics/pokemon/toxtricity/low_key/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_ToxtricityLowKey[] = INCBIN_U16("graphics/pokemon/toxtricity/low_key/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if P_GIGANTAMAX_FORMS const u32 gMonFrontPic_ToxtricityGmax[] = INCBIN_U32("graphics/pokemon/toxtricity/gmax/front.4bpp.lz"); const u32 gMonBackPic_ToxtricityGmax[] = INCBIN_U32("graphics/pokemon/toxtricity/gmax/back.4bpp.lz"); - const u32 gMonPalette_ToxtricityGmax[] = INCBIN_U32("graphics/pokemon/toxtricity/gmax/normal.gbapal.lz"); - const u32 gMonShinyPalette_ToxtricityGmax[] = INCBIN_U32("graphics/pokemon/toxtricity/gmax/shiny.gbapal.lz"); + const u16 gMonPalette_ToxtricityGmax[] = INCBIN_U16("graphics/pokemon/toxtricity/gmax/normal.gbapal"); + const u16 gMonShinyPalette_ToxtricityGmax[] = INCBIN_U16("graphics/pokemon/toxtricity/gmax/shiny.gbapal"); const u8 gMonIcon_ToxtricityGmax[] = INCBIN_U8("graphics/pokemon/toxtricity/gmax/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS // const u32 gObjectEventPic_ToxtricityGmax[] = INCBIN_COMP("graphics/pokemon/toxtricity/gmax/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - // const u32 gOverworldPalette_ToxtricityGmax[] = INCBIN_U32("graphics/pokemon/toxtricity/gmax/overworld_normal.gbapal.lz"); - // const u32 gShinyOverworldPalette_ToxtricityGmax[] = INCBIN_U32("graphics/pokemon/toxtricity/gmax/overworld_shiny.gbapal.lz"); + // const u16 gOverworldPalette_ToxtricityGmax[] = INCBIN_U16("graphics/pokemon/toxtricity/gmax/overworld_normal.gbapal"); + // const u16 gShinyOverworldPalette_ToxtricityGmax[] = INCBIN_U16("graphics/pokemon/toxtricity/gmax/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GIGANTAMAX_FORMS @@ -23489,9 +23489,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_SIZZLIPEDE const u32 gMonFrontPic_Sizzlipede[] = INCBIN_U32("graphics/pokemon/sizzlipede/anim_front.4bpp.lz"); - const u32 gMonPalette_Sizzlipede[] = INCBIN_U32("graphics/pokemon/sizzlipede/normal.gbapal.lz"); + const u16 gMonPalette_Sizzlipede[] = INCBIN_U16("graphics/pokemon/sizzlipede/normal.gbapal"); const u32 gMonBackPic_Sizzlipede[] = INCBIN_U32("graphics/pokemon/sizzlipede/back.4bpp.lz"); - const u32 gMonShinyPalette_Sizzlipede[] = INCBIN_U32("graphics/pokemon/sizzlipede/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Sizzlipede[] = INCBIN_U16("graphics/pokemon/sizzlipede/shiny.gbapal"); const u8 gMonIcon_Sizzlipede[] = INCBIN_U8("graphics/pokemon/sizzlipede/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Sizzlipede[] = INCBIN_U8("graphics/pokemon/sizzlipede/footprint.1bpp"); @@ -23499,15 +23499,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Sizzlipede[] = INCBIN_U16("graphics/pokemon/sizzlipede/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Sizzlipede[] = INCBIN_U16("graphics/pokemon/sizzlipede/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Centiskorch[] = INCBIN_U16("graphics/pokemon/centiskorch/normal.gbapal"); const u32 gMonBackPic_Centiskorch[] = INCBIN_U32("graphics/pokemon/centiskorch/back.4bpp.lz"); - const u32 gMonShinyPalette_Centiskorch[] = INCBIN_U32("graphics/pokemon/centiskorch/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Centiskorch[] = INCBIN_U16("graphics/pokemon/centiskorch/shiny.gbapal"); const u8 gMonIcon_Centiskorch[] = INCBIN_U8("graphics/pokemon/centiskorch/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Centiskorch[] = INCBIN_U8("graphics/pokemon/centiskorch/footprint.1bpp"); @@ -23515,22 +23515,22 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Centiskorch[] = INCBIN_U16("graphics/pokemon/centiskorch/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Centiskorch[] = INCBIN_U16("graphics/pokemon/centiskorch/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if P_GIGANTAMAX_FORMS const u32 gMonFrontPic_CentiskorchGmax[] = INCBIN_U32("graphics/pokemon/centiskorch/gmax/front.4bpp.lz"); const u32 gMonBackPic_CentiskorchGmax[] = INCBIN_U32("graphics/pokemon/centiskorch/gmax/back.4bpp.lz"); - const u32 gMonPalette_CentiskorchGmax[] = INCBIN_U32("graphics/pokemon/centiskorch/gmax/normal.gbapal.lz"); - const u32 gMonShinyPalette_CentiskorchGmax[] = INCBIN_U32("graphics/pokemon/centiskorch/gmax/shiny.gbapal.lz"); + const u16 gMonPalette_CentiskorchGmax[] = INCBIN_U16("graphics/pokemon/centiskorch/gmax/normal.gbapal"); + const u16 gMonShinyPalette_CentiskorchGmax[] = INCBIN_U16("graphics/pokemon/centiskorch/gmax/shiny.gbapal"); const u8 gMonIcon_CentiskorchGmax[] = INCBIN_U8("graphics/pokemon/centiskorch/gmax/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS // const u32 gObjectEventPic_CentiskorchGmax[] = INCBIN_COMP("graphics/pokemon/centiskorch/gmax/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - // const u32 gOverworldPalette_CentiskorchGmax[] = INCBIN_U32("graphics/pokemon/centiskorch/gmax/overworld_normal.gbapal.lz"); - // const u32 gShinyOverworldPalette_CentiskorchGmax[] = INCBIN_U32("graphics/pokemon/centiskorch/gmax/overworld_shiny.gbapal.lz"); + // const u16 gOverworldPalette_CentiskorchGmax[] = INCBIN_U16("graphics/pokemon/centiskorch/gmax/overworld_normal.gbapal"); + // const u16 gShinyOverworldPalette_CentiskorchGmax[] = INCBIN_U16("graphics/pokemon/centiskorch/gmax/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GIGANTAMAX_FORMS @@ -23538,9 +23538,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_CLOBBOPUS const u32 gMonFrontPic_Clobbopus[] = INCBIN_U32("graphics/pokemon/clobbopus/front.4bpp.lz"); - const u32 gMonPalette_Clobbopus[] = INCBIN_U32("graphics/pokemon/clobbopus/normal.gbapal.lz"); + const u16 gMonPalette_Clobbopus[] = INCBIN_U16("graphics/pokemon/clobbopus/normal.gbapal"); const u32 gMonBackPic_Clobbopus[] = INCBIN_U32("graphics/pokemon/clobbopus/back.4bpp.lz"); - const u32 gMonShinyPalette_Clobbopus[] = INCBIN_U32("graphics/pokemon/clobbopus/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Clobbopus[] = INCBIN_U16("graphics/pokemon/clobbopus/shiny.gbapal"); const u8 gMonIcon_Clobbopus[] = INCBIN_U8("graphics/pokemon/clobbopus/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Clobbopus[] = INCBIN_U8("graphics/pokemon/clobbopus/footprint.1bpp"); @@ -23548,15 +23548,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Clobbopus[] = INCBIN_U16("graphics/pokemon/clobbopus/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Clobbopus[] = INCBIN_U16("graphics/pokemon/clobbopus/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Grapploct[] = INCBIN_U16("graphics/pokemon/grapploct/normal.gbapal"); const u32 gMonBackPic_Grapploct[] = INCBIN_U32("graphics/pokemon/grapploct/back.4bpp.lz"); - const u32 gMonShinyPalette_Grapploct[] = INCBIN_U32("graphics/pokemon/grapploct/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Grapploct[] = INCBIN_U16("graphics/pokemon/grapploct/shiny.gbapal"); const u8 gMonIcon_Grapploct[] = INCBIN_U8("graphics/pokemon/grapploct/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Grapploct[] = INCBIN_U8("graphics/pokemon/grapploct/footprint.1bpp"); @@ -23564,17 +23564,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Grapploct[] = INCBIN_U16("graphics/pokemon/grapploct/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Grapploct[] = INCBIN_U16("graphics/pokemon/grapploct/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_CLOBBOPUS #if P_FAMILY_SINISTEA const u32 gMonFrontPic_Sinistea[] = INCBIN_U32("graphics/pokemon/sinistea/front.4bpp.lz"); - const u32 gMonPalette_Sinistea[] = INCBIN_U32("graphics/pokemon/sinistea/normal.gbapal.lz"); + const u16 gMonPalette_Sinistea[] = INCBIN_U16("graphics/pokemon/sinistea/normal.gbapal"); const u32 gMonBackPic_Sinistea[] = INCBIN_U32("graphics/pokemon/sinistea/back.4bpp.lz"); - const u32 gMonShinyPalette_Sinistea[] = INCBIN_U32("graphics/pokemon/sinistea/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Sinistea[] = INCBIN_U16("graphics/pokemon/sinistea/shiny.gbapal"); const u8 gMonIcon_Sinistea[] = INCBIN_U8("graphics/pokemon/sinistea/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Sinistea[] = INCBIN_U8("graphics/pokemon/sinistea/footprint.1bpp"); @@ -23582,15 +23582,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Sinistea[] = INCBIN_U16("graphics/pokemon/sinistea/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Sinistea[] = INCBIN_U16("graphics/pokemon/sinistea/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Polteageist[] = INCBIN_U16("graphics/pokemon/polteageist/normal.gbapal"); const u32 gMonBackPic_Polteageist[] = INCBIN_U32("graphics/pokemon/polteageist/back.4bpp.lz"); - const u32 gMonShinyPalette_Polteageist[] = INCBIN_U32("graphics/pokemon/polteageist/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Polteageist[] = INCBIN_U16("graphics/pokemon/polteageist/shiny.gbapal"); const u8 gMonIcon_Polteageist[] = INCBIN_U8("graphics/pokemon/polteageist/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Polteageist[] = INCBIN_U8("graphics/pokemon/polteageist/footprint.1bpp"); @@ -23598,17 +23598,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Polteageist[] = INCBIN_U16("graphics/pokemon/polteageist/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Polteageist[] = INCBIN_U16("graphics/pokemon/polteageist/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SINISTEA #if P_FAMILY_HATENNA const u32 gMonFrontPic_Hatenna[] = INCBIN_U32("graphics/pokemon/hatenna/front.4bpp.lz"); - const u32 gMonPalette_Hatenna[] = INCBIN_U32("graphics/pokemon/hatenna/normal.gbapal.lz"); + const u16 gMonPalette_Hatenna[] = INCBIN_U16("graphics/pokemon/hatenna/normal.gbapal"); const u32 gMonBackPic_Hatenna[] = INCBIN_U32("graphics/pokemon/hatenna/back.4bpp.lz"); - const u32 gMonShinyPalette_Hatenna[] = INCBIN_U32("graphics/pokemon/hatenna/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Hatenna[] = INCBIN_U16("graphics/pokemon/hatenna/shiny.gbapal"); const u8 gMonIcon_Hatenna[] = INCBIN_U8("graphics/pokemon/hatenna/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Hatenna[] = INCBIN_U8("graphics/pokemon/hatenna/footprint.1bpp"); @@ -23616,15 +23616,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Hatenna[] = INCBIN_U16("graphics/pokemon/hatenna/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Hatenna[] = INCBIN_U16("graphics/pokemon/hatenna/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Hattrem[] = INCBIN_U16("graphics/pokemon/hattrem/normal.gbapal"); const u32 gMonBackPic_Hattrem[] = INCBIN_U32("graphics/pokemon/hattrem/back.4bpp.lz"); - const u32 gMonShinyPalette_Hattrem[] = INCBIN_U32("graphics/pokemon/hattrem/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Hattrem[] = INCBIN_U16("graphics/pokemon/hattrem/shiny.gbapal"); const u8 gMonIcon_Hattrem[] = INCBIN_U8("graphics/pokemon/hattrem/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Hattrem[] = INCBIN_U8("graphics/pokemon/hattrem/footprint.1bpp"); @@ -23632,15 +23632,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Hattrem[] = INCBIN_U16("graphics/pokemon/hattrem/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Hattrem[] = INCBIN_U16("graphics/pokemon/hattrem/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Hatterene[] = INCBIN_U16("graphics/pokemon/hatterene/normal.gbapal"); const u32 gMonBackPic_Hatterene[] = INCBIN_U32("graphics/pokemon/hatterene/back.4bpp.lz"); - const u32 gMonShinyPalette_Hatterene[] = INCBIN_U32("graphics/pokemon/hatterene/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Hatterene[] = INCBIN_U16("graphics/pokemon/hatterene/shiny.gbapal"); const u8 gMonIcon_Hatterene[] = INCBIN_U8("graphics/pokemon/hatterene/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Hatterene[] = INCBIN_U8("graphics/pokemon/hatterene/footprint.1bpp"); @@ -23648,22 +23648,22 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Hatterene[] = INCBIN_U16("graphics/pokemon/hatterene/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Hatterene[] = INCBIN_U16("graphics/pokemon/hatterene/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if P_GIGANTAMAX_FORMS const u32 gMonFrontPic_HattereneGmax[] = INCBIN_U32("graphics/pokemon/hatterene/gmax/front.4bpp.lz"); const u32 gMonBackPic_HattereneGmax[] = INCBIN_U32("graphics/pokemon/hatterene/gmax/back.4bpp.lz"); - const u32 gMonPalette_HattereneGmax[] = INCBIN_U32("graphics/pokemon/hatterene/gmax/normal.gbapal.lz"); - const u32 gMonShinyPalette_HattereneGmax[] = INCBIN_U32("graphics/pokemon/hatterene/gmax/shiny.gbapal.lz"); + const u16 gMonPalette_HattereneGmax[] = INCBIN_U16("graphics/pokemon/hatterene/gmax/normal.gbapal"); + const u16 gMonShinyPalette_HattereneGmax[] = INCBIN_U16("graphics/pokemon/hatterene/gmax/shiny.gbapal"); const u8 gMonIcon_HattereneGmax[] = INCBIN_U8("graphics/pokemon/hatterene/gmax/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS // const u32 gObjectEventPic_HattereneGmax[] = INCBIN_COMP("graphics/pokemon/hatterene/gmax/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - // const u32 gOverworldPalette_HattereneGmax[] = INCBIN_U32("graphics/pokemon/hatterene/gmax/overworld_normal.gbapal.lz"); - // const u32 gShinyOverworldPalette_HattereneGmax[] = INCBIN_U32("graphics/pokemon/hatterene/gmax/overworld_shiny.gbapal.lz"); + // const u16 gOverworldPalette_HattereneGmax[] = INCBIN_U16("graphics/pokemon/hatterene/gmax/overworld_normal.gbapal"); + // const u16 gShinyOverworldPalette_HattereneGmax[] = INCBIN_U16("graphics/pokemon/hatterene/gmax/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GIGANTAMAX_FORMS @@ -23671,9 +23671,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_IMPIDIMP const u32 gMonFrontPic_Impidimp[] = INCBIN_U32("graphics/pokemon/impidimp/front.4bpp.lz"); - const u32 gMonPalette_Impidimp[] = INCBIN_U32("graphics/pokemon/impidimp/normal.gbapal.lz"); + const u16 gMonPalette_Impidimp[] = INCBIN_U16("graphics/pokemon/impidimp/normal.gbapal"); const u32 gMonBackPic_Impidimp[] = INCBIN_U32("graphics/pokemon/impidimp/back.4bpp.lz"); - const u32 gMonShinyPalette_Impidimp[] = INCBIN_U32("graphics/pokemon/impidimp/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Impidimp[] = INCBIN_U16("graphics/pokemon/impidimp/shiny.gbapal"); const u8 gMonIcon_Impidimp[] = INCBIN_U8("graphics/pokemon/impidimp/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Impidimp[] = INCBIN_U8("graphics/pokemon/impidimp/footprint.1bpp"); @@ -23681,15 +23681,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Impidimp[] = INCBIN_U16("graphics/pokemon/impidimp/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Impidimp[] = INCBIN_U16("graphics/pokemon/impidimp/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Morgrem[] = INCBIN_U16("graphics/pokemon/morgrem/normal.gbapal"); const u32 gMonBackPic_Morgrem[] = INCBIN_U32("graphics/pokemon/morgrem/back.4bpp.lz"); - const u32 gMonShinyPalette_Morgrem[] = INCBIN_U32("graphics/pokemon/morgrem/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Morgrem[] = INCBIN_U16("graphics/pokemon/morgrem/shiny.gbapal"); const u8 gMonIcon_Morgrem[] = INCBIN_U8("graphics/pokemon/morgrem/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Morgrem[] = INCBIN_U8("graphics/pokemon/morgrem/footprint.1bpp"); @@ -23697,15 +23697,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Morgrem[] = INCBIN_U16("graphics/pokemon/morgrem/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Morgrem[] = INCBIN_U16("graphics/pokemon/morgrem/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Grimmsnarl[] = INCBIN_U16("graphics/pokemon/grimmsnarl/normal.gbapal"); const u32 gMonBackPic_Grimmsnarl[] = INCBIN_U32("graphics/pokemon/grimmsnarl/back.4bpp.lz"); - const u32 gMonShinyPalette_Grimmsnarl[] = INCBIN_U32("graphics/pokemon/grimmsnarl/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Grimmsnarl[] = INCBIN_U16("graphics/pokemon/grimmsnarl/shiny.gbapal"); const u8 gMonIcon_Grimmsnarl[] = INCBIN_U8("graphics/pokemon/grimmsnarl/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Grimmsnarl[] = INCBIN_U8("graphics/pokemon/grimmsnarl/footprint.1bpp"); @@ -23713,22 +23713,22 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Grimmsnarl[] = INCBIN_U16("graphics/pokemon/grimmsnarl/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Grimmsnarl[] = INCBIN_U16("graphics/pokemon/grimmsnarl/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if P_GIGANTAMAX_FORMS const u32 gMonFrontPic_GrimmsnarlGmax[] = INCBIN_U32("graphics/pokemon/grimmsnarl/gmax/front.4bpp.lz"); const u32 gMonBackPic_GrimmsnarlGmax[] = INCBIN_U32("graphics/pokemon/grimmsnarl/gmax/back.4bpp.lz"); - const u32 gMonPalette_GrimmsnarlGmax[] = INCBIN_U32("graphics/pokemon/grimmsnarl/gmax/normal.gbapal.lz"); - const u32 gMonShinyPalette_GrimmsnarlGmax[] = INCBIN_U32("graphics/pokemon/grimmsnarl/gmax/shiny.gbapal.lz"); + const u16 gMonPalette_GrimmsnarlGmax[] = INCBIN_U16("graphics/pokemon/grimmsnarl/gmax/normal.gbapal"); + const u16 gMonShinyPalette_GrimmsnarlGmax[] = INCBIN_U16("graphics/pokemon/grimmsnarl/gmax/shiny.gbapal"); const u8 gMonIcon_GrimmsnarlGmax[] = INCBIN_U8("graphics/pokemon/grimmsnarl/gmax/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS // const u32 gObjectEventPic_GrimmsnarlGmax[] = INCBIN_COMP("graphics/pokemon/grimmsnarl/gmax/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - // const u32 gOverworldPalette_GrimmsnarlGmax[] = INCBIN_U32("graphics/pokemon/grimmsnarl/gmax/overworld_normal.gbapal.lz"); - // const u32 gShinyOverworldPalette_GrimmsnarlGmax[] = INCBIN_U32("graphics/pokemon/grimmsnarl/gmax/overworld_shiny.gbapal.lz"); + // const u16 gOverworldPalette_GrimmsnarlGmax[] = INCBIN_U16("graphics/pokemon/grimmsnarl/gmax/overworld_normal.gbapal"); + // const u16 gShinyOverworldPalette_GrimmsnarlGmax[] = INCBIN_U16("graphics/pokemon/grimmsnarl/gmax/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GIGANTAMAX_FORMS @@ -23736,9 +23736,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_MILCERY const u32 gMonFrontPic_Milcery[] = INCBIN_U32("graphics/pokemon/milcery/front.4bpp.lz"); - const u32 gMonPalette_Milcery[] = INCBIN_U32("graphics/pokemon/milcery/normal.gbapal.lz"); + const u16 gMonPalette_Milcery[] = INCBIN_U16("graphics/pokemon/milcery/normal.gbapal"); const u32 gMonBackPic_Milcery[] = INCBIN_U32("graphics/pokemon/milcery/back.4bpp.lz"); - const u32 gMonShinyPalette_Milcery[] = INCBIN_U32("graphics/pokemon/milcery/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Milcery[] = INCBIN_U16("graphics/pokemon/milcery/shiny.gbapal"); const u8 gMonIcon_Milcery[] = INCBIN_U8("graphics/pokemon/milcery/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Milcery[] = INCBIN_U8("graphics/pokemon/milcery/footprint.1bpp"); @@ -23746,14 +23746,14 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Milcery[] = INCBIN_U16("graphics/pokemon/milcery/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Milcery[] = INCBIN_U16("graphics/pokemon/milcery/overworld_shiny.gbapal"); #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"); - const u32 gMonShinyPalette_Alcremie[] = INCBIN_U32("graphics/pokemon/alcremie/shiny.gbapal.lz"); + const u16 gMonPalette_Alcremie[] = INCBIN_U16("graphics/pokemon/alcremie/normal.gbapal"); + const u16 gMonShinyPalette_Alcremie[] = INCBIN_U16("graphics/pokemon/alcremie/shiny.gbapal"); const u8 gMonIcon_AlcremieStrawberryVanillaCream[] = INCBIN_U8("graphics/pokemon/alcremie/icon.4bpp"); //const u8 gMonIcon_AlcremieStrawberryRubyCream[] = INCBIN_U8("graphics/pokemon/alcremie/ruby_cream/icon.4bpp"); @@ -23766,118 +23766,118 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ //const u8 gMonIcon_AlcremieStrawberryRainbowSwirl[] = INCBIN_U8("graphics/pokemon/alcremie/rainbow_swirl/icon.4bpp"); const u32 gMonFrontPic_AlcremieStrawberry[] = INCBIN_U32("graphics/pokemon/alcremie/strawberry/front.4bpp.lz"); - const u32 gMonPalette_AlcremieStrawberryVanillaCream[] = INCBIN_U32("graphics/pokemon/alcremie/strawberry/strawberry_default.gbapal.lz"); - const u32 gMonPalette_AlcremieStrawberryRubyCream[] = INCBIN_U32("graphics/pokemon/alcremie/strawberry/strawberry_ruby_cream.gbapal.lz"); - const u32 gMonPalette_AlcremieStrawberryMatchaCream[] = INCBIN_U32("graphics/pokemon/alcremie/strawberry/strawberry_matcha_cream.gbapal.lz"); - const u32 gMonPalette_AlcremieStrawberryMintCream[] = INCBIN_U32("graphics/pokemon/alcremie/strawberry/strawberry_mint_cream.gbapal.lz"); - const u32 gMonPalette_AlcremieStrawberryLemonCream[] = INCBIN_U32("graphics/pokemon/alcremie/strawberry/strawberry_lemon_cream.gbapal.lz"); - const u32 gMonPalette_AlcremieStrawberrySaltedCream[] = INCBIN_U32("graphics/pokemon/alcremie/strawberry/strawberry_salted_cream.gbapal.lz"); - const u32 gMonPalette_AlcremieStrawberryRubySwirl[] = INCBIN_U32("graphics/pokemon/alcremie/strawberry/strawberry_ruby_swirl.gbapal.lz"); - const u32 gMonPalette_AlcremieStrawberryCaramelSwirl[] = INCBIN_U32("graphics/pokemon/alcremie/strawberry/strawberry_caramel_swirl.gbapal.lz"); - const u32 gMonPalette_AlcremieStrawberryRainbowSwirl[] = INCBIN_U32("graphics/pokemon/alcremie/strawberry/strawberry_rainbow_swirl.gbapal.lz"); + const u16 gMonPalette_AlcremieStrawberryVanillaCream[] = INCBIN_U16("graphics/pokemon/alcremie/strawberry/strawberry_default.gbapal"); + const u16 gMonPalette_AlcremieStrawberryRubyCream[] = INCBIN_U16("graphics/pokemon/alcremie/strawberry/strawberry_ruby_cream.gbapal"); + const u16 gMonPalette_AlcremieStrawberryMatchaCream[] = INCBIN_U16("graphics/pokemon/alcremie/strawberry/strawberry_matcha_cream.gbapal"); + const u16 gMonPalette_AlcremieStrawberryMintCream[] = INCBIN_U16("graphics/pokemon/alcremie/strawberry/strawberry_mint_cream.gbapal"); + const u16 gMonPalette_AlcremieStrawberryLemonCream[] = INCBIN_U16("graphics/pokemon/alcremie/strawberry/strawberry_lemon_cream.gbapal"); + const u16 gMonPalette_AlcremieStrawberrySaltedCream[] = INCBIN_U16("graphics/pokemon/alcremie/strawberry/strawberry_salted_cream.gbapal"); + const u16 gMonPalette_AlcremieStrawberryRubySwirl[] = INCBIN_U16("graphics/pokemon/alcremie/strawberry/strawberry_ruby_swirl.gbapal"); + const u16 gMonPalette_AlcremieStrawberryCaramelSwirl[] = INCBIN_U16("graphics/pokemon/alcremie/strawberry/strawberry_caramel_swirl.gbapal"); + const u16 gMonPalette_AlcremieStrawberryRainbowSwirl[] = INCBIN_U16("graphics/pokemon/alcremie/strawberry/strawberry_rainbow_swirl.gbapal"); const u32 gMonBackPic_AlcremieStrawberry[] = INCBIN_U32("graphics/pokemon/alcremie/strawberry/back.4bpp.lz"); - const u32 gMonShinyPalette_AlcremieStrawberry[] = INCBIN_U32("graphics/pokemon/alcremie/strawberry/strawberry_shiny.gbapal.lz"); + const u16 gMonShinyPalette_AlcremieStrawberry[] = INCBIN_U16("graphics/pokemon/alcremie/strawberry/strawberry_shiny.gbapal"); #if P_FOOTPRINTS const u8 gMonFootprint_Alcremie[] = INCBIN_U8("graphics/pokemon/alcremie/footprint.1bpp"); #endif //P_FOOTPRINTS const u32 gMonFrontPic_AlcremieBerry[] = INCBIN_U32("graphics/pokemon/alcremie/berry/front.4bpp.lz"); - const u32 gMonPalette_AlcremieBerryVanillaCream[] = INCBIN_U32("graphics/pokemon/alcremie/berry/berry_default.gbapal.lz"); - const u32 gMonPalette_AlcremieBerryRubyCream[] = INCBIN_U32("graphics/pokemon/alcremie/berry/berry_ruby_cream.gbapal.lz"); - const u32 gMonPalette_AlcremieBerryMatchaCream[] = INCBIN_U32("graphics/pokemon/alcremie/berry/berry_matcha_cream.gbapal.lz"); - const u32 gMonPalette_AlcremieBerryMintCream[] = INCBIN_U32("graphics/pokemon/alcremie/berry/berry_mint_cream.gbapal.lz"); - const u32 gMonPalette_AlcremieBerryLemonCream[] = INCBIN_U32("graphics/pokemon/alcremie/berry/berry_lemon_cream.gbapal.lz"); - const u32 gMonPalette_AlcremieBerrySaltedCream[] = INCBIN_U32("graphics/pokemon/alcremie/berry/berry_salted_cream.gbapal.lz"); - const u32 gMonPalette_AlcremieBerryRubySwirl[] = INCBIN_U32("graphics/pokemon/alcremie/berry/berry_ruby_swirl.gbapal.lz"); - const u32 gMonPalette_AlcremieBerryCaramelSwirl[] = INCBIN_U32("graphics/pokemon/alcremie/berry/berry_caramel_swirl.gbapal.lz"); - const u32 gMonPalette_AlcremieBerryRainbowSwirl[] = INCBIN_U32("graphics/pokemon/alcremie/berry/berry_rainbow_swirl.gbapal.lz"); + const u16 gMonPalette_AlcremieBerryVanillaCream[] = INCBIN_U16("graphics/pokemon/alcremie/berry/berry_default.gbapal"); + const u16 gMonPalette_AlcremieBerryRubyCream[] = INCBIN_U16("graphics/pokemon/alcremie/berry/berry_ruby_cream.gbapal"); + const u16 gMonPalette_AlcremieBerryMatchaCream[] = INCBIN_U16("graphics/pokemon/alcremie/berry/berry_matcha_cream.gbapal"); + const u16 gMonPalette_AlcremieBerryMintCream[] = INCBIN_U16("graphics/pokemon/alcremie/berry/berry_mint_cream.gbapal"); + const u16 gMonPalette_AlcremieBerryLemonCream[] = INCBIN_U16("graphics/pokemon/alcremie/berry/berry_lemon_cream.gbapal"); + const u16 gMonPalette_AlcremieBerrySaltedCream[] = INCBIN_U16("graphics/pokemon/alcremie/berry/berry_salted_cream.gbapal"); + const u16 gMonPalette_AlcremieBerryRubySwirl[] = INCBIN_U16("graphics/pokemon/alcremie/berry/berry_ruby_swirl.gbapal"); + const u16 gMonPalette_AlcremieBerryCaramelSwirl[] = INCBIN_U16("graphics/pokemon/alcremie/berry/berry_caramel_swirl.gbapal"); + const u16 gMonPalette_AlcremieBerryRainbowSwirl[] = INCBIN_U16("graphics/pokemon/alcremie/berry/berry_rainbow_swirl.gbapal"); const u32 gMonBackPic_AlcremieBerry[] = INCBIN_U32("graphics/pokemon/alcremie/berry/back.4bpp.lz"); - const u32 gMonShinyPalette_AlcremieBerry[] = INCBIN_U32("graphics/pokemon/alcremie/berry/berry_shiny.gbapal.lz"); + const u16 gMonShinyPalette_AlcremieBerry[] = INCBIN_U16("graphics/pokemon/alcremie/berry/berry_shiny.gbapal"); const u32 gMonFrontPic_AlcremieLove[] = INCBIN_U32("graphics/pokemon/alcremie/love/front.4bpp.lz"); - const u32 gMonPalette_AlcremieLoveVanillaCream[] = INCBIN_U32("graphics/pokemon/alcremie/love/love_default.gbapal.lz"); - const u32 gMonPalette_AlcremieLoveRubyCream[] = INCBIN_U32("graphics/pokemon/alcremie/love/love_ruby_cream.gbapal.lz"); - const u32 gMonPalette_AlcremieLoveMatchaCream[] = INCBIN_U32("graphics/pokemon/alcremie/love/love_matcha_cream.gbapal.lz"); - const u32 gMonPalette_AlcremieLoveMintCream[] = INCBIN_U32("graphics/pokemon/alcremie/love/love_mint_cream.gbapal.lz"); - const u32 gMonPalette_AlcremieLoveLemonCream[] = INCBIN_U32("graphics/pokemon/alcremie/love/love_lemon_cream.gbapal.lz"); - const u32 gMonPalette_AlcremieLoveSaltedCream[] = INCBIN_U32("graphics/pokemon/alcremie/love/love_salted_cream.gbapal.lz"); - const u32 gMonPalette_AlcremieLoveRubySwirl[] = INCBIN_U32("graphics/pokemon/alcremie/love/love_ruby_swirl.gbapal.lz"); - const u32 gMonPalette_AlcremieLoveCaramelSwirl[] = INCBIN_U32("graphics/pokemon/alcremie/love/love_caramel_swirl.gbapal.lz"); - const u32 gMonPalette_AlcremieLoveRainbowSwirl[] = INCBIN_U32("graphics/pokemon/alcremie/love/love_rainbow_swirl.gbapal.lz"); + const u16 gMonPalette_AlcremieLoveVanillaCream[] = INCBIN_U16("graphics/pokemon/alcremie/love/love_default.gbapal"); + const u16 gMonPalette_AlcremieLoveRubyCream[] = INCBIN_U16("graphics/pokemon/alcremie/love/love_ruby_cream.gbapal"); + const u16 gMonPalette_AlcremieLoveMatchaCream[] = INCBIN_U16("graphics/pokemon/alcremie/love/love_matcha_cream.gbapal"); + const u16 gMonPalette_AlcremieLoveMintCream[] = INCBIN_U16("graphics/pokemon/alcremie/love/love_mint_cream.gbapal"); + const u16 gMonPalette_AlcremieLoveLemonCream[] = INCBIN_U16("graphics/pokemon/alcremie/love/love_lemon_cream.gbapal"); + const u16 gMonPalette_AlcremieLoveSaltedCream[] = INCBIN_U16("graphics/pokemon/alcremie/love/love_salted_cream.gbapal"); + const u16 gMonPalette_AlcremieLoveRubySwirl[] = INCBIN_U16("graphics/pokemon/alcremie/love/love_ruby_swirl.gbapal"); + const u16 gMonPalette_AlcremieLoveCaramelSwirl[] = INCBIN_U16("graphics/pokemon/alcremie/love/love_caramel_swirl.gbapal"); + const u16 gMonPalette_AlcremieLoveRainbowSwirl[] = INCBIN_U16("graphics/pokemon/alcremie/love/love_rainbow_swirl.gbapal"); const u32 gMonBackPic_AlcremieLove[] = INCBIN_U32("graphics/pokemon/alcremie/love/back.4bpp.lz"); - const u32 gMonShinyPalette_AlcremieLove[] = INCBIN_U32("graphics/pokemon/alcremie/love/love_shiny.gbapal.lz"); + const u16 gMonShinyPalette_AlcremieLove[] = INCBIN_U16("graphics/pokemon/alcremie/love/love_shiny.gbapal"); const u32 gMonFrontPic_AlcremieStar[] = INCBIN_U32("graphics/pokemon/alcremie/star/front.4bpp.lz"); - const u32 gMonPalette_AlcremieStarVanillaCream[] = INCBIN_U32("graphics/pokemon/alcremie/star/star_default.gbapal.lz"); - const u32 gMonPalette_AlcremieStarRubyCream[] = INCBIN_U32("graphics/pokemon/alcremie/star/star_ruby_cream.gbapal.lz"); - const u32 gMonPalette_AlcremieStarMatchaCream[] = INCBIN_U32("graphics/pokemon/alcremie/star/star_matcha_cream.gbapal.lz"); - const u32 gMonPalette_AlcremieStarMintCream[] = INCBIN_U32("graphics/pokemon/alcremie/star/star_mint_cream.gbapal.lz"); - const u32 gMonPalette_AlcremieStarLemonCream[] = INCBIN_U32("graphics/pokemon/alcremie/star/star_lemon_cream.gbapal.lz"); - const u32 gMonPalette_AlcremieStarSaltedCream[] = INCBIN_U32("graphics/pokemon/alcremie/star/star_salted_cream.gbapal.lz"); - const u32 gMonPalette_AlcremieStarRubySwirl[] = INCBIN_U32("graphics/pokemon/alcremie/star/star_ruby_swirl.gbapal.lz"); - const u32 gMonPalette_AlcremieStarCaramelSwirl[] = INCBIN_U32("graphics/pokemon/alcremie/star/star_caramel_swirl.gbapal.lz"); - const u32 gMonPalette_AlcremieStarRainbowSwirl[] = INCBIN_U32("graphics/pokemon/alcremie/star/star_rainbow_swirl.gbapal.lz"); + const u16 gMonPalette_AlcremieStarVanillaCream[] = INCBIN_U16("graphics/pokemon/alcremie/star/star_default.gbapal"); + const u16 gMonPalette_AlcremieStarRubyCream[] = INCBIN_U16("graphics/pokemon/alcremie/star/star_ruby_cream.gbapal"); + const u16 gMonPalette_AlcremieStarMatchaCream[] = INCBIN_U16("graphics/pokemon/alcremie/star/star_matcha_cream.gbapal"); + const u16 gMonPalette_AlcremieStarMintCream[] = INCBIN_U16("graphics/pokemon/alcremie/star/star_mint_cream.gbapal"); + const u16 gMonPalette_AlcremieStarLemonCream[] = INCBIN_U16("graphics/pokemon/alcremie/star/star_lemon_cream.gbapal"); + const u16 gMonPalette_AlcremieStarSaltedCream[] = INCBIN_U16("graphics/pokemon/alcremie/star/star_salted_cream.gbapal"); + const u16 gMonPalette_AlcremieStarRubySwirl[] = INCBIN_U16("graphics/pokemon/alcremie/star/star_ruby_swirl.gbapal"); + const u16 gMonPalette_AlcremieStarCaramelSwirl[] = INCBIN_U16("graphics/pokemon/alcremie/star/star_caramel_swirl.gbapal"); + const u16 gMonPalette_AlcremieStarRainbowSwirl[] = INCBIN_U16("graphics/pokemon/alcremie/star/star_rainbow_swirl.gbapal"); const u32 gMonBackPic_AlcremieStar[] = INCBIN_U32("graphics/pokemon/alcremie/star/back.4bpp.lz"); - const u32 gMonShinyPalette_AlcremieStar[] = INCBIN_U32("graphics/pokemon/alcremie/star/star_shiny.gbapal.lz"); + const u16 gMonShinyPalette_AlcremieStar[] = INCBIN_U16("graphics/pokemon/alcremie/star/star_shiny.gbapal"); const u32 gMonFrontPic_AlcremieClover[] = INCBIN_U32("graphics/pokemon/alcremie/clover/front.4bpp.lz"); - const u32 gMonPalette_AlcremieCloverVanillaCream[] = INCBIN_U32("graphics/pokemon/alcremie/clover/clover_default.gbapal.lz"); - const u32 gMonPalette_AlcremieCloverRubyCream[] = INCBIN_U32("graphics/pokemon/alcremie/clover/clover_ruby_cream.gbapal.lz"); - const u32 gMonPalette_AlcremieCloverMatchaCream[] = INCBIN_U32("graphics/pokemon/alcremie/clover/clover_matcha_cream.gbapal.lz"); - const u32 gMonPalette_AlcremieCloverMintCream[] = INCBIN_U32("graphics/pokemon/alcremie/clover/clover_mint_cream.gbapal.lz"); - const u32 gMonPalette_AlcremieCloverLemonCream[] = INCBIN_U32("graphics/pokemon/alcremie/clover/clover_lemon_cream.gbapal.lz"); - const u32 gMonPalette_AlcremieCloverSaltedCream[] = INCBIN_U32("graphics/pokemon/alcremie/clover/clover_salted_cream.gbapal.lz"); - const u32 gMonPalette_AlcremieCloverRubySwirl[] = INCBIN_U32("graphics/pokemon/alcremie/clover/clover_ruby_swirl.gbapal.lz"); - const u32 gMonPalette_AlcremieCloverCaramelSwirl[] = INCBIN_U32("graphics/pokemon/alcremie/clover/clover_caramel_swirl.gbapal.lz"); - const u32 gMonPalette_AlcremieCloverRainbowSwirl[] = INCBIN_U32("graphics/pokemon/alcremie/clover/clover_rainbow_swirl.gbapal.lz"); + const u16 gMonPalette_AlcremieCloverVanillaCream[] = INCBIN_U16("graphics/pokemon/alcremie/clover/clover_default.gbapal"); + const u16 gMonPalette_AlcremieCloverRubyCream[] = INCBIN_U16("graphics/pokemon/alcremie/clover/clover_ruby_cream.gbapal"); + const u16 gMonPalette_AlcremieCloverMatchaCream[] = INCBIN_U16("graphics/pokemon/alcremie/clover/clover_matcha_cream.gbapal"); + const u16 gMonPalette_AlcremieCloverMintCream[] = INCBIN_U16("graphics/pokemon/alcremie/clover/clover_mint_cream.gbapal"); + const u16 gMonPalette_AlcremieCloverLemonCream[] = INCBIN_U16("graphics/pokemon/alcremie/clover/clover_lemon_cream.gbapal"); + const u16 gMonPalette_AlcremieCloverSaltedCream[] = INCBIN_U16("graphics/pokemon/alcremie/clover/clover_salted_cream.gbapal"); + const u16 gMonPalette_AlcremieCloverRubySwirl[] = INCBIN_U16("graphics/pokemon/alcremie/clover/clover_ruby_swirl.gbapal"); + const u16 gMonPalette_AlcremieCloverCaramelSwirl[] = INCBIN_U16("graphics/pokemon/alcremie/clover/clover_caramel_swirl.gbapal"); + const u16 gMonPalette_AlcremieCloverRainbowSwirl[] = INCBIN_U16("graphics/pokemon/alcremie/clover/clover_rainbow_swirl.gbapal"); const u32 gMonBackPic_AlcremieClover[] = INCBIN_U32("graphics/pokemon/alcremie/clover/back.4bpp.lz"); - const u32 gMonShinyPalette_AlcremieClover[] = INCBIN_U32("graphics/pokemon/alcremie/clover/clover_shiny.gbapal.lz"); + const u16 gMonShinyPalette_AlcremieClover[] = INCBIN_U16("graphics/pokemon/alcremie/clover/clover_shiny.gbapal"); const u32 gMonFrontPic_AlcremieFlower[] = INCBIN_U32("graphics/pokemon/alcremie/flower/front.4bpp.lz"); - const u32 gMonPalette_AlcremieFlowerVanillaCream[] = INCBIN_U32("graphics/pokemon/alcremie/flower/flower_default.gbapal.lz"); - const u32 gMonPalette_AlcremieFlowerRubyCream[] = INCBIN_U32("graphics/pokemon/alcremie/flower/flower_ruby_cream.gbapal.lz"); - const u32 gMonPalette_AlcremieFlowerMatchaCream[] = INCBIN_U32("graphics/pokemon/alcremie/flower/flower_matcha_cream.gbapal.lz"); - const u32 gMonPalette_AlcremieFlowerMintCream[] = INCBIN_U32("graphics/pokemon/alcremie/flower/flower_mint_cream.gbapal.lz"); - const u32 gMonPalette_AlcremieFlowerLemonCream[] = INCBIN_U32("graphics/pokemon/alcremie/flower/flower_lemon_cream.gbapal.lz"); - const u32 gMonPalette_AlcremieFlowerSaltedCream[] = INCBIN_U32("graphics/pokemon/alcremie/flower/flower_salted_cream.gbapal.lz"); - const u32 gMonPalette_AlcremieFlowerRubySwirl[] = INCBIN_U32("graphics/pokemon/alcremie/flower/flower_ruby_swirl.gbapal.lz"); - const u32 gMonPalette_AlcremieFlowerCaramelSwirl[] = INCBIN_U32("graphics/pokemon/alcremie/flower/flower_caramel_swirl.gbapal.lz"); - const u32 gMonPalette_AlcremieFlowerRainbowSwirl[] = INCBIN_U32("graphics/pokemon/alcremie/flower/flower_rainbow_swirl.gbapal.lz"); + const u16 gMonPalette_AlcremieFlowerVanillaCream[] = INCBIN_U16("graphics/pokemon/alcremie/flower/flower_default.gbapal"); + const u16 gMonPalette_AlcremieFlowerRubyCream[] = INCBIN_U16("graphics/pokemon/alcremie/flower/flower_ruby_cream.gbapal"); + const u16 gMonPalette_AlcremieFlowerMatchaCream[] = INCBIN_U16("graphics/pokemon/alcremie/flower/flower_matcha_cream.gbapal"); + const u16 gMonPalette_AlcremieFlowerMintCream[] = INCBIN_U16("graphics/pokemon/alcremie/flower/flower_mint_cream.gbapal"); + const u16 gMonPalette_AlcremieFlowerLemonCream[] = INCBIN_U16("graphics/pokemon/alcremie/flower/flower_lemon_cream.gbapal"); + const u16 gMonPalette_AlcremieFlowerSaltedCream[] = INCBIN_U16("graphics/pokemon/alcremie/flower/flower_salted_cream.gbapal"); + const u16 gMonPalette_AlcremieFlowerRubySwirl[] = INCBIN_U16("graphics/pokemon/alcremie/flower/flower_ruby_swirl.gbapal"); + const u16 gMonPalette_AlcremieFlowerCaramelSwirl[] = INCBIN_U16("graphics/pokemon/alcremie/flower/flower_caramel_swirl.gbapal"); + const u16 gMonPalette_AlcremieFlowerRainbowSwirl[] = INCBIN_U16("graphics/pokemon/alcremie/flower/flower_rainbow_swirl.gbapal"); const u32 gMonBackPic_AlcremieFlower[] = INCBIN_U32("graphics/pokemon/alcremie/flower/back.4bpp.lz"); - const u32 gMonShinyPalette_AlcremieFlower[] = INCBIN_U32("graphics/pokemon/alcremie/flower/flower_shiny.gbapal.lz"); + const u16 gMonShinyPalette_AlcremieFlower[] = INCBIN_U16("graphics/pokemon/alcremie/flower/flower_shiny.gbapal"); const u32 gMonFrontPic_AlcremieRibbon[] = INCBIN_U32("graphics/pokemon/alcremie/ribbon/front.4bpp.lz"); - const u32 gMonPalette_AlcremieRibbonVanillaCream[] = INCBIN_U32("graphics/pokemon/alcremie/ribbon/ribbon_default.gbapal.lz"); - const u32 gMonPalette_AlcremieRibbonRubyCream[] = INCBIN_U32("graphics/pokemon/alcremie/ribbon/ribbon_ruby_cream.gbapal.lz"); - const u32 gMonPalette_AlcremieRibbonMatchaCream[] = INCBIN_U32("graphics/pokemon/alcremie/ribbon/ribbon_matcha_cream.gbapal.lz"); - const u32 gMonPalette_AlcremieRibbonMintCream[] = INCBIN_U32("graphics/pokemon/alcremie/ribbon/ribbon_mint_cream.gbapal.lz"); - const u32 gMonPalette_AlcremieRibbonLemonCream[] = INCBIN_U32("graphics/pokemon/alcremie/ribbon/ribbon_lemon_cream.gbapal.lz"); - const u32 gMonPalette_AlcremieRibbonSaltedCream[] = INCBIN_U32("graphics/pokemon/alcremie/ribbon/ribbon_salted_cream.gbapal.lz"); - const u32 gMonPalette_AlcremieRibbonRubySwirl[] = INCBIN_U32("graphics/pokemon/alcremie/ribbon/ribbon_ruby_swirl.gbapal.lz"); - const u32 gMonPalette_AlcremieRibbonCaramelSwirl[] = INCBIN_U32("graphics/pokemon/alcremie/ribbon/ribbon_caramel_swirl.gbapal.lz"); - const u32 gMonPalette_AlcremieRibbonRainbowSwirl[] = INCBIN_U32("graphics/pokemon/alcremie/ribbon/ribbon_rainbow_swirl.gbapal.lz"); + const u16 gMonPalette_AlcremieRibbonVanillaCream[] = INCBIN_U16("graphics/pokemon/alcremie/ribbon/ribbon_default.gbapal"); + const u16 gMonPalette_AlcremieRibbonRubyCream[] = INCBIN_U16("graphics/pokemon/alcremie/ribbon/ribbon_ruby_cream.gbapal"); + const u16 gMonPalette_AlcremieRibbonMatchaCream[] = INCBIN_U16("graphics/pokemon/alcremie/ribbon/ribbon_matcha_cream.gbapal"); + const u16 gMonPalette_AlcremieRibbonMintCream[] = INCBIN_U16("graphics/pokemon/alcremie/ribbon/ribbon_mint_cream.gbapal"); + const u16 gMonPalette_AlcremieRibbonLemonCream[] = INCBIN_U16("graphics/pokemon/alcremie/ribbon/ribbon_lemon_cream.gbapal"); + const u16 gMonPalette_AlcremieRibbonSaltedCream[] = INCBIN_U16("graphics/pokemon/alcremie/ribbon/ribbon_salted_cream.gbapal"); + const u16 gMonPalette_AlcremieRibbonRubySwirl[] = INCBIN_U16("graphics/pokemon/alcremie/ribbon/ribbon_ruby_swirl.gbapal"); + const u16 gMonPalette_AlcremieRibbonCaramelSwirl[] = INCBIN_U16("graphics/pokemon/alcremie/ribbon/ribbon_caramel_swirl.gbapal"); + const u16 gMonPalette_AlcremieRibbonRainbowSwirl[] = INCBIN_U16("graphics/pokemon/alcremie/ribbon/ribbon_rainbow_swirl.gbapal"); 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"); + const u16 gMonShinyPalette_AlcremieRibbon[] = INCBIN_U16("graphics/pokemon/alcremie/ribbon/ribbon_shiny.gbapal"); #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"); + const u16 gOverworldPalette_AlcremieStrawberryVanillaCream[] = INCBIN_U16("graphics/pokemon/alcremie/strawberry/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_AlcremieStrawberryVanillaCream[] = INCBIN_U16("graphics/pokemon/alcremie/strawberry/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if P_GIGANTAMAX_FORMS const u32 gMonFrontPic_AlcremieGmax[] = INCBIN_U32("graphics/pokemon/alcremie/gmax/front.4bpp.lz"); const u32 gMonBackPic_AlcremieGmax[] = INCBIN_U32("graphics/pokemon/alcremie/gmax/back.4bpp.lz"); - const u32 gMonPalette_AlcremieGmax[] = INCBIN_U32("graphics/pokemon/alcremie/gmax/normal.gbapal.lz"); - const u32 gMonShinyPalette_AlcremieGmax[] = INCBIN_U32("graphics/pokemon/alcremie/gmax/shiny.gbapal.lz"); + const u16 gMonPalette_AlcremieGmax[] = INCBIN_U16("graphics/pokemon/alcremie/gmax/normal.gbapal"); + const u16 gMonShinyPalette_AlcremieGmax[] = INCBIN_U16("graphics/pokemon/alcremie/gmax/shiny.gbapal"); const u8 gMonIcon_AlcremieGmax[] = INCBIN_U8("graphics/pokemon/alcremie/gmax/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS // const u32 gObjectEventPic_AlcremieGmax[] = INCBIN_COMP("graphics/pokemon/alcremie/gmax/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - // const u32 gOverworldPalette_AlcremieGmax[] = INCBIN_U32("graphics/pokemon/alcremie/gmax/overworld_normal.gbapal.lz"); - // const u32 gShinyOverworldPalette_AlcremieGmax[] = INCBIN_U32("graphics/pokemon/alcremie/gmax/overworld_shiny.gbapal.lz"); + // const u16 gOverworldPalette_AlcremieGmax[] = INCBIN_U16("graphics/pokemon/alcremie/gmax/overworld_normal.gbapal"); + // const u16 gShinyOverworldPalette_AlcremieGmax[] = INCBIN_U16("graphics/pokemon/alcremie/gmax/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GIGANTAMAX_FORMS @@ -23885,9 +23885,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_FALINKS const u32 gMonFrontPic_Falinks[] = INCBIN_U32("graphics/pokemon/falinks/front.4bpp.lz"); - const u32 gMonPalette_Falinks[] = INCBIN_U32("graphics/pokemon/falinks/normal.gbapal.lz"); + const u16 gMonPalette_Falinks[] = INCBIN_U16("graphics/pokemon/falinks/normal.gbapal"); const u32 gMonBackPic_Falinks[] = INCBIN_U32("graphics/pokemon/falinks/back.4bpp.lz"); - const u32 gMonShinyPalette_Falinks[] = INCBIN_U32("graphics/pokemon/falinks/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Falinks[] = INCBIN_U16("graphics/pokemon/falinks/shiny.gbapal"); const u8 gMonIcon_Falinks[] = INCBIN_U8("graphics/pokemon/falinks/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Falinks[] = INCBIN_U8("graphics/pokemon/falinks/footprint.1bpp"); @@ -23895,17 +23895,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Falinks[] = INCBIN_U16("graphics/pokemon/falinks/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Falinks[] = INCBIN_U16("graphics/pokemon/falinks/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_FALINKS #if P_FAMILY_PINCURCHIN const u32 gMonFrontPic_Pincurchin[] = INCBIN_U32("graphics/pokemon/pincurchin/anim_front.4bpp.lz"); - const u32 gMonPalette_Pincurchin[] = INCBIN_U32("graphics/pokemon/pincurchin/normal.gbapal.lz"); + const u16 gMonPalette_Pincurchin[] = INCBIN_U16("graphics/pokemon/pincurchin/normal.gbapal"); const u32 gMonBackPic_Pincurchin[] = INCBIN_U32("graphics/pokemon/pincurchin/back.4bpp.lz"); - const u32 gMonShinyPalette_Pincurchin[] = INCBIN_U32("graphics/pokemon/pincurchin/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Pincurchin[] = INCBIN_U16("graphics/pokemon/pincurchin/shiny.gbapal"); const u8 gMonIcon_Pincurchin[] = INCBIN_U8("graphics/pokemon/pincurchin/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Pincurchin[] = INCBIN_U8("graphics/pokemon/pincurchin/footprint.1bpp"); @@ -23913,17 +23913,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Pincurchin[] = INCBIN_U16("graphics/pokemon/pincurchin/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Pincurchin[] = INCBIN_U16("graphics/pokemon/pincurchin/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_PINCURCHIN #if P_FAMILY_SNOM const u32 gMonFrontPic_Snom[] = INCBIN_U32("graphics/pokemon/snom/front.4bpp.lz"); - const u32 gMonPalette_Snom[] = INCBIN_U32("graphics/pokemon/snom/normal.gbapal.lz"); + const u16 gMonPalette_Snom[] = INCBIN_U16("graphics/pokemon/snom/normal.gbapal"); const u32 gMonBackPic_Snom[] = INCBIN_U32("graphics/pokemon/snom/back.4bpp.lz"); - const u32 gMonShinyPalette_Snom[] = INCBIN_U32("graphics/pokemon/snom/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Snom[] = INCBIN_U16("graphics/pokemon/snom/shiny.gbapal"); const u8 gMonIcon_Snom[] = INCBIN_U8("graphics/pokemon/snom/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Snom[] = INCBIN_U8("graphics/pokemon/snom/footprint.1bpp"); @@ -23931,15 +23931,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Snom[] = INCBIN_U16("graphics/pokemon/snom/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Snom[] = INCBIN_U16("graphics/pokemon/snom/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Frosmoth[] = INCBIN_U16("graphics/pokemon/frosmoth/normal.gbapal"); const u32 gMonBackPic_Frosmoth[] = INCBIN_U32("graphics/pokemon/frosmoth/back.4bpp.lz"); - const u32 gMonShinyPalette_Frosmoth[] = INCBIN_U32("graphics/pokemon/frosmoth/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Frosmoth[] = INCBIN_U16("graphics/pokemon/frosmoth/shiny.gbapal"); const u8 gMonIcon_Frosmoth[] = INCBIN_U8("graphics/pokemon/frosmoth/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Frosmoth[] = INCBIN_U8("graphics/pokemon/frosmoth/footprint.1bpp"); @@ -23947,17 +23947,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Frosmoth[] = INCBIN_U16("graphics/pokemon/frosmoth/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Frosmoth[] = INCBIN_U16("graphics/pokemon/frosmoth/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SNOM #if P_FAMILY_STONJOURNER const u32 gMonFrontPic_Stonjourner[] = INCBIN_U32("graphics/pokemon/stonjourner/front.4bpp.lz"); - const u32 gMonPalette_Stonjourner[] = INCBIN_U32("graphics/pokemon/stonjourner/normal.gbapal.lz"); + const u16 gMonPalette_Stonjourner[] = INCBIN_U16("graphics/pokemon/stonjourner/normal.gbapal"); const u32 gMonBackPic_Stonjourner[] = INCBIN_U32("graphics/pokemon/stonjourner/back.4bpp.lz"); - const u32 gMonShinyPalette_Stonjourner[] = INCBIN_U32("graphics/pokemon/stonjourner/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Stonjourner[] = INCBIN_U16("graphics/pokemon/stonjourner/shiny.gbapal"); const u8 gMonIcon_Stonjourner[] = INCBIN_U8("graphics/pokemon/stonjourner/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Stonjourner[] = INCBIN_U8("graphics/pokemon/stonjourner/footprint.1bpp"); @@ -23965,17 +23965,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Stonjourner[] = INCBIN_U16("graphics/pokemon/stonjourner/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Stonjourner[] = INCBIN_U16("graphics/pokemon/stonjourner/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_STONJOURNER #if P_FAMILY_EISCUE const u32 gMonFrontPic_EiscueIce[] = INCBIN_U32("graphics/pokemon/eiscue/front.4bpp.lz"); - const u32 gMonPalette_EiscueIce[] = INCBIN_U32("graphics/pokemon/eiscue/normal.gbapal.lz"); + const u16 gMonPalette_EiscueIce[] = INCBIN_U16("graphics/pokemon/eiscue/normal.gbapal"); const u32 gMonBackPic_EiscueIce[] = INCBIN_U32("graphics/pokemon/eiscue/back.4bpp.lz"); - const u32 gMonShinyPalette_EiscueIce[] = INCBIN_U32("graphics/pokemon/eiscue/shiny.gbapal.lz"); + const u16 gMonShinyPalette_EiscueIce[] = INCBIN_U16("graphics/pokemon/eiscue/shiny.gbapal"); const u8 gMonIcon_EiscueIce[] = INCBIN_U8("graphics/pokemon/eiscue/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Eiscue[] = INCBIN_U8("graphics/pokemon/eiscue/footprint.1bpp"); @@ -23983,30 +23983,30 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if OW_POKEMON_OBJECT_EVENTS const u32 gObjectEventPic_EiscueIce[] = INCBIN_COMP("graphics/pokemon/eiscue/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - const u32 gOverworldPalette_EiscueIce[] = INCBIN_U32("graphics/pokemon/eiscue/overworld_normal.gbapal.lz"); - const u32 gShinyOverworldPalette_EiscueIce[] = INCBIN_U32("graphics/pokemon/eiscue/overworld_shiny.gbapal.lz"); + const u16 gOverworldPalette_EiscueIce[] = INCBIN_U16("graphics/pokemon/eiscue/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_EiscueIce[] = INCBIN_U16("graphics/pokemon/eiscue/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_EiscueNoice[] = INCBIN_U32("graphics/pokemon/eiscue/noice_face/front.4bpp.lz"); - const u32 gMonPalette_EiscueNoice[] = INCBIN_U32("graphics/pokemon/eiscue/noice_face/normal.gbapal.lz"); + const u16 gMonPalette_EiscueNoice[] = INCBIN_U16("graphics/pokemon/eiscue/noice_face/normal.gbapal"); const u32 gMonBackPic_EiscueNoice[] = INCBIN_U32("graphics/pokemon/eiscue/noice_face/back.4bpp.lz"); - const u32 gMonShinyPalette_EiscueNoice[] = INCBIN_U32("graphics/pokemon/eiscue/noice_face/shiny.gbapal.lz"); + const u16 gMonShinyPalette_EiscueNoice[] = INCBIN_U16("graphics/pokemon/eiscue/noice_face/shiny.gbapal"); const u8 gMonIcon_EiscueNoice[] = INCBIN_U8("graphics/pokemon/eiscue/noice_face/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS // const u32 gObjectEventPic_EiscueNoice[] = INCBIN_COMP("graphics/pokemon/eiscue/noice_face/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - // const u32 gOverworldPalette_EiscueNoice[] = INCBIN_U32("graphics/pokemon/eiscue/noice_face/overworld_normal.gbapal.lz"); - // const u32 gShinyOverworldPalette_EiscueNoice[] = INCBIN_U32("graphics/pokemon/eiscue/noice_face/overworld_shiny.gbapal.lz"); + // const u16 gOverworldPalette_EiscueNoice[] = INCBIN_U16("graphics/pokemon/eiscue/noice_face/overworld_normal.gbapal"); + // const u16 gShinyOverworldPalette_EiscueNoice[] = INCBIN_U16("graphics/pokemon/eiscue/noice_face/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_EISCUE #if P_FAMILY_INDEEDEE const u32 gMonFrontPic_IndeedeeM[] = INCBIN_U32("graphics/pokemon/indeedee/front.4bpp.lz"); - const u32 gMonPalette_IndeedeeM[] = INCBIN_U32("graphics/pokemon/indeedee/normal.gbapal.lz"); + const u16 gMonPalette_IndeedeeM[] = INCBIN_U16("graphics/pokemon/indeedee/normal.gbapal"); const u32 gMonBackPic_IndeedeeM[] = INCBIN_U32("graphics/pokemon/indeedee/back.4bpp.lz"); - const u32 gMonShinyPalette_IndeedeeM[] = INCBIN_U32("graphics/pokemon/indeedee/shiny.gbapal.lz"); + const u16 gMonShinyPalette_IndeedeeM[] = INCBIN_U16("graphics/pokemon/indeedee/shiny.gbapal"); const u8 gMonIcon_IndeedeeM[] = INCBIN_U8("graphics/pokemon/indeedee/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Indeedee[] = INCBIN_U8("graphics/pokemon/indeedee/footprint.1bpp"); @@ -24014,30 +24014,30 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if OW_POKEMON_OBJECT_EVENTS const u32 gObjectEventPic_IndeedeeM[] = INCBIN_COMP("graphics/pokemon/indeedee/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - const u32 gOverworldPalette_IndeedeeM[] = INCBIN_U32("graphics/pokemon/indeedee/overworld_normal.gbapal.lz"); - const u32 gShinyOverworldPalette_IndeedeeM[] = INCBIN_U32("graphics/pokemon/indeedee/overworld_shiny.gbapal.lz"); + const u16 gOverworldPalette_IndeedeeM[] = INCBIN_U16("graphics/pokemon/indeedee/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_IndeedeeM[] = INCBIN_U16("graphics/pokemon/indeedee/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_IndeedeeF[] = INCBIN_U32("graphics/pokemon/indeedee/f/front.4bpp.lz"); - const u32 gMonPalette_IndeedeeF[] = INCBIN_U32("graphics/pokemon/indeedee/f/normal.gbapal.lz"); + const u16 gMonPalette_IndeedeeF[] = INCBIN_U16("graphics/pokemon/indeedee/f/normal.gbapal"); const u32 gMonBackPic_IndeedeeF[] = INCBIN_U32("graphics/pokemon/indeedee/f/back.4bpp.lz"); - const u32 gMonShinyPalette_IndeedeeF[] = INCBIN_U32("graphics/pokemon/indeedee/f/shiny.gbapal.lz"); + const u16 gMonShinyPalette_IndeedeeF[] = INCBIN_U16("graphics/pokemon/indeedee/f/shiny.gbapal"); const u8 gMonIcon_IndeedeeF[] = INCBIN_U8("graphics/pokemon/indeedee/f/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS const u32 gObjectEventPic_IndeedeeF[] = INCBIN_COMP("graphics/pokemon/indeedee/f/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - const u32 gOverworldPalette_IndeedeeF[] = INCBIN_U32("graphics/pokemon/indeedee/f/overworld_normal.gbapal.lz"); - const u32 gShinyOverworldPalette_IndeedeeF[] = INCBIN_U32("graphics/pokemon/indeedee/f/overworld_shiny.gbapal.lz"); + const u16 gOverworldPalette_IndeedeeF[] = INCBIN_U16("graphics/pokemon/indeedee/f/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_IndeedeeF[] = INCBIN_U16("graphics/pokemon/indeedee/f/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_INDEEDEE #if P_FAMILY_MORPEKO const u32 gMonFrontPic_MorpekoFullBelly[] = INCBIN_U32("graphics/pokemon/morpeko/front.4bpp.lz"); - const u32 gMonPalette_MorpekoFullBelly[] = INCBIN_U32("graphics/pokemon/morpeko/normal.gbapal.lz"); + const u16 gMonPalette_MorpekoFullBelly[] = INCBIN_U16("graphics/pokemon/morpeko/normal.gbapal"); const u32 gMonBackPic_MorpekoFullBelly[] = INCBIN_U32("graphics/pokemon/morpeko/back.4bpp.lz"); - const u32 gMonShinyPalette_MorpekoFullBelly[] = INCBIN_U32("graphics/pokemon/morpeko/shiny.gbapal.lz"); + const u16 gMonShinyPalette_MorpekoFullBelly[] = INCBIN_U16("graphics/pokemon/morpeko/shiny.gbapal"); const u8 gMonIcon_MorpekoFullBelly[] = INCBIN_U8("graphics/pokemon/morpeko/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Morpeko[] = INCBIN_U8("graphics/pokemon/morpeko/footprint.1bpp"); @@ -24045,30 +24045,30 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_MorpekoFullBelly[] = INCBIN_U16("graphics/pokemon/morpeko/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_MorpekoFullBelly[] = INCBIN_U16("graphics/pokemon/morpeko/overworld_shiny.gbapal"); #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 u16 gMonPalette_MorpekoHangry[] = INCBIN_U16("graphics/pokemon/morpeko/hangry/normal.gbapal"); 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 u16 gMonShinyPalette_MorpekoHangry[] = INCBIN_U16("graphics/pokemon/morpeko/hangry/shiny.gbapal"); 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"); + // const u16 gOverworldPalette_MorpekoHangry[] = INCBIN_U16("graphics/pokemon/morpeko/hangry/overworld_normal.gbapal"); + // const u16 gShinyOverworldPalette_MorpekoHangry[] = INCBIN_U16("graphics/pokemon/morpeko/hangry/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_MORPEKO #if P_FAMILY_CUFANT const u32 gMonFrontPic_Cufant[] = INCBIN_U32("graphics/pokemon/cufant/front.4bpp.lz"); - const u32 gMonPalette_Cufant[] = INCBIN_U32("graphics/pokemon/cufant/normal.gbapal.lz"); + const u16 gMonPalette_Cufant[] = INCBIN_U16("graphics/pokemon/cufant/normal.gbapal"); const u32 gMonBackPic_Cufant[] = INCBIN_U32("graphics/pokemon/cufant/back.4bpp.lz"); - const u32 gMonShinyPalette_Cufant[] = INCBIN_U32("graphics/pokemon/cufant/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Cufant[] = INCBIN_U16("graphics/pokemon/cufant/shiny.gbapal"); const u8 gMonIcon_Cufant[] = INCBIN_U8("graphics/pokemon/cufant/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Cufant[] = INCBIN_U8("graphics/pokemon/cufant/footprint.1bpp"); @@ -24076,15 +24076,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Cufant[] = INCBIN_U16("graphics/pokemon/cufant/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Cufant[] = INCBIN_U16("graphics/pokemon/cufant/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Copperajah[] = INCBIN_U16("graphics/pokemon/copperajah/normal.gbapal"); const u32 gMonBackPic_Copperajah[] = INCBIN_U32("graphics/pokemon/copperajah/back.4bpp.lz"); - const u32 gMonShinyPalette_Copperajah[] = INCBIN_U32("graphics/pokemon/copperajah/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Copperajah[] = INCBIN_U16("graphics/pokemon/copperajah/shiny.gbapal"); const u8 gMonIcon_Copperajah[] = INCBIN_U8("graphics/pokemon/copperajah/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Copperajah[] = INCBIN_U8("graphics/pokemon/copperajah/footprint.1bpp"); @@ -24092,22 +24092,22 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Copperajah[] = INCBIN_U16("graphics/pokemon/copperajah/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Copperajah[] = INCBIN_U16("graphics/pokemon/copperajah/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if P_GIGANTAMAX_FORMS const u32 gMonFrontPic_CopperajahGmax[] = INCBIN_U32("graphics/pokemon/copperajah/gmax/front.4bpp.lz"); const u32 gMonBackPic_CopperajahGmax[] = INCBIN_U32("graphics/pokemon/copperajah/gmax/back.4bpp.lz"); - const u32 gMonPalette_CopperajahGmax[] = INCBIN_U32("graphics/pokemon/copperajah/gmax/normal.gbapal.lz"); - const u32 gMonShinyPalette_CopperajahGmax[] = INCBIN_U32("graphics/pokemon/copperajah/gmax/shiny.gbapal.lz"); + const u16 gMonPalette_CopperajahGmax[] = INCBIN_U16("graphics/pokemon/copperajah/gmax/normal.gbapal"); + const u16 gMonShinyPalette_CopperajahGmax[] = INCBIN_U16("graphics/pokemon/copperajah/gmax/shiny.gbapal"); const u8 gMonIcon_CopperajahGmax[] = INCBIN_U8("graphics/pokemon/copperajah/gmax/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS // const u32 gObjectEventPic_CopperajahGmax[] = INCBIN_COMP("graphics/pokemon/copperajah/gmax/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - // const u32 gOverworldPalette_CopperajahGmax[] = INCBIN_U32("graphics/pokemon/copperajah/gmax/overworld_normal.gbapal.lz"); - // const u32 gShinyOverworldPalette_CopperajahGmax[] = INCBIN_U32("graphics/pokemon/copperajah/gmax/overworld_shiny.gbapal.lz"); + // const u16 gOverworldPalette_CopperajahGmax[] = INCBIN_U16("graphics/pokemon/copperajah/gmax/overworld_normal.gbapal"); + // const u16 gShinyOverworldPalette_CopperajahGmax[] = INCBIN_U16("graphics/pokemon/copperajah/gmax/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GIGANTAMAX_FORMS @@ -24115,9 +24115,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_DRACOZOLT const u32 gMonFrontPic_Dracozolt[] = INCBIN_U32("graphics/pokemon/dracozolt/front.4bpp.lz"); - const u32 gMonPalette_Dracozolt[] = INCBIN_U32("graphics/pokemon/dracozolt/normal.gbapal.lz"); + const u16 gMonPalette_Dracozolt[] = INCBIN_U16("graphics/pokemon/dracozolt/normal.gbapal"); const u32 gMonBackPic_Dracozolt[] = INCBIN_U32("graphics/pokemon/dracozolt/back.4bpp.lz"); - const u32 gMonShinyPalette_Dracozolt[] = INCBIN_U32("graphics/pokemon/dracozolt/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Dracozolt[] = INCBIN_U16("graphics/pokemon/dracozolt/shiny.gbapal"); const u8 gMonIcon_Dracozolt[] = INCBIN_U8("graphics/pokemon/dracozolt/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Dracozolt[] = INCBIN_U8("graphics/pokemon/dracozolt/footprint.1bpp"); @@ -24125,17 +24125,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Dracozolt[] = INCBIN_U16("graphics/pokemon/dracozolt/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Dracozolt[] = INCBIN_U16("graphics/pokemon/dracozolt/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_DRACOZOLT #if P_FAMILY_ARCTOZOLT const u32 gMonFrontPic_Arctozolt[] = INCBIN_U32("graphics/pokemon/arctozolt/front.4bpp.lz"); - const u32 gMonPalette_Arctozolt[] = INCBIN_U32("graphics/pokemon/arctozolt/normal.gbapal.lz"); + const u16 gMonPalette_Arctozolt[] = INCBIN_U16("graphics/pokemon/arctozolt/normal.gbapal"); const u32 gMonBackPic_Arctozolt[] = INCBIN_U32("graphics/pokemon/arctozolt/back.4bpp.lz"); - const u32 gMonShinyPalette_Arctozolt[] = INCBIN_U32("graphics/pokemon/arctozolt/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Arctozolt[] = INCBIN_U16("graphics/pokemon/arctozolt/shiny.gbapal"); const u8 gMonIcon_Arctozolt[] = INCBIN_U8("graphics/pokemon/arctozolt/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Arctozolt[] = INCBIN_U8("graphics/pokemon/arctozolt/footprint.1bpp"); @@ -24143,17 +24143,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Arctozolt[] = INCBIN_U16("graphics/pokemon/arctozolt/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Arctozolt[] = INCBIN_U16("graphics/pokemon/arctozolt/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_ARCTOZOLT #if P_FAMILY_DRACOVISH const u32 gMonFrontPic_Dracovish[] = INCBIN_U32("graphics/pokemon/dracovish/front.4bpp.lz"); - const u32 gMonPalette_Dracovish[] = INCBIN_U32("graphics/pokemon/dracovish/normal.gbapal.lz"); + const u16 gMonPalette_Dracovish[] = INCBIN_U16("graphics/pokemon/dracovish/normal.gbapal"); const u32 gMonBackPic_Dracovish[] = INCBIN_U32("graphics/pokemon/dracovish/back.4bpp.lz"); - const u32 gMonShinyPalette_Dracovish[] = INCBIN_U32("graphics/pokemon/dracovish/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Dracovish[] = INCBIN_U16("graphics/pokemon/dracovish/shiny.gbapal"); const u8 gMonIcon_Dracovish[] = INCBIN_U8("graphics/pokemon/dracovish/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Dracovish[] = INCBIN_U8("graphics/pokemon/dracovish/footprint.1bpp"); @@ -24161,17 +24161,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Dracovish[] = INCBIN_U16("graphics/pokemon/dracovish/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Dracovish[] = INCBIN_U16("graphics/pokemon/dracovish/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_DRACOVISH #if P_FAMILY_ARCTOVISH const u32 gMonFrontPic_Arctovish[] = INCBIN_U32("graphics/pokemon/arctovish/front.4bpp.lz"); - const u32 gMonPalette_Arctovish[] = INCBIN_U32("graphics/pokemon/arctovish/normal.gbapal.lz"); + const u16 gMonPalette_Arctovish[] = INCBIN_U16("graphics/pokemon/arctovish/normal.gbapal"); const u32 gMonBackPic_Arctovish[] = INCBIN_U32("graphics/pokemon/arctovish/back.4bpp.lz"); - const u32 gMonShinyPalette_Arctovish[] = INCBIN_U32("graphics/pokemon/arctovish/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Arctovish[] = INCBIN_U16("graphics/pokemon/arctovish/shiny.gbapal"); const u8 gMonIcon_Arctovish[] = INCBIN_U8("graphics/pokemon/arctovish/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Arctovish[] = INCBIN_U8("graphics/pokemon/arctovish/footprint.1bpp"); @@ -24179,17 +24179,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Arctovish[] = INCBIN_U16("graphics/pokemon/arctovish/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Arctovish[] = INCBIN_U16("graphics/pokemon/arctovish/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_ARCTOVISH #if P_FAMILY_DURALUDON const u32 gMonFrontPic_Duraludon[] = INCBIN_U32("graphics/pokemon/duraludon/anim_front.4bpp.lz"); - const u32 gMonPalette_Duraludon[] = INCBIN_U32("graphics/pokemon/duraludon/normal.gbapal.lz"); + const u16 gMonPalette_Duraludon[] = INCBIN_U16("graphics/pokemon/duraludon/normal.gbapal"); const u32 gMonBackPic_Duraludon[] = INCBIN_U32("graphics/pokemon/duraludon/back.4bpp.lz"); - const u32 gMonShinyPalette_Duraludon[] = INCBIN_U32("graphics/pokemon/duraludon/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Duraludon[] = INCBIN_U16("graphics/pokemon/duraludon/shiny.gbapal"); const u8 gMonIcon_Duraludon[] = INCBIN_U8("graphics/pokemon/duraludon/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Duraludon[] = INCBIN_U8("graphics/pokemon/duraludon/footprint.1bpp"); @@ -24197,31 +24197,31 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Duraludon[] = INCBIN_U16("graphics/pokemon/duraludon/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Duraludon[] = INCBIN_U16("graphics/pokemon/duraludon/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if P_GIGANTAMAX_FORMS const u32 gMonFrontPic_DuraludonGmax[] = INCBIN_U32("graphics/pokemon/duraludon/gmax/front.4bpp.lz"); const u32 gMonBackPic_DuraludonGmax[] = INCBIN_U32("graphics/pokemon/duraludon/gmax/back.4bpp.lz"); - const u32 gMonPalette_DuraludonGmax[] = INCBIN_U32("graphics/pokemon/duraludon/gmax/normal.gbapal.lz"); - const u32 gMonShinyPalette_DuraludonGmax[] = INCBIN_U32("graphics/pokemon/duraludon/gmax/shiny.gbapal.lz"); + const u16 gMonPalette_DuraludonGmax[] = INCBIN_U16("graphics/pokemon/duraludon/gmax/normal.gbapal"); + const u16 gMonShinyPalette_DuraludonGmax[] = INCBIN_U16("graphics/pokemon/duraludon/gmax/shiny.gbapal"); const u8 gMonIcon_DuraludonGmax[] = INCBIN_U8("graphics/pokemon/duraludon/gmax/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS // const u32 gObjectEventPic_DuraludonGmax[] = INCBIN_COMP("graphics/pokemon/duraludon/gmax/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - // const u32 gOverworldPalette_DuraludonGmax[] = INCBIN_U32("graphics/pokemon/duraludon/gmax/overworld_normal.gbapal.lz"); - // const u32 gShinyOverworldPalette_DuraludonGmax[] = INCBIN_U32("graphics/pokemon/duraludon/gmax/overworld_shiny.gbapal.lz"); + // const u16 gOverworldPalette_DuraludonGmax[] = INCBIN_U16("graphics/pokemon/duraludon/gmax/overworld_normal.gbapal"); + // const u16 gShinyOverworldPalette_DuraludonGmax[] = INCBIN_U16("graphics/pokemon/duraludon/gmax/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GIGANTAMAX_FORMS #if P_GEN_9_CROSS_EVOS const u32 gMonFrontPic_Archaludon[] = INCBIN_U32("graphics/pokemon/archaludon/front.4bpp.lz"); - const u32 gMonPalette_Archaludon[] = INCBIN_U32("graphics/pokemon/archaludon/normal.gbapal.lz"); + const u16 gMonPalette_Archaludon[] = INCBIN_U16("graphics/pokemon/archaludon/normal.gbapal"); const u32 gMonBackPic_Archaludon[] = INCBIN_U32("graphics/pokemon/archaludon/back.4bpp.lz"); - const u32 gMonShinyPalette_Archaludon[] = INCBIN_U32("graphics/pokemon/archaludon/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Archaludon[] = INCBIN_U16("graphics/pokemon/archaludon/shiny.gbapal"); const u8 gMonIcon_Archaludon[] = INCBIN_U8("graphics/pokemon/archaludon/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Archaludon[] = INCBIN_U8("graphics/pokemon/archaludon/footprint.1bpp"); @@ -24229,8 +24229,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Archaludon[] = INCBIN_U16("graphics/pokemon/archaludon/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Archaludon[] = INCBIN_U16("graphics/pokemon/archaludon/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_9_CROSS_EVOS @@ -24238,9 +24238,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_DREEPY const u32 gMonFrontPic_Dreepy[] = INCBIN_U32("graphics/pokemon/dreepy/front.4bpp.lz"); - const u32 gMonPalette_Dreepy[] = INCBIN_U32("graphics/pokemon/dreepy/normal.gbapal.lz"); + const u16 gMonPalette_Dreepy[] = INCBIN_U16("graphics/pokemon/dreepy/normal.gbapal"); const u32 gMonBackPic_Dreepy[] = INCBIN_U32("graphics/pokemon/dreepy/back.4bpp.lz"); - const u32 gMonShinyPalette_Dreepy[] = INCBIN_U32("graphics/pokemon/dreepy/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Dreepy[] = INCBIN_U16("graphics/pokemon/dreepy/shiny.gbapal"); const u8 gMonIcon_Dreepy[] = INCBIN_U8("graphics/pokemon/dreepy/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Dreepy[] = INCBIN_U8("graphics/pokemon/dreepy/footprint.1bpp"); @@ -24248,15 +24248,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Dreepy[] = INCBIN_U16("graphics/pokemon/dreepy/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Dreepy[] = INCBIN_U16("graphics/pokemon/dreepy/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Drakloak[] = INCBIN_U16("graphics/pokemon/drakloak/normal.gbapal"); const u32 gMonBackPic_Drakloak[] = INCBIN_U32("graphics/pokemon/drakloak/back.4bpp.lz"); - const u32 gMonShinyPalette_Drakloak[] = INCBIN_U32("graphics/pokemon/drakloak/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Drakloak[] = INCBIN_U16("graphics/pokemon/drakloak/shiny.gbapal"); const u8 gMonIcon_Drakloak[] = INCBIN_U8("graphics/pokemon/drakloak/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Drakloak[] = INCBIN_U8("graphics/pokemon/drakloak/footprint.1bpp"); @@ -24264,15 +24264,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Drakloak[] = INCBIN_U16("graphics/pokemon/drakloak/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Drakloak[] = INCBIN_U16("graphics/pokemon/drakloak/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Dragapult[] = INCBIN_U16("graphics/pokemon/dragapult/normal.gbapal"); const u32 gMonBackPic_Dragapult[] = INCBIN_U32("graphics/pokemon/dragapult/back.4bpp.lz"); - const u32 gMonShinyPalette_Dragapult[] = INCBIN_U32("graphics/pokemon/dragapult/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Dragapult[] = INCBIN_U16("graphics/pokemon/dragapult/shiny.gbapal"); const u8 gMonIcon_Dragapult[] = INCBIN_U8("graphics/pokemon/dragapult/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Dragapult[] = INCBIN_U8("graphics/pokemon/dragapult/footprint.1bpp"); @@ -24280,17 +24280,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Dragapult[] = INCBIN_U16("graphics/pokemon/dragapult/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Dragapult[] = INCBIN_U16("graphics/pokemon/dragapult/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_DREEPY #if P_FAMILY_ZACIAN const u32 gMonFrontPic_ZacianHero[] = INCBIN_U32("graphics/pokemon/zacian/front.4bpp.lz"); - const u32 gMonPalette_ZacianHero[] = INCBIN_U32("graphics/pokemon/zacian/normal.gbapal.lz"); + const u16 gMonPalette_ZacianHero[] = INCBIN_U16("graphics/pokemon/zacian/normal.gbapal"); const u32 gMonBackPic_ZacianHero[] = INCBIN_U32("graphics/pokemon/zacian/back.4bpp.lz"); - const u32 gMonShinyPalette_ZacianHero[] = INCBIN_U32("graphics/pokemon/zacian/shiny.gbapal.lz"); + const u16 gMonShinyPalette_ZacianHero[] = INCBIN_U16("graphics/pokemon/zacian/shiny.gbapal"); const u8 gMonIcon_ZacianHero[] = INCBIN_U8("graphics/pokemon/zacian/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Zacian[] = INCBIN_U8("graphics/pokemon/zacian/footprint.1bpp"); @@ -24298,30 +24298,30 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if OW_POKEMON_OBJECT_EVENTS const u32 gObjectEventPic_ZacianHero[] = INCBIN_COMP("graphics/pokemon/zacian/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - const u32 gOverworldPalette_ZacianHero[] = INCBIN_U32("graphics/pokemon/zacian/overworld_normal.gbapal.lz"); - const u32 gShinyOverworldPalette_ZacianHero[] = INCBIN_U32("graphics/pokemon/zacian/overworld_shiny.gbapal.lz"); + const u16 gOverworldPalette_ZacianHero[] = INCBIN_U16("graphics/pokemon/zacian/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_ZacianHero[] = INCBIN_U16("graphics/pokemon/zacian/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_ZacianCrowned[] = INCBIN_U32("graphics/pokemon/zacian/crowned_sword/front.4bpp.lz"); - const u32 gMonPalette_ZacianCrowned[] = INCBIN_U32("graphics/pokemon/zacian/crowned_sword/normal.gbapal.lz"); + const u16 gMonPalette_ZacianCrowned[] = INCBIN_U16("graphics/pokemon/zacian/crowned_sword/normal.gbapal"); const u32 gMonBackPic_ZacianCrowned[] = INCBIN_U32("graphics/pokemon/zacian/crowned_sword/back.4bpp.lz"); - const u32 gMonShinyPalette_ZacianCrowned[] = INCBIN_U32("graphics/pokemon/zacian/crowned_sword/shiny.gbapal.lz"); + const u16 gMonShinyPalette_ZacianCrowned[] = INCBIN_U16("graphics/pokemon/zacian/crowned_sword/shiny.gbapal"); const u8 gMonIcon_ZacianCrowned[] = INCBIN_U8("graphics/pokemon/zacian/crowned_sword/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS const u32 gObjectEventPic_ZacianCrowned[] = INCBIN_COMP("graphics/pokemon/zacian/crowned_sword/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - const u32 gOverworldPalette_ZacianCrowned[] = INCBIN_U32("graphics/pokemon/zacian/crowned_sword/overworld_normal.gbapal.lz"); - const u32 gShinyOverworldPalette_ZacianCrowned[] = INCBIN_U32("graphics/pokemon/zacian/crowned_sword/overworld_shiny.gbapal.lz"); + const u16 gOverworldPalette_ZacianCrowned[] = INCBIN_U16("graphics/pokemon/zacian/crowned_sword/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_ZacianCrowned[] = INCBIN_U16("graphics/pokemon/zacian/crowned_sword/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_ZACIAN #if P_FAMILY_ZAMAZENTA const u32 gMonFrontPic_ZamazentaHero[] = INCBIN_U32("graphics/pokemon/zamazenta/front.4bpp.lz"); - const u32 gMonPalette_ZamazentaHero[] = INCBIN_U32("graphics/pokemon/zamazenta/normal.gbapal.lz"); + const u16 gMonPalette_ZamazentaHero[] = INCBIN_U16("graphics/pokemon/zamazenta/normal.gbapal"); const u32 gMonBackPic_ZamazentaHero[] = INCBIN_U32("graphics/pokemon/zamazenta/back.4bpp.lz"); - const u32 gMonShinyPalette_ZamazentaHero[] = INCBIN_U32("graphics/pokemon/zamazenta/shiny.gbapal.lz"); + const u16 gMonShinyPalette_ZamazentaHero[] = INCBIN_U16("graphics/pokemon/zamazenta/shiny.gbapal"); const u8 gMonIcon_ZamazentaHero[] = INCBIN_U8("graphics/pokemon/zamazenta/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Zamazenta[] = INCBIN_U8("graphics/pokemon/zamazenta/footprint.1bpp"); @@ -24329,30 +24329,30 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if OW_POKEMON_OBJECT_EVENTS const u32 gObjectEventPic_ZamazentaHero[] = INCBIN_COMP("graphics/pokemon/zamazenta/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - const u32 gOverworldPalette_ZamazentaHero[] = INCBIN_U32("graphics/pokemon/zamazenta/overworld_normal.gbapal.lz"); - const u32 gShinyOverworldPalette_ZamazentaHero[] = INCBIN_U32("graphics/pokemon/zamazenta/overworld_shiny.gbapal.lz"); + const u16 gOverworldPalette_ZamazentaHero[] = INCBIN_U16("graphics/pokemon/zamazenta/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_ZamazentaHero[] = INCBIN_U16("graphics/pokemon/zamazenta/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_ZamazentaCrowned[] = INCBIN_U32("graphics/pokemon/zamazenta/crowned_shield/front.4bpp.lz"); - const u32 gMonPalette_ZamazentaCrowned[] = INCBIN_U32("graphics/pokemon/zamazenta/crowned_shield/normal.gbapal.lz"); + const u16 gMonPalette_ZamazentaCrowned[] = INCBIN_U16("graphics/pokemon/zamazenta/crowned_shield/normal.gbapal"); const u32 gMonBackPic_ZamazentaCrowned[] = INCBIN_U32("graphics/pokemon/zamazenta/crowned_shield/back.4bpp.lz"); - const u32 gMonShinyPalette_ZamazentaCrowned[] = INCBIN_U32("graphics/pokemon/zamazenta/crowned_shield/shiny.gbapal.lz"); + const u16 gMonShinyPalette_ZamazentaCrowned[] = INCBIN_U16("graphics/pokemon/zamazenta/crowned_shield/shiny.gbapal"); const u8 gMonIcon_ZamazentaCrowned[] = INCBIN_U8("graphics/pokemon/zamazenta/crowned_shield/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS const u32 gObjectEventPic_ZamazentaCrowned[] = INCBIN_COMP("graphics/pokemon/zamazenta/crowned_shield/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - const u32 gOverworldPalette_ZamazentaCrowned[] = INCBIN_U32("graphics/pokemon/zamazenta/crowned_shield/overworld_normal.gbapal.lz"); - const u32 gShinyOverworldPalette_ZamazentaCrowned[] = INCBIN_U32("graphics/pokemon/zamazenta/crowned_shield/overworld_shiny.gbapal.lz"); + const u16 gOverworldPalette_ZamazentaCrowned[] = INCBIN_U16("graphics/pokemon/zamazenta/crowned_shield/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_ZamazentaCrowned[] = INCBIN_U16("graphics/pokemon/zamazenta/crowned_shield/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_ZAMAZENTA #if P_FAMILY_ETERNATUS const u32 gMonFrontPic_Eternatus[] = INCBIN_U32("graphics/pokemon/eternatus/front.4bpp.lz"); - const u32 gMonPalette_Eternatus[] = INCBIN_U32("graphics/pokemon/eternatus/normal.gbapal.lz"); + const u16 gMonPalette_Eternatus[] = INCBIN_U16("graphics/pokemon/eternatus/normal.gbapal"); const u32 gMonBackPic_Eternatus[] = INCBIN_U32("graphics/pokemon/eternatus/back.4bpp.lz"); - const u32 gMonShinyPalette_Eternatus[] = INCBIN_U32("graphics/pokemon/eternatus/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Eternatus[] = INCBIN_U16("graphics/pokemon/eternatus/shiny.gbapal"); const u8 gMonIcon_Eternatus[] = INCBIN_U8("graphics/pokemon/eternatus/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Eternatus[] = INCBIN_U8("graphics/pokemon/eternatus/footprint.1bpp"); @@ -24360,30 +24360,30 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Eternatus[] = INCBIN_U16("graphics/pokemon/eternatus/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Eternatus[] = INCBIN_U16("graphics/pokemon/eternatus/overworld_shiny.gbapal"); #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 u16 gMonPalette_EternatusEternamax[] = INCBIN_U16("graphics/pokemon/eternatus/eternamax/normal.gbapal"); 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 u16 gMonShinyPalette_EternatusEternamax[] = INCBIN_U16("graphics/pokemon/eternatus/eternamax/shiny.gbapal"); 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"); + // const u16 gOverworldPalette_EternatusEternamax[] = INCBIN_U16("graphics/pokemon/eternatus/eternamax/overworld_normal.gbapal"); + // const u16 gShinyOverworldPalette_EternatusEternamax[] = INCBIN_U16("graphics/pokemon/eternatus/eternamax/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_ETERNATUS #if P_FAMILY_KUBFU const u32 gMonFrontPic_Kubfu[] = INCBIN_U32("graphics/pokemon/kubfu/front.4bpp.lz"); - const u32 gMonPalette_Kubfu[] = INCBIN_U32("graphics/pokemon/kubfu/normal.gbapal.lz"); + const u16 gMonPalette_Kubfu[] = INCBIN_U16("graphics/pokemon/kubfu/normal.gbapal"); const u32 gMonBackPic_Kubfu[] = INCBIN_U32("graphics/pokemon/kubfu/back.4bpp.lz"); - const u32 gMonShinyPalette_Kubfu[] = INCBIN_U32("graphics/pokemon/kubfu/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Kubfu[] = INCBIN_U16("graphics/pokemon/kubfu/shiny.gbapal"); const u8 gMonIcon_Kubfu[] = INCBIN_U8("graphics/pokemon/kubfu/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Kubfu[] = INCBIN_U8("graphics/pokemon/kubfu/footprint.1bpp"); @@ -24391,15 +24391,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Kubfu[] = INCBIN_U16("graphics/pokemon/kubfu/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Kubfu[] = INCBIN_U16("graphics/pokemon/kubfu/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_UrshifuSingleStrike[] = INCBIN_U32("graphics/pokemon/urshifu/front.4bpp.lz"); - const u32 gMonPalette_UrshifuSingleStrike[] = INCBIN_U32("graphics/pokemon/urshifu/normal.gbapal.lz"); + const u16 gMonPalette_UrshifuSingleStrike[] = INCBIN_U16("graphics/pokemon/urshifu/normal.gbapal"); const u32 gMonBackPic_UrshifuSingleStrike[] = INCBIN_U32("graphics/pokemon/urshifu/back.4bpp.lz"); - const u32 gMonShinyPalette_UrshifuSingleStrike[] = INCBIN_U32("graphics/pokemon/urshifu/shiny.gbapal.lz"); + const u16 gMonShinyPalette_UrshifuSingleStrike[] = INCBIN_U16("graphics/pokemon/urshifu/shiny.gbapal"); const u8 gMonIcon_Urshifu[] = INCBIN_U8("graphics/pokemon/urshifu/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Urshifu[] = INCBIN_U8("graphics/pokemon/urshifu/footprint.1bpp"); @@ -24407,27 +24407,27 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Urshifu[] = INCBIN_U16("graphics/pokemon/urshifu/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Urshifu[] = INCBIN_U16("graphics/pokemon/urshifu/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_UrshifuRapidStrike[] = INCBIN_U32("graphics/pokemon/urshifu/rapid_strike/front.4bpp.lz"); - const u32 gMonPalette_UrshifuRapidStrike[] = INCBIN_U32("graphics/pokemon/urshifu/rapid_strike/normal.gbapal.lz"); + const u16 gMonPalette_UrshifuRapidStrike[] = INCBIN_U16("graphics/pokemon/urshifu/rapid_strike/normal.gbapal"); const u32 gMonBackPic_UrshifuRapidStrike[] = INCBIN_U32("graphics/pokemon/urshifu/rapid_strike/back.4bpp.lz"); - const u32 gMonShinyPalette_UrshifuRapidStrike[] = INCBIN_U32("graphics/pokemon/urshifu/rapid_strike/shiny.gbapal.lz"); + const u16 gMonShinyPalette_UrshifuRapidStrike[] = INCBIN_U16("graphics/pokemon/urshifu/rapid_strike/shiny.gbapal"); #if P_GIGANTAMAX_FORMS const u32 gMonFrontPic_UrshifuSingleStrikeGmax[] = INCBIN_U32("graphics/pokemon/urshifu/single_strike_gmax/front.4bpp.lz"); const u32 gMonBackPic_UrshifuSingleStrikeGmax[] = INCBIN_U32("graphics/pokemon/urshifu/single_strike_gmax/back.4bpp.lz"); - const u32 gMonPalette_UrshifuSingleStrikeGmax[] = INCBIN_U32("graphics/pokemon/urshifu/single_strike_gmax/normal.gbapal.lz"); - const u32 gMonShinyPalette_UrshifuSingleStrikeGmax[] = INCBIN_U32("graphics/pokemon/urshifu/single_strike_gmax/shiny.gbapal.lz"); + const u16 gMonPalette_UrshifuSingleStrikeGmax[] = INCBIN_U16("graphics/pokemon/urshifu/single_strike_gmax/normal.gbapal"); + const u16 gMonShinyPalette_UrshifuSingleStrikeGmax[] = INCBIN_U16("graphics/pokemon/urshifu/single_strike_gmax/shiny.gbapal"); const u8 gMonIcon_UrshifuSingleStrikeGmax[] = INCBIN_U8("graphics/pokemon/urshifu/single_strike_gmax/icon.4bpp"); const u32 gMonFrontPic_UrshifuRapidStrikeGmax[] = INCBIN_U32("graphics/pokemon/urshifu/rapid_strike_gmax/front.4bpp.lz"); const u32 gMonBackPic_UrshifuRapidStrikeGmax[] = INCBIN_U32("graphics/pokemon/urshifu/rapid_strike_gmax/back.4bpp.lz"); - const u32 gMonPalette_UrshifuRapidStrikeGmax[] = INCBIN_U32("graphics/pokemon/urshifu/rapid_strike_gmax/normal.gbapal.lz"); - const u32 gMonShinyPalette_UrshifuRapidStrikeGmax[] = INCBIN_U32("graphics/pokemon/urshifu/rapid_strike_gmax/shiny.gbapal.lz"); + const u16 gMonPalette_UrshifuRapidStrikeGmax[] = INCBIN_U16("graphics/pokemon/urshifu/rapid_strike_gmax/normal.gbapal"); + const u16 gMonShinyPalette_UrshifuRapidStrikeGmax[] = INCBIN_U16("graphics/pokemon/urshifu/rapid_strike_gmax/shiny.gbapal"); const u8 gMonIcon_UrshifuRapidStrikeGmax[] = INCBIN_U8("graphics/pokemon/urshifu/rapid_strike_gmax/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS @@ -24439,9 +24439,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_ZARUDE const u32 gMonFrontPic_Zarude[] = INCBIN_U32("graphics/pokemon/zarude/front.4bpp.lz"); - const u32 gMonPalette_Zarude[] = INCBIN_U32("graphics/pokemon/zarude/normal.gbapal.lz"); + const u16 gMonPalette_Zarude[] = INCBIN_U16("graphics/pokemon/zarude/normal.gbapal"); const u32 gMonBackPic_Zarude[] = INCBIN_U32("graphics/pokemon/zarude/back.4bpp.lz"); - const u32 gMonShinyPalette_Zarude[] = INCBIN_U32("graphics/pokemon/zarude/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Zarude[] = INCBIN_U16("graphics/pokemon/zarude/shiny.gbapal"); const u8 gMonIcon_Zarude[] = INCBIN_U8("graphics/pokemon/zarude/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Zarude[] = INCBIN_U8("graphics/pokemon/zarude/footprint.1bpp"); @@ -24449,30 +24449,30 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Zarude[] = INCBIN_U16("graphics/pokemon/zarude/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Zarude[] = INCBIN_U16("graphics/pokemon/zarude/overworld_shiny.gbapal"); #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 u16 gMonPalette_ZarudeDada[] = INCBIN_U16("graphics/pokemon/zarude/dada/normal.gbapal"); 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 u16 gMonShinyPalette_ZarudeDada[] = INCBIN_U16("graphics/pokemon/zarude/dada/shiny.gbapal"); 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"); + // const u16 gOverworldPalette_ZarudeDada[] = INCBIN_U16("graphics/pokemon/zarude/dada/overworld_normal.gbapal"); + // const u16 gShinyOverworldPalette_ZarudeDada[] = INCBIN_U16("graphics/pokemon/zarude/dada/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_ZARUDE #if P_FAMILY_REGIELEKI const u32 gMonFrontPic_Regieleki[] = INCBIN_U32("graphics/pokemon/regieleki/front.4bpp.lz"); - const u32 gMonPalette_Regieleki[] = INCBIN_U32("graphics/pokemon/regieleki/normal.gbapal.lz"); + const u16 gMonPalette_Regieleki[] = INCBIN_U16("graphics/pokemon/regieleki/normal.gbapal"); const u32 gMonBackPic_Regieleki[] = INCBIN_U32("graphics/pokemon/regieleki/back.4bpp.lz"); - const u32 gMonShinyPalette_Regieleki[] = INCBIN_U32("graphics/pokemon/regieleki/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Regieleki[] = INCBIN_U16("graphics/pokemon/regieleki/shiny.gbapal"); const u8 gMonIcon_Regieleki[] = INCBIN_U8("graphics/pokemon/regieleki/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Regieleki[] = INCBIN_U8("graphics/pokemon/regieleki/footprint.1bpp"); @@ -24480,17 +24480,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Regieleki[] = INCBIN_U16("graphics/pokemon/regieleki/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Regieleki[] = INCBIN_U16("graphics/pokemon/regieleki/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_REGIELEKI #if P_FAMILY_REGIDRAGO const u32 gMonFrontPic_Regidrago[] = INCBIN_U32("graphics/pokemon/regidrago/front.4bpp.lz"); - const u32 gMonPalette_Regidrago[] = INCBIN_U32("graphics/pokemon/regidrago/normal.gbapal.lz"); + const u16 gMonPalette_Regidrago[] = INCBIN_U16("graphics/pokemon/regidrago/normal.gbapal"); const u32 gMonBackPic_Regidrago[] = INCBIN_U32("graphics/pokemon/regidrago/back.4bpp.lz"); - const u32 gMonShinyPalette_Regidrago[] = INCBIN_U32("graphics/pokemon/regidrago/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Regidrago[] = INCBIN_U16("graphics/pokemon/regidrago/shiny.gbapal"); const u8 gMonIcon_Regidrago[] = INCBIN_U8("graphics/pokemon/regidrago/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Regidrago[] = INCBIN_U8("graphics/pokemon/regidrago/footprint.1bpp"); @@ -24498,17 +24498,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Regidrago[] = INCBIN_U16("graphics/pokemon/regidrago/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Regidrago[] = INCBIN_U16("graphics/pokemon/regidrago/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_REGIDRAGO #if P_FAMILY_GLASTRIER const u32 gMonFrontPic_Glastrier[] = INCBIN_U32("graphics/pokemon/glastrier/front.4bpp.lz"); - const u32 gMonPalette_Glastrier[] = INCBIN_U32("graphics/pokemon/glastrier/normal.gbapal.lz"); + const u16 gMonPalette_Glastrier[] = INCBIN_U16("graphics/pokemon/glastrier/normal.gbapal"); const u32 gMonBackPic_Glastrier[] = INCBIN_U32("graphics/pokemon/glastrier/back.4bpp.lz"); - const u32 gMonShinyPalette_Glastrier[] = INCBIN_U32("graphics/pokemon/glastrier/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Glastrier[] = INCBIN_U16("graphics/pokemon/glastrier/shiny.gbapal"); const u8 gMonIcon_Glastrier[] = INCBIN_U8("graphics/pokemon/glastrier/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Glastrier[] = INCBIN_U8("graphics/pokemon/glastrier/footprint.1bpp"); @@ -24516,17 +24516,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Glastrier[] = INCBIN_U16("graphics/pokemon/glastrier/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Glastrier[] = INCBIN_U16("graphics/pokemon/glastrier/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_GLASTRIER #if P_FAMILY_SPECTRIER const u32 gMonFrontPic_Spectrier[] = INCBIN_U32("graphics/pokemon/spectrier/front.4bpp.lz"); - const u32 gMonPalette_Spectrier[] = INCBIN_U32("graphics/pokemon/spectrier/normal.gbapal.lz"); + const u16 gMonPalette_Spectrier[] = INCBIN_U16("graphics/pokemon/spectrier/normal.gbapal"); const u32 gMonBackPic_Spectrier[] = INCBIN_U32("graphics/pokemon/spectrier/back.4bpp.lz"); - const u32 gMonShinyPalette_Spectrier[] = INCBIN_U32("graphics/pokemon/spectrier/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Spectrier[] = INCBIN_U16("graphics/pokemon/spectrier/shiny.gbapal"); const u8 gMonIcon_Spectrier[] = INCBIN_U8("graphics/pokemon/spectrier/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Spectrier[] = INCBIN_U8("graphics/pokemon/spectrier/footprint.1bpp"); @@ -24534,17 +24534,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Spectrier[] = INCBIN_U16("graphics/pokemon/spectrier/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Spectrier[] = INCBIN_U16("graphics/pokemon/spectrier/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SPECTRIER #if P_FAMILY_CALYREX const u32 gMonFrontPic_Calyrex[] = INCBIN_U32("graphics/pokemon/calyrex/front.4bpp.lz"); - const u32 gMonPalette_Calyrex[] = INCBIN_U32("graphics/pokemon/calyrex/normal.gbapal.lz"); + const u16 gMonPalette_Calyrex[] = INCBIN_U16("graphics/pokemon/calyrex/normal.gbapal"); const u32 gMonBackPic_Calyrex[] = INCBIN_U32("graphics/pokemon/calyrex/back.4bpp.lz"); - const u32 gMonShinyPalette_Calyrex[] = INCBIN_U32("graphics/pokemon/calyrex/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Calyrex[] = INCBIN_U16("graphics/pokemon/calyrex/shiny.gbapal"); const u8 gMonIcon_Calyrex[] = INCBIN_U8("graphics/pokemon/calyrex/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Calyrex[] = INCBIN_U8("graphics/pokemon/calyrex/footprint.1bpp"); @@ -24552,37 +24552,37 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Calyrex[] = INCBIN_U16("graphics/pokemon/calyrex/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Calyrex[] = INCBIN_U16("graphics/pokemon/calyrex/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #if P_FUSION_FORMS const u32 gMonFrontPic_CalyrexIce[] = INCBIN_U32("graphics/pokemon/calyrex/ice/front.4bpp.lz"); - const u32 gMonPalette_CalyrexIce[] = INCBIN_U32("graphics/pokemon/calyrex/ice/normal.gbapal.lz"); + const u16 gMonPalette_CalyrexIce[] = INCBIN_U16("graphics/pokemon/calyrex/ice/normal.gbapal"); const u32 gMonBackPic_CalyrexIce[] = INCBIN_U32("graphics/pokemon/calyrex/ice/back.4bpp.lz"); - const u32 gMonShinyPalette_CalyrexIce[] = INCBIN_U32("graphics/pokemon/calyrex/ice/shiny.gbapal.lz"); + const u16 gMonShinyPalette_CalyrexIce[] = INCBIN_U16("graphics/pokemon/calyrex/ice/shiny.gbapal"); const u8 gMonIcon_CalyrexIce[] = INCBIN_U8("graphics/pokemon/calyrex/ice/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS const u32 gObjectEventPic_CalyrexIce[] = INCBIN_COMP("graphics/pokemon/calyrex/ice/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - const u32 gOverworldPalette_CalyrexIce[] = INCBIN_U32("graphics/pokemon/calyrex/ice/overworld_normal.gbapal.lz"); - const u32 gShinyOverworldPalette_CalyrexIce[] = INCBIN_U32("graphics/pokemon/calyrex/ice/overworld_shiny.gbapal.lz"); + const u16 gOverworldPalette_CalyrexIce[] = INCBIN_U16("graphics/pokemon/calyrex/ice/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_CalyrexIce[] = INCBIN_U16("graphics/pokemon/calyrex/ice/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FUSION_FORMS #if P_FUSION_FORMS const u32 gMonFrontPic_CalyrexShadow[] = INCBIN_U32("graphics/pokemon/calyrex/shadow/front.4bpp.lz"); - const u32 gMonPalette_CalyrexShadow[] = INCBIN_U32("graphics/pokemon/calyrex/shadow/normal.gbapal.lz"); + const u16 gMonPalette_CalyrexShadow[] = INCBIN_U16("graphics/pokemon/calyrex/shadow/normal.gbapal"); const u32 gMonBackPic_CalyrexShadow[] = INCBIN_U32("graphics/pokemon/calyrex/shadow/back.4bpp.lz"); - const u32 gMonShinyPalette_CalyrexShadow[] = INCBIN_U32("graphics/pokemon/calyrex/shadow/shiny.gbapal.lz"); + const u16 gMonShinyPalette_CalyrexShadow[] = INCBIN_U16("graphics/pokemon/calyrex/shadow/shiny.gbapal"); const u8 gMonIcon_CalyrexShadow[] = INCBIN_U8("graphics/pokemon/calyrex/shadow/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS const u32 gObjectEventPic_CalyrexShadow[] = INCBIN_COMP("graphics/pokemon/calyrex/shadow/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - const u32 gOverworldPalette_CalyrexShadow[] = INCBIN_U32("graphics/pokemon/calyrex/shadow/overworld_normal.gbapal.lz"); - const u32 gShinyOverworldPalette_CalyrexShadow[] = INCBIN_U32("graphics/pokemon/calyrex/shadow/overworld_shiny.gbapal.lz"); + const u16 gOverworldPalette_CalyrexShadow[] = INCBIN_U16("graphics/pokemon/calyrex/shadow/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_CalyrexShadow[] = INCBIN_U16("graphics/pokemon/calyrex/shadow/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FUSION_FORMS @@ -24590,9 +24590,9 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_SPRIGATITO const u32 gMonFrontPic_Sprigatito[] = INCBIN_U32("graphics/pokemon/sprigatito/front.4bpp.lz"); - const u32 gMonPalette_Sprigatito[] = INCBIN_U32("graphics/pokemon/sprigatito/normal.gbapal.lz"); + const u16 gMonPalette_Sprigatito[] = INCBIN_U16("graphics/pokemon/sprigatito/normal.gbapal"); const u32 gMonBackPic_Sprigatito[] = INCBIN_U32("graphics/pokemon/sprigatito/back.4bpp.lz"); - const u32 gMonShinyPalette_Sprigatito[] = INCBIN_U32("graphics/pokemon/sprigatito/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Sprigatito[] = INCBIN_U16("graphics/pokemon/sprigatito/shiny.gbapal"); const u8 gMonIcon_Sprigatito[] = INCBIN_U8("graphics/pokemon/sprigatito/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Sprigatito[] = INCBIN_U8("graphics/pokemon/sprigatito/footprint.1bpp"); @@ -24600,15 +24600,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Sprigatito[] = INCBIN_U16("graphics/pokemon/sprigatito/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Sprigatito[] = INCBIN_U16("graphics/pokemon/sprigatito/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Floragato[] = INCBIN_U16("graphics/pokemon/floragato/normal.gbapal"); const u32 gMonBackPic_Floragato[] = INCBIN_U32("graphics/pokemon/floragato/back.4bpp.lz"); - const u32 gMonShinyPalette_Floragato[] = INCBIN_U32("graphics/pokemon/floragato/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Floragato[] = INCBIN_U16("graphics/pokemon/floragato/shiny.gbapal"); const u8 gMonIcon_Floragato[] = INCBIN_U8("graphics/pokemon/floragato/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Floragato[] = INCBIN_U8("graphics/pokemon/floragato/footprint.1bpp"); @@ -24616,15 +24616,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Floragato[] = INCBIN_U16("graphics/pokemon/floragato/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Floragato[] = INCBIN_U16("graphics/pokemon/floragato/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Meowscarada[] = INCBIN_U16("graphics/pokemon/meowscarada/normal.gbapal"); const u32 gMonBackPic_Meowscarada[] = INCBIN_U32("graphics/pokemon/meowscarada/back.4bpp.lz"); - const u32 gMonShinyPalette_Meowscarada[] = INCBIN_U32("graphics/pokemon/meowscarada/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Meowscarada[] = INCBIN_U16("graphics/pokemon/meowscarada/shiny.gbapal"); const u8 gMonIcon_Meowscarada[] = INCBIN_U8("graphics/pokemon/meowscarada/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Meowscarada[] = INCBIN_U8("graphics/pokemon/meowscarada/footprint.1bpp"); @@ -24632,17 +24632,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Meowscarada[] = INCBIN_U16("graphics/pokemon/meowscarada/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Meowscarada[] = INCBIN_U16("graphics/pokemon/meowscarada/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SPRIGATITO #if P_FAMILY_FUECOCO const u32 gMonFrontPic_Fuecoco[] = INCBIN_U32("graphics/pokemon/fuecoco/front.4bpp.lz"); - const u32 gMonPalette_Fuecoco[] = INCBIN_U32("graphics/pokemon/fuecoco/normal.gbapal.lz"); + const u16 gMonPalette_Fuecoco[] = INCBIN_U16("graphics/pokemon/fuecoco/normal.gbapal"); const u32 gMonBackPic_Fuecoco[] = INCBIN_U32("graphics/pokemon/fuecoco/back.4bpp.lz"); - const u32 gMonShinyPalette_Fuecoco[] = INCBIN_U32("graphics/pokemon/fuecoco/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Fuecoco[] = INCBIN_U16("graphics/pokemon/fuecoco/shiny.gbapal"); const u8 gMonIcon_Fuecoco[] = INCBIN_U8("graphics/pokemon/fuecoco/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Fuecoco[] = INCBIN_U8("graphics/pokemon/fuecoco/footprint.1bpp"); @@ -24650,15 +24650,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Fuecoco[] = INCBIN_U16("graphics/pokemon/fuecoco/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Fuecoco[] = INCBIN_U16("graphics/pokemon/fuecoco/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Crocalor[] = INCBIN_U16("graphics/pokemon/crocalor/normal.gbapal"); const u32 gMonBackPic_Crocalor[] = INCBIN_U32("graphics/pokemon/crocalor/back.4bpp.lz"); - const u32 gMonShinyPalette_Crocalor[] = INCBIN_U32("graphics/pokemon/crocalor/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Crocalor[] = INCBIN_U16("graphics/pokemon/crocalor/shiny.gbapal"); const u8 gMonIcon_Crocalor[] = INCBIN_U8("graphics/pokemon/crocalor/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Crocalor[] = INCBIN_U8("graphics/pokemon/crocalor/footprint.1bpp"); @@ -24666,15 +24666,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Crocalor[] = INCBIN_U16("graphics/pokemon/crocalor/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Crocalor[] = INCBIN_U16("graphics/pokemon/crocalor/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Skeledirge[] = INCBIN_U16("graphics/pokemon/skeledirge/normal.gbapal"); const u32 gMonBackPic_Skeledirge[] = INCBIN_U32("graphics/pokemon/skeledirge/back.4bpp.lz"); - const u32 gMonShinyPalette_Skeledirge[] = INCBIN_U32("graphics/pokemon/skeledirge/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Skeledirge[] = INCBIN_U16("graphics/pokemon/skeledirge/shiny.gbapal"); const u8 gMonIcon_Skeledirge[] = INCBIN_U8("graphics/pokemon/skeledirge/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Skeledirge[] = INCBIN_U8("graphics/pokemon/skeledirge/footprint.1bpp"); @@ -24682,17 +24682,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Skeledirge[] = INCBIN_U16("graphics/pokemon/skeledirge/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Skeledirge[] = INCBIN_U16("graphics/pokemon/skeledirge/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_FUECOCO #if P_FAMILY_QUAXLY const u32 gMonFrontPic_Quaxly[] = INCBIN_U32("graphics/pokemon/quaxly/front.4bpp.lz"); - const u32 gMonPalette_Quaxly[] = INCBIN_U32("graphics/pokemon/quaxly/normal.gbapal.lz"); + const u16 gMonPalette_Quaxly[] = INCBIN_U16("graphics/pokemon/quaxly/normal.gbapal"); const u32 gMonBackPic_Quaxly[] = INCBIN_U32("graphics/pokemon/quaxly/back.4bpp.lz"); - const u32 gMonShinyPalette_Quaxly[] = INCBIN_U32("graphics/pokemon/quaxly/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Quaxly[] = INCBIN_U16("graphics/pokemon/quaxly/shiny.gbapal"); const u8 gMonIcon_Quaxly[] = INCBIN_U8("graphics/pokemon/quaxly/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Quaxly[] = INCBIN_U8("graphics/pokemon/quaxly/footprint.1bpp"); @@ -24700,15 +24700,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Quaxly[] = INCBIN_U16("graphics/pokemon/quaxly/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Quaxly[] = INCBIN_U16("graphics/pokemon/quaxly/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Quaxwell[] = INCBIN_U16("graphics/pokemon/quaxwell/normal.gbapal"); const u32 gMonBackPic_Quaxwell[] = INCBIN_U32("graphics/pokemon/quaxwell/back.4bpp.lz"); - const u32 gMonShinyPalette_Quaxwell[] = INCBIN_U32("graphics/pokemon/quaxwell/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Quaxwell[] = INCBIN_U16("graphics/pokemon/quaxwell/shiny.gbapal"); const u8 gMonIcon_Quaxwell[] = INCBIN_U8("graphics/pokemon/quaxwell/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Quaxwell[] = INCBIN_U8("graphics/pokemon/quaxwell/footprint.1bpp"); @@ -24716,15 +24716,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Quaxwell[] = INCBIN_U16("graphics/pokemon/quaxwell/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Quaxwell[] = INCBIN_U16("graphics/pokemon/quaxwell/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Quaquaval[] = INCBIN_U16("graphics/pokemon/quaquaval/normal.gbapal"); const u32 gMonBackPic_Quaquaval[] = INCBIN_U32("graphics/pokemon/quaquaval/back.4bpp.lz"); - const u32 gMonShinyPalette_Quaquaval[] = INCBIN_U32("graphics/pokemon/quaquaval/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Quaquaval[] = INCBIN_U16("graphics/pokemon/quaquaval/shiny.gbapal"); const u8 gMonIcon_Quaquaval[] = INCBIN_U8("graphics/pokemon/quaquaval/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Quaquaval[] = INCBIN_U8("graphics/pokemon/quaquaval/footprint.1bpp"); @@ -24732,17 +24732,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Quaquaval[] = INCBIN_U16("graphics/pokemon/quaquaval/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Quaquaval[] = INCBIN_U16("graphics/pokemon/quaquaval/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_QUAXLY #if P_FAMILY_LECHONK const u32 gMonFrontPic_Lechonk[] = INCBIN_U32("graphics/pokemon/lechonk/front.4bpp.lz"); - const u32 gMonPalette_Lechonk[] = INCBIN_U32("graphics/pokemon/lechonk/normal.gbapal.lz"); + const u16 gMonPalette_Lechonk[] = INCBIN_U16("graphics/pokemon/lechonk/normal.gbapal"); const u32 gMonBackPic_Lechonk[] = INCBIN_U32("graphics/pokemon/lechonk/back.4bpp.lz"); - const u32 gMonShinyPalette_Lechonk[] = INCBIN_U32("graphics/pokemon/lechonk/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Lechonk[] = INCBIN_U16("graphics/pokemon/lechonk/shiny.gbapal"); const u8 gMonIcon_Lechonk[] = INCBIN_U8("graphics/pokemon/lechonk/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Lechonk[] = INCBIN_U8("graphics/pokemon/lechonk/footprint.1bpp"); @@ -24750,15 +24750,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Lechonk[] = INCBIN_U16("graphics/pokemon/lechonk/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Lechonk[] = INCBIN_U16("graphics/pokemon/lechonk/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_OinkologneM[] = INCBIN_U32("graphics/pokemon/oinkologne/front.4bpp.lz"); - const u32 gMonPalette_OinkologneM[] = INCBIN_U32("graphics/pokemon/oinkologne/normal.gbapal.lz"); + const u16 gMonPalette_OinkologneM[] = INCBIN_U16("graphics/pokemon/oinkologne/normal.gbapal"); const u32 gMonBackPic_OinkologneM[] = INCBIN_U32("graphics/pokemon/oinkologne/back.4bpp.lz"); - const u32 gMonShinyPalette_OinkologneM[] = INCBIN_U32("graphics/pokemon/oinkologne/shiny.gbapal.lz"); + const u16 gMonShinyPalette_OinkologneM[] = INCBIN_U16("graphics/pokemon/oinkologne/shiny.gbapal"); const u8 gMonIcon_OinkologneM[] = INCBIN_U8("graphics/pokemon/oinkologne/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Oinkologne[] = INCBIN_U8("graphics/pokemon/oinkologne/footprint.1bpp"); @@ -24766,30 +24766,30 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if OW_POKEMON_OBJECT_EVENTS const u32 gObjectEventPic_OinkologneM[] = INCBIN_COMP("graphics/pokemon/oinkologne/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - const u32 gOverworldPalette_OinkologneM[] = INCBIN_U32("graphics/pokemon/oinkologne/overworld_normal.gbapal.lz"); - const u32 gShinyOverworldPalette_OinkologneM[] = INCBIN_U32("graphics/pokemon/oinkologne/overworld_shiny.gbapal.lz"); + const u16 gOverworldPalette_OinkologneM[] = INCBIN_U16("graphics/pokemon/oinkologne/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_OinkologneM[] = INCBIN_U16("graphics/pokemon/oinkologne/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_OinkologneF[] = INCBIN_U32("graphics/pokemon/oinkologne/f/front.4bpp.lz"); - const u32 gMonPalette_OinkologneF[] = INCBIN_U32("graphics/pokemon/oinkologne/f/normal.gbapal.lz"); + const u16 gMonPalette_OinkologneF[] = INCBIN_U16("graphics/pokemon/oinkologne/f/normal.gbapal"); const u32 gMonBackPic_OinkologneF[] = INCBIN_U32("graphics/pokemon/oinkologne/f/back.4bpp.lz"); - const u32 gMonShinyPalette_OinkologneF[] = INCBIN_U32("graphics/pokemon/oinkologne/f/shiny.gbapal.lz"); + const u16 gMonShinyPalette_OinkologneF[] = INCBIN_U16("graphics/pokemon/oinkologne/f/shiny.gbapal"); const u8 gMonIcon_OinkologneF[] = INCBIN_U8("graphics/pokemon/oinkologne/f/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS const u32 gObjectEventPic_OinkologneF[] = INCBIN_COMP("graphics/pokemon/oinkologne/f/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - const u32 gOverworldPalette_OinkologneF[] = INCBIN_U32("graphics/pokemon/oinkologne/f/overworld_normal.gbapal.lz"); - const u32 gShinyOverworldPalette_OinkologneF[] = INCBIN_U32("graphics/pokemon/oinkologne/f/overworld_shiny.gbapal.lz"); + const u16 gOverworldPalette_OinkologneF[] = INCBIN_U16("graphics/pokemon/oinkologne/f/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_OinkologneF[] = INCBIN_U16("graphics/pokemon/oinkologne/f/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_LECHONK #if P_FAMILY_TAROUNTULA const u32 gMonFrontPic_Tarountula[] = INCBIN_U32("graphics/pokemon/tarountula/front.4bpp.lz"); - const u32 gMonPalette_Tarountula[] = INCBIN_U32("graphics/pokemon/tarountula/normal.gbapal.lz"); + const u16 gMonPalette_Tarountula[] = INCBIN_U16("graphics/pokemon/tarountula/normal.gbapal"); const u32 gMonBackPic_Tarountula[] = INCBIN_U32("graphics/pokemon/tarountula/back.4bpp.lz"); - const u32 gMonShinyPalette_Tarountula[] = INCBIN_U32("graphics/pokemon/tarountula/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Tarountula[] = INCBIN_U16("graphics/pokemon/tarountula/shiny.gbapal"); const u8 gMonIcon_Tarountula[] = INCBIN_U8("graphics/pokemon/tarountula/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Tarountula[] = INCBIN_U8("graphics/pokemon/tarountula/footprint.1bpp"); @@ -24797,15 +24797,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Tarountula[] = INCBIN_U16("graphics/pokemon/tarountula/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Tarountula[] = INCBIN_U16("graphics/pokemon/tarountula/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Spidops[] = INCBIN_U16("graphics/pokemon/spidops/normal.gbapal"); const u32 gMonBackPic_Spidops[] = INCBIN_U32("graphics/pokemon/spidops/back.4bpp.lz"); - const u32 gMonShinyPalette_Spidops[] = INCBIN_U32("graphics/pokemon/spidops/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Spidops[] = INCBIN_U16("graphics/pokemon/spidops/shiny.gbapal"); const u8 gMonIcon_Spidops[] = INCBIN_U8("graphics/pokemon/spidops/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Spidops[] = INCBIN_U8("graphics/pokemon/spidops/footprint.1bpp"); @@ -24813,17 +24813,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Spidops[] = INCBIN_U16("graphics/pokemon/spidops/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Spidops[] = INCBIN_U16("graphics/pokemon/spidops/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_TAROUNTULA #if P_FAMILY_NYMBLE const u32 gMonFrontPic_Nymble[] = INCBIN_U32("graphics/pokemon/nymble/front.4bpp.lz"); - const u32 gMonPalette_Nymble[] = INCBIN_U32("graphics/pokemon/nymble/normal.gbapal.lz"); + const u16 gMonPalette_Nymble[] = INCBIN_U16("graphics/pokemon/nymble/normal.gbapal"); const u32 gMonBackPic_Nymble[] = INCBIN_U32("graphics/pokemon/nymble/back.4bpp.lz"); - const u32 gMonShinyPalette_Nymble[] = INCBIN_U32("graphics/pokemon/nymble/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Nymble[] = INCBIN_U16("graphics/pokemon/nymble/shiny.gbapal"); const u8 gMonIcon_Nymble[] = INCBIN_U8("graphics/pokemon/nymble/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Nymble[] = INCBIN_U8("graphics/pokemon/nymble/footprint.1bpp"); @@ -24831,15 +24831,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Nymble[] = INCBIN_U16("graphics/pokemon/nymble/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Nymble[] = INCBIN_U16("graphics/pokemon/nymble/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Lokix[] = INCBIN_U16("graphics/pokemon/lokix/normal.gbapal"); const u32 gMonBackPic_Lokix[] = INCBIN_U32("graphics/pokemon/lokix/back.4bpp.lz"); - const u32 gMonShinyPalette_Lokix[] = INCBIN_U32("graphics/pokemon/lokix/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Lokix[] = INCBIN_U16("graphics/pokemon/lokix/shiny.gbapal"); const u8 gMonIcon_Lokix[] = INCBIN_U8("graphics/pokemon/lokix/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Lokix[] = INCBIN_U8("graphics/pokemon/lokix/footprint.1bpp"); @@ -24847,17 +24847,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Lokix[] = INCBIN_U16("graphics/pokemon/lokix/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Lokix[] = INCBIN_U16("graphics/pokemon/lokix/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_NYMBLE #if P_FAMILY_PAWMI const u32 gMonFrontPic_Pawmi[] = INCBIN_U32("graphics/pokemon/pawmi/front.4bpp.lz"); - const u32 gMonPalette_Pawmi[] = INCBIN_U32("graphics/pokemon/pawmi/normal.gbapal.lz"); + const u16 gMonPalette_Pawmi[] = INCBIN_U16("graphics/pokemon/pawmi/normal.gbapal"); const u32 gMonBackPic_Pawmi[] = INCBIN_U32("graphics/pokemon/pawmi/back.4bpp.lz"); - const u32 gMonShinyPalette_Pawmi[] = INCBIN_U32("graphics/pokemon/pawmi/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Pawmi[] = INCBIN_U16("graphics/pokemon/pawmi/shiny.gbapal"); const u8 gMonIcon_Pawmi[] = INCBIN_U8("graphics/pokemon/pawmi/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Pawmi[] = INCBIN_U8("graphics/pokemon/pawmi/footprint.1bpp"); @@ -24865,15 +24865,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Pawmi[] = INCBIN_U16("graphics/pokemon/pawmi/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Pawmi[] = INCBIN_U16("graphics/pokemon/pawmi/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Pawmo[] = INCBIN_U16("graphics/pokemon/pawmo/normal.gbapal"); const u32 gMonBackPic_Pawmo[] = INCBIN_U32("graphics/pokemon/pawmo/back.4bpp.lz"); - const u32 gMonShinyPalette_Pawmo[] = INCBIN_U32("graphics/pokemon/pawmo/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Pawmo[] = INCBIN_U16("graphics/pokemon/pawmo/shiny.gbapal"); const u8 gMonIcon_Pawmo[] = INCBIN_U8("graphics/pokemon/pawmo/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Pawmo[] = INCBIN_U8("graphics/pokemon/pawmo/footprint.1bpp"); @@ -24881,15 +24881,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Pawmo[] = INCBIN_U16("graphics/pokemon/pawmo/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Pawmo[] = INCBIN_U16("graphics/pokemon/pawmo/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Pawmot[] = INCBIN_U16("graphics/pokemon/pawmot/normal.gbapal"); const u32 gMonBackPic_Pawmot[] = INCBIN_U32("graphics/pokemon/pawmot/back.4bpp.lz"); - const u32 gMonShinyPalette_Pawmot[] = INCBIN_U32("graphics/pokemon/pawmot/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Pawmot[] = INCBIN_U16("graphics/pokemon/pawmot/shiny.gbapal"); const u8 gMonIcon_Pawmot[] = INCBIN_U8("graphics/pokemon/pawmot/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Pawmot[] = INCBIN_U8("graphics/pokemon/pawmot/footprint.1bpp"); @@ -24897,17 +24897,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Pawmot[] = INCBIN_U16("graphics/pokemon/pawmot/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Pawmot[] = INCBIN_U16("graphics/pokemon/pawmot/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_PAWMI #if P_FAMILY_TANDEMAUS const u32 gMonFrontPic_Tandemaus[] = INCBIN_U32("graphics/pokemon/tandemaus/front.4bpp.lz"); - const u32 gMonPalette_Tandemaus[] = INCBIN_U32("graphics/pokemon/tandemaus/normal.gbapal.lz"); + const u16 gMonPalette_Tandemaus[] = INCBIN_U16("graphics/pokemon/tandemaus/normal.gbapal"); const u32 gMonBackPic_Tandemaus[] = INCBIN_U32("graphics/pokemon/tandemaus/back.4bpp.lz"); - const u32 gMonShinyPalette_Tandemaus[] = INCBIN_U32("graphics/pokemon/tandemaus/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Tandemaus[] = INCBIN_U16("graphics/pokemon/tandemaus/shiny.gbapal"); const u8 gMonIcon_Tandemaus[] = INCBIN_U8("graphics/pokemon/tandemaus/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Tandemaus[] = INCBIN_U8("graphics/pokemon/tandemaus/footprint.1bpp"); @@ -24915,13 +24915,13 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Tandemaus[] = INCBIN_U16("graphics/pokemon/tandemaus/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Tandemaus[] = INCBIN_U16("graphics/pokemon/tandemaus/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Maushold[] = INCBIN_U16("graphics/pokemon/maushold/normal.gbapal"); + const u16 gMonShinyPalette_Maushold[] = INCBIN_U16("graphics/pokemon/maushold/shiny.gbapal"); const u32 gMonFrontPic_MausholdThree[] = INCBIN_U32("graphics/pokemon/maushold/front.4bpp.lz"); const u32 gMonBackPic_MausholdThree[] = INCBIN_U32("graphics/pokemon/maushold/back.4bpp.lz"); @@ -24932,8 +24932,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if OW_POKEMON_OBJECT_EVENTS const u32 gObjectEventPic_MausholdThree[] = INCBIN_COMP("graphics/pokemon/maushold/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - const u32 gOverworldPalette_MausholdThree[] = INCBIN_U32("graphics/pokemon/maushold/overworld_normal.gbapal.lz"); - const u32 gShinyOverworldPalette_MausholdThree[] = INCBIN_U32("graphics/pokemon/maushold/overworld_shiny.gbapal.lz"); + const u16 gOverworldPalette_MausholdThree[] = INCBIN_U16("graphics/pokemon/maushold/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_MausholdThree[] = INCBIN_U16("graphics/pokemon/maushold/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS @@ -24946,17 +24946,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if OW_POKEMON_OBJECT_EVENTS const u32 gObjectEventPic_MausholdFour[] = INCBIN_COMP("graphics/pokemon/maushold/four/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - const u32 gOverworldPalette_MausholdFour[] = INCBIN_U32("graphics/pokemon/maushold/four/overworld_normal.gbapal.lz"); - const u32 gShinyOverworldPalette_MausholdFour[] = INCBIN_U32("graphics/pokemon/maushold/four/overworld_shiny.gbapal.lz"); + const u16 gOverworldPalette_MausholdFour[] = INCBIN_U16("graphics/pokemon/maushold/four/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_MausholdFour[] = INCBIN_U16("graphics/pokemon/maushold/four/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_TANDEMAUS #if P_FAMILY_FIDOUGH const u32 gMonFrontPic_Fidough[] = INCBIN_U32("graphics/pokemon/fidough/front.4bpp.lz"); - const u32 gMonPalette_Fidough[] = INCBIN_U32("graphics/pokemon/fidough/normal.gbapal.lz"); + const u16 gMonPalette_Fidough[] = INCBIN_U16("graphics/pokemon/fidough/normal.gbapal"); const u32 gMonBackPic_Fidough[] = INCBIN_U32("graphics/pokemon/fidough/back.4bpp.lz"); - const u32 gMonShinyPalette_Fidough[] = INCBIN_U32("graphics/pokemon/fidough/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Fidough[] = INCBIN_U16("graphics/pokemon/fidough/shiny.gbapal"); const u8 gMonIcon_Fidough[] = INCBIN_U8("graphics/pokemon/fidough/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Fidough[] = INCBIN_U8("graphics/pokemon/fidough/footprint.1bpp"); @@ -24964,15 +24964,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Fidough[] = INCBIN_U16("graphics/pokemon/fidough/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Fidough[] = INCBIN_U16("graphics/pokemon/fidough/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Dachsbun[] = INCBIN_U16("graphics/pokemon/dachsbun/normal.gbapal"); const u32 gMonBackPic_Dachsbun[] = INCBIN_U32("graphics/pokemon/dachsbun/back.4bpp.lz"); - const u32 gMonShinyPalette_Dachsbun[] = INCBIN_U32("graphics/pokemon/dachsbun/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Dachsbun[] = INCBIN_U16("graphics/pokemon/dachsbun/shiny.gbapal"); const u8 gMonIcon_Dachsbun[] = INCBIN_U8("graphics/pokemon/dachsbun/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Dachsbun[] = INCBIN_U8("graphics/pokemon/dachsbun/footprint.1bpp"); @@ -24980,17 +24980,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Dachsbun[] = INCBIN_U16("graphics/pokemon/dachsbun/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Dachsbun[] = INCBIN_U16("graphics/pokemon/dachsbun/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_FIDOUGH #if P_FAMILY_SMOLIV const u32 gMonFrontPic_Smoliv[] = INCBIN_U32("graphics/pokemon/smoliv/front.4bpp.lz"); - const u32 gMonPalette_Smoliv[] = INCBIN_U32("graphics/pokemon/smoliv/normal.gbapal.lz"); + const u16 gMonPalette_Smoliv[] = INCBIN_U16("graphics/pokemon/smoliv/normal.gbapal"); const u32 gMonBackPic_Smoliv[] = INCBIN_U32("graphics/pokemon/smoliv/back.4bpp.lz"); - const u32 gMonShinyPalette_Smoliv[] = INCBIN_U32("graphics/pokemon/smoliv/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Smoliv[] = INCBIN_U16("graphics/pokemon/smoliv/shiny.gbapal"); const u8 gMonIcon_Smoliv[] = INCBIN_U8("graphics/pokemon/smoliv/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Smoliv[] = INCBIN_U8("graphics/pokemon/smoliv/footprint.1bpp"); @@ -24998,15 +24998,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Smoliv[] = INCBIN_U16("graphics/pokemon/smoliv/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Smoliv[] = INCBIN_U16("graphics/pokemon/smoliv/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Dolliv[] = INCBIN_U16("graphics/pokemon/dolliv/normal.gbapal"); const u32 gMonBackPic_Dolliv[] = INCBIN_U32("graphics/pokemon/dolliv/back.4bpp.lz"); - const u32 gMonShinyPalette_Dolliv[] = INCBIN_U32("graphics/pokemon/dolliv/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Dolliv[] = INCBIN_U16("graphics/pokemon/dolliv/shiny.gbapal"); const u8 gMonIcon_Dolliv[] = INCBIN_U8("graphics/pokemon/dolliv/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Dolliv[] = INCBIN_U8("graphics/pokemon/dolliv/footprint.1bpp"); @@ -25014,15 +25014,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Dolliv[] = INCBIN_U16("graphics/pokemon/dolliv/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Dolliv[] = INCBIN_U16("graphics/pokemon/dolliv/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Arboliva[] = INCBIN_U16("graphics/pokemon/arboliva/normal.gbapal"); const u32 gMonBackPic_Arboliva[] = INCBIN_U32("graphics/pokemon/arboliva/back.4bpp.lz"); - const u32 gMonShinyPalette_Arboliva[] = INCBIN_U32("graphics/pokemon/arboliva/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Arboliva[] = INCBIN_U16("graphics/pokemon/arboliva/shiny.gbapal"); const u8 gMonIcon_Arboliva[] = INCBIN_U8("graphics/pokemon/arboliva/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Arboliva[] = INCBIN_U8("graphics/pokemon/arboliva/footprint.1bpp"); @@ -25030,8 +25030,8 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Arboliva[] = INCBIN_U16("graphics/pokemon/arboliva/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Arboliva[] = INCBIN_U16("graphics/pokemon/arboliva/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SMOLIV @@ -25043,56 +25043,56 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u8 gMonFootprint_Squawkabilly[] = INCBIN_U8("graphics/pokemon/squawkabilly/footprint.1bpp"); #endif //P_FOOTPRINTS - const u32 gMonPalette_SquawkabillyGreen[] = INCBIN_U32("graphics/pokemon/squawkabilly/normal.gbapal.lz"); - const u32 gMonShinyPalette_SquawkabillyGreen[] = INCBIN_U32("graphics/pokemon/squawkabilly/shiny.gbapal.lz"); + const u16 gMonPalette_SquawkabillyGreen[] = INCBIN_U16("graphics/pokemon/squawkabilly/normal.gbapal"); + const u16 gMonShinyPalette_SquawkabillyGreen[] = INCBIN_U16("graphics/pokemon/squawkabilly/shiny.gbapal"); const u8 gMonIcon_SquawkabillyGreen[] = INCBIN_U8("graphics/pokemon/squawkabilly/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS const u32 gObjectEventPic_SquawkabillyGreen[] = INCBIN_COMP("graphics/pokemon/squawkabilly/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - const u32 gOverworldPalette_SquawkabillyGreen[] = INCBIN_U32("graphics/pokemon/squawkabilly/overworld_normal.gbapal.lz"); - const u32 gShinyOverworldPalette_SquawkabillyGreen[] = INCBIN_U32("graphics/pokemon/squawkabilly/overworld_shiny.gbapal.lz"); + const u16 gOverworldPalette_SquawkabillyGreen[] = INCBIN_U16("graphics/pokemon/squawkabilly/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_SquawkabillyGreen[] = INCBIN_U16("graphics/pokemon/squawkabilly/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS - const u32 gMonPalette_SquawkabillyBlue[] = INCBIN_U32("graphics/pokemon/squawkabilly/blue/normal.gbapal.lz"); - const u32 gMonShinyPalette_SquawkabillyBlue[] = INCBIN_U32("graphics/pokemon/squawkabilly/blue/shiny.gbapal.lz"); + const u16 gMonPalette_SquawkabillyBlue[] = INCBIN_U16("graphics/pokemon/squawkabilly/blue/normal.gbapal"); + const u16 gMonShinyPalette_SquawkabillyBlue[] = INCBIN_U16("graphics/pokemon/squawkabilly/blue/shiny.gbapal"); const u8 gMonIcon_SquawkabillyBlue[] = INCBIN_U8("graphics/pokemon/squawkabilly/blue/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS const u32 gObjectEventPic_SquawkabillyBlue[] = INCBIN_COMP("graphics/pokemon/squawkabilly/blue/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - const u32 gOverworldPalette_SquawkabillyBlue[] = INCBIN_U32("graphics/pokemon/squawkabilly/blue/overworld_normal.gbapal.lz"); - const u32 gShinyOverworldPalette_SquawkabillyBlue[] = INCBIN_U32("graphics/pokemon/squawkabilly/blue/overworld_shiny.gbapal.lz"); + const u16 gOverworldPalette_SquawkabillyBlue[] = INCBIN_U16("graphics/pokemon/squawkabilly/blue/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_SquawkabillyBlue[] = INCBIN_U16("graphics/pokemon/squawkabilly/blue/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS - const u32 gMonPalette_SquawkabillyYellow[] = INCBIN_U32("graphics/pokemon/squawkabilly/yellow/normal.gbapal.lz"); - const u32 gMonShinyPalette_SquawkabillyYellow[] = INCBIN_U32("graphics/pokemon/squawkabilly/yellow/shiny.gbapal.lz"); + const u16 gMonPalette_SquawkabillyYellow[] = INCBIN_U16("graphics/pokemon/squawkabilly/yellow/normal.gbapal"); + const u16 gMonShinyPalette_SquawkabillyYellow[] = INCBIN_U16("graphics/pokemon/squawkabilly/yellow/shiny.gbapal"); const u8 gMonIcon_SquawkabillyYellow[] = INCBIN_U8("graphics/pokemon/squawkabilly/yellow/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS const u32 gObjectEventPic_SquawkabillyYellow[] = INCBIN_COMP("graphics/pokemon/squawkabilly/yellow/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - const u32 gOverworldPalette_SquawkabillyYellow[] = INCBIN_U32("graphics/pokemon/squawkabilly/yellow/overworld_normal.gbapal.lz"); - const u32 gShinyOverworldPalette_SquawkabillyYellow[] = INCBIN_U32("graphics/pokemon/squawkabilly/yellow/overworld_shiny.gbapal.lz"); + const u16 gOverworldPalette_SquawkabillyYellow[] = INCBIN_U16("graphics/pokemon/squawkabilly/yellow/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_SquawkabillyYellow[] = INCBIN_U16("graphics/pokemon/squawkabilly/yellow/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS - const u32 gMonPalette_SquawkabillyWhite[] = INCBIN_U32("graphics/pokemon/squawkabilly/white/normal.gbapal.lz"); - const u32 gMonShinyPalette_SquawkabillyWhite[] = INCBIN_U32("graphics/pokemon/squawkabilly/white/shiny.gbapal.lz"); + const u16 gMonPalette_SquawkabillyWhite[] = INCBIN_U16("graphics/pokemon/squawkabilly/white/normal.gbapal"); + const u16 gMonShinyPalette_SquawkabillyWhite[] = INCBIN_U16("graphics/pokemon/squawkabilly/white/shiny.gbapal"); const u8 gMonIcon_SquawkabillyWhite[] = INCBIN_U8("graphics/pokemon/squawkabilly/white/icon.4bpp"); #if OW_POKEMON_OBJECT_EVENTS const u32 gObjectEventPic_SquawkabillyWhite[] = INCBIN_COMP("graphics/pokemon/squawkabilly/white/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - const u32 gOverworldPalette_SquawkabillyWhite[] = INCBIN_U32("graphics/pokemon/squawkabilly/white/overworld_normal.gbapal.lz"); - const u32 gShinyOverworldPalette_SquawkabillyWhite[] = INCBIN_U32("graphics/pokemon/squawkabilly/white/overworld_shiny.gbapal.lz"); + const u16 gOverworldPalette_SquawkabillyWhite[] = INCBIN_U16("graphics/pokemon/squawkabilly/white/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_SquawkabillyWhite[] = INCBIN_U16("graphics/pokemon/squawkabilly/white/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SQUAWKABILLY #if P_FAMILY_NACLI const u32 gMonFrontPic_Nacli[] = INCBIN_U32("graphics/pokemon/nacli/front.4bpp.lz"); - const u32 gMonPalette_Nacli[] = INCBIN_U32("graphics/pokemon/nacli/normal.gbapal.lz"); + const u16 gMonPalette_Nacli[] = INCBIN_U16("graphics/pokemon/nacli/normal.gbapal"); const u32 gMonBackPic_Nacli[] = INCBIN_U32("graphics/pokemon/nacli/back.4bpp.lz"); - const u32 gMonShinyPalette_Nacli[] = INCBIN_U32("graphics/pokemon/nacli/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Nacli[] = INCBIN_U16("graphics/pokemon/nacli/shiny.gbapal"); const u8 gMonIcon_Nacli[] = INCBIN_U8("graphics/pokemon/nacli/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Nacli[] = INCBIN_U8("graphics/pokemon/nacli/footprint.1bpp"); @@ -25100,15 +25100,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Nacli[] = INCBIN_U16("graphics/pokemon/nacli/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Nacli[] = INCBIN_U16("graphics/pokemon/nacli/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Naclstack[] = INCBIN_U16("graphics/pokemon/naclstack/normal.gbapal"); const u32 gMonBackPic_Naclstack[] = INCBIN_U32("graphics/pokemon/naclstack/back.4bpp.lz"); - const u32 gMonShinyPalette_Naclstack[] = INCBIN_U32("graphics/pokemon/naclstack/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Naclstack[] = INCBIN_U16("graphics/pokemon/naclstack/shiny.gbapal"); const u8 gMonIcon_Naclstack[] = INCBIN_U8("graphics/pokemon/naclstack/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Naclstack[] = INCBIN_U8("graphics/pokemon/naclstack/footprint.1bpp"); @@ -25116,15 +25116,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Naclstack[] = INCBIN_U16("graphics/pokemon/naclstack/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Naclstack[] = INCBIN_U16("graphics/pokemon/naclstack/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Garganacl[] = INCBIN_U16("graphics/pokemon/garganacl/normal.gbapal"); const u32 gMonBackPic_Garganacl[] = INCBIN_U32("graphics/pokemon/garganacl/back.4bpp.lz"); - const u32 gMonShinyPalette_Garganacl[] = INCBIN_U32("graphics/pokemon/garganacl/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Garganacl[] = INCBIN_U16("graphics/pokemon/garganacl/shiny.gbapal"); const u8 gMonIcon_Garganacl[] = INCBIN_U8("graphics/pokemon/garganacl/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Garganacl[] = INCBIN_U8("graphics/pokemon/garganacl/footprint.1bpp"); @@ -25132,17 +25132,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Garganacl[] = INCBIN_U16("graphics/pokemon/garganacl/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Garganacl[] = INCBIN_U16("graphics/pokemon/garganacl/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_NACLI #if P_FAMILY_CHARCADET const u32 gMonFrontPic_Charcadet[] = INCBIN_U32("graphics/pokemon/charcadet/front.4bpp.lz"); - const u32 gMonPalette_Charcadet[] = INCBIN_U32("graphics/pokemon/charcadet/normal.gbapal.lz"); + const u16 gMonPalette_Charcadet[] = INCBIN_U16("graphics/pokemon/charcadet/normal.gbapal"); const u32 gMonBackPic_Charcadet[] = INCBIN_U32("graphics/pokemon/charcadet/back.4bpp.lz"); - const u32 gMonShinyPalette_Charcadet[] = INCBIN_U32("graphics/pokemon/charcadet/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Charcadet[] = INCBIN_U16("graphics/pokemon/charcadet/shiny.gbapal"); const u8 gMonIcon_Charcadet[] = INCBIN_U8("graphics/pokemon/charcadet/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Charcadet[] = INCBIN_U8("graphics/pokemon/charcadet/footprint.1bpp"); @@ -25150,15 +25150,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Charcadet[] = INCBIN_U16("graphics/pokemon/charcadet/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Charcadet[] = INCBIN_U16("graphics/pokemon/charcadet/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Armarouge[] = INCBIN_U16("graphics/pokemon/armarouge/normal.gbapal"); const u32 gMonBackPic_Armarouge[] = INCBIN_U32("graphics/pokemon/armarouge/back.4bpp.lz"); - const u32 gMonShinyPalette_Armarouge[] = INCBIN_U32("graphics/pokemon/armarouge/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Armarouge[] = INCBIN_U16("graphics/pokemon/armarouge/shiny.gbapal"); const u8 gMonIcon_Armarouge[] = INCBIN_U8("graphics/pokemon/armarouge/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Armarouge[] = INCBIN_U8("graphics/pokemon/armarouge/footprint.1bpp"); @@ -25166,15 +25166,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Armarouge[] = INCBIN_U16("graphics/pokemon/armarouge/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Armarouge[] = INCBIN_U16("graphics/pokemon/armarouge/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Ceruledge[] = INCBIN_U16("graphics/pokemon/ceruledge/normal.gbapal"); const u32 gMonBackPic_Ceruledge[] = INCBIN_U32("graphics/pokemon/ceruledge/back.4bpp.lz"); - const u32 gMonShinyPalette_Ceruledge[] = INCBIN_U32("graphics/pokemon/ceruledge/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Ceruledge[] = INCBIN_U16("graphics/pokemon/ceruledge/shiny.gbapal"); const u8 gMonIcon_Ceruledge[] = INCBIN_U8("graphics/pokemon/ceruledge/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Ceruledge[] = INCBIN_U8("graphics/pokemon/ceruledge/footprint.1bpp"); @@ -25182,17 +25182,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Ceruledge[] = INCBIN_U16("graphics/pokemon/ceruledge/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Ceruledge[] = INCBIN_U16("graphics/pokemon/ceruledge/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_CHARCADET #if P_FAMILY_TADBULB const u32 gMonFrontPic_Tadbulb[] = INCBIN_U32("graphics/pokemon/tadbulb/front.4bpp.lz"); - const u32 gMonPalette_Tadbulb[] = INCBIN_U32("graphics/pokemon/tadbulb/normal.gbapal.lz"); + const u16 gMonPalette_Tadbulb[] = INCBIN_U16("graphics/pokemon/tadbulb/normal.gbapal"); const u32 gMonBackPic_Tadbulb[] = INCBIN_U32("graphics/pokemon/tadbulb/back.4bpp.lz"); - const u32 gMonShinyPalette_Tadbulb[] = INCBIN_U32("graphics/pokemon/tadbulb/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Tadbulb[] = INCBIN_U16("graphics/pokemon/tadbulb/shiny.gbapal"); const u8 gMonIcon_Tadbulb[] = INCBIN_U8("graphics/pokemon/tadbulb/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Tadbulb[] = INCBIN_U8("graphics/pokemon/tadbulb/footprint.1bpp"); @@ -25200,15 +25200,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Tadbulb[] = INCBIN_U16("graphics/pokemon/tadbulb/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Tadbulb[] = INCBIN_U16("graphics/pokemon/tadbulb/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Bellibolt[] = INCBIN_U16("graphics/pokemon/bellibolt/normal.gbapal"); const u32 gMonBackPic_Bellibolt[] = INCBIN_U32("graphics/pokemon/bellibolt/back.4bpp.lz"); - const u32 gMonShinyPalette_Bellibolt[] = INCBIN_U32("graphics/pokemon/bellibolt/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Bellibolt[] = INCBIN_U16("graphics/pokemon/bellibolt/shiny.gbapal"); const u8 gMonIcon_Bellibolt[] = INCBIN_U8("graphics/pokemon/bellibolt/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Bellibolt[] = INCBIN_U8("graphics/pokemon/bellibolt/footprint.1bpp"); @@ -25216,17 +25216,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Bellibolt[] = INCBIN_U16("graphics/pokemon/bellibolt/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Bellibolt[] = INCBIN_U16("graphics/pokemon/bellibolt/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_TADBULB #if P_FAMILY_WATTREL const u32 gMonFrontPic_Wattrel[] = INCBIN_U32("graphics/pokemon/wattrel/front.4bpp.lz"); - const u32 gMonPalette_Wattrel[] = INCBIN_U32("graphics/pokemon/wattrel/normal.gbapal.lz"); + const u16 gMonPalette_Wattrel[] = INCBIN_U16("graphics/pokemon/wattrel/normal.gbapal"); const u32 gMonBackPic_Wattrel[] = INCBIN_U32("graphics/pokemon/wattrel/back.4bpp.lz"); - const u32 gMonShinyPalette_Wattrel[] = INCBIN_U32("graphics/pokemon/wattrel/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Wattrel[] = INCBIN_U16("graphics/pokemon/wattrel/shiny.gbapal"); const u8 gMonIcon_Wattrel[] = INCBIN_U8("graphics/pokemon/wattrel/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Wattrel[] = INCBIN_U8("graphics/pokemon/wattrel/footprint.1bpp"); @@ -25234,15 +25234,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Wattrel[] = INCBIN_U16("graphics/pokemon/wattrel/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Wattrel[] = INCBIN_U16("graphics/pokemon/wattrel/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Kilowattrel[] = INCBIN_U16("graphics/pokemon/kilowattrel/normal.gbapal"); const u32 gMonBackPic_Kilowattrel[] = INCBIN_U32("graphics/pokemon/kilowattrel/back.4bpp.lz"); - const u32 gMonShinyPalette_Kilowattrel[] = INCBIN_U32("graphics/pokemon/kilowattrel/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Kilowattrel[] = INCBIN_U16("graphics/pokemon/kilowattrel/shiny.gbapal"); const u8 gMonIcon_Kilowattrel[] = INCBIN_U8("graphics/pokemon/kilowattrel/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Kilowattrel[] = INCBIN_U8("graphics/pokemon/kilowattrel/footprint.1bpp"); @@ -25250,17 +25250,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Kilowattrel[] = INCBIN_U16("graphics/pokemon/kilowattrel/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Kilowattrel[] = INCBIN_U16("graphics/pokemon/kilowattrel/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_WATTREL #if P_FAMILY_MASCHIFF const u32 gMonFrontPic_Maschiff[] = INCBIN_U32("graphics/pokemon/maschiff/front.4bpp.lz"); - const u32 gMonPalette_Maschiff[] = INCBIN_U32("graphics/pokemon/maschiff/normal.gbapal.lz"); + const u16 gMonPalette_Maschiff[] = INCBIN_U16("graphics/pokemon/maschiff/normal.gbapal"); const u32 gMonBackPic_Maschiff[] = INCBIN_U32("graphics/pokemon/maschiff/back.4bpp.lz"); - const u32 gMonShinyPalette_Maschiff[] = INCBIN_U32("graphics/pokemon/maschiff/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Maschiff[] = INCBIN_U16("graphics/pokemon/maschiff/shiny.gbapal"); const u8 gMonIcon_Maschiff[] = INCBIN_U8("graphics/pokemon/maschiff/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Maschiff[] = INCBIN_U8("graphics/pokemon/maschiff/footprint.1bpp"); @@ -25268,15 +25268,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Maschiff[] = INCBIN_U16("graphics/pokemon/maschiff/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Maschiff[] = INCBIN_U16("graphics/pokemon/maschiff/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Mabosstiff[] = INCBIN_U16("graphics/pokemon/mabosstiff/normal.gbapal"); const u32 gMonBackPic_Mabosstiff[] = INCBIN_U32("graphics/pokemon/mabosstiff/back.4bpp.lz"); - const u32 gMonShinyPalette_Mabosstiff[] = INCBIN_U32("graphics/pokemon/mabosstiff/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Mabosstiff[] = INCBIN_U16("graphics/pokemon/mabosstiff/shiny.gbapal"); const u8 gMonIcon_Mabosstiff[] = INCBIN_U8("graphics/pokemon/mabosstiff/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Mabosstiff[] = INCBIN_U8("graphics/pokemon/mabosstiff/footprint.1bpp"); @@ -25284,17 +25284,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Mabosstiff[] = INCBIN_U16("graphics/pokemon/mabosstiff/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Mabosstiff[] = INCBIN_U16("graphics/pokemon/mabosstiff/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_MASCHIFF #if P_FAMILY_SHROODLE const u32 gMonFrontPic_Shroodle[] = INCBIN_U32("graphics/pokemon/shroodle/front.4bpp.lz"); - const u32 gMonPalette_Shroodle[] = INCBIN_U32("graphics/pokemon/shroodle/normal.gbapal.lz"); + const u16 gMonPalette_Shroodle[] = INCBIN_U16("graphics/pokemon/shroodle/normal.gbapal"); const u32 gMonBackPic_Shroodle[] = INCBIN_U32("graphics/pokemon/shroodle/back.4bpp.lz"); - const u32 gMonShinyPalette_Shroodle[] = INCBIN_U32("graphics/pokemon/shroodle/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Shroodle[] = INCBIN_U16("graphics/pokemon/shroodle/shiny.gbapal"); const u8 gMonIcon_Shroodle[] = INCBIN_U8("graphics/pokemon/shroodle/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Shroodle[] = INCBIN_U8("graphics/pokemon/shroodle/footprint.1bpp"); @@ -25302,15 +25302,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Shroodle[] = INCBIN_U16("graphics/pokemon/shroodle/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Shroodle[] = INCBIN_U16("graphics/pokemon/shroodle/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Grafaiai[] = INCBIN_U16("graphics/pokemon/grafaiai/normal.gbapal"); const u32 gMonBackPic_Grafaiai[] = INCBIN_U32("graphics/pokemon/grafaiai/back.4bpp.lz"); - const u32 gMonShinyPalette_Grafaiai[] = INCBIN_U32("graphics/pokemon/grafaiai/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Grafaiai[] = INCBIN_U16("graphics/pokemon/grafaiai/shiny.gbapal"); const u8 gMonIcon_Grafaiai[] = INCBIN_U8("graphics/pokemon/grafaiai/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Grafaiai[] = INCBIN_U8("graphics/pokemon/grafaiai/footprint.1bpp"); @@ -25318,17 +25318,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Grafaiai[] = INCBIN_U16("graphics/pokemon/grafaiai/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Grafaiai[] = INCBIN_U16("graphics/pokemon/grafaiai/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SHROODLE #if P_FAMILY_BRAMBLIN const u32 gMonFrontPic_Bramblin[] = INCBIN_U32("graphics/pokemon/bramblin/front.4bpp.lz"); - const u32 gMonPalette_Bramblin[] = INCBIN_U32("graphics/pokemon/bramblin/normal.gbapal.lz"); + const u16 gMonPalette_Bramblin[] = INCBIN_U16("graphics/pokemon/bramblin/normal.gbapal"); const u32 gMonBackPic_Bramblin[] = INCBIN_U32("graphics/pokemon/bramblin/back.4bpp.lz"); - const u32 gMonShinyPalette_Bramblin[] = INCBIN_U32("graphics/pokemon/bramblin/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Bramblin[] = INCBIN_U16("graphics/pokemon/bramblin/shiny.gbapal"); const u8 gMonIcon_Bramblin[] = INCBIN_U8("graphics/pokemon/bramblin/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Bramblin[] = INCBIN_U8("graphics/pokemon/bramblin/footprint.1bpp"); @@ -25336,15 +25336,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Bramblin[] = INCBIN_U16("graphics/pokemon/bramblin/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Bramblin[] = INCBIN_U16("graphics/pokemon/bramblin/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Brambleghast[] = INCBIN_U16("graphics/pokemon/brambleghast/normal.gbapal"); const u32 gMonBackPic_Brambleghast[] = INCBIN_U32("graphics/pokemon/brambleghast/back.4bpp.lz"); - const u32 gMonShinyPalette_Brambleghast[] = INCBIN_U32("graphics/pokemon/brambleghast/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Brambleghast[] = INCBIN_U16("graphics/pokemon/brambleghast/shiny.gbapal"); const u8 gMonIcon_Brambleghast[] = INCBIN_U8("graphics/pokemon/brambleghast/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Brambleghast[] = INCBIN_U8("graphics/pokemon/brambleghast/footprint.1bpp"); @@ -25352,17 +25352,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Brambleghast[] = INCBIN_U16("graphics/pokemon/brambleghast/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Brambleghast[] = INCBIN_U16("graphics/pokemon/brambleghast/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_BRAMBLIN #if P_FAMILY_TOEDSCOOL const u32 gMonFrontPic_Toedscool[] = INCBIN_U32("graphics/pokemon/toedscool/front.4bpp.lz"); - const u32 gMonPalette_Toedscool[] = INCBIN_U32("graphics/pokemon/toedscool/normal.gbapal.lz"); + const u16 gMonPalette_Toedscool[] = INCBIN_U16("graphics/pokemon/toedscool/normal.gbapal"); const u32 gMonBackPic_Toedscool[] = INCBIN_U32("graphics/pokemon/toedscool/back.4bpp.lz"); - const u32 gMonShinyPalette_Toedscool[] = INCBIN_U32("graphics/pokemon/toedscool/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Toedscool[] = INCBIN_U16("graphics/pokemon/toedscool/shiny.gbapal"); const u8 gMonIcon_Toedscool[] = INCBIN_U8("graphics/pokemon/toedscool/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Toedscool[] = INCBIN_U8("graphics/pokemon/toedscool/footprint.1bpp"); @@ -25370,15 +25370,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Toedscool[] = INCBIN_U16("graphics/pokemon/toedscool/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Toedscool[] = INCBIN_U16("graphics/pokemon/toedscool/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Toedscruel[] = INCBIN_U16("graphics/pokemon/toedscruel/normal.gbapal"); const u32 gMonBackPic_Toedscruel[] = INCBIN_U32("graphics/pokemon/toedscruel/back.4bpp.lz"); - const u32 gMonShinyPalette_Toedscruel[] = INCBIN_U32("graphics/pokemon/toedscruel/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Toedscruel[] = INCBIN_U16("graphics/pokemon/toedscruel/shiny.gbapal"); const u8 gMonIcon_Toedscruel[] = INCBIN_U8("graphics/pokemon/toedscruel/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Toedscruel[] = INCBIN_U8("graphics/pokemon/toedscruel/footprint.1bpp"); @@ -25386,17 +25386,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Toedscruel[] = INCBIN_U16("graphics/pokemon/toedscruel/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Toedscruel[] = INCBIN_U16("graphics/pokemon/toedscruel/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_TOEDSCOOL #if P_FAMILY_KLAWF const u32 gMonFrontPic_Klawf[] = INCBIN_U32("graphics/pokemon/klawf/front.4bpp.lz"); - const u32 gMonPalette_Klawf[] = INCBIN_U32("graphics/pokemon/klawf/normal.gbapal.lz"); + const u16 gMonPalette_Klawf[] = INCBIN_U16("graphics/pokemon/klawf/normal.gbapal"); const u32 gMonBackPic_Klawf[] = INCBIN_U32("graphics/pokemon/klawf/back.4bpp.lz"); - const u32 gMonShinyPalette_Klawf[] = INCBIN_U32("graphics/pokemon/klawf/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Klawf[] = INCBIN_U16("graphics/pokemon/klawf/shiny.gbapal"); const u8 gMonIcon_Klawf[] = INCBIN_U8("graphics/pokemon/klawf/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Klawf[] = INCBIN_U8("graphics/pokemon/klawf/footprint.1bpp"); @@ -25404,17 +25404,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Klawf[] = INCBIN_U16("graphics/pokemon/klawf/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Klawf[] = INCBIN_U16("graphics/pokemon/klawf/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_KLAWF #if P_FAMILY_CAPSAKID const u32 gMonFrontPic_Capsakid[] = INCBIN_U32("graphics/pokemon/capsakid/front.4bpp.lz"); - const u32 gMonPalette_Capsakid[] = INCBIN_U32("graphics/pokemon/capsakid/normal.gbapal.lz"); + const u16 gMonPalette_Capsakid[] = INCBIN_U16("graphics/pokemon/capsakid/normal.gbapal"); const u32 gMonBackPic_Capsakid[] = INCBIN_U32("graphics/pokemon/capsakid/back.4bpp.lz"); - const u32 gMonShinyPalette_Capsakid[] = INCBIN_U32("graphics/pokemon/capsakid/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Capsakid[] = INCBIN_U16("graphics/pokemon/capsakid/shiny.gbapal"); const u8 gMonIcon_Capsakid[] = INCBIN_U8("graphics/pokemon/capsakid/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Capsakid[] = INCBIN_U8("graphics/pokemon/capsakid/footprint.1bpp"); @@ -25422,15 +25422,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Capsakid[] = INCBIN_U16("graphics/pokemon/capsakid/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Capsakid[] = INCBIN_U16("graphics/pokemon/capsakid/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Scovillain[] = INCBIN_U16("graphics/pokemon/scovillain/normal.gbapal"); const u32 gMonBackPic_Scovillain[] = INCBIN_U32("graphics/pokemon/scovillain/back.4bpp.lz"); - const u32 gMonShinyPalette_Scovillain[] = INCBIN_U32("graphics/pokemon/scovillain/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Scovillain[] = INCBIN_U16("graphics/pokemon/scovillain/shiny.gbapal"); const u8 gMonIcon_Scovillain[] = INCBIN_U8("graphics/pokemon/scovillain/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Scovillain[] = INCBIN_U8("graphics/pokemon/scovillain/footprint.1bpp"); @@ -25438,17 +25438,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Scovillain[] = INCBIN_U16("graphics/pokemon/scovillain/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Scovillain[] = INCBIN_U16("graphics/pokemon/scovillain/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_CAPSAKID #if P_FAMILY_RELLOR const u32 gMonFrontPic_Rellor[] = INCBIN_U32("graphics/pokemon/rellor/front.4bpp.lz"); - const u32 gMonPalette_Rellor[] = INCBIN_U32("graphics/pokemon/rellor/normal.gbapal.lz"); + const u16 gMonPalette_Rellor[] = INCBIN_U16("graphics/pokemon/rellor/normal.gbapal"); const u32 gMonBackPic_Rellor[] = INCBIN_U32("graphics/pokemon/rellor/back.4bpp.lz"); - const u32 gMonShinyPalette_Rellor[] = INCBIN_U32("graphics/pokemon/rellor/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Rellor[] = INCBIN_U16("graphics/pokemon/rellor/shiny.gbapal"); const u8 gMonIcon_Rellor[] = INCBIN_U8("graphics/pokemon/rellor/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Rellor[] = INCBIN_U8("graphics/pokemon/rellor/footprint.1bpp"); @@ -25456,15 +25456,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Rellor[] = INCBIN_U16("graphics/pokemon/rellor/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Rellor[] = INCBIN_U16("graphics/pokemon/rellor/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Rabsca[] = INCBIN_U16("graphics/pokemon/rabsca/normal.gbapal"); const u32 gMonBackPic_Rabsca[] = INCBIN_U32("graphics/pokemon/rabsca/back.4bpp.lz"); - const u32 gMonShinyPalette_Rabsca[] = INCBIN_U32("graphics/pokemon/rabsca/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Rabsca[] = INCBIN_U16("graphics/pokemon/rabsca/shiny.gbapal"); const u8 gMonIcon_Rabsca[] = INCBIN_U8("graphics/pokemon/rabsca/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Rabsca[] = INCBIN_U8("graphics/pokemon/rabsca/footprint.1bpp"); @@ -25472,17 +25472,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Rabsca[] = INCBIN_U16("graphics/pokemon/rabsca/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Rabsca[] = INCBIN_U16("graphics/pokemon/rabsca/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_RELLOR #if P_FAMILY_FLITTLE const u32 gMonFrontPic_Flittle[] = INCBIN_U32("graphics/pokemon/flittle/front.4bpp.lz"); - const u32 gMonPalette_Flittle[] = INCBIN_U32("graphics/pokemon/flittle/normal.gbapal.lz"); + const u16 gMonPalette_Flittle[] = INCBIN_U16("graphics/pokemon/flittle/normal.gbapal"); const u32 gMonBackPic_Flittle[] = INCBIN_U32("graphics/pokemon/flittle/back.4bpp.lz"); - const u32 gMonShinyPalette_Flittle[] = INCBIN_U32("graphics/pokemon/flittle/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Flittle[] = INCBIN_U16("graphics/pokemon/flittle/shiny.gbapal"); const u8 gMonIcon_Flittle[] = INCBIN_U8("graphics/pokemon/flittle/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Flittle[] = INCBIN_U8("graphics/pokemon/flittle/footprint.1bpp"); @@ -25490,15 +25490,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Flittle[] = INCBIN_U16("graphics/pokemon/flittle/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Flittle[] = INCBIN_U16("graphics/pokemon/flittle/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Espathra[] = INCBIN_U16("graphics/pokemon/espathra/normal.gbapal"); const u32 gMonBackPic_Espathra[] = INCBIN_U32("graphics/pokemon/espathra/back.4bpp.lz"); - const u32 gMonShinyPalette_Espathra[] = INCBIN_U32("graphics/pokemon/espathra/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Espathra[] = INCBIN_U16("graphics/pokemon/espathra/shiny.gbapal"); const u8 gMonIcon_Espathra[] = INCBIN_U8("graphics/pokemon/espathra/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Espathra[] = INCBIN_U8("graphics/pokemon/espathra/footprint.1bpp"); @@ -25506,17 +25506,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Espathra[] = INCBIN_U16("graphics/pokemon/espathra/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Espathra[] = INCBIN_U16("graphics/pokemon/espathra/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_FLITTLE #if P_FAMILY_TINKATINK const u32 gMonFrontPic_Tinkatink[] = INCBIN_U32("graphics/pokemon/tinkatink/front.4bpp.lz"); - const u32 gMonPalette_Tinkatink[] = INCBIN_U32("graphics/pokemon/tinkatink/normal.gbapal.lz"); + const u16 gMonPalette_Tinkatink[] = INCBIN_U16("graphics/pokemon/tinkatink/normal.gbapal"); const u32 gMonBackPic_Tinkatink[] = INCBIN_U32("graphics/pokemon/tinkatink/back.4bpp.lz"); - const u32 gMonShinyPalette_Tinkatink[] = INCBIN_U32("graphics/pokemon/tinkatink/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Tinkatink[] = INCBIN_U16("graphics/pokemon/tinkatink/shiny.gbapal"); const u8 gMonIcon_Tinkatink[] = INCBIN_U8("graphics/pokemon/tinkatink/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Tinkatink[] = INCBIN_U8("graphics/pokemon/tinkatink/footprint.1bpp"); @@ -25524,15 +25524,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Tinkatink[] = INCBIN_U16("graphics/pokemon/tinkatink/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Tinkatink[] = INCBIN_U16("graphics/pokemon/tinkatink/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Tinkatuff[] = INCBIN_U16("graphics/pokemon/tinkatuff/normal.gbapal"); const u32 gMonBackPic_Tinkatuff[] = INCBIN_U32("graphics/pokemon/tinkatuff/back.4bpp.lz"); - const u32 gMonShinyPalette_Tinkatuff[] = INCBIN_U32("graphics/pokemon/tinkatuff/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Tinkatuff[] = INCBIN_U16("graphics/pokemon/tinkatuff/shiny.gbapal"); const u8 gMonIcon_Tinkatuff[] = INCBIN_U8("graphics/pokemon/tinkatuff/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Tinkatuff[] = INCBIN_U8("graphics/pokemon/tinkatuff/footprint.1bpp"); @@ -25540,15 +25540,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Tinkatuff[] = INCBIN_U16("graphics/pokemon/tinkatuff/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Tinkatuff[] = INCBIN_U16("graphics/pokemon/tinkatuff/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Tinkaton[] = INCBIN_U16("graphics/pokemon/tinkaton/normal.gbapal"); const u32 gMonBackPic_Tinkaton[] = INCBIN_U32("graphics/pokemon/tinkaton/back.4bpp.lz"); - const u32 gMonShinyPalette_Tinkaton[] = INCBIN_U32("graphics/pokemon/tinkaton/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Tinkaton[] = INCBIN_U16("graphics/pokemon/tinkaton/shiny.gbapal"); const u8 gMonIcon_Tinkaton[] = INCBIN_U8("graphics/pokemon/tinkaton/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Tinkaton[] = INCBIN_U8("graphics/pokemon/tinkaton/footprint.1bpp"); @@ -25556,17 +25556,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Tinkaton[] = INCBIN_U16("graphics/pokemon/tinkaton/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Tinkaton[] = INCBIN_U16("graphics/pokemon/tinkaton/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_TINKATINK #if P_FAMILY_WIGLETT const u32 gMonFrontPic_Wiglett[] = INCBIN_U32("graphics/pokemon/wiglett/front.4bpp.lz"); - const u32 gMonPalette_Wiglett[] = INCBIN_U32("graphics/pokemon/wiglett/normal.gbapal.lz"); + const u16 gMonPalette_Wiglett[] = INCBIN_U16("graphics/pokemon/wiglett/normal.gbapal"); const u32 gMonBackPic_Wiglett[] = INCBIN_U32("graphics/pokemon/wiglett/back.4bpp.lz"); - const u32 gMonShinyPalette_Wiglett[] = INCBIN_U32("graphics/pokemon/wiglett/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Wiglett[] = INCBIN_U16("graphics/pokemon/wiglett/shiny.gbapal"); const u8 gMonIcon_Wiglett[] = INCBIN_U8("graphics/pokemon/wiglett/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Wiglett[] = INCBIN_U8("graphics/pokemon/wiglett/footprint.1bpp"); @@ -25574,15 +25574,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Wiglett[] = INCBIN_U16("graphics/pokemon/wiglett/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Wiglett[] = INCBIN_U16("graphics/pokemon/wiglett/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Wugtrio[] = INCBIN_U16("graphics/pokemon/wugtrio/normal.gbapal"); const u32 gMonBackPic_Wugtrio[] = INCBIN_U32("graphics/pokemon/wugtrio/back.4bpp.lz"); - const u32 gMonShinyPalette_Wugtrio[] = INCBIN_U32("graphics/pokemon/wugtrio/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Wugtrio[] = INCBIN_U16("graphics/pokemon/wugtrio/shiny.gbapal"); const u8 gMonIcon_Wugtrio[] = INCBIN_U8("graphics/pokemon/wugtrio/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Wugtrio[] = INCBIN_U8("graphics/pokemon/wugtrio/footprint.1bpp"); @@ -25590,17 +25590,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Wugtrio[] = INCBIN_U16("graphics/pokemon/wugtrio/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Wugtrio[] = INCBIN_U16("graphics/pokemon/wugtrio/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_WIGLETT #if P_FAMILY_BOMBIRDIER const u32 gMonFrontPic_Bombirdier[] = INCBIN_U32("graphics/pokemon/bombirdier/front.4bpp.lz"); - const u32 gMonPalette_Bombirdier[] = INCBIN_U32("graphics/pokemon/bombirdier/normal.gbapal.lz"); + const u16 gMonPalette_Bombirdier[] = INCBIN_U16("graphics/pokemon/bombirdier/normal.gbapal"); const u32 gMonBackPic_Bombirdier[] = INCBIN_U32("graphics/pokemon/bombirdier/back.4bpp.lz"); - const u32 gMonShinyPalette_Bombirdier[] = INCBIN_U32("graphics/pokemon/bombirdier/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Bombirdier[] = INCBIN_U16("graphics/pokemon/bombirdier/shiny.gbapal"); const u8 gMonIcon_Bombirdier[] = INCBIN_U8("graphics/pokemon/bombirdier/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Bombirdier[] = INCBIN_U8("graphics/pokemon/bombirdier/footprint.1bpp"); @@ -25608,17 +25608,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Bombirdier[] = INCBIN_U16("graphics/pokemon/bombirdier/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Bombirdier[] = INCBIN_U16("graphics/pokemon/bombirdier/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_BOMBIRDIER #if P_FAMILY_FINIZEN const u32 gMonFrontPic_Finizen[] = INCBIN_U32("graphics/pokemon/finizen/front.4bpp.lz"); - const u32 gMonPalette_Finizen[] = INCBIN_U32("graphics/pokemon/finizen/normal.gbapal.lz"); + const u16 gMonPalette_Finizen[] = INCBIN_U16("graphics/pokemon/finizen/normal.gbapal"); const u32 gMonBackPic_Finizen[] = INCBIN_U32("graphics/pokemon/finizen/back.4bpp.lz"); - const u32 gMonShinyPalette_Finizen[] = INCBIN_U32("graphics/pokemon/finizen/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Finizen[] = INCBIN_U16("graphics/pokemon/finizen/shiny.gbapal"); const u8 gMonIcon_Finizen[] = INCBIN_U8("graphics/pokemon/finizen/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Finizen[] = INCBIN_U8("graphics/pokemon/finizen/footprint.1bpp"); @@ -25626,15 +25626,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Finizen[] = INCBIN_U16("graphics/pokemon/finizen/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Finizen[] = INCBIN_U16("graphics/pokemon/finizen/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_PalafinZero[] = INCBIN_U16("graphics/pokemon/palafin/normal.gbapal"); const u32 gMonBackPic_PalafinZero[] = INCBIN_U32("graphics/pokemon/palafin/back.4bpp.lz"); - const u32 gMonShinyPalette_PalafinZero[] = INCBIN_U32("graphics/pokemon/palafin/shiny.gbapal.lz"); + const u16 gMonShinyPalette_PalafinZero[] = INCBIN_U16("graphics/pokemon/palafin/shiny.gbapal"); const u8 gMonIcon_PalafinZero[] = INCBIN_U8("graphics/pokemon/palafin/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Palafin[] = INCBIN_U8("graphics/pokemon/palafin/footprint.1bpp"); @@ -25642,30 +25642,30 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_PalafinZero[] = INCBIN_U16("graphics/pokemon/palafin/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_PalafinZero[] = INCBIN_U16("graphics/pokemon/palafin/overworld_shiny.gbapal"); #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 u16 gMonPalette_PalafinHero[] = INCBIN_U16("graphics/pokemon/palafin/hero/normal.gbapal"); 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 u16 gMonShinyPalette_PalafinHero[] = INCBIN_U16("graphics/pokemon/palafin/hero/shiny.gbapal"); 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"); + const u16 gOverworldPalette_PalafinHero[] = INCBIN_U16("graphics/pokemon/palafin/hero/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_PalafinHero[] = INCBIN_U16("graphics/pokemon/palafin/hero/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_FINIZEN #if P_FAMILY_VAROOM const u32 gMonFrontPic_Varoom[] = INCBIN_U32("graphics/pokemon/varoom/front.4bpp.lz"); - const u32 gMonPalette_Varoom[] = INCBIN_U32("graphics/pokemon/varoom/normal.gbapal.lz"); + const u16 gMonPalette_Varoom[] = INCBIN_U16("graphics/pokemon/varoom/normal.gbapal"); const u32 gMonBackPic_Varoom[] = INCBIN_U32("graphics/pokemon/varoom/back.4bpp.lz"); - const u32 gMonShinyPalette_Varoom[] = INCBIN_U32("graphics/pokemon/varoom/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Varoom[] = INCBIN_U16("graphics/pokemon/varoom/shiny.gbapal"); const u8 gMonIcon_Varoom[] = INCBIN_U8("graphics/pokemon/varoom/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Varoom[] = INCBIN_U8("graphics/pokemon/varoom/footprint.1bpp"); @@ -25673,15 +25673,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Varoom[] = INCBIN_U16("graphics/pokemon/varoom/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Varoom[] = INCBIN_U16("graphics/pokemon/varoom/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Revavroom[] = INCBIN_U16("graphics/pokemon/revavroom/normal.gbapal"); const u32 gMonBackPic_Revavroom[] = INCBIN_U32("graphics/pokemon/revavroom/back.4bpp.lz"); - const u32 gMonShinyPalette_Revavroom[] = INCBIN_U32("graphics/pokemon/revavroom/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Revavroom[] = INCBIN_U16("graphics/pokemon/revavroom/shiny.gbapal"); const u8 gMonIcon_Revavroom[] = INCBIN_U8("graphics/pokemon/revavroom/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Revavroom[] = INCBIN_U8("graphics/pokemon/revavroom/footprint.1bpp"); @@ -25689,17 +25689,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Revavroom[] = INCBIN_U16("graphics/pokemon/revavroom/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Revavroom[] = INCBIN_U16("graphics/pokemon/revavroom/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_VAROOM #if P_FAMILY_CYCLIZAR const u32 gMonFrontPic_Cyclizar[] = INCBIN_U32("graphics/pokemon/cyclizar/front.4bpp.lz"); - const u32 gMonPalette_Cyclizar[] = INCBIN_U32("graphics/pokemon/cyclizar/normal.gbapal.lz"); + const u16 gMonPalette_Cyclizar[] = INCBIN_U16("graphics/pokemon/cyclizar/normal.gbapal"); const u32 gMonBackPic_Cyclizar[] = INCBIN_U32("graphics/pokemon/cyclizar/back.4bpp.lz"); - const u32 gMonShinyPalette_Cyclizar[] = INCBIN_U32("graphics/pokemon/cyclizar/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Cyclizar[] = INCBIN_U16("graphics/pokemon/cyclizar/shiny.gbapal"); const u8 gMonIcon_Cyclizar[] = INCBIN_U8("graphics/pokemon/cyclizar/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Cyclizar[] = INCBIN_U8("graphics/pokemon/cyclizar/footprint.1bpp"); @@ -25707,17 +25707,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Cyclizar[] = INCBIN_U16("graphics/pokemon/cyclizar/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Cyclizar[] = INCBIN_U16("graphics/pokemon/cyclizar/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_CYCLIZAR #if P_FAMILY_ORTHWORM const u32 gMonFrontPic_Orthworm[] = INCBIN_U32("graphics/pokemon/orthworm/front.4bpp.lz"); - const u32 gMonPalette_Orthworm[] = INCBIN_U32("graphics/pokemon/orthworm/normal.gbapal.lz"); + const u16 gMonPalette_Orthworm[] = INCBIN_U16("graphics/pokemon/orthworm/normal.gbapal"); const u32 gMonBackPic_Orthworm[] = INCBIN_U32("graphics/pokemon/orthworm/back.4bpp.lz"); - const u32 gMonShinyPalette_Orthworm[] = INCBIN_U32("graphics/pokemon/orthworm/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Orthworm[] = INCBIN_U16("graphics/pokemon/orthworm/shiny.gbapal"); const u8 gMonIcon_Orthworm[] = INCBIN_U8("graphics/pokemon/orthworm/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Orthworm[] = INCBIN_U8("graphics/pokemon/orthworm/footprint.1bpp"); @@ -25725,17 +25725,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Orthworm[] = INCBIN_U16("graphics/pokemon/orthworm/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Orthworm[] = INCBIN_U16("graphics/pokemon/orthworm/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_ORTHWORM #if P_FAMILY_GLIMMET const u32 gMonFrontPic_Glimmet[] = INCBIN_U32("graphics/pokemon/glimmet/front.4bpp.lz"); - const u32 gMonPalette_Glimmet[] = INCBIN_U32("graphics/pokemon/glimmet/normal.gbapal.lz"); + const u16 gMonPalette_Glimmet[] = INCBIN_U16("graphics/pokemon/glimmet/normal.gbapal"); const u32 gMonBackPic_Glimmet[] = INCBIN_U32("graphics/pokemon/glimmet/back.4bpp.lz"); - const u32 gMonShinyPalette_Glimmet[] = INCBIN_U32("graphics/pokemon/glimmet/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Glimmet[] = INCBIN_U16("graphics/pokemon/glimmet/shiny.gbapal"); const u8 gMonIcon_Glimmet[] = INCBIN_U8("graphics/pokemon/glimmet/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Glimmet[] = INCBIN_U8("graphics/pokemon/glimmet/footprint.1bpp"); @@ -25743,15 +25743,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Glimmet[] = INCBIN_U16("graphics/pokemon/glimmet/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Glimmet[] = INCBIN_U16("graphics/pokemon/glimmet/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Glimmora[] = INCBIN_U16("graphics/pokemon/glimmora/normal.gbapal"); const u32 gMonBackPic_Glimmora[] = INCBIN_U32("graphics/pokemon/glimmora/back.4bpp.lz"); - const u32 gMonShinyPalette_Glimmora[] = INCBIN_U32("graphics/pokemon/glimmora/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Glimmora[] = INCBIN_U16("graphics/pokemon/glimmora/shiny.gbapal"); const u8 gMonIcon_Glimmora[] = INCBIN_U8("graphics/pokemon/glimmora/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Glimmora[] = INCBIN_U8("graphics/pokemon/glimmora/footprint.1bpp"); @@ -25759,17 +25759,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Glimmora[] = INCBIN_U16("graphics/pokemon/glimmora/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Glimmora[] = INCBIN_U16("graphics/pokemon/glimmora/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_GLIMMET #if P_FAMILY_GREAVARD const u32 gMonFrontPic_Greavard[] = INCBIN_U32("graphics/pokemon/greavard/front.4bpp.lz"); - const u32 gMonPalette_Greavard[] = INCBIN_U32("graphics/pokemon/greavard/normal.gbapal.lz"); + const u16 gMonPalette_Greavard[] = INCBIN_U16("graphics/pokemon/greavard/normal.gbapal"); const u32 gMonBackPic_Greavard[] = INCBIN_U32("graphics/pokemon/greavard/back.4bpp.lz"); - const u32 gMonShinyPalette_Greavard[] = INCBIN_U32("graphics/pokemon/greavard/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Greavard[] = INCBIN_U16("graphics/pokemon/greavard/shiny.gbapal"); const u8 gMonIcon_Greavard[] = INCBIN_U8("graphics/pokemon/greavard/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Greavard[] = INCBIN_U8("graphics/pokemon/greavard/footprint.1bpp"); @@ -25777,15 +25777,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Greavard[] = INCBIN_U16("graphics/pokemon/greavard/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Greavard[] = INCBIN_U16("graphics/pokemon/greavard/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Houndstone[] = INCBIN_U16("graphics/pokemon/houndstone/normal.gbapal"); const u32 gMonBackPic_Houndstone[] = INCBIN_U32("graphics/pokemon/houndstone/back.4bpp.lz"); - const u32 gMonShinyPalette_Houndstone[] = INCBIN_U32("graphics/pokemon/houndstone/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Houndstone[] = INCBIN_U16("graphics/pokemon/houndstone/shiny.gbapal"); const u8 gMonIcon_Houndstone[] = INCBIN_U8("graphics/pokemon/houndstone/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Houndstone[] = INCBIN_U8("graphics/pokemon/houndstone/footprint.1bpp"); @@ -25793,17 +25793,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Houndstone[] = INCBIN_U16("graphics/pokemon/houndstone/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Houndstone[] = INCBIN_U16("graphics/pokemon/houndstone/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_GREAVARD #if P_FAMILY_FLAMIGO const u32 gMonFrontPic_Flamigo[] = INCBIN_U32("graphics/pokemon/flamigo/front.4bpp.lz"); - const u32 gMonPalette_Flamigo[] = INCBIN_U32("graphics/pokemon/flamigo/normal.gbapal.lz"); + const u16 gMonPalette_Flamigo[] = INCBIN_U16("graphics/pokemon/flamigo/normal.gbapal"); const u32 gMonBackPic_Flamigo[] = INCBIN_U32("graphics/pokemon/flamigo/back.4bpp.lz"); - const u32 gMonShinyPalette_Flamigo[] = INCBIN_U32("graphics/pokemon/flamigo/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Flamigo[] = INCBIN_U16("graphics/pokemon/flamigo/shiny.gbapal"); const u8 gMonIcon_Flamigo[] = INCBIN_U8("graphics/pokemon/flamigo/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Flamigo[] = INCBIN_U8("graphics/pokemon/flamigo/footprint.1bpp"); @@ -25811,17 +25811,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Flamigo[] = INCBIN_U16("graphics/pokemon/flamigo/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Flamigo[] = INCBIN_U16("graphics/pokemon/flamigo/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_FLAMIGO #if P_FAMILY_CETODDLE const u32 gMonFrontPic_Cetoddle[] = INCBIN_U32("graphics/pokemon/cetoddle/front.4bpp.lz"); - const u32 gMonPalette_Cetoddle[] = INCBIN_U32("graphics/pokemon/cetoddle/normal.gbapal.lz"); + const u16 gMonPalette_Cetoddle[] = INCBIN_U16("graphics/pokemon/cetoddle/normal.gbapal"); const u32 gMonBackPic_Cetoddle[] = INCBIN_U32("graphics/pokemon/cetoddle/back.4bpp.lz"); - const u32 gMonShinyPalette_Cetoddle[] = INCBIN_U32("graphics/pokemon/cetoddle/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Cetoddle[] = INCBIN_U16("graphics/pokemon/cetoddle/shiny.gbapal"); const u8 gMonIcon_Cetoddle[] = INCBIN_U8("graphics/pokemon/cetoddle/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Cetoddle[] = INCBIN_U8("graphics/pokemon/cetoddle/footprint.1bpp"); @@ -25829,15 +25829,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Cetoddle[] = INCBIN_U16("graphics/pokemon/cetoddle/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Cetoddle[] = INCBIN_U16("graphics/pokemon/cetoddle/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Cetitan[] = INCBIN_U16("graphics/pokemon/cetitan/normal.gbapal"); const u32 gMonBackPic_Cetitan[] = INCBIN_U32("graphics/pokemon/cetitan/back.4bpp.lz"); - const u32 gMonShinyPalette_Cetitan[] = INCBIN_U32("graphics/pokemon/cetitan/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Cetitan[] = INCBIN_U16("graphics/pokemon/cetitan/shiny.gbapal"); const u8 gMonIcon_Cetitan[] = INCBIN_U8("graphics/pokemon/cetitan/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Cetitan[] = INCBIN_U8("graphics/pokemon/cetitan/footprint.1bpp"); @@ -25845,17 +25845,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Cetitan[] = INCBIN_U16("graphics/pokemon/cetitan/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Cetitan[] = INCBIN_U16("graphics/pokemon/cetitan/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_CETODDLE #if P_FAMILY_VELUZA const u32 gMonFrontPic_Veluza[] = INCBIN_U32("graphics/pokemon/veluza/front.4bpp.lz"); - const u32 gMonPalette_Veluza[] = INCBIN_U32("graphics/pokemon/veluza/normal.gbapal.lz"); + const u16 gMonPalette_Veluza[] = INCBIN_U16("graphics/pokemon/veluza/normal.gbapal"); const u32 gMonBackPic_Veluza[] = INCBIN_U32("graphics/pokemon/veluza/back.4bpp.lz"); - const u32 gMonShinyPalette_Veluza[] = INCBIN_U32("graphics/pokemon/veluza/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Veluza[] = INCBIN_U16("graphics/pokemon/veluza/shiny.gbapal"); const u8 gMonIcon_Veluza[] = INCBIN_U8("graphics/pokemon/veluza/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Veluza[] = INCBIN_U8("graphics/pokemon/veluza/footprint.1bpp"); @@ -25863,17 +25863,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Veluza[] = INCBIN_U16("graphics/pokemon/veluza/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Veluza[] = INCBIN_U16("graphics/pokemon/veluza/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_VELUZA #if P_FAMILY_DONDOZO const u32 gMonFrontPic_Dondozo[] = INCBIN_U32("graphics/pokemon/dondozo/front.4bpp.lz"); - const u32 gMonPalette_Dondozo[] = INCBIN_U32("graphics/pokemon/dondozo/normal.gbapal.lz"); + const u16 gMonPalette_Dondozo[] = INCBIN_U16("graphics/pokemon/dondozo/normal.gbapal"); const u32 gMonBackPic_Dondozo[] = INCBIN_U32("graphics/pokemon/dondozo/back.4bpp.lz"); - const u32 gMonShinyPalette_Dondozo[] = INCBIN_U32("graphics/pokemon/dondozo/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Dondozo[] = INCBIN_U16("graphics/pokemon/dondozo/shiny.gbapal"); const u8 gMonIcon_Dondozo[] = INCBIN_U8("graphics/pokemon/dondozo/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Dondozo[] = INCBIN_U8("graphics/pokemon/dondozo/footprint.1bpp"); @@ -25881,17 +25881,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Dondozo[] = INCBIN_U16("graphics/pokemon/dondozo/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Dondozo[] = INCBIN_U16("graphics/pokemon/dondozo/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_DONDOZO #if P_FAMILY_TATSUGIRI const u32 gMonFrontPic_TatsugiriCurly[] = INCBIN_U32("graphics/pokemon/tatsugiri/front.4bpp.lz"); - const u32 gMonPalette_TatsugiriCurly[] = INCBIN_U32("graphics/pokemon/tatsugiri/normal.gbapal.lz"); + const u16 gMonPalette_TatsugiriCurly[] = INCBIN_U16("graphics/pokemon/tatsugiri/normal.gbapal"); const u32 gMonBackPic_TatsugiriCurly[] = INCBIN_U32("graphics/pokemon/tatsugiri/back.4bpp.lz"); - const u32 gMonShinyPalette_TatsugiriCurly[] = INCBIN_U32("graphics/pokemon/tatsugiri/shiny.gbapal.lz"); + const u16 gMonShinyPalette_TatsugiriCurly[] = INCBIN_U16("graphics/pokemon/tatsugiri/shiny.gbapal"); const u8 gMonIcon_TatsugiriCurly[] = INCBIN_U8("graphics/pokemon/tatsugiri/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Tatsugiri[] = INCBIN_U8("graphics/pokemon/tatsugiri/footprint.1bpp"); @@ -25899,43 +25899,43 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if OW_POKEMON_OBJECT_EVENTS const u32 gObjectEventPic_TatsugiriCurly[] = INCBIN_COMP("graphics/pokemon/tatsugiri/overworld.4bpp"); #if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE - const u32 gOverworldPalette_TatsugiriCurly[] = INCBIN_U32("graphics/pokemon/tatsugiri/overworld_normal.gbapal.lz"); - const u32 gShinyOverworldPalette_TatsugiriCurly[] = INCBIN_U32("graphics/pokemon/tatsugiri/overworld_shiny.gbapal.lz"); + const u16 gOverworldPalette_TatsugiriCurly[] = INCBIN_U16("graphics/pokemon/tatsugiri/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_TatsugiriCurly[] = INCBIN_U16("graphics/pokemon/tatsugiri/overworld_shiny.gbapal"); #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 u16 gMonPalette_TatsugiriDroopy[] = INCBIN_U16("graphics/pokemon/tatsugiri/droopy/normal.gbapal"); 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 u16 gMonShinyPalette_TatsugiriDroopy[] = INCBIN_U16("graphics/pokemon/tatsugiri/droopy/shiny.gbapal"); 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"); + const u16 gOverworldPalette_TatsugiriDroopy[] = INCBIN_U16("graphics/pokemon/tatsugiri/droopy/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_TatsugiriDroopy[] = INCBIN_U16("graphics/pokemon/tatsugiri/droopy/overworld_shiny.gbapal"); #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 u16 gMonPalette_TatsugiriStretchy[] = INCBIN_U16("graphics/pokemon/tatsugiri/stretchy/normal.gbapal"); 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 u16 gMonShinyPalette_TatsugiriStretchy[] = INCBIN_U16("graphics/pokemon/tatsugiri/stretchy/shiny.gbapal"); 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"); + const u16 gOverworldPalette_TatsugiriStretchy[] = INCBIN_U16("graphics/pokemon/tatsugiri/stretchy/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_TatsugiriStretchy[] = INCBIN_U16("graphics/pokemon/tatsugiri/stretchy/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_DONDOZO #if P_FAMILY_GREAT_TUSK const u32 gMonFrontPic_GreatTusk[] = INCBIN_U32("graphics/pokemon/great_tusk/front.4bpp.lz"); - const u32 gMonPalette_GreatTusk[] = INCBIN_U32("graphics/pokemon/great_tusk/normal.gbapal.lz"); + const u16 gMonPalette_GreatTusk[] = INCBIN_U16("graphics/pokemon/great_tusk/normal.gbapal"); const u32 gMonBackPic_GreatTusk[] = INCBIN_U32("graphics/pokemon/great_tusk/back.4bpp.lz"); - const u32 gMonShinyPalette_GreatTusk[] = INCBIN_U32("graphics/pokemon/great_tusk/shiny.gbapal.lz"); + const u16 gMonShinyPalette_GreatTusk[] = INCBIN_U16("graphics/pokemon/great_tusk/shiny.gbapal"); const u8 gMonIcon_GreatTusk[] = INCBIN_U8("graphics/pokemon/great_tusk/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_GreatTusk[] = INCBIN_U8("graphics/pokemon/great_tusk/footprint.1bpp"); @@ -25943,17 +25943,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_GreatTusk[] = INCBIN_U16("graphics/pokemon/great_tusk/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_GreatTusk[] = INCBIN_U16("graphics/pokemon/great_tusk/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_GREAT_TUSK #if P_FAMILY_SCREAM_TAIL const u32 gMonFrontPic_ScreamTail[] = INCBIN_U32("graphics/pokemon/scream_tail/front.4bpp.lz"); - const u32 gMonPalette_ScreamTail[] = INCBIN_U32("graphics/pokemon/scream_tail/normal.gbapal.lz"); + const u16 gMonPalette_ScreamTail[] = INCBIN_U16("graphics/pokemon/scream_tail/normal.gbapal"); const u32 gMonBackPic_ScreamTail[] = INCBIN_U32("graphics/pokemon/scream_tail/back.4bpp.lz"); - const u32 gMonShinyPalette_ScreamTail[] = INCBIN_U32("graphics/pokemon/scream_tail/shiny.gbapal.lz"); + const u16 gMonShinyPalette_ScreamTail[] = INCBIN_U16("graphics/pokemon/scream_tail/shiny.gbapal"); const u8 gMonIcon_ScreamTail[] = INCBIN_U8("graphics/pokemon/scream_tail/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_ScreamTail[] = INCBIN_U8("graphics/pokemon/scream_tail/footprint.1bpp"); @@ -25961,17 +25961,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_ScreamTail[] = INCBIN_U16("graphics/pokemon/scream_tail/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_ScreamTail[] = INCBIN_U16("graphics/pokemon/scream_tail/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SCREAM_TAIL #if P_FAMILY_BRUTE_BONNET const u32 gMonFrontPic_BruteBonnet[] = INCBIN_U32("graphics/pokemon/brute_bonnet/front.4bpp.lz"); - const u32 gMonPalette_BruteBonnet[] = INCBIN_U32("graphics/pokemon/brute_bonnet/normal.gbapal.lz"); + const u16 gMonPalette_BruteBonnet[] = INCBIN_U16("graphics/pokemon/brute_bonnet/normal.gbapal"); const u32 gMonBackPic_BruteBonnet[] = INCBIN_U32("graphics/pokemon/brute_bonnet/back.4bpp.lz"); - const u32 gMonShinyPalette_BruteBonnet[] = INCBIN_U32("graphics/pokemon/brute_bonnet/shiny.gbapal.lz"); + const u16 gMonShinyPalette_BruteBonnet[] = INCBIN_U16("graphics/pokemon/brute_bonnet/shiny.gbapal"); const u8 gMonIcon_BruteBonnet[] = INCBIN_U8("graphics/pokemon/brute_bonnet/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_BruteBonnet[] = INCBIN_U8("graphics/pokemon/brute_bonnet/footprint.1bpp"); @@ -25979,17 +25979,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_BruteBonnet[] = INCBIN_U16("graphics/pokemon/brute_bonnet/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_BruteBonnet[] = INCBIN_U16("graphics/pokemon/brute_bonnet/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_BRUTE_BONNET #if P_FAMILY_FLUTTER_MANE const u32 gMonFrontPic_FlutterMane[] = INCBIN_U32("graphics/pokemon/flutter_mane/front.4bpp.lz"); - const u32 gMonPalette_FlutterMane[] = INCBIN_U32("graphics/pokemon/flutter_mane/normal.gbapal.lz"); + const u16 gMonPalette_FlutterMane[] = INCBIN_U16("graphics/pokemon/flutter_mane/normal.gbapal"); const u32 gMonBackPic_FlutterMane[] = INCBIN_U32("graphics/pokemon/flutter_mane/back.4bpp.lz"); - const u32 gMonShinyPalette_FlutterMane[] = INCBIN_U32("graphics/pokemon/flutter_mane/shiny.gbapal.lz"); + const u16 gMonShinyPalette_FlutterMane[] = INCBIN_U16("graphics/pokemon/flutter_mane/shiny.gbapal"); const u8 gMonIcon_FlutterMane[] = INCBIN_U8("graphics/pokemon/flutter_mane/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_FlutterMane[] = INCBIN_U8("graphics/pokemon/flutter_mane/footprint.1bpp"); @@ -25997,17 +25997,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_FlutterMane[] = INCBIN_U16("graphics/pokemon/flutter_mane/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_FlutterMane[] = INCBIN_U16("graphics/pokemon/flutter_mane/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_FLUTTER_MANE #if P_FAMILY_SLITHER_WING const u32 gMonFrontPic_SlitherWing[] = INCBIN_U32("graphics/pokemon/slither_wing/front.4bpp.lz"); - const u32 gMonPalette_SlitherWing[] = INCBIN_U32("graphics/pokemon/slither_wing/normal.gbapal.lz"); + const u16 gMonPalette_SlitherWing[] = INCBIN_U16("graphics/pokemon/slither_wing/normal.gbapal"); const u32 gMonBackPic_SlitherWing[] = INCBIN_U32("graphics/pokemon/slither_wing/back.4bpp.lz"); - const u32 gMonShinyPalette_SlitherWing[] = INCBIN_U32("graphics/pokemon/slither_wing/shiny.gbapal.lz"); + const u16 gMonShinyPalette_SlitherWing[] = INCBIN_U16("graphics/pokemon/slither_wing/shiny.gbapal"); const u8 gMonIcon_SlitherWing[] = INCBIN_U8("graphics/pokemon/slither_wing/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_SlitherWing[] = INCBIN_U8("graphics/pokemon/slither_wing/footprint.1bpp"); @@ -26015,17 +26015,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_SlitherWing[] = INCBIN_U16("graphics/pokemon/slither_wing/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_SlitherWing[] = INCBIN_U16("graphics/pokemon/slither_wing/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SLITHER_WING #if P_FAMILY_SANDY_SHOCKS const u32 gMonFrontPic_SandyShocks[] = INCBIN_U32("graphics/pokemon/sandy_shocks/front.4bpp.lz"); - const u32 gMonPalette_SandyShocks[] = INCBIN_U32("graphics/pokemon/sandy_shocks/normal.gbapal.lz"); + const u16 gMonPalette_SandyShocks[] = INCBIN_U16("graphics/pokemon/sandy_shocks/normal.gbapal"); const u32 gMonBackPic_SandyShocks[] = INCBIN_U32("graphics/pokemon/sandy_shocks/back.4bpp.lz"); - const u32 gMonShinyPalette_SandyShocks[] = INCBIN_U32("graphics/pokemon/sandy_shocks/shiny.gbapal.lz"); + const u16 gMonShinyPalette_SandyShocks[] = INCBIN_U16("graphics/pokemon/sandy_shocks/shiny.gbapal"); const u8 gMonIcon_SandyShocks[] = INCBIN_U8("graphics/pokemon/sandy_shocks/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_SandyShocks[] = INCBIN_U8("graphics/pokemon/sandy_shocks/footprint.1bpp"); @@ -26033,17 +26033,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_SandyShocks[] = INCBIN_U16("graphics/pokemon/sandy_shocks/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_SandyShocks[] = INCBIN_U16("graphics/pokemon/sandy_shocks/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SANDY_SHOCKS #if P_FAMILY_IRON_TREADS const u32 gMonFrontPic_IronTreads[] = INCBIN_U32("graphics/pokemon/iron_treads/front.4bpp.lz"); - const u32 gMonPalette_IronTreads[] = INCBIN_U32("graphics/pokemon/iron_treads/normal.gbapal.lz"); + const u16 gMonPalette_IronTreads[] = INCBIN_U16("graphics/pokemon/iron_treads/normal.gbapal"); const u32 gMonBackPic_IronTreads[] = INCBIN_U32("graphics/pokemon/iron_treads/back.4bpp.lz"); - const u32 gMonShinyPalette_IronTreads[] = INCBIN_U32("graphics/pokemon/iron_treads/shiny.gbapal.lz"); + const u16 gMonShinyPalette_IronTreads[] = INCBIN_U16("graphics/pokemon/iron_treads/shiny.gbapal"); const u8 gMonIcon_IronTreads[] = INCBIN_U8("graphics/pokemon/iron_treads/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_IronTreads[] = INCBIN_U8("graphics/pokemon/iron_treads/footprint.1bpp"); @@ -26051,17 +26051,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_IronTreads[] = INCBIN_U16("graphics/pokemon/iron_treads/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_IronTreads[] = INCBIN_U16("graphics/pokemon/iron_treads/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_IRON_TREADS #if P_FAMILY_IRON_BUNDLE const u32 gMonFrontPic_IronBundle[] = INCBIN_U32("graphics/pokemon/iron_bundle/front.4bpp.lz"); - const u32 gMonPalette_IronBundle[] = INCBIN_U32("graphics/pokemon/iron_bundle/normal.gbapal.lz"); + const u16 gMonPalette_IronBundle[] = INCBIN_U16("graphics/pokemon/iron_bundle/normal.gbapal"); const u32 gMonBackPic_IronBundle[] = INCBIN_U32("graphics/pokemon/iron_bundle/back.4bpp.lz"); - const u32 gMonShinyPalette_IronBundle[] = INCBIN_U32("graphics/pokemon/iron_bundle/shiny.gbapal.lz"); + const u16 gMonShinyPalette_IronBundle[] = INCBIN_U16("graphics/pokemon/iron_bundle/shiny.gbapal"); const u8 gMonIcon_IronBundle[] = INCBIN_U8("graphics/pokemon/iron_bundle/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_IronBundle[] = INCBIN_U8("graphics/pokemon/iron_bundle/footprint.1bpp"); @@ -26069,17 +26069,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_IronBundle[] = INCBIN_U16("graphics/pokemon/iron_bundle/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_IronBundle[] = INCBIN_U16("graphics/pokemon/iron_bundle/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_IRON_BUNDLE #if P_FAMILY_IRON_HANDS const u32 gMonFrontPic_IronHands[] = INCBIN_U32("graphics/pokemon/iron_hands/front.4bpp.lz"); - const u32 gMonPalette_IronHands[] = INCBIN_U32("graphics/pokemon/iron_hands/normal.gbapal.lz"); + const u16 gMonPalette_IronHands[] = INCBIN_U16("graphics/pokemon/iron_hands/normal.gbapal"); const u32 gMonBackPic_IronHands[] = INCBIN_U32("graphics/pokemon/iron_hands/back.4bpp.lz"); - const u32 gMonShinyPalette_IronHands[] = INCBIN_U32("graphics/pokemon/iron_hands/shiny.gbapal.lz"); + const u16 gMonShinyPalette_IronHands[] = INCBIN_U16("graphics/pokemon/iron_hands/shiny.gbapal"); const u8 gMonIcon_IronHands[] = INCBIN_U8("graphics/pokemon/iron_hands/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_IronHands[] = INCBIN_U8("graphics/pokemon/iron_hands/footprint.1bpp"); @@ -26087,17 +26087,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_IronHands[] = INCBIN_U16("graphics/pokemon/iron_hands/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_IronHands[] = INCBIN_U16("graphics/pokemon/iron_hands/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_IRON_HANDS #if P_FAMILY_IRON_JUGULIS const u32 gMonFrontPic_IronJugulis[] = INCBIN_U32("graphics/pokemon/iron_jugulis/front.4bpp.lz"); - const u32 gMonPalette_IronJugulis[] = INCBIN_U32("graphics/pokemon/iron_jugulis/normal.gbapal.lz"); + const u16 gMonPalette_IronJugulis[] = INCBIN_U16("graphics/pokemon/iron_jugulis/normal.gbapal"); const u32 gMonBackPic_IronJugulis[] = INCBIN_U32("graphics/pokemon/iron_jugulis/back.4bpp.lz"); - const u32 gMonShinyPalette_IronJugulis[] = INCBIN_U32("graphics/pokemon/iron_jugulis/shiny.gbapal.lz"); + const u16 gMonShinyPalette_IronJugulis[] = INCBIN_U16("graphics/pokemon/iron_jugulis/shiny.gbapal"); const u8 gMonIcon_IronJugulis[] = INCBIN_U8("graphics/pokemon/iron_jugulis/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_IronJugulis[] = INCBIN_U8("graphics/pokemon/iron_jugulis/footprint.1bpp"); @@ -26105,17 +26105,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_IronJugulis[] = INCBIN_U16("graphics/pokemon/iron_jugulis/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_IronJugulis[] = INCBIN_U16("graphics/pokemon/iron_jugulis/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_IRON_JUGULIS #if P_FAMILY_IRON_MOTH const u32 gMonFrontPic_IronMoth[] = INCBIN_U32("graphics/pokemon/iron_moth/front.4bpp.lz"); - const u32 gMonPalette_IronMoth[] = INCBIN_U32("graphics/pokemon/iron_moth/normal.gbapal.lz"); + const u16 gMonPalette_IronMoth[] = INCBIN_U16("graphics/pokemon/iron_moth/normal.gbapal"); const u32 gMonBackPic_IronMoth[] = INCBIN_U32("graphics/pokemon/iron_moth/back.4bpp.lz"); - const u32 gMonShinyPalette_IronMoth[] = INCBIN_U32("graphics/pokemon/iron_moth/shiny.gbapal.lz"); + const u16 gMonShinyPalette_IronMoth[] = INCBIN_U16("graphics/pokemon/iron_moth/shiny.gbapal"); const u8 gMonIcon_IronMoth[] = INCBIN_U8("graphics/pokemon/iron_moth/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_IronMoth[] = INCBIN_U8("graphics/pokemon/iron_moth/footprint.1bpp"); @@ -26123,17 +26123,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_IronMoth[] = INCBIN_U16("graphics/pokemon/iron_moth/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_IronMoth[] = INCBIN_U16("graphics/pokemon/iron_moth/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_IRON_MOTH #if P_FAMILY_IRON_THORNS const u32 gMonFrontPic_IronThorns[] = INCBIN_U32("graphics/pokemon/iron_thorns/front.4bpp.lz"); - const u32 gMonPalette_IronThorns[] = INCBIN_U32("graphics/pokemon/iron_thorns/normal.gbapal.lz"); + const u16 gMonPalette_IronThorns[] = INCBIN_U16("graphics/pokemon/iron_thorns/normal.gbapal"); const u32 gMonBackPic_IronThorns[] = INCBIN_U32("graphics/pokemon/iron_thorns/back.4bpp.lz"); - const u32 gMonShinyPalette_IronThorns[] = INCBIN_U32("graphics/pokemon/iron_thorns/shiny.gbapal.lz"); + const u16 gMonShinyPalette_IronThorns[] = INCBIN_U16("graphics/pokemon/iron_thorns/shiny.gbapal"); const u8 gMonIcon_IronThorns[] = INCBIN_U8("graphics/pokemon/iron_thorns/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_IronThorns[] = INCBIN_U8("graphics/pokemon/iron_thorns/footprint.1bpp"); @@ -26141,17 +26141,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_IronThorns[] = INCBIN_U16("graphics/pokemon/iron_thorns/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_IronThorns[] = INCBIN_U16("graphics/pokemon/iron_thorns/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_IRON_THORNS #if P_FAMILY_FRIGIBAX const u32 gMonFrontPic_Frigibax[] = INCBIN_U32("graphics/pokemon/frigibax/front.4bpp.lz"); - const u32 gMonPalette_Frigibax[] = INCBIN_U32("graphics/pokemon/frigibax/normal.gbapal.lz"); + const u16 gMonPalette_Frigibax[] = INCBIN_U16("graphics/pokemon/frigibax/normal.gbapal"); const u32 gMonBackPic_Frigibax[] = INCBIN_U32("graphics/pokemon/frigibax/back.4bpp.lz"); - const u32 gMonShinyPalette_Frigibax[] = INCBIN_U32("graphics/pokemon/frigibax/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Frigibax[] = INCBIN_U16("graphics/pokemon/frigibax/shiny.gbapal"); const u8 gMonIcon_Frigibax[] = INCBIN_U8("graphics/pokemon/frigibax/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Frigibax[] = INCBIN_U8("graphics/pokemon/frigibax/footprint.1bpp"); @@ -26159,15 +26159,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Frigibax[] = INCBIN_U16("graphics/pokemon/frigibax/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Frigibax[] = INCBIN_U16("graphics/pokemon/frigibax/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Arctibax[] = INCBIN_U16("graphics/pokemon/arctibax/normal.gbapal"); const u32 gMonBackPic_Arctibax[] = INCBIN_U32("graphics/pokemon/arctibax/back.4bpp.lz"); - const u32 gMonShinyPalette_Arctibax[] = INCBIN_U32("graphics/pokemon/arctibax/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Arctibax[] = INCBIN_U16("graphics/pokemon/arctibax/shiny.gbapal"); const u8 gMonIcon_Arctibax[] = INCBIN_U8("graphics/pokemon/arctibax/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Arctibax[] = INCBIN_U8("graphics/pokemon/arctibax/footprint.1bpp"); @@ -26175,15 +26175,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Arctibax[] = INCBIN_U16("graphics/pokemon/arctibax/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Arctibax[] = INCBIN_U16("graphics/pokemon/arctibax/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Baxcalibur[] = INCBIN_U16("graphics/pokemon/baxcalibur/normal.gbapal"); const u32 gMonBackPic_Baxcalibur[] = INCBIN_U32("graphics/pokemon/baxcalibur/back.4bpp.lz"); - const u32 gMonShinyPalette_Baxcalibur[] = INCBIN_U32("graphics/pokemon/baxcalibur/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Baxcalibur[] = INCBIN_U16("graphics/pokemon/baxcalibur/shiny.gbapal"); const u8 gMonIcon_Baxcalibur[] = INCBIN_U8("graphics/pokemon/baxcalibur/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Baxcalibur[] = INCBIN_U8("graphics/pokemon/baxcalibur/footprint.1bpp"); @@ -26191,17 +26191,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Baxcalibur[] = INCBIN_U16("graphics/pokemon/baxcalibur/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Baxcalibur[] = INCBIN_U16("graphics/pokemon/baxcalibur/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_FRIGIBAX #if P_FAMILY_GIMMIGHOUL const u32 gMonFrontPic_GimmighoulChest[] = INCBIN_U32("graphics/pokemon/gimmighoul/front.4bpp.lz"); - const u32 gMonPalette_GimmighoulChest[] = INCBIN_U32("graphics/pokemon/gimmighoul/normal.gbapal.lz"); + const u16 gMonPalette_GimmighoulChest[] = INCBIN_U16("graphics/pokemon/gimmighoul/normal.gbapal"); const u32 gMonBackPic_GimmighoulChest[] = INCBIN_U32("graphics/pokemon/gimmighoul/back.4bpp.lz"); - const u32 gMonShinyPalette_GimmighoulChest[] = INCBIN_U32("graphics/pokemon/gimmighoul/shiny.gbapal.lz"); + const u16 gMonShinyPalette_GimmighoulChest[] = INCBIN_U16("graphics/pokemon/gimmighoul/shiny.gbapal"); const u8 gMonIcon_GimmighoulChest[] = INCBIN_U8("graphics/pokemon/gimmighoul/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_GimmighoulChest[] = INCBIN_U8("graphics/pokemon/gimmighoul/footprint.1bpp"); @@ -26209,15 +26209,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_GimmighoulChest[] = INCBIN_U16("graphics/pokemon/gimmighoul/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_GimmighoulChest[] = INCBIN_U16("graphics/pokemon/gimmighoul/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_GimmighoulRoaming[] = INCBIN_U16("graphics/pokemon/gimmighoul/roaming/normal.gbapal"); const u32 gMonBackPic_GimmighoulRoaming[] = INCBIN_U32("graphics/pokemon/gimmighoul/roaming/back.4bpp.lz"); - const u32 gMonShinyPalette_GimmighoulRoaming[] = INCBIN_U32("graphics/pokemon/gimmighoul/roaming/shiny.gbapal.lz"); + const u16 gMonShinyPalette_GimmighoulRoaming[] = INCBIN_U16("graphics/pokemon/gimmighoul/roaming/shiny.gbapal"); const u8 gMonIcon_GimmighoulRoaming[] = INCBIN_U8("graphics/pokemon/gimmighoul/roaming/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_GimmighoulRoaming[] = INCBIN_U8("graphics/pokemon/gimmighoul/roaming/footprint.1bpp"); @@ -26225,15 +26225,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); +// const u16 gOverworldPalette_GimmighoulRoaming[] = INCBIN_U16("graphics/pokemon/gimmighoul/roaming/overworld_normal.gbapal"); +// const u16 gShinyOverworldPalette_GimmighoulRoaming[] = INCBIN_U16("graphics/pokemon/gimmighoul/roaming/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Gholdengo[] = INCBIN_U16("graphics/pokemon/gholdengo/normal.gbapal"); const u32 gMonBackPic_Gholdengo[] = INCBIN_U32("graphics/pokemon/gholdengo/back.4bpp.lz"); - const u32 gMonShinyPalette_Gholdengo[] = INCBIN_U32("graphics/pokemon/gholdengo/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Gholdengo[] = INCBIN_U16("graphics/pokemon/gholdengo/shiny.gbapal"); const u8 gMonIcon_Gholdengo[] = INCBIN_U8("graphics/pokemon/gholdengo/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Gholdengo[] = INCBIN_U8("graphics/pokemon/gholdengo/footprint.1bpp"); @@ -26241,17 +26241,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Gholdengo[] = INCBIN_U16("graphics/pokemon/gholdengo/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Gholdengo[] = INCBIN_U16("graphics/pokemon/gholdengo/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_GIMMIGHOUL #if P_FAMILY_WO_CHIEN const u32 gMonFrontPic_WoChien[] = INCBIN_U32("graphics/pokemon/wo_chien/front.4bpp.lz"); - const u32 gMonPalette_WoChien[] = INCBIN_U32("graphics/pokemon/wo_chien/normal.gbapal.lz"); + const u16 gMonPalette_WoChien[] = INCBIN_U16("graphics/pokemon/wo_chien/normal.gbapal"); const u32 gMonBackPic_WoChien[] = INCBIN_U32("graphics/pokemon/wo_chien/back.4bpp.lz"); - const u32 gMonShinyPalette_WoChien[] = INCBIN_U32("graphics/pokemon/wo_chien/shiny.gbapal.lz"); + const u16 gMonShinyPalette_WoChien[] = INCBIN_U16("graphics/pokemon/wo_chien/shiny.gbapal"); const u8 gMonIcon_WoChien[] = INCBIN_U8("graphics/pokemon/wo_chien/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_WoChien[] = INCBIN_U8("graphics/pokemon/wo_chien/footprint.1bpp"); @@ -26259,17 +26259,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_WoChien[] = INCBIN_U16("graphics/pokemon/wo_chien/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_WoChien[] = INCBIN_U16("graphics/pokemon/wo_chien/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_WO_CHIEN #if P_FAMILY_CHIEN_PAO const u32 gMonFrontPic_ChienPao[] = INCBIN_U32("graphics/pokemon/chien_pao/front.4bpp.lz"); - const u32 gMonPalette_ChienPao[] = INCBIN_U32("graphics/pokemon/chien_pao/normal.gbapal.lz"); + const u16 gMonPalette_ChienPao[] = INCBIN_U16("graphics/pokemon/chien_pao/normal.gbapal"); const u32 gMonBackPic_ChienPao[] = INCBIN_U32("graphics/pokemon/chien_pao/back.4bpp.lz"); - const u32 gMonShinyPalette_ChienPao[] = INCBIN_U32("graphics/pokemon/chien_pao/shiny.gbapal.lz"); + const u16 gMonShinyPalette_ChienPao[] = INCBIN_U16("graphics/pokemon/chien_pao/shiny.gbapal"); const u8 gMonIcon_ChienPao[] = INCBIN_U8("graphics/pokemon/chien_pao/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_ChienPao[] = INCBIN_U8("graphics/pokemon/chien_pao/footprint.1bpp"); @@ -26277,17 +26277,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_ChienPao[] = INCBIN_U16("graphics/pokemon/chien_pao/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_ChienPao[] = INCBIN_U16("graphics/pokemon/chien_pao/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_CHIEN_PAO #if P_FAMILY_TING_LU const u32 gMonFrontPic_TingLu[] = INCBIN_U32("graphics/pokemon/ting_lu/front.4bpp.lz"); - const u32 gMonPalette_TingLu[] = INCBIN_U32("graphics/pokemon/ting_lu/normal.gbapal.lz"); + const u16 gMonPalette_TingLu[] = INCBIN_U16("graphics/pokemon/ting_lu/normal.gbapal"); const u32 gMonBackPic_TingLu[] = INCBIN_U32("graphics/pokemon/ting_lu/back.4bpp.lz"); - const u32 gMonShinyPalette_TingLu[] = INCBIN_U32("graphics/pokemon/ting_lu/shiny.gbapal.lz"); + const u16 gMonShinyPalette_TingLu[] = INCBIN_U16("graphics/pokemon/ting_lu/shiny.gbapal"); const u8 gMonIcon_TingLu[] = INCBIN_U8("graphics/pokemon/ting_lu/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_TingLu[] = INCBIN_U8("graphics/pokemon/ting_lu/footprint.1bpp"); @@ -26295,17 +26295,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_TingLu[] = INCBIN_U16("graphics/pokemon/ting_lu/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_TingLu[] = INCBIN_U16("graphics/pokemon/ting_lu/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_TING_LU #if P_FAMILY_CHI_YU const u32 gMonFrontPic_ChiYu[] = INCBIN_U32("graphics/pokemon/chi_yu/front.4bpp.lz"); - const u32 gMonPalette_ChiYu[] = INCBIN_U32("graphics/pokemon/chi_yu/normal.gbapal.lz"); + const u16 gMonPalette_ChiYu[] = INCBIN_U16("graphics/pokemon/chi_yu/normal.gbapal"); const u32 gMonBackPic_ChiYu[] = INCBIN_U32("graphics/pokemon/chi_yu/back.4bpp.lz"); - const u32 gMonShinyPalette_ChiYu[] = INCBIN_U32("graphics/pokemon/chi_yu/shiny.gbapal.lz"); + const u16 gMonShinyPalette_ChiYu[] = INCBIN_U16("graphics/pokemon/chi_yu/shiny.gbapal"); const u8 gMonIcon_ChiYu[] = INCBIN_U8("graphics/pokemon/chi_yu/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_ChiYu[] = INCBIN_U8("graphics/pokemon/chi_yu/footprint.1bpp"); @@ -26313,17 +26313,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_ChiYu[] = INCBIN_U16("graphics/pokemon/chi_yu/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_ChiYu[] = INCBIN_U16("graphics/pokemon/chi_yu/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_CHI_YU #if P_FAMILY_ROARING_MOON const u32 gMonFrontPic_RoaringMoon[] = INCBIN_U32("graphics/pokemon/roaring_moon/front.4bpp.lz"); - const u32 gMonPalette_RoaringMoon[] = INCBIN_U32("graphics/pokemon/roaring_moon/normal.gbapal.lz"); + const u16 gMonPalette_RoaringMoon[] = INCBIN_U16("graphics/pokemon/roaring_moon/normal.gbapal"); const u32 gMonBackPic_RoaringMoon[] = INCBIN_U32("graphics/pokemon/roaring_moon/back.4bpp.lz"); - const u32 gMonShinyPalette_RoaringMoon[] = INCBIN_U32("graphics/pokemon/roaring_moon/shiny.gbapal.lz"); + const u16 gMonShinyPalette_RoaringMoon[] = INCBIN_U16("graphics/pokemon/roaring_moon/shiny.gbapal"); const u8 gMonIcon_RoaringMoon[] = INCBIN_U8("graphics/pokemon/roaring_moon/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_RoaringMoon[] = INCBIN_U8("graphics/pokemon/roaring_moon/footprint.1bpp"); @@ -26331,17 +26331,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_RoaringMoon[] = INCBIN_U16("graphics/pokemon/roaring_moon/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_RoaringMoon[] = INCBIN_U16("graphics/pokemon/roaring_moon/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_ROARING_MOON #if P_FAMILY_IRON_VALIANT const u32 gMonFrontPic_IronValiant[] = INCBIN_U32("graphics/pokemon/iron_valiant/front.4bpp.lz"); - const u32 gMonPalette_IronValiant[] = INCBIN_U32("graphics/pokemon/iron_valiant/normal.gbapal.lz"); + const u16 gMonPalette_IronValiant[] = INCBIN_U16("graphics/pokemon/iron_valiant/normal.gbapal"); const u32 gMonBackPic_IronValiant[] = INCBIN_U32("graphics/pokemon/iron_valiant/back.4bpp.lz"); - const u32 gMonShinyPalette_IronValiant[] = INCBIN_U32("graphics/pokemon/iron_valiant/shiny.gbapal.lz"); + const u16 gMonShinyPalette_IronValiant[] = INCBIN_U16("graphics/pokemon/iron_valiant/shiny.gbapal"); const u8 gMonIcon_IronValiant[] = INCBIN_U8("graphics/pokemon/iron_valiant/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_IronValiant[] = INCBIN_U8("graphics/pokemon/iron_valiant/footprint.1bpp"); @@ -26349,17 +26349,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_IronValiant[] = INCBIN_U16("graphics/pokemon/iron_valiant/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_IronValiant[] = INCBIN_U16("graphics/pokemon/iron_valiant/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_IRON_VALIANT #if P_FAMILY_KORAIDON const u32 gMonFrontPic_Koraidon[] = INCBIN_U32("graphics/pokemon/koraidon/front.4bpp.lz"); - const u32 gMonPalette_Koraidon[] = INCBIN_U32("graphics/pokemon/koraidon/normal.gbapal.lz"); + const u16 gMonPalette_Koraidon[] = INCBIN_U16("graphics/pokemon/koraidon/normal.gbapal"); const u32 gMonBackPic_Koraidon[] = INCBIN_U32("graphics/pokemon/koraidon/back.4bpp.lz"); - const u32 gMonShinyPalette_Koraidon[] = INCBIN_U32("graphics/pokemon/koraidon/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Koraidon[] = INCBIN_U16("graphics/pokemon/koraidon/shiny.gbapal"); const u8 gMonIcon_Koraidon[] = INCBIN_U8("graphics/pokemon/koraidon/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Koraidon[] = INCBIN_U8("graphics/pokemon/koraidon/footprint.1bpp"); @@ -26367,17 +26367,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Koraidon[] = INCBIN_U16("graphics/pokemon/koraidon/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Koraidon[] = INCBIN_U16("graphics/pokemon/koraidon/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_KORAIDON #if P_FAMILY_MIRAIDON const u32 gMonFrontPic_Miraidon[] = INCBIN_U32("graphics/pokemon/miraidon/front.4bpp.lz"); - const u32 gMonPalette_Miraidon[] = INCBIN_U32("graphics/pokemon/miraidon/normal.gbapal.lz"); + const u16 gMonPalette_Miraidon[] = INCBIN_U16("graphics/pokemon/miraidon/normal.gbapal"); const u32 gMonBackPic_Miraidon[] = INCBIN_U32("graphics/pokemon/miraidon/back.4bpp.lz"); - const u32 gMonShinyPalette_Miraidon[] = INCBIN_U32("graphics/pokemon/miraidon/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Miraidon[] = INCBIN_U16("graphics/pokemon/miraidon/shiny.gbapal"); const u8 gMonIcon_Miraidon[] = INCBIN_U8("graphics/pokemon/miraidon/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Miraidon[] = INCBIN_U8("graphics/pokemon/miraidon/footprint.1bpp"); @@ -26385,17 +26385,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Miraidon[] = INCBIN_U16("graphics/pokemon/miraidon/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Miraidon[] = INCBIN_U16("graphics/pokemon/miraidon/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_MIRAIDON #if P_FAMILY_WALKING_WAKE const u32 gMonFrontPic_WalkingWake[] = INCBIN_U32("graphics/pokemon/walking_wake/front.4bpp.lz"); - const u32 gMonPalette_WalkingWake[] = INCBIN_U32("graphics/pokemon/walking_wake/normal.gbapal.lz"); + const u16 gMonPalette_WalkingWake[] = INCBIN_U16("graphics/pokemon/walking_wake/normal.gbapal"); const u32 gMonBackPic_WalkingWake[] = INCBIN_U32("graphics/pokemon/walking_wake/back.4bpp.lz"); - const u32 gMonShinyPalette_WalkingWake[] = INCBIN_U32("graphics/pokemon/walking_wake/shiny.gbapal.lz"); + const u16 gMonShinyPalette_WalkingWake[] = INCBIN_U16("graphics/pokemon/walking_wake/shiny.gbapal"); const u8 gMonIcon_WalkingWake[] = INCBIN_U8("graphics/pokemon/walking_wake/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_WalkingWake[] = INCBIN_U8("graphics/pokemon/walking_wake/footprint.1bpp"); @@ -26403,17 +26403,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_WalkingWake[] = INCBIN_U16("graphics/pokemon/walking_wake/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_WalkingWake[] = INCBIN_U16("graphics/pokemon/walking_wake/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_WALKING_WAKE #if P_FAMILY_IRON_LEAVES const u32 gMonFrontPic_IronLeaves[] = INCBIN_U32("graphics/pokemon/iron_leaves/front.4bpp.lz"); - const u32 gMonPalette_IronLeaves[] = INCBIN_U32("graphics/pokemon/iron_leaves/normal.gbapal.lz"); + const u16 gMonPalette_IronLeaves[] = INCBIN_U16("graphics/pokemon/iron_leaves/normal.gbapal"); const u32 gMonBackPic_IronLeaves[] = INCBIN_U32("graphics/pokemon/iron_leaves/back.4bpp.lz"); - const u32 gMonShinyPalette_IronLeaves[] = INCBIN_U32("graphics/pokemon/iron_leaves/shiny.gbapal.lz"); + const u16 gMonShinyPalette_IronLeaves[] = INCBIN_U16("graphics/pokemon/iron_leaves/shiny.gbapal"); const u8 gMonIcon_IronLeaves[] = INCBIN_U8("graphics/pokemon/iron_leaves/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_IronLeaves[] = INCBIN_U8("graphics/pokemon/iron_leaves/footprint.1bpp"); @@ -26421,17 +26421,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_IronLeaves[] = INCBIN_U16("graphics/pokemon/iron_leaves/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_IronLeaves[] = INCBIN_U16("graphics/pokemon/iron_leaves/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_IRON_LEAVES #if P_FAMILY_POLTCHAGEIST const u32 gMonFrontPic_Poltchageist[] = INCBIN_U32("graphics/pokemon/poltchageist/front.4bpp.lz"); - const u32 gMonPalette_Poltchageist[] = INCBIN_U32("graphics/pokemon/poltchageist/normal.gbapal.lz"); + const u16 gMonPalette_Poltchageist[] = INCBIN_U16("graphics/pokemon/poltchageist/normal.gbapal"); const u32 gMonBackPic_Poltchageist[] = INCBIN_U32("graphics/pokemon/poltchageist/back.4bpp.lz"); - const u32 gMonShinyPalette_Poltchageist[] = INCBIN_U32("graphics/pokemon/poltchageist/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Poltchageist[] = INCBIN_U16("graphics/pokemon/poltchageist/shiny.gbapal"); const u8 gMonIcon_Poltchageist[] = INCBIN_U8("graphics/pokemon/poltchageist/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Poltchageist[] = INCBIN_U8("graphics/pokemon/poltchageist/footprint.1bpp"); @@ -26439,15 +26439,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Poltchageist[] = INCBIN_U16("graphics/pokemon/poltchageist/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Poltchageist[] = INCBIN_U16("graphics/pokemon/poltchageist/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_Sinistcha[] = INCBIN_U16("graphics/pokemon/sinistcha/normal.gbapal"); const u32 gMonBackPic_Sinistcha[] = INCBIN_U32("graphics/pokemon/sinistcha/back.4bpp.lz"); - const u32 gMonShinyPalette_Sinistcha[] = INCBIN_U32("graphics/pokemon/sinistcha/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Sinistcha[] = INCBIN_U16("graphics/pokemon/sinistcha/shiny.gbapal"); const u8 gMonIcon_Sinistcha[] = INCBIN_U8("graphics/pokemon/sinistcha/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Sinistcha[] = INCBIN_U8("graphics/pokemon/sinistcha/footprint.1bpp"); @@ -26455,17 +26455,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Sinistcha[] = INCBIN_U16("graphics/pokemon/sinistcha/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Sinistcha[] = INCBIN_U16("graphics/pokemon/sinistcha/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_POLTCHAGEIST #if P_FAMILY_OKIDOGI const u32 gMonFrontPic_Okidogi[] = INCBIN_U32("graphics/pokemon/okidogi/front.4bpp.lz"); - const u32 gMonPalette_Okidogi[] = INCBIN_U32("graphics/pokemon/okidogi/normal.gbapal.lz"); + const u16 gMonPalette_Okidogi[] = INCBIN_U16("graphics/pokemon/okidogi/normal.gbapal"); const u32 gMonBackPic_Okidogi[] = INCBIN_U32("graphics/pokemon/okidogi/back.4bpp.lz"); - const u32 gMonShinyPalette_Okidogi[] = INCBIN_U32("graphics/pokemon/okidogi/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Okidogi[] = INCBIN_U16("graphics/pokemon/okidogi/shiny.gbapal"); const u8 gMonIcon_Okidogi[] = INCBIN_U8("graphics/pokemon/okidogi/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Okidogi[] = INCBIN_U8("graphics/pokemon/okidogi/footprint.1bpp"); @@ -26473,17 +26473,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Okidogi[] = INCBIN_U16("graphics/pokemon/okidogi/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Okidogi[] = INCBIN_U16("graphics/pokemon/okidogi/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_OKIDOGI #if P_FAMILY_MUNKIDORI const u32 gMonFrontPic_Munkidori[] = INCBIN_U32("graphics/pokemon/munkidori/front.4bpp.lz"); - const u32 gMonPalette_Munkidori[] = INCBIN_U32("graphics/pokemon/munkidori/normal.gbapal.lz"); + const u16 gMonPalette_Munkidori[] = INCBIN_U16("graphics/pokemon/munkidori/normal.gbapal"); const u32 gMonBackPic_Munkidori[] = INCBIN_U32("graphics/pokemon/munkidori/back.4bpp.lz"); - const u32 gMonShinyPalette_Munkidori[] = INCBIN_U32("graphics/pokemon/munkidori/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Munkidori[] = INCBIN_U16("graphics/pokemon/munkidori/shiny.gbapal"); const u8 gMonIcon_Munkidori[] = INCBIN_U8("graphics/pokemon/munkidori/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Munkidori[] = INCBIN_U8("graphics/pokemon/munkidori/footprint.1bpp"); @@ -26491,17 +26491,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Munkidori[] = INCBIN_U16("graphics/pokemon/munkidori/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Munkidori[] = INCBIN_U16("graphics/pokemon/munkidori/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_MUNKIDORI #if P_FAMILY_FEZANDIPITI const u32 gMonFrontPic_Fezandipiti[] = INCBIN_U32("graphics/pokemon/fezandipiti/front.4bpp.lz"); - const u32 gMonPalette_Fezandipiti[] = INCBIN_U32("graphics/pokemon/fezandipiti/normal.gbapal.lz"); + const u16 gMonPalette_Fezandipiti[] = INCBIN_U16("graphics/pokemon/fezandipiti/normal.gbapal"); const u32 gMonBackPic_Fezandipiti[] = INCBIN_U32("graphics/pokemon/fezandipiti/back.4bpp.lz"); - const u32 gMonShinyPalette_Fezandipiti[] = INCBIN_U32("graphics/pokemon/fezandipiti/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Fezandipiti[] = INCBIN_U16("graphics/pokemon/fezandipiti/shiny.gbapal"); const u8 gMonIcon_Fezandipiti[] = INCBIN_U8("graphics/pokemon/fezandipiti/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Fezandipiti[] = INCBIN_U8("graphics/pokemon/fezandipiti/footprint.1bpp"); @@ -26509,94 +26509,94 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Fezandipiti[] = INCBIN_U16("graphics/pokemon/fezandipiti/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Fezandipiti[] = INCBIN_U16("graphics/pokemon/fezandipiti/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_FEZANDIPITI #if P_FAMILY_OGERPON const u32 gMonFrontPic_OgerponTeal[] = INCBIN_U32("graphics/pokemon/ogerpon/front.4bpp.lz"); - const u32 gMonPalette_OgerponTeal[] = INCBIN_U32("graphics/pokemon/ogerpon/normal.gbapal.lz"); + const u16 gMonPalette_OgerponTeal[] = INCBIN_U16("graphics/pokemon/ogerpon/normal.gbapal"); const u32 gMonBackPic_OgerponTeal[] = INCBIN_U32("graphics/pokemon/ogerpon/back.4bpp.lz"); - const u32 gMonShinyPalette_OgerponTeal[] = INCBIN_U32("graphics/pokemon/ogerpon/shiny.gbapal.lz"); + const u16 gMonShinyPalette_OgerponTeal[] = INCBIN_U16("graphics/pokemon/ogerpon/shiny.gbapal"); const u8 gMonIcon_OgerponTeal[] = INCBIN_U8("graphics/pokemon/ogerpon/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Ogerpon[] = INCBIN_U8("graphics/pokemon/ogerpon/footprint.1bpp"); #endif //P_FOOTPRINTS const u32 gMonFrontPic_OgerponWellspring[] = INCBIN_U32("graphics/pokemon/ogerpon/wellspring/front.4bpp.lz"); - const u32 gMonPalette_OgerponWellspring[] = INCBIN_U32("graphics/pokemon/ogerpon/wellspring/normal.gbapal.lz"); + const u16 gMonPalette_OgerponWellspring[] = INCBIN_U16("graphics/pokemon/ogerpon/wellspring/normal.gbapal"); const u32 gMonBackPic_OgerponWellspring[] = INCBIN_U32("graphics/pokemon/ogerpon/wellspring/back.4bpp.lz"); - const u32 gMonShinyPalette_OgerponWellspring[] = INCBIN_U32("graphics/pokemon/ogerpon/wellspring/shiny.gbapal.lz"); + const u16 gMonShinyPalette_OgerponWellspring[] = INCBIN_U16("graphics/pokemon/ogerpon/wellspring/shiny.gbapal"); const u8 gMonIcon_OgerponWellspring[] = INCBIN_U8("graphics/pokemon/ogerpon/wellspring/icon.4bpp"); const u32 gMonFrontPic_OgerponHearthflame[] = INCBIN_U32("graphics/pokemon/ogerpon/hearthflame/front.4bpp.lz"); - const u32 gMonPalette_OgerponHearthflame[] = INCBIN_U32("graphics/pokemon/ogerpon/hearthflame/normal.gbapal.lz"); + const u16 gMonPalette_OgerponHearthflame[] = INCBIN_U16("graphics/pokemon/ogerpon/hearthflame/normal.gbapal"); const u32 gMonBackPic_OgerponHearthflame[] = INCBIN_U32("graphics/pokemon/ogerpon/hearthflame/back.4bpp.lz"); - const u32 gMonShinyPalette_OgerponHearthflame[] = INCBIN_U32("graphics/pokemon/ogerpon/hearthflame/shiny.gbapal.lz"); + const u16 gMonShinyPalette_OgerponHearthflame[] = INCBIN_U16("graphics/pokemon/ogerpon/hearthflame/shiny.gbapal"); const u8 gMonIcon_OgerponHearthflame[] = INCBIN_U8("graphics/pokemon/ogerpon/hearthflame/icon.4bpp"); const u32 gMonFrontPic_OgerponCornerstone[] = INCBIN_U32("graphics/pokemon/ogerpon/cornerstone/front.4bpp.lz"); - const u32 gMonPalette_OgerponCornerstone[] = INCBIN_U32("graphics/pokemon/ogerpon/cornerstone/normal.gbapal.lz"); + const u16 gMonPalette_OgerponCornerstone[] = INCBIN_U16("graphics/pokemon/ogerpon/cornerstone/normal.gbapal"); const u32 gMonBackPic_OgerponCornerstone[] = INCBIN_U32("graphics/pokemon/ogerpon/cornerstone/back.4bpp.lz"); - const u32 gMonShinyPalette_OgerponCornerstone[] = INCBIN_U32("graphics/pokemon/ogerpon/cornerstone/shiny.gbapal.lz"); + const u16 gMonShinyPalette_OgerponCornerstone[] = INCBIN_U16("graphics/pokemon/ogerpon/cornerstone/shiny.gbapal"); const u8 gMonIcon_OgerponCornerstone[] = INCBIN_U8("graphics/pokemon/ogerpon/cornerstone/icon.4bpp"); const u32 gMonFrontPic_OgerponTealTera[] = INCBIN_U32("graphics/pokemon/ogerpon/teal_tera/front.4bpp.lz"); - const u32 gMonPalette_OgerponTealTera[] = INCBIN_U32("graphics/pokemon/ogerpon/teal_tera/normal.gbapal.lz"); + const u16 gMonPalette_OgerponTealTera[] = INCBIN_U16("graphics/pokemon/ogerpon/teal_tera/normal.gbapal"); const u32 gMonBackPic_OgerponTealTera[] = INCBIN_U32("graphics/pokemon/ogerpon/teal_tera/back.4bpp.lz"); - const u32 gMonShinyPalette_OgerponTealTera[] = INCBIN_U32("graphics/pokemon/ogerpon/teal_tera/shiny.gbapal.lz"); + const u16 gMonShinyPalette_OgerponTealTera[] = INCBIN_U16("graphics/pokemon/ogerpon/teal_tera/shiny.gbapal"); const u32 gMonFrontPic_OgerponWellspringTera[] = INCBIN_U32("graphics/pokemon/ogerpon/wellspring_tera/front.4bpp.lz"); - const u32 gMonPalette_OgerponWellspringTera[] = INCBIN_U32("graphics/pokemon/ogerpon/wellspring_tera/normal.gbapal.lz"); + const u16 gMonPalette_OgerponWellspringTera[] = INCBIN_U16("graphics/pokemon/ogerpon/wellspring_tera/normal.gbapal"); const u32 gMonBackPic_OgerponWellspringTera[] = INCBIN_U32("graphics/pokemon/ogerpon/wellspring_tera/back.4bpp.lz"); - const u32 gMonShinyPalette_OgerponWellspringTera[] = INCBIN_U32("graphics/pokemon/ogerpon/wellspring_tera/shiny.gbapal.lz"); + const u16 gMonShinyPalette_OgerponWellspringTera[] = INCBIN_U16("graphics/pokemon/ogerpon/wellspring_tera/shiny.gbapal"); const u32 gMonFrontPic_OgerponHearthflameTera[] = INCBIN_U32("graphics/pokemon/ogerpon/hearthflame_tera/front.4bpp.lz"); - const u32 gMonPalette_OgerponHearthflameTera[] = INCBIN_U32("graphics/pokemon/ogerpon/hearthflame_tera/normal.gbapal.lz"); + const u16 gMonPalette_OgerponHearthflameTera[] = INCBIN_U16("graphics/pokemon/ogerpon/hearthflame_tera/normal.gbapal"); const u32 gMonBackPic_OgerponHearthflameTera[] = INCBIN_U32("graphics/pokemon/ogerpon/hearthflame_tera/back.4bpp.lz"); - const u32 gMonShinyPalette_OgerponHearthflameTera[] = INCBIN_U32("graphics/pokemon/ogerpon/hearthflame_tera/shiny.gbapal.lz"); + const u16 gMonShinyPalette_OgerponHearthflameTera[] = INCBIN_U16("graphics/pokemon/ogerpon/hearthflame_tera/shiny.gbapal"); const u32 gMonFrontPic_OgerponCornerstoneTera[] = INCBIN_U32("graphics/pokemon/ogerpon/cornerstone_tera/front.4bpp.lz"); - const u32 gMonPalette_OgerponCornerstoneTera[] = INCBIN_U32("graphics/pokemon/ogerpon/cornerstone_tera/normal.gbapal.lz"); + const u16 gMonPalette_OgerponCornerstoneTera[] = INCBIN_U16("graphics/pokemon/ogerpon/cornerstone_tera/normal.gbapal"); const u32 gMonBackPic_OgerponCornerstoneTera[] = INCBIN_U32("graphics/pokemon/ogerpon/cornerstone_tera/back.4bpp.lz"); - const u32 gMonShinyPalette_OgerponCornerstoneTera[] = INCBIN_U32("graphics/pokemon/ogerpon/cornerstone_tera/shiny.gbapal.lz"); + const u16 gMonShinyPalette_OgerponCornerstoneTera[] = INCBIN_U16("graphics/pokemon/ogerpon/cornerstone_tera/shiny.gbapal"); #if OW_POKEMON_OBJECT_EVENTS const u32 gObjectEventPic_OgerponTeal[] = INCBIN_COMP("graphics/pokemon/ogerpon/overworld.4bpp"); const u32 gObjectEventPic_OgerponWellspring[] = INCBIN_COMP("graphics/pokemon/ogerpon/wellspring/overworld.4bpp"); const u32 gObjectEventPic_OgerponHearthflame[] = INCBIN_COMP("graphics/pokemon/ogerpon/hearthflame/overworld.4bpp"); const u32 gObjectEventPic_OgerponCornerstone[] = INCBIN_COMP("graphics/pokemon/ogerpon/cornerstone/overworld.4bpp"); - const u32 gOverworldPalette_OgerponWellspring[] = INCBIN_U32("graphics/pokemon/ogerpon/wellspring/overworld_normal.gbapal.lz"); - const u32 gShinyOverworldPalette_OgerponWellspring[] = INCBIN_U32("graphics/pokemon/ogerpon/wellspring/overworld_shiny.gbapal.lz"); - const u32 gOverworldPalette_OgerponHearthflame[] = INCBIN_U32("graphics/pokemon/ogerpon/hearthflame/overworld_normal.gbapal.lz"); - const u32 gShinyOverworldPalette_OgerponHearthflame[] = INCBIN_U32("graphics/pokemon/ogerpon/hearthflame/overworld_shiny.gbapal.lz"); - const u32 gOverworldPalette_OgerponCornerstone[] = INCBIN_U32("graphics/pokemon/ogerpon/cornerstone/overworld_normal.gbapal.lz"); - const u32 gShinyOverworldPalette_OgerponCornerstone[] = INCBIN_U32("graphics/pokemon/ogerpon/cornerstone/overworld_shiny.gbapal.lz"); - const u32 gOverworldPalette_OgerponTeal[] = INCBIN_U32("graphics/pokemon/ogerpon/overworld_normal.gbapal.lz"); - const u32 gShinyOverworldPalette_OgerponTeal[] = INCBIN_U32("graphics/pokemon/ogerpon/overworld_shiny.gbapal.lz"); + const u16 gOverworldPalette_OgerponWellspring[] = INCBIN_U16("graphics/pokemon/ogerpon/wellspring/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_OgerponWellspring[] = INCBIN_U16("graphics/pokemon/ogerpon/wellspring/overworld_shiny.gbapal"); + const u16 gOverworldPalette_OgerponHearthflame[] = INCBIN_U16("graphics/pokemon/ogerpon/hearthflame/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_OgerponHearthflame[] = INCBIN_U16("graphics/pokemon/ogerpon/hearthflame/overworld_shiny.gbapal"); + const u16 gOverworldPalette_OgerponCornerstone[] = INCBIN_U16("graphics/pokemon/ogerpon/cornerstone/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_OgerponCornerstone[] = INCBIN_U16("graphics/pokemon/ogerpon/cornerstone/overworld_shiny.gbapal"); + const u16 gOverworldPalette_OgerponTeal[] = INCBIN_U16("graphics/pokemon/ogerpon/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_OgerponTeal[] = INCBIN_U16("graphics/pokemon/ogerpon/overworld_shiny.gbapal"); const u32 gObjectEventPic_OgerponTealTera[] = INCBIN_COMP("graphics/pokemon/ogerpon/overworld.4bpp"); const u32 gObjectEventPic_OgerponWellspringTera[] = INCBIN_COMP("graphics/pokemon/ogerpon/wellspring/overworld.4bpp"); const u32 gObjectEventPic_OgerponHearthflameTera[] = INCBIN_COMP("graphics/pokemon/ogerpon/hearthflame/overworld.4bpp"); const u32 gObjectEventPic_OgerponCornerstoneTera[] = INCBIN_COMP("graphics/pokemon/ogerpon/cornerstone/overworld.4bpp"); - const u32 gOverworldPalette_OgerponWellspringTera[] = INCBIN_U32("graphics/pokemon/ogerpon/wellspring/overworld_normal.gbapal.lz"); - const u32 gShinyOverworldPalette_OgerponWellspringTera[] = INCBIN_U32("graphics/pokemon/ogerpon/wellspring/overworld_shiny.gbapal.lz"); - const u32 gOverworldPalette_OgerponHearthflameTera[] = INCBIN_U32("graphics/pokemon/ogerpon/hearthflame/overworld_normal.gbapal.lz"); - const u32 gShinyOverworldPalette_OgerponHearthflameTera[] = INCBIN_U32("graphics/pokemon/ogerpon/hearthflame/overworld_shiny.gbapal.lz"); - const u32 gOverworldPalette_OgerponCornerstoneTera[] = INCBIN_U32("graphics/pokemon/ogerpon/cornerstone/overworld_normal.gbapal.lz"); - const u32 gShinyOverworldPalette_OgerponCornerstoneTera[] = INCBIN_U32("graphics/pokemon/ogerpon/cornerstone/overworld_shiny.gbapal.lz"); - const u32 gOverworldPalette_OgerponTealTera[] = INCBIN_U32("graphics/pokemon/ogerpon/overworld_normal.gbapal.lz"); - const u32 gShinyOverworldPalette_OgerponTealTera[] = INCBIN_U32("graphics/pokemon/ogerpon/overworld_shiny.gbapal.lz"); + const u16 gOverworldPalette_OgerponWellspringTera[] = INCBIN_U16("graphics/pokemon/ogerpon/wellspring/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_OgerponWellspringTera[] = INCBIN_U16("graphics/pokemon/ogerpon/wellspring/overworld_shiny.gbapal"); + const u16 gOverworldPalette_OgerponHearthflameTera[] = INCBIN_U16("graphics/pokemon/ogerpon/hearthflame/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_OgerponHearthflameTera[] = INCBIN_U16("graphics/pokemon/ogerpon/hearthflame/overworld_shiny.gbapal"); + const u16 gOverworldPalette_OgerponCornerstoneTera[] = INCBIN_U16("graphics/pokemon/ogerpon/cornerstone/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_OgerponCornerstoneTera[] = INCBIN_U16("graphics/pokemon/ogerpon/cornerstone/overworld_shiny.gbapal"); + const u16 gOverworldPalette_OgerponTealTera[] = INCBIN_U16("graphics/pokemon/ogerpon/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_OgerponTealTera[] = INCBIN_U16("graphics/pokemon/ogerpon/overworld_shiny.gbapal"); #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_OGERPON #if P_FAMILY_GOUGING_FIRE const u32 gMonFrontPic_GougingFire[] = INCBIN_U32("graphics/pokemon/gouging_fire/front.4bpp.lz"); - const u32 gMonPalette_GougingFire[] = INCBIN_U32("graphics/pokemon/gouging_fire/normal.gbapal.lz"); + const u16 gMonPalette_GougingFire[] = INCBIN_U16("graphics/pokemon/gouging_fire/normal.gbapal"); const u32 gMonBackPic_GougingFire[] = INCBIN_U32("graphics/pokemon/gouging_fire/back.4bpp.lz"); - const u32 gMonShinyPalette_GougingFire[] = INCBIN_U32("graphics/pokemon/gouging_fire/shiny.gbapal.lz"); + const u16 gMonShinyPalette_GougingFire[] = INCBIN_U16("graphics/pokemon/gouging_fire/shiny.gbapal"); const u8 gMonIcon_GougingFire[] = INCBIN_U8("graphics/pokemon/gouging_fire/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_GougingFire[] = INCBIN_U8("graphics/pokemon/gouging_fire/footprint.1bpp"); @@ -26604,17 +26604,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_GougingFire[] = INCBIN_U16("graphics/pokemon/gouging_fire/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_GougingFire[] = INCBIN_U16("graphics/pokemon/gouging_fire/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_GOUGING_FIRE #if P_FAMILY_RAGING_BOLT const u32 gMonFrontPic_RagingBolt[] = INCBIN_U32("graphics/pokemon/raging_bolt/front.4bpp.lz"); - const u32 gMonPalette_RagingBolt[] = INCBIN_U32("graphics/pokemon/raging_bolt/normal.gbapal.lz"); + const u16 gMonPalette_RagingBolt[] = INCBIN_U16("graphics/pokemon/raging_bolt/normal.gbapal"); const u32 gMonBackPic_RagingBolt[] = INCBIN_U32("graphics/pokemon/raging_bolt/back.4bpp.lz"); - const u32 gMonShinyPalette_RagingBolt[] = INCBIN_U32("graphics/pokemon/raging_bolt/shiny.gbapal.lz"); + const u16 gMonShinyPalette_RagingBolt[] = INCBIN_U16("graphics/pokemon/raging_bolt/shiny.gbapal"); const u8 gMonIcon_RagingBolt[] = INCBIN_U8("graphics/pokemon/raging_bolt/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_RagingBolt[] = INCBIN_U8("graphics/pokemon/raging_bolt/footprint.1bpp"); @@ -26622,17 +26622,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_RagingBolt[] = INCBIN_U16("graphics/pokemon/raging_bolt/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_RagingBolt[] = INCBIN_U16("graphics/pokemon/raging_bolt/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_RAGING_BOLT #if P_FAMILY_IRON_BOULDER const u32 gMonFrontPic_IronBoulder[] = INCBIN_U32("graphics/pokemon/iron_boulder/front.4bpp.lz"); - const u32 gMonPalette_IronBoulder[] = INCBIN_U32("graphics/pokemon/iron_boulder/normal.gbapal.lz"); + const u16 gMonPalette_IronBoulder[] = INCBIN_U16("graphics/pokemon/iron_boulder/normal.gbapal"); const u32 gMonBackPic_IronBoulder[] = INCBIN_U32("graphics/pokemon/iron_boulder/back.4bpp.lz"); - const u32 gMonShinyPalette_IronBoulder[] = INCBIN_U32("graphics/pokemon/iron_boulder/shiny.gbapal.lz"); + const u16 gMonShinyPalette_IronBoulder[] = INCBIN_U16("graphics/pokemon/iron_boulder/shiny.gbapal"); const u8 gMonIcon_IronBoulder[] = INCBIN_U8("graphics/pokemon/iron_boulder/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_IronBoulder[] = INCBIN_U8("graphics/pokemon/iron_boulder/footprint.1bpp"); @@ -26640,17 +26640,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_IronBoulder[] = INCBIN_U16("graphics/pokemon/iron_boulder/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_IronBoulder[] = INCBIN_U16("graphics/pokemon/iron_boulder/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_IRON_BOULDER #if P_FAMILY_IRON_CROWN const u32 gMonFrontPic_IronCrown[] = INCBIN_U32("graphics/pokemon/iron_crown/front.4bpp.lz"); - const u32 gMonPalette_IronCrown[] = INCBIN_U32("graphics/pokemon/iron_crown/normal.gbapal.lz"); + const u16 gMonPalette_IronCrown[] = INCBIN_U16("graphics/pokemon/iron_crown/normal.gbapal"); const u32 gMonBackPic_IronCrown[] = INCBIN_U32("graphics/pokemon/iron_crown/back.4bpp.lz"); - const u32 gMonShinyPalette_IronCrown[] = INCBIN_U32("graphics/pokemon/iron_crown/shiny.gbapal.lz"); + const u16 gMonShinyPalette_IronCrown[] = INCBIN_U16("graphics/pokemon/iron_crown/shiny.gbapal"); const u8 gMonIcon_IronCrown[] = INCBIN_U8("graphics/pokemon/iron_crown/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_IronCrown[] = INCBIN_U8("graphics/pokemon/iron_crown/footprint.1bpp"); @@ -26658,17 +26658,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_IronCrown[] = INCBIN_U16("graphics/pokemon/iron_crown/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_IronCrown[] = INCBIN_U16("graphics/pokemon/iron_crown/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_IRON_CROWN #if P_FAMILY_TERAPAGOS const u32 gMonFrontPic_TerapagosNormal[] = INCBIN_U32("graphics/pokemon/terapagos/front.4bpp.lz"); - const u32 gMonPalette_TerapagosNormal[] = INCBIN_U32("graphics/pokemon/terapagos/normal.gbapal.lz"); + const u16 gMonPalette_TerapagosNormal[] = INCBIN_U16("graphics/pokemon/terapagos/normal.gbapal"); const u32 gMonBackPic_TerapagosNormal[] = INCBIN_U32("graphics/pokemon/terapagos/back.4bpp.lz"); - const u32 gMonShinyPalette_TerapagosNormal[] = INCBIN_U32("graphics/pokemon/terapagos/shiny.gbapal.lz"); + const u16 gMonShinyPalette_TerapagosNormal[] = INCBIN_U16("graphics/pokemon/terapagos/shiny.gbapal"); const u8 gMonIcon_TerapagosNormal[] = INCBIN_U8("graphics/pokemon/terapagos/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_TerapagosNormal[] = INCBIN_U8("graphics/pokemon/terapagos/footprint.1bpp"); @@ -26676,15 +26676,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_TerapagosNormal[] = INCBIN_U16("graphics/pokemon/terapagos/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_TerapagosNormal[] = INCBIN_U16("graphics/pokemon/terapagos/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_TerapagosTerastal[] = INCBIN_U32("graphics/pokemon/terapagos/terastal/front.4bpp.lz"); - const u32 gMonPalette_TerapagosTerastal[] = INCBIN_U32("graphics/pokemon/terapagos/terastal/normal.gbapal.lz"); + const u16 gMonPalette_TerapagosTerastal[] = INCBIN_U16("graphics/pokemon/terapagos/terastal/normal.gbapal"); const u32 gMonBackPic_TerapagosTerastal[] = INCBIN_U32("graphics/pokemon/terapagos/terastal/back.4bpp.lz"); - const u32 gMonShinyPalette_TerapagosTerastal[] = INCBIN_U32("graphics/pokemon/terapagos/terastal/shiny.gbapal.lz"); + const u16 gMonShinyPalette_TerapagosTerastal[] = INCBIN_U16("graphics/pokemon/terapagos/terastal/shiny.gbapal"); const u8 gMonIcon_TerapagosTerastal[] = INCBIN_U8("graphics/pokemon/terapagos/terastal/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_TerapagosTerastal[] = INCBIN_U8("graphics/pokemon/terapagos/terastal/footprint.1bpp"); @@ -26692,15 +26692,15 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_TerapagosTerastal[] = INCBIN_U16("graphics/pokemon/terapagos/terastal/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_TerapagosTerastal[] = INCBIN_U16("graphics/pokemon/terapagos/terastal/overworld_shiny.gbapal"); #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"); + const u16 gMonPalette_TerapagosStellar[] = INCBIN_U16("graphics/pokemon/terapagos/stellar/normal.gbapal"); const u32 gMonBackPic_TerapagosStellar[] = INCBIN_U32("graphics/pokemon/terapagos/stellar/back.4bpp.lz"); - const u32 gMonShinyPalette_TerapagosStellar[] = INCBIN_U32("graphics/pokemon/terapagos/stellar/shiny.gbapal.lz"); + const u16 gMonShinyPalette_TerapagosStellar[] = INCBIN_U16("graphics/pokemon/terapagos/stellar/shiny.gbapal"); const u8 gMonIcon_TerapagosStellar[] = INCBIN_U8("graphics/pokemon/terapagos/stellar/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_TerapagosStellar[] = INCBIN_U8("graphics/pokemon/terapagos/stellar/footprint.1bpp"); @@ -26708,17 +26708,17 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); +// const u16 gOverworldPalette_TerapagosStellar[] = INCBIN_U16("graphics/pokemon/terapagos/stellar/overworld_normal.gbapal"); +// const u16 gShinyOverworldPalette_TerapagosStellar[] = INCBIN_U16("graphics/pokemon/terapagos/stellar/overworld_shiny.gbapal"); #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_TERAPAGOS #if P_FAMILY_PECHARUNT const u32 gMonFrontPic_Pecharunt[] = INCBIN_U32("graphics/pokemon/pecharunt/front.4bpp.lz"); - const u32 gMonPalette_Pecharunt[] = INCBIN_U32("graphics/pokemon/pecharunt/normal.gbapal.lz"); + const u16 gMonPalette_Pecharunt[] = INCBIN_U16("graphics/pokemon/pecharunt/normal.gbapal"); const u32 gMonBackPic_Pecharunt[] = INCBIN_U32("graphics/pokemon/pecharunt/back.4bpp.lz"); - const u32 gMonShinyPalette_Pecharunt[] = INCBIN_U32("graphics/pokemon/pecharunt/shiny.gbapal.lz"); + const u16 gMonShinyPalette_Pecharunt[] = INCBIN_U16("graphics/pokemon/pecharunt/shiny.gbapal"); const u8 gMonIcon_Pecharunt[] = INCBIN_U8("graphics/pokemon/pecharunt/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Pecharunt[] = INCBIN_U8("graphics/pokemon/pecharunt/footprint.1bpp"); @@ -26726,12 +26726,12 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #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"); + const u16 gOverworldPalette_Pecharunt[] = INCBIN_U16("graphics/pokemon/pecharunt/overworld_normal.gbapal"); + const u16 gShinyOverworldPalette_Pecharunt[] = INCBIN_U16("graphics/pokemon/pecharunt/overworld_shiny.gbapal"); #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 u16 gMonPalette_Egg[] = INCBIN_U16("graphics/pokemon/egg/normal.gbapal"); const u8 gMonIcon_Egg[] = INCBIN_U8("graphics/pokemon/egg/icon.4bpp"); diff --git a/src/data/graphics/rayquaza_scene.h b/src/data/graphics/rayquaza_scene.h index e999e947fb..6580c0bb57 100644 --- a/src/data/graphics/rayquaza_scene.h +++ b/src/data/graphics/rayquaza_scene.h @@ -5,19 +5,19 @@ const u32 gRaySceneDuoFight_GroudonClaw_Gfx[] = INCBIN_U32("graphics/rayqu const u32 gRaySceneDuoFight_Kyogre_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_1/kyogre.4bpp.lz"); const u32 gRaySceneDuoFight_KyogrePectoralFin_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_1/kyogre_pectoral_fin.4bpp.lz"); const u32 gRaySceneDuoFight_KyogreDorsalFin_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_1/kyogre_dorsal_fin.4bpp.lz"); -const u32 gRaySceneDuoFight_Groudon_Pal[] = INCBIN_U32("graphics/rayquaza_scene/scene_1/groudon.gbapal.lz"); -const u32 gRaySceneDuoFight_Kyogre_Pal[] = INCBIN_U32("graphics/rayquaza_scene/scene_1/kyogre.gbapal.lz"); +const u16 gRaySceneDuoFight_Groudon_Pal[] = INCBIN_U16("graphics/rayquaza_scene/scene_1/groudon.gbapal"); +const u16 gRaySceneDuoFight_Kyogre_Pal[] = INCBIN_U16("graphics/rayquaza_scene/scene_1/kyogre.gbapal"); const u32 gRaySceneDuoFight_Clouds_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_1/clouds.4bpp.lz"); -const u32 gRaySceneDuoFight_Clouds_Pal[] = INCBIN_U32("graphics/rayquaza_scene/scene_1/clouds.gbapal.lz"); // pal 1 clouds, pal 2 rain +const u16 gRaySceneDuoFight_Clouds_Pal[] = INCBIN_U16("graphics/rayquaza_scene/scene_1/clouds.gbapal"); // pal 1 clouds, pal 2 rain const u32 gRaySceneDuoFight_Clouds1_Tilemap[] = INCBIN_U32("graphics/rayquaza_scene/scene_1/clouds1.bin.lz"); const u32 gRaySceneDuoFight_Clouds2_Tilemap[] = INCBIN_U32("graphics/rayquaza_scene/scene_1/clouds2.bin.lz"); const u32 gRaySceneDuoFight_Clouds3_Tilemap[] = INCBIN_U32("graphics/rayquaza_scene/scene_1/clouds3.bin.lz"); // Scene 2 (RAY_ANIM_TAKES_FLIGHT) const u32 gRaySceneTakesFlight_Smoke_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_2/smoke.4bpp.lz"); -const u32 gRaySceneTakesFlight_Smoke_Pal[] = INCBIN_U32("graphics/rayquaza_scene/scene_2/smoke.gbapal.lz"); +const u16 gRaySceneTakesFlight_Smoke_Pal[] = INCBIN_U16("graphics/rayquaza_scene/scene_2/smoke.gbapal"); const u32 gRaySceneTakesFlight_Rayquaza_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_2/rayquaza.8bpp.lz"); -const u32 gRaySceneTakesFlight_Rayquaza_Pal[] = INCBIN_U32("graphics/rayquaza_scene/scene_2/rayquaza.gbapal.lz"); +const u16 gRaySceneTakesFlight_Rayquaza_Pal[] = INCBIN_U16("graphics/rayquaza_scene/scene_2/rayquaza.gbapal"); const u32 gRaySceneTakesFlight_Rayquaza_Tilemap[] = INCBIN_U32("graphics/rayquaza_scene/scene_2/rayquaza.bin.lz"); const u32 gRaySceneTakesFlight_Bg_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_2/bg.4bpp.lz"); // uses pal 2 of gRaySceneTakesFlight_Rayquaza_Pal const u32 gRaySceneTakesFlight_Bg_Tilemap[] = INCBIN_U32("graphics/rayquaza_scene/scene_2/bg.bin.lz"); @@ -27,7 +27,7 @@ const u32 gRaySceneDescends_Rayquaza_Gfx[] = INCBIN_U32("graphics/rayquaza_s const u32 gRaySceneDescends_RayquazaTail_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_3/rayquaza_tail.4bpp.lz"); const u32 gRaySceneDescends_Bg_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_3/bg.4bpp.lz"); const u32 gRaySceneDescends_Light_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_3/light.4bpp.lz"); // uses pal 2 of gRaySceneDescends_Bg_Pal -const u32 gRaySceneDescends_Bg_Pal[] = INCBIN_U32("graphics/rayquaza_scene/scene_3/bg.gbapal.lz"); +const u16 gRaySceneDescends_Bg_Pal[] = INCBIN_U16("graphics/rayquaza_scene/scene_3/bg.gbapal"); const u32 gRaySceneDescends_Bg_Tilemap[] = INCBIN_U32("graphics/rayquaza_scene/scene_3/bg.bin.lz"); const u32 gRaySceneDescends_Light_Tilemap[] = INCBIN_U32("graphics/rayquaza_scene/scene_3/light.bin.lz"); @@ -39,7 +39,7 @@ const u32 gRaySceneCharges_Streaks_Tilemap[] = INCBIN_U32("graphics/rayquaza_sc const u32 gRaySceneCharges_Rayquaza_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_4/rayquaza.4bpp.lz"); const u32 gRaySceneCharges_Rayquaza_Tilemap[] = INCBIN_U32("graphics/rayquaza_scene/scene_4/rayquaza.bin.lz"); const u32 gRaySceneCharges_Orbs_Tilemap[] = INCBIN_U32("graphics/rayquaza_scene/scene_4/orbs.bin.lz"); -const u32 gRaySceneCharges_Bg_Pal[] = INCBIN_U32("graphics/rayquaza_scene/scene_4/bg.gbapal.lz"); +const u16 gRaySceneCharges_Bg_Pal[] = INCBIN_U16("graphics/rayquaza_scene/scene_4/bg.gbapal"); // Scene 5 (RAY_ANIM_CHASES_AWAY) const u32 gRaySceneChasesAway_Groudon_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_5/groudon.4bpp.lz"); @@ -48,13 +48,13 @@ const u32 gRaySceneChasesAway_Kyogre_Gfx[] = INCBIN_U32("graphics/rayquaza const u32 gRaySceneChasesAway_Rayquaza_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_5/rayquaza.4bpp.lz"); const u32 gRaySceneChasesAway_RayquazaTail_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_5/rayquaza_tail.4bpp.lz"); const u32 gRaySceneChasesAway_KyogreSplash_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_5/kyogre_splash.4bpp.lz"); -const u32 gRaySceneChasesAway_Groudon_Pal[] = INCBIN_U32("graphics/rayquaza_scene/scene_5/groudon.gbapal.lz"); -const u32 gRaySceneChasesAway_Kyogre_Pal[] = INCBIN_U32("graphics/rayquaza_scene/scene_5/kyogre.gbapal.lz"); -const u32 gRaySceneChasesAway_Rayquaza_Pal[] = INCBIN_U32("graphics/rayquaza_scene/scene_5/rayquaza.gbapal.lz"); -const u32 gRaySceneChasesAway_KyogreSplash_Pal[] = INCBIN_U32("graphics/rayquaza_scene/scene_5/kyogre_splash.gbapal.lz"); +const u16 gRaySceneChasesAway_Groudon_Pal[] = INCBIN_U16("graphics/rayquaza_scene/scene_5/groudon.gbapal"); +const u16 gRaySceneChasesAway_Kyogre_Pal[] = INCBIN_U16("graphics/rayquaza_scene/scene_5/kyogre.gbapal"); +const u16 gRaySceneChasesAway_Rayquaza_Pal[] = INCBIN_U16("graphics/rayquaza_scene/scene_5/rayquaza.gbapal"); +const u16 gRaySceneChasesAway_KyogreSplash_Pal[] = INCBIN_U16("graphics/rayquaza_scene/scene_5/kyogre_splash.gbapal"); const u32 gRaySceneChasesAway_Light_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_5/light.4bpp.lz"); const u32 gRaySceneChasesAway_Ring_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_5/ring.8bpp.lz"); const u32 gRaySceneChasesAway_Light_Tilemap[] = INCBIN_U32("graphics/rayquaza_scene/scene_5/light.bin.lz"); const u32 gRaySceneChasesAway_Bg_Tilemap[] = INCBIN_U32("graphics/rayquaza_scene/scene_5/bg.bin.lz"); const u32 gRaySceneChasesAway_Ring_Tilemap[] = INCBIN_U32("graphics/rayquaza_scene/scene_5/ring.bin.lz"); -const u32 gRaySceneChasesAway_Bg_Pal[] = INCBIN_U32("graphics/rayquaza_scene/scene_5/bg.gbapal.lz"); +const u16 gRaySceneChasesAway_Bg_Pal[] = INCBIN_U16("graphics/rayquaza_scene/scene_5/bg.gbapal"); diff --git a/src/data/graphics/trainers.h b/src/data/graphics/trainers.h index 613e5fcb14..bfc3283ad3 100644 --- a/src/data/graphics/trainers.h +++ b/src/data/graphics/trainers.h @@ -2,283 +2,283 @@ #include "data.h" const u32 gTrainerFrontPic_Hiker[] = INCBIN_U32("graphics/trainers/front_pics/hiker.4bpp.lz"); -const u32 gTrainerPalette_Hiker[] = INCBIN_U32("graphics/trainers/front_pics/hiker.gbapal.lz"); +const u16 gTrainerPalette_Hiker[] = INCBIN_U16("graphics/trainers/front_pics/hiker.gbapal"); const u32 gTrainerFrontPic_AquaGruntM[] = INCBIN_U32("graphics/trainers/front_pics/aqua_grunt_m.4bpp.lz"); -const u32 gTrainerPalette_AquaGruntM[] = INCBIN_U32("graphics/trainers/front_pics/aqua_grunt_m.gbapal.lz"); +const u16 gTrainerPalette_AquaGruntM[] = INCBIN_U16("graphics/trainers/front_pics/aqua_grunt_m.gbapal"); const u32 gTrainerFrontPic_PokemonBreederF[] = INCBIN_U32("graphics/trainers/front_pics/pokemon_breeder_f.4bpp.lz"); -const u32 gTrainerPalette_PokemonBreederF[] = INCBIN_U32("graphics/trainers/front_pics/pokemon_breeder_f.gbapal.lz"); +const u16 gTrainerPalette_PokemonBreederF[] = INCBIN_U16("graphics/trainers/front_pics/pokemon_breeder_f.gbapal"); const u32 gTrainerFrontPic_CoolTrainerM[] = INCBIN_U32("graphics/trainers/front_pics/cooltrainer_m.4bpp.lz"); -const u32 gTrainerPalette_CoolTrainerM[] = INCBIN_U32("graphics/trainers/front_pics/cooltrainer_m.gbapal.lz"); +const u16 gTrainerPalette_CoolTrainerM[] = INCBIN_U16("graphics/trainers/front_pics/cooltrainer_m.gbapal"); const u32 gTrainerFrontPic_BirdKeeper[] = INCBIN_U32("graphics/trainers/front_pics/bird_keeper.4bpp.lz"); -const u32 gTrainerPalette_BirdKeeper[] = INCBIN_U32("graphics/trainers/front_pics/bird_keeper.gbapal.lz"); +const u16 gTrainerPalette_BirdKeeper[] = INCBIN_U16("graphics/trainers/front_pics/bird_keeper.gbapal"); const u32 gTrainerFrontPic_Collector[] = INCBIN_U32("graphics/trainers/front_pics/collector.4bpp.lz"); -const u32 gTrainerPalette_Collector[] = INCBIN_U32("graphics/trainers/front_pics/collector.gbapal.lz"); +const u16 gTrainerPalette_Collector[] = INCBIN_U16("graphics/trainers/front_pics/collector.gbapal"); const u32 gTrainerFrontPic_AquaGruntF[] = INCBIN_U32("graphics/trainers/front_pics/aqua_grunt_f.4bpp.lz"); -const u32 gTrainerPalette_AquaGruntF[] = INCBIN_U32("graphics/trainers/front_pics/aqua_grunt_f.gbapal.lz"); +const u16 gTrainerPalette_AquaGruntF[] = INCBIN_U16("graphics/trainers/front_pics/aqua_grunt_f.gbapal"); const u32 gTrainerFrontPic_SwimmerM[] = INCBIN_U32("graphics/trainers/front_pics/swimmer_m.4bpp.lz"); -const u32 gTrainerPalette_SwimmerM[] = INCBIN_U32("graphics/trainers/front_pics/swimmer_m.gbapal.lz"); +const u16 gTrainerPalette_SwimmerM[] = INCBIN_U16("graphics/trainers/front_pics/swimmer_m.gbapal"); const u32 gTrainerFrontPic_MagmaGruntM[] = INCBIN_U32("graphics/trainers/front_pics/magma_grunt_m.4bpp.lz"); -const u32 gTrainerPalette_MagmaGruntM[] = INCBIN_U32("graphics/trainers/front_pics/magma_grunt_m.gbapal.lz"); +const u16 gTrainerPalette_MagmaGruntM[] = INCBIN_U16("graphics/trainers/front_pics/magma_grunt_m.gbapal"); const u32 gTrainerFrontPic_ExpertM[] = INCBIN_U32("graphics/trainers/front_pics/expert_m.4bpp.lz"); -const u32 gTrainerPalette_ExpertM[] = INCBIN_U32("graphics/trainers/front_pics/expert_m.gbapal.lz"); +const u16 gTrainerPalette_ExpertM[] = INCBIN_U16("graphics/trainers/front_pics/expert_m.gbapal"); const u32 gTrainerFrontPic_AquaAdminM[] = INCBIN_U32("graphics/trainers/front_pics/aqua_admin_m.4bpp.lz"); -const u32 gTrainerPalette_AquaAdminM[] = INCBIN_U32("graphics/trainers/front_pics/aqua_admin_m.gbapal.lz"); +const u16 gTrainerPalette_AquaAdminM[] = INCBIN_U16("graphics/trainers/front_pics/aqua_admin_m.gbapal"); const u32 gTrainerFrontPic_BlackBelt[] = INCBIN_U32("graphics/trainers/front_pics/black_belt.4bpp.lz"); -const u32 gTrainerPalette_BlackBelt[] = INCBIN_U32("graphics/trainers/front_pics/black_belt.gbapal.lz"); +const u16 gTrainerPalette_BlackBelt[] = INCBIN_U16("graphics/trainers/front_pics/black_belt.gbapal"); const u32 gTrainerFrontPic_AquaAdminF[] = INCBIN_U32("graphics/trainers/front_pics/aqua_admin_f.4bpp.lz"); -const u32 gTrainerPalette_AquaAdminF[] = INCBIN_U32("graphics/trainers/front_pics/aqua_admin_f.gbapal.lz"); +const u16 gTrainerPalette_AquaAdminF[] = INCBIN_U16("graphics/trainers/front_pics/aqua_admin_f.gbapal"); const u32 gTrainerFrontPic_AquaLeaderArchie[] = INCBIN_U32("graphics/trainers/front_pics/aqua_leader_archie.4bpp.lz"); -const u32 gTrainerPalette_AquaLeaderArchie[] = INCBIN_U32("graphics/trainers/front_pics/aqua_leader_archie.gbapal.lz"); +const u16 gTrainerPalette_AquaLeaderArchie[] = INCBIN_U16("graphics/trainers/front_pics/aqua_leader_archie.gbapal"); const u32 gTrainerFrontPic_HexManiac[] = INCBIN_U32("graphics/trainers/front_pics/hex_maniac.4bpp.lz"); -const u32 gTrainerPalette_HexManiac[] = INCBIN_U32("graphics/trainers/front_pics/hex_maniac.gbapal.lz"); +const u16 gTrainerPalette_HexManiac[] = INCBIN_U16("graphics/trainers/front_pics/hex_maniac.gbapal"); const u32 gTrainerFrontPic_AromaLady[] = INCBIN_U32("graphics/trainers/front_pics/aroma_lady.4bpp.lz"); -const u32 gTrainerPalette_AromaLady[] = INCBIN_U32("graphics/trainers/front_pics/aroma_lady.gbapal.lz"); +const u16 gTrainerPalette_AromaLady[] = INCBIN_U16("graphics/trainers/front_pics/aroma_lady.gbapal"); const u32 gTrainerFrontPic_RuinManiac[] = INCBIN_U32("graphics/trainers/front_pics/ruin_maniac.4bpp.lz"); -const u32 gTrainerPalette_RuinManiac[] = INCBIN_U32("graphics/trainers/front_pics/ruin_maniac.gbapal.lz"); +const u16 gTrainerPalette_RuinManiac[] = INCBIN_U16("graphics/trainers/front_pics/ruin_maniac.gbapal"); const u32 gTrainerFrontPic_Interviewer[] = INCBIN_U32("graphics/trainers/front_pics/interviewer.4bpp.lz"); -const u32 gTrainerPalette_Interviewer[] = INCBIN_U32("graphics/trainers/front_pics/interviewer.gbapal.lz"); +const u16 gTrainerPalette_Interviewer[] = INCBIN_U16("graphics/trainers/front_pics/interviewer.gbapal"); const u32 gTrainerFrontPic_TuberF[] = INCBIN_U32("graphics/trainers/front_pics/tuber_f.4bpp.lz"); -const u32 gTrainerPalette_TuberF[] = INCBIN_U32("graphics/trainers/front_pics/tuber_f.gbapal.lz"); +const u16 gTrainerPalette_TuberF[] = INCBIN_U16("graphics/trainers/front_pics/tuber_f.gbapal"); const u32 gTrainerFrontPic_TuberM[] = INCBIN_U32("graphics/trainers/front_pics/tuber_m.4bpp.lz"); -const u32 gTrainerPalette_TuberM[] = INCBIN_U32("graphics/trainers/front_pics/tuber_m.gbapal.lz"); +const u16 gTrainerPalette_TuberM[] = INCBIN_U16("graphics/trainers/front_pics/tuber_m.gbapal"); const u32 gTrainerFrontPic_CoolTrainerF[] = INCBIN_U32("graphics/trainers/front_pics/cooltrainer_f.4bpp.lz"); -const u32 gTrainerPalette_CoolTrainerF[] = INCBIN_U32("graphics/trainers/front_pics/cooltrainer_f.gbapal.lz"); +const u16 gTrainerPalette_CoolTrainerF[] = INCBIN_U16("graphics/trainers/front_pics/cooltrainer_f.gbapal"); const u32 gTrainerFrontPic_Lady[] = INCBIN_U32("graphics/trainers/front_pics/lady.4bpp.lz"); -const u32 gTrainerPalette_Lady[] = INCBIN_U32("graphics/trainers/front_pics/lady.gbapal.lz"); +const u16 gTrainerPalette_Lady[] = INCBIN_U16("graphics/trainers/front_pics/lady.gbapal"); const u32 gTrainerFrontPic_Beauty[] = INCBIN_U32("graphics/trainers/front_pics/beauty.4bpp.lz"); -const u32 gTrainerPalette_Beauty[] = INCBIN_U32("graphics/trainers/front_pics/beauty.gbapal.lz"); +const u16 gTrainerPalette_Beauty[] = INCBIN_U16("graphics/trainers/front_pics/beauty.gbapal"); const u32 gTrainerFrontPic_RichBoy[] = INCBIN_U32("graphics/trainers/front_pics/rich_boy.4bpp.lz"); -const u32 gTrainerPalette_RichBoy[] = INCBIN_U32("graphics/trainers/front_pics/rich_boy.gbapal.lz"); +const u16 gTrainerPalette_RichBoy[] = INCBIN_U16("graphics/trainers/front_pics/rich_boy.gbapal"); const u32 gTrainerFrontPic_ExpertF[] = INCBIN_U32("graphics/trainers/front_pics/expert_f.4bpp.lz"); -const u32 gTrainerPalette_ExpertF[] = INCBIN_U32("graphics/trainers/front_pics/expert_f.gbapal.lz"); +const u16 gTrainerPalette_ExpertF[] = INCBIN_U16("graphics/trainers/front_pics/expert_f.gbapal"); const u32 gTrainerFrontPic_Pokemaniac[] = INCBIN_U32("graphics/trainers/front_pics/pokemaniac.4bpp.lz"); -const u32 gTrainerPalette_Pokemaniac[] = INCBIN_U32("graphics/trainers/front_pics/pokemaniac.gbapal.lz"); +const u16 gTrainerPalette_Pokemaniac[] = INCBIN_U16("graphics/trainers/front_pics/pokemaniac.gbapal"); const u32 gTrainerFrontPic_MagmaGruntF[] = INCBIN_U32("graphics/trainers/front_pics/magma_grunt_f.4bpp.lz"); -const u32 gTrainerPalette_MagmaGruntF[] = INCBIN_U32("graphics/trainers/front_pics/magma_grunt_f.gbapal.lz"); +const u16 gTrainerPalette_MagmaGruntF[] = INCBIN_U16("graphics/trainers/front_pics/magma_grunt_f.gbapal"); const u32 gTrainerFrontPic_Guitarist[] = INCBIN_U32("graphics/trainers/front_pics/guitarist.4bpp.lz"); -const u32 gTrainerPalette_Guitarist[] = INCBIN_U32("graphics/trainers/front_pics/guitarist.gbapal.lz"); +const u16 gTrainerPalette_Guitarist[] = INCBIN_U16("graphics/trainers/front_pics/guitarist.gbapal"); const u32 gTrainerFrontPic_Kindler[] = INCBIN_U32("graphics/trainers/front_pics/kindler.4bpp.lz"); -const u32 gTrainerPalette_Kindler[] = INCBIN_U32("graphics/trainers/front_pics/kindler.gbapal.lz"); +const u16 gTrainerPalette_Kindler[] = INCBIN_U16("graphics/trainers/front_pics/kindler.gbapal"); const u32 gTrainerFrontPic_Camper[] = INCBIN_U32("graphics/trainers/front_pics/camper.4bpp.lz"); -const u32 gTrainerPalette_Camper[] = INCBIN_U32("graphics/trainers/front_pics/camper.gbapal.lz"); +const u16 gTrainerPalette_Camper[] = INCBIN_U16("graphics/trainers/front_pics/camper.gbapal"); const u32 gTrainerFrontPic_Picnicker[] = INCBIN_U32("graphics/trainers/front_pics/picnicker.4bpp.lz"); -const u32 gTrainerPalette_Picnicker[] = INCBIN_U32("graphics/trainers/front_pics/picnicker.gbapal.lz"); +const u16 gTrainerPalette_Picnicker[] = INCBIN_U16("graphics/trainers/front_pics/picnicker.gbapal"); const u32 gTrainerFrontPic_BugManiac[] = INCBIN_U32("graphics/trainers/front_pics/bug_maniac.4bpp.lz"); -const u32 gTrainerPalette_BugManiac[] = INCBIN_U32("graphics/trainers/front_pics/bug_maniac.gbapal.lz"); +const u16 gTrainerPalette_BugManiac[] = INCBIN_U16("graphics/trainers/front_pics/bug_maniac.gbapal"); const u32 gTrainerFrontPic_PokemonBreederM[] = INCBIN_U32("graphics/trainers/front_pics/pokemon_breeder_m.4bpp.lz"); -const u32 gTrainerPalette_PokemonBreederM[] = INCBIN_U32("graphics/trainers/front_pics/pokemon_breeder_m.gbapal.lz"); +const u16 gTrainerPalette_PokemonBreederM[] = INCBIN_U16("graphics/trainers/front_pics/pokemon_breeder_m.gbapal"); const u32 gTrainerFrontPic_PsychicM[] = INCBIN_U32("graphics/trainers/front_pics/psychic_m.4bpp.lz"); -const u32 gTrainerPalette_PsychicM[] = INCBIN_U32("graphics/trainers/front_pics/psychic_m.gbapal.lz"); +const u16 gTrainerPalette_PsychicM[] = INCBIN_U16("graphics/trainers/front_pics/psychic_m.gbapal"); const u32 gTrainerFrontPic_PsychicF[] = INCBIN_U32("graphics/trainers/front_pics/psychic_f.4bpp.lz"); -const u32 gTrainerPalette_PsychicF[] = INCBIN_U32("graphics/trainers/front_pics/psychic_f.gbapal.lz"); +const u16 gTrainerPalette_PsychicF[] = INCBIN_U16("graphics/trainers/front_pics/psychic_f.gbapal"); const u32 gTrainerFrontPic_Gentleman[] = INCBIN_U32("graphics/trainers/front_pics/gentleman.4bpp.lz"); -const u32 gTrainerPalette_Gentleman[] = INCBIN_U32("graphics/trainers/front_pics/gentleman.gbapal.lz"); +const u16 gTrainerPalette_Gentleman[] = INCBIN_U16("graphics/trainers/front_pics/gentleman.gbapal"); const u32 gTrainerFrontPic_EliteFourSidney[] = INCBIN_U32("graphics/trainers/front_pics/elite_four_sidney.4bpp.lz"); -const u32 gTrainerPalette_EliteFourSidney[] = INCBIN_U32("graphics/trainers/front_pics/elite_four_sidney.gbapal.lz"); +const u16 gTrainerPalette_EliteFourSidney[] = INCBIN_U16("graphics/trainers/front_pics/elite_four_sidney.gbapal"); const u32 gTrainerFrontPic_EliteFourPhoebe[] = INCBIN_U32("graphics/trainers/front_pics/elite_four_phoebe.4bpp.lz"); -const u32 gTrainerPalette_EliteFourPhoebe[] = INCBIN_U32("graphics/trainers/front_pics/elite_four_phoebe.gbapal.lz"); +const u16 gTrainerPalette_EliteFourPhoebe[] = INCBIN_U16("graphics/trainers/front_pics/elite_four_phoebe.gbapal"); const u32 gTrainerFrontPic_EliteFourGlacia[] = INCBIN_U32("graphics/trainers/front_pics/elite_four_glacia.4bpp.lz"); -const u32 gTrainerPalette_EliteFourGlacia[] = INCBIN_U32("graphics/trainers/front_pics/elite_four_glacia.gbapal.lz"); +const u16 gTrainerPalette_EliteFourGlacia[] = INCBIN_U16("graphics/trainers/front_pics/elite_four_glacia.gbapal"); const u32 gTrainerFrontPic_EliteFourDrake[] = INCBIN_U32("graphics/trainers/front_pics/elite_four_drake.4bpp.lz"); -const u32 gTrainerPalette_EliteFourDrake[] = INCBIN_U32("graphics/trainers/front_pics/elite_four_drake.gbapal.lz"); +const u16 gTrainerPalette_EliteFourDrake[] = INCBIN_U16("graphics/trainers/front_pics/elite_four_drake.gbapal"); const u32 gTrainerFrontPic_LeaderRoxanne[] = INCBIN_U32("graphics/trainers/front_pics/leader_roxanne.4bpp.lz"); -const u32 gTrainerPalette_LeaderRoxanne[] = INCBIN_U32("graphics/trainers/front_pics/leader_roxanne.gbapal.lz"); +const u16 gTrainerPalette_LeaderRoxanne[] = INCBIN_U16("graphics/trainers/front_pics/leader_roxanne.gbapal"); const u32 gTrainerFrontPic_LeaderBrawly[] = INCBIN_U32("graphics/trainers/front_pics/leader_brawly.4bpp.lz"); -const u32 gTrainerPalette_LeaderBrawly[] = INCBIN_U32("graphics/trainers/front_pics/leader_brawly.gbapal.lz"); +const u16 gTrainerPalette_LeaderBrawly[] = INCBIN_U16("graphics/trainers/front_pics/leader_brawly.gbapal"); const u32 gTrainerFrontPic_LeaderWattson[] = INCBIN_U32("graphics/trainers/front_pics/leader_wattson.4bpp.lz"); -const u32 gTrainerPalette_LeaderWattson[] = INCBIN_U32("graphics/trainers/front_pics/leader_wattson.gbapal.lz"); +const u16 gTrainerPalette_LeaderWattson[] = INCBIN_U16("graphics/trainers/front_pics/leader_wattson.gbapal"); const u32 gTrainerFrontPic_LeaderFlannery[] = INCBIN_U32("graphics/trainers/front_pics/leader_flannery.4bpp.lz"); -const u32 gTrainerPalette_LeaderFlannery[] = INCBIN_U32("graphics/trainers/front_pics/leader_flannery.gbapal.lz"); +const u16 gTrainerPalette_LeaderFlannery[] = INCBIN_U16("graphics/trainers/front_pics/leader_flannery.gbapal"); const u32 gTrainerFrontPic_LeaderNorman[] = INCBIN_U32("graphics/trainers/front_pics/leader_norman.4bpp.lz"); -const u32 gTrainerPalette_LeaderNorman[] = INCBIN_U32("graphics/trainers/front_pics/leader_norman.gbapal.lz"); +const u16 gTrainerPalette_LeaderNorman[] = INCBIN_U16("graphics/trainers/front_pics/leader_norman.gbapal"); const u32 gTrainerFrontPic_LeaderWinona[] = INCBIN_U32("graphics/trainers/front_pics/leader_winona.4bpp.lz"); -const u32 gTrainerPalette_LeaderWinona[] = INCBIN_U32("graphics/trainers/front_pics/leader_winona.gbapal.lz"); +const u16 gTrainerPalette_LeaderWinona[] = INCBIN_U16("graphics/trainers/front_pics/leader_winona.gbapal"); const u32 gTrainerFrontPic_LeaderTateAndLiza[] = INCBIN_U32("graphics/trainers/front_pics/leader_tate_and_liza.4bpp.lz"); -const u32 gTrainerPalette_LeaderTateAndLiza[] = INCBIN_U32("graphics/trainers/front_pics/leader_tate_and_liza.gbapal.lz"); +const u16 gTrainerPalette_LeaderTateAndLiza[] = INCBIN_U16("graphics/trainers/front_pics/leader_tate_and_liza.gbapal"); const u32 gTrainerFrontPic_LeaderJuan[] = INCBIN_U32("graphics/trainers/front_pics/leader_juan.4bpp.lz"); -const u32 gTrainerPalette_LeaderJuan[] = INCBIN_U32("graphics/trainers/front_pics/leader_juan.gbapal.lz"); +const u16 gTrainerPalette_LeaderJuan[] = INCBIN_U16("graphics/trainers/front_pics/leader_juan.gbapal"); const u32 gTrainerFrontPic_SchoolKidM[] = INCBIN_U32("graphics/trainers/front_pics/school_kid_m.4bpp.lz"); -const u32 gTrainerPalette_SchoolKidM[] = INCBIN_U32("graphics/trainers/front_pics/school_kid_m.gbapal.lz"); +const u16 gTrainerPalette_SchoolKidM[] = INCBIN_U16("graphics/trainers/front_pics/school_kid_m.gbapal"); const u32 gTrainerFrontPic_SchoolKidF[] = INCBIN_U32("graphics/trainers/front_pics/school_kid_f.4bpp.lz"); -const u32 gTrainerPalette_SchoolKidF[] = INCBIN_U32("graphics/trainers/front_pics/school_kid_f.gbapal.lz"); +const u16 gTrainerPalette_SchoolKidF[] = INCBIN_U16("graphics/trainers/front_pics/school_kid_f.gbapal"); const u32 gTrainerFrontPic_SrAndJr[] = INCBIN_U32("graphics/trainers/front_pics/sr_and_jr.4bpp.lz"); -const u32 gTrainerPalette_SrAndJr[] = INCBIN_U32("graphics/trainers/front_pics/sr_and_jr.gbapal.lz"); +const u16 gTrainerPalette_SrAndJr[] = INCBIN_U16("graphics/trainers/front_pics/sr_and_jr.gbapal"); const u32 gTrainerFrontPic_PokefanM[] = INCBIN_U32("graphics/trainers/front_pics/pokefan_m.4bpp.lz"); -const u32 gTrainerPalette_PokefanM[] = INCBIN_U32("graphics/trainers/front_pics/pokefan_m.gbapal.lz"); +const u16 gTrainerPalette_PokefanM[] = INCBIN_U16("graphics/trainers/front_pics/pokefan_m.gbapal"); const u32 gTrainerFrontPic_PokefanF[] = INCBIN_U32("graphics/trainers/front_pics/pokefan_f.4bpp.lz"); -const u32 gTrainerPalette_PokefanF[] = INCBIN_U32("graphics/trainers/front_pics/pokefan_f.gbapal.lz"); +const u16 gTrainerPalette_PokefanF[] = INCBIN_U16("graphics/trainers/front_pics/pokefan_f.gbapal"); const u32 gTrainerFrontPic_Youngster[] = INCBIN_U32("graphics/trainers/front_pics/youngster.4bpp.lz"); -const u32 gTrainerPalette_Youngster[] = INCBIN_U32("graphics/trainers/front_pics/youngster.gbapal.lz"); +const u16 gTrainerPalette_Youngster[] = INCBIN_U16("graphics/trainers/front_pics/youngster.gbapal"); const u32 gTrainerFrontPic_ChampionWallace[] = INCBIN_U32("graphics/trainers/front_pics/champion_wallace.4bpp.lz"); -const u32 gTrainerPalette_ChampionWallace[] = INCBIN_U32("graphics/trainers/front_pics/champion_wallace.gbapal.lz"); +const u16 gTrainerPalette_ChampionWallace[] = INCBIN_U16("graphics/trainers/front_pics/champion_wallace.gbapal"); const u32 gTrainerFrontPic_Fisherman[] = INCBIN_U32("graphics/trainers/front_pics/fisherman.4bpp.lz"); -const u32 gTrainerPalette_Fisherman[] = INCBIN_U32("graphics/trainers/front_pics/fisherman.gbapal.lz"); +const u16 gTrainerPalette_Fisherman[] = INCBIN_U16("graphics/trainers/front_pics/fisherman.gbapal"); const u32 gTrainerFrontPic_CyclingTriathleteM[] = INCBIN_U32("graphics/trainers/front_pics/cycling_triathlete_m.4bpp.lz"); -const u32 gTrainerPalette_CyclingTriathleteM[] = INCBIN_U32("graphics/trainers/front_pics/cycling_triathlete_m.gbapal.lz"); +const u16 gTrainerPalette_CyclingTriathleteM[] = INCBIN_U16("graphics/trainers/front_pics/cycling_triathlete_m.gbapal"); const u32 gTrainerFrontPic_CyclingTriathleteF[] = INCBIN_U32("graphics/trainers/front_pics/cycling_triathlete_f.4bpp.lz"); -const u32 gTrainerPalette_CyclingTriathleteF[] = INCBIN_U32("graphics/trainers/front_pics/cycling_triathlete_f.gbapal.lz"); +const u16 gTrainerPalette_CyclingTriathleteF[] = INCBIN_U16("graphics/trainers/front_pics/cycling_triathlete_f.gbapal"); const u32 gTrainerFrontPic_RunningTriathleteM[] = INCBIN_U32("graphics/trainers/front_pics/running_triathlete_m.4bpp.lz"); -const u32 gTrainerPalette_RunningTriathleteM[] = INCBIN_U32("graphics/trainers/front_pics/running_triathlete_m.gbapal.lz"); +const u16 gTrainerPalette_RunningTriathleteM[] = INCBIN_U16("graphics/trainers/front_pics/running_triathlete_m.gbapal"); const u32 gTrainerFrontPic_RunningTriathleteF[] = INCBIN_U32("graphics/trainers/front_pics/running_triathlete_f.4bpp.lz"); -const u32 gTrainerPalette_RunningTriathleteF[] = INCBIN_U32("graphics/trainers/front_pics/running_triathlete_f.gbapal.lz"); +const u16 gTrainerPalette_RunningTriathleteF[] = INCBIN_U16("graphics/trainers/front_pics/running_triathlete_f.gbapal"); const u32 gTrainerFrontPic_SwimmingTriathleteM[] = INCBIN_U32("graphics/trainers/front_pics/swimming_triathlete_m.4bpp.lz"); -const u32 gTrainerPalette_SwimmingTriathleteM[] = INCBIN_U32("graphics/trainers/front_pics/swimming_triathlete_m.gbapal.lz"); +const u16 gTrainerPalette_SwimmingTriathleteM[] = INCBIN_U16("graphics/trainers/front_pics/swimming_triathlete_m.gbapal"); const u32 gTrainerFrontPic_SwimmingTriathleteF[] = INCBIN_U32("graphics/trainers/front_pics/swimming_triathlete_f.4bpp.lz"); -const u32 gTrainerPalette_SwimmingTriathleteF[] = INCBIN_U32("graphics/trainers/front_pics/swimming_triathlete_f.gbapal.lz"); +const u16 gTrainerPalette_SwimmingTriathleteF[] = INCBIN_U16("graphics/trainers/front_pics/swimming_triathlete_f.gbapal"); const u32 gTrainerFrontPic_DragonTamer[] = INCBIN_U32("graphics/trainers/front_pics/dragon_tamer.4bpp.lz"); -const u32 gTrainerPalette_DragonTamer[] = INCBIN_U32("graphics/trainers/front_pics/dragon_tamer.gbapal.lz"); +const u16 gTrainerPalette_DragonTamer[] = INCBIN_U16("graphics/trainers/front_pics/dragon_tamer.gbapal"); const u32 gTrainerFrontPic_NinjaBoy[] = INCBIN_U32("graphics/trainers/front_pics/ninja_boy.4bpp.lz"); -const u32 gTrainerPalette_NinjaBoy[] = INCBIN_U32("graphics/trainers/front_pics/ninja_boy.gbapal.lz"); +const u16 gTrainerPalette_NinjaBoy[] = INCBIN_U16("graphics/trainers/front_pics/ninja_boy.gbapal"); const u32 gTrainerFrontPic_BattleGirl[] = INCBIN_U32("graphics/trainers/front_pics/battle_girl.4bpp.lz"); -const u32 gTrainerPalette_BattleGirl[] = INCBIN_U32("graphics/trainers/front_pics/battle_girl.gbapal.lz"); +const u16 gTrainerPalette_BattleGirl[] = INCBIN_U16("graphics/trainers/front_pics/battle_girl.gbapal"); const u32 gTrainerFrontPic_ParasolLady[] = INCBIN_U32("graphics/trainers/front_pics/parasol_lady.4bpp.lz"); -const u32 gTrainerPalette_ParasolLady[] = INCBIN_U32("graphics/trainers/front_pics/parasol_lady.gbapal.lz"); +const u16 gTrainerPalette_ParasolLady[] = INCBIN_U16("graphics/trainers/front_pics/parasol_lady.gbapal"); const u32 gTrainerFrontPic_SwimmerF[] = INCBIN_U32("graphics/trainers/front_pics/swimmer_f.4bpp.lz"); -const u32 gTrainerPalette_SwimmerF[] = INCBIN_U32("graphics/trainers/front_pics/swimmer_f.gbapal.lz"); +const u16 gTrainerPalette_SwimmerF[] = INCBIN_U16("graphics/trainers/front_pics/swimmer_f.gbapal"); const u32 gTrainerFrontPic_Twins[] = INCBIN_U32("graphics/trainers/front_pics/twins.4bpp.lz"); -const u32 gTrainerPalette_Twins[] = INCBIN_U32("graphics/trainers/front_pics/twins.gbapal.lz"); +const u16 gTrainerPalette_Twins[] = INCBIN_U16("graphics/trainers/front_pics/twins.gbapal"); const u32 gTrainerFrontPic_Sailor[] = INCBIN_U32("graphics/trainers/front_pics/sailor.4bpp.lz"); -const u32 gTrainerPalette_Sailor[] = INCBIN_U32("graphics/trainers/front_pics/sailor.gbapal.lz"); +const u16 gTrainerPalette_Sailor[] = INCBIN_U16("graphics/trainers/front_pics/sailor.gbapal"); const u32 gTrainerFrontPic_MagmaAdmin[] = INCBIN_U32("graphics/trainers/front_pics/magma_admin.4bpp.lz"); -const u32 gTrainerPalette_MagmaAdmin[] = INCBIN_U32("graphics/trainers/front_pics/magma_admin.gbapal.lz"); +const u16 gTrainerPalette_MagmaAdmin[] = INCBIN_U16("graphics/trainers/front_pics/magma_admin.gbapal"); const u32 gTrainerFrontPic_Wally[] = INCBIN_U32("graphics/trainers/front_pics/wally.4bpp.lz"); -const u32 gTrainerPalette_Wally[] = INCBIN_U32("graphics/trainers/palettes/wally.gbapal.lz"); +const u16 gTrainerPalette_Wally[] = INCBIN_U16("graphics/trainers/palettes/wally.gbapal"); const u32 gTrainerFrontPic_Brendan[] = INCBIN_U32("graphics/trainers/front_pics/brendan.4bpp.lz"); -const u32 gTrainerPalette_Brendan[] = INCBIN_U32("graphics/trainers/palettes/brendan.gbapal.lz"); +const u16 gTrainerPalette_Brendan[] = INCBIN_U16("graphics/trainers/palettes/brendan.gbapal"); const u32 gTrainerFrontPic_May[] = INCBIN_U32("graphics/trainers/front_pics/may.4bpp.lz"); -const u32 gTrainerPalette_May[] = INCBIN_U32("graphics/trainers/palettes/may.gbapal.lz"); +const u16 gTrainerPalette_May[] = INCBIN_U16("graphics/trainers/palettes/may.gbapal"); const u32 gTrainerFrontPic_BugCatcher[] = INCBIN_U32("graphics/trainers/front_pics/bug_catcher.4bpp.lz"); -const u32 gTrainerPalette_BugCatcher[] = INCBIN_U32("graphics/trainers/front_pics/bug_catcher.gbapal.lz"); +const u16 gTrainerPalette_BugCatcher[] = INCBIN_U16("graphics/trainers/front_pics/bug_catcher.gbapal"); const u32 gTrainerFrontPic_PokemonRangerM[] = INCBIN_U32("graphics/trainers/front_pics/pokemon_ranger_m.4bpp.lz"); -const u32 gTrainerPalette_PokemonRangerM[] = INCBIN_U32("graphics/trainers/front_pics/pokemon_ranger_m.gbapal.lz"); +const u16 gTrainerPalette_PokemonRangerM[] = INCBIN_U16("graphics/trainers/front_pics/pokemon_ranger_m.gbapal"); const u32 gTrainerFrontPic_PokemonRangerF[] = INCBIN_U32("graphics/trainers/front_pics/pokemon_ranger_f.4bpp.lz"); -const u32 gTrainerPalette_PokemonRangerF[] = INCBIN_U32("graphics/trainers/front_pics/pokemon_ranger_f.gbapal.lz"); +const u16 gTrainerPalette_PokemonRangerF[] = INCBIN_U16("graphics/trainers/front_pics/pokemon_ranger_f.gbapal"); const u32 gTrainerFrontPic_MagmaLeaderMaxie[] = INCBIN_U32("graphics/trainers/front_pics/magma_leader_maxie.4bpp.lz"); -const u32 gTrainerPalette_MagmaLeaderMaxie[] = INCBIN_U32("graphics/trainers/front_pics/magma_leader_maxie.gbapal.lz"); +const u16 gTrainerPalette_MagmaLeaderMaxie[] = INCBIN_U16("graphics/trainers/front_pics/magma_leader_maxie.gbapal"); const u32 gTrainerFrontPic_Lass[] = INCBIN_U32("graphics/trainers/front_pics/lass.4bpp.lz"); -const u32 gTrainerPalette_Lass[] = INCBIN_U32("graphics/trainers/front_pics/lass.gbapal.lz"); +const u16 gTrainerPalette_Lass[] = INCBIN_U16("graphics/trainers/front_pics/lass.gbapal"); const u32 gTrainerFrontPic_YoungCouple[] = INCBIN_U32("graphics/trainers/front_pics/young_couple.4bpp.lz"); -const u32 gTrainerPalette_YoungCouple[] = INCBIN_U32("graphics/trainers/front_pics/young_couple.gbapal.lz"); +const u16 gTrainerPalette_YoungCouple[] = INCBIN_U16("graphics/trainers/front_pics/young_couple.gbapal"); const u32 gTrainerFrontPic_OldCouple[] = INCBIN_U32("graphics/trainers/front_pics/old_couple.4bpp.lz"); -const u32 gTrainerPalette_OldCouple[] = INCBIN_U32("graphics/trainers/front_pics/old_couple.gbapal.lz"); +const u16 gTrainerPalette_OldCouple[] = INCBIN_U16("graphics/trainers/front_pics/old_couple.gbapal"); const u32 gTrainerFrontPic_SisAndBro[] = INCBIN_U32("graphics/trainers/front_pics/sis_and_bro.4bpp.lz"); -const u32 gTrainerPalette_SisAndBro[] = INCBIN_U32("graphics/trainers/front_pics/sis_and_bro.gbapal.lz"); +const u16 gTrainerPalette_SisAndBro[] = INCBIN_U16("graphics/trainers/front_pics/sis_and_bro.gbapal"); const u32 gTrainerFrontPic_Steven[] = INCBIN_U32("graphics/trainers/front_pics/steven.4bpp.lz"); -const u32 gTrainerPalette_Steven[] = INCBIN_U32("graphics/trainers/front_pics/steven.gbapal.lz"); +const u16 gTrainerPalette_Steven[] = INCBIN_U16("graphics/trainers/front_pics/steven.gbapal"); const u32 gTrainerFrontPic_SalonMaidenAnabel[] = INCBIN_U32("graphics/trainers/front_pics/salon_maiden_anabel.4bpp.lz"); -const u32 gTrainerPalette_SalonMaidenAnabel[] = INCBIN_U32("graphics/trainers/front_pics/salon_maiden_anabel.gbapal.lz"); +const u16 gTrainerPalette_SalonMaidenAnabel[] = INCBIN_U16("graphics/trainers/front_pics/salon_maiden_anabel.gbapal"); const u32 gTrainerFrontPic_DomeAceTucker[] = INCBIN_U32("graphics/trainers/front_pics/dome_ace_tucker.4bpp.lz"); -const u32 gTrainerPalette_DomeAceTucker[] = INCBIN_U32("graphics/trainers/front_pics/dome_ace_tucker.gbapal.lz"); +const u16 gTrainerPalette_DomeAceTucker[] = INCBIN_U16("graphics/trainers/front_pics/dome_ace_tucker.gbapal"); const u32 gTrainerFrontPic_PalaceMavenSpenser[] = INCBIN_U32("graphics/trainers/front_pics/palace_maven_spenser.4bpp.lz"); -const u32 gTrainerPalette_PalaceMavenSpenser[] = INCBIN_U32("graphics/trainers/front_pics/palace_maven_spenser.gbapal.lz"); +const u16 gTrainerPalette_PalaceMavenSpenser[] = INCBIN_U16("graphics/trainers/front_pics/palace_maven_spenser.gbapal"); const u32 gTrainerFrontPic_ArenaTycoonGreta[] = INCBIN_U32("graphics/trainers/front_pics/arena_tycoon_greta.4bpp.lz"); -const u32 gTrainerPalette_ArenaTycoonGreta[] = INCBIN_U32("graphics/trainers/front_pics/arena_tycoon_greta.gbapal.lz"); +const u16 gTrainerPalette_ArenaTycoonGreta[] = INCBIN_U16("graphics/trainers/front_pics/arena_tycoon_greta.gbapal"); const u32 gTrainerFrontPic_FactoryHeadNoland[] = INCBIN_U32("graphics/trainers/front_pics/factory_head_noland.4bpp.lz"); -const u32 gTrainerPalette_FactoryHeadNoland[] = INCBIN_U32("graphics/trainers/front_pics/factory_head_noland.gbapal.lz"); +const u16 gTrainerPalette_FactoryHeadNoland[] = INCBIN_U16("graphics/trainers/front_pics/factory_head_noland.gbapal"); const u32 gTrainerFrontPic_PikeQueenLucy[] = INCBIN_U32("graphics/trainers/front_pics/pike_queen_lucy.4bpp.lz"); -const u32 gTrainerPalette_PikeQueenLucy[] = INCBIN_U32("graphics/trainers/front_pics/pike_queen_lucy.gbapal.lz"); +const u16 gTrainerPalette_PikeQueenLucy[] = INCBIN_U16("graphics/trainers/front_pics/pike_queen_lucy.gbapal"); const u32 gTrainerFrontPic_PyramidKingBrandon[] = INCBIN_U32("graphics/trainers/front_pics/pyramid_king_brandon.4bpp.lz"); -const u32 gTrainerPalette_PyramidKingBrandon[] = INCBIN_U32("graphics/trainers/front_pics/pyramid_king_brandon.gbapal.lz"); +const u16 gTrainerPalette_PyramidKingBrandon[] = INCBIN_U16("graphics/trainers/front_pics/pyramid_king_brandon.gbapal"); const u32 gTrainerFrontPic_Red[] = INCBIN_U32("graphics/trainers/front_pics/red.4bpp.lz"); -const u32 gTrainerPalette_Red[] = INCBIN_U32("graphics/trainers/front_pics/red.gbapal.lz"); +const u16 gTrainerPalette_Red[] = INCBIN_U16("graphics/trainers/front_pics/red.gbapal"); const u32 gTrainerFrontPic_Leaf[] = INCBIN_U32("graphics/trainers/front_pics/leaf.4bpp.lz"); -const u32 gTrainerPalette_Leaf[] = INCBIN_U32("graphics/trainers/front_pics/leaf.gbapal.lz"); +const u16 gTrainerPalette_Leaf[] = INCBIN_U16("graphics/trainers/front_pics/leaf.gbapal"); const u32 gTrainerFrontPic_RubySapphireBrendan[] = INCBIN_U32("graphics/trainers/front_pics/brendan_rs.4bpp.lz"); -const u32 gTrainerPalette_RubySapphireBrendan[] = INCBIN_U32("graphics/trainers/palettes/brendan_rs.gbapal.lz"); +const u16 gTrainerPalette_RubySapphireBrendan[] = INCBIN_U16("graphics/trainers/palettes/brendan_rs.gbapal"); const u32 gTrainerFrontPic_RubySapphireMay[] = INCBIN_U32("graphics/trainers/front_pics/may_rs.4bpp.lz"); -const u32 gTrainerPalette_RubySapphireMay[] = INCBIN_U32("graphics/trainers/palettes/may_rs.gbapal.lz"); +const u16 gTrainerPalette_RubySapphireMay[] = INCBIN_U16("graphics/trainers/palettes/may_rs.gbapal"); const u8 gTrainerBackPic_Brendan[] = INCBIN_U8("graphics/trainers/back_pics/brendan.4bpp"); const u8 gTrainerBackPic_May[] = INCBIN_U8("graphics/trainers/back_pics/may.4bpp"); @@ -289,8 +289,8 @@ const u8 gTrainerBackPic_RubySapphireMay[] = INCBIN_U8("graphics/trainers/back_p const u8 gTrainerBackPic_Wally[] = INCBIN_U8("graphics/trainers/back_pics/wally.4bpp"); const u8 gTrainerBackPic_Steven[] = INCBIN_U8("graphics/trainers/back_pics/steven.4bpp"); -const u32 gTrainerBackPicPalette_Red[] = INCBIN_U32("graphics/trainers/back_pics/red.gbapal.lz"); -const u32 gTrainerBackPicPalette_Leaf[] = INCBIN_U32("graphics/trainers/back_pics/leaf.gbapal.lz"); +const u16 gTrainerBackPicPalette_Red[] = INCBIN_U16("graphics/trainers/back_pics/red.gbapal"); +const u16 gTrainerBackPicPalette_Leaf[] = INCBIN_U16("graphics/trainers/back_pics/leaf.gbapal"); // The first two parameters invoke a front pic and palette by // calling a "TRAINER_PIC" constant (e.g. TRAINER_PIC_HIKER), and diff --git a/src/data/items.h b/src/data/items.h index fc32e03042..187b4bc399 100644 --- a/src/data/items.h +++ b/src/data/items.h @@ -7200,12 +7200,13 @@ const struct Item gItemsInfo[] = { .name = _("Sea Incense"), .price = (I_PRICE >= GEN_7) ? 2000 : 9600, - .holdEffect = HOLD_EFFECT_WATER_POWER, + .holdEffect = HOLD_EFFECT_TYPE_POWER, .holdEffectParam = 20, .description = sSeaIncenseDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .secondaryId = TYPE_WATER, .flingPower = 10, .iconPic = gItemIcon_SeaIncense, .iconPalette = gItemIconPalette_SeaIncense, @@ -7233,12 +7234,13 @@ const struct Item gItemsInfo[] = { .name = _("Odd Incense"), .price = (I_PRICE >= GEN_7) ? 2000 : 9600, - .holdEffect = HOLD_EFFECT_PSYCHIC_POWER, + .holdEffect = HOLD_EFFECT_TYPE_POWER, .holdEffectParam = 20, .description = sOddIncenseDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .secondaryId = TYPE_PSYCHIC, .flingPower = 10, .iconPic = gItemIcon_OddIncense, .iconPalette = gItemIconPalette_OddIncense, @@ -7248,12 +7250,13 @@ const struct Item gItemsInfo[] = { .name = _("Rock Incense"), .price = (I_PRICE >= GEN_7) ? 2000 : 9600, - .holdEffect = HOLD_EFFECT_ROCK_POWER, + .holdEffect = HOLD_EFFECT_TYPE_POWER, .holdEffectParam = 20, .description = sRockIncenseDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .secondaryId = TYPE_ROCK, .flingPower = 10, .iconPic = gItemIcon_RockIncense, .iconPalette = gItemIconPalette_RockIncense, @@ -7278,12 +7281,13 @@ const struct Item gItemsInfo[] = { .name = _("Wave Incense"), .price = (I_PRICE >= GEN_7) ? 2000 : 9600, - .holdEffect = HOLD_EFFECT_WATER_POWER, + .holdEffect = HOLD_EFFECT_TYPE_POWER, .holdEffectParam = 20, .description = sSeaIncenseDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .secondaryId = TYPE_WATER, .flingPower = 10, .iconPic = gItemIcon_WaveIncense, .iconPalette = gItemIconPalette_WaveIncense, @@ -7293,12 +7297,13 @@ const struct Item gItemsInfo[] = { .name = _("Rose Incense"), .price = (I_PRICE >= GEN_7) ? 2000 : 9600, - .holdEffect = HOLD_EFFECT_GRASS_POWER, + .holdEffect = HOLD_EFFECT_TYPE_POWER, .holdEffectParam = 20, .description = sRoseIncenseDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .secondaryId = TYPE_GRASS, .flingPower = 10, .iconPic = gItemIcon_RoseIncense, .iconPalette = gItemIconPalette_RoseIncense, @@ -7560,7 +7565,7 @@ const struct Item gItemsInfo[] = .name = _("Silk Scarf"), .pluralName = _("Silk Scarves"), .price = (I_PRICE >= GEN_9) ? 3000 : ((I_PRICE >= GEN_7) ? 1000 : 100), - .holdEffect = HOLD_EFFECT_NORMAL_POWER, + .holdEffect = HOLD_EFFECT_TYPE_POWER, .holdEffectParam = TYPE_BOOST_PARAM, .description = COMPOUND_STRING( "A hold item that\n" @@ -7569,6 +7574,7 @@ const struct Item gItemsInfo[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .secondaryId = TYPE_NORMAL, .flingPower = 10, .iconPic = gItemIcon_SilkScarf, .iconPalette = gItemIconPalette_SilkScarf, @@ -7578,7 +7584,7 @@ const struct Item gItemsInfo[] = { .name = _("Charcoal"), .price = (I_PRICE >= GEN_9) ? 3000 : ((I_PRICE >= GEN_7) ? 1000 : 9800), - .holdEffect = HOLD_EFFECT_FIRE_POWER, + .holdEffect = HOLD_EFFECT_TYPE_POWER, .holdEffectParam = TYPE_BOOST_PARAM, .description = COMPOUND_STRING( "A hold item that\n" @@ -7587,6 +7593,7 @@ const struct Item gItemsInfo[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .secondaryId = TYPE_FIRE, .flingPower = 30, .iconPic = gItemIcon_Charcoal, .iconPalette = gItemIconPalette_Charcoal, @@ -7597,7 +7604,7 @@ const struct Item gItemsInfo[] = .name = _("Mystic Water"), .pluralName = _("Mystic Water"), .price = (I_PRICE >= GEN_9) ? 3000 : ((I_PRICE >= GEN_7) ? 1000 : 100), - .holdEffect = HOLD_EFFECT_WATER_POWER, + .holdEffect = HOLD_EFFECT_TYPE_POWER, .holdEffectParam = TYPE_BOOST_PARAM, .description = COMPOUND_STRING( "A hold item that\n" @@ -7606,6 +7613,7 @@ const struct Item gItemsInfo[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .secondaryId = TYPE_WATER, .flingPower = 30, .iconPic = gItemIcon_MysticWater, .iconPalette = gItemIconPalette_MysticWater, @@ -7615,7 +7623,7 @@ const struct Item gItemsInfo[] = { .name = _("Magnet"), .price = (I_PRICE >= GEN_9) ? 3000 : ((I_PRICE >= GEN_7) ? 1000 : 100), - .holdEffect = HOLD_EFFECT_ELECTRIC_POWER, + .holdEffect = HOLD_EFFECT_TYPE_POWER, .holdEffectParam = TYPE_BOOST_PARAM, .description = COMPOUND_STRING( "A hold item that\n" @@ -7624,6 +7632,7 @@ const struct Item gItemsInfo[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .secondaryId = TYPE_ELECTRIC, .flingPower = 30, .iconPic = gItemIcon_Magnet, .iconPalette = gItemIconPalette_Magnet, @@ -7633,12 +7642,13 @@ const struct Item gItemsInfo[] = { .name = _("Miracle Seed"), .price = (I_PRICE >= GEN_9) ? 3000 : ((I_PRICE >= GEN_7) ? 1000 : 100), - .holdEffect = HOLD_EFFECT_GRASS_POWER, + .holdEffect = HOLD_EFFECT_TYPE_POWER, .holdEffectParam = TYPE_BOOST_PARAM, .description = sRoseIncenseDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .secondaryId = TYPE_GRASS, .flingPower = 30, .iconPic = gItemIcon_MiracleSeed, .iconPalette = gItemIconPalette_MiracleSeed, @@ -7649,7 +7659,7 @@ const struct Item gItemsInfo[] = .name = _("Never-Melt Ice"), .pluralName = _("Never-Melt Ice"), .price = (I_PRICE >= GEN_9) ? 3000 : ((I_PRICE >= GEN_7) ? 1000 : 100), - .holdEffect = HOLD_EFFECT_ICE_POWER, + .holdEffect = HOLD_EFFECT_TYPE_POWER, .holdEffectParam = TYPE_BOOST_PARAM, .description = COMPOUND_STRING( "A hold item that\n" @@ -7658,6 +7668,7 @@ const struct Item gItemsInfo[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .secondaryId = TYPE_ICE, .flingPower = 30, .iconPic = gItemIcon_NeverMeltIce, .iconPalette = gItemIconPalette_NeverMeltIce, @@ -7667,7 +7678,7 @@ const struct Item gItemsInfo[] = { .name = _("Black Belt"), .price = (I_PRICE >= GEN_9) ? 3000 : ((I_PRICE >= GEN_7) ? 1000 : 100), - .holdEffect = HOLD_EFFECT_FIGHTING_POWER, + .holdEffect = HOLD_EFFECT_TYPE_POWER, .holdEffectParam = TYPE_BOOST_PARAM, .description = COMPOUND_STRING( "A hold item that\n" @@ -7676,6 +7687,7 @@ const struct Item gItemsInfo[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .secondaryId = TYPE_FIGHTING, .flingPower = 30, .iconPic = gItemIcon_BlackBelt, .iconPalette = gItemIconPalette_BlackTypeEnhancingItem, @@ -7685,7 +7697,7 @@ const struct Item gItemsInfo[] = { .name = _("Poison Barb"), .price = (I_PRICE >= GEN_9) ? 3000 : ((I_PRICE >= GEN_7) ? 1000 : 100), - .holdEffect = HOLD_EFFECT_POISON_POWER, + .holdEffect = HOLD_EFFECT_TYPE_POWER, .holdEffectParam = TYPE_BOOST_PARAM, .description = COMPOUND_STRING( "A hold item that\n" @@ -7694,6 +7706,7 @@ const struct Item gItemsInfo[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .secondaryId = TYPE_POISON, .flingPower = 70, .iconPic = gItemIcon_PoisonBarb, .iconPalette = gItemIconPalette_PoisonBarb, @@ -7704,7 +7717,7 @@ const struct Item gItemsInfo[] = .name = _("Soft Sand"), .pluralName = _("Soft Sand"), .price = (I_PRICE >= GEN_9) ? 3000 : ((I_PRICE >= GEN_7) ? 1000 : 100), - .holdEffect = HOLD_EFFECT_GROUND_POWER, + .holdEffect = HOLD_EFFECT_TYPE_POWER, .holdEffectParam = TYPE_BOOST_PARAM, .description = COMPOUND_STRING( "A hold item that\n" @@ -7713,6 +7726,7 @@ const struct Item gItemsInfo[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .secondaryId = TYPE_GROUND, .flingPower = 10, .iconPic = gItemIcon_SoftSand, .iconPalette = gItemIconPalette_SoftSand, @@ -7722,7 +7736,7 @@ const struct Item gItemsInfo[] = { .name = _("Sharp Beak"), .price = (I_PRICE >= GEN_9) ? 3000 : ((I_PRICE >= GEN_7) ? 1000 : 100), - .holdEffect = HOLD_EFFECT_FLYING_POWER, + .holdEffect = HOLD_EFFECT_TYPE_POWER, .holdEffectParam = TYPE_BOOST_PARAM, .description = COMPOUND_STRING( "A hold item that\n" @@ -7731,6 +7745,7 @@ const struct Item gItemsInfo[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .secondaryId = TYPE_FLYING, .flingPower = 50, .iconPic = gItemIcon_SharpBeak, .iconPalette = gItemIconPalette_SharpBeak, @@ -7740,12 +7755,13 @@ const struct Item gItemsInfo[] = { .name = _("Twisted Spoon"), .price = (I_PRICE >= GEN_9) ? 3000 : ((I_PRICE >= GEN_7) ? 1000 : 100), - .holdEffect = HOLD_EFFECT_PSYCHIC_POWER, + .holdEffect = HOLD_EFFECT_TYPE_POWER, .holdEffectParam = TYPE_BOOST_PARAM, .description = sOddIncenseDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .secondaryId = TYPE_PSYCHIC, .flingPower = 30, .iconPic = gItemIcon_TwistedSpoon, .iconPalette = gItemIconPalette_TwistedSpoon, @@ -7756,7 +7772,7 @@ const struct Item gItemsInfo[] = .name = _("Silver Powder"), .pluralName = _("Silver Powder"), .price = (I_PRICE >= GEN_9) ? 3000 : ((I_PRICE >= GEN_7) ? 1000 : 100), - .holdEffect = HOLD_EFFECT_BUG_POWER, + .holdEffect = HOLD_EFFECT_TYPE_POWER, .holdEffectParam = TYPE_BOOST_PARAM, .description = COMPOUND_STRING( "A hold item that\n" @@ -7765,6 +7781,7 @@ const struct Item gItemsInfo[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .secondaryId = TYPE_BUG, .flingPower = 10, .iconPic = gItemIcon_SilverPowder, .iconPalette = gItemIconPalette_SilverPowder, @@ -7774,12 +7791,13 @@ const struct Item gItemsInfo[] = { .name = _("Hard Stone"), .price = (I_PRICE >= GEN_9) ? 3000 : ((I_PRICE >= GEN_7) ? 1000 : 100), - .holdEffect = HOLD_EFFECT_ROCK_POWER, + .holdEffect = HOLD_EFFECT_TYPE_POWER, .holdEffectParam = TYPE_BOOST_PARAM, .description = sRockIncenseDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .secondaryId = TYPE_ROCK, .flingPower = 100, .iconPic = gItemIcon_HardStone, .iconPalette = gItemIconPalette_HardStone, @@ -7789,7 +7807,7 @@ const struct Item gItemsInfo[] = { .name = _("Spell Tag"), .price = (I_PRICE >= GEN_9) ? 3000 : ((I_PRICE >= GEN_7) ? 1000 : 100), - .holdEffect = HOLD_EFFECT_GHOST_POWER, + .holdEffect = HOLD_EFFECT_TYPE_POWER, .holdEffectParam = TYPE_BOOST_PARAM, .description = COMPOUND_STRING( "A hold item that\n" @@ -7798,6 +7816,7 @@ const struct Item gItemsInfo[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .secondaryId = TYPE_GHOST, .flingPower = 30, .iconPic = gItemIcon_SpellTag, .iconPalette = gItemIconPalette_SpellTag, @@ -7807,7 +7826,7 @@ const struct Item gItemsInfo[] = { .name = _("Dragon Fang"), .price = (I_PRICE >= GEN_9) ? 3000 : ((I_PRICE >= GEN_7) ? 1000 : 100), - .holdEffect = HOLD_EFFECT_DRAGON_POWER, + .holdEffect = HOLD_EFFECT_TYPE_POWER, .holdEffectParam = TYPE_BOOST_PARAM, .description = COMPOUND_STRING( "A hold item that\n" @@ -7816,6 +7835,7 @@ const struct Item gItemsInfo[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .secondaryId = TYPE_DRAGON, .flingPower = 70, .iconPic = gItemIcon_DragonFang, .iconPalette = gItemIconPalette_DragonFang, @@ -7826,7 +7846,7 @@ const struct Item gItemsInfo[] = .name = _("Black Glasses"), .pluralName = _("Black Glasses"), .price = (I_PRICE >= GEN_9) ? 3000 : ((I_PRICE >= GEN_7) ? 1000 : 100), - .holdEffect = HOLD_EFFECT_DARK_POWER, + .holdEffect = HOLD_EFFECT_TYPE_POWER, .holdEffectParam = TYPE_BOOST_PARAM, .description = COMPOUND_STRING( "A hold item that\n" @@ -7835,6 +7855,7 @@ const struct Item gItemsInfo[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .secondaryId = TYPE_DARK, .flingPower = 30, .iconPic = gItemIcon_BlackGlasses, .iconPalette = gItemIconPalette_BlackTypeEnhancingItem, @@ -7844,7 +7865,7 @@ const struct Item gItemsInfo[] = { .name = _("Metal Coat"), .price = (I_PRICE >= GEN_9) ? 3000 : ((I_PRICE >= GEN_7) ? 2000 : 100), - .holdEffect = HOLD_EFFECT_STEEL_POWER, + .holdEffect = HOLD_EFFECT_TYPE_POWER, .holdEffectParam = TYPE_BOOST_PARAM, .description = COMPOUND_STRING( "A hold item that\n" @@ -7854,6 +7875,7 @@ const struct Item gItemsInfo[] = .type = EVO_HELD_ITEM_TYPE, .fieldUseFunc = EVO_HELD_ITEM_FIELD_FUNC, .effect = gItemEffect_EvoItem, + .secondaryId = TYPE_STEEL, .flingPower = 30, .iconPic = gItemIcon_MetalCoat, .iconPalette = gItemIconPalette_MetalCoat, @@ -8008,10 +8030,22 @@ const struct Item gItemsInfo[] = .name = _("Icy Rock"), .price = (I_PRICE >= GEN_9) ? 8000 : ((I_PRICE >= GEN_7) ? 4000 : 200), .holdEffect = HOLD_EFFECT_ICY_ROCK, + #if B_PREFERRED_ICE_WEATHER == B_ICE_WEATHER_HAIL .description = COMPOUND_STRING( "Extends the length\n" "of the move Hail\n" "used by the holder."), + #elif B_PREFERRED_ICE_WEATHER == B_ICE_WEATHER_SNOW + .description = COMPOUND_STRING( + "Extends the length\n" + "of Snowscape if\n" + "used by the holder."), + #else + .description = COMPOUND_STRING( + "Extends the length\n" + "of cold weathers\n" + "used by the holder."), + #endif .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, @@ -8195,7 +8229,7 @@ const struct Item gItemsInfo[] = { .name = _("White Herb"), .price = (I_PRICE >= GEN_9) ? 20000 : ((I_PRICE >= GEN_7) ? 4000 : 100), - .holdEffect = HOLD_EFFECT_RESTORE_STATS, + .holdEffect = HOLD_EFFECT_WHITE_HERB, .description = COMPOUND_STRING( "A hold item that\n" "restores any\n" @@ -10502,10 +10536,17 @@ const struct Item gItemsInfo[] = { .name = _("TM07"), .price = 3000, + #if B_PREFERRED_ICE_WEATHER == B_ICE_WEATHER_SNOW + .description = COMPOUND_STRING( + "Raises the Defense\n" + "of Ice type {PKMN}\n" + "for 5 turns."), + #else .description = COMPOUND_STRING( "Creates a hailstorm\n" "that damages all\n" "types except Ice."), + #endif .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, @@ -13612,7 +13653,7 @@ const struct Item gItemsInfo[] = { .name = _("Fairy Feather"), .price = 1000, - .holdEffect = HOLD_EFFECT_FAIRY_POWER, + .holdEffect = HOLD_EFFECT_TYPE_POWER, .holdEffectParam = TYPE_BOOST_PARAM, .description = COMPOUND_STRING( "A hold item that\n" @@ -13621,6 +13662,7 @@ const struct Item gItemsInfo[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .secondaryId = TYPE_FAIRY, .flingPower = 10, .iconPic = gItemIcon_FairyFeather, .iconPalette = gItemIconPalette_FairyFeather, diff --git a/src/data/moves_info.h b/src/data/moves_info.h index 1eab939154..0b61900109 100644 --- a/src/data/moves_info.h +++ b/src/data/moves_info.h @@ -29,13 +29,19 @@ static const u8 sMegaDrainDescription[] = _( "An attack that absorbs\n" "half the damage inflicted."); +#if B_SKIP_RECHARGE != GEN_1 static const u8 sHyperBeamDescription[] = _( "Powerful, but leaves the\n" "user immobile the next turn."); +#else +static const u8 sHyperBeamDescription[] = _( + "Leaves the user immobile\n" + "if target is not KO'd."); +#endif static const u8 sRevengeDescription[] = _( - "An attack that gains power\n" - "if injured by the foe."); + "An attack that moves last\n" + "and gains power if hit."); static const u8 sPluckDescription[] = _( "Eats the foe's held Berry\n" @@ -58,8 +64,8 @@ static const u8 sStormThrowDescription[] = _( "in a critical hit."); static const u8 sCircleThrowDescription[] = _( - "Knocks the foe away to end\n" - "the battle."); + "Knocks foe away to switch\n" + "it out or end wild battle."); static const u8 sChipAwayDescription[] = _( "Strikes through the foe's\n" @@ -412,7 +418,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .name = COMPOUND_STRING("Guillotine"), .description = COMPOUND_STRING( "A powerful pincer attack\n" - "that may cause fainting."), + "that KOs if it hits."), .effect = EFFECT_OHKO, .power = 1, .type = TYPE_NORMAL, @@ -434,8 +440,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = { .name = COMPOUND_STRING("Razor Wind"), .description = COMPOUND_STRING( - "A 2-turn move that strikes\n" - "the foe on the 2nd turn."), + "A 2-turn move with a high\n" + "critical-hit ratio."), .effect = EFFECT_TWO_TURNS_ATTACK, .power = 80, .type = TYPE_NORMAL, @@ -554,8 +560,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = { .name = COMPOUND_STRING("Whirlwind"), .description = COMPOUND_STRING( - "Blows away the foe with\n" - "wind and ends the battle."), + "Blows away the foe, switches\n" + "it out or ends wild battle."), .effect = EFFECT_ROAR, .power = 0, .type = TYPE_NORMAL, @@ -797,7 +803,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .name = COMPOUND_STRING("Rolling Kick"), .description = COMPOUND_STRING( "A fast kick delivered from\n" - "a rapid spin."), + "a rapid spin. May flinch."), .effect = EFFECT_HIT, .power = 60, .type = TYPE_FIGHTING, @@ -1027,15 +1033,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .description = COMPOUND_STRING( "A reckless charge attack\n" "that also hurts the user."), - .effect = EFFECT_HIT, + .effect = EFFECT_RECOIL, .power = 90, .type = TYPE_NORMAL, .accuracy = 85, - .recoil = 25, .pp = 20, .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, + .argument = { .recoilPercentage = 25 }, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -1079,15 +1085,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .description = COMPOUND_STRING( "A life-risking tackle that\n" "also hurts the user."), - .effect = EFFECT_HIT, + .effect = EFFECT_RECOIL, .power = 120, .type = TYPE_NORMAL, .accuracy = 100, - .recoil = 33, .pp = 15, .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, + .argument = { .recoilPercentage = 33 }, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -1149,8 +1155,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = { .name = COMPOUND_STRING("Twineedle"), .description = COMPOUND_STRING( - "Stingers on the forelegs\n" - "jab the foe twice."), + "Foreleg stingers jab foe\n" + "twice. May poison."), .effect = EFFECT_HIT, .power = 25, .type = TYPE_BUG, @@ -1198,7 +1204,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = { .name = COMPOUND_STRING("Leer"), .description = COMPOUND_STRING( - "Frightens the foe with a\n" + "Frightens the foes with a\n" "leer to lower Defense."), .effect = EFFECT_DEFENSE_DOWN, .power = 0, @@ -1274,8 +1280,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = { .name = COMPOUND_STRING("Roar"), .description = COMPOUND_STRING( - "Makes the foe flee to end\n" - "the battle."), + "Switches the foe out\n" + "or ends wild battle."), .effect = EFFECT_ROAR, .power = 0, .type = TYPE_NORMAL, @@ -1305,7 +1311,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .description = COMPOUND_STRING( "A soothing song lulls the\n" "foe into a deep slumber."), - .effect = EFFECT_SLEEP, + .effect = EFFECT_NON_VOLATILE_STATUS, .power = 0, .type = TYPE_NORMAL, .accuracy = 55, @@ -1313,6 +1319,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_STATUS, + .argument = { .nonVolatileStatus = MOVE_EFFECT_SLEEP }, .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .magicCoatAffected = TRUE, @@ -1378,8 +1385,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = { .name = COMPOUND_STRING("Disable"), .description = COMPOUND_STRING( - "Psychically disables one of\n" - "the foe's moves."), + #if B_DISABLE_TURNS >= GEN_5 + "For 4 turns, prevents foe\n" + #elif B_DISABLE_TURNS == GEN_4 + "For 4-7 turns, prevents foe\n" + #else + "For 2-5 turns, prevents foe\n" + #endif + "from using last used move."), #if B_UPDATED_MOVE_DATA >= GEN_5 .accuracy = 100, #elif B_UPDATED_MOVE_DATA == GEN_4 @@ -1490,7 +1503,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .name = COMPOUND_STRING("Mist"), .description = COMPOUND_STRING( "Creates a mist that stops\n" - "reduction of abilities."), + "reduction of stats."), .effect = EFFECT_MIST, .power = 0, .type = TYPE_ICE, @@ -1559,7 +1572,11 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .name = COMPOUND_STRING("Surf"), .description = COMPOUND_STRING( "Creates a huge wave, then\n" - "crashes it down on the foe."), + #if B_UPDATED_MOVE_DATA >= GEN_4 + "crashes it down on the field."), + #else + "crashes it down on the foes."), + #endif .effect = EFFECT_HIT, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 90 : 95, .type = TYPE_WATER, @@ -1614,13 +1631,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = { .name = COMPOUND_STRING("Blizzard"), .description = COMPOUND_STRING( - "Hits the foe with an icy\n" + "Hits the foes with an icy\n" #if B_USE_FROSTBITE == TRUE "storm. May cause frostbite."), #else "storm that may freeze it."), #endif - .effect = B_BLIZZARD_HAIL >= GEN_4 ? EFFECT_BLIZZARD : EFFECT_HIT, + .effect = EFFECT_HIT, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 110 : 120, .type = TYPE_ICE, .accuracy = 70, @@ -1629,6 +1646,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, .windMove = TRUE, + .alwaysHitsInHailSnow = B_BLIZZARD_HAIL >= GEN_4, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_FREEZE_OR_FROSTBITE, .chance = 10, @@ -1793,16 +1811,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .description = COMPOUND_STRING( "A reckless body slam that\n" "also hurts the user."), - .effect = EFFECT_HIT, + .effect = EFFECT_RECOIL, .power = 80, .type = TYPE_FIGHTING, .accuracy = 80, .pp = B_UPDATED_MOVE_DATA >= GEN_6 ? 20 : 25, - .recoil = 25, .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, + .argument = { .recoilPercentage = 25 }, .contestEffect = CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, @@ -2015,7 +2033,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = { .name = COMPOUND_STRING("Razor Leaf"), .description = COMPOUND_STRING( - "Cuts the enemy with leaves.\n" + "Cuts enemies with leaves.\n" "High critical-hit ratio."), .effect = EFFECT_HIT, .power = 55, @@ -2066,7 +2084,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .description = COMPOUND_STRING( "Scatters a toxic powder\n" "that may poison the foe."), - .effect = EFFECT_POISON, + .effect = EFFECT_NON_VOLATILE_STATUS, .power = 0, .type = TYPE_POISON, .accuracy = 75, @@ -2074,6 +2092,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_STATUS, + .argument = { .nonVolatileStatus = MOVE_EFFECT_POISON }, .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, .magicCoatAffected = TRUE, .powderMove = TRUE, @@ -2091,7 +2110,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .description = COMPOUND_STRING( "Scatters a powder that may\n" "paralyze the foe."), - .effect = EFFECT_PARALYZE, + .effect = EFFECT_NON_VOLATILE_STATUS, .power = 0, .type = TYPE_GRASS, .accuracy = 75, @@ -2101,6 +2120,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .category = DAMAGE_CATEGORY_STATUS, .zMove = { .effect = Z_EFFECT_SPDEF_UP_1 }, .magicCoatAffected = TRUE, + .argument = { .nonVolatileStatus = MOVE_EFFECT_PARALYSIS }, .powderMove = TRUE, .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, .contestCategory = CONTEST_CATEGORY_SMART, @@ -2116,7 +2136,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .description = COMPOUND_STRING( "Scatters a powder that may\n" "cause the foe to sleep."), - .effect = EFFECT_SLEEP, + .effect = EFFECT_NON_VOLATILE_STATUS, .power = 0, .type = TYPE_GRASS, .accuracy = 75, @@ -2124,6 +2144,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_STATUS, + .argument = { .nonVolatileStatus = MOVE_EFFECT_SLEEP }, .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, .magicCoatAffected = TRUE, .powderMove = TRUE, @@ -2300,7 +2321,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .description = COMPOUND_STRING( "A weak jolt of electricity\n" "that paralyzes the foe."), - .effect = EFFECT_PARALYZE, + .effect = EFFECT_NON_VOLATILE_STATUS, .power = 0, .type = TYPE_ELECTRIC, .accuracy = B_UPDATED_MOVE_DATA >= GEN_7 ? 90 : 100, @@ -2308,6 +2329,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_STATUS, + .argument = { .nonVolatileStatus = MOVE_EFFECT_PARALYSIS }, .zMove = { .effect = Z_EFFECT_SPDEF_UP_1 }, .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, @@ -2324,7 +2346,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .description = COMPOUND_STRING( "A lightning attack that may\n" "cause paralysis."), - .effect = EFFECT_THUNDER, + .effect = EFFECT_HIT, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 110 : 120, .type = TYPE_ELECTRIC, .accuracy = 70, @@ -2333,6 +2355,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, .damagesAirborne = TRUE, + .alwaysHitsInRain = TRUE, + .accuracy50InSun = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_PARALYSIS, .chance = 30, @@ -2370,8 +2394,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = { .name = COMPOUND_STRING("Earthquake"), .description = COMPOUND_STRING( - "A powerful quake, but has\n" - "no effect on flying foes."), + "A powerful quake that\n" + "hits all other POKéMON."), .effect = EFFECT_EARTHQUAKE, .power = 100, .type = TYPE_GROUND, @@ -2449,7 +2473,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .description = COMPOUND_STRING( "Poisons the foe with an\n" "intensifying toxin."), - .effect = EFFECT_TOXIC, + .effect = EFFECT_NON_VOLATILE_STATUS, .power = 0, .type = TYPE_POISON, .accuracy = B_UPDATED_MOVE_DATA >= GEN_5 ? 90 : 85, @@ -2457,6 +2481,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_STATUS, + .argument = { .nonVolatileStatus = MOVE_EFFECT_TOXIC }, .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, @@ -2524,7 +2549,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .description = COMPOUND_STRING( "A hypnotizing move that\n" "may induce sleep."), - .effect = EFFECT_SLEEP, + .effect = EFFECT_NON_VOLATILE_STATUS, .power = 0, .type = TYPE_PSYCHIC, .accuracy = 60, @@ -2532,6 +2557,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_STATUS, + .argument = { .nonVolatileStatus = MOVE_EFFECT_SLEEP }, .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, @@ -2642,9 +2668,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = [MOVE_TELEPORT] = { .name = COMPOUND_STRING("Teleport"), + #if B_TELEPORT_BEHAVIOUR >= GEN_8 + .description = COMPOUND_STRING( + "Switches the user out last.\n" + "Flees when used by wild {PKMN}.") + #else .description = COMPOUND_STRING( "A psychic move for fleeing\n" "from battle instantly."), + #endif .effect = EFFECT_TELEPORT, .power = 0, .type = TYPE_PSYCHIC, @@ -2689,7 +2721,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = { .name = COMPOUND_STRING("Mimic"), .description = COMPOUND_STRING( - "Copies a move used by the\n" + "Copies last move used by the\n" "foe during one battle."), .effect = EFFECT_MIMIC, .power = 0, @@ -2831,8 +2863,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = { .name = COMPOUND_STRING("Minimize"), .description = COMPOUND_STRING( - "Minimizes the user's size\n" - "to raise evasiveness."), + "Minimizes the user's size to\n" + #if B_MINIMIZE_EVASION >= GEN_5 + "sharply raise evasiveness."), + #else + "raise evasiveness."), + #endif .effect = EFFECT_MINIMIZE, .power = 0, .type = TYPE_NORMAL, @@ -2983,8 +3019,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = { .name = COMPOUND_STRING("Light Screen"), .description = COMPOUND_STRING( - "Creates a wall of light that\n" - "lowers Sp. Atk damage."), + "Wall of light cuts special\n" + "damage for 5 turns."), .effect = EFFECT_LIGHT_SCREEN, .power = 0, .type = TYPE_PSYCHIC, @@ -3035,8 +3071,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = { .name = COMPOUND_STRING("Reflect"), .description = COMPOUND_STRING( - "Creates a wall of light that\n" - "weakens physical attacks."), + "Wall of light cuts physical\n" + "damage for 5 turns."), .effect = EFFECT_REFLECT, .power = 0, .type = TYPE_PSYCHIC, @@ -3348,8 +3384,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = { .name = COMPOUND_STRING("Waterfall"), .description = COMPOUND_STRING( - "Charges the foe with speed\n" - "to climb waterfalls."), + "Charges with speed to climb\n" + "waterfalls. May flinch."), .effect = EFFECT_HIT, .power = 80, .type = TYPE_WATER, @@ -3620,13 +3656,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = #else .accuracy = 75, #endif - .effect = EFFECT_PARALYZE, + .effect = EFFECT_NON_VOLATILE_STATUS, .power = 0, .type = TYPE_NORMAL, .pp = 30, .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_STATUS, + .argument = { .nonVolatileStatus = MOVE_EFFECT_PARALYSIS }, .zMove = { .effect = Z_EFFECT_SPDEF_UP_1 }, .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, @@ -3665,7 +3702,11 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = { .name = COMPOUND_STRING("Poison Gas"), .description = COMPOUND_STRING( + #if B_UPDATED_MOVE_DATA >= GEN_5 + "Envelops the foes in a toxic\n" + #else "Envelops the foe in a toxic\n" + #endif "gas that may poison."), #if B_UPDATED_MOVE_DATA >= GEN_6 .accuracy = 90, @@ -3674,13 +3715,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = #else .accuracy = 55, #endif - .effect = EFFECT_POISON, + .effect = EFFECT_NON_VOLATILE_STATUS, .power = 0, .type = TYPE_POISON, .pp = 40, .target = B_UPDATED_MOVE_DATA >= GEN_5 ? MOVE_TARGET_BOTH : MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_STATUS, + .argument = { .nonVolatileStatus = MOVE_EFFECT_POISON }, .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, @@ -3743,7 +3785,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .description = COMPOUND_STRING( "Demands a kiss with a scary\n" "face that induces sleep."), - .effect = EFFECT_SLEEP, + .effect = EFFECT_NON_VOLATILE_STATUS, .power = 0, .type = TYPE_NORMAL, .accuracy = 75, @@ -3751,6 +3793,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_STATUS, + .argument = { .nonVolatileStatus = MOVE_EFFECT_SLEEP }, .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, @@ -3765,8 +3808,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = { .name = COMPOUND_STRING("Sky Attack"), .description = COMPOUND_STRING( - "Searches out weak spots,\n" - "then strikes the next turn."), + "2-turn attack. High critical\n" + "hit ratio, and may flinch."), .effect = EFFECT_TWO_TURNS_ATTACK, .power = 140, .type = TYPE_FLYING, @@ -3883,7 +3926,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .description = COMPOUND_STRING( "Scatters a cloud of spores\n" "that always induce sleep."), - .effect = EFFECT_SLEEP, + .effect = EFFECT_NON_VOLATILE_STATUS, .power = 0, .type = TYPE_GRASS, .accuracy = 100, @@ -3891,6 +3934,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_STATUS, + .argument = { .nonVolatileStatus = MOVE_EFFECT_SLEEP }, .zMove = { .effect = Z_EFFECT_RESET_STATS }, .magicCoatAffected = TRUE, .powderMove = TRUE, @@ -4203,7 +4247,11 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .name = COMPOUND_STRING("Conversion"), .description = COMPOUND_STRING( "Changes the user's type\n" + #if B_UPDATED_CONVERSION >= GEN_6 + "into first known move's type."), + #else "into a known move's type."), + #endif .effect = EFFECT_CONVERSION, .power = 0, .type = TYPE_NORMAL, @@ -4228,8 +4276,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = { .name = COMPOUND_STRING("Tri Attack"), .description = COMPOUND_STRING( - "Fires three types of beams\n" - "at the same time."), + "Fires three types of beams.\n" + #if B_USE_FROSTBITE == TRUE + "May burn/para/frostbite."), + #else + "May burn/paralyze/freeze."), + #endif .effect = EFFECT_HIT, .power = 80, .type = TYPE_NORMAL, @@ -4341,9 +4393,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .self = TRUE, }), #else - .effect = EFFECT_HIT, + .effect = EFFECT_RECOIL, .accuracy = 100, - .recoil = 25, + .argument = { .recoilPercentage = 25 }, #endif .power = 50, .type = TYPE_NORMAL, @@ -4438,14 +4490,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, + .additionalEffects = ADDITIONAL_EFFECTS({ + .moveEffect = MOVE_EFFECT_STEAL_ITEM, + }), .ignoresKingsRock = (B_UPDATED_MOVE_FLAGS == GEN_3 || B_UPDATED_MOVE_FLAGS == GEN_4), .meFirstBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, .assistBanned = TRUE, - .additionalEffects = ADDITIONAL_EFFECTS({ - .moveEffect = MOVE_EFFECT_STEAL_ITEM, - }), .contestEffect = CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONES, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, @@ -4557,8 +4609,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = { .name = COMPOUND_STRING("Snore"), .description = COMPOUND_STRING( - "A loud attack that can be\n" - "used only while asleep."), + "A loud attack that can only\n" + "be used asleep. May flinch."), .effect = EFFECT_SNORE, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 50 : 40, .type = TYPE_NORMAL, @@ -4685,7 +4737,11 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = { .name = COMPOUND_STRING("Cotton Spore"), .description = COMPOUND_STRING( + #if B_UPDATED_MOVE_DATA >= GEN_6 + "Spores cling to the foes,\n" + #else "Spores cling to the foe,\n" + #endif "sharply reducing Speed."), .effect = EFFECT_SPEED_DOWN_2, .power = 0, @@ -4734,7 +4790,11 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .name = COMPOUND_STRING("Spite"), .description = COMPOUND_STRING( "Spitefully cuts the PP\n" - "of the foe's last move."), + #if B_PP_REDUCED_BY_SPITE >= GEN_4 + "of the foe's last move by 4."), + #else + "of foe's last move by 2-5."), + #endif .effect = EFFECT_SPITE, .power = 0, .type = TYPE_GHOST, @@ -4758,7 +4818,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = { .name = COMPOUND_STRING("Powder Snow"), .description = COMPOUND_STRING( - "Blasts the foe with a snowy\n" + "Blasts the foes with a snowy\n" #if B_USE_FROSTBITE == TRUE "gust. May cause frostbite."), #else @@ -4795,6 +4855,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .target = MOVE_TARGET_USER, .priority = B_UPDATED_MOVE_DATA >= GEN_5 ? 4 : 3, .category = DAMAGE_CATEGORY_STATUS, + .argument = { .protectMethod = PROTECT_NORMAL }, .zMove = { .effect = Z_EFFECT_RESET_STATS }, .metronomeBanned = TRUE, .copycatBanned = TRUE, @@ -4907,7 +4968,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .name = COMPOUND_STRING("Belly Drum"), .description = COMPOUND_STRING( "Maximizes Attack while\n" - "sacrificing HP."), + "sacrificing half of max HP."), .effect = EFFECT_BELLY_DRUM, .power = 0, .type = TYPE_NORMAL, @@ -5183,6 +5244,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .target = MOVE_TARGET_USER, .priority = B_UPDATED_MOVE_DATA >= GEN_5 ? 4 : 3, .category = DAMAGE_CATEGORY_STATUS, + .argument = { .protectMethod = PROTECT_NORMAL }, .zMove = { .effect = Z_EFFECT_EVSN_UP_1 }, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, @@ -5423,7 +5485,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .name = COMPOUND_STRING("Swagger"), .description = COMPOUND_STRING( "Confuses the foe, but also\n" - "sharply raises Attack."), + "sharply raises its Attack."), .effect = EFFECT_SWAGGER, .power = 0, .type = TYPE_NORMAL, @@ -5736,8 +5798,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = { .name = COMPOUND_STRING("Safeguard"), .description = COMPOUND_STRING( - "A mystical force prevents\n" - "all status problems."), + "Protects allies from status\n" + "problems for 5 turns."), .effect = EFFECT_SAFEGUARD, .power = 0, .type = TYPE_NORMAL, @@ -5886,8 +5948,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = { .name = COMPOUND_STRING("Dragon Breath"), .description = COMPOUND_STRING( - "Strikes the foe with an\n" - "incredible blast of breath."), + "Strikes the foe with a blast\n" + "of breath. May paralyze."), .effect = EFFECT_HIT, .power = 60, .type = TYPE_DRAGON, @@ -5939,7 +6001,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .name = COMPOUND_STRING("Encore"), .description = COMPOUND_STRING( "Makes the foe repeat its\n" - "last move over 2 to 6 turns."), + "last move over 3 turns."), .effect = EFFECT_ENCORE, .power = 0, .type = TYPE_NORMAL, @@ -5988,8 +6050,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = { .name = COMPOUND_STRING("Rapid Spin"), .description = COMPOUND_STRING( - "Spins the body at high\n" - "speed to strike the foe."), + "Spins attack that removes\n" + #if B_SPEED_BUFFING_RAPID_SPIN >= GEN_8 + "some effects and ups speed."), + #else + "certain effects."), + #endif .effect = EFFECT_RAPID_SPIN, .power = B_UPDATED_MOVE_DATA >= GEN_8 ? 50 : 20, .type = TYPE_NORMAL, @@ -6020,8 +6086,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = { .name = COMPOUND_STRING("Sweet Scent"), .description = COMPOUND_STRING( - "Allures the foe to reduce\n" + #if B_UPDATED_MOVE_DATA >= GEN_6 + "Allures the foes to harshly\n" + "reduce evasiveness."), + #else + "Allures the foes to reduce\n" "evasiveness."), + #endif .effect = B_UPDATED_MOVE_DATA >= GEN_6 ? EFFECT_EVASION_DOWN_2 : EFFECT_EVASION_DOWN, .power = 0, .type = TYPE_NORMAL, @@ -6203,8 +6274,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = { .name = COMPOUND_STRING("Hidden Power"), .description = COMPOUND_STRING( - "The effectiveness varies\n" + #if B_HIDDEN_POWER_DMG >= GEN_6 + "The type varies\n" "with the user."), + #else + "The type and effectiveness\n" + "vary with the user."), + #endif .power = B_HIDDEN_POWER_DMG >= GEN_6 ? 60 : 1, .effect = EFFECT_HIDDEN_POWER, .type = TYPE_NORMAL, @@ -6250,7 +6326,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .name = COMPOUND_STRING("Twister"), .description = COMPOUND_STRING( "Whips up a vicious twister\n" - "to tear at the foe."), + "to tear at foes. May flinch."), .effect = EFFECT_HIT, .power = 40, .type = TYPE_DRAGON, @@ -6388,7 +6464,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = { .name = COMPOUND_STRING("Psych Up"), .description = COMPOUND_STRING( - "Copies the foe's effect(s)\n" + "Copies foe's stat changes\n" "and gives to the user."), .effect = EFFECT_PSYCH_UP, .power = 0, @@ -6598,8 +6674,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = { .name = COMPOUND_STRING("Fake Out"), .description = COMPOUND_STRING( - "A 1st-turn, 1st-strike move\n" - "that causes flinching."), + "Moves 1st and flinches. Only\n" + "works on user's 1st turn."), .priority = B_UPDATED_MOVE_DATA >= GEN_5 ? 3 : 1, .makesContact = B_UPDATED_MOVE_DATA >= GEN_4, .effect = EFFECT_FIRST_TURN_ONLY, @@ -6736,7 +6812,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .name = COMPOUND_STRING("Heat Wave"), .description = COMPOUND_STRING( "Exhales a hot breath on the\n" - "foe. May inflict a burn."), + "foes. May inflict a burn."), .effect = EFFECT_HIT, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 95 : 100, .type = TYPE_FIRE, @@ -6761,10 +6837,17 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = [MOVE_HAIL] = { .name = COMPOUND_STRING("Hail"), - .description = COMPOUND_STRING( - "Summons a hailstorm that\n" - "strikes every turn."), - .effect = EFFECT_HAIL, + #if B_PREFERRED_ICE_WEATHER == B_ICE_WEATHER_SNOW + .description = COMPOUND_STRING( + "Summons a snowstorm that\n" + "lasts for five turns."), + .effect = EFFECT_SNOWSCAPE, + #else + .description = COMPOUND_STRING( + "Summons a hailstorm that\n" + "strikes every turn."), + .effect = EFFECT_HAIL, + #endif .power = 0, .type = TYPE_ICE, .accuracy = 0, @@ -6779,7 +6862,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = COMBO_STARTER_HAIL, .contestComboMoves = {0}, - .battleAnimScript = gBattleAnimMove_Hail, + .battleAnimScript = (B_PREFERRED_ICE_WEATHER == B_ICE_WEATHER_SNOW) ? gBattleAnimMove_Snowscape : gBattleAnimMove_Hail, .validApprenticeMove = TRUE, }, @@ -6837,7 +6920,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .description = COMPOUND_STRING( "Inflicts a burn on the foe\n" "with intense fire."), - .effect = EFFECT_WILL_O_WISP, + .effect = EFFECT_NON_VOLATILE_STATUS, .power = 0, .type = TYPE_FIRE, .accuracy = B_UPDATED_MOVE_DATA >= GEN_6 ? 85 : 75, @@ -6845,6 +6928,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_STATUS, + .argument = { .nonVolatileStatus = MOVE_EFFECT_BURN }, .zMove = { .effect = Z_EFFECT_ATK_UP_1 }, .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, @@ -6859,8 +6943,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = { .name = COMPOUND_STRING("Memento"), .description = COMPOUND_STRING( - "The user faints and lowers\n" - "the foe's abilities."), + "The user faints and harshly\n" + "lowers foes Atk and Sp.Atk."), .effect = EFFECT_MEMENTO, .power = 0, .type = TYPE_DARK, @@ -6882,7 +6966,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = { .name = COMPOUND_STRING("Facade"), .description = COMPOUND_STRING( - "Boosts Attack when burned,\n" + "Boosts power when burned,\n" "paralyzed, or poisoned."), .effect = EFFECT_FACADE, .power = 70, @@ -6905,7 +6989,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = { .name = COMPOUND_STRING("Focus Punch"), .description = COMPOUND_STRING( - "A powerful loyalty attack.\n" + "Powerful attack, moves last.\n" "The user flinches if hit."), .effect = EFFECT_FOCUS_PUNCH, .power = 150, @@ -7021,7 +7105,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .name = COMPOUND_STRING("Charge"), .description = COMPOUND_STRING( "Charges power to boost the\n" - "electric move used next."), + "Electric move used next."), .effect = EFFECT_CHARGE, .power = 0, .type = TYPE_ELECTRIC, @@ -7071,7 +7155,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = { .name = COMPOUND_STRING("Helping Hand"), .description = COMPOUND_STRING( - "Boosts the power of the\n" + "Boosts the power of ally\n" "recipient's moves."), .effect = EFFECT_HELPING_HAND, .power = 0, @@ -7127,7 +7211,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .name = COMPOUND_STRING("Role Play"), .description = COMPOUND_STRING( "Mimics the target and\n" - "copies its special ability."), + "copies its Ability."), .effect = EFFECT_ROLE_PLAY, .power = 0, .type = TYPE_PSYCHIC, @@ -7369,6 +7453,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_STATUS, + .argument = { .nonVolatileStatus = MOVE_EFFECT_SLEEP }, .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, .magicCoatAffected = TRUE, .contestEffect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, @@ -7394,9 +7479,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, - .additionalEffects = ADDITIONAL_EFFECTS({ - .moveEffect = MOVE_EFFECT_KNOCK_OFF, - }), .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, @@ -7409,8 +7491,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = { .name = COMPOUND_STRING("Endeavor"), .description = COMPOUND_STRING( - "Gains power if the user's HP\n" - "is lower than the foe's HP."), + "Cuts foe's HP to equal\n" + "user's HP."), .effect = EFFECT_ENDEAVOR, .power = 1, .type = TYPE_NORMAL, @@ -7689,7 +7771,11 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = { .name = COMPOUND_STRING("Tail Glow"), .description = COMPOUND_STRING( + #if B_UPDATED_MOVE_DATA >= GEN_5 + "Flash light that drastically\n" + #else "Flashes a light that sharply\n" + #endif "raises Sp. Atk."), .effect = B_UPDATED_MOVE_DATA >= GEN_5 ? EFFECT_SPECIAL_ATTACK_UP_3 : EFFECT_SPECIAL_ATTACK_UP_2, .power = 0, @@ -7847,7 +7933,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .name = COMPOUND_STRING("Mud Sport"), .description = COMPOUND_STRING( "Covers the user in mud to\n" - "raise electrical resistance."), + "weaken all Electric moves."), + // in theory this should mention 5 turns (gen 6+) .effect = EFFECT_MUD_SPORT, .power = 0, .type = TYPE_GROUND, @@ -8265,8 +8352,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = { .name = COMPOUND_STRING("Odor Sleuth"), .description = COMPOUND_STRING( - "Negates the foe's efforts\n" - "to heighten evasiveness."), + "Negate evasiveness and\n" + "Ghost type's immunities."), .effect = EFFECT_FORESIGHT, .power = 0, .type = TYPE_NORMAL, @@ -8372,7 +8459,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .description = COMPOUND_STRING( "Lulls the foe into sleep\n" "with a pleasant melody."), - .effect = EFFECT_SLEEP, + .effect = EFFECT_NON_VOLATILE_STATUS, .power = 0, .type = TYPE_GRASS, .accuracy = 55, @@ -8380,6 +8467,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_STATUS, + .argument = { .nonVolatileStatus = MOVE_EFFECT_SLEEP }, .zMove = { .effect = Z_EFFECT_SPD_UP_1 }, .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .magicCoatAffected = TRUE, @@ -8737,8 +8825,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = { .name = COMPOUND_STRING("Block"), .description = COMPOUND_STRING( - "Blocks the foe's way to\n" - "prevent escape."), + "Blocks the foe's way and\n" + "prevents escape."), .effect = EFFECT_MEAN_LOOK, .power = 0, .type = TYPE_NORMAL, @@ -8979,18 +9067,24 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = [MOVE_VOLT_TACKLE] = { .name = COMPOUND_STRING("Volt Tackle"), + #if B_UPDATED_MOVE_DATA >= GEN_4 + .description = COMPOUND_STRING( + "A life-risking tackle that\n" + "hurts the user. May paralyze."), + #else .description = COMPOUND_STRING( "A life-risking tackle that\n" "slightly hurts the user."), + #endif .effect = EFFECT_HIT, .power = 120, .type = TYPE_ELECTRIC, .accuracy = 100, - .recoil = 33, .pp = 15, .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, + .argument = { .recoilPercentage = 33 }, .makesContact = TRUE, #if B_UPDATED_MOVE_DATA >= GEN_4 .additionalEffects = ADDITIONAL_EFFECTS({ @@ -9033,7 +9127,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .name = COMPOUND_STRING("Water Sport"), .description = COMPOUND_STRING( "The user becomes soaked to\n" - "raise resistance to fire."), + "weaken all Fire moves."), + // in theory this should mention 5 turns (gen6+) .effect = EFFECT_WATER_SPORT, .power = 0, .type = TYPE_WATER, @@ -9207,7 +9302,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = { .name = COMPOUND_STRING("Doom Desire"), .description = COMPOUND_STRING( - "Summons strong sunlight to\n" + "Summons strong light to\n" "attack 2 turns later."), .effect = EFFECT_FUTURE_SIGHT, .power = B_UPDATED_MOVE_DATA >= GEN_5 ? 140 : 120, @@ -9309,7 +9404,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .name = COMPOUND_STRING("Miracle Eye"), .description = COMPOUND_STRING( "Negate evasiveness and\n" - "Dark-type's immunities."), + "Dark type's immunities."), .effect = EFFECT_MIRACLE_EYE, .power = 0, .type = TYPE_PSYCHIC, @@ -9333,7 +9428,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .name = COMPOUND_STRING("Wake-Up Slap"), .description = COMPOUND_STRING( "Powerful against sleeping\n" - "foes, but also heals them."), + "foes, but also wakes them."), .effect = EFFECT_DOUBLE_POWER_ON_ARG_STATUS, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 70 : 60, .type = TYPE_FIGHTING, @@ -9432,7 +9527,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .name = COMPOUND_STRING("Brine"), .description = COMPOUND_STRING( "Does double damage to foes\n" - "with half HP."), + "with half HP or less."), .effect = EFFECT_BRINE, .power = 65, .type = TYPE_WATER, @@ -9523,8 +9618,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = { .name = COMPOUND_STRING("Tailwind"), .description = COMPOUND_STRING( - "Whips up a turbulent breeze\n" - "that raises Speed."), + "Whips up a breeze, doubling\n" + #if B_TAILWIND_TURNS >= GEN_5 + "ally Speed for 4 turns."), + #else + "ally Speed for 3 turns."), + #endif .effect = EFFECT_TAILWIND, .power = 0, .type = TYPE_FLYING, @@ -9773,8 +9872,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = { .name = COMPOUND_STRING("Heal Block"), .description = COMPOUND_STRING( - "Prevents the foe from\n" - "recovering any HP."), + "Prevents the foes from\n" + "recovering HP for 5 turns."), .effect = EFFECT_HEAL_BLOCK, .power = 0, .type = TYPE_PSYCHIC, @@ -9842,7 +9941,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .name = COMPOUND_STRING("Gastro Acid"), .description = COMPOUND_STRING( "Stomach acid suppresses\n" - "the foe's ability."), + "the foe's Ability."), .effect = EFFECT_GASTRO_ACID, .power = 0, .type = TYPE_POISON, @@ -9998,8 +10097,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = { .name = COMPOUND_STRING("Punishment"), .description = COMPOUND_STRING( - "Does more damage if the\n" - "foe has powered up."), + "Does more damage the more\n" + "the foe has powered up."), .effect = EFFECT_PUNISHMENT, .power = 60, .type = TYPE_DARK, @@ -10188,15 +10287,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .description = COMPOUND_STRING( "A charge that may burn the\n" "foe. Also hurts the user."), - .effect = EFFECT_HIT, + .effect = EFFECT_RECOIL, .power = 120, .type = TYPE_FIRE, .accuracy = 100, - .recoil = 33, .pp = 15, .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, + .argument = { .recoilPercentage = 33 }, .makesContact = TRUE, .thawsUser = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ @@ -10652,15 +10751,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .description = COMPOUND_STRING( "A low altitude charge that\n" "also hurts the user."), - .effect = EFFECT_HIT, + .effect = EFFECT_RECOIL, .power = 120, .type = TYPE_FLYING, .accuracy = 100, - .recoil = 33, .pp = 15, .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, + .argument = { .recoilPercentage = 33 }, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, .contestCategory = CONTEST_CATEGORY_CUTE, @@ -10817,7 +10916,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .name = COMPOUND_STRING("Ice Shard"), .description = COMPOUND_STRING( "Hurls a chunk of ice that\n" - "always strike first."), + "always strikes first."), .effect = EFFECT_HIT, .power = 40, .type = TYPE_ICE, @@ -11202,8 +11301,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = { .name = COMPOUND_STRING("Discharge"), .description = COMPOUND_STRING( - "Zaps the foes with electri-\n" - "city. May paralyze them."), + "Zaps all other {PKMN} with\n" + "electricity. May paralyze."), .effect = EFFECT_HIT, .power = 80, .type = TYPE_ELECTRIC, @@ -11629,15 +11728,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .description = COMPOUND_STRING( "Slams the body into a foe.\n" "The user gets hurt too."), - .effect = EFFECT_HIT, + .effect = EFFECT_RECOIL, .power = 120, .type = TYPE_GRASS, .accuracy = 100, - .recoil = 33, .pp = 15, .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, + .argument = { .recoilPercentage = 33 }, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -11747,15 +11846,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .description = COMPOUND_STRING( "A life-risking headbutt that\n" "seriously hurts the user."), - .effect = EFFECT_HIT, + .effect = EFFECT_RECOIL, .power = 150, .type = TYPE_ROCK, .accuracy = 80, - .recoil = 50, .pp = 5, .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, + .argument = { .recoilPercentage = 50 }, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -11906,7 +12005,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = { .name = COMPOUND_STRING("Dark Void"), .description = COMPOUND_STRING( - "Drags the foe into total\n" + "Drags the foes into total\n" "darkness, inducing Sleep."), .effect = EFFECT_DARK_VOID, .power = 0, @@ -11916,6 +12015,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .target = MOVE_TARGET_BOTH, .priority = 0, .category = DAMAGE_CATEGORY_STATUS, + .argument = { .nonVolatileStatus = MOVE_EFFECT_SLEEP }, .zMove = { .effect = Z_EFFECT_RESET_STATS }, .magicCoatAffected = TRUE, .sketchBanned = (B_SKETCH_BANS >= GEN_9), @@ -12046,7 +12146,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .target = MOVE_TARGET_USER, .priority = 3, .category = DAMAGE_CATEGORY_STATUS, - .argument = { .protect.side = TRUE, }, + .argument = { .protectMethod = PROTECT_WIDE_GUARD }, .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, .snatchAffected = TRUE, .ignoresProtect = TRUE, @@ -12275,7 +12375,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .description = COMPOUND_STRING( "Throws a rock to knock the\n" "foe down to the ground."), - .effect = EFFECT_HIT, + .effect = EFFECT_SMACK_DOWN, .power = 50, .type = TYPE_ROCK, .accuracy = 100, @@ -12285,9 +12385,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .category = DAMAGE_CATEGORY_PHYSICAL, .damagesAirborne = TRUE, .skyBattleBanned = TRUE, - .additionalEffects = ADDITIONAL_EFFECTS({ - .moveEffect = MOVE_EFFECT_SMACK_DOWN, - }), .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, @@ -12345,7 +12442,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = { .name = COMPOUND_STRING("Sludge Wave"), .description = COMPOUND_STRING( - "Swamps the foe with a wave\n" + "Swamps all others with a wave\n" "of sludge. May also poison."), .effect = EFFECT_HIT, .power = 95, @@ -12419,7 +12516,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .name = COMPOUND_STRING("Synchronoise"), .description = COMPOUND_STRING( "An odd shock wave that only\n" - "damages same-type foes."), + "damages same-type {PKMN}."), .effect = EFFECT_SYNCHRONOISE, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 120 : 70, .type = TYPE_PSYCHIC, @@ -12461,8 +12558,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = { .name = COMPOUND_STRING("Soak"), .description = COMPOUND_STRING( - "Sprays water at the foe\n" - "making it Water-type."), + "Sprays water at the foe,\n" + "changing it to Water type."), .effect = EFFECT_SOAK, .power = 0, .type = TYPE_WATER, @@ -12611,7 +12708,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .name = COMPOUND_STRING("Simple Beam"), .description = COMPOUND_STRING( "A beam that changes the\n" - "foe's ability to Simple."), + "foe's Ability to Simple."), .effect = EFFECT_SIMPLE_BEAM, .power = 0, .type = TYPE_NORMAL, @@ -12634,7 +12731,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .name = COMPOUND_STRING("Entrainment"), .description = COMPOUND_STRING( "Makes the foe mimic the\n" - "user, gaining its ability."), + "user, gaining its Ability."), .effect = EFFECT_ENTRAINMENT, .power = 0, .type = TYPE_NORMAL, @@ -12656,7 +12753,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = { .name = COMPOUND_STRING("After You"), .description = COMPOUND_STRING( - "Helps out the foe, letting\n" + "Helps out the target, letting\n" "it move next."), .effect = EFFECT_AFTER_YOU, .power = 0, @@ -12807,7 +12904,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .target = MOVE_TARGET_USER, .priority = 3, .category = DAMAGE_CATEGORY_STATUS, - .argument = { .protect.side = TRUE, }, + .argument = { .protectMethod = PROTECT_QUICK_GUARD, }, .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, .snatchAffected = TRUE, .ignoresProtect = TRUE, @@ -12874,8 +12971,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = { .name = COMPOUND_STRING("Shell Smash"), .description = COMPOUND_STRING( - "Raises offensive stats, but\n" - "lowers defensive stats."), + "Sharply raises Atk/Sp.Atk/\n" + "Speed, but drops Def/Sp.Def."), .effect = EFFECT_SHELL_SMASH, .power = 0, .type = TYPE_NORMAL, @@ -13298,7 +13395,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .name = COMPOUND_STRING("Struggle Bug"), .description = COMPOUND_STRING( "Resisting, the user attacks\n" - "the foe. Lowers Sp. Atk."), + "the foes. Lowers Sp. Atk."), .effect = EFFECT_HIT, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 50 : 30, .type = TYPE_BUG, @@ -13323,7 +13420,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .name = COMPOUND_STRING("Bulldoze"), .description = COMPOUND_STRING( "Stomps down on the ground.\n" - "Lowers Speed."), + "Hits all and lowers Speed."), .effect = EFFECT_EARTHQUAKE, .power = 60, .type = TYPE_GROUND, @@ -13415,7 +13512,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = { .name = COMPOUND_STRING("Electroweb"), .description = COMPOUND_STRING( - "Snares the foe with an\n" + "Snares the foes with an\n" "electric net. Lowers Speed."), .effect = EFFECT_HIT, .power = 55, @@ -13442,15 +13539,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .description = COMPOUND_STRING( "An electrical tackle that\n" "also hurts the user."), - .effect = EFFECT_HIT, + .effect = EFFECT_RECOIL, .power = 90, .type = TYPE_ELECTRIC, .accuracy = 100, - .recoil = 25, .pp = 15, .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, + .argument = { .recoilPercentage = 25 }, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, .contestCategory = CONTEST_CATEGORY_COOL, @@ -13772,7 +13869,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .description = COMPOUND_STRING( "Traps the foe in a fierce\n" "wind. May cause confusion."), - .effect = EFFECT_THUNDER, + .effect = EFFECT_HIT, .power = B_UPDATED_MOVE_DATA >= GEN_6 ? 110 : 120, .type = TYPE_FLYING, .accuracy = 70, @@ -13782,6 +13879,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .category = DAMAGE_CATEGORY_SPECIAL, .windMove = TRUE, .damagesAirborne = TRUE, + .alwaysHitsInRain = TRUE, + .accuracy50InSun = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_CONFUSION, .chance = 30, @@ -13799,15 +13898,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .description = COMPOUND_STRING( "A charge using guard hair.\n" "It hurts the user a little."), - .effect = EFFECT_HIT, + .effect = EFFECT_RECOIL, .power = 120, .type = TYPE_NORMAL, .accuracy = 100, - .recoil = 25, .pp = 15, .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, + .argument = { .recoilPercentage = 25 }, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -13944,7 +14043,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .name = COMPOUND_STRING("Glaciate"), .description = COMPOUND_STRING( "Blows very cold air at the\n" - "foe. It lowers their Speed."), + "foes. It lowers their Speed."), .effect = EFFECT_HIT, .power = 65, .type = TYPE_ICE, @@ -14255,8 +14354,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = { .name = COMPOUND_STRING("Mat Block"), .description = COMPOUND_STRING( - "Evades damaging moves\n" - "for one turn."), + "Evades damaging moves.\n" + "Only works on 1st turn."), .effect = EFFECT_MAT_BLOCK, .power = 0, .type = TYPE_FIGHTING, @@ -14265,7 +14364,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .target = MOVE_TARGET_USER, .priority = 0, .category = DAMAGE_CATEGORY_STATUS, - .argument = { .protect.side = TRUE }, + .argument = { .protectMethod = PROTECT_MAT_BLOCK, }, .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, .snatchAffected = TRUE, .ignoresProtect = TRUE, @@ -14416,8 +14515,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = { .name = COMPOUND_STRING("Trick-or-Treat"), .description = COMPOUND_STRING( - "Goes trick-or-treating\n" - "making the foe Ghost-type."), + "Goes trick-or-treating,\n" + "adding Ghost type to foe."), .effect = EFFECT_THIRD_TYPE, .power = 0, .type = TYPE_GHOST, @@ -14512,8 +14611,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = { .name = COMPOUND_STRING("Forest's Curse"), .description = COMPOUND_STRING( - "Puts a curse on the foe\n" - "making the foe Grass-type."), + "Puts a curse on the foe,\n" + "adding the Grass type."), .effect = EFFECT_THIRD_TYPE, .power = 0, .type = TYPE_GRASS, @@ -14537,7 +14636,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .name = COMPOUND_STRING("Petal Blizzard"), .description = COMPOUND_STRING( "Stirs up a violent storm\n" - "of petals to attack."), + "of petals to attack all."), .effect = EFFECT_HIT, .power = 90, .type = TYPE_GRASS, @@ -14691,7 +14790,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .target = MOVE_TARGET_USER, .priority = 3, .category = DAMAGE_CATEGORY_STATUS, - .argument = { .protect.side = TRUE, }, + .argument = { .protectMethod = PROTECT_CRAFTY_SHIELD }, .zMove = { .effect = Z_EFFECT_SPDEF_UP_1 }, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, @@ -14933,6 +15032,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .target = MOVE_TARGET_USER, .priority = 4, .category = DAMAGE_CATEGORY_STATUS, + .argument = { .protectMethod = PROTECT_KINGS_SHIELD }, .zMove = { .effect = Z_EFFECT_RESET_STATS }, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, @@ -15137,6 +15237,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .target = MOVE_TARGET_USER, .priority = 4, .category = DAMAGE_CATEGORY_STATUS, + .argument = { .protectMethod = PROTECT_SPIKY_SHIELD }, .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, @@ -15203,7 +15304,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .name = COMPOUND_STRING("Venom Drench"), .description = COMPOUND_STRING( "Lowers the Attack, Sp. Atk\n" - "and Speed of a poisoned foe."), + "and Speed of poisoned foes."), .effect = EFFECT_VENOM_DRENCH, .power = 0, .type = TYPE_POISON, @@ -15576,7 +15677,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .description = COMPOUND_STRING( "Can hit Flying foes, then\n" "knocks them to the ground."), - .effect = EFFECT_HIT, + .effect = EFFECT_SMACK_DOWN, .power = 90, .type = TYPE_GROUND, .accuracy = 100, @@ -15588,9 +15689,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .ignoreTypeIfFlyingAndUngrounded = TRUE, .metronomeBanned = TRUE, .skyBattleBanned = TRUE, - .additionalEffects = ADDITIONAL_EFFECTS({ - .moveEffect = MOVE_EFFECT_SMACK_DOWN, - }), .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = COMBO_STARTER_THOUSAND_ARROWS, @@ -15652,15 +15750,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .description = COMPOUND_STRING( "Fires a great beam of light\n" "that also hurts the user."), - .effect = EFFECT_HIT, + .effect = EFFECT_RECOIL, .power = 140, .type = TYPE_FAIRY, .accuracy = 90, - .recoil = 50, .pp = 5, .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, + .argument = { .recoilPercentage = 50 }, .metronomeBanned = TRUE, .battleAnimScript = gBattleAnimMove_LightOfRuin, }, @@ -15826,6 +15924,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .target = MOVE_TARGET_USER, .priority = 4, .category = DAMAGE_CATEGORY_STATUS, + .argument = { .protectMethod = PROTECT_BANEFUL_BUNKER }, .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, @@ -15906,7 +16005,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .soundMove = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_REMOVE_STATUS, - .chance = 100, + .sheerForceBoost = SHEER_FORCE_BOOST, }), .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_BEAUTY, @@ -16167,7 +16266,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .name = COMPOUND_STRING("Throat Chop"), .description = COMPOUND_STRING( "Chops the throat to disable\n" - "sound moves for a while."), + "sound moves for 2 turns."), .effect = EFFECT_HIT, .power = 80, .type = TYPE_DARK, @@ -16458,7 +16557,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .name = COMPOUND_STRING("Core Enforcer"), .description = COMPOUND_STRING( "Hits with a ray that\n" - "nullifies the foe's ability."), + "nullifies the foe's Ability."), .effect = EFFECT_HIT, .power = 100, .type = TYPE_DRAGON, @@ -16534,7 +16633,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = { .name = COMPOUND_STRING("Beak Blast"), .description = COMPOUND_STRING( - "Heats up beak to attack.\n" + "Heats beak to attack last.\n" "Burns foe on contact."), .effect = EFFECT_BEAK_BLAST, .power = 100, @@ -16633,9 +16732,19 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = [MOVE_AURORA_VEIL] = { .name = COMPOUND_STRING("Aurora Veil"), + #if B_PREFERRED_ICE_WEATHER == B_ICE_WEATHER_SNOW + .description = COMPOUND_STRING( + "Weakens all attacks, but\n" + "only usable with snow."), + #elif B_PREFERRED_ICE_WEATHER == B_ICE_WEATHER_BOTH + .description = COMPOUND_STRING( + "Weakens all attacks if\n" + "used in hail or snow."), + #else .description = COMPOUND_STRING( "Weakens all attacks, but\n" "only usable with hail."), + #endif .effect = EFFECT_AURORA_VEIL, .power = 0, .type = TYPE_ICE, @@ -17126,7 +17235,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .name = COMPOUND_STRING("Splishy Splash"), .description = COMPOUND_STRING( "A huge electrified wave that\n" - "may paralyze the foe."), + "may paralyze the foes."), .effect = EFFECT_HIT, .power = 90, .type = TYPE_WATER, @@ -17588,7 +17697,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .name = COMPOUND_STRING("Magic Powder"), .description = COMPOUND_STRING( "Magic powder changes the\n" - "target into a Psychic-type."), + "target into a Psychic type."), .effect = EFFECT_SOAK, .power = 0, .type = TYPE_PSYCHIC, @@ -18198,6 +18307,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .target = MOVE_TARGET_USER, .priority = 4, .category = DAMAGE_CATEGORY_STATUS, + .argument = { .protectMethod = PROTECT_OBSTRUCT }, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, @@ -19189,15 +19299,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .description = COMPOUND_STRING( "A slam shrouded in water.\n" "It also hurts the user."), - .effect = EFFECT_HIT, + .effect = EFFECT_RECOIL, .power = B_UPDATED_MOVE_DATA >= GEN_9 ? 120 : 75, .type = TYPE_WATER, .accuracy = 100, - .recoil = 33, .pp = 10, .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, + .argument = { .recoilPercentage = 33 }, .makesContact = TRUE, .skyBattleBanned = B_EXTRAPOLATED_MOVE_FLAGS, .battleAnimScript = gBattleAnimMove_WaveCrash, @@ -19448,7 +19558,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .description = COMPOUND_STRING( "Hits with brutal, cold winds.\n" "May lower the foe's Speed."), - .effect = EFFECT_RAIN_ALWAYS_HIT, + .effect = EFFECT_HIT, .power = B_UPDATED_MOVE_DATA >= GEN_9 ? 100 : 95, .type = TYPE_FLYING, .accuracy = 80, @@ -19457,6 +19567,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, .windMove = TRUE, + .alwaysHitsInRain = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_SPD_MINUS_1, .chance = 30, @@ -19470,7 +19581,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .description = COMPOUND_STRING( "Hits with a brutal tempest.\n" "May inflict paralysis."), - .effect = EFFECT_RAIN_ALWAYS_HIT, + .effect = EFFECT_HIT, .power = B_UPDATED_MOVE_DATA >= GEN_9 ? 100 : 95, .type = TYPE_ELECTRIC, .accuracy = 80, @@ -19479,6 +19590,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, .windMove = TRUE, + .alwaysHitsInRain = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_PARALYSIS, .chance = 20, @@ -19492,7 +19604,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .description = COMPOUND_STRING( "Hits with brutally hot sand.\n" "May inflict a burn."), - .effect = EFFECT_RAIN_ALWAYS_HIT, + .effect = EFFECT_HIT, .power = B_UPDATED_MOVE_DATA >= GEN_9 ? 100 : 95, .type = TYPE_GROUND, .accuracy = 80, @@ -19501,6 +19613,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, .windMove = TRUE, + .alwaysHitsInRain = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_BURN, .chance = 20, @@ -19554,7 +19667,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .name = COMPOUND_STRING("Tera Blast"), .description = COMPOUND_STRING( "If the user's Terastallized,\n" - "it hits with its Tera-type."), + "it hits with its Tera type."), .effect = EFFECT_TERA_BLAST, .power = 80, .type = TYPE_NORMAL, @@ -19585,6 +19698,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .target = MOVE_TARGET_USER, .priority = 4, .category = DAMAGE_CATEGORY_STATUS, + .argument = { .protectMethod = PROTECT_SILK_TRAP }, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, @@ -20134,9 +20248,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = [MOVE_CHILLY_RECEPTION] = { .name = COMPOUND_STRING("Chilly Reception"), + #if B_PREFERRED_ICE_WEATHER == B_ICE_WEATHER_HAIL + .description = COMPOUND_STRING( + "Bad joke summons hailstorm.\n" + "The user also switches out."), + #else .description = COMPOUND_STRING( "Bad joke summons snowstorm.\n" "The user also switches out."), + #endif .effect = EFFECT_CHILLY_RECEPTION, .power = 0, .type = TYPE_ICE, @@ -20175,10 +20295,17 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = [MOVE_SNOWSCAPE] = { .name = COMPOUND_STRING("Snowscape"), - .description = COMPOUND_STRING( - "Summons a snowstorm that\n" - "lasts for five turns."), - .effect = EFFECT_SNOWSCAPE, + #if B_PREFERRED_ICE_WEATHER == B_ICE_WEATHER_HAIL + .description = COMPOUND_STRING( + "Summons a hailstorm that\n" + "strikes every turn."), + .effect = EFFECT_HAIL, + #else + .description = COMPOUND_STRING( + "Summons a snowstorm that\n" + "lasts for five turns."), + .effect = EFFECT_SNOWSCAPE, + #endif .power = 0, .type = TYPE_ICE, .accuracy = 0, @@ -20190,7 +20317,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, - .battleAnimScript = gBattleAnimMove_Snowscape, + .battleAnimScript = (B_PREFERRED_ICE_WEATHER == B_ICE_WEATHER_HAIL) ? gBattleAnimMove_Hail : gBattleAnimMove_Snowscape, }, [MOVE_POUNCE] = @@ -20788,6 +20915,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .target = MOVE_TARGET_USER, .priority = 4, .category = DAMAGE_CATEGORY_STATUS, + .argument = { .protectMethod = PROTECT_BURNING_BULWARK }, .zMove = { .effect = Z_EFFECT_RESET_STATS }, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, @@ -20948,8 +21076,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = { .name = COMPOUND_STRING("Psychic Noise"), .description = COMPOUND_STRING( - "Unpleasant sound waves that\n" - "damage and prevent healing."), + "Sound waves that damage and\n" + "prevent healing for 2 turns."), .effect = EFFECT_HIT, .power = 75, .type = TYPE_PSYCHIC, @@ -21603,6 +21731,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] = .target = MOVE_TARGET_USER, .priority = 4, .category = DAMAGE_CATEGORY_STATUS, + .argument = { .protectMethod = PROTECT_MAX_GUARD }, .battleAnimScript = gBattleAnimMove_MaxGuard, }, diff --git a/src/data/object_events/movement_action_func_tables.h b/src/data/object_events/movement_action_func_tables.h index 4f5fd57a82..44639b6c9b 100755 --- a/src/data/object_events/movement_action_func_tables.h +++ b/src/data/object_events/movement_action_func_tables.h @@ -279,6 +279,15 @@ u8 MovementAction_WalkSlowStairsLeft_Step0(struct ObjectEvent *objectEvent, stru u8 MovementAction_WalkSlowStairsLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite); u8 MovementAction_WalkSlowStairsRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite); u8 MovementAction_WalkSlowStairsRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite); +u8 MovementAction_SurfStillDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite); +u8 MovementAction_SurfStillDown_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite); +u8 MovementAction_SurfStillUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite); +u8 MovementAction_SurfStillUp_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite); +u8 MovementAction_SurfStillLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite); +u8 MovementAction_SurfStillLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite); +u8 MovementAction_SurfStillRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite); +u8 MovementAction_SurfStillRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite); + u8 (*const gMovementActionFuncs_FaceDown[])(struct ObjectEvent *, struct Sprite *); u8 (*const gMovementActionFuncs_FaceUp[])(struct ObjectEvent *, struct Sprite *); @@ -450,6 +459,10 @@ u8 (*const gMovementActionFuncs_WalkSlowStairsDown[])(struct ObjectEvent *, stru u8 (*const gMovementActionFuncs_WalkSlowStairsUp[])(struct ObjectEvent *, struct Sprite *); u8 (*const gMovementActionFuncs_WalkSlowStairsLeft[])(struct ObjectEvent *, struct Sprite *); u8 (*const gMovementActionFuncs_WalkSlowStairsRight[])(struct ObjectEvent *, struct Sprite *); +u8 (*const gMovementActionFuncs_SurfStillDown[])(struct ObjectEvent *, struct Sprite *); +u8 (*const gMovementActionFuncs_SurfStillUp[])(struct ObjectEvent *, struct Sprite *); +u8 (*const gMovementActionFuncs_SurfStillLeft[])(struct ObjectEvent *, struct Sprite *); +u8 (*const gMovementActionFuncs_SurfStillRight[])(struct ObjectEvent *, struct Sprite *); u8 (*const *const gMovementActionFuncs[])(struct ObjectEvent *, struct Sprite *) = { [MOVEMENT_ACTION_FACE_DOWN] = gMovementActionFuncs_FaceDown, @@ -622,6 +635,10 @@ u8 (*const *const gMovementActionFuncs[])(struct ObjectEvent *, struct Sprite *) [MOVEMENT_ACTION_WALK_SLOW_STAIRS_UP] = gMovementActionFuncs_WalkSlowStairsUp, [MOVEMENT_ACTION_WALK_SLOW_STAIRS_LEFT] = gMovementActionFuncs_WalkSlowStairsLeft, [MOVEMENT_ACTION_WALK_SLOW_STAIRS_RIGHT] = gMovementActionFuncs_WalkSlowStairsRight, + [MOVEMENT_ACTION_SURF_STILL_DOWN] = gMovementActionFuncs_SurfStillDown, + [MOVEMENT_ACTION_SURF_STILL_UP] = gMovementActionFuncs_SurfStillUp, + [MOVEMENT_ACTION_SURF_STILL_LEFT] = gMovementActionFuncs_SurfStillLeft, + [MOVEMENT_ACTION_SURF_STILL_RIGHT] = gMovementActionFuncs_SurfStillRight, }; u8 (*const gMovementActionFuncs_FaceDown[])(struct ObjectEvent *, struct Sprite *) = { @@ -1631,3 +1648,31 @@ bool8 (*const gMovementActionFuncs_WalkSlowStairsRight[])(struct ObjectEvent *, MovementAction_WalkSlowStairsRight_Step1, MovementAction_PauseSpriteAnim, }; + +u8 (*const gMovementActionFuncs_SurfStillDown[])(struct ObjectEvent *, struct Sprite *) = +{ + MovementAction_SurfStillDown_Step0, + MovementAction_SurfStillDown_Step1, + MovementAction_PauseSpriteAnim, +}; + +u8 (*const gMovementActionFuncs_SurfStillUp[])(struct ObjectEvent *, struct Sprite *) = +{ + MovementAction_SurfStillUp_Step0, + MovementAction_SurfStillUp_Step1, + MovementAction_PauseSpriteAnim, +}; + +u8 (*const gMovementActionFuncs_SurfStillLeft[])(struct ObjectEvent *, struct Sprite *) = +{ + MovementAction_SurfStillLeft_Step0, + MovementAction_SurfStillLeft_Step1, + MovementAction_PauseSpriteAnim, +}; + +u8 (*const gMovementActionFuncs_SurfStillRight[])(struct ObjectEvent *, struct Sprite *) = +{ + MovementAction_SurfStillRight_Step0, + MovementAction_SurfStillRight_Step1, + MovementAction_PauseSpriteAnim, +}; diff --git a/src/data/object_events/object_event_graphics.h b/src/data/object_events/object_event_graphics.h index 577263e77b..c7b92def91 100755 --- a/src/data/object_events/object_event_graphics.h +++ b/src/data/object_events/object_event_graphics.h @@ -293,7 +293,9 @@ const u32 gFieldEffectObjectPic_ShadowSmall[] = INCBIN_U32("graphics/field_effec const u32 gFieldEffectObjectPic_ShadowMedium[] = INCBIN_U32("graphics/field_effects/pics/shadow_medium.4bpp"); const u32 gFieldEffectObjectPic_ShadowLarge[] = INCBIN_U32("graphics/field_effects/pics/shadow_large.4bpp"); const u32 gFieldEffectObjectPic_ShadowExtraLarge[] = INCBIN_U32("graphics/field_effects/pics/shadow_extra_large.4bpp"); -static const u32 sFiller[0x48] = {}; +const u32 gFieldEffectObjectPic_BallLight[] = INCBIN_U32("graphics/object_events/pics/misc/light.4bpp"); +const u32 gFieldEffectObjectPic_PokeCenterLight[] = INCBIN_U32("graphics/object_events/pics/misc/poke_center_light.4bpp"); +const u32 gFieldEffectObjectPic_MartLight[] = INCBIN_U32("graphics/object_events/pics/misc/mart_light.4bpp"); const u8 gFieldEffectPic_CutGrass[] = INCBIN_U8("graphics/field_effects/pics/cut_grass.4bpp"); const u32 gFieldEffectPic_CutGrass_Copy[] = INCBIN_U32("graphics/field_effects/pics/cut_grass.4bpp"); const u16 gFieldEffectPal_CutGrass[] = INCBIN_U16("graphics/field_effects/palettes/cut_grass.gbapal"); @@ -380,9 +382,12 @@ const u32 gObjectEventPic_RayquazaCutscene[] = INCBIN_U32("graphics/object_event 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 gObjectEventPaletteLight[] = INCBIN_U16("graphics/object_events/palettes/light.gbapal"); +const u16 gObjectEventPaletteLight2[] = INCBIN_U16("graphics/object_events/palettes/light2.gbapal"); +const u16 gObjectEventPal_Substitute[] = INCBIN_U16("graphics/object_events/pics/pokemon_old/substitute.gbapal"); const u16 gObjectEventPaletteEmotes[] = INCBIN_U16("graphics/misc/emotes.gbapal"); +const u16 gObjectEventPaletteNeonLight[] = INCBIN_U16("graphics/object_events/palettes/neon_light.gbapal"); #if OW_FOLLOWERS_POKEBALLS const u32 gObjectEventPic_MasterBall[] = INCBIN_U32("graphics/object_events/pics/misc/ball_master.4bpp"); diff --git a/src/data/object_events/object_event_graphics_info.h b/src/data/object_events/object_event_graphics_info.h index 5b8f971a49..91b3ab2c9d 100755 --- a/src/data/object_events/object_event_graphics_info.h +++ b/src/data/object_events/object_event_graphics_info.h @@ -4671,3 +4671,22 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Follower = { .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, }; + +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BallLight = { + .tileTag = TAG_NONE, + .paletteTag = OBJ_EVENT_PAL_TAG_LIGHT, + .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_LIGHT_2, + .size = 512, + .width = 32, + .height = 32, + .paletteSlot = PALSLOT_NPC_1, + .shadowSize = SHADOW_SIZE_NONE, + .inanimate = TRUE, + .compressed = FALSE, + .tracks = TRACKS_NONE, + .oam = &gObjectEventBaseOam_32x32, + .subspriteTables = sOamTables_32x32, + .anims = sAnimTable_Inanimate, + .images = gFieldEffectObjectPicTable_BallLight, + .affineAnims = gDummySpriteAffineAnimTable, +}; 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 60dc6997db..117187739b 100755 --- a/src/data/object_events/object_event_graphics_info_pointers.h +++ b/src/data/object_events/object_event_graphics_info_pointers.h @@ -239,6 +239,7 @@ 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_BallLight; extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Bard; extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Hipster; @@ -490,6 +491,7 @@ const struct ObjectEventGraphicsInfo *const gObjectEventGraphicsInfoPointers[NUM [OBJ_EVENT_GFX_HOOH] = &gObjectEventGraphicsInfo_HoOh, [OBJ_EVENT_GFX_POKE_BALL] = &gObjectEventGraphicsInfo_PokeBall, [OBJ_EVENT_GFX_OW_MON] = &gObjectEventGraphicsInfo_Follower, + [OBJ_EVENT_GFX_LIGHT_SPRITE] = &gObjectEventGraphicsInfo_BallLight, }; 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 1fdfc6d492..c1f8fd6f1c 100755 --- a/src/data/object_events/object_event_pic_tables.h +++ b/src/data/object_events/object_event_pic_tables.h @@ -1117,8 +1117,9 @@ static const struct SpriteFrameImage sPicTable_PokeBall[] = { overworld_frame(gObjectEventPic_PokeBall, 2, 4, 0), }; -#if OW_FOLLOWERS_POKEBALLS +extern const struct SpriteFrameImage gFieldEffectObjectPicTable_BallLight[]; +#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), \ diff --git a/src/data/party_menu.h b/src/data/party_menu.h index ec7026fcb5..f8860ac4b0 100644 --- a/src/data/party_menu.h +++ b/src/data/party_menu.h @@ -497,9 +497,9 @@ static const struct WindowTemplate sItemGiveTakeWindowTemplate = { .bg = 2, .tilemapLeft = 23, - .tilemapTop = 13, + .tilemapTop = 11, .width = 6, - .height = 6, + .height = 8, .paletteNum = 14, .baseBlock = 0x39D, }; @@ -661,6 +661,7 @@ static const u8 *const sActionStringTable[] = [PARTY_MSG_CHOOSE_SECOND_FUSION] = gText_NextFusionMon, [PARTY_MSG_NO_POKEMON] = COMPOUND_STRING("You have no POKéMON."), [PARTY_MSG_CHOOSE_MON_FOR_BOX] = gText_SendWhichMonToPC, + [PARTY_MSG_MOVE_ITEM_WHERE] = gText_MoveItemWhere, }; static const u8 *const sDescriptionStringTable[] = @@ -696,33 +697,34 @@ struct TaskFunc func; } static const sCursorOptions[MENU_FIELD_MOVES] = { - [MENU_SUMMARY] = {COMPOUND_STRING("SUMMARY"), CursorCb_Summary}, - [MENU_SWITCH] = {COMPOUND_STRING("SWITCH"), CursorCb_Switch}, - [MENU_CANCEL1] = {gText_Cancel2, CursorCb_Cancel1}, - [MENU_ITEM] = {COMPOUND_STRING("ITEM"), CursorCb_Item}, - [MENU_GIVE] = {gMenuText_Give, CursorCb_Give}, - [MENU_TAKE_ITEM] = {COMPOUND_STRING("TAKE"), CursorCb_TakeItem}, - [MENU_MAIL] = {COMPOUND_STRING("MAIL"), CursorCb_Mail}, - [MENU_TAKE_MAIL] = {COMPOUND_STRING("TAKE"), CursorCb_TakeMail}, - [MENU_READ] = {COMPOUND_STRING("READ"), CursorCb_Read}, - [MENU_CANCEL2] = {gText_Cancel2, CursorCb_Cancel2}, - [MENU_SHIFT] = {COMPOUND_STRING("SHIFT"), CursorCb_SendMon}, - [MENU_SEND_OUT] = {COMPOUND_STRING("SEND OUT"), CursorCb_SendMon}, - [MENU_ENTER] = {COMPOUND_STRING("ENTER"), CursorCb_Enter}, - [MENU_NO_ENTRY] = {COMPOUND_STRING("NO ENTRY"), CursorCb_NoEntry}, - [MENU_STORE] = {COMPOUND_STRING("STORE"), CursorCb_Store}, - [MENU_REGISTER] = {gText_Register, CursorCb_Register}, - [MENU_TRADE1] = {sText_Trade4, CursorCb_Trade1}, - [MENU_TRADE2] = {sText_Trade4, CursorCb_Trade2}, - [MENU_TOSS] = {gMenuText_Toss, CursorCb_Toss}, - [MENU_CATALOG_BULB] = {COMPOUND_STRING("Light bulb"), CursorCb_CatalogBulb}, - [MENU_CATALOG_OVEN] = {COMPOUND_STRING("Microwave oven"), CursorCb_CatalogOven}, + [MENU_SUMMARY] = {COMPOUND_STRING("SUMMARY"), CursorCb_Summary}, + [MENU_SWITCH] = {COMPOUND_STRING("SWITCH"), CursorCb_Switch}, + [MENU_CANCEL1] = {gText_Cancel2, CursorCb_Cancel1}, + [MENU_ITEM] = {COMPOUND_STRING("ITEM"), CursorCb_Item}, + [MENU_GIVE] = {gMenuText_Give, CursorCb_Give}, + [MENU_TAKE_ITEM] = {COMPOUND_STRING("TAKE"), CursorCb_TakeItem}, + [MENU_MOVE_ITEM] = {COMPOUND_STRING("MOVE"), CursorCb_MoveItem}, + [MENU_MAIL] = {COMPOUND_STRING("MAIL"), CursorCb_Mail}, + [MENU_TAKE_MAIL] = {COMPOUND_STRING("TAKE"), CursorCb_TakeMail}, + [MENU_READ] = {COMPOUND_STRING("READ"), CursorCb_Read}, + [MENU_CANCEL2] = {gText_Cancel2, CursorCb_Cancel2}, + [MENU_SHIFT] = {COMPOUND_STRING("SHIFT"), CursorCb_SendMon}, + [MENU_SEND_OUT] = {COMPOUND_STRING("SEND OUT"), CursorCb_SendMon}, + [MENU_ENTER] = {COMPOUND_STRING("ENTER"), CursorCb_Enter}, + [MENU_NO_ENTRY] = {COMPOUND_STRING("NO ENTRY"), CursorCb_NoEntry}, + [MENU_STORE] = {COMPOUND_STRING("STORE"), CursorCb_Store}, + [MENU_REGISTER] = {gText_Register, CursorCb_Register}, + [MENU_TRADE1] = {sText_Trade4, CursorCb_Trade1}, + [MENU_TRADE2] = {sText_Trade4, CursorCb_Trade2}, + [MENU_TOSS] = {gMenuText_Toss, CursorCb_Toss}, + [MENU_CATALOG_BULB] = {COMPOUND_STRING("Light bulb"), CursorCb_CatalogBulb}, + [MENU_CATALOG_OVEN] = {COMPOUND_STRING("Microwave oven"), CursorCb_CatalogOven}, [MENU_CATALOG_WASHING] = {COMPOUND_STRING("Washing machine"), CursorCb_CatalogWashing}, - [MENU_CATALOG_FRIDGE] = {COMPOUND_STRING("Refrigerator"), CursorCb_CatalogFridge}, - [MENU_CATALOG_FAN] = {COMPOUND_STRING("Electric fan"), CursorCb_CatalogFan}, - [MENU_CATALOG_MOWER] = {COMPOUND_STRING("Lawn mower"), CursorCb_CatalogMower}, - [MENU_CHANGE_FORM] = {COMPOUND_STRING("Change form"), CursorCb_ChangeForm}, - [MENU_CHANGE_ABILITY] = {COMPOUND_STRING("Change Ability"), CursorCb_ChangeAbility}, + [MENU_CATALOG_FRIDGE] = {COMPOUND_STRING("Refrigerator"), CursorCb_CatalogFridge}, + [MENU_CATALOG_FAN] = {COMPOUND_STRING("Electric fan"), CursorCb_CatalogFan}, + [MENU_CATALOG_MOWER] = {COMPOUND_STRING("Lawn mower"), CursorCb_CatalogMower}, + [MENU_CHANGE_FORM] = {COMPOUND_STRING("Change form"), CursorCb_ChangeForm}, + [MENU_CHANGE_ABILITY] = {COMPOUND_STRING("Change Ability"), CursorCb_ChangeAbility}, }; static const u8 sPartyMenuAction_SummarySwitchCancel[] = {MENU_SUMMARY, MENU_SWITCH, MENU_CANCEL1}; @@ -732,7 +734,7 @@ static const u8 sPartyMenuAction_SummaryCancel[] = {MENU_SUMMARY, MENU_CANCEL1}; static const u8 sPartyMenuAction_EnterSummaryCancel[] = {MENU_ENTER, MENU_SUMMARY, MENU_CANCEL1}; static const u8 sPartyMenuAction_NoEntrySummaryCancel[] = {MENU_NO_ENTRY, MENU_SUMMARY, MENU_CANCEL1}; static const u8 sPartyMenuAction_StoreSummaryCancel[] = {MENU_STORE, MENU_SUMMARY, MENU_CANCEL1}; -static const u8 sPartyMenuAction_GiveTakeItemCancel[] = {MENU_GIVE, MENU_TAKE_ITEM, MENU_CANCEL2}; +static const u8 sPartyMenuAction_GiveTakeItemCancel[] = {MENU_GIVE, MENU_TAKE_ITEM, MENU_MOVE_ITEM, MENU_CANCEL2}; static const u8 sPartyMenuAction_ReadTakeMailCancel[] = {MENU_READ, MENU_TAKE_MAIL, MENU_CANCEL2}; static const u8 sPartyMenuAction_RegisterSummaryCancel[] = {MENU_REGISTER, MENU_SUMMARY, MENU_CANCEL1}; static const u8 sPartyMenuAction_TradeSummaryCancel1[] = {MENU_TRADE1, MENU_SUMMARY, MENU_CANCEL1}; @@ -799,6 +801,9 @@ static const u16 sFieldMoves[FIELD_MOVES_COUNT + 1] = [FIELD_MOVE_MILK_DRINK] = MOVE_MILK_DRINK, [FIELD_MOVE_SOFT_BOILED] = MOVE_SOFT_BOILED, [FIELD_MOVE_SWEET_SCENT] = MOVE_SWEET_SCENT, +#if OW_DEFOG_FIELD_MOVE == TRUE + [FIELD_MOVE_DEFOG] = MOVE_DEFOG, +#endif // NOTE: This value is used as the terminal value for the table. There's no reason to do this, as the size of the table is known. // Whichever move shares this value (MOVE_SWORDS_DANCE by default) if present will be treated as the end of the array rather than a field move. [FIELD_MOVES_COUNT] = FIELD_MOVES_COUNT @@ -824,6 +829,9 @@ struct [FIELD_MOVE_MILK_DRINK] = {SetUpFieldMove_SoftBoiled, PARTY_MSG_NOT_ENOUGH_HP}, [FIELD_MOVE_SOFT_BOILED] = {SetUpFieldMove_SoftBoiled, PARTY_MSG_NOT_ENOUGH_HP}, [FIELD_MOVE_SWEET_SCENT] = {SetUpFieldMove_SweetScent, PARTY_MSG_CANT_USE_HERE}, +#if OW_DEFOG_FIELD_MOVE == TRUE + [FIELD_MOVE_DEFOG] = {SetUpFieldMove_Defog, PARTY_MSG_CANT_USE_HERE}, +#endif }; static const u8 *const sUnionRoomTradeMessages[] = @@ -938,7 +946,7 @@ static const struct CompressedSpriteSheet sSpriteSheet_MenuPokeball = gPartyMenuPokeball_Gfx, 0x400, TAG_POKEBALL }; -static const struct CompressedSpritePalette sSpritePalette_MenuPokeball = +static const struct SpritePalette sSpritePalette_MenuPokeball = { gPartyMenuPokeball_Pal, TAG_POKEBALL }; @@ -1118,7 +1126,7 @@ static const struct CompressedSpriteSheet sSpriteSheet_StatusIcons = gStatusGfx_Icons, 0x400, TAG_STATUS_ICONS }; -static const struct CompressedSpritePalette sSpritePalette_StatusIcons = +static const struct SpritePalette sSpritePalette_StatusIcons = { gStatusPal_Icons, TAG_STATUS_ICONS }; diff --git a/src/data/pokemon/species_info.h b/src/data/pokemon/species_info.h index 5b3d31786e..0cd1d5b1ac 100644 --- a/src/data/pokemon/species_info.h +++ b/src/data/pokemon/species_info.h @@ -5,6 +5,7 @@ // Macros for ease of use. #define EVOLUTION(...) (const struct Evolution[]) { __VA_ARGS__, { EVOLUTIONS_END }, } +#define CONDITIONS(...) ((const struct EvolutionParam[]) { __VA_ARGS__, {CONDITIONS_END} }) #define ANIM_FRAMES(...) (const union AnimCmd *const[]) { sAnim_GeneralFrame0, (const union AnimCmd[]) { __VA_ARGS__ ANIMCMD_END, }, } @@ -122,7 +123,9 @@ const struct SpeciesInfo gSpeciesInfo[] = .shinyPalette = gMonShinyPalette_CircledQuestionMark, .iconSprite = gMonIcon_QuestionMark, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, FOOTPRINT(QuestionMark) + SHADOW(-1, 0, SHADOW_SIZE_M) #if OW_POKEMON_OBJECT_EVENTS .overworldData = { .tileTag = TAG_NONE, diff --git a/src/data/pokemon/species_info/gen_1_families.h b/src/data/pokemon/species_info/gen_1_families.h index 05bad13974..70165414ba 100644 --- a/src/data/pokemon/species_info/gen_1_families.h +++ b/src/data/pokemon/species_info/gen_1_families.h @@ -55,6 +55,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Bulbasaur, .iconSprite = gMonIcon_Bulbasaur, .iconPalIndex = P_GBA_STYLE_SPECIES_ICONS ? 1 : 4, + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, SHADOW(1, -1, SHADOW_SIZE_S) FOOTPRINT(Bulbasaur) OVERWORLD( @@ -124,6 +125,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Ivysaur, .iconSprite = gMonIcon_Ivysaur, .iconPalIndex = P_GBA_STYLE_SPECIES_ICONS ? 1 : 4, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 3, SHADOW_SIZE_L) FOOTPRINT(Ivysaur) OVERWORLD( @@ -204,6 +206,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backPicFemale = gMonBackPic_VenusaurF, .backPicSizeFemale = MON_COORDS_SIZE(64, 48), #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(2, 6, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Venusaur) OVERWORLD( @@ -276,6 +279,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_VenusaurMega, .iconSprite = gMonIcon_VenusaurMega, .iconPalIndex = 4, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(2, 6, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Venusaur) #if OW_BATTLE_ONLY_FORMS @@ -346,6 +350,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_VenusaurGmax, .iconSprite = gMonIcon_VenusaurGmax, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(2, 4, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Venusaur) .isGigantamax = TRUE, @@ -364,7 +369,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseAttack = 52, .baseDefense = 43, .baseSpeed = 65, - .baseSpAttack = 60, + .baseSpAttack = P_UPDATED_STATS >= GEN_2 ? 60 : 50, .baseSpDefense = 50, .types = MON_TYPES(TYPE_FIRE), .catchRate = 45, @@ -409,6 +414,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Charmander, .iconSprite = gMonIcon_Charmander, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(-2, 3, SHADOW_SIZE_S) FOOTPRINT(Charmander) OVERWORLD( @@ -432,7 +438,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseAttack = 64, .baseDefense = 58, .baseSpeed = 80, - .baseSpAttack = 80, + .baseSpAttack = P_UPDATED_STATS >= GEN_2 ? 80 : 65, .baseSpDefense = 65, .types = MON_TYPES(TYPE_FIRE), .catchRate = 45, @@ -478,6 +484,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Charmeleon, .iconSprite = gMonIcon_Charmeleon, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 5, SHADOW_SIZE_M) FOOTPRINT(Charmeleon) OVERWORLD( @@ -500,7 +507,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseAttack = 84, .baseDefense = 78, .baseSpeed = 100, - .baseSpAttack = 109, + .baseSpAttack = P_UPDATED_STATS >= GEN_2 ? 109 : 85, .baseSpDefense = 85, .types = MON_TYPES(TYPE_FIRE, TYPE_FLYING), .catchRate = 45, @@ -550,6 +557,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Charizard, .iconSprite = gMonIcon_Charizard, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(2, 13, SHADOW_SIZE_L) FOOTPRINT(Charizard) OVERWORLD( @@ -614,6 +622,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_CharizardMegaX, .iconSprite = gMonIcon_CharizardMegaX, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(2, 13, SHADOW_SIZE_L) FOOTPRINT(Charizard) #if OW_BATTLE_ONLY_FORMS @@ -681,6 +690,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_CharizardMegaY, .iconSprite = gMonIcon_CharizardMegaY, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 14, SHADOW_SIZE_L) FOOTPRINT(Charizard) #if OW_BATTLE_ONLY_FORMS @@ -709,7 +719,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseAttack = 84, .baseDefense = 78, .baseSpeed = 100, - .baseSpAttack = 109, + .baseSpAttack = P_UPDATED_STATS >= GEN_2 ? 109 : 85, .baseSpDefense = 85, .types = MON_TYPES(TYPE_FIRE, TYPE_FLYING), .catchRate = 45, @@ -750,6 +760,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_CharizardGmax, .iconSprite = gMonIcon_CharizardGmax, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 13, SHADOW_SIZE_L) FOOTPRINT(Charizard) .isGigantamax = TRUE, @@ -769,7 +780,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseDefense = 65, .baseSpeed = 43, .baseSpAttack = 50, - .baseSpDefense = 64, + .baseSpDefense = P_UPDATED_STATS >= GEN_2 ? 64 : 50, .types = MON_TYPES(TYPE_WATER), .catchRate = 45, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 63 : 66, @@ -814,6 +825,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Squirtle, .iconSprite = gMonIcon_Squirtle, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(-3, 2, SHADOW_SIZE_S) FOOTPRINT(Squirtle) OVERWORLD( @@ -838,7 +850,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseDefense = 80, .baseSpeed = 58, .baseSpAttack = 65, - .baseSpDefense = 80, + .baseSpDefense = P_UPDATED_STATS >= GEN_2 ? 80 : 65, .types = MON_TYPES(TYPE_WATER), .catchRate = 45, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 142 : 143, @@ -883,6 +895,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Wartortle, .iconSprite = gMonIcon_Wartortle, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 6, SHADOW_SIZE_M) FOOTPRINT(Wartortle) OVERWORLD( @@ -906,7 +919,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseDefense = 100, .baseSpeed = 78, .baseSpAttack = 85, - .baseSpDefense = 105, + .baseSpDefense = P_UPDATED_STATS >= GEN_2 ? 105 : 85, .types = MON_TYPES(TYPE_WATER), .catchRate = 45, #if P_UPDATED_EXP_YIELDS >= GEN_8 @@ -958,6 +971,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Blastoise, .iconSprite = gMonIcon_Blastoise, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 7, SHADOW_SIZE_L) FOOTPRINT(Blastoise) OVERWORLD( @@ -1023,6 +1037,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_BlastoiseMega, .iconSprite = gMonIcon_BlastoiseMega, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(4, 11, SHADOW_SIZE_L) FOOTPRINT(Blastoise) #if OW_BATTLE_ONLY_FORMS @@ -1052,7 +1067,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseDefense = 100, .baseSpeed = 78, .baseSpAttack = 85, - .baseSpDefense = 105, + .baseSpDefense = P_UPDATED_STATS >= GEN_2 ? 105 : 85, .types = MON_TYPES(TYPE_WATER), .catchRate = 45, .expYield = 239, @@ -1092,6 +1107,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_BlastoiseGmax, .iconSprite = gMonIcon_BlastoiseGmax, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-2, 8, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Blastoise) .isGigantamax = TRUE, @@ -1160,6 +1176,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Caterpie, .iconSprite = gMonIcon_Caterpie, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(4, 1, SHADOW_SIZE_S) FOOTPRINT(Caterpie) OVERWORLD( @@ -1227,6 +1244,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Metapod, .iconSprite = gMonIcon_Metapod, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(3, 0, SHADOW_SIZE_S) FOOTPRINT(Metapod) OVERWORLD( @@ -1324,6 +1342,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backPicFemale = gMonBackPic_ButterfreeF, .backPicSizeFemale = MON_COORDS_SIZE(64, 56), #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-3, 13, SHADOW_SIZE_S) FOOTPRINT(Butterfree) OVERWORLD( @@ -1399,6 +1418,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_ButterfreeGmax, .iconSprite = gMonIcon_ButterfreeGmax, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-4, 15, SHADOW_SIZE_S) FOOTPRINT(Butterfree) .isGigantamax = TRUE, @@ -1467,6 +1487,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Weedle, .iconSprite = gMonIcon_Weedle, .iconPalIndex = P_GBA_STYLE_SPECIES_ICONS ? 1 : 2, + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(0, 0, SHADOW_SIZE_S) FOOTPRINT(Weedle) OVERWORLD( @@ -1544,6 +1565,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Kakuna, .iconSprite = gMonIcon_Kakuna, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(0, 2, SHADOW_SIZE_S) FOOTPRINT(Kakuna) OVERWORLD( @@ -1570,7 +1592,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseDefense = 40, .baseSpeed = 75, .baseSpAttack = 45, - .baseSpDefense = 80, + .baseSpDefense = P_UPDATED_STATS >= GEN_2 ? 80 : 45, .types = MON_TYPES(TYPE_BUG, TYPE_POISON), .catchRate = 45, #if P_UPDATED_EXP_YIELDS >= GEN_8 @@ -1629,6 +1651,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Beedrill, .iconSprite = gMonIcon_Beedrill, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(4, 15, SHADOW_SIZE_M) FOOTPRINT(Beedrill) OVERWORLD( @@ -1697,6 +1720,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_BeedrillMega, .iconSprite = gMonIcon_BeedrillMega, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 14, SHADOW_SIZE_S) FOOTPRINT(Beedrill) #if OW_BATTLE_ONLY_FORMS @@ -1776,6 +1800,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Pidgey, .iconSprite = gMonIcon_Pidgey, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, -1, SHADOW_SIZE_S) FOOTPRINT(Pidgey) OVERWORLD( @@ -1851,6 +1876,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Pidgeotto, .iconSprite = gMonIcon_Pidgeotto, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-4, 6, SHADOW_SIZE_M) FOOTPRINT(Pidgeotto) OVERWORLD( @@ -1932,6 +1958,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Pidgeot, .iconSprite = gMonIcon_Pidgeot, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-7, 14, SHADOW_SIZE_M) FOOTPRINT(Pidgeot) OVERWORLD( @@ -1997,6 +2024,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_PidgeotMega, .iconSprite = gMonIcon_PidgeotMega, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-7, 19, SHADOW_SIZE_M) FOOTPRINT(Pidgeot) #if OW_BATTLE_ONLY_FORMS @@ -2027,7 +2055,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseDefense = 35, .baseSpeed = 72, .baseSpAttack = 25, - .baseSpDefense = 35, + .baseSpDefense = P_UPDATED_STATS >= GEN_2 ? 35 : 25, .types = MON_TYPES(TYPE_NORMAL), .catchRate = 255, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 51 : 57, @@ -2078,6 +2106,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backPicFemale = gMonBackPic_RattataF, .backPicSizeFemale = MON_COORDS_SIZE(64, 56), #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(1, -3, SHADOW_SIZE_S) FOOTPRINT(Rattata) OVERWORLD( @@ -2110,7 +2139,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseDefense = 60, .baseSpeed = 97, .baseSpAttack = 50, - .baseSpDefense = 70, + .baseSpDefense = P_UPDATED_STATS >= GEN_2 ? 70 : 50, .types = MON_TYPES(TYPE_NORMAL), .catchRate = 127, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 145 : 116, @@ -2169,6 +2198,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backPicFemale = gMonBackPic_RaticateF, .backPicSizeFemale = MON_COORDS_SIZE(64, 48), #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(0, 8, SHADOW_SIZE_L) FOOTPRINT(Raticate) OVERWORLD( @@ -2241,6 +2271,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_RattataAlola, .iconSprite = gMonIcon_RattataAlola, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(-3, 2, SHADOW_SIZE_S) FOOTPRINT(Rattata) OVERWORLD( @@ -2257,7 +2288,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .teachableLearnset = sRattataAlolaTeachableLearnset, .eggMoveLearnset = sRattataAlolaEggMoveLearnset, .formSpeciesIdTable = sRattataFormSpeciesIdTable, - .evolutions = EVOLUTION({EVO_LEVEL_NIGHT, 20, SPECIES_RATICATE_ALOLA}, + .evolutions = EVOLUTION({EVO_LEVEL, 20, SPECIES_RATICATE_ALOLA, CONDITIONS({IF_TIME, TIME_NIGHT})}, {EVO_NONE, 0, SPECIES_RATICATE_ALOLA_TOTEM}), }, @@ -2305,6 +2336,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_RaticateAlola, .iconSprite = gMonIcon_RaticateAlola, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(-4, 3, SHADOW_SIZE_L) FOOTPRINT(Raticate) OVERWORLD( @@ -2366,6 +2398,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_RaticateAlola, .iconSprite = gMonIcon_RaticateAlola, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-4, 3, SHADOW_SIZE_L) FOOTPRINT(Raticate) OVERWORLD( @@ -2441,6 +2474,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Spearow, .iconSprite = gMonIcon_Spearow, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 1, SHADOW_SIZE_S) FOOTPRINT(Spearow) OVERWORLD( @@ -2517,6 +2551,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Fearow, .iconSprite = gMonIcon_Fearow, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 17, SHADOW_SIZE_M) FOOTPRINT(Fearow) OVERWORLD( @@ -2541,7 +2576,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseDefense = 44, .baseSpeed = 55, .baseSpAttack = 40, - .baseSpDefense = 54, + .baseSpDefense = P_UPDATED_STATS >= GEN_2 ? 54 : 40, .types = MON_TYPES(TYPE_POISON), .catchRate = 255, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 58 : 62, @@ -2589,6 +2624,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Ekans, .iconSprite = gMonIcon_Ekans, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 2, SHADOW_SIZE_M) FOOTPRINT(Ekans) OVERWORLD( @@ -2613,7 +2649,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseDefense = 69, .baseSpeed = 80, .baseSpAttack = 65, - .baseSpDefense = 79, + .baseSpDefense = P_UPDATED_STATS >= GEN_2 ? 79 : 65, .types = MON_TYPES(TYPE_POISON), .catchRate = 90, #if P_UPDATED_EXP_YIELDS >= GEN_7 @@ -2663,6 +2699,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Arbok, .iconSprite = gMonIcon_Arbok, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 11, SHADOW_SIZE_L) FOOTPRINT(Arbok) OVERWORLD( @@ -2731,6 +2768,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Pichu, .iconSprite = gMonIcon_Pichu, .iconPalIndex = P_GBA_STYLE_SPECIES_ICONS ? 0 : 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(0, 0, SHADOW_SIZE_S) FOOTPRINT(Pichu) OVERWORLD( @@ -2746,7 +2784,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .teachableLearnset = sPichuTeachableLearnset, .eggMoveLearnset = sPichuEggMoveLearnset, .formSpeciesIdTable = sPichuFormSpeciesIdTable, - .evolutions = EVOLUTION({EVO_FRIENDSHIP, 0, SPECIES_PIKACHU}), + .evolutions = EVOLUTION({EVO_LEVEL, 0, SPECIES_PIKACHU, CONDITIONS({IF_MIN_FRIENDSHIP, FRIENDSHIP_EVO_THRESHOLD})}), }, [SPECIES_PICHU_SPIKY_EARED] = @@ -2801,6 +2839,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_PichuSpikyEared, .iconSprite = gMonIcon_PichuSpikyEared, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(2, 0, SHADOW_SIZE_S) FOOTPRINT(Pichu) OVERWORLD( @@ -2834,7 +2873,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseDefense = P_UPDATED_STATS >= GEN_6 ? 40 : 30, .baseSpeed = 90, .baseSpAttack = 50, - .baseSpDefense = P_UPDATED_STATS >= GEN_6 ? 50 : 40, + .baseSpDefense = P_UPDATED_STATS >= GEN_6 || P_UPDATED_STATS == GEN_1 ? 50 : 40, .types = MON_TYPES(TYPE_ELECTRIC), .catchRate = 190, .expYield = PIKACHU_EXP_YIELD, @@ -2887,6 +2926,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconPalIndexFemale = 2, #endif //P_CUSTOM_GENDER_DIFF_ICONS #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(-3, 5, SHADOW_SIZE_M) OVERWORLD( sPicTable_Pikachu, @@ -2958,6 +2998,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_PikachuCosplay, .iconSprite = gMonIcon_PikachuCosplay, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(-3, 5, SHADOW_SIZE_M) FOOTPRINT(Pikachu) .levelUpLearnset = sPikachuLevelUpLearnset, @@ -3009,6 +3050,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_PikachuRockStar, .iconSprite = gMonIcon_PikachuRockStar, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(-3, 5, SHADOW_SIZE_M) FOOTPRINT(Pikachu) .levelUpLearnset = sPikachuLevelUpLearnset, @@ -3061,6 +3103,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_PikachuBelle, .iconSprite = gMonIcon_PikachuBelle, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(-3, 5, SHADOW_SIZE_M) FOOTPRINT(Pikachu) .levelUpLearnset = sPikachuLevelUpLearnset, @@ -3113,6 +3156,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_PikachuPopStar, .iconSprite = gMonIcon_PikachuPopStar, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(-3, 5, SHADOW_SIZE_M) FOOTPRINT(Pikachu) .levelUpLearnset = sPikachuLevelUpLearnset, @@ -3164,6 +3208,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_PikachuPhD, .iconSprite = gMonIcon_PikachuPhD, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(-3, 5, SHADOW_SIZE_M) FOOTPRINT(Pikachu) .levelUpLearnset = sPikachuLevelUpLearnset, @@ -3215,6 +3260,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_PikachuLibre, .iconSprite = gMonIcon_PikachuLibre, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(-3, 5, SHADOW_SIZE_M) FOOTPRINT(Pikachu) .levelUpLearnset = sPikachuLevelUpLearnset, @@ -3274,6 +3320,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_PikachuOriginal, .iconSprite = gMonIcon_PikachuOriginal, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(-3, 5, SHADOW_SIZE_M) FOOTPRINT(Pikachu) .levelUpLearnset = sPikachuLevelUpLearnset, @@ -3329,6 +3376,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_PikachuHoenn, .iconSprite = gMonIcon_PikachuHoenn, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(-3, 5, SHADOW_SIZE_M) FOOTPRINT(Pikachu) .levelUpLearnset = sPikachuLevelUpLearnset, @@ -3384,6 +3432,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_PikachuSinnoh, .iconSprite = gMonIcon_PikachuSinnoh, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(-3, 5, SHADOW_SIZE_M) FOOTPRINT(Pikachu) .levelUpLearnset = sPikachuLevelUpLearnset, @@ -3439,6 +3488,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_PikachuUnova, .iconSprite = gMonIcon_PikachuUnova, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(-3, 5, SHADOW_SIZE_M) FOOTPRINT(Pikachu) .levelUpLearnset = sPikachuLevelUpLearnset, @@ -3494,6 +3544,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_PikachuKalos, .iconSprite = gMonIcon_PikachuKalos, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(-3, 5, SHADOW_SIZE_M) FOOTPRINT(Pikachu) .levelUpLearnset = sPikachuLevelUpLearnset, @@ -3549,6 +3600,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_PikachuAlola, .iconSprite = gMonIcon_PikachuAlola, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(-3, 5, SHADOW_SIZE_M) FOOTPRINT(Pikachu) .levelUpLearnset = sPikachuLevelUpLearnset, @@ -3605,6 +3657,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_PikachuPartner, .iconSprite = gMonIcon_PikachuPartner, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(-3, 5, SHADOW_SIZE_M) FOOTPRINT(Pikachu) .levelUpLearnset = sPikachuLevelUpLearnset, @@ -3660,6 +3713,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_PikachuWorld, .iconSprite = gMonIcon_PikachuWorld, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(-3, 5, SHADOW_SIZE_M) FOOTPRINT(Pikachu) .levelUpLearnset = sPikachuLevelUpLearnset, @@ -3677,7 +3731,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseDefense = P_UPDATED_STATS >= GEN_6 ? 40 : 30, .baseSpeed = 90, .baseSpAttack = 50, - .baseSpDefense = P_UPDATED_STATS >= GEN_6 ? 50 : 40, + .baseSpDefense = P_UPDATED_STATS >= GEN_6 || P_UPDATED_STATS == GEN_1 ? 50 : 40, .types = MON_TYPES(TYPE_ELECTRIC), .catchRate = 190, .expYield = PIKACHU_EXP_YIELD, @@ -3718,6 +3772,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_PikachuGmax, .iconSprite = gMonIcon_PikachuGmax, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-3, 12, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Pikachu) .isGigantamax = TRUE, @@ -3788,6 +3843,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconPalIndexFemale = 2, #endif #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(-3, 5, SHADOW_SIZE_M) FOOTPRINT(Pikachu) OVERWORLD( @@ -3825,7 +3881,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseDefense = 55, .baseSpeed = RAICHU_SPEED, .baseSpAttack = 90, - .baseSpDefense = 80, + .baseSpDefense = P_UPDATED_STATS >= GEN_2 ? 80 : 90, .types = MON_TYPES(TYPE_ELECTRIC), .catchRate = 75, .expYield = RAICHU_EXP_YIELD, @@ -3875,6 +3931,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .frontPicFemale = gMonFrontPic_RaichuF, .frontPicSizeFemale = MON_COORDS_SIZE(64, 64), #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(2, 10, SHADOW_SIZE_M) FOOTPRINT(Raichu) OVERWORLD( @@ -3947,6 +4004,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_RaichuAlola, .iconSprite = gMonIcon_RaichuAlola, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(3, 15, SHADOW_SIZE_M) FOOTPRINT(Raichu) OVERWORLD( @@ -3973,7 +4031,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseAttack = 75, .baseDefense = 85, .baseSpeed = 40, - .baseSpAttack = 20, + .baseSpAttack = P_UPDATED_STATS >= GEN_2 ? 20 : 30, .baseSpDefense = 30, .types = MON_TYPES(TYPE_GROUND), .catchRate = 255, @@ -4021,6 +4079,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Sandshrew, .iconSprite = gMonIcon_Sandshrew, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(0, 1, SHADOW_SIZE_M) FOOTPRINT(Sandshrew) OVERWORLD( @@ -4045,7 +4104,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseAttack = 100, .baseDefense = 110, .baseSpeed = 65, - .baseSpAttack = 45, + .baseSpAttack = P_UPDATED_STATS >= GEN_2 ? 45 : 55, .baseSpDefense = 55, .types = MON_TYPES(TYPE_GROUND), .catchRate = 90, @@ -4093,6 +4152,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Sandslash, .iconSprite = gMonIcon_Sandslash, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(4, 4, SHADOW_SIZE_L) FOOTPRINT(Sandslash) OVERWORLD( @@ -4158,6 +4218,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_SandshrewAlola, .iconSprite = gMonIcon_SandshrewAlola, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, SHADOW(-2, -1, SHADOW_SIZE_M) FOOTPRINT(Sandshrew) OVERWORLD( @@ -4225,6 +4286,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_SandslashAlola, .iconSprite = gMonIcon_SandslashAlola, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 9, SHADOW_SIZE_L) FOOTPRINT(Sandslash) OVERWORLD( @@ -4307,6 +4369,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_NidoranF, .iconSprite = gMonIcon_NidoranF, .iconPalIndex = P_GBA_STYLE_SPECIES_ICONS ? 2 : 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(1, 0, SHADOW_SIZE_S) FOOTPRINT(NidoranF) OVERWORLD( @@ -4378,6 +4441,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Nidorina, .iconSprite = gMonIcon_Nidorina, .iconPalIndex = P_GBA_STYLE_SPECIES_ICONS ? 2 : 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(3, 5, SHADOW_SIZE_M) FOOTPRINT(Nidorina) OVERWORLD( @@ -4401,7 +4465,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseDefense = 87, .baseSpeed = 76, .baseSpAttack = 75, - .baseSpDefense = 85, + .baseSpDefense = P_UPDATED_STATS >= GEN_2 ? 85 : 75, .types = MON_TYPES(TYPE_POISON, TYPE_GROUND), .catchRate = 45, #if P_UPDATED_EXP_YIELDS >= GEN_8 @@ -4456,6 +4520,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Nidoqueen, .iconSprite = gMonIcon_Nidoqueen, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 9, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Nidoqueen) OVERWORLD( @@ -4526,6 +4591,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_NidoranM, .iconSprite = gMonIcon_NidoranM, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(1, 0, SHADOW_SIZE_S) FOOTPRINT(NidoranM) OVERWORLD( @@ -4598,6 +4664,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Nidorino, .iconSprite = gMonIcon_Nidorino, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(2, 1, SHADOW_SIZE_L) FOOTPRINT(Nidorino) OVERWORLD( @@ -4620,7 +4687,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseAttack = P_UPDATED_STATS >= GEN_6 ? 102 : 92, .baseDefense = 77, .baseSpeed = 85, - .baseSpAttack = 85, + .baseSpAttack = P_UPDATED_STATS >= GEN_2 ? 85 : 75, .baseSpDefense = 75, .types = MON_TYPES(TYPE_POISON, TYPE_GROUND), .catchRate = 45, @@ -4679,6 +4746,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Nidoking, .iconSprite = gMonIcon_Nidoking, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 8, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Nidoking) OVERWORLD( @@ -4761,6 +4829,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Cleffa, .iconSprite = gMonIcon_Cleffa, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(0, -4, SHADOW_SIZE_S) FOOTPRINT(Cleffa) OVERWORLD( @@ -4775,7 +4844,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .levelUpLearnset = sCleffaLevelUpLearnset, .teachableLearnset = sCleffaTeachableLearnset, .eggMoveLearnset = sCleffaEggMoveLearnset, - .evolutions = EVOLUTION({EVO_FRIENDSHIP, 0, SPECIES_CLEFAIRY}), + .evolutions = EVOLUTION({EVO_LEVEL, 0, SPECIES_CLEFAIRY, CONDITIONS({IF_MIN_FRIENDSHIP, FRIENDSHIP_EVO_THRESHOLD})}), }, #endif //P_GEN_2_CROSS_EVOS @@ -4786,7 +4855,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseDefense = 48, .baseSpeed = 35, .baseSpAttack = 60, - .baseSpDefense = 65, + .baseSpDefense = P_UPDATED_STATS >= GEN_2 ? 65 : 60, .types = CLEFAIRY_FAMILY_TYPES, .catchRate = 150, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 113 : 68, @@ -4836,6 +4905,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Clefairy, .iconSprite = gMonIcon_Clefairy, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(1, 1, SHADOW_SIZE_S) FOOTPRINT(Clefairy) OVERWORLD( @@ -4859,7 +4929,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseDefense = 73, .baseSpeed = 60, .baseSpAttack = P_UPDATED_STATS >= GEN_6 ? 95 : 85, - .baseSpDefense = 90, + .baseSpDefense = P_UPDATED_STATS >= GEN_2 ? 90 : 85, .types = CLEFAIRY_FAMILY_TYPES, .catchRate = 25, #if P_UPDATED_EXP_YIELDS >= GEN_8 @@ -4917,6 +4987,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Clefable, .iconSprite = gMonIcon_Clefable, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 7, SHADOW_SIZE_M) FOOTPRINT(Clefable) OVERWORLD( @@ -4940,7 +5011,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseAttack = 41, .baseDefense = 40, .baseSpeed = 65, - .baseSpAttack = 50, + .baseSpAttack = P_UPDATED_STATS >= GEN_2 ? 50 : 65, .baseSpDefense = 65, .types = MON_TYPES(TYPE_FIRE), .catchRate = 190, @@ -4988,6 +5059,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Vulpix, .iconSprite = gMonIcon_Vulpix, .iconPalIndex = P_GBA_STYLE_SPECIES_ICONS ? 2 : 5, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(0, 2, SHADOW_SIZE_M) FOOTPRINT(Vulpix) OVERWORLD( @@ -5012,7 +5084,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseAttack = 76, .baseDefense = 75, .baseSpeed = 100, - .baseSpAttack = 81, + .baseSpAttack = P_UPDATED_STATS >= GEN_2 ? 81 : 100, .baseSpDefense = 100, .types = MON_TYPES(TYPE_FIRE), .catchRate = 75, @@ -5061,6 +5133,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Ninetales, .iconSprite = gMonIcon_Ninetales, .iconPalIndex = P_GBA_STYLE_SPECIES_ICONS ? 1 : 3, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 7, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Ninetales) OVERWORLD( @@ -5126,6 +5199,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_VulpixAlola, .iconSprite = gMonIcon_VulpixAlola, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(-2, 3, SHADOW_SIZE_M) FOOTPRINT(Vulpix) OVERWORLD( @@ -5194,6 +5268,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_NinetalesAlola, .iconSprite = gMonIcon_NinetalesAlola, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 12, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Ninetales) OVERWORLD( @@ -5279,6 +5354,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Igglybuff, .iconSprite = gMonIcon_Igglybuff, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, SHADOW(0, -3, SHADOW_SIZE_S) FOOTPRINT(Igglybuff) OVERWORLD( @@ -5293,7 +5369,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .levelUpLearnset = sIgglybuffLevelUpLearnset, .teachableLearnset = sIgglybuffTeachableLearnset, .eggMoveLearnset = sIgglybuffEggMoveLearnset, - .evolutions = EVOLUTION({EVO_FRIENDSHIP, 0, SPECIES_JIGGLYPUFF}), + .evolutions = EVOLUTION({EVO_LEVEL, 0, SPECIES_JIGGLYPUFF, CONDITIONS({IF_MIN_FRIENDSHIP, FRIENDSHIP_EVO_THRESHOLD})}), }, #endif //P_GEN_2_CROSS_EVOS @@ -5303,7 +5379,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseAttack = 45, .baseDefense = 20, .baseSpeed = 20, - .baseSpAttack = 45, + .baseSpAttack = P_UPDATED_STATS >= GEN_2 ? 45 : 25, .baseSpDefense = 25, .types = JIGGLYPUFF_FAMILY_TYPES, .catchRate = 170, @@ -5356,6 +5432,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Jigglypuff, .iconSprite = gMonIcon_Jigglypuff, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, SHADOW(-1, -1, SHADOW_SIZE_S) FOOTPRINT(Jigglypuff) OVERWORLD( @@ -5372,13 +5449,21 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .evolutions = EVOLUTION({EVO_ITEM, ITEM_MOON_STONE, SPECIES_WIGGLYTUFF}), }, +#if P_UPDATED_STATS >= GEN_6 +#define WIGGLYTUFF_SP_ATK 85 +#elif P_UPDATED_STATS >= GEN_2 +#define WIGGLYTUFF_SP_ATK 75 +#else +#define WIGGLYTUFF_SP_ATK 50 +#endif + [SPECIES_WIGGLYTUFF] = { .baseHP = 140, .baseAttack = 70, .baseDefense = 45, .baseSpeed = 45, - .baseSpAttack = P_UPDATED_STATS >= GEN_6 ? 85 : 75, + .baseSpAttack = WIGGLYTUFF_SP_ATK, .baseSpDefense = 50, .types = JIGGLYPUFF_FAMILY_TYPES, .catchRate = 50, @@ -5439,6 +5524,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Wigglytuff, .iconSprite = gMonIcon_Wigglytuff, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 8, SHADOW_SIZE_M) FOOTPRINT(Wigglytuff) OVERWORLD( @@ -5462,7 +5548,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseAttack = 45, .baseDefense = 35, .baseSpeed = 55, - .baseSpAttack = 30, + .baseSpAttack = P_UPDATED_STATS >= GEN_2 ? 30 : 40, .baseSpDefense = 40, .types = MON_TYPES(TYPE_POISON, TYPE_FLYING), .catchRate = 255, @@ -5524,6 +5610,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backPicFemale = gMonBackPic_ZubatF, .backPicSizeFemale = MON_COORDS_SIZE(56, 56), #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-4, 11, SHADOW_SIZE_S) FOOTPRINT(Zubat) OVERWORLD( @@ -5554,7 +5641,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseAttack = 80, .baseDefense = 70, .baseSpeed = 90, - .baseSpAttack = 65, + .baseSpAttack = P_UPDATED_STATS >= GEN_2 ? 65 : 75, .baseSpDefense = 75, .types = MON_TYPES(TYPE_POISON, TYPE_FLYING), .catchRate = 90, @@ -5622,6 +5709,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backPicFemale = gMonBackPic_GolbatF, .backPicSizeFemale = MON_COORDS_SIZE(56, 40), #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(2, 14, SHADOW_SIZE_M) FOOTPRINT(Golbat) OVERWORLD( @@ -5642,7 +5730,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = ) .levelUpLearnset = sGolbatLevelUpLearnset, .teachableLearnset = sGolbatTeachableLearnset, - .evolutions = EVOLUTION({EVO_FRIENDSHIP, 0, SPECIES_CROBAT}), + .evolutions = EVOLUTION({EVO_LEVEL, 0, SPECIES_CROBAT, CONDITIONS({IF_MIN_FRIENDSHIP, FRIENDSHIP_EVO_THRESHOLD})}), }, #if P_GEN_2_CROSS_EVOS @@ -5718,6 +5806,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Crobat, .iconSprite = gMonIcon_Crobat, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-3, 14, SHADOW_SIZE_M) FOOTPRINT(Crobat) OVERWORLD( @@ -5743,7 +5832,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseDefense = 55, .baseSpeed = 30, .baseSpAttack = 75, - .baseSpDefense = 65, + .baseSpDefense = P_UPDATED_STATS >= GEN_2 ? 65 : 75, .types = MON_TYPES(TYPE_GRASS, TYPE_POISON), .catchRate = 255, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 64 : 78, @@ -5792,6 +5881,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Oddish, .iconSprite = gMonIcon_Oddish, .iconPalIndex = P_GBA_STYLE_SPECIES_ICONS ? 1 : 4, + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, SHADOW(0, -2, SHADOW_SIZE_S) FOOTPRINT(Oddish) OVERWORLD( @@ -5816,7 +5906,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseDefense = 70, .baseSpeed = 40, .baseSpAttack = 85, - .baseSpDefense = 75, + .baseSpDefense = P_UPDATED_STATS >= GEN_2 ? 75 : 85, .types = MON_TYPES(TYPE_GRASS, TYPE_POISON), .catchRate = 120, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 138 : 132, @@ -5868,6 +5958,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backPicFemale = gMonBackPic_GloomF, .backPicSizeFemale = MON_COORDS_SIZE(64, 48), #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 3, SHADOW_SIZE_M) FOOTPRINT(Gloom) OVERWORLD( @@ -5899,7 +5990,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseDefense = 85, .baseSpeed = 50, .baseSpAttack = P_UPDATED_STATS >= GEN_6 ? 110 : 100, - .baseSpDefense = 90, + .baseSpDefense = P_UPDATED_STATS >= GEN_2 ? 90 : 100, .types = MON_TYPES(TYPE_GRASS, TYPE_POISON), .catchRate = 45, #if P_UPDATED_EXP_YIELDS >= GEN_8 @@ -5957,6 +6048,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backPicFemale = gMonBackPic_VileplumeF, .backPicSizeFemale = MON_COORDS_SIZE(64, 56), #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 7, SHADOW_SIZE_L) FOOTPRINT(Vileplume) OVERWORLD( @@ -6053,6 +6145,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Bellossom, .iconSprite = gMonIcon_Bellossom, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, SHADOW(0, 0, SHADOW_SIZE_S) FOOTPRINT(Bellossom) OVERWORLD( @@ -6077,7 +6170,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseAttack = 70, .baseDefense = 55, .baseSpeed = 25, - .baseSpAttack = 45, + .baseSpAttack = P_UPDATED_STATS >= GEN_2 ? 45 : 55, .baseSpDefense = 55, .types = MON_TYPES(TYPE_BUG, TYPE_GRASS), .catchRate = 190, @@ -6142,6 +6235,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Paras, .iconSprite = gMonIcon_Paras, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(7, -11, SHADOW_SIZE_M) FOOTPRINT(Paras) OVERWORLD( @@ -6165,7 +6259,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseAttack = 95, .baseDefense = 80, .baseSpeed = 30, - .baseSpAttack = 60, + .baseSpAttack = P_UPDATED_STATS >= GEN_2 ? 60 : 80, .baseSpDefense = 80, .types = MON_TYPES(TYPE_BUG, TYPE_GRASS), .catchRate = 75, @@ -6221,6 +6315,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Parasect, .iconSprite = gMonIcon_Parasect, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(5, 2, SHADOW_SIZE_L) FOOTPRINT(Parasect) OVERWORLD( @@ -6245,7 +6340,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseDefense = 50, .baseSpeed = 45, .baseSpAttack = 40, - .baseSpDefense = 55, + .baseSpDefense = P_UPDATED_STATS >= GEN_2 ? 55 : 40, .types = MON_TYPES(TYPE_BUG, TYPE_POISON), .catchRate = 190, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 61 : 75, @@ -6297,6 +6392,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Venonat, .iconSprite = gMonIcon_Venonat, .iconPalIndex = P_GBA_STYLE_SPECIES_ICONS ? 0 : 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 5, SHADOW_SIZE_M) FOOTPRINT(Venonat) OVERWORLD( @@ -6321,7 +6417,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseDefense = 60, .baseSpeed = 90, .baseSpAttack = 90, - .baseSpDefense = 75, + .baseSpDefense = P_UPDATED_STATS >= GEN_2 ? 75 : 90, .types = MON_TYPES(TYPE_BUG, TYPE_POISON), .catchRate = 75, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 158 : 138, @@ -6391,6 +6487,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Venomoth, .iconSprite = gMonIcon_Venomoth, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-5, 18, SHADOW_SIZE_M) FOOTPRINT(Venomoth) OVERWORLD( @@ -6417,15 +6514,13 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = #define DUGTRIO_EXP_YIELD 153 #endif -#define DUGTRIO_ATTACK (P_UPDATED_STATS >= GEN_7 ? 100 : 80) - [SPECIES_DIGLETT] = { .baseHP = 10, .baseAttack = 55, .baseDefense = 25, .baseSpeed = 95, - .baseSpAttack = 35, + .baseSpAttack = P_UPDATED_STATS >= GEN_2 ? 35 : 45, .baseSpDefense = 45, .types = MON_TYPES(TYPE_GROUND), .catchRate = 255, @@ -6472,6 +6567,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Diglett, .iconSprite = gMonIcon_Diglett, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, NO_SHADOW FOOTPRINT(Diglett) OVERWORLD( @@ -6493,10 +6589,10 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = [SPECIES_DUGTRIO] = { .baseHP = 35, - .baseAttack = DUGTRIO_ATTACK, + .baseAttack = P_UPDATED_STATS >= GEN_7 ? 100 : 80, .baseDefense = 50, .baseSpeed = 120, - .baseSpAttack = 50, + .baseSpAttack = P_UPDATED_STATS >= GEN_2 ? 50 : 70, .baseSpDefense = 70, .types = MON_TYPES(TYPE_GROUND), .catchRate = 50, @@ -6550,6 +6646,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Dugtrio, .iconSprite = gMonIcon_Dugtrio, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, NO_SHADOW FOOTPRINT(Dugtrio) OVERWORLD( @@ -6615,6 +6712,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_DiglettAlola, .iconSprite = gMonIcon_DiglettAlola, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, NO_SHADOW FOOTPRINT(Diglett) OVERWORLD( @@ -6637,7 +6735,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = [SPECIES_DUGTRIO_ALOLA] = { .baseHP = 35, - .baseAttack = DUGTRIO_ATTACK, + .baseAttack = 100, .baseDefense = 60, .baseSpeed = 110, .baseSpAttack = 50, @@ -6683,6 +6781,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_DugtrioAlola, .iconSprite = gMonIcon_DugtrioAlola, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, NO_SHADOW FOOTPRINT(Dugtrio) OVERWORLD( @@ -6763,6 +6862,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Meowth, .iconSprite = gMonIcon_Meowth, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(0, 3, SHADOW_SIZE_S) FOOTPRINT(Meowth) OVERWORLD( @@ -6838,6 +6938,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Persian, .iconSprite = gMonIcon_Persian, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-2, 8, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Persian) OVERWORLD( @@ -6903,6 +7004,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_MeowthAlola, .iconSprite = gMonIcon_MeowthAlola, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(-2, 5, SHADOW_SIZE_M) FOOTPRINT(Meowth) OVERWORLD( @@ -6919,7 +7021,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .teachableLearnset = sMeowthAlolaTeachableLearnset, .eggMoveLearnset = sMeowthAlolaEggMoveLearnset, .formSpeciesIdTable = sMeowthFormSpeciesIdTable, - .evolutions = EVOLUTION({EVO_FRIENDSHIP, 0, SPECIES_PERSIAN_ALOLA}), + .evolutions = EVOLUTION({EVO_LEVEL, 0, SPECIES_PERSIAN_ALOLA, CONDITIONS({IF_MIN_FRIENDSHIP, FRIENDSHIP_EVO_THRESHOLD})}), }, [SPECIES_PERSIAN_ALOLA] = @@ -6970,6 +7072,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_PersianAlola, .iconSprite = gMonIcon_PersianAlola, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 9, SHADOW_SIZE_L) FOOTPRINT(Persian) OVERWORLD( @@ -7036,6 +7139,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_MeowthGalar, .iconSprite = gMonIcon_MeowthGalar, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(1, 4, SHADOW_SIZE_M) FOOTPRINT(Meowth) OVERWORLD( @@ -7101,6 +7205,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Perrserker, .iconSprite = gMonIcon_Perrserker, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(2, 11, SHADOW_SIZE_M) FOOTPRINT(Perrserker) OVERWORLD( @@ -7166,6 +7271,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_MeowthGmax, .iconSprite = gMonIcon_MeowthGmax, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(4, 10, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Meowth) .isGigantamax = TRUE, @@ -7185,7 +7291,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseAttack = 52, .baseDefense = 48, .baseSpeed = 55, - .baseSpAttack = 65, + .baseSpAttack = P_UPDATED_STATS >= GEN_2 ? 65 : 50, .baseSpDefense = 50, .types = MON_TYPES(TYPE_WATER), .catchRate = 190, @@ -7232,6 +7338,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Psyduck, .iconSprite = gMonIcon_Psyduck, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, SHADOW(1, 2, SHADOW_SIZE_M) FOOTPRINT(Psyduck) OVERWORLD( @@ -7255,7 +7362,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseAttack = 82, .baseDefense = 78, .baseSpeed = 85, - .baseSpAttack = 95, + .baseSpAttack = P_UPDATED_STATS >= GEN_2 ? 95 : 80, .baseSpDefense = 80, .types = MON_TYPES(TYPE_WATER), .catchRate = 75, @@ -7302,6 +7409,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Golduck, .iconSprite = gMonIcon_Golduck, .iconPalIndex = P_GBA_STYLE_SPECIES_ICONS ? 2 : 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 6, SHADOW_SIZE_M) FOOTPRINT(Golduck) OVERWORLD( @@ -7326,7 +7434,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseDefense = 35, .baseSpeed = 70, .baseSpAttack = 35, - .baseSpDefense = 45, + .baseSpDefense = P_UPDATED_STATS >= GEN_2 ? 45 : 35, .types = MON_TYPES(TYPE_FIGHTING), .catchRate = 190, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 61 : 74, @@ -7378,6 +7486,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Mankey, .iconSprite = gMonIcon_Mankey, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(-1, 1, SHADOW_SIZE_M) FOOTPRINT(Mankey) OVERWORLD( @@ -7402,7 +7511,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseDefense = 60, .baseSpeed = 95, .baseSpAttack = 60, - .baseSpDefense = 70, + .baseSpDefense = P_UPDATED_STATS >= GEN_2 ? 70 : 60, .types = MON_TYPES(TYPE_FIGHTING), .catchRate = 75, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 159 : 149, @@ -7454,6 +7563,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Primeape, .iconSprite = gMonIcon_Primeape, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 7, SHADOW_SIZE_L) FOOTPRINT(Primeape) OVERWORLD( @@ -7467,7 +7577,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = ) .levelUpLearnset = sPrimeapeLevelUpLearnset, .teachableLearnset = sPrimeapeTeachableLearnset, - .evolutions = EVOLUTION({EVO_USE_MOVE_TWENTY_TIMES, MOVE_RAGE_FIST, SPECIES_ANNIHILAPE}), + .evolutions = EVOLUTION({EVO_LEVEL, 0, SPECIES_ANNIHILAPE, CONDITIONS({IF_USED_MOVE_X_TIMES, MOVE_RAGE_FIST, 20})}), }, #if P_GEN_9_CROSS_EVOS @@ -7518,6 +7628,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Annihilape, .iconSprite = gMonIcon_Annihilape, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 13, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Annihilape) OVERWORLD( @@ -7542,7 +7653,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseAttack = 70, .baseDefense = 45, .baseSpeed = 60, - .baseSpAttack = 70, + .baseSpAttack = P_UPDATED_STATS >= GEN_2 ? 70 : 50, .baseSpDefense = 50, .types = MON_TYPES(TYPE_FIRE), .catchRate = 190, @@ -7591,6 +7702,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Growlithe, .iconSprite = gMonIcon_Growlithe, .iconPalIndex = P_GBA_STYLE_SPECIES_ICONS ? 0 : 3, + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(0, 4, SHADOW_SIZE_M) FOOTPRINT(Growlithe) OVERWORLD( @@ -7615,7 +7727,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseAttack = 110, .baseDefense = 80, .baseSpeed = 95, - .baseSpAttack = 100, + .baseSpAttack = P_UPDATED_STATS >= GEN_2 ? 100 : 80, .baseSpDefense = 80, .types = MON_TYPES(TYPE_FIRE), .catchRate = 75, @@ -7660,6 +7772,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Arcanine, .iconSprite = gMonIcon_Arcanine, .iconPalIndex = P_GBA_STYLE_SPECIES_ICONS ? 0 : 3, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-4, 11, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Arcanine) OVERWORLD( @@ -7724,6 +7837,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_GrowlitheHisui, .iconSprite = gMonIcon_GrowlitheHisui, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(2, -2, SHADOW_SIZE_M) FOOTPRINT(Growlithe) OVERWORLD( @@ -7789,6 +7903,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_ArcanineHisui, .iconSprite = gMonIcon_ArcanineHisui, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 11, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Arcanine) OVERWORLD( @@ -7861,6 +7976,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Poliwag, .iconSprite = gMonIcon_Poliwag, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, SHADOW(-3, 0, SHADOW_SIZE_S) FOOTPRINT(Poliwag) OVERWORLD( @@ -7934,6 +8050,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Poliwhirl, .iconSprite = gMonIcon_Poliwhirl, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 4, SHADOW_SIZE_M) FOOTPRINT(Poliwhirl) OVERWORLD( @@ -7948,7 +8065,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .levelUpLearnset = sPoliwhirlLevelUpLearnset, .teachableLearnset = sPoliwhirlTeachableLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_WATER_STONE, SPECIES_POLIWRATH}, - {EVO_TRADE_ITEM, ITEM_KINGS_ROCK, SPECIES_POLITOED}, + {EVO_TRADE, 0, SPECIES_POLITOED, CONDITIONS({IF_HOLD_ITEM, ITEM_KINGS_ROCK})}, {EVO_ITEM, ITEM_KINGS_ROCK, SPECIES_POLITOED}), }, @@ -7959,7 +8076,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseDefense = 95, .baseSpeed = 70, .baseSpAttack = 70, - .baseSpDefense = 90, + .baseSpDefense = P_UPDATED_STATS >= GEN_2 ? 90 : 70, .types = MON_TYPES(TYPE_WATER, TYPE_FIGHTING), .catchRate = 45, #if P_UPDATED_EXP_YIELDS >= GEN_8 @@ -8012,6 +8129,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Poliwrath, .iconSprite = gMonIcon_Poliwrath, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 7, SHADOW_SIZE_L) FOOTPRINT(Poliwrath) OVERWORLD( @@ -8097,6 +8215,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backPicFemale = gMonBackPic_PolitoedF, .backPicSizeFemale = MON_COORDS_SIZE(56, 56), #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 9, SHADOW_SIZE_M) FOOTPRINT(Politoed) OVERWORLD( @@ -8129,7 +8248,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseDefense = 15, .baseSpeed = 90, .baseSpAttack = 105, - .baseSpDefense = 55, + .baseSpDefense = P_UPDATED_STATS >= GEN_2 ? 55 : 105, .types = MON_TYPES(TYPE_PSYCHIC), .catchRate = 200, #if P_UPDATED_EXP_YIELDS >= GEN_5 @@ -8182,6 +8301,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Abra, .iconSprite = gMonIcon_Abra, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 0, SHADOW_SIZE_L) FOOTPRINT(Abra) OVERWORLD( @@ -8206,7 +8326,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseDefense = 30, .baseSpeed = 105, .baseSpAttack = 120, - .baseSpDefense = 70, + .baseSpDefense = P_UPDATED_STATS >= GEN_2 ? 70 : 120, .types = MON_TYPES(TYPE_PSYCHIC), .catchRate = 100, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 140 : 145, @@ -8258,6 +8378,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backPicFemale = gMonBackPic_KadabraF, .backPicSizeFemale = MON_COORDS_SIZE(64, 48), #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 6, SHADOW_SIZE_L) FOOTPRINT(Kadabra) OVERWORLD( @@ -8282,7 +8403,13 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = {EVO_ITEM, ITEM_LINKING_CORD, SPECIES_ALAKAZAM}), }, -#define ALAKAZAM_SP_DEF (P_UPDATED_STATS >= GEN_6 ? 95 : 85) +#if P_UPDATED_STATS >= GEN_6 +#define ALAKAZAM_SP_DEF 95 +#elif P_UPDATED_STATS >= GEN_2 +#define ALAKAZAM_SP_DEF 85 +#else +#define ALAKAZAM_SP_DEF 135 +#endif [SPECIES_ALAKAZAM] = { @@ -8350,6 +8477,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backPicFemale = gMonBackPic_AlakazamF, .backPicSizeFemale = MON_COORDS_SIZE(64, 56), #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 9, SHADOW_SIZE_L) FOOTPRINT(Alakazam) OVERWORLD( @@ -8382,7 +8510,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseDefense = 65, .baseSpeed = 150, .baseSpAttack = 175, - .baseSpDefense = ALAKAZAM_SP_DEF + 10, + .baseSpDefense = 105, .types = MON_TYPES(TYPE_PSYCHIC), .catchRate = 50, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_8) ? 300 : 270, @@ -8423,6 +8551,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_AlakazamMega, .iconSprite = gMonIcon_AlakazamMega, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 18, SHADOW_SIZE_L) FOOTPRINT(Alakazam) #if OW_BATTLE_ONLY_FORMS @@ -8510,6 +8639,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Machop, .iconSprite = gMonIcon_Machop, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 3, SHADOW_SIZE_S) FOOTPRINT(Machop) OVERWORLD( @@ -8534,7 +8664,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseDefense = 70, .baseSpeed = 45, .baseSpAttack = 50, - .baseSpDefense = 60, + .baseSpDefense = P_UPDATED_STATS >= GEN_2 ? 60 : 50, .types = MON_TYPES(TYPE_FIGHTING), .catchRate = 90, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 142 : 146, @@ -8584,6 +8714,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Machoke, .iconSprite = gMonIcon_Machoke, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 9, SHADOW_SIZE_M) FOOTPRINT(Machoke) OVERWORLD( @@ -8616,7 +8747,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseDefense = 80, .baseSpeed = 55, .baseSpAttack = 65, - .baseSpDefense = 85, + .baseSpDefense = P_UPDATED_STATS >= GEN_2 ? 85 : 65, .types = MON_TYPES(TYPE_FIGHTING), .catchRate = 45, .expYield = MACHAMP_EXP_YIELD, @@ -8669,6 +8800,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Machamp, .iconSprite = gMonIcon_Machamp, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(7, 13, SHADOW_SIZE_L) FOOTPRINT(Machamp) OVERWORLD( @@ -8694,7 +8826,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseDefense = 80, .baseSpeed = 55, .baseSpAttack = 65, - .baseSpDefense = 85, + .baseSpDefense = P_UPDATED_STATS >= GEN_2 ? 85 : 65, .types = MON_TYPES(TYPE_FIGHTING), .catchRate = 45, .expYield = MACHAMP_EXP_YIELD, @@ -8739,6 +8871,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_MachampGmax, .iconSprite = gMonIcon_MachampGmax, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(7, 13, SHADOW_SIZE_L) FOOTPRINT(Machamp) .isGigantamax = TRUE, @@ -8758,7 +8891,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseDefense = 35, .baseSpeed = 40, .baseSpAttack = 70, - .baseSpDefense = 30, + .baseSpDefense = P_UPDATED_STATS >= GEN_2 ? 30 : 70, .types = MON_TYPES(TYPE_GRASS, TYPE_POISON), .catchRate = 255, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 60 : 84, @@ -8802,6 +8935,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Bellsprout, .iconSprite = gMonIcon_Bellsprout, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, SHADOW(-2, 3, SHADOW_SIZE_S) FOOTPRINT(Bellsprout) OVERWORLD( @@ -8826,7 +8960,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseDefense = 50, .baseSpeed = 55, .baseSpAttack = 85, - .baseSpDefense = 45, + .baseSpDefense = P_UPDATED_STATS >= GEN_2 ? 45 : 85, .types = MON_TYPES(TYPE_GRASS, TYPE_POISON), .catchRate = 120, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 137 : 151, @@ -8875,6 +9009,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Weepinbell, .iconSprite = gMonIcon_Weepinbell, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-3, 3, SHADOW_SIZE_M) FOOTPRINT(Weepinbell) OVERWORLD( @@ -8891,6 +9026,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .evolutions = EVOLUTION({EVO_ITEM, ITEM_LEAF_STONE, SPECIES_VICTREEBEL}), }, +#if P_UPDATED_STATS >= GEN_6 + #define VICTREEBEL_SP_DEF 70 +#elif P_UPDATED_STATS >= GEN_2 + #define VICTREEBEL_SP_DEF 60 +#else + #define VICTREEBEL_SP_DEF 100 +#endif + [SPECIES_VICTREEBEL] = { .baseHP = 80, @@ -8898,7 +9041,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseDefense = 65, .baseSpeed = 70, .baseSpAttack = 100, - .baseSpDefense = P_UPDATED_STATS >= GEN_6 ? 70 : 60, + .baseSpDefense = VICTREEBEL_SP_DEF, .types = MON_TYPES(TYPE_GRASS, TYPE_POISON), .catchRate = 45, #if P_UPDATED_EXP_YIELDS >= GEN_8 @@ -8954,6 +9097,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Victreebel, .iconSprite = gMonIcon_Victreebel, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(3, 8, SHADOW_SIZE_M) FOOTPRINT(Victreebel) OVERWORLD( @@ -8977,7 +9121,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseAttack = 40, .baseDefense = 35, .baseSpeed = 70, - .baseSpAttack = 50, + .baseSpAttack = P_UPDATED_STATS >= GEN_2 ? 50 : 100, .baseSpDefense = 100, .types = MON_TYPES(TYPE_WATER, TYPE_POISON), .catchRate = 190, @@ -9025,6 +9169,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Tentacool, .iconSprite = gMonIcon_Tentacool, .iconPalIndex = P_GBA_STYLE_SPECIES_ICONS ? 2 : 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 6, SHADOW_SIZE_M) FOOTPRINT(Tentacool) OVERWORLD( @@ -9048,7 +9193,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseAttack = 70, .baseDefense = 65, .baseSpeed = 100, - .baseSpAttack = 80, + .baseSpAttack = P_UPDATED_STATS >= GEN_2 ? 80 : 120, .baseSpDefense = 120, .types = MON_TYPES(TYPE_WATER, TYPE_POISON), .catchRate = 60, @@ -9096,6 +9241,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Tentacruel, .iconSprite = gMonIcon_Tentacruel, .iconPalIndex = P_GBA_STYLE_SPECIES_ICONS ? 2 : 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(2, 8, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Tentacruel) OVERWORLD( @@ -9187,6 +9333,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Geodude, .iconSprite = gMonIcon_Geodude, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 2, SHADOW_SIZE_M) FOOTPRINT(Geodude) OVERWORLD( @@ -9259,6 +9406,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Graveler, .iconSprite = gMonIcon_Graveler, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 3, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Graveler) OVERWORLD( @@ -9284,7 +9432,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseDefense = 130, .baseSpeed = 45, .baseSpAttack = 55, - .baseSpDefense = 65, + .baseSpDefense = P_UPDATED_STATS >= GEN_2 ? 65 : 55, .types = MON_TYPES(TYPE_ROCK, TYPE_GROUND), .catchRate = 45, .expYield = GOLEM_EXP_YIELD, @@ -9331,6 +9479,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Golem, .iconSprite = gMonIcon_Golem, .iconPalIndex = P_GBA_STYLE_SPECIES_ICONS ? 1 : 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(3, 5, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Golem) OVERWORLD( @@ -9397,6 +9546,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_GeodudeAlola, .iconSprite = gMonIcon_GeodudeAlola, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 10, SHADOW_SIZE_M) FOOTPRINT(Geodude) OVERWORLD( @@ -9464,6 +9614,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_GravelerAlola, .iconSprite = gMonIcon_GravelerAlola, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 5, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Graveler) OVERWORLD( @@ -9531,6 +9682,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_GolemAlola, .iconSprite = gMonIcon_GolemAlola, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(2, 11, SHADOW_SIZE_L) FOOTPRINT(Golem) OVERWORLD( @@ -9602,6 +9754,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Ponyta, .iconSprite = gMonIcon_Ponyta, .iconPalIndex = P_GBA_STYLE_SPECIES_ICONS ? 0 : 3, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 7, SHADOW_SIZE_M) FOOTPRINT(Ponyta) OVERWORLD( @@ -9671,6 +9824,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Rapidash, .iconSprite = gMonIcon_Rapidash, .iconPalIndex = P_GBA_STYLE_SPECIES_ICONS ? 0 : 3, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 12, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Rapidash) OVERWORLD( @@ -9735,6 +9889,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_PonytaGalar, .iconSprite = gMonIcon_PonytaGalar, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-5, 5, SHADOW_SIZE_M) FOOTPRINT(Ponyta) OVERWORLD( @@ -9801,6 +9956,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_RapidashGalar, .iconSprite = gMonIcon_RapidashGalar, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 13, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Rapidash) OVERWORLD( @@ -9873,6 +10029,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Slowpoke, .iconSprite = gMonIcon_Slowpoke, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, -5, SHADOW_SIZE_L) FOOTPRINT(Slowpoke) OVERWORLD( @@ -9889,7 +10046,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .eggMoveLearnset = sSlowpokeEggMoveLearnset, .formSpeciesIdTable = sSlowpokeFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_LEVEL, 37, SPECIES_SLOWBRO}, - {EVO_TRADE_ITEM, ITEM_KINGS_ROCK, SPECIES_SLOWKING}, + {EVO_TRADE, 0, SPECIES_SLOWKING, CONDITIONS({IF_HOLD_ITEM, ITEM_KINGS_ROCK})}, {EVO_ITEM, ITEM_KINGS_ROCK, SPECIES_SLOWKING}), }, @@ -9899,7 +10056,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseAttack = 75, .baseDefense = 110, .baseSpeed = 30, - .baseSpAttack = 100, + .baseSpAttack = P_UPDATED_STATS >= GEN_2 ? 100 : 80, .baseSpDefense = 80, .types = MON_TYPES(TYPE_WATER, TYPE_PSYCHIC), .catchRate = 75, @@ -9944,6 +10101,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Slowbro, .iconSprite = gMonIcon_Slowbro, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 8, SHADOW_SIZE_L) FOOTPRINT(Slowbro) OVERWORLD( @@ -10014,6 +10172,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Slowking, .iconSprite = gMonIcon_Slowking, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-2, 11, SHADOW_SIZE_M) FOOTPRINT(Slowking) OVERWORLD( @@ -10080,6 +10239,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_SlowbroMega, .iconSprite = gMonIcon_SlowbroMega, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 13, SHADOW_SIZE_L) FOOTPRINT(Slowbro) #if OW_BATTLE_ONLY_FORMS @@ -10149,6 +10309,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_SlowpokeGalar, .iconSprite = gMonIcon_SlowpokeGalar, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-3, -8, SHADOW_SIZE_L) FOOTPRINT(Slowpoke) OVERWORLD( @@ -10217,6 +10378,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_SlowbroGalar, .iconSprite = gMonIcon_SlowbroGalar, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-5, 9, SHADOW_SIZE_L) FOOTPRINT(Slowbro) OVERWORLD( @@ -10282,6 +10444,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_SlowkingGalar, .iconSprite = gMonIcon_SlowkingGalar, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-2, 12, SHADOW_SIZE_M) FOOTPRINT(Slowking) OVERWORLD( @@ -10310,7 +10473,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseDefense = 70, .baseSpeed = 45, .baseSpAttack = 95, - .baseSpDefense = 55, + .baseSpDefense = P_UPDATED_STATS >= GEN_2 ? 55 : 95, .types = MON_TYPES(TYPE_ELECTRIC, TYPE_STEEL), .catchRate = 190, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 65 : 89, @@ -10358,6 +10521,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Magnemite, .iconSprite = gMonIcon_Magnemite, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 8, SHADOW_SIZE_S) FOOTPRINT(Magnemite) OVERWORLD( @@ -10381,7 +10545,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseDefense = 95, .baseSpeed = 70, .baseSpAttack = 120, - .baseSpDefense = 70, + .baseSpDefense = P_UPDATED_STATS >= GEN_2 ? 70 : 120, .types = MON_TYPES(TYPE_ELECTRIC, TYPE_STEEL), .catchRate = 60, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 163 : 161, @@ -10431,6 +10595,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Magneton, .iconSprite = gMonIcon_Magneton, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 13, SHADOW_SIZE_M) FOOTPRINT(Magneton) OVERWORLD( @@ -10444,7 +10609,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = ) .levelUpLearnset = sMagnetonLevelUpLearnset, .teachableLearnset = sMagnetonTeachableLearnset, - .evolutions = EVOLUTION({EVO_MAPSEC, MAPSEC_NEW_MAUVILLE, SPECIES_MAGNEZONE}, + .evolutions = EVOLUTION({EVO_LEVEL, 0, SPECIES_MAGNEZONE, CONDITIONS({IF_IN_MAPSEC, MAPSEC_NEW_MAUVILLE})}, {EVO_ITEM, ITEM_THUNDER_STONE, SPECIES_MAGNEZONE}), }, @@ -10510,6 +10675,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Magnezone, .iconSprite = gMonIcon_Magnezone, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(4, 11, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Magnezone) OVERWORLD( @@ -10545,7 +10711,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseDefense = 55, .baseSpeed = 60, .baseSpAttack = 58, - .baseSpDefense = 62, + .baseSpDefense = P_UPDATED_STATS >= GEN_2 ? 62 : 58, .types = MON_TYPES(TYPE_NORMAL, TYPE_FLYING), .catchRate = 45, .expYield = FARFETCHD_EXP_YIELD, @@ -10599,6 +10765,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Farfetchd, .iconSprite = gMonIcon_Farfetchd, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-3, 5, SHADOW_SIZE_M) FOOTPRINT(Farfetchd) OVERWORLD( @@ -10665,6 +10832,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_FarfetchdGalar, .iconSprite = gMonIcon_FarfetchdGalar, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-7, 2, SHADOW_SIZE_L) FOOTPRINT(Farfetchd) OVERWORLD( @@ -10681,7 +10849,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .teachableLearnset = sFarfetchdGalarTeachableLearnset, .eggMoveLearnset = sFarfetchdGalarEggMoveLearnset, .formSpeciesIdTable = sFarfetchdFormSpeciesIdTable, - .evolutions = EVOLUTION({EVO_CRITICAL_HITS, 3, SPECIES_SIRFETCHD}), + .evolutions = EVOLUTION({EVO_BATTLE_END, 0, SPECIES_SIRFETCHD, CONDITIONS({IF_CRITICAL_HITS_GE, 3})}), }, [SPECIES_SIRFETCHD] = @@ -10732,6 +10900,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Sirfetchd, .iconSprite = gMonIcon_Sirfetchd, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 11, SHADOW_SIZE_L) FOOTPRINT(Sirfetchd) OVERWORLD( @@ -10810,6 +10979,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backPicFemale = gMonBackPic_DoduoF, .backPicSizeFemale = MON_COORDS_SIZE(64, 56), #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(6, 5, SHADOW_SIZE_M) FOOTPRINT(Doduo) OVERWORLD( @@ -10902,6 +11072,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backPicFemale = gMonBackPic_DodrioF, .backPicSizeFemale = MON_COORDS_SIZE(64, 64), #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(3, 12, SHADOW_SIZE_L) FOOTPRINT(Dodrio) OVERWORLD( @@ -10932,7 +11103,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseAttack = 45, .baseDefense = 55, .baseSpeed = 45, - .baseSpAttack = 45, + .baseSpAttack = P_UPDATED_STATS >= GEN_2 ? 45 : 70, .baseSpDefense = 70, .types = MON_TYPES(TYPE_WATER), .catchRate = 190, @@ -10982,6 +11153,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Seel, .iconSprite = gMonIcon_Seel, .iconPalIndex = P_GBA_STYLE_SPECIES_ICONS ? 2 : 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 3, SHADOW_SIZE_L) FOOTPRINT(Seel) OVERWORLD( @@ -11005,7 +11177,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseAttack = 70, .baseDefense = 80, .baseSpeed = 70, - .baseSpAttack = 70, + .baseSpAttack = P_UPDATED_STATS >= GEN_2 ? 70 : 95, .baseSpDefense = 95, .types = MON_TYPES(TYPE_WATER, TYPE_ICE), .catchRate = 75, @@ -11054,6 +11226,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Dewgong, .iconSprite = gMonIcon_Dewgong, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(2, 9, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Dewgong) OVERWORLD( @@ -11078,7 +11251,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseDefense = 50, .baseSpeed = 25, .baseSpAttack = 40, - .baseSpDefense = 50, + .baseSpDefense = P_UPDATED_STATS >= GEN_2 ? 50 : 40, .types = MON_TYPES(TYPE_POISON), .catchRate = 190, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 65 : 90, @@ -11125,6 +11298,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Grimer, .iconSprite = gMonIcon_Grimer, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(2, 3, SHADOW_SIZE_M) FOOTPRINT(Grimer) OVERWORLD( @@ -11150,7 +11324,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseDefense = 75, .baseSpeed = 50, .baseSpAttack = 65, - .baseSpDefense = 100, + .baseSpDefense = P_UPDATED_STATS >= GEN_2 ? 100 : 65, .types = MON_TYPES(TYPE_POISON), .catchRate = 75, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 175 : 157, @@ -11199,6 +11373,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Muk, .iconSprite = gMonIcon_Muk, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 6, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Muk) OVERWORLD( @@ -11264,6 +11439,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_GrimerAlola, .iconSprite = gMonIcon_GrimerAlola, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(2, 1, SHADOW_SIZE_M) FOOTPRINT(Grimer) OVERWORLD( @@ -11333,6 +11509,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_MukAlola, .iconSprite = gMonIcon_MukAlola, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 7, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Muk) OVERWORLD( @@ -11360,7 +11537,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseDefense = 100, .baseSpeed = 40, .baseSpAttack = 45, - .baseSpDefense = 25, + .baseSpDefense = P_UPDATED_STATS >= GEN_2 ? 25 : 45, .types = MON_TYPES(TYPE_WATER), .catchRate = 190, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 61 : 97, @@ -11412,6 +11589,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Shellder, .iconSprite = gMonIcon_Shellder, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(0, -4, SHADOW_SIZE_S) FOOTPRINT(Shellder) OVERWORLD( @@ -11436,7 +11614,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseDefense = 180, .baseSpeed = 70, .baseSpAttack = 85, - .baseSpDefense = 45, + .baseSpDefense = P_UPDATED_STATS >= GEN_2 ? 45 : 85, .types = MON_TYPES(TYPE_WATER, TYPE_ICE), .catchRate = 60, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 184 : 203, @@ -11487,6 +11665,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Cloyster, .iconSprite = gMonIcon_Cloyster, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(4, 8, SHADOW_SIZE_M) FOOTPRINT(Cloyster) OVERWORLD( @@ -11511,7 +11690,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseDefense = 30, .baseSpeed = 80, .baseSpAttack = 100, - .baseSpDefense = 35, + .baseSpDefense = P_UPDATED_STATS >= GEN_2 ? 35 : 100, .types = MON_TYPES(TYPE_GHOST, TYPE_POISON), .catchRate = 190, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 62 : 95, @@ -11560,6 +11739,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Gastly, .iconSprite = gMonIcon_Gastly, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 11, SHADOW_SIZE_S) FOOTPRINT(Gastly) OVERWORLD( @@ -11584,7 +11764,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseDefense = 45, .baseSpeed = 95, .baseSpAttack = 115, - .baseSpDefense = 55, + .baseSpDefense = P_UPDATED_STATS >= GEN_2 ? 55 : 115, .types = MON_TYPES(TYPE_GHOST, TYPE_POISON), .catchRate = 90, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 142 : 126, @@ -11632,6 +11812,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Haunter, .iconSprite = gMonIcon_Haunter, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 12, SHADOW_SIZE_M) FOOTPRINT(Haunter) OVERWORLD( @@ -11662,7 +11843,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseDefense = 60, .baseSpeed = 110, .baseSpAttack = 130, - .baseSpDefense = 75, + .baseSpDefense = P_UPDATED_STATS >= GEN_2 ? 75 : 130, .types = MON_TYPES(TYPE_GHOST, TYPE_POISON), .catchRate = 45, #if P_UPDATED_EXP_YIELDS >= GEN_8 @@ -11712,6 +11893,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Gengar, .iconSprite = gMonIcon_Gengar, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(3, 5, SHADOW_SIZE_L) FOOTPRINT(Gengar) OVERWORLD( @@ -11777,6 +11959,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_GengarMega, .iconSprite = gMonIcon_GengarMega, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(6, 1, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Gengar) #if OW_BATTLE_ONLY_FORMS @@ -11806,7 +11989,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseDefense = 60, .baseSpeed = 110, .baseSpAttack = 130, - .baseSpDefense = 75, + .baseSpDefense = P_UPDATED_STATS >= GEN_2 ? 75 : 130, .types = MON_TYPES(TYPE_GHOST, TYPE_POISON), .catchRate = 45, .expYield = 225, @@ -11846,6 +12029,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_GengarGmax, .iconSprite = gMonIcon_GengarGmax, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, NO_SHADOW FOOTPRINT(Gengar) .isGigantamax = TRUE, @@ -11865,7 +12049,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseDefense = 160, .baseSpeed = 70, .baseSpAttack = 30, - .baseSpDefense = 45, + .baseSpDefense = P_UPDATED_STATS >= GEN_2 ? 45 : 30, .types = MON_TYPES(TYPE_ROCK, TYPE_GROUND), .catchRate = 45, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 77 : 108, @@ -11908,6 +12092,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Onix, .iconSprite = gMonIcon_Onix, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 10, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Onix) OVERWORLD( @@ -11922,7 +12107,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .levelUpLearnset = sOnixLevelUpLearnset, .teachableLearnset = sOnixTeachableLearnset, .eggMoveLearnset = sOnixEggMoveLearnset, - .evolutions = EVOLUTION({EVO_TRADE_ITEM, ITEM_METAL_COAT, SPECIES_STEELIX}, + .evolutions = EVOLUTION({EVO_TRADE, 0, SPECIES_STEELIX, CONDITIONS({IF_HOLD_ITEM, ITEM_METAL_COAT})}, {EVO_ITEM, ITEM_METAL_COAT, SPECIES_STEELIX}), }, @@ -11988,6 +12173,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backPicFemale = gMonBackPic_SteelixF, .backPicSizeFemale = MON_COORDS_SIZE(64, 64), #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(2, 12, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Steelix) OVERWORLD( @@ -12061,6 +12247,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_SteelixMega, .iconSprite = gMonIcon_SteelixMega, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 13, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Steelix) #if OW_BATTLE_ONLY_FORMS @@ -12091,7 +12278,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseAttack = 48, .baseDefense = 45, .baseSpeed = 42, - .baseSpAttack = 43, + .baseSpAttack = P_UPDATED_STATS >= GEN_2 ? 43 : 90, .baseSpDefense = 90, .types = MON_TYPES(TYPE_PSYCHIC), .catchRate = 190, @@ -12144,6 +12331,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Drowzee, .iconSprite = gMonIcon_Drowzee, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 6, SHADOW_SIZE_M) FOOTPRINT(Drowzee) OVERWORLD( @@ -12167,7 +12355,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseAttack = 73, .baseDefense = 70, .baseSpeed = 67, - .baseSpAttack = 73, + .baseSpAttack = P_UPDATED_STATS >= GEN_2 ? 73 : 115, .baseSpDefense = 115, .types = MON_TYPES(TYPE_PSYCHIC), .catchRate = 75, @@ -12227,6 +12415,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backPicFemale = gMonBackPic_HypnoF, .backPicSizeFemale = MON_COORDS_SIZE(64, 56), #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-3, 9, SHADOW_SIZE_L) FOOTPRINT(Hypno) OVERWORLD( @@ -12305,6 +12494,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Krabby, .iconSprite = gMonIcon_Krabby, .iconPalIndex = P_GBA_STYLE_SPECIES_ICONS ? 2 : 0, + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(0, -1, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Krabby) OVERWORLD( @@ -12374,6 +12564,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Kingler, .iconSprite = gMonIcon_Kingler, .iconPalIndex = P_GBA_STYLE_SPECIES_ICONS ? 2 : 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-2, 4, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Kingler) OVERWORLD( @@ -12440,6 +12631,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_KinglerGmax, .iconSprite = gMonIcon_KinglerGmax, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-3, 10, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Kingler) .isGigantamax = TRUE, @@ -12514,6 +12706,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Voltorb, .iconSprite = gMonIcon_Voltorb, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, -2, SHADOW_SIZE_S) FOOTPRINT(Voltorb) OVERWORLD( @@ -12584,6 +12777,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Electrode, .iconSprite = gMonIcon_Electrode, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 2, SHADOW_SIZE_M) FOOTPRINT(Electrode) OVERWORLD( @@ -12648,6 +12842,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_VoltorbHisui, .iconSprite = gMonIcon_VoltorbHisui, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, -4, SHADOW_SIZE_S) FOOTPRINT(Voltorb) OVERWORLD( @@ -12713,6 +12908,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_ElectrodeHisui, .iconSprite = gMonIcon_ElectrodeHisui, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 4, SHADOW_SIZE_M) FOOTPRINT(Electrode) OVERWORLD( @@ -12740,7 +12936,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseDefense = 80, .baseSpeed = 40, .baseSpAttack = 60, - .baseSpDefense = 45, + .baseSpDefense = P_UPDATED_STATS >= GEN_2 ? 45 : 60, .types = MON_TYPES(TYPE_GRASS, TYPE_PSYCHIC), .catchRate = 90, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 65 : 98, @@ -12791,6 +12987,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Exeggcute, .iconSprite = gMonIcon_Exeggcute, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, SHADOW(0, -5, SHADOW_SIZE_L) FOOTPRINT(Exeggcute) OVERWORLD( @@ -12817,7 +13014,13 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = #define EXEGGUTOR_EXP_YIELD 212 #endif -#define EXEGGUTOR_SP_DEF (P_UPDATED_STATS >= GEN_7 ? 75 : 65) +#if P_UPDATED_STATS >= GEN_7 + #define EXEGGUTOR_SP_DEF 75 +#elif P_UPDATED_STATS >= GEN_2 + #define EXEGGUTOR_SP_DEF 65 +#else + #define EXEGGUTOR_SP_DEF 125 +#endif [SPECIES_EXEGGUTOR] = { @@ -12869,6 +13072,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Exeggutor, .iconSprite = gMonIcon_Exeggutor, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(2, 13, SHADOW_SIZE_L) FOOTPRINT(Exeggutor) OVERWORLD( @@ -12933,6 +13137,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_ExeggutorAlola, .iconSprite = gMonIcon_ExeggutorAlola, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(6, 12, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Exeggutor) OVERWORLD( @@ -12960,7 +13165,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseDefense = 95, .baseSpeed = 35, .baseSpAttack = 40, - .baseSpDefense = 50, + .baseSpDefense = P_UPDATED_STATS >= GEN_2 ? 50 : 40, .types = MON_TYPES(TYPE_GROUND), .catchRate = 190, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 64 : 87, @@ -13009,6 +13214,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Cubone, .iconSprite = gMonIcon_Cubone, .iconPalIndex = P_GBA_STYLE_SPECIES_ICONS ? 1 : 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(1, 0, SHADOW_SIZE_S) FOOTPRINT(Cubone) OVERWORLD( @@ -13035,7 +13241,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseDefense = 110, .baseSpeed = 45, .baseSpAttack = 50, - .baseSpDefense = 80, + .baseSpDefense = P_UPDATED_STATS >= GEN_2 ? 80 : 50, .types = MON_TYPES(TYPE_GROUND), .catchRate = 75, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 149 : 124, @@ -13083,6 +13289,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Marowak, .iconSprite = gMonIcon_Marowak, .iconPalIndex = P_GBA_STYLE_SPECIES_ICONS ? 1 : 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(6, 6, SHADOW_SIZE_M) FOOTPRINT(Marowak) OVERWORLD( @@ -13144,6 +13351,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_MarowakAlola, .iconSprite = gMonIcon_MarowakAlola, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-2, 11, SHADOW_SIZE_M) FOOTPRINT(Marowak) OVERWORLD( @@ -13205,6 +13413,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_MarowakAlola, .iconSprite = gMonIcon_MarowakAlola, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-2, 11, SHADOW_SIZE_M) FOOTPRINT(Marowak) OVERWORLD( @@ -13282,6 +13491,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Tyrogue, .iconSprite = gMonIcon_Tyrogue, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(0, 4, SHADOW_SIZE_S) FOOTPRINT(Tyrogue) OVERWORLD( @@ -13296,9 +13506,9 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .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}), + .evolutions = EVOLUTION({EVO_LEVEL, 20, SPECIES_HITMONCHAN, CONDITIONS({IF_ATK_LT_DEF})}, + {EVO_LEVEL, 20, SPECIES_HITMONLEE, CONDITIONS({IF_ATK_GT_DEF})}, + {EVO_LEVEL, 20, SPECIES_HITMONTOP, CONDITIONS({IF_ATK_EQ_DEF})}), }, #endif //P_GEN_2_CROSS_EVOS @@ -13309,7 +13519,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseDefense = 53, .baseSpeed = 87, .baseSpAttack = 35, - .baseSpDefense = 110, + .baseSpDefense = P_UPDATED_STATS >= GEN_2 ? 110 : 35, .types = MON_TYPES(TYPE_FIGHTING), .catchRate = 45, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 159 : 139, @@ -13357,6 +13567,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Hitmonlee, .iconSprite = gMonIcon_Hitmonlee, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(2, 8, SHADOW_SIZE_M) FOOTPRINT(Hitmonlee) OVERWORLD( @@ -13379,7 +13590,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseDefense = 79, .baseSpeed = 76, .baseSpAttack = 35, - .baseSpDefense = 110, + .baseSpDefense = P_UPDATED_STATS >= GEN_2 ? 110 : 35, .types = MON_TYPES(TYPE_FIGHTING), .catchRate = 45, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 159 : 140, @@ -13435,6 +13646,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Hitmonchan, .iconSprite = gMonIcon_Hitmonchan, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 9, SHADOW_SIZE_M) FOOTPRINT(Hitmonchan) OVERWORLD( @@ -13508,6 +13720,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Hitmontop, .iconSprite = gMonIcon_Hitmontop, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 7, SHADOW_SIZE_L) FOOTPRINT(Hitmontop) OVERWORLD( @@ -13533,7 +13746,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseDefense = 75, .baseSpeed = 30, .baseSpAttack = 60, - .baseSpDefense = 75, + .baseSpDefense = P_UPDATED_STATS >= GEN_2 ? 75 : 60, .types = MON_TYPES(TYPE_NORMAL), .catchRate = 45, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 77 : 127, @@ -13577,6 +13790,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Lickitung, .iconSprite = gMonIcon_Lickitung, .iconPalIndex = P_GBA_STYLE_SPECIES_ICONS ? 1 : 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(2, 6, SHADOW_SIZE_M) FOOTPRINT(Lickitung) OVERWORLD( @@ -13591,7 +13805,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .levelUpLearnset = sLickitungLevelUpLearnset, .teachableLearnset = sLickitungTeachableLearnset, .eggMoveLearnset = sLickitungEggMoveLearnset, - .evolutions = EVOLUTION({EVO_MOVE, MOVE_ROLLOUT, SPECIES_LICKILICKY}), + .evolutions = EVOLUTION({EVO_LEVEL, 0, SPECIES_LICKILICKY, CONDITIONS({IF_KNOWS_MOVE, MOVE_ROLLOUT})}), }, #if P_GEN_4_CROSS_EVOS @@ -13653,6 +13867,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Lickilicky, .iconSprite = gMonIcon_Lickilicky, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 11, SHADOW_SIZE_M) FOOTPRINT(Lickilicky) OVERWORLD( @@ -13678,7 +13893,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseDefense = 95, .baseSpeed = 35, .baseSpAttack = 60, - .baseSpDefense = 45, + .baseSpDefense = P_UPDATED_STATS >= GEN_2 ? 45 : 60, .types = MON_TYPES(TYPE_POISON), .catchRate = 190, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 68 : 114, @@ -13730,6 +13945,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Koffing, .iconSprite = gMonIcon_Koffing, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 15, SHADOW_SIZE_S) FOOTPRINT(Koffing) OVERWORLD( @@ -13755,7 +13971,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseDefense = 120, .baseSpeed = 60, .baseSpAttack = 85, - .baseSpDefense = 70, + .baseSpDefense = P_UPDATED_STATS >= GEN_2 ? 70 : 85, .types = MON_TYPES(TYPE_POISON), .catchRate = 60, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 172 : 173, @@ -13808,6 +14024,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Weezing, .iconSprite = gMonIcon_Weezing, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(5, 14, SHADOW_SIZE_M) FOOTPRINT(Weezing) OVERWORLD( @@ -13875,6 +14092,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_WeezingGalar, .iconSprite = gMonIcon_WeezingGalar, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(7, 17, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Weezing) OVERWORLD( @@ -13954,6 +14172,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backPicFemale = gMonBackPic_RhyhornF, .backPicSizeFemale = MON_COORDS_SIZE(64, 48), #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 0, SHADOW_SIZE_L) FOOTPRINT(Rhyhorn) OVERWORLD( @@ -14034,6 +14253,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backPicFemale = gMonBackPic_RhydonF, .backPicSizeFemale = MON_COORDS_SIZE(64, 56), #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(3, 9, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Rhydon) OVERWORLD( @@ -14054,7 +14274,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = ) .levelUpLearnset = sRhydonLevelUpLearnset, .teachableLearnset = sRhydonTeachableLearnset, - .evolutions = EVOLUTION({EVO_TRADE_ITEM, ITEM_PROTECTOR, SPECIES_RHYPERIOR}, + .evolutions = EVOLUTION({EVO_TRADE, 0, SPECIES_RHYPERIOR, CONDITIONS({IF_HOLD_ITEM, ITEM_PROTECTOR})}, {EVO_ITEM, ITEM_PROTECTOR, SPECIES_RHYPERIOR}), }, @@ -14124,6 +14344,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backPicFemale = gMonBackPic_RhyperiorF, .backPicSizeFemale = MON_COORDS_SIZE(64, 64), #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(2, 10, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Rhyperior) OVERWORLD( @@ -14202,6 +14423,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Happiny, .iconSprite = gMonIcon_Happiny, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(-1, 1, SHADOW_SIZE_S) FOOTPRINT(Happiny) OVERWORLD( @@ -14216,8 +14438,8 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .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}), + .evolutions = EVOLUTION({EVO_LEVEL, 0, SPECIES_CHANSEY, CONDITIONS({IF_NOT_TIME, TIME_NIGHT},{IF_HOLD_ITEM, ITEM_OVAL_STONE})}, + {EVO_ITEM, ITEM_OVAL_STONE, SPECIES_CHANSEY, CONDITIONS({IF_NOT_TIME, TIME_NIGHT})}), }, #endif //P_GEN_4_CROSS_EVOS @@ -14227,7 +14449,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseAttack = 5, .baseDefense = 5, .baseSpeed = 50, - .baseSpAttack = 35, + .baseSpAttack = P_UPDATED_STATS >= GEN_2 ? 35 : 105, .baseSpDefense = 105, .types = MON_TYPES(TYPE_NORMAL), .catchRate = 30, @@ -14273,6 +14495,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Chansey, .iconSprite = gMonIcon_Chansey, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 4, SHADOW_SIZE_L) FOOTPRINT(Chansey) OVERWORLD( @@ -14287,7 +14510,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .levelUpLearnset = sChanseyLevelUpLearnset, .teachableLearnset = sChanseyTeachableLearnset, .eggMoveLearnset = sChanseyEggMoveLearnset, - .evolutions = EVOLUTION({EVO_FRIENDSHIP, 0, SPECIES_BLISSEY}), + .evolutions = EVOLUTION({EVO_LEVEL, 0, SPECIES_BLISSEY, CONDITIONS({IF_MIN_FRIENDSHIP, FRIENDSHIP_EVO_THRESHOLD})}), }, #if P_GEN_2_CROSS_EVOS @@ -14343,6 +14566,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Blissey, .iconSprite = gMonIcon_Blissey, .iconPalIndex = P_GBA_STYLE_SPECIES_ICONS ? 1 : 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 8, SHADOW_SIZE_L) FOOTPRINT(Blissey) OVERWORLD( @@ -14368,7 +14592,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseDefense = 115, .baseSpeed = 60, .baseSpAttack = 100, - .baseSpDefense = 40, + .baseSpDefense = P_UPDATED_STATS >= GEN_2 ? 40 : 100, .types = MON_TYPES(TYPE_GRASS), .catchRate = 45, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 87 : 166, @@ -14416,6 +14640,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Tangela, .iconSprite = gMonIcon_Tangela, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 1, SHADOW_SIZE_M) FOOTPRINT(Tangela) OVERWORLD( @@ -14430,7 +14655,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .levelUpLearnset = sTangelaLevelUpLearnset, .teachableLearnset = sTangelaTeachableLearnset, .eggMoveLearnset = sTangelaEggMoveLearnset, - .evolutions = EVOLUTION({EVO_MOVE, MOVE_ANCIENT_POWER, SPECIES_TANGROWTH}), + .evolutions = EVOLUTION({EVO_LEVEL, 0, SPECIES_TANGROWTH, CONDITIONS({IF_KNOWS_MOVE, MOVE_ANCIENT_POWER})}), }, #if P_GEN_4_CROSS_EVOS @@ -14493,6 +14718,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .frontPicFemale = gMonFrontPic_TangrowthF, .frontPicSizeFemale = MON_COORDS_SIZE(64, 64), #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-2, 9, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Tangrowth) OVERWORLD( @@ -14525,7 +14751,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseDefense = 80, .baseSpeed = 90, .baseSpAttack = 40, - .baseSpDefense = 80, + .baseSpDefense = P_UPDATED_STATS >= GEN_2 ? 80 : 40, .types = MON_TYPES(TYPE_NORMAL), .catchRate = 45, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 172 : 175, @@ -14570,6 +14796,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Kangaskhan, .iconSprite = gMonIcon_Kangaskhan, .iconPalIndex = P_GBA_STYLE_SPECIES_ICONS ? 1 : 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 11, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Kangaskhan) OVERWORLD( @@ -14636,6 +14863,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_KangaskhanMega, .iconSprite = gMonIcon_KangaskhanMega, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 11, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Kangaskhan) #if OW_BATTLE_ONLY_FORMS @@ -14667,7 +14895,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseDefense = 70, .baseSpeed = 60, .baseSpAttack = 70, - .baseSpDefense = 25, + .baseSpDefense = P_UPDATED_STATS >= GEN_2 ? 25 : 70, .types = MON_TYPES(TYPE_WATER), .catchRate = 225, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 59 : 83, @@ -14718,6 +14946,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Horsea, .iconSprite = gMonIcon_Horsea, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 0, SHADOW_SIZE_S) FOOTPRINT(Horsea) OVERWORLD( @@ -14742,7 +14971,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseDefense = 95, .baseSpeed = 85, .baseSpAttack = 95, - .baseSpDefense = 45, + .baseSpDefense = P_UPDATED_STATS >= GEN_2 ? 45 : 95, .types = MON_TYPES(TYPE_WATER), .catchRate = 75, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 154 : 155, @@ -14794,6 +15023,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Seadra, .iconSprite = gMonIcon_Seadra, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-2, 7, SHADOW_SIZE_M) FOOTPRINT(Seadra) OVERWORLD( @@ -14807,7 +15037,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = ) .levelUpLearnset = sSeadraLevelUpLearnset, .teachableLearnset = sSeadraTeachableLearnset, - .evolutions = EVOLUTION({EVO_TRADE_ITEM, ITEM_DRAGON_SCALE, SPECIES_KINGDRA}, + .evolutions = EVOLUTION({EVO_TRADE, 0, SPECIES_KINGDRA, CONDITIONS({IF_HOLD_ITEM, ITEM_DRAGON_SCALE})}, {EVO_ITEM, ITEM_DRAGON_SCALE, SPECIES_KINGDRA}), }, @@ -14878,6 +15108,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Kingdra, .iconSprite = gMonIcon_Kingdra, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(3, 12, SHADOW_SIZE_M) FOOTPRINT(Kingdra) OVERWORLD( @@ -14902,7 +15133,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseAttack = 67, .baseDefense = 60, .baseSpeed = 63, - .baseSpAttack = 35, + .baseSpAttack = P_UPDATED_STATS >= GEN_2 ? 35 : 50, .baseSpDefense = 50, .types = MON_TYPES(TYPE_WATER), .catchRate = 225, @@ -14960,6 +15191,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backPicFemale = gMonBackPic_GoldeenF, .backPicSizeFemale = MON_COORDS_SIZE(64, 48), #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-6, 0, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Goldeen) OVERWORLD( @@ -14990,7 +15222,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseAttack = 92, .baseDefense = 65, .baseSpeed = 68, - .baseSpAttack = 65, + .baseSpAttack = P_UPDATED_STATS >= GEN_2 ? 65 : 80, .baseSpDefense = 80, .types = MON_TYPES(TYPE_WATER), .catchRate = 60, @@ -15044,6 +15276,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backPicFemale = gMonBackPic_SeakingF, .backPicSizeFemale = MON_COORDS_SIZE(64, 56), #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 8, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Seaking) OVERWORLD( @@ -15075,7 +15308,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseDefense = 55, .baseSpeed = 85, .baseSpAttack = 70, - .baseSpDefense = 55, + .baseSpDefense = P_UPDATED_STATS >= GEN_2 ? 55 : 70, .types = MON_TYPES(TYPE_WATER), .catchRate = 225, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 68 : 106, @@ -15124,6 +15357,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Staryu, .iconSprite = gMonIcon_Staryu, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 2, SHADOW_SIZE_M) FOOTPRINT(Staryu) OVERWORLD( @@ -15147,7 +15381,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseDefense = 85, .baseSpeed = 115, .baseSpAttack = 100, - .baseSpDefense = 85, + .baseSpDefense = P_UPDATED_STATS >= GEN_2 ? 85 : 100, .types = MON_TYPES(TYPE_WATER, TYPE_PSYCHIC), .catchRate = 60, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 182 : 207, @@ -15195,6 +15429,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Starmie, .iconSprite = gMonIcon_Starmie, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 7, SHADOW_SIZE_L) FOOTPRINT(Starmie) OVERWORLD( @@ -15275,6 +15510,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_MimeJr, .iconSprite = gMonIcon_MimeJr, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(-5, 4, SHADOW_SIZE_S) FOOTPRINT(MimeJr) OVERWORLD( @@ -15289,7 +15525,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .levelUpLearnset = sMimeJrLevelUpLearnset, .teachableLearnset = sMimeJrTeachableLearnset, .eggMoveLearnset = sMimeJrEggMoveLearnset, - .evolutions = EVOLUTION({EVO_MOVE, MOVE_MIMIC, SPECIES_MR_MIME}, + .evolutions = EVOLUTION({EVO_LEVEL, 0, SPECIES_MR_MIME, CONDITIONS({IF_KNOWS_MOVE, MOVE_MIMIC})}, {EVO_NONE, 0, SPECIES_MR_MIME_GALAR}), }, #endif //P_GEN_4_CROSS_EVOS @@ -15301,7 +15537,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseDefense = 65, .baseSpeed = 90, .baseSpAttack = 100, - .baseSpDefense = 120, + .baseSpDefense = P_UPDATED_STATS >= GEN_2 ? 120 : 100, #if P_UPDATED_TYPES >= GEN_6 .types = MON_TYPES(TYPE_PSYCHIC, TYPE_FAIRY), #else @@ -15352,6 +15588,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_MrMime, .iconSprite = gMonIcon_MrMime, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 7, SHADOW_SIZE_M) FOOTPRINT(MrMime) OVERWORLD( @@ -15417,6 +15654,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_MrMimeGalar, .iconSprite = gMonIcon_MrMimeGalar, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 6, SHADOW_SIZE_M) FOOTPRINT(MrMime) OVERWORLD( @@ -15482,6 +15720,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_MrRime, .iconSprite = gMonIcon_MrRime, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(3, 9, SHADOW_SIZE_L) FOOTPRINT(MrRime) OVERWORLD( @@ -15507,7 +15746,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseDefense = 80, .baseSpeed = 105, .baseSpAttack = 55, - .baseSpDefense = 80, + .baseSpDefense = P_UPDATED_STATS >= GEN_2 ? 80 : 55, .types = MON_TYPES(TYPE_BUG, TYPE_FLYING), .catchRate = 45, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 100 : 187, @@ -15565,6 +15804,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .frontPicFemale = gMonFrontPic_ScytherF, .frontPicSizeFemale = MON_COORDS_SIZE(56, 64), #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 7, SHADOW_SIZE_L) FOOTPRINT(Scyther) OVERWORLD( @@ -15586,7 +15826,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .levelUpLearnset = sScytherLevelUpLearnset, .teachableLearnset = sScytherTeachableLearnset, .eggMoveLearnset = sScytherEggMoveLearnset, - .evolutions = EVOLUTION({EVO_TRADE_ITEM, ITEM_METAL_COAT, SPECIES_SCIZOR}, + .evolutions = EVOLUTION({EVO_TRADE, 0, SPECIES_SCIZOR, CONDITIONS({IF_HOLD_ITEM, ITEM_METAL_COAT})}, {EVO_ITEM, ITEM_BLACK_AUGURITE, SPECIES_KLEAVOR}, {EVO_ITEM, ITEM_METAL_COAT, SPECIES_SCIZOR}), }, @@ -15651,6 +15891,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .frontPicFemale = gMonFrontPic_ScizorF, .frontPicSizeFemale = MON_COORDS_SIZE(64, 64), #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(3, 9, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Scizor) OVERWORLD( @@ -15723,6 +15964,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_ScizorMega, .iconSprite = gMonIcon_ScizorMega, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(5, 15, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Scizor) #if OW_BATTLE_ONLY_FORMS @@ -15793,6 +16035,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Kleavor, .iconSprite = gMonIcon_Kleavor, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(2, 12, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Kleavor) OVERWORLD( @@ -15867,6 +16110,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Smoochum, .iconSprite = gMonIcon_Smoochum, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, SHADOW(-1, 0, SHADOW_SIZE_S) FOOTPRINT(Smoochum) OVERWORLD( @@ -15891,7 +16135,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseAttack = 50, .baseDefense = 35, .baseSpeed = 95, - .baseSpAttack = 115, + .baseSpAttack = P_UPDATED_STATS >= GEN_2 ? 115 : 95, .baseSpDefense = 95, .types = MON_TYPES(TYPE_ICE, TYPE_PSYCHIC), .catchRate = 45, @@ -15942,6 +16186,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Jynx, .iconSprite = gMonIcon_Jynx, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 3, SHADOW_SIZE_L) FOOTPRINT(Jynx) OVERWORLD( @@ -16013,6 +16258,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Elekid, .iconSprite = gMonIcon_Elekid, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(-1, 1, SHADOW_SIZE_M) FOOTPRINT(Elekid) OVERWORLD( @@ -16037,7 +16283,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseAttack = 83, .baseDefense = 57, .baseSpeed = 105, - .baseSpAttack = 95, + .baseSpAttack = P_UPDATED_STATS >= GEN_2 ? 95 : 85, .baseSpDefense = 85, .types = MON_TYPES(TYPE_ELECTRIC), .catchRate = 45, @@ -16086,6 +16332,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Electabuzz, .iconSprite = gMonIcon_Electabuzz, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-2, 9, SHADOW_SIZE_L) FOOTPRINT(Electabuzz) OVERWORLD( @@ -16099,7 +16346,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = ) .levelUpLearnset = sElectabuzzLevelUpLearnset, .teachableLearnset = sElectabuzzTeachableLearnset, - .evolutions = EVOLUTION({EVO_TRADE_ITEM, ITEM_ELECTIRIZER, SPECIES_ELECTIVIRE}, + .evolutions = EVOLUTION({EVO_TRADE, 0, SPECIES_ELECTIVIRE, CONDITIONS({IF_HOLD_ITEM, ITEM_ELECTIRIZER})}, {EVO_ITEM, ITEM_ELECTIRIZER, SPECIES_ELECTIVIRE}), }, @@ -16162,6 +16409,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Electivire, .iconSprite = gMonIcon_Electivire, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-3, 11, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Electivire) OVERWORLD( @@ -16235,6 +16483,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Magby, .iconSprite = gMonIcon_Magby, .iconPalIndex = P_GBA_STYLE_SPECIES_ICONS ? 1 : 0, + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(0, 2, SHADOW_SIZE_S) FOOTPRINT(Magby) OVERWORLD( @@ -16259,7 +16508,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseAttack = 95, .baseDefense = 57, .baseSpeed = 93, - .baseSpAttack = 100, + .baseSpAttack = P_UPDATED_STATS >= GEN_2 ? 100 : 85, .baseSpDefense = 85, .types = MON_TYPES(TYPE_FIRE), .catchRate = 45, @@ -16304,6 +16553,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Magmar, .iconSprite = gMonIcon_Magmar, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(3, 8, SHADOW_SIZE_L) FOOTPRINT(Magmar) OVERWORLD( @@ -16317,7 +16567,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = ) .levelUpLearnset = sMagmarLevelUpLearnset, .teachableLearnset = sMagmarTeachableLearnset, - .evolutions = EVOLUTION({EVO_TRADE_ITEM, ITEM_MAGMARIZER, SPECIES_MAGMORTAR}, + .evolutions = EVOLUTION({EVO_TRADE, 0, SPECIES_MAGMORTAR, CONDITIONS({IF_HOLD_ITEM, ITEM_MAGMARIZER})}, {EVO_ITEM, ITEM_MAGMARIZER, SPECIES_MAGMORTAR}), }, @@ -16380,6 +16630,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Magmortar, .iconSprite = gMonIcon_Magmortar, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(4, 11, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Magmortar) OVERWORLD( @@ -16405,7 +16656,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseDefense = 100, .baseSpeed = 85, .baseSpAttack = 55, - .baseSpDefense = 70, + .baseSpDefense = P_UPDATED_STATS >= GEN_2 ? 70 : 55, .types = MON_TYPES(TYPE_BUG), .catchRate = 45, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 175 : 200, @@ -16455,6 +16706,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Pinsir, .iconSprite = gMonIcon_Pinsir, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(5, 7, SHADOW_SIZE_L) FOOTPRINT(Pinsir) OVERWORLD( @@ -16522,6 +16774,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_PinsirMega, .iconSprite = gMonIcon_PinsirMega, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(3, 12, SHADOW_SIZE_L) FOOTPRINT(Pinsir) #if OW_BATTLE_ONLY_FORMS @@ -16552,7 +16805,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseAttack = 100, .baseDefense = 95, .baseSpeed = 110, - .baseSpAttack = 40, + .baseSpAttack = P_UPDATED_STATS >= GEN_2 ? 40 : 70, .baseSpDefense = 70, .types = MON_TYPES(TYPE_NORMAL), .catchRate = 45, @@ -16604,6 +16857,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Tauros, .iconSprite = gMonIcon_Tauros, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 7, SHADOW_SIZE_L) FOOTPRINT(Tauros) OVERWORLD( @@ -16668,6 +16922,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_TaurosPaldeaCombat, .iconSprite = gMonIcon_TaurosPaldeaCombat, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 7, SHADOW_SIZE_L) FOOTPRINT(Tauros) OVERWORLD( @@ -16733,6 +16988,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_TaurosPaldeaBlaze, .iconSprite = gMonIcon_TaurosPaldeaBlaze, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 7, SHADOW_SIZE_L) FOOTPRINT(Tauros) OVERWORLD( @@ -16798,6 +17054,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_TaurosPaldeaAqua, .iconSprite = gMonIcon_TaurosPaldeaAqua, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 7, SHADOW_SIZE_L) FOOTPRINT(Tauros) OVERWORLD( @@ -16825,7 +17082,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseAttack = 10, .baseDefense = 55, .baseSpeed = 80, - .baseSpAttack = 15, + .baseSpAttack = P_UPDATED_STATS >= GEN_2 ? 15 : 20, .baseSpDefense = 20, .types = MON_TYPES(TYPE_WATER), .catchRate = 255, @@ -16882,6 +17139,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backPicFemale = gMonBackPic_MagikarpF, .backPicSizeFemale = MON_COORDS_SIZE(64, 56), #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 7, SHADOW_SIZE_M) FOOTPRINT(Magikarp) OVERWORLD( @@ -16912,7 +17170,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseAttack = 125, .baseDefense = 79, .baseSpeed = 81, - .baseSpAttack = 60, + .baseSpAttack = P_UPDATED_STATS >= GEN_2 ? 60 : 100, .baseSpDefense = 100, .types = MON_TYPES(TYPE_WATER, TYPE_FLYING), .catchRate = 45, @@ -16963,6 +17221,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backPicFemale = gMonBackPic_GyaradosF, .backPicSizeFemale = MON_COORDS_SIZE(64, 64), #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(5, 9, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Gyarados) OVERWORLD( @@ -17036,6 +17295,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_GyaradosMega, .iconSprite = gMonIcon_GyaradosMega, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(3, 17, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Gyarados) #if OW_BATTLE_ONLY_FORMS @@ -17065,7 +17325,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseAttack = 85, .baseDefense = 80, .baseSpeed = 60, - .baseSpAttack = 85, + .baseSpAttack = P_UPDATED_STATS >= GEN_2 ? 85 : 95, .baseSpDefense = 95, .types = MON_TYPES(TYPE_WATER, TYPE_ICE), .catchRate = 45, @@ -17111,6 +17371,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Lapras, .iconSprite = gMonIcon_Lapras, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(2, 8, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Lapras) OVERWORLD( @@ -17136,7 +17397,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseAttack = 85, .baseDefense = 80, .baseSpeed = 60, - .baseSpAttack = 85, + .baseSpAttack = P_UPDATED_STATS >= GEN_2 ? 85 : 95, .baseSpDefense = 95, .types = MON_TYPES(TYPE_WATER, TYPE_ICE), .catchRate = 45, @@ -17179,6 +17440,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_LaprasGmax, .iconSprite = gMonIcon_LaprasGmax, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(2, 11, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Lapras) .isGigantamax = TRUE, @@ -17246,6 +17508,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Ditto, .iconSprite = gMonIcon_Ditto, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, SHADOW(0, -4, SHADOW_SIZE_M) FOOTPRINT(Ditto) OVERWORLD( @@ -17270,7 +17533,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseAttack = 55, .baseDefense = 50, .baseSpeed = 55, - .baseSpAttack = 45, + .baseSpAttack = P_UPDATED_STATS >= GEN_2 ? 45 : 65, .baseSpDefense = 65, .types = MON_TYPES(TYPE_NORMAL), .catchRate = 45, @@ -17320,6 +17583,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backPicFemale = gMonBackPic_EeveeF, .backPicSizeFemale = MON_COORDS_SIZE(56, 48), #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(-2, 2, SHADOW_SIZE_S) FOOTPRINT(Eevee) OVERWORLD( @@ -17346,13 +17610,13 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .evolutions = EVOLUTION({EVO_ITEM, ITEM_THUNDER_STONE, SPECIES_JOLTEON}, {EVO_ITEM, ITEM_WATER_STONE, SPECIES_VAPOREON}, {EVO_ITEM, ITEM_FIRE_STONE, SPECIES_FLAREON}, - {EVO_FRIENDSHIP_DAY, 0, SPECIES_ESPEON}, - {EVO_FRIENDSHIP_NIGHT, 0, SPECIES_UMBREON}, - {EVO_SPECIFIC_MAP, MAP_PETALBURG_WOODS, SPECIES_LEAFEON}, + {EVO_LEVEL, 0, SPECIES_SYLVEON, CONDITIONS({IF_MIN_FRIENDSHIP, FRIENDSHIP_EVO_THRESHOLD}, {IF_KNOWS_MOVE_TYPE, TYPE_FAIRY})}, + {EVO_LEVEL, 0, SPECIES_ESPEON, CONDITIONS({IF_MIN_FRIENDSHIP, FRIENDSHIP_EVO_THRESHOLD}, {IF_NOT_TIME, TIME_NIGHT})}, + {EVO_LEVEL, 0, SPECIES_UMBREON, CONDITIONS({IF_MIN_FRIENDSHIP, FRIENDSHIP_EVO_THRESHOLD}, {IF_TIME, TIME_NIGHT})}, + {EVO_LEVEL, 0, SPECIES_LEAFEON, CONDITIONS({IF_IN_MAP, MAP_PETALBURG_WOODS})}, {EVO_ITEM, ITEM_LEAF_STONE, SPECIES_LEAFEON}, - {EVO_SPECIFIC_MAP, MAP_SHOAL_CAVE_LOW_TIDE_ICE_ROOM, SPECIES_GLACEON}, - {EVO_ITEM, ITEM_ICE_STONE, SPECIES_GLACEON}, - {EVO_FRIENDSHIP_MOVE_TYPE, TYPE_FAIRY, SPECIES_SYLVEON}), + {EVO_LEVEL, 0, SPECIES_GLACEON, CONDITIONS({IF_IN_MAP, MAP_SHOAL_CAVE_LOW_TIDE_ICE_ROOM})}, + {EVO_ITEM, ITEM_ICE_STONE, SPECIES_GLACEON}), }, #if P_GIGANTAMAX_FORMS @@ -17362,7 +17626,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseAttack = 55, .baseDefense = 50, .baseSpeed = 55, - .baseSpAttack = 45, + .baseSpAttack = P_UPDATED_STATS >= GEN_2 ? 45 : 65, .baseSpDefense = 65, .types = MON_TYPES(TYPE_NORMAL), .catchRate = 45, @@ -17403,6 +17667,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_EeveeGmax, .iconSprite = gMonIcon_EeveeGmax, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 4, SHADOW_SIZE_L) FOOTPRINT(Eevee) .isGigantamax = TRUE, @@ -17470,6 +17735,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconPalIndexFemale = 2, #endif #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(-2, 2, SHADOW_SIZE_S) FOOTPRINT(Eevee) OVERWORLD( @@ -17496,7 +17762,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseDefense = 60, .baseSpeed = 65, .baseSpAttack = 110, - .baseSpDefense = 95, + .baseSpDefense = P_UPDATED_STATS >= GEN_2 ? 95 : 110, .types = MON_TYPES(TYPE_WATER), .catchRate = 45, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 184 : 196, @@ -17539,6 +17805,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Vaporeon, .iconSprite = gMonIcon_Vaporeon, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-4, 3, SHADOW_SIZE_M) FOOTPRINT(Vaporeon) OVERWORLD( @@ -17561,7 +17828,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseDefense = 60, .baseSpeed = 130, .baseSpAttack = 110, - .baseSpDefense = 95, + .baseSpDefense = P_UPDATED_STATS >= GEN_2 ? 95 : 110, .types = MON_TYPES(TYPE_ELECTRIC), .catchRate = 45, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 184 : 197, @@ -17604,6 +17871,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Jolteon, .iconSprite = gMonIcon_Jolteon, .iconPalIndex = P_GBA_STYLE_SPECIES_ICONS ? 0 : 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 2, SHADOW_SIZE_M) FOOTPRINT(Jolteon) OVERWORLD( @@ -17625,7 +17893,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseAttack = 130, .baseDefense = 60, .baseSpeed = 65, - .baseSpAttack = 95, + .baseSpAttack = P_UPDATED_STATS >= GEN_2 ? 95 : 110, .baseSpDefense = 110, .types = MON_TYPES(TYPE_FIRE), .catchRate = 45, @@ -17669,6 +17937,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Flareon, .iconSprite = gMonIcon_Flareon, .iconPalIndex = P_GBA_STYLE_SPECIES_ICONS ? 0 : 3, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-2, 1, SHADOW_SIZE_L) FOOTPRINT(Flareon) OVERWORLD( @@ -17736,6 +18005,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Espeon, .iconSprite = gMonIcon_Espeon, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(2, 4, SHADOW_SIZE_M) FOOTPRINT(Espeon) OVERWORLD( @@ -17801,6 +18071,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Umbreon, .iconSprite = gMonIcon_Umbreon, .iconPalIndex = P_GBA_STYLE_SPECIES_ICONS ? 2 : 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 3, SHADOW_SIZE_M) FOOTPRINT(Umbreon) OVERWORLD( @@ -17869,6 +18140,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Leafeon, .iconSprite = gMonIcon_Leafeon, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 4, SHADOW_SIZE_M) FOOTPRINT(Leafeon) OVERWORLD( @@ -17935,6 +18207,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Glaceon, .iconSprite = gMonIcon_Glaceon, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 3, SHADOW_SIZE_M) FOOTPRINT(Glaceon) OVERWORLD( @@ -18004,6 +18277,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Sylveon, .iconSprite = gMonIcon_Sylveon, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(2, 9, SHADOW_SIZE_M) FOOTPRINT(Sylveon) OVERWORLD( @@ -18028,7 +18302,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseAttack = 60, .baseDefense = 70, .baseSpeed = 40, - .baseSpAttack = 85, + .baseSpAttack = P_UPDATED_STATS >= GEN_2 ? 85 : 75, .baseSpDefense = 75, .types = MON_TYPES(TYPE_NORMAL), .catchRate = 45, @@ -18078,6 +18352,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Porygon, .iconSprite = gMonIcon_Porygon, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, -2, SHADOW_SIZE_S) FOOTPRINT(Porygon) OVERWORLD( @@ -18091,7 +18366,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = ) .levelUpLearnset = sPorygonLevelUpLearnset, .teachableLearnset = sPorygonTeachableLearnset, - .evolutions = EVOLUTION({EVO_TRADE_ITEM, ITEM_UPGRADE, SPECIES_PORYGON2}, + .evolutions = EVOLUTION({EVO_TRADE, 0, SPECIES_PORYGON2, CONDITIONS({IF_HOLD_ITEM, ITEM_UPGRADE})}, {EVO_ITEM, ITEM_UPGRADE, SPECIES_PORYGON2}), }, @@ -18154,6 +18429,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Porygon2, .iconSprite = gMonIcon_Porygon2, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(0, 5, SHADOW_SIZE_S) FOOTPRINT(Porygon2) OVERWORLD( @@ -18167,7 +18443,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = ) .levelUpLearnset = sPorygon2LevelUpLearnset, .teachableLearnset = sPorygon2TeachableLearnset, - .evolutions = EVOLUTION({EVO_TRADE_ITEM, ITEM_DUBIOUS_DISC, SPECIES_PORYGON_Z}, + .evolutions = EVOLUTION({EVO_TRADE, 0, SPECIES_PORYGON_Z, CONDITIONS({IF_HOLD_ITEM, ITEM_DUBIOUS_DISC})}, {EVO_ITEM, ITEM_DUBIOUS_DISC, SPECIES_PORYGON_Z}), }, @@ -18231,6 +18507,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_PorygonZ, .iconSprite = gMonIcon_PorygonZ, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 17, SHADOW_SIZE_S) FOOTPRINT(PorygonZ) OVERWORLD( @@ -18257,7 +18534,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseDefense = 100, .baseSpeed = 35, .baseSpAttack = 90, - .baseSpDefense = 55, + .baseSpDefense = P_UPDATED_STATS >= GEN_2 ? 55 : 90, .types = MON_TYPES(TYPE_ROCK, TYPE_WATER), .catchRate = 45, #if P_UPDATED_EXP_YIELDS >= GEN_5 @@ -18312,6 +18589,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Omanyte, .iconSprite = gMonIcon_Omanyte, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(-2, -2, SHADOW_SIZE_S) FOOTPRINT(Omanyte) OVERWORLD( @@ -18336,7 +18614,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseDefense = 125, .baseSpeed = 55, .baseSpAttack = 115, - .baseSpDefense = 70, + .baseSpDefense = P_UPDATED_STATS >= GEN_2 ? 70 : 115, .types = MON_TYPES(TYPE_ROCK, TYPE_WATER), .catchRate = 45, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 173 : 199, @@ -18381,6 +18659,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Omastar, .iconSprite = gMonIcon_Omastar, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 4, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Omastar) OVERWORLD( @@ -18404,7 +18683,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseAttack = 80, .baseDefense = 90, .baseSpeed = 55, - .baseSpAttack = 55, + .baseSpAttack = P_UPDATED_STATS >= GEN_2 ? 55 : 45, .baseSpDefense = 45, .types = MON_TYPES(TYPE_ROCK, TYPE_WATER), .catchRate = 45, @@ -18460,6 +18739,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Kabuto, .iconSprite = gMonIcon_Kabuto, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(2, -3, SHADOW_SIZE_S) FOOTPRINT(Kabuto) OVERWORLD( @@ -18483,7 +18763,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseAttack = 115, .baseDefense = 105, .baseSpeed = 80, - .baseSpAttack = 65, + .baseSpAttack = P_UPDATED_STATS >= GEN_2 ? 65 : 70, .baseSpDefense = 70, .types = MON_TYPES(TYPE_ROCK, TYPE_WATER), .catchRate = 45, @@ -18535,6 +18815,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Kabutops, .iconSprite = gMonIcon_Kabutops, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 10, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Kabutops) OVERWORLD( @@ -18559,7 +18840,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseDefense = 65, .baseSpeed = 130, .baseSpAttack = 60, - .baseSpDefense = 75, + .baseSpDefense = P_UPDATED_STATS >= GEN_2 ? 75 : 60, .types = MON_TYPES(TYPE_ROCK, TYPE_FLYING), .catchRate = 45, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 180 : 202, @@ -18605,6 +18886,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Aerodactyl, .iconSprite = gMonIcon_Aerodactyl, .iconPalIndex = P_GBA_STYLE_SPECIES_ICONS ? 0 : 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-2, 16, SHADOW_SIZE_M) FOOTPRINT(Aerodactyl) OVERWORLD( @@ -18671,6 +18953,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_AerodactylMega, .iconSprite = gMonIcon_AerodactylMega, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-2, 16, SHADOW_SIZE_M) FOOTPRINT(Aerodactyl) #if OW_BATTLE_ONLY_FORMS @@ -18749,6 +19032,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Munchlax, .iconSprite = gMonIcon_Munchlax, .iconPalIndex = 3, + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, SHADOW(-1, 2, SHADOW_SIZE_M) FOOTPRINT(Munchlax) OVERWORLD( @@ -18763,7 +19047,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .levelUpLearnset = sMunchlaxLevelUpLearnset, .teachableLearnset = sMunchlaxTeachableLearnset, .eggMoveLearnset = sMunchlaxEggMoveLearnset, - .evolutions = EVOLUTION({EVO_FRIENDSHIP, 0, SPECIES_SNORLAX}), + .evolutions = EVOLUTION({EVO_LEVEL, 0, SPECIES_SNORLAX, CONDITIONS({IF_MIN_FRIENDSHIP, FRIENDSHIP_EVO_THRESHOLD})}), }, #endif //P_GEN_4_CROSS_EVOS @@ -18774,7 +19058,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseDefense = 65, .baseSpeed = 30, .baseSpAttack = 65, - .baseSpDefense = 110, + .baseSpDefense = P_UPDATED_STATS >= GEN_2 ? 110 : 65, .types = MON_TYPES(TYPE_NORMAL), .catchRate = 25, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 189 : 154, @@ -18820,6 +19104,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Snorlax, .iconSprite = gMonIcon_Snorlax, .iconPalIndex = P_GBA_STYLE_SPECIES_ICONS ? 1 : 3, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 9, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Snorlax) OVERWORLD( @@ -18846,7 +19131,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseDefense = 65, .baseSpeed = 30, .baseSpAttack = 65, - .baseSpDefense = 110, + .baseSpDefense = P_UPDATED_STATS >= GEN_2 ? 110 : 65, .types = MON_TYPES(TYPE_NORMAL), .catchRate = 25, .expYield = (P_UPDATED_EXP_YIELDS >= GEN_5) ? 189 : 154, @@ -18888,6 +19173,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_SnorlaxGmax, .iconSprite = gMonIcon_SnorlaxGmax, .iconPalIndex = 3, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 11, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Snorlax) .isGigantamax = TRUE, @@ -18907,7 +19193,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseAttack = 85, .baseDefense = 100, .baseSpeed = 85, - .baseSpAttack = 95, + .baseSpAttack = P_UPDATED_STATS >= GEN_2 ? 95 : 125, .baseSpDefense = 125, .types = MON_TYPES(TYPE_ICE, TYPE_FLYING), .catchRate = 3, @@ -18960,6 +19246,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Articuno, .iconSprite = gMonIcon_Articuno, .iconPalIndex = P_GBA_STYLE_SPECIES_ICONS ? 0 : 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(3, 10, SHADOW_SIZE_M) FOOTPRINT(Articuno) OVERWORLD( @@ -19027,6 +19314,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_ArticunoGalar, .iconSprite = gMonIcon_ArticunoGalar, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(3, 14, SHADOW_SIZE_M) FOOTPRINT(Articuno) OVERWORLD( @@ -19056,7 +19344,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseDefense = 85, .baseSpeed = 100, .baseSpAttack = 125, - .baseSpDefense = 90, + .baseSpDefense = P_UPDATED_STATS >= GEN_2 ? 90 : 125, .types = MON_TYPES(TYPE_ELECTRIC, TYPE_FLYING), .catchRate = 3, #if P_UPDATED_EXP_YIELDS >= GEN_8 @@ -19112,6 +19400,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Zapdos, .iconSprite = gMonIcon_Zapdos, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 15, SHADOW_SIZE_M) FOOTPRINT(Zapdos) OVERWORLD( @@ -19178,6 +19467,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_ZapdosGalar, .iconSprite = gMonIcon_ZapdosGalar, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-2, 11, SHADOW_SIZE_M) FOOTPRINT(Zapdos) OVERWORLD( @@ -19207,7 +19497,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseDefense = 90, .baseSpeed = 90, .baseSpAttack = 125, - .baseSpDefense = 85, + .baseSpDefense = P_UPDATED_STATS >= GEN_2 ? 85 : 125, .types = MON_TYPES(TYPE_FIRE, TYPE_FLYING), .catchRate = 3, #if P_UPDATED_EXP_YIELDS >= GEN_8 @@ -19287,6 +19577,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Moltres, .iconSprite = gMonIcon_Moltres, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 12, SHADOW_SIZE_M) FOOTPRINT(Moltres) OVERWORLD( @@ -19353,6 +19644,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_MoltresGalar, .iconSprite = gMonIcon_MoltresGalar, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 12, SHADOW_SIZE_M) FOOTPRINT(Moltres) OVERWORLD( @@ -19427,6 +19719,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Dratini, .iconSprite = gMonIcon_Dratini, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(3, 3, SHADOW_SIZE_L) FOOTPRINT(Dratini) OVERWORLD( @@ -19497,6 +19790,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Dragonair, .iconSprite = gMonIcon_Dragonair, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 10, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Dragonair) OVERWORLD( @@ -19572,6 +19866,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Dragonite, .iconSprite = gMonIcon_Dragonite, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 11, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Dragonite) OVERWORLD( @@ -19596,7 +19891,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .baseDefense = 90, .baseSpeed = 130, .baseSpAttack = 154, - .baseSpDefense = 90, + .baseSpDefense = P_UPDATED_STATS >= GEN_2 ? 90 : 154, .types = MON_TYPES(TYPE_PSYCHIC), .catchRate = 3, #if P_UPDATED_EXP_YIELDS >= GEN_8 @@ -19645,6 +19940,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Mewtwo, .iconSprite = gMonIcon_Mewtwo, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(6, 12, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Mewtwo) OVERWORLD( @@ -19713,6 +20009,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_MewtwoMegaX, .iconSprite = gMonIcon_MewtwoMegaX, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 12, SHADOW_SIZE_M) FOOTPRINT(Mewtwo) #if OW_BATTLE_ONLY_FORMS @@ -19784,6 +20081,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_MewtwoMegaY, .iconSprite = gMonIcon_MewtwoMegaY, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 14, SHADOW_SIZE_S) FOOTPRINT(Mewtwo) #if OW_BATTLE_ONLY_FORMS @@ -19870,6 +20168,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .shinyPalette = gMonShinyPalette_Mew, .iconSprite = gMonIcon_Mew, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 13, SHADOW_SIZE_S) FOOTPRINT(Mew) OVERWORLD( diff --git a/src/data/pokemon/species_info/gen_2_families.h b/src/data/pokemon/species_info/gen_2_families.h index fc12c19d46..c8143d02f0 100644 --- a/src/data/pokemon/species_info/gen_2_families.h +++ b/src/data/pokemon/species_info/gen_2_families.h @@ -55,6 +55,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_Chikorita, .iconSprite = gMonIcon_Chikorita, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, SHADOW(-1, 2, SHADOW_SIZE_S) FOOTPRINT(Chikorita) OVERWORLD( @@ -123,6 +124,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_Bayleef, .iconSprite = gMonIcon_Bayleef, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 10, SHADOW_SIZE_M) FOOTPRINT(Bayleef) OVERWORLD( @@ -202,6 +204,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backPicFemale = gMonBackPic_MeganiumF, .backPicSizeFemale = MON_COORDS_SIZE(56, 64), #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 13, SHADOW_SIZE_M) FOOTPRINT(Meganium) OVERWORLD( @@ -278,6 +281,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_Cyndaquil, .iconSprite = gMonIcon_Cyndaquil, .iconPalIndex = P_GBA_STYLE_SPECIES_ICONS ? 1 : 3, + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(0, -1, SHADOW_SIZE_S) FOOTPRINT(Cyndaquil) OVERWORLD( @@ -346,6 +350,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_Quilava, .iconSprite = gMonIcon_Quilava, .iconPalIndex = P_GBA_STYLE_SPECIES_ICONS ? 1 : 3, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 2, SHADOW_SIZE_M) FOOTPRINT(Quilava) OVERWORLD( @@ -422,6 +427,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_Typhlosion, .iconSprite = gMonIcon_Typhlosion, .iconPalIndex = P_GBA_STYLE_SPECIES_ICONS ? 1 : 3, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(4, 14, SHADOW_SIZE_L) FOOTPRINT(Typhlosion) OVERWORLD( @@ -486,6 +492,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_TyphlosionHisui, .iconSprite = gMonIcon_TyphlosionHisui, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(2, 14, SHADOW_SIZE_L) FOOTPRINT(Typhlosion) OVERWORLD( @@ -560,6 +567,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_Totodile, .iconSprite = gMonIcon_Totodile, .iconPalIndex = P_GBA_STYLE_SPECIES_ICONS ? 2 : 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(2, 0, SHADOW_SIZE_S) FOOTPRINT(Totodile) OVERWORLD( @@ -629,6 +637,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_Croconaw, .iconSprite = gMonIcon_Croconaw, .iconPalIndex = P_GBA_STYLE_SPECIES_ICONS ? 2 : 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(2, 8, SHADOW_SIZE_M) FOOTPRINT(Croconaw) OVERWORLD( @@ -705,6 +714,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_Feraligatr, .iconSprite = gMonIcon_Feraligatr, .iconPalIndex = P_GBA_STYLE_SPECIES_ICONS ? 2 : 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(3, 11, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Feraligatr) OVERWORLD( @@ -774,6 +784,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_Sentret, .iconSprite = gMonIcon_Sentret, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 11, SHADOW_SIZE_S) FOOTPRINT(Sentret) OVERWORLD( @@ -841,6 +852,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_Furret, .iconSprite = gMonIcon_Furret, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 9, SHADOW_SIZE_M) FOOTPRINT(Furret) OVERWORLD( @@ -918,6 +930,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_Hoothoot, .iconSprite = gMonIcon_Hoothoot, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 2, SHADOW_SIZE_S) FOOTPRINT(Hoothoot) OVERWORLD( @@ -991,6 +1004,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_Noctowl, .iconSprite = gMonIcon_Noctowl, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-2, 10, SHADOW_SIZE_S) FOOTPRINT(Noctowl) OVERWORLD( @@ -1066,6 +1080,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backPicFemale = gMonBackPic_LedybaF, .backPicSizeFemale = MON_COORDS_SIZE(56, 48), #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(2, 4, SHADOW_SIZE_M) FOOTPRINT(Ledyba) OVERWORLD( @@ -1149,6 +1164,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backPicFemale = gMonBackPic_LedianF, .backPicSizeFemale = MON_COORDS_SIZE(64, 64), #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 15, SHADOW_SIZE_S) FOOTPRINT(Ledian) OVERWORLD( @@ -1229,6 +1245,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_Spinarak, .iconSprite = gMonIcon_Spinarak, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(0, -8, SHADOW_SIZE_M) FOOTPRINT(Spinarak) OVERWORLD( @@ -1304,6 +1321,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_Ariados, .iconSprite = gMonIcon_Ariados, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 3, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Ariados) OVERWORLD( @@ -1375,6 +1393,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_Chinchou, .iconSprite = gMonIcon_Chinchou, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 1, SHADOW_SIZE_M) FOOTPRINT(Chinchou) OVERWORLD( @@ -1446,6 +1465,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_Lanturn, .iconSprite = gMonIcon_Lanturn, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(5, 4, SHADOW_SIZE_M) FOOTPRINT(Lanturn) OVERWORLD( @@ -1516,6 +1536,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_Togepi, .iconSprite = gMonIcon_Togepi, .iconPalIndex = P_GBA_STYLE_SPECIES_ICONS ? 2 : 0, + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, SHADOW(-1, -3, SHADOW_SIZE_S) FOOTPRINT(Togepi) OVERWORLD( @@ -1530,7 +1551,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .levelUpLearnset = sTogepiLevelUpLearnset, .teachableLearnset = sTogepiTeachableLearnset, .eggMoveLearnset = sTogepiEggMoveLearnset, - .evolutions = EVOLUTION({EVO_FRIENDSHIP, 0, SPECIES_TOGETIC}), + .evolutions = EVOLUTION({EVO_LEVEL, 0, SPECIES_TOGETIC, CONDITIONS({IF_MIN_FRIENDSHIP, FRIENDSHIP_EVO_THRESHOLD})}), }, [SPECIES_TOGETIC] = @@ -1584,6 +1605,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_Togetic, .iconSprite = gMonIcon_Togetic, .iconPalIndex = P_GBA_STYLE_SPECIES_ICONS ? 2 : 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 6, SHADOW_SIZE_S) FOOTPRINT(Togetic) OVERWORLD( @@ -1665,6 +1687,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_Togekiss, .iconSprite = gMonIcon_Togekiss, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(4, 15, SHADOW_SIZE_M) FOOTPRINT(Togekiss) OVERWORLD( @@ -1737,6 +1760,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_Natu, .iconSprite = gMonIcon_Natu, .iconPalIndex = P_GBA_STYLE_SPECIES_ICONS ? 0 : 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-2, -4, SHADOW_SIZE_S) FOOTPRINT(Natu) OVERWORLD( @@ -1814,6 +1838,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .frontPicFemale = gMonFrontPic_XatuF, .frontPicSizeFemale = MON_COORDS_SIZE(40, 56), #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 9, SHADOW_SIZE_S) FOOTPRINT(Xatu) OVERWORLD( @@ -1893,6 +1918,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_Mareep, .iconSprite = gMonIcon_Mareep, .iconPalIndex = P_GBA_STYLE_SPECIES_ICONS ? 2 : 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(1, 1, SHADOW_SIZE_M) FOOTPRINT(Mareep) OVERWORLD( @@ -1963,6 +1989,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_Flaaffy, .iconSprite = gMonIcon_Flaaffy, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 4, SHADOW_SIZE_S) FOOTPRINT(Flaaffy) OVERWORLD( @@ -2041,6 +2068,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_Ampharos, .iconSprite = gMonIcon_Ampharos, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(3, 11, SHADOW_SIZE_M) FOOTPRINT(Ampharos) OVERWORLD( @@ -2106,6 +2134,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_AmpharosMega, .iconSprite = gMonIcon_AmpharosMega, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-7, 13, SHADOW_SIZE_M) FOOTPRINT(Ampharos) #if OW_BATTLE_ONLY_FORMS @@ -2189,6 +2218,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_Azurill, .iconSprite = gMonIcon_Azurill, .iconPalIndex = P_GBA_STYLE_SPECIES_ICONS ? 2 : 0, + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, SHADOW(-4, 3, SHADOW_SIZE_S) FOOTPRINT(Azurill) OVERWORLD( @@ -2203,7 +2233,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .levelUpLearnset = sAzurillLevelUpLearnset, .teachableLearnset = sAzurillTeachableLearnset, .eggMoveLearnset = sAzurillEggMoveLearnset, - .evolutions = EVOLUTION({EVO_FRIENDSHIP, 0, SPECIES_MARILL}), + .evolutions = EVOLUTION({EVO_LEVEL, 0, SPECIES_MARILL, CONDITIONS({IF_MIN_FRIENDSHIP, FRIENDSHIP_EVO_THRESHOLD})}), }, #endif //P_GEN_3_CROSS_EVOS @@ -2262,6 +2292,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_Marill, .iconSprite = gMonIcon_Marill, .iconPalIndex = P_GBA_STYLE_SPECIES_ICONS ? 2 : 0, + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, SHADOW(-2, 0, SHADOW_SIZE_S) FOOTPRINT(Marill) OVERWORLD( @@ -2344,6 +2375,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_Azumarill, .iconSprite = gMonIcon_Azumarill, .iconPalIndex = P_GBA_STYLE_SPECIES_ICONS ? 2 : 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-4, 8, SHADOW_SIZE_S) FOOTPRINT(Azumarill) OVERWORLD( @@ -2415,6 +2447,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_Bonsly, .iconSprite = gMonIcon_Bonsly, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(-3, 4, SHADOW_SIZE_S) FOOTPRINT(Bonsly) OVERWORLD( @@ -2429,7 +2462,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .levelUpLearnset = sBonslyLevelUpLearnset, .teachableLearnset = sBonslyTeachableLearnset, .eggMoveLearnset = sBonslyEggMoveLearnset, - .evolutions = EVOLUTION({EVO_MOVE, MOVE_MIMIC, SPECIES_SUDOWOODO}), + .evolutions = EVOLUTION({EVO_LEVEL, 0, SPECIES_SUDOWOODO, CONDITIONS({IF_KNOWS_MOVE, MOVE_MIMIC})}), }, #endif //P_GEN_4_CROSS_EVOS @@ -2493,6 +2526,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backPicFemale = gMonBackPic_SudowoodoF, .backPicSizeFemale = MON_COORDS_SIZE(48, 56), #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-2, 7, SHADOW_SIZE_S) FOOTPRINT(Sudowoodo) OVERWORLD( @@ -2575,6 +2609,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_Hoppip, .iconSprite = gMonIcon_Hoppip, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-5, 12, SHADOW_SIZE_S) FOOTPRINT(Hoppip) OVERWORLD( @@ -2653,6 +2688,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_Skiploom, .iconSprite = gMonIcon_Skiploom, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 10, SHADOW_SIZE_S) FOOTPRINT(Skiploom) OVERWORLD( @@ -2736,6 +2772,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_Jumpluff, .iconSprite = gMonIcon_Jumpluff, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-2, 11, SHADOW_SIZE_S) FOOTPRINT(Jumpluff) OVERWORLD( @@ -2809,6 +2846,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backPicFemale = gMonBackPic_AipomF, .backPicSizeFemale = MON_COORDS_SIZE(64, 64), #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 12, SHADOW_SIZE_S) FOOTPRINT(Aipom) OVERWORLD( @@ -2830,7 +2868,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .levelUpLearnset = sAipomLevelUpLearnset, .teachableLearnset = sAipomTeachableLearnset, .eggMoveLearnset = sAipomEggMoveLearnset, - .evolutions = EVOLUTION({EVO_MOVE, MOVE_DOUBLE_HIT, SPECIES_AMBIPOM}), + .evolutions = EVOLUTION({EVO_LEVEL, 0, SPECIES_AMBIPOM, CONDITIONS({IF_KNOWS_MOVE, MOVE_DOUBLE_HIT})}), }, #if P_GEN_4_CROSS_EVOS @@ -2891,6 +2929,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backPicFemale = gMonBackPic_AmbipomF, .backPicSizeFemale = MON_COORDS_SIZE(64, 64), #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 13, SHADOW_SIZE_S) FOOTPRINT(Ambipom) OVERWORLD( @@ -2974,6 +3013,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_Sunkern, .iconSprite = gMonIcon_Sunkern, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, SHADOW(-1, -4, SHADOW_SIZE_S) FOOTPRINT(Sunkern) OVERWORLD( @@ -3046,6 +3086,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_Sunflora, .iconSprite = gMonIcon_Sunflora, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 6, SHADOW_SIZE_S) FOOTPRINT(Sunflora) OVERWORLD( @@ -3135,6 +3176,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_Yanma, .iconSprite = gMonIcon_Yanma, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-2, 10, SHADOW_SIZE_S) FOOTPRINT(Yanma) OVERWORLD( @@ -3149,7 +3191,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .levelUpLearnset = sYanmaLevelUpLearnset, .teachableLearnset = sYanmaTeachableLearnset, .eggMoveLearnset = sYanmaEggMoveLearnset, - .evolutions = EVOLUTION({EVO_MOVE, MOVE_ANCIENT_POWER, SPECIES_YANMEGA}), + .evolutions = EVOLUTION({EVO_LEVEL, 0, SPECIES_YANMEGA, CONDITIONS({IF_KNOWS_MOVE, MOVE_ANCIENT_POWER})}), }, #if P_GEN_4_CROSS_EVOS @@ -3229,6 +3271,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_Yanmega, .iconSprite = gMonIcon_Yanmega, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 12, SHADOW_SIZE_M) FOOTPRINT(Yanmega) OVERWORLD( @@ -3304,6 +3347,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backPicFemale = gMonBackPic_WooperF, .backPicSizeFemale = MON_COORDS_SIZE(64, 40), #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, SHADOW(1, -2, SHADOW_SIZE_S) FOOTPRINT(Wooper) OVERWORLD( @@ -3385,6 +3429,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backPicFemale = gMonBackPic_QuagsireF, .backPicSizeFemale = MON_COORDS_SIZE(64, 56), #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 8, SHADOW_SIZE_M) FOOTPRINT(Quagsire) OVERWORLD( @@ -3455,6 +3500,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_WooperPaldea, .iconSprite = gMonIcon_WooperPaldea, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, SHADOW(-1, -2, SHADOW_SIZE_S) FOOTPRINT(Wooper) OVERWORLD( @@ -3521,6 +3567,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_Clodsire, .iconSprite = gMonIcon_Clodsire, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-2, 3, SHADOW_SIZE_L) FOOTPRINT(Clodsire) OVERWORLD( @@ -3600,6 +3647,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backPicFemale = gMonBackPic_MurkrowF, .backPicSizeFemale = MON_COORDS_SIZE(40, 56), #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-2, 8, SHADOW_SIZE_S) FOOTPRINT(Murkrow) OVERWORLD( @@ -3677,6 +3725,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_Honchkrow, .iconSprite = gMonIcon_Honchkrow, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(5, 7, SHADOW_SIZE_M) FOOTPRINT(Honchkrow) OVERWORLD( @@ -3755,6 +3804,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_Misdreavus, .iconSprite = gMonIcon_Misdreavus, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 10, SHADOW_SIZE_S) FOOTPRINT(Misdreavus) OVERWORLD( @@ -3833,6 +3883,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_Mismagius, .iconSprite = gMonIcon_Mismagius, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 11, SHADOW_SIZE_M) FOOTPRINT(Mismagius) OVERWORLD( @@ -3897,6 +3948,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_Unown, \ .iconSprite = gMonIcon_Unown ##letter, \ .iconPalIndex = 0, \ + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, \ SHADOW(0, 3, SHADOW_SIZE_S) \ FOOTPRINT(Unown) \ OVERWORLD( \ @@ -4000,6 +4052,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_Wynaut, .iconSprite = gMonIcon_Wynaut, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(-1, 2, SHADOW_SIZE_S) FOOTPRINT(Wynaut) OVERWORLD( @@ -4081,6 +4134,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconPalIndexFemale = 0, #endif #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-3, 8, SHADOW_SIZE_M) FOOTPRINT(Wobbuffet) OVERWORLD( @@ -4163,6 +4217,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backPicFemale = gMonBackPic_GirafarigF, .backPicSizeFemale = MON_COORDS_SIZE(64, 64), #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(2, 13, SHADOW_SIZE_M) FOOTPRINT(Girafarig) OVERWORLD( @@ -4184,7 +4239,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .levelUpLearnset = sGirafarigLevelUpLearnset, .teachableLearnset = sGirafarigTeachableLearnset, .eggMoveLearnset = sGirafarigEggMoveLearnset, - .evolutions = EVOLUTION({EVO_MOVE, MOVE_TWIN_BEAM, SPECIES_FARIGIRAF}), + .evolutions = EVOLUTION({EVO_LEVEL, 0, SPECIES_FARIGIRAF, CONDITIONS({IF_KNOWS_MOVE, MOVE_TWIN_BEAM})}), }, #if P_GEN_9_CROSS_EVOS @@ -4235,6 +4290,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_Farigiraf, .iconSprite = gMonIcon_Farigiraf, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(11, 13, SHADOW_SIZE_L) FOOTPRINT(Farigiraf) OVERWORLD( @@ -4309,6 +4365,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_Pineco, .iconSprite = gMonIcon_Pineco, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, SHADOW(0, 2, SHADOW_SIZE_S) FOOTPRINT(Pineco) OVERWORLD( @@ -4378,6 +4435,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_Forretress, .iconSprite = gMonIcon_Forretress, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 6, SHADOW_SIZE_L) FOOTPRINT(Forretress) OVERWORLD( @@ -4454,6 +4512,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_Dunsparce, .iconSprite = gMonIcon_Dunsparce, .iconPalIndex = P_GBA_STYLE_SPECIES_ICONS ? 2 : 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, -4, SHADOW_SIZE_M) FOOTPRINT(Dunsparce) OVERWORLD( @@ -4468,8 +4527,8 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .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}), + .evolutions = EVOLUTION({EVO_LEVEL, 0, SPECIES_DUDUNSPARCE_TWO_SEGMENT, CONDITIONS({IF_KNOWS_MOVE, MOVE_HYPER_DRILL}, {IF_PID_MODULO_100_GT, 0})}, + {EVO_LEVEL, 0, SPECIES_DUDUNSPARCE_THREE_SEGMENT, CONDITIONS({IF_KNOWS_MOVE, MOVE_HYPER_DRILL}, {IF_PID_MODULO_100_EQ, 0})}), }, #if P_GEN_9_CROSS_EVOS @@ -4520,6 +4579,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_Dudunsparce, .iconSprite = gMonIcon_Dudunsparce, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 5, SHADOW_SIZE_L) FOOTPRINT(Dudunsparce) OVERWORLD( @@ -4583,6 +4643,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_Dudunsparce, .iconSprite = gMonIcon_Dudunsparce, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(4, 4, SHADOW_SIZE_L) FOOTPRINT(Dudunsparce) OVERWORLD( @@ -4659,6 +4720,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backPicFemale = gMonBackPic_GligarF, .backPicSizeFemale = MON_COORDS_SIZE(64, 64), #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 15, SHADOW_SIZE_S) FOOTPRINT(Gligar) OVERWORLD( @@ -4680,8 +4742,8 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .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}), + .evolutions = EVOLUTION({EVO_LEVEL, 0, SPECIES_GLISCOR, CONDITIONS({IF_TIME, TIME_NIGHT}, {IF_HOLD_ITEM, ITEM_RAZOR_FANG})}, + {EVO_ITEM, ITEM_RAZOR_FANG, SPECIES_GLISCOR, CONDITIONS({IF_TIME, TIME_NIGHT})}), }, #if P_GEN_4_CROSS_EVOS @@ -4738,6 +4800,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_Gliscor, .iconSprite = gMonIcon_Gliscor, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 13, SHADOW_SIZE_M) FOOTPRINT(Gliscor) OVERWORLD( @@ -4810,6 +4873,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_Snubbull, .iconSprite = gMonIcon_Snubbull, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(-1, 1, SHADOW_SIZE_S) FOOTPRINT(Snubbull) OVERWORLD( @@ -4885,6 +4949,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_Granbull, .iconSprite = gMonIcon_Granbull, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(3, 10, SHADOW_SIZE_L) FOOTPRINT(Granbull) OVERWORLD( @@ -4968,6 +5033,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_Qwilfish, .iconSprite = gMonIcon_Qwilfish, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-2, 3, SHADOW_SIZE_S) FOOTPRINT(Qwilfish) OVERWORLD( @@ -5035,6 +5101,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_QwilfishHisui, .iconSprite = gMonIcon_QwilfishHisui, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-5, 4, SHADOW_SIZE_S) FOOTPRINT(Qwilfish) OVERWORLD( @@ -5050,7 +5117,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .levelUpLearnset = sQwilfishHisuiLevelUpLearnset, .teachableLearnset = sQwilfishHisuiTeachableLearnset, .formSpeciesIdTable = sQwilfishFormSpeciesIdTable, - .evolutions = EVOLUTION({EVO_MOVE, MOVE_BARB_BARRAGE, SPECIES_OVERQWIL}), + .evolutions = EVOLUTION({EVO_LEVEL, 0, SPECIES_OVERQWIL, CONDITIONS({IF_KNOWS_MOVE, MOVE_BARB_BARRAGE})}), }, [SPECIES_OVERQWIL] = @@ -5100,6 +5167,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_Overqwil, .iconSprite = gMonIcon_Overqwil, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(2, 11, SHADOW_SIZE_M) FOOTPRINT(Overqwil) OVERWORLD( @@ -5176,6 +5244,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_Shuckle, .iconSprite = gMonIcon_Shuckle, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, SHADOW(1, 3, SHADOW_SIZE_M) FOOTPRINT(Shuckle) OVERWORLD( @@ -5253,6 +5322,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backPicFemale = gMonBackPic_HeracrossF, .backPicSizeFemale = MON_COORDS_SIZE(48, 64), #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 10, SHADOW_SIZE_M) FOOTPRINT(Heracross) OVERWORLD( @@ -5326,6 +5396,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_HeracrossMega, .iconSprite = gMonIcon_HeracrossMega, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(2, 13, SHADOW_SIZE_M) FOOTPRINT(Heracross) #if OW_BATTLE_ONLY_FORMS @@ -5412,6 +5483,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backPicFemale = gMonBackPic_SneaselF, .backPicSizeFemale = MON_COORDS_SIZE(64, 64), #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 5, SHADOW_SIZE_S) FOOTPRINT(Sneasel) OVERWORLD( @@ -5434,8 +5506,8 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .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}), + .evolutions = EVOLUTION({EVO_LEVEL, 0, SPECIES_WEAVILE, CONDITIONS({IF_TIME, TIME_NIGHT}, {IF_HOLD_ITEM, ITEM_RAZOR_CLAW})}, + {EVO_ITEM, ITEM_RAZOR_CLAW, SPECIES_WEAVILE, CONDITIONS({IF_TIME, TIME_NIGHT})}), }, #if P_GEN_4_CROSS_EVOS @@ -5497,6 +5569,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backPicFemale = gMonBackPic_WeavileF, .backPicSizeFemale = MON_COORDS_SIZE(64, 64), #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-4, 10, SHADOW_SIZE_M) FOOTPRINT(Weavile) OVERWORLD( @@ -5576,6 +5649,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backPicFemale = gMonBackPic_SneaselHisuiF, .backPicSizeFemale = MON_COORDS_SIZE(56, 64), #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 5, SHADOW_SIZE_S) FOOTPRINT(Sneasel) OVERWORLD( @@ -5598,8 +5672,8 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .levelUpLearnset = sSneaselHisuiLevelUpLearnset, .teachableLearnset = sSneaselHisuiTeachableLearnset, .formSpeciesIdTable = sSneaselFormSpeciesIdTable, - .evolutions = EVOLUTION({EVO_ITEM_HOLD_DAY, ITEM_RAZOR_CLAW, SPECIES_SNEASLER}, - {EVO_ITEM_DAY, ITEM_RAZOR_CLAW, SPECIES_SNEASLER}), + .evolutions = EVOLUTION({EVO_LEVEL, 0, SPECIES_SNEASLER, CONDITIONS({IF_NOT_TIME, TIME_NIGHT}, {IF_HOLD_ITEM, ITEM_RAZOR_CLAW})}, + {EVO_ITEM, ITEM_RAZOR_CLAW, SPECIES_SNEASLER, CONDITIONS({IF_NOT_TIME, TIME_NIGHT})}), }, [SPECIES_SNEASLER] = @@ -5649,6 +5723,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_Sneasler, .iconSprite = gMonIcon_Sneasler, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(2, 11, SHADOW_SIZE_M) FOOTPRINT(Sneasler) OVERWORLD( @@ -5723,6 +5798,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_Teddiursa, .iconSprite = gMonIcon_Teddiursa, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(-2, 1, SHADOW_SIZE_S) FOOTPRINT(Teddiursa) OVERWORLD( @@ -5800,6 +5876,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backPicFemale = gMonBackPic_UrsaringF, .backPicSizeFemale = MON_COORDS_SIZE(56, 64), #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 14, SHADOW_SIZE_L) FOOTPRINT(Ursaring) OVERWORLD( @@ -5820,7 +5897,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = ) .levelUpLearnset = sUrsaringLevelUpLearnset, .teachableLearnset = sUrsaringTeachableLearnset, - .evolutions = EVOLUTION({EVO_ITEM_NIGHT, ITEM_PEAT_BLOCK, SPECIES_URSALUNA}, + .evolutions = EVOLUTION({EVO_ITEM, ITEM_PEAT_BLOCK, SPECIES_URSALUNA, CONDITIONS({IF_TIME, TIME_NIGHT})}, {EVO_NONE, 0, SPECIES_URSALUNA_BLOODMOON}), }, @@ -5871,6 +5948,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_Ursaluna, .iconSprite = gMonIcon_Ursaluna, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 4, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Ursaluna) OVERWORLD( @@ -5934,6 +6012,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_UrsalunaBloodmoon, .iconSprite = gMonIcon_UrsalunaBloodmoon, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(6, 11, SHADOW_SIZE_L) FOOTPRINT(Ursaluna) .levelUpLearnset = sUrsalunaBloodmoonLevelUpLearnset, @@ -5997,6 +6076,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_Slugma, .iconSprite = gMonIcon_Slugma, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, SHADOW(0, 0, SHADOW_SIZE_S) FOOTPRINT(Slugma) OVERWORLD( @@ -6074,6 +6154,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_Magcargo, .iconSprite = gMonIcon_Magcargo, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 5, SHADOW_SIZE_M) FOOTPRINT(Magcargo) OVERWORLD( @@ -6147,6 +6228,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_Swinub, .iconSprite = gMonIcon_Swinub, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(-3, -6, SHADOW_SIZE_S) FOOTPRINT(Swinub) OVERWORLD( @@ -6227,6 +6309,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backPicFemale = gMonBackPic_PiloswineF, .backPicSizeFemale = MON_COORDS_SIZE(64, 48), #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 3, SHADOW_SIZE_M) FOOTPRINT(Piloswine) OVERWORLD( @@ -6247,7 +6330,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = ) .levelUpLearnset = sPiloswineLevelUpLearnset, .teachableLearnset = sPiloswineTeachableLearnset, - .evolutions = EVOLUTION({EVO_MOVE, MOVE_ANCIENT_POWER, SPECIES_MAMOSWINE}), + .evolutions = EVOLUTION({EVO_LEVEL, 0, SPECIES_MAMOSWINE, CONDITIONS({IF_KNOWS_MOVE, MOVE_ANCIENT_POWER})}), }, #if P_GEN_4_CROSS_EVOS @@ -6312,6 +6395,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .frontPicFemale = gMonFrontPic_MamoswineF, .frontPicSizeFemale = MON_COORDS_SIZE(64, 56), #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(7, 7, SHADOW_SIZE_L) FOOTPRINT(Mamoswine) OVERWORLD( @@ -6402,6 +6486,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_Corsola, .iconSprite = gMonIcon_Corsola, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 1, SHADOW_SIZE_M) FOOTPRINT(Corsola) OVERWORLD( @@ -6467,6 +6552,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_CorsolaGalar, .iconSprite = gMonIcon_CorsolaGalar, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 2, SHADOW_SIZE_M) FOOTPRINT(Corsola) OVERWORLD( @@ -6533,6 +6619,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_Cursola, .iconSprite = gMonIcon_Cursola, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-3, 13, SHADOW_SIZE_S) FOOTPRINT(Cursola) OVERWORLD( @@ -6606,6 +6693,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_Remoraid, .iconSprite = gMonIcon_Remoraid, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 0, SHADOW_SIZE_S) FOOTPRINT(Remoraid) OVERWORLD( @@ -6687,6 +6775,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backPicFemale = gMonBackPic_OctilleryF, .backPicSizeFemale = MON_COORDS_SIZE(64, 56), #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 4, SHADOW_SIZE_M) FOOTPRINT(Octillery) OVERWORLD( @@ -6761,6 +6850,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_Delibird, .iconSprite = gMonIcon_Delibird, .iconPalIndex = P_GBA_STYLE_SPECIES_ICONS ? 0 : 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 7, SHADOW_SIZE_M) FOOTPRINT(Delibird) OVERWORLD( @@ -6832,6 +6922,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_Mantyke, .iconSprite = gMonIcon_Mantyke, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 3, SHADOW_SIZE_S) FOOTPRINT(Mantyke) OVERWORLD( @@ -6846,7 +6937,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .levelUpLearnset = sMantykeLevelUpLearnset, .teachableLearnset = sMantykeTeachableLearnset, .eggMoveLearnset = sMantykeEggMoveLearnset, - .evolutions = EVOLUTION({EVO_SPECIFIC_MON_IN_PARTY, SPECIES_REMORAID, SPECIES_MANTINE}), + .evolutions = EVOLUTION({EVO_LEVEL, 0, SPECIES_MANTINE, CONDITIONS({IF_SPECIES_IN_PARTY, SPECIES_REMORAID})}), }, #endif //P_GEN_4_CROSS_EVOS @@ -6909,6 +7000,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_Mantine, .iconSprite = gMonIcon_Mantine, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 8, SHADOW_SIZE_M) FOOTPRINT(Mantine) OVERWORLD( @@ -6978,6 +7070,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_Skarmory, .iconSprite = gMonIcon_Skarmory, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(2, 9, SHADOW_SIZE_M) FOOTPRINT(Skarmory) OVERWORLD( @@ -7046,6 +7139,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_Houndour, .iconSprite = gMonIcon_Houndour, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(0, 4, SHADOW_SIZE_M) FOOTPRINT(Houndour) OVERWORLD( @@ -7119,6 +7213,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backPicFemale = gMonBackPic_HoundoomF, .backPicSizeFemale = MON_COORDS_SIZE(64, 56), #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-5, 13, SHADOW_SIZE_L) FOOTPRINT(Houndoom) OVERWORLD( @@ -7190,6 +7285,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_HoundoomMega, .iconSprite = gMonIcon_HoundoomMega, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-5, 13, SHADOW_SIZE_L) FOOTPRINT(Houndoom) #if OW_BATTLE_ONLY_FORMS @@ -7268,6 +7364,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_Phanpy, .iconSprite = gMonIcon_Phanpy, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(3, -2, SHADOW_SIZE_M) FOOTPRINT(Phanpy) OVERWORLD( @@ -7343,6 +7440,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backPicFemale = gMonBackPic_DonphanF, .backPicSizeFemale = MON_COORDS_SIZE(64, 48), #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(7, 2, SHADOW_SIZE_L) FOOTPRINT(Donphan) OVERWORLD( @@ -7421,6 +7519,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_Stantler, .iconSprite = gMonIcon_Stantler, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(3, 13, SHADOW_SIZE_M) FOOTPRINT(Stantler) OVERWORLD( @@ -7435,7 +7534,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .levelUpLearnset = sStantlerLevelUpLearnset, .teachableLearnset = sStantlerTeachableLearnset, .eggMoveLearnset = sStantlerEggMoveLearnset, - .evolutions = EVOLUTION({EVO_USE_MOVE_TWENTY_TIMES, MOVE_PSYSHIELD_BASH, SPECIES_WYRDEER}), + .evolutions = EVOLUTION({EVO_LEVEL, 0, SPECIES_WYRDEER, CONDITIONS({IF_USED_MOVE_X_TIMES, MOVE_PSYSHIELD_BASH, 20})}), }, #if P_GEN_8_CROSS_EVOS @@ -7487,6 +7586,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_Wyrdeer, .iconSprite = gMonIcon_Wyrdeer, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 13, SHADOW_SIZE_M) FOOTPRINT(Wyrdeer) OVERWORLD( @@ -7561,6 +7661,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_Smeargle, .iconSprite = gMonIcon_Smeargle, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(6, 7, SHADOW_SIZE_S) FOOTPRINT(Smeargle) OVERWORLD( @@ -7635,6 +7736,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_Miltank, .iconSprite = gMonIcon_Miltank, .iconPalIndex = P_GBA_STYLE_SPECIES_ICONS ? 1 : 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-3, 4, SHADOW_SIZE_M) FOOTPRINT(Miltank) OVERWORLD( @@ -7715,6 +7817,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_Raikou, .iconSprite = gMonIcon_Raikou, .iconPalIndex = P_GBA_STYLE_SPECIES_ICONS ? 0 : 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-4, 7, SHADOW_SIZE_L) FOOTPRINT(Raikou) OVERWORLD( @@ -7795,6 +7898,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_Entei, .iconSprite = gMonIcon_Entei, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 8, SHADOW_SIZE_L) FOOTPRINT(Entei) OVERWORLD( @@ -7875,6 +7979,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_Suicune, .iconSprite = gMonIcon_Suicune, .iconPalIndex = P_GBA_STYLE_SPECIES_ICONS ? 0 : 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(3, 10, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Suicune) OVERWORLD( @@ -7946,6 +8051,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_Larvitar, .iconSprite = gMonIcon_Larvitar, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(0, 3, SHADOW_SIZE_S) FOOTPRINT(Larvitar) OVERWORLD( @@ -8013,6 +8119,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_Pupitar, .iconSprite = gMonIcon_Pupitar, .iconPalIndex = P_GBA_STYLE_SPECIES_ICONS ? 0 : 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(3, 3, SHADOW_SIZE_S) FOOTPRINT(Pupitar) OVERWORLD( @@ -8087,6 +8194,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_Tyranitar, .iconSprite = gMonIcon_Tyranitar, .iconPalIndex = P_GBA_STYLE_SPECIES_ICONS ? 1 : 4, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 11, SHADOW_SIZE_L) FOOTPRINT(Tyranitar) OVERWORLD( @@ -8152,6 +8260,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_TyranitarMega, .iconSprite = gMonIcon_TyranitarMega, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 13, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Tyranitar) #if OW_BATTLE_ONLY_FORMS @@ -8243,6 +8352,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_Lugia, .iconSprite = gMonIcon_Lugia, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(2, 17, SHADOW_SIZE_L) FOOTPRINT(Lugia) OVERWORLD( @@ -8322,6 +8432,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_HoOh, .iconSprite = gMonIcon_HoOh, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 17, SHADOW_SIZE_L) FOOTPRINT(HoOh) OVERWORLD( @@ -8403,6 +8514,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .shinyPalette = gMonShinyPalette_Celebi, .iconSprite = gMonIcon_Celebi, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 14, SHADOW_SIZE_S) FOOTPRINT(Celebi) OVERWORLD( diff --git a/src/data/pokemon/species_info/gen_3_families.h b/src/data/pokemon/species_info/gen_3_families.h index 7b87415c76..272c57668e 100644 --- a/src/data/pokemon/species_info/gen_3_families.h +++ b/src/data/pokemon/species_info/gen_3_families.h @@ -57,6 +57,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Treecko, .iconSprite = gMonIcon_Treecko, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(-3, 4, SHADOW_SIZE_S) FOOTPRINT(Treecko) OVERWORLD( @@ -127,6 +128,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Grovyle, .iconSprite = gMonIcon_Grovyle, .iconPalIndex = P_GBA_STYLE_SPECIES_ICONS ? 0 : 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 7, SHADOW_SIZE_M) FOOTPRINT(Grovyle) OVERWORLD( @@ -200,6 +202,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Sceptile, .iconSprite = gMonIcon_Sceptile, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(2, 11, SHADOW_SIZE_L) FOOTPRINT(Sceptile) OVERWORLD( @@ -265,6 +268,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_SceptileMega, .iconSprite = gMonIcon_SceptileMega, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(3, 11, SHADOW_SIZE_L) FOOTPRINT(Sceptile) #if OW_BATTLE_ONLY_FORMS @@ -347,6 +351,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backPicFemale = gMonBackPic_TorchicF, .backPicSizeFemale = MON_COORDS_SIZE(40, 48), #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, SHADOW(-1, 1, SHADOW_SIZE_S) FOOTPRINT(Torchic) OVERWORLD( @@ -429,6 +434,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backPicFemale = gMonBackPic_CombuskenF, .backPicSizeFemale = MON_COORDS_SIZE(64, 64), #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 8, SHADOW_SIZE_M) FOOTPRINT(Combusken) OVERWORLD( @@ -517,6 +523,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backPicFemale = gMonBackPic_BlazikenF, .backPicSizeFemale = MON_COORDS_SIZE(64, 64), #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(4, 8, SHADOW_SIZE_M) FOOTPRINT(Blaziken) OVERWORLD( @@ -589,6 +596,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_BlazikenMega, .iconSprite = gMonIcon_BlazikenMega, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(2, 11, SHADOW_SIZE_M) FOOTPRINT(Blaziken) #if OW_BATTLE_ONLY_FORMS @@ -665,6 +673,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Mudkip, .iconSprite = gMonIcon_Mudkip, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(1, 1, SHADOW_SIZE_S) FOOTPRINT(Mudkip) OVERWORLD( @@ -739,6 +748,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Marshtomp, .iconSprite = gMonIcon_Marshtomp, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(-1, 7, SHADOW_SIZE_M) FOOTPRINT(Marshtomp) OVERWORLD( @@ -814,6 +824,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Swampert, .iconSprite = gMonIcon_Swampert, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(5, 7, SHADOW_SIZE_L) FOOTPRINT(Swampert) OVERWORLD( @@ -879,6 +890,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_SwampertMega, .iconSprite = gMonIcon_SwampertMega, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(6, 8, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Swampert) #if OW_BATTLE_ONLY_FORMS @@ -963,6 +975,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Poochyena, .iconSprite = gMonIcon_Poochyena, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(0, 2, SHADOW_SIZE_M) FOOTPRINT(Poochyena) OVERWORLD( @@ -1037,6 +1050,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Mightyena, .iconSprite = gMonIcon_Mightyena, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-2, 6, SHADOW_SIZE_L) FOOTPRINT(Mightyena) OVERWORLD( @@ -1121,6 +1135,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Zigzagoon, .iconSprite = gMonIcon_Zigzagoon, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(-4, 0, SHADOW_SIZE_M) FOOTPRINT(Zigzagoon) OVERWORLD( @@ -1198,6 +1213,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Linoone, .iconSprite = gMonIcon_Linoone, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(-6, 0, SHADOW_SIZE_L) FOOTPRINT(Linoone) OVERWORLD( @@ -1262,6 +1278,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_ZigzagoonGalar, .iconSprite = gMonIcon_ZigzagoonGalar, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(-5, 0, SHADOW_SIZE_M) FOOTPRINT(Zigzagoon) OVERWORLD( @@ -1328,6 +1345,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_LinooneGalar, .iconSprite = gMonIcon_LinooneGalar, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(-4, 0, SHADOW_SIZE_L) FOOTPRINT(Linoone) OVERWORLD( @@ -1343,7 +1361,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .levelUpLearnset = sLinooneGalarLevelUpLearnset, .teachableLearnset = sLinooneGalarTeachableLearnset, .formSpeciesIdTable = sLinooneFormSpeciesIdTable, - .evolutions = EVOLUTION({EVO_LEVEL_NIGHT, 35, SPECIES_OBSTAGOON}), + .evolutions = EVOLUTION({EVO_LEVEL, 35, SPECIES_OBSTAGOON, CONDITIONS({IF_TIME, TIME_NIGHT})}), }, [SPECIES_OBSTAGOON] = @@ -1393,6 +1411,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Obstagoon, .iconSprite = gMonIcon_Obstagoon, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(2, 13, SHADOW_SIZE_M) FOOTPRINT(Obstagoon) OVERWORLD( @@ -1470,6 +1489,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Wurmple, .iconSprite = gMonIcon_Wurmple, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(0, 1, SHADOW_SIZE_S) FOOTPRINT(Wurmple) OVERWORLD( @@ -1484,8 +1504,8 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .tmIlliterate = TRUE, .levelUpLearnset = sWurmpleLevelUpLearnset, .teachableLearnset = sWurmpleTeachableLearnset, - .evolutions = EVOLUTION({EVO_LEVEL_SILCOON, 7, SPECIES_SILCOON}, - {EVO_LEVEL_CASCOON, 7, SPECIES_CASCOON}), + .evolutions = EVOLUTION({EVO_LEVEL, 7, SPECIES_SILCOON, CONDITIONS({IF_PID_UPPER_MODULO_10_GT, 4})}, + {EVO_LEVEL, 7, SPECIES_CASCOON, CONDITIONS({IF_PID_UPPER_MODULO_10_LT, 5})}), }, [SPECIES_SILCOON] = @@ -1539,6 +1559,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Silcoon, .iconSprite = gMonIcon_Silcoon, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, SHADOW(0, -4, SHADOW_SIZE_M) FOOTPRINT(Silcoon) OVERWORLD( @@ -1629,6 +1650,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backPicFemale = gMonBackPic_BeautiflyF, .backPicSizeFemale = MON_COORDS_SIZE(64, 64), #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-5, 12, SHADOW_SIZE_S) FOOTPRINT(Beautifly) OVERWORLD( @@ -1710,6 +1732,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Cascoon, .iconSprite = gMonIcon_Cascoon, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, SHADOW(0, -4, SHADOW_SIZE_M) FOOTPRINT(Cascoon) OVERWORLD( @@ -1808,6 +1831,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backPicFemale = gMonBackPic_DustoxF, .backPicSizeFemale = MON_COORDS_SIZE(64, 64), #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-2, 11, SHADOW_SIZE_S) FOOTPRINT(Dustox) OVERWORLD( @@ -1884,6 +1908,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Lotad, .iconSprite = gMonIcon_Lotad, .iconPalIndex = P_GBA_STYLE_SPECIES_ICONS ? 1 : 4, + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, SHADOW(2, -3, SHADOW_SIZE_S) FOOTPRINT(Lotad) OVERWORLD( @@ -1955,6 +1980,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Lombre, .iconSprite = gMonIcon_Lombre, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(4, 2, SHADOW_SIZE_S) FOOTPRINT(Lombre) OVERWORLD( @@ -2039,6 +2065,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backPicFemale = gMonBackPic_LudicoloF, .backPicSizeFemale = MON_COORDS_SIZE(64, 56), #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-3, 14, SHADOW_SIZE_M) FOOTPRINT(Ludicolo) OVERWORLD( @@ -2121,6 +2148,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Seedot, .iconSprite = gMonIcon_Seedot, .iconPalIndex = P_GBA_STYLE_SPECIES_ICONS ? 1 : 2, + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(0, 1, SHADOW_SIZE_S) FOOTPRINT(Seedot) OVERWORLD( @@ -2202,6 +2230,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backPicFemale = gMonBackPic_NuzleafF, .backPicSizeFemale = MON_COORDS_SIZE(56, 48), #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-3, 5, SHADOW_SIZE_S) FOOTPRINT(Nuzleaf) OVERWORLD( @@ -2293,6 +2322,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backPicFemale = gMonBackPic_ShiftryF, .backPicSizeFemale = MON_COORDS_SIZE(64, 56), #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-5, 5, SHADOW_SIZE_M) FOOTPRINT(Shiftry) OVERWORLD( @@ -2374,6 +2404,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Taillow, .iconSprite = gMonIcon_Taillow, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-3, 1, SHADOW_SIZE_S) FOOTPRINT(Taillow) OVERWORLD( @@ -2448,6 +2479,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Swellow, .iconSprite = gMonIcon_Swellow, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-7, 7, SHADOW_SIZE_M) FOOTPRINT(Swellow) OVERWORLD( @@ -2522,6 +2554,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Wingull, .iconSprite = gMonIcon_Wingull, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-2, 15, SHADOW_SIZE_S) FOOTPRINT(Wingull) OVERWORLD( @@ -2608,6 +2641,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Pelipper, .iconSprite = gMonIcon_Pelipper, .iconPalIndex = P_GBA_STYLE_SPECIES_ICONS ? 0 : 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 17, SHADOW_SIZE_M) FOOTPRINT(Pelipper) OVERWORLD( @@ -2684,6 +2718,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Ralts, .iconSprite = gMonIcon_Ralts, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(0, 1, SHADOW_SIZE_S) FOOTPRINT(Ralts) OVERWORLD( @@ -2752,6 +2787,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Kirlia, .iconSprite = gMonIcon_Kirlia, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(-2, 7, SHADOW_SIZE_S) FOOTPRINT(Kirlia) OVERWORLD( @@ -2766,7 +2802,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .levelUpLearnset = sKirliaLevelUpLearnset, .teachableLearnset = sKirliaTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_GARDEVOIR}, - {EVO_ITEM_MALE, ITEM_DAWN_STONE, SPECIES_GALLADE}), + {EVO_ITEM, ITEM_DAWN_STONE, SPECIES_GALLADE, CONDITIONS({IF_GENDER, MON_MALE})}), }, [SPECIES_GARDEVOIR] = @@ -2826,6 +2862,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Gardevoir, .iconSprite = gMonIcon_Gardevoir, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 14, SHADOW_SIZE_L) FOOTPRINT(Gardevoir) OVERWORLD( @@ -2891,6 +2928,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_GardevoirMega, .iconSprite = gMonIcon_GardevoirMega, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 14, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Gardevoir) #if OW_BATTLE_ONLY_FORMS @@ -2973,6 +3011,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Gallade, .iconSprite = gMonIcon_Gallade, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(4, 13, SHADOW_SIZE_L) FOOTPRINT(Gallade) OVERWORLD( @@ -3038,6 +3077,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_GalladeMega, .iconSprite = gMonIcon_GalladeMega, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-2, 13, SHADOW_SIZE_L) FOOTPRINT(Gallade) #if OW_BATTLE_ONLY_FORMS @@ -3116,6 +3156,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Surskit, .iconSprite = gMonIcon_Surskit, .iconPalIndex = P_GBA_STYLE_SPECIES_ICONS ? 2 : 0, + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, SHADOW(-1, -3, SHADOW_SIZE_S) FOOTPRINT(Surskit) OVERWORLD( @@ -3199,6 +3240,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Masquerain, .iconSprite = gMonIcon_Masquerain, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-4, 17, SHADOW_SIZE_M) FOOTPRINT(Masquerain) OVERWORLD( @@ -3281,6 +3323,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Shroomish, .iconSprite = gMonIcon_Shroomish, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, SHADOW(0, 0, SHADOW_SIZE_S) FOOTPRINT(Shroomish) OVERWORLD( @@ -3357,6 +3400,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Breloom, .iconSprite = gMonIcon_Breloom, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-4, 9, SHADOW_SIZE_M) FOOTPRINT(Breloom) OVERWORLD( @@ -3428,6 +3472,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Slakoth, .iconSprite = gMonIcon_Slakoth, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, -4, SHADOW_SIZE_M) FOOTPRINT(Slakoth) OVERWORLD( @@ -3500,6 +3545,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Vigoroth, .iconSprite = gMonIcon_Vigoroth, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(4, 6, SHADOW_SIZE_M) FOOTPRINT(Vigoroth) OVERWORLD( @@ -3577,6 +3623,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Slaking, .iconSprite = gMonIcon_Slaking, .iconPalIndex = P_GBA_STYLE_SPECIES_ICONS ? 1 : 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 6, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Slaking) OVERWORLD( @@ -3648,6 +3695,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Nincada, .iconSprite = gMonIcon_Nincada, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(2, -3, SHADOW_SIZE_M) FOOTPRINT(Nincada) OVERWORLD( @@ -3662,8 +3710,12 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .levelUpLearnset = sNincadaLevelUpLearnset, .teachableLearnset = sNincadaTeachableLearnset, .eggMoveLearnset = sNincadaEggMoveLearnset, - .evolutions = EVOLUTION({EVO_LEVEL_NINJASK, 20, SPECIES_NINJASK}, - {EVO_LEVEL_SHEDINJA, 20, SPECIES_SHEDINJA}), + .evolutions = EVOLUTION({EVO_LEVEL, 20, SPECIES_NINJASK}, + #if P_SHEDINJA_BALL >= GEN_4 + {EVO_SPLIT_FROM_EVO, SPECIES_NINJASK, SPECIES_SHEDINJA, CONDITIONS({IF_BAG_ITEM_COUNT, ITEM_POKE_BALL, 1})}), + #else + {EVO_SPLIT_FROM_EVO, SPECIES_NINJASK, SPECIES_SHEDINJA}), + #endif }, [SPECIES_NINJASK] = @@ -3733,6 +3785,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Ninjask, .iconSprite = gMonIcon_Ninjask, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-2, 10, SHADOW_SIZE_S) FOOTPRINT(Ninjask) OVERWORLD( @@ -3802,6 +3855,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Shedinja, .iconSprite = gMonIcon_Shedinja, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-2, 9, SHADOW_SIZE_S) FOOTPRINT(Shedinja) OVERWORLD( @@ -3877,6 +3931,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Whismur, .iconSprite = gMonIcon_Whismur, .iconPalIndex = P_GBA_STYLE_SPECIES_ICONS ? 0 : 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(1, 0, SHADOW_SIZE_S) FOOTPRINT(Whismur) OVERWORLD( @@ -3947,6 +4002,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Loudred, .iconSprite = gMonIcon_Loudred, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 9, SHADOW_SIZE_M) FOOTPRINT(Loudred) OVERWORLD( @@ -4022,6 +4078,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Exploud, .iconSprite = gMonIcon_Exploud, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 12, SHADOW_SIZE_L) FOOTPRINT(Exploud) OVERWORLD( @@ -4097,6 +4154,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Makuhita, .iconSprite = gMonIcon_Makuhita, .iconPalIndex = P_GBA_STYLE_SPECIES_ICONS ? 2 : 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 5, SHADOW_SIZE_M) FOOTPRINT(Makuhita) OVERWORLD( @@ -4167,6 +4225,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Hariyama, .iconSprite = gMonIcon_Hariyama, .iconPalIndex = P_GBA_STYLE_SPECIES_ICONS ? 1 : 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-3, 9, SHADOW_SIZE_L) FOOTPRINT(Hariyama) OVERWORLD( @@ -4240,6 +4299,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Nosepass, .iconSprite = gMonIcon_Nosepass, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 3, SHADOW_SIZE_M) FOOTPRINT(Nosepass) OVERWORLD( @@ -4254,7 +4314,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .levelUpLearnset = sNosepassLevelUpLearnset, .teachableLearnset = sNosepassTeachableLearnset, .eggMoveLearnset = sNosepassEggMoveLearnset, - .evolutions = EVOLUTION({EVO_MAPSEC, MAPSEC_NEW_MAUVILLE, SPECIES_PROBOPASS}, + .evolutions = EVOLUTION({EVO_LEVEL, 0, SPECIES_PROBOPASS, CONDITIONS({IF_IN_MAPSEC, MAPSEC_NEW_MAUVILLE})}, {EVO_ITEM, ITEM_THUNDER_STONE, SPECIES_PROBOPASS}), }, @@ -4315,6 +4375,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Probopass, .iconSprite = gMonIcon_Probopass, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 13, SHADOW_SIZE_L) FOOTPRINT(Probopass) OVERWORLD( @@ -4388,6 +4449,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Skitty, .iconSprite = gMonIcon_Skitty, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(-3, 1, SHADOW_SIZE_S) FOOTPRINT(Skitty) OVERWORLD( @@ -4467,6 +4529,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Delcatty, .iconSprite = gMonIcon_Delcatty, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 9, SHADOW_SIZE_S) FOOTPRINT(Delcatty) OVERWORLD( @@ -4543,6 +4606,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Sableye, .iconSprite = gMonIcon_Sableye, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(2, 3, SHADOW_SIZE_S) FOOTPRINT(Sableye) OVERWORLD( @@ -4609,6 +4673,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_SableyeMega, .iconSprite = gMonIcon_SableyeMega, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(3, 7, SHADOW_SIZE_S) FOOTPRINT(Sableye) #if OW_BATTLE_ONLY_FORMS @@ -4696,6 +4761,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Mawile, .iconSprite = gMonIcon_Mawile, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(1, 4, SHADOW_SIZE_L) FOOTPRINT(Mawile) OVERWORLD( @@ -4763,6 +4829,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_MawileMega, .iconSprite = gMonIcon_MawileMega, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 9, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Mawile) #if OW_BATTLE_ONLY_FORMS @@ -4841,6 +4908,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Aron, .iconSprite = gMonIcon_Aron, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(2, -3, SHADOW_SIZE_S) FOOTPRINT(Aron) OVERWORLD( @@ -4912,6 +4980,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Lairon, .iconSprite = gMonIcon_Lairon, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(4, 2, SHADOW_SIZE_L) FOOTPRINT(Lairon) OVERWORLD( @@ -4986,6 +5055,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Aggron, .iconSprite = gMonIcon_Aggron, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(5, 12, SHADOW_SIZE_L) FOOTPRINT(Aggron) OVERWORLD( @@ -5052,6 +5122,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_AggronMega, .iconSprite = gMonIcon_AggronMega, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 12, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Aggron) #if OW_BATTLE_ONLY_FORMS @@ -5132,6 +5203,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backPicFemale = gMonBackPic_MedititeF, .backPicSizeFemale = MON_COORDS_SIZE(48, 48), #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, SHADOW(0, 1, SHADOW_SIZE_S) FOOTPRINT(Meditite) OVERWORLD( @@ -5217,6 +5289,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backPicFemale = gMonBackPic_MedichamF, .backPicSizeFemale = MON_COORDS_SIZE(56, 64), #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-2, 13, SHADOW_SIZE_S) FOOTPRINT(Medicham) OVERWORLD( @@ -5289,6 +5362,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_MedichamMega, .iconSprite = gMonIcon_MedichamMega, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-2, 13, SHADOW_SIZE_S) FOOTPRINT(Medicham) #if OW_BATTLE_ONLY_FORMS @@ -5365,6 +5439,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Electrike, .iconSprite = gMonIcon_Electrike, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(3, -1, SHADOW_SIZE_M) FOOTPRINT(Electrike) OVERWORLD( @@ -5435,6 +5510,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Manectric, .iconSprite = gMonIcon_Manectric, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 10, SHADOW_SIZE_M) FOOTPRINT(Manectric) OVERWORLD( @@ -5499,6 +5575,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_ManectricMega, .iconSprite = gMonIcon_ManectricMega, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 10, SHADOW_SIZE_L) FOOTPRINT(Manectric) #if OW_BATTLE_ONLY_FORMS @@ -5580,6 +5657,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Plusle, .iconSprite = gMonIcon_Plusle, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(2, 3, SHADOW_SIZE_S) FOOTPRINT(Plusle) OVERWORLD( @@ -5656,6 +5734,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Minun, .iconSprite = gMonIcon_Minun, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(-4, 3, SHADOW_SIZE_S) FOOTPRINT(Minun) OVERWORLD( @@ -5736,6 +5815,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Volbeat, .iconSprite = gMonIcon_Volbeat, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(0, 5, SHADOW_SIZE_S) FOOTPRINT(Volbeat) OVERWORLD( @@ -5816,6 +5896,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Illumise, .iconSprite = gMonIcon_Illumise, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(0, 5, SHADOW_SIZE_S) FOOTPRINT(Illumise) OVERWORLD( @@ -5888,6 +5969,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Budew, .iconSprite = gMonIcon_Budew, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, SHADOW(-3, 0, SHADOW_SIZE_S) FOOTPRINT(Budew) OVERWORLD( @@ -5902,7 +5984,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .levelUpLearnset = sBudewLevelUpLearnset, .teachableLearnset = sBudewTeachableLearnset, .eggMoveLearnset = sBudewEggMoveLearnset, - .evolutions = EVOLUTION({EVO_FRIENDSHIP_DAY, 0, SPECIES_ROSELIA}), + .evolutions = EVOLUTION({EVO_LEVEL, 0, SPECIES_ROSELIA, CONDITIONS({IF_MIN_FRIENDSHIP, FRIENDSHIP_EVO_THRESHOLD},{IF_NOT_TIME, TIME_NIGHT})}), }, #endif //P_GEN_4_CROSS_EVOS @@ -5965,6 +6047,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backPicFemale = gMonBackPic_RoseliaF, .backPicSizeFemale = MON_COORDS_SIZE(64, 56), #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, SHADOW(-2, 3, SHADOW_SIZE_S) FOOTPRINT(Roselia) OVERWORLD( @@ -6056,6 +6139,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backPicFemale = gMonBackPic_RoseradeF, .backPicSizeFemale = MON_COORDS_SIZE(64, 56), #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 6, SHADOW_SIZE_S) FOOTPRINT(Roserade) OVERWORLD( @@ -6142,6 +6226,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backPicFemale = gMonBackPic_GulpinF, .backPicSizeFemale = MON_COORDS_SIZE(56, 48), #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, SHADOW(1, -2, SHADOW_SIZE_S) FOOTPRINT(Gulpin) OVERWORLD( @@ -6226,6 +6311,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backPicFemale = gMonBackPic_SwalotF, .backPicSizeFemale = MON_COORDS_SIZE(64, 64), #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(4, 3, SHADOW_SIZE_L) FOOTPRINT(Swalot) OVERWORLD( @@ -6308,6 +6394,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Carvanha, .iconSprite = gMonIcon_Carvanha, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 8, SHADOW_SIZE_S) FOOTPRINT(Carvanha) OVERWORLD( @@ -6383,6 +6470,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Sharpedo, .iconSprite = gMonIcon_Sharpedo, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-2, 14, SHADOW_SIZE_M) FOOTPRINT(Sharpedo) OVERWORLD( @@ -6450,6 +6538,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_SharpedoMega, .iconSprite = gMonIcon_SharpedoMega, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-2, 14, SHADOW_SIZE_M) FOOTPRINT(Sharpedo) #if OW_BATTLE_ONLY_FORMS @@ -6528,6 +6617,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Wailmer, .iconSprite = gMonIcon_Wailmer, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 3, SHADOW_SIZE_L) FOOTPRINT(Wailmer) OVERWORLD( @@ -6597,6 +6687,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Wailord, .iconSprite = gMonIcon_Wailord, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 7, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Wailord) OVERWORLD( @@ -6677,6 +6768,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backPicFemale = gMonBackPic_NumelF, .backPicSizeFemale = MON_COORDS_SIZE(56, 56), #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, SHADOW(4, 2, SHADOW_SIZE_S) FOOTPRINT(Numel) OVERWORLD( @@ -6767,6 +6859,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backPicFemale = gMonBackPic_CameruptF, .backPicSizeFemale = MON_COORDS_SIZE(64, 40), #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(2, 4, SHADOW_SIZE_L) FOOTPRINT(Camerupt) OVERWORLD( @@ -6840,6 +6933,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_CameruptMega, .iconSprite = gMonIcon_CameruptMega, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 6, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Camerupt) #if OW_BATTLE_ONLY_FORMS @@ -6921,6 +7015,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Torkoal, .iconSprite = gMonIcon_Torkoal, .iconPalIndex = P_GBA_STYLE_SPECIES_ICONS ? 1 : 2, + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, SHADOW(2, 7, SHADOW_SIZE_L) FOOTPRINT(Torkoal) OVERWORLD( @@ -6998,6 +7093,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Spoink, .iconSprite = gMonIcon_Spoink, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(-1, 5, SHADOW_SIZE_S) FOOTPRINT(Spoink) OVERWORLD( @@ -7069,6 +7165,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Grumpig, .iconSprite = gMonIcon_Grumpig, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 8, SHADOW_SIZE_M) FOOTPRINT(Grumpig) OVERWORLD( @@ -7144,6 +7241,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Spinda, .iconSprite = gMonIcon_Spinda, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(2, 6, SHADOW_SIZE_S) FOOTPRINT(Spinda) OVERWORLD( @@ -7220,6 +7318,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Trapinch, .iconSprite = gMonIcon_Trapinch, .iconPalIndex = P_GBA_STYLE_SPECIES_ICONS ? 1 : 0, + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, SHADOW(4, -1, SHADOW_SIZE_S) FOOTPRINT(Trapinch) OVERWORLD( @@ -7297,6 +7396,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Vibrava, .iconSprite = gMonIcon_Vibrava, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-2, 0, SHADOW_SIZE_L) FOOTPRINT(Vibrava) OVERWORLD( @@ -7380,6 +7480,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Flygon, .iconSprite = gMonIcon_Flygon, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 17, SHADOW_SIZE_M) FOOTPRINT(Flygon) OVERWORLD( @@ -7457,6 +7558,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Cacnea, .iconSprite = gMonIcon_Cacnea, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, SHADOW(0, 1, SHADOW_SIZE_S) FOOTPRINT(Cacnea) OVERWORLD( @@ -7533,6 +7635,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .frontPicFemale = gMonFrontPic_CacturneF, .frontPicSizeFemale = MON_COORDS_SIZE(64, 64), #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 14, SHADOW_SIZE_M) FOOTPRINT(Cacturne) OVERWORLD( @@ -7613,6 +7716,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Swablu, .iconSprite = gMonIcon_Swablu, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-2, 0, SHADOW_SIZE_S) FOOTPRINT(Swablu) OVERWORLD( @@ -7684,6 +7788,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Altaria, .iconSprite = gMonIcon_Altaria, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 14, SHADOW_SIZE_L) FOOTPRINT(Altaria) OVERWORLD( @@ -7750,6 +7855,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_AltariaMega, .iconSprite = gMonIcon_AltariaMega, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-2, 17, SHADOW_SIZE_L) FOOTPRINT(Altaria) #if OW_BATTLE_ONLY_FORMS @@ -7830,6 +7936,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Zangoose, .iconSprite = gMonIcon_Zangoose, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 8, SHADOW_SIZE_M) FOOTPRINT(Zangoose) OVERWORLD( @@ -7906,6 +8013,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Seviper, .iconSprite = gMonIcon_Seviper, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-3, 7, SHADOW_SIZE_L) FOOTPRINT(Seviper) OVERWORLD( @@ -7986,6 +8094,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Lunatone, .iconSprite = gMonIcon_Lunatone, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 15, SHADOW_SIZE_S) FOOTPRINT(Lunatone) OVERWORLD( @@ -8065,6 +8174,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Solrock, .iconSprite = gMonIcon_Solrock, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 15, SHADOW_SIZE_M) FOOTPRINT(Solrock) OVERWORLD( @@ -8148,6 +8258,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Barboach, .iconSprite = gMonIcon_Barboach, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 3, SHADOW_SIZE_M) FOOTPRINT(Barboach) OVERWORLD( @@ -8230,6 +8341,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Whiscash, .iconSprite = gMonIcon_Whiscash, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 3, SHADOW_SIZE_L) FOOTPRINT(Whiscash) OVERWORLD( @@ -8302,6 +8414,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Corphish, .iconSprite = gMonIcon_Corphish, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 5, SHADOW_SIZE_M) FOOTPRINT(Corphish) OVERWORLD( @@ -8372,6 +8485,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Crawdaunt, .iconSprite = gMonIcon_Crawdaunt, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(6, 9, SHADOW_SIZE_M) FOOTPRINT(Crawdaunt) OVERWORLD( @@ -8446,6 +8560,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Baltoy, .iconSprite = gMonIcon_Baltoy, .iconPalIndex = P_GBA_STYLE_SPECIES_ICONS ? 1 : 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-2, 5, SHADOW_SIZE_S) FOOTPRINT(Baltoy) OVERWORLD( @@ -8519,6 +8634,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Claydol, .iconSprite = gMonIcon_Claydol, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 18, SHADOW_SIZE_M) FOOTPRINT(Claydol) OVERWORLD( @@ -8596,6 +8712,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Lileep, .iconSprite = gMonIcon_Lileep, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 5, SHADOW_SIZE_S) FOOTPRINT(Lileep) OVERWORLD( @@ -8675,6 +8792,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Cradily, .iconSprite = gMonIcon_Cradily, .iconPalIndex = P_GBA_STYLE_SPECIES_ICONS ? 0 : 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(2, 11, SHADOW_SIZE_M) FOOTPRINT(Cradily) OVERWORLD( @@ -8753,6 +8871,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Anorith, .iconSprite = gMonIcon_Anorith, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(0, 4, SHADOW_SIZE_S) FOOTPRINT(Anorith) OVERWORLD( @@ -8829,6 +8948,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Armaldo, .iconSprite = gMonIcon_Armaldo, .iconPalIndex = P_GBA_STYLE_SPECIES_ICONS ? 0 : 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-2, 11, SHADOW_SIZE_L) FOOTPRINT(Armaldo) OVERWORLD( @@ -8905,6 +9025,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Feebas, .iconSprite = gMonIcon_Feebas, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-2, 2, SHADOW_SIZE_S) FOOTPRINT(Feebas) OVERWORLD( @@ -8919,8 +9040,8 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .levelUpLearnset = sFeebasLevelUpLearnset, .teachableLearnset = sFeebasTeachableLearnset, .eggMoveLearnset = sFeebasEggMoveLearnset, - .evolutions = EVOLUTION({EVO_BEAUTY, 170, SPECIES_MILOTIC}, - {EVO_TRADE_ITEM, ITEM_PRISM_SCALE, SPECIES_MILOTIC}, + .evolutions = EVOLUTION({EVO_LEVEL, 0, SPECIES_MILOTIC, CONDITIONS({IF_MIN_BEAUTY, 170})}, + {EVO_TRADE, 0, SPECIES_MILOTIC, CONDITIONS({IF_HOLD_ITEM, ITEM_PRISM_SCALE})}, {EVO_ITEM, ITEM_PRISM_SCALE, SPECIES_MILOTIC}), }, @@ -8990,6 +9111,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backPicFemale = gMonBackPic_MiloticF, .backPicSizeFemale = MON_COORDS_SIZE(64, 64), #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 12, SHADOW_SIZE_M) FOOTPRINT(Milotic) OVERWORLD( @@ -9070,6 +9192,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_CastformNormal, .iconSprite = gMonIcon_CastformNormal, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 10, SHADOW_SIZE_S) FOOTPRINT(Castform) OVERWORLD( @@ -9146,6 +9269,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_CastformSunny, .iconSprite = gMonIcon_CastformSunny, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 7, SHADOW_SIZE_S) FOOTPRINT(Castform) OVERWORLD( @@ -9220,6 +9344,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_CastformRainy, .iconSprite = gMonIcon_CastformRainy, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 7, SHADOW_SIZE_S) FOOTPRINT(Castform) OVERWORLD( @@ -9294,6 +9419,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_CastformSnowy, .iconSprite = gMonIcon_CastformSnowy, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 8, SHADOW_SIZE_S) FOOTPRINT(Castform) OVERWORLD( @@ -9372,6 +9498,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Kecleon, .iconSprite = gMonIcon_Kecleon, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(2, 8, SHADOW_SIZE_S) FOOTPRINT(Kecleon) OVERWORLD( @@ -9451,6 +9578,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Shuppet, .iconSprite = gMonIcon_Shuppet, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(2, 12, SHADOW_SIZE_S) FOOTPRINT(Shuppet) OVERWORLD( @@ -9529,6 +9657,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Banette, .iconSprite = gMonIcon_Banette, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 7, SHADOW_SIZE_S) FOOTPRINT(Banette) OVERWORLD( @@ -9595,6 +9724,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_BanetteMega, .iconSprite = gMonIcon_BanetteMega, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 16, SHADOW_SIZE_M) FOOTPRINT(Banette) #if OW_BATTLE_ONLY_FORMS @@ -9678,6 +9808,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Duskull, .iconSprite = gMonIcon_Duskull, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 12, SHADOW_SIZE_S) FOOTPRINT(Duskull) OVERWORLD( @@ -9755,6 +9886,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Dusclops, .iconSprite = gMonIcon_Dusclops, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-2, 8, SHADOW_SIZE_M) FOOTPRINT(Dusclops) OVERWORLD( @@ -9768,7 +9900,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = ) .levelUpLearnset = sDusclopsLevelUpLearnset, .teachableLearnset = sDusclopsTeachableLearnset, - .evolutions = EVOLUTION({EVO_TRADE_ITEM, ITEM_REAPER_CLOTH, SPECIES_DUSKNOIR}, + .evolutions = EVOLUTION({EVO_TRADE, 0, SPECIES_DUSKNOIR, CONDITIONS({IF_HOLD_ITEM, ITEM_REAPER_CLOTH})}, {EVO_ITEM, ITEM_REAPER_CLOTH, SPECIES_DUSKNOIR}), }, @@ -9844,6 +9976,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Dusknoir, .iconSprite = gMonIcon_Dusknoir, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(6, 13, SHADOW_SIZE_M) FOOTPRINT(Dusknoir) OVERWORLD( @@ -9919,6 +10052,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Tropius, .iconSprite = gMonIcon_Tropius, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-6, 13, SHADOW_SIZE_L) FOOTPRINT(Tropius) OVERWORLD( @@ -9995,6 +10129,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Chingling, .iconSprite = gMonIcon_Chingling, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, -2, SHADOW_SIZE_S) FOOTPRINT(Chingling) OVERWORLD( @@ -10009,7 +10144,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .levelUpLearnset = sChinglingLevelUpLearnset, .teachableLearnset = sChinglingTeachableLearnset, .eggMoveLearnset = sChinglingEggMoveLearnset, - .evolutions = EVOLUTION({EVO_FRIENDSHIP_NIGHT, 0, SPECIES_CHIMECHO}), + .evolutions = EVOLUTION({EVO_LEVEL, 0, SPECIES_CHIMECHO, CONDITIONS({IF_MIN_FRIENDSHIP, FRIENDSHIP_EVO_THRESHOLD},{IF_TIME, TIME_NIGHT})}), }, #endif //P_GEN_4_CROSS_EVOS @@ -10079,6 +10214,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Chimecho, .iconSprite = gMonIcon_Chimecho, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-3, 16, SHADOW_SIZE_S) FOOTPRINT(Chimecho) OVERWORLD( @@ -10156,6 +10292,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Absol, .iconSprite = gMonIcon_Absol, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(4, 6, SHADOW_SIZE_L) FOOTPRINT(Absol) OVERWORLD( @@ -10223,6 +10360,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_AbsolMega, .iconSprite = gMonIcon_AbsolMega, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 7, SHADOW_SIZE_L) FOOTPRINT(Absol) #if OW_BATTLE_ONLY_FORMS @@ -10306,6 +10444,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Snorunt, .iconSprite = gMonIcon_Snorunt, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(1, 2, SHADOW_SIZE_S) FOOTPRINT(Snorunt) OVERWORLD( @@ -10321,7 +10460,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .teachableLearnset = sSnoruntTeachableLearnset, .eggMoveLearnset = sSnoruntEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 42, SPECIES_GLALIE}, - {EVO_ITEM_FEMALE, ITEM_DAWN_STONE, SPECIES_FROSLASS}), + {EVO_ITEM, ITEM_DAWN_STONE, SPECIES_FROSLASS, CONDITIONS({IF_GENDER, MON_FEMALE})}), }, [SPECIES_GLALIE] = @@ -10382,6 +10521,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Glalie, .iconSprite = gMonIcon_Glalie, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 15, SHADOW_SIZE_M) FOOTPRINT(Glalie) OVERWORLD( @@ -10447,6 +10587,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_GlalieMega, .iconSprite = gMonIcon_GlalieMega, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(3, 18, SHADOW_SIZE_L) FOOTPRINT(Glalie) #if OW_BATTLE_ONLY_FORMS @@ -10521,6 +10662,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Froslass, .iconSprite = gMonIcon_Froslass, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 10, SHADOW_SIZE_S) FOOTPRINT(Froslass) OVERWORLD( @@ -10600,6 +10742,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Spheal, .iconSprite = gMonIcon_Spheal, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, -1, SHADOW_SIZE_M) FOOTPRINT(Spheal) OVERWORLD( @@ -10674,6 +10817,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Sealeo, .iconSprite = gMonIcon_Sealeo, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 2, SHADOW_SIZE_L) FOOTPRINT(Sealeo) OVERWORLD( @@ -10753,6 +10897,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Walrein, .iconSprite = gMonIcon_Walrein, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 8, SHADOW_SIZE_L) FOOTPRINT(Walrein) OVERWORLD( @@ -10825,6 +10970,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Clamperl, .iconSprite = gMonIcon_Clamperl, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(-1, 1, SHADOW_SIZE_M) FOOTPRINT(Clamperl) OVERWORLD( @@ -10839,8 +10985,8 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .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}, + .evolutions = EVOLUTION({EVO_TRADE, 0, SPECIES_HUNTAIL, CONDITIONS({IF_HOLD_ITEM, ITEM_DEEP_SEA_TOOTH})}, + {EVO_TRADE, 0, SPECIES_GOREBYSS, CONDITIONS({IF_HOLD_ITEM, ITEM_DEEP_SEA_SCALE})}, {EVO_ITEM, ITEM_DEEP_SEA_TOOTH, SPECIES_HUNTAIL}, {EVO_ITEM, ITEM_DEEP_SEA_SCALE, SPECIES_GOREBYSS}), }, @@ -10900,6 +11046,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Huntail, .iconSprite = gMonIcon_Huntail, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(2, 7, SHADOW_SIZE_L) FOOTPRINT(Huntail) OVERWORLD( @@ -10969,6 +11116,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Gorebyss, .iconSprite = gMonIcon_Gorebyss, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 5, SHADOW_SIZE_M) FOOTPRINT(Gorebyss) OVERWORLD( @@ -11047,6 +11195,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backPicFemale = gMonBackPic_RelicanthF, .backPicSizeFemale = MON_COORDS_SIZE(64, 40), #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 3, SHADOW_SIZE_M) FOOTPRINT(Relicanth) OVERWORLD( @@ -11126,6 +11275,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Luvdisc, .iconSprite = gMonIcon_Luvdisc, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 0, SHADOW_SIZE_S) FOOTPRINT(Luvdisc) OVERWORLD( @@ -11198,6 +11348,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Bagon, .iconSprite = gMonIcon_Bagon, .iconPalIndex = P_GBA_STYLE_SPECIES_ICONS ? 2 : 0, + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(4, 3, SHADOW_SIZE_S) FOOTPRINT(Bagon) OVERWORLD( @@ -11269,6 +11420,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Shelgon, .iconSprite = gMonIcon_Shelgon, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 2, SHADOW_SIZE_M) FOOTPRINT(Shelgon) OVERWORLD( @@ -11346,6 +11498,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Salamence, .iconSprite = gMonIcon_Salamence, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(3, 8, SHADOW_SIZE_L) FOOTPRINT(Salamence) OVERWORLD( @@ -11412,6 +11565,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_SalamenceMega, .iconSprite = gMonIcon_SalamenceMega, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(3, 8, SHADOW_SIZE_L) FOOTPRINT(Salamence) #if OW_BATTLE_ONLY_FORMS @@ -11490,6 +11644,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Beldum, .iconSprite = gMonIcon_Beldum, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 4, SHADOW_SIZE_S) FOOTPRINT(Beldum) OVERWORLD( @@ -11561,6 +11716,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Metang, .iconSprite = gMonIcon_Metang, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 2, SHADOW_SIZE_M) FOOTPRINT(Metang) OVERWORLD( @@ -11637,6 +11793,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Metagross, .iconSprite = gMonIcon_Metagross, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(2, -2, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Metagross) OVERWORLD( @@ -11703,6 +11860,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_MetagrossMega, .iconSprite = gMonIcon_MetagrossMega, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 15, SHADOW_SIZE_L) FOOTPRINT(Metagross) #if OW_BATTLE_ONLY_FORMS @@ -11786,6 +11944,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Regirock, .iconSprite = gMonIcon_Regirock, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 10, SHADOW_SIZE_L) FOOTPRINT(Regirock) OVERWORLD( @@ -11864,6 +12023,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Regice, .iconSprite = gMonIcon_Regice, .iconPalIndex = P_GBA_STYLE_SPECIES_ICONS ? 2 : 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 10, SHADOW_SIZE_L) FOOTPRINT(Regice) OVERWORLD( @@ -11943,6 +12103,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Registeel, .iconSprite = gMonIcon_Registeel, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(4, 8, SHADOW_SIZE_L) FOOTPRINT(Registeel) OVERWORLD( @@ -12022,6 +12183,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Latias, .iconSprite = gMonIcon_Latias, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(3, 15, SHADOW_SIZE_M) FOOTPRINT(Latias) OVERWORLD( @@ -12090,6 +12252,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_LatiasMega, .iconSprite = gMonIcon_LatiasMega, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 19, SHADOW_SIZE_L) FOOTPRINT(Latias) #if OW_BATTLE_ONLY_FORMS @@ -12175,6 +12338,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Latios, .iconSprite = gMonIcon_Latios, .iconPalIndex = P_GBA_STYLE_SPECIES_ICONS ? 2 : 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 17, SHADOW_SIZE_M) FOOTPRINT(Latios) OVERWORLD( @@ -12243,6 +12407,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_LatiosMega, .iconSprite = gMonIcon_LatiosMega, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 19, SHADOW_SIZE_L) FOOTPRINT(Latios) #if OW_BATTLE_ONLY_FORMS @@ -12328,6 +12493,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Kyogre, .iconSprite = gMonIcon_Kyogre, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 11, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Kyogre) OVERWORLD( @@ -12395,6 +12561,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_KyogrePrimal, .iconSprite = gMonIcon_KyogrePrimal, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 11, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Kyogre) #if OW_BATTLE_ONLY_FORMS @@ -12480,6 +12647,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Groudon, .iconSprite = gMonIcon_Groudon, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(2, 11, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Groudon) OVERWORLD( @@ -12548,6 +12716,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_GroudonPrimal, .iconSprite = gMonIcon_GroudonPrimal, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(2, 11, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Groudon) #if OW_BATTLE_ONLY_FORMS @@ -12636,6 +12805,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Rayquaza, .iconSprite = gMonIcon_Rayquaza, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 17, SHADOW_SIZE_L) FOOTPRINT(Rayquaza) OVERWORLD( @@ -12706,6 +12876,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_RayquazaMega, .iconSprite = gMonIcon_RayquazaMega, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 15, SHADOW_SIZE_L) FOOTPRINT(Rayquaza) #if OW_BATTLE_ONLY_FORMS @@ -12799,6 +12970,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_Jirachi, .iconSprite = gMonIcon_Jirachi, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 12, SHADOW_SIZE_S) FOOTPRINT(Jirachi) OVERWORLD( @@ -12878,6 +13050,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_DeoxysNormal, .iconSprite = gMonIcon_DeoxysNormal, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 14, SHADOW_SIZE_M) FOOTPRINT(Deoxys) OVERWORLD( @@ -12948,6 +13121,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_DeoxysAttack, .iconSprite = gMonIcon_DeoxysAttack, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 14, SHADOW_SIZE_M) OVERWORLD( sPicTable_DeoxysAttack, @@ -13017,6 +13191,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_DeoxysDefense, .iconSprite = gMonIcon_DeoxysDefense, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 13, SHADOW_SIZE_M) FOOTPRINT(Deoxys) OVERWORLD( @@ -13087,6 +13262,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .shinyPalette = gMonShinyPalette_DeoxysSpeed, .iconSprite = gMonIcon_DeoxysSpeed, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(3, 13, SHADOW_SIZE_M) FOOTPRINT(Deoxys) OVERWORLD( diff --git a/src/data/pokemon/species_info/gen_4_families.h b/src/data/pokemon/species_info/gen_4_families.h index a6d6302012..84edb98987 100644 --- a/src/data/pokemon/species_info/gen_4_families.h +++ b/src/data/pokemon/species_info/gen_4_families.h @@ -55,6 +55,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .shinyPalette = gMonShinyPalette_Turtwig, .iconSprite = gMonIcon_Turtwig, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, SHADOW(1, 2, SHADOW_SIZE_S) FOOTPRINT(Turtwig) OVERWORLD( @@ -124,6 +125,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .shinyPalette = gMonShinyPalette_Grotle, .iconSprite = gMonIcon_Grotle, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 2, SHADOW_SIZE_L) FOOTPRINT(Grotle) OVERWORLD( @@ -198,6 +200,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .shinyPalette = gMonShinyPalette_Torterra, .iconSprite = gMonIcon_Torterra, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 10, SHADOW_SIZE_L) FOOTPRINT(Torterra) OVERWORLD( @@ -270,6 +273,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .shinyPalette = gMonShinyPalette_Chimchar, .iconSprite = gMonIcon_Chimchar, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(4, 3, SHADOW_SIZE_S) FOOTPRINT(Chimchar) OVERWORLD( @@ -342,6 +346,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .shinyPalette = gMonShinyPalette_Monferno, .iconSprite = gMonIcon_Monferno, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-7, 6, SHADOW_SIZE_S) FOOTPRINT(Monferno) OVERWORLD( @@ -417,6 +422,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .shinyPalette = gMonShinyPalette_Infernape, .iconSprite = gMonIcon_Infernape, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 9, SHADOW_SIZE_L) FOOTPRINT(Infernape) OVERWORLD( @@ -489,6 +495,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .shinyPalette = gMonShinyPalette_Piplup, .iconSprite = gMonIcon_Piplup, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(0, -1, SHADOW_SIZE_S) FOOTPRINT(Piplup) OVERWORLD( @@ -567,6 +574,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .shinyPalette = gMonShinyPalette_Prinplup, .iconSprite = gMonIcon_Prinplup, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 7, SHADOW_SIZE_M) FOOTPRINT(Prinplup) OVERWORLD( @@ -644,6 +652,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .shinyPalette = gMonShinyPalette_Empoleon, .iconSprite = gMonIcon_Empoleon, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(2, 12, SHADOW_SIZE_M) FOOTPRINT(Empoleon) OVERWORLD( @@ -724,6 +733,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .backPicFemale = gMonBackPic_StarlyF, .backPicSizeFemale = MON_COORDS_SIZE(56, 48), #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-2, 1, SHADOW_SIZE_S) FOOTPRINT(Starly) OVERWORLD( @@ -804,6 +814,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .backPicFemale = gMonBackPic_StaraviaF, .backPicSizeFemale = MON_COORDS_SIZE(64, 64), #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 5, SHADOW_SIZE_S) FOOTPRINT(Staravia) OVERWORLD( @@ -889,6 +900,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .frontPicFemale = gMonFrontPic_StaraptorF, .frontPicSizeFemale = MON_COORDS_SIZE(56, 64), #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 10, SHADOW_SIZE_M) FOOTPRINT(Staraptor) OVERWORLD( @@ -974,6 +986,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .backPicFemale = gMonBackPic_BidoofF, .backPicSizeFemale = MON_COORDS_SIZE(64, 40), #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(1, 1, SHADOW_SIZE_M) FOOTPRINT(Bidoof) OVERWORLD( @@ -1055,6 +1068,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .frontPicFemale = gMonFrontPic_BibarelF, .frontPicSizeFemale = MON_COORDS_SIZE(56, 48), #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-5, 5, SHADOW_SIZE_M) FOOTPRINT(Bibarel) OVERWORLD( @@ -1150,6 +1164,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .backPicFemale = gMonBackPic_KricketotF, .backPicSizeFemale = MON_COORDS_SIZE(48, 56), #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(-5, 2, SHADOW_SIZE_S) FOOTPRINT(Kricketot) OVERWORLD( @@ -1236,6 +1251,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .backPicFemale = gMonBackPic_KricketuneF, .backPicSizeFemale = MON_COORDS_SIZE(56, 64), #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-3, 6, SHADOW_SIZE_S) FOOTPRINT(Kricketune) OVERWORLD( @@ -1317,6 +1333,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .backPicFemale = gMonBackPic_ShinxF, .backPicSizeFemale = MON_COORDS_SIZE(64, 48), #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(-1, 1, SHADOW_SIZE_S) FOOTPRINT(Shinx) OVERWORLD( @@ -1397,6 +1414,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .backPicFemale = gMonBackPic_LuxioF, .backPicSizeFemale = MON_COORDS_SIZE(64, 64), #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-4, 2, SHADOW_SIZE_M) FOOTPRINT(Luxio) OVERWORLD( @@ -1485,6 +1503,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .backPicFemale = gMonBackPic_LuxrayF, .backPicSizeFemale = MON_COORDS_SIZE(64, 64), #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 10, SHADOW_SIZE_L) FOOTPRINT(Luxray) OVERWORLD( @@ -1559,6 +1578,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .shinyPalette = gMonShinyPalette_Cranidos, .iconSprite = gMonIcon_Cranidos, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(4, 4, SHADOW_SIZE_S) FOOTPRINT(Cranidos) OVERWORLD( @@ -1629,6 +1649,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .shinyPalette = gMonShinyPalette_Rampardos, .iconSprite = gMonIcon_Rampardos, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(7, 11, SHADOW_SIZE_L) FOOTPRINT(Rampardos) OVERWORLD( @@ -1697,6 +1718,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .shinyPalette = gMonShinyPalette_Shieldon, .iconSprite = gMonIcon_Shieldon, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, SHADOW(3, -1, SHADOW_SIZE_S) FOOTPRINT(Shieldon) OVERWORLD( @@ -1765,6 +1787,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .shinyPalette = gMonShinyPalette_Bastiodon, .iconSprite = gMonIcon_Bastiodon, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 6, SHADOW_SIZE_L) FOOTPRINT(Bastiodon) OVERWORLD( @@ -1830,6 +1853,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .shinyPalette = gMonShinyPalette_BurmyPlant, .iconSprite = gMonIcon_BurmyPlant, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 8, SHADOW_SIZE_S) FOOTPRINT(Burmy) OVERWORLD( @@ -1846,8 +1870,8 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .teachableLearnset = sBurmyTeachableLearnset, .formSpeciesIdTable = sBurmyFormSpeciesIdTable, .formChangeTable = sBurmyFormChangeTable, - .evolutions = EVOLUTION({EVO_LEVEL_FEMALE, 20, SPECIES_WORMADAM_PLANT}, - {EVO_LEVEL_MALE, 20, SPECIES_MOTHIM_PLANT}), + .evolutions = EVOLUTION({EVO_LEVEL, 20, SPECIES_WORMADAM_PLANT, CONDITIONS({IF_GENDER, MON_FEMALE})}, + {EVO_LEVEL, 20, SPECIES_MOTHIM_PLANT, CONDITIONS({IF_GENDER, MON_MALE})}), }, [SPECIES_BURMY_SANDY] = @@ -1898,6 +1922,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .shinyPalette = gMonShinyPalette_BurmySandy, .iconSprite = gMonIcon_BurmySandy, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 9, SHADOW_SIZE_S) FOOTPRINT(Burmy) OVERWORLD( @@ -1914,8 +1939,8 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .teachableLearnset = sBurmyTeachableLearnset, .formSpeciesIdTable = sBurmyFormSpeciesIdTable, .formChangeTable = sBurmyFormChangeTable, - .evolutions = EVOLUTION({EVO_LEVEL_FEMALE, 20, SPECIES_WORMADAM_SANDY}, - {EVO_LEVEL_MALE, 20, SPECIES_MOTHIM_SANDY}), + .evolutions = EVOLUTION({EVO_LEVEL, 20, SPECIES_WORMADAM_SANDY, CONDITIONS({IF_GENDER, MON_FEMALE})}, + {EVO_LEVEL, 20, SPECIES_MOTHIM_SANDY, CONDITIONS({IF_GENDER, MON_MALE})}), }, [SPECIES_BURMY_TRASH] = @@ -1966,6 +1991,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .shinyPalette = gMonShinyPalette_BurmyTrash, .iconSprite = gMonIcon_BurmyTrash, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 13, SHADOW_SIZE_S) FOOTPRINT(Burmy) OVERWORLD( @@ -1982,8 +2008,8 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .teachableLearnset = sBurmyTeachableLearnset, .formSpeciesIdTable = sBurmyFormSpeciesIdTable, .formChangeTable = sBurmyFormChangeTable, - .evolutions = EVOLUTION({EVO_LEVEL_FEMALE, 20, SPECIES_WORMADAM_TRASH}, - {EVO_LEVEL_MALE, 20, SPECIES_MOTHIM_TRASH}), + .evolutions = EVOLUTION({EVO_LEVEL, 20, SPECIES_WORMADAM_TRASH, CONDITIONS({IF_GENDER, MON_FEMALE})}, + {EVO_LEVEL, 20, SPECIES_MOTHIM_TRASH, CONDITIONS({IF_GENDER, MON_MALE})}), }, [SPECIES_WORMADAM_PLANT] = @@ -2035,6 +2061,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .shinyPalette = gMonShinyPalette_WormadamPlant, .iconSprite = gMonIcon_WormadamPlant, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 9, SHADOW_SIZE_S) FOOTPRINT(Wormadam) OVERWORLD( @@ -2100,6 +2127,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .shinyPalette = gMonShinyPalette_WormadamSandy, .iconSprite = gMonIcon_WormadamSandy, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 9, SHADOW_SIZE_S) FOOTPRINT(Wormadam) OVERWORLD( @@ -2166,6 +2194,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .shinyPalette = gMonShinyPalette_WormadamTrash, .iconSprite = gMonIcon_WormadamTrash, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 9, SHADOW_SIZE_S) FOOTPRINT(Wormadam) OVERWORLD( @@ -2228,6 +2257,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .shinyPalette = gMonShinyPalette_Mothim, \ .iconSprite = gMonIcon_Mothim, \ .iconPalIndex = 0, \ + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, \ SHADOW(-1, 9, SHADOW_SIZE_S) \ FOOTPRINT(Mothim) \ OVERWORLD( \ @@ -2311,6 +2341,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .paletteFemale = gMonPalette_CombeeF, .shinyPaletteFemale = gMonShinyPalette_CombeeF, #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-4, 10, SHADOW_SIZE_S) FOOTPRINT(Combee) OVERWORLD( @@ -2332,7 +2363,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .tmIlliterate = TRUE, .levelUpLearnset = sCombeeLevelUpLearnset, .teachableLearnset = sCombeeTeachableLearnset, - .evolutions = EVOLUTION({EVO_LEVEL_FEMALE, 21, SPECIES_VESPIQUEN}), + .evolutions = EVOLUTION({EVO_LEVEL, 21, SPECIES_VESPIQUEN, CONDITIONS({IF_GENDER, MON_FEMALE})}), }, [SPECIES_VESPIQUEN] = @@ -2395,6 +2426,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .shinyPalette = gMonShinyPalette_Vespiquen, .iconSprite = gMonIcon_Vespiquen, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 11, SHADOW_SIZE_L) FOOTPRINT(Vespiquen) OVERWORLD( @@ -2473,6 +2505,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .frontPicFemale = gMonFrontPic_PachirisuF, .frontPicSizeFemale = MON_COORDS_SIZE(48, 56), #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(-2, 1, SHADOW_SIZE_S) FOOTPRINT(Pachirisu) OVERWORLD( @@ -2553,6 +2586,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .backPicFemale = gMonBackPic_BuizelF, .backPicSizeFemale = MON_COORDS_SIZE(64, 48), #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(1, 4, SHADOW_SIZE_S) FOOTPRINT(Buizel) OVERWORLD( @@ -2635,6 +2669,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .backPicFemale = gMonBackPic_FloatzelF, .backPicSizeFemale = MON_COORDS_SIZE(64, 64), #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-4, 10, SHADOW_SIZE_M) FOOTPRINT(Floatzel) OVERWORLD( @@ -2717,6 +2752,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .shinyPalette = gMonShinyPalette_Cherubi, .iconSprite = gMonIcon_Cherubi, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(-4, -2, SHADOW_SIZE_S) FOOTPRINT(Cherubi) OVERWORLD( @@ -2788,6 +2824,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .shinyPalette = gMonShinyPalette_CherrimOvercast, .iconSprite = gMonIcon_CherrimOvercast, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(0, 6, SHADOW_SIZE_S) FOOTPRINT(Cherrim) OVERWORLD( @@ -2860,6 +2897,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .shinyPalette = gMonShinyPalette_CherrimSunshine, .iconSprite = gMonIcon_CherrimSunshine, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(1, 2, SHADOW_SIZE_S) FOOTPRINT(Cherrim) .levelUpLearnset = sCherrimLevelUpLearnset, @@ -2917,6 +2955,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .shinyPalette = gMonShinyPalette_ShellosWestSea, .iconSprite = gMonIcon_ShellosWestSea, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, SHADOW(1, 0, SHADOW_SIZE_S) FOOTPRINT(Shellos) OVERWORLD( @@ -2982,6 +3021,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .shinyPalette = gMonShinyPalette_ShellosEast, .iconSprite = gMonIcon_ShellosEast, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, SHADOW(2, -1, SHADOW_SIZE_S) FOOTPRINT(Shellos) OVERWORLD( @@ -3047,6 +3087,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .shinyPalette = gMonShinyPalette_GastrodonWestSea, .iconSprite = gMonIcon_GastrodonWestSea, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 3, SHADOW_SIZE_M) FOOTPRINT(Gastrodon) OVERWORLD( @@ -3110,6 +3151,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .shinyPalette = gMonShinyPalette_GastrodonEast, .iconSprite = gMonIcon_GastrodonEast, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(2, 4, SHADOW_SIZE_M) FOOTPRINT(Gastrodon) OVERWORLD( @@ -3181,6 +3223,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .shinyPalette = gMonShinyPalette_Drifloon, .iconSprite = gMonIcon_Drifloon, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 9, SHADOW_SIZE_S) FOOTPRINT(Drifloon) OVERWORLD( @@ -3253,6 +3296,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .shinyPalette = gMonShinyPalette_Drifblim, .iconSprite = gMonIcon_Drifblim, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 11, SHADOW_SIZE_M) FOOTPRINT(Drifblim) OVERWORLD( @@ -3320,6 +3364,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .shinyPalette = gMonShinyPalette_Buneary, .iconSprite = gMonIcon_Buneary, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(3, 5, SHADOW_SIZE_S) FOOTPRINT(Buneary) OVERWORLD( @@ -3334,7 +3379,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .levelUpLearnset = sBunearyLevelUpLearnset, .teachableLearnset = sBunearyTeachableLearnset, .eggMoveLearnset = sBunearyEggMoveLearnset, - .evolutions = EVOLUTION({EVO_FRIENDSHIP, 0, SPECIES_LOPUNNY}), + .evolutions = EVOLUTION({EVO_LEVEL, 0, SPECIES_LOPUNNY, CONDITIONS({IF_MIN_FRIENDSHIP, FRIENDSHIP_EVO_THRESHOLD})}), }, [SPECIES_LOPUNNY] = @@ -3388,6 +3433,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .shinyPalette = gMonShinyPalette_Lopunny, .iconSprite = gMonIcon_Lopunny, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 10, SHADOW_SIZE_S) FOOTPRINT(Lopunny) OVERWORLD( @@ -3453,6 +3499,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .shinyPalette = gMonShinyPalette_LopunnyMega, .iconSprite = gMonIcon_LopunnyMega, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 13, SHADOW_SIZE_S) FOOTPRINT(Lopunny) #if OW_BATTLE_ONLY_FORMS @@ -3527,6 +3574,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .shinyPalette = gMonShinyPalette_Glameow, .iconSprite = gMonIcon_Glameow, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(-3, 6, SHADOW_SIZE_S) FOOTPRINT(Glameow) OVERWORLD( @@ -3599,6 +3647,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .shinyPalette = gMonShinyPalette_Purugly, .iconSprite = gMonIcon_Purugly, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(4, 8, SHADOW_SIZE_L) FOOTPRINT(Purugly) OVERWORLD( @@ -3669,6 +3718,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .shinyPalette = gMonShinyPalette_Stunky, .iconSprite = gMonIcon_Stunky, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(-1, 0, SHADOW_SIZE_M) FOOTPRINT(Stunky) OVERWORLD( @@ -3737,6 +3787,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .shinyPalette = gMonShinyPalette_Skuntank, .iconSprite = gMonIcon_Skuntank, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-3, 6, SHADOW_SIZE_L) FOOTPRINT(Skuntank) OVERWORLD( @@ -3814,6 +3865,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .shinyPalette = gMonShinyPalette_Bronzor, .iconSprite = gMonIcon_Bronzor, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 6, SHADOW_SIZE_S) FOOTPRINT(Bronzor) OVERWORLD( @@ -3886,6 +3938,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .shinyPalette = gMonShinyPalette_Bronzong, .iconSprite = gMonIcon_Bronzong, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(5, 12, SHADOW_SIZE_M) FOOTPRINT(Bronzong) OVERWORLD( @@ -3968,6 +4021,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .shinyPalette = gMonShinyPalette_Chatot, .iconSprite = gMonIcon_Chatot, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 3, SHADOW_SIZE_S) FOOTPRINT(Chatot) OVERWORLD( @@ -4037,6 +4091,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .shinyPalette = gMonShinyPalette_Spiritomb, .iconSprite = gMonIcon_Spiritomb, .iconPalIndex = 5, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 7, SHADOW_SIZE_L) FOOTPRINT(Spiritomb) OVERWORLD( @@ -4112,6 +4167,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .backPicFemale = gMonBackPic_GibleF, .backPicSizeFemale = MON_COORDS_SIZE(56, 48), #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(1, 5, SHADOW_SIZE_M) FOOTPRINT(Gible) OVERWORLD( @@ -4192,6 +4248,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .backPicFemale = gMonBackPic_GabiteF, .backPicSizeFemale = MON_COORDS_SIZE(64, 64), #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(3, 8, SHADOW_SIZE_M) FOOTPRINT(Gabite) OVERWORLD( @@ -4279,6 +4336,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .frontPicFemale = gMonFrontPic_GarchompF, .frontPicSizeFemale = MON_COORDS_SIZE(64, 64), #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(5, 11, SHADOW_SIZE_L) FOOTPRINT(Garchomp) OVERWORLD( @@ -4351,6 +4409,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .shinyPalette = gMonShinyPalette_GarchompMega, .iconSprite = gMonIcon_GarchompMega, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 12, SHADOW_SIZE_L) FOOTPRINT(Garchomp) #if OW_BATTLE_ONLY_FORMS @@ -4426,6 +4485,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .shinyPalette = gMonShinyPalette_Riolu, .iconSprite = gMonIcon_Riolu, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(3, 3, SHADOW_SIZE_S) FOOTPRINT(Riolu) OVERWORLD( @@ -4440,7 +4500,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .levelUpLearnset = sRioluLevelUpLearnset, .teachableLearnset = sRioluTeachableLearnset, .eggMoveLearnset = sRioluEggMoveLearnset, - .evolutions = EVOLUTION({EVO_FRIENDSHIP_DAY, 0, SPECIES_LUCARIO}), + .evolutions = EVOLUTION({EVO_LEVEL, 0, SPECIES_LUCARIO, CONDITIONS({IF_MIN_FRIENDSHIP, FRIENDSHIP_EVO_THRESHOLD},{IF_NOT_TIME, TIME_NIGHT})}), }, [SPECIES_LUCARIO] = @@ -4494,6 +4554,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .shinyPalette = gMonShinyPalette_Lucario, .iconSprite = gMonIcon_Lucario, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 7, SHADOW_SIZE_M) FOOTPRINT(Lucario) OVERWORLD( @@ -4560,6 +4621,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .shinyPalette = gMonShinyPalette_LucarioMega, .iconSprite = gMonIcon_LucarioMega, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 11, SHADOW_SIZE_M) FOOTPRINT(Lucario) #if OW_BATTLE_ONLY_FORMS @@ -4642,6 +4704,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconPalIndexFemale = 1, #endif #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(2, -1, SHADOW_SIZE_L) FOOTPRINT(Hippopotas) OVERWORLD( @@ -4724,6 +4787,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconPalIndexFemale = 1, #endif #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, NO_SHADOW FOOTPRINT(Hippowdon) OVERWORLD( @@ -4810,6 +4874,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .shinyPalette = gMonShinyPalette_Skorupi, .iconSprite = gMonIcon_Skorupi, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-2, 3, SHADOW_SIZE_S) FOOTPRINT(Skorupi) OVERWORLD( @@ -4885,6 +4950,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .shinyPalette = gMonShinyPalette_Drapion, .iconSprite = gMonIcon_Drapion, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-3, 6, SHADOW_SIZE_L) FOOTPRINT(Drapion) OVERWORLD( @@ -4961,6 +5027,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .backPicFemale = gMonBackPic_CroagunkF, .backPicSizeFemale = MON_COORDS_SIZE(56, 56), #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(2, 4, SHADOW_SIZE_S) FOOTPRINT(Croagunk) OVERWORLD( @@ -5045,6 +5112,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .backPicFemale = gMonBackPic_ToxicroakF, .backPicSizeFemale = MON_COORDS_SIZE(56, 56), #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(3, 7, SHADOW_SIZE_M) FOOTPRINT(Toxicroak) OVERWORLD( @@ -5130,6 +5198,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .shinyPalette = gMonShinyPalette_Carnivine, .iconSprite = gMonIcon_Carnivine, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 9, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Carnivine) OVERWORLD( @@ -5210,6 +5279,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .backPicFemale = gMonBackPic_FinneonF, .backPicSizeFemale = MON_COORDS_SIZE(56, 40), #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 1, SHADOW_SIZE_S) FOOTPRINT(Finneon) OVERWORLD( @@ -5294,6 +5364,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .backPicFemale = gMonBackPic_LumineonF, .backPicSizeFemale = MON_COORDS_SIZE(56, 64), #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 8, SHADOW_SIZE_M) FOOTPRINT(Lumineon) OVERWORLD( @@ -5376,6 +5447,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .backPicFemale = gMonBackPic_SnoverF, .backPicSizeFemale = MON_COORDS_SIZE(64, 56), #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 4, SHADOW_SIZE_M) FOOTPRINT(Snover) OVERWORLD( @@ -5457,6 +5529,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .frontPicFemale = gMonFrontPic_AbomasnowF, .frontPicSizeFemale = MON_COORDS_SIZE(64, 64), #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 11, SHADOW_SIZE_L) FOOTPRINT(Abomasnow) OVERWORLD( @@ -5531,6 +5604,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .shinyPalette = gMonShinyPalette_AbomasnowMega, .iconSprite = gMonIcon_AbomasnowMega, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 12, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Abomasnow) #if OW_BATTLE_ONLY_FORMS @@ -5609,6 +5683,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .shinyPalette = gMonShinyPalette_Rotom, .iconSprite = gMonIcon_Rotom, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 10, SHADOW_SIZE_S) FOOTPRINT(Rotom) OVERWORLD( @@ -5687,6 +5762,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .shinyPalette = gMonShinyPalette_RotomHeat, .iconSprite = gMonIcon_RotomHeat, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 7, SHADOW_SIZE_M) FOOTPRINT(Rotom) OVERWORLD( @@ -5758,6 +5834,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .shinyPalette = gMonShinyPalette_RotomWash, .iconSprite = gMonIcon_RotomWash, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 10, SHADOW_SIZE_M) FOOTPRINT(Rotom) OVERWORLD( @@ -5827,6 +5904,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .shinyPalette = gMonShinyPalette_RotomFrost, .iconSprite = gMonIcon_RotomFrost, .iconPalIndex = 5, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 13, SHADOW_SIZE_M) FOOTPRINT(Rotom) OVERWORLD( @@ -5921,6 +5999,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .shinyPalette = gMonShinyPalette_RotomFan, .iconSprite = gMonIcon_RotomFan, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(4, 9, SHADOW_SIZE_S) FOOTPRINT(Rotom) OVERWORLD( @@ -5993,6 +6072,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .shinyPalette = gMonShinyPalette_RotomMow, .iconSprite = gMonIcon_RotomMow, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(2, 14, SHADOW_SIZE_M) FOOTPRINT(Rotom) OVERWORLD( @@ -6071,6 +6151,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .shinyPalette = gMonShinyPalette_Uxie, .iconSprite = gMonIcon_Uxie, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(2, 11, SHADOW_SIZE_S) FOOTPRINT(Uxie) OVERWORLD( @@ -6155,6 +6236,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .shinyPalette = gMonShinyPalette_Mesprit, .iconSprite = gMonIcon_Mesprit, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 13, SHADOW_SIZE_S) FOOTPRINT(Mesprit) OVERWORLD( @@ -6233,6 +6315,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .shinyPalette = gMonShinyPalette_Azelf, .iconSprite = gMonIcon_Azelf, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 17, SHADOW_SIZE_S) FOOTPRINT(Azelf) OVERWORLD( @@ -6310,6 +6393,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .shinyPalette = gMonShinyPalette_Dialga, .iconSprite = gMonIcon_Dialga, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(4, 12, SHADOW_SIZE_L) FOOTPRINT(Dialga) OVERWORLD( @@ -6377,6 +6461,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .shinyPalette = gMonShinyPalette_DialgaOrigin, .iconSprite = gMonIcon_DialgaOrigin, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(2, 11, SHADOW_SIZE_L) FOOTPRINT(Dialga) OVERWORLD( @@ -6457,6 +6542,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .shinyPalette = gMonShinyPalette_Palkia, .iconSprite = gMonIcon_Palkia, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 10, SHADOW_SIZE_L) FOOTPRINT(Palkia) OVERWORLD( @@ -6524,6 +6610,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .shinyPalette = gMonShinyPalette_PalkiaOrigin, .iconSprite = gMonIcon_PalkiaOrigin, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-3, 14, SHADOW_SIZE_L) FOOTPRINT(Palkia) OVERWORLD( @@ -6603,6 +6690,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .shinyPalette = gMonShinyPalette_Heatran, .iconSprite = gMonIcon_Heatran, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(2, 2, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Heatran) OVERWORLD( @@ -6678,6 +6766,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .shinyPalette = gMonShinyPalette_Regigigas, .iconSprite = gMonIcon_Regigigas, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(3, 10, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Regigigas) OVERWORLD( @@ -6756,6 +6845,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .shinyPalette = gMonShinyPalette_GiratinaAltered, .iconSprite = gMonIcon_GiratinaAltered, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(3, 11, SHADOW_SIZE_L) FOOTPRINT(GiratinaAltered) OVERWORLD( @@ -6830,6 +6920,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .shinyPalette = gMonShinyPalette_GiratinaOrigin, .iconSprite = gMonIcon_GiratinaOrigin, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 18, SHADOW_SIZE_L) FOOTPRINT(GiratinaOrigin) OVERWORLD( @@ -6913,6 +7004,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .shinyPalette = gMonShinyPalette_Cresselia, .iconSprite = gMonIcon_Cresselia, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-2, 12, SHADOW_SIZE_M) FOOTPRINT(Cresselia) OVERWORLD( @@ -6990,6 +7082,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .shinyPalette = gMonShinyPalette_Phione, .iconSprite = gMonIcon_Phione, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 7, SHADOW_SIZE_S) FOOTPRINT(Phione) OVERWORLD( @@ -7066,6 +7159,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .shinyPalette = gMonShinyPalette_Manaphy, .iconSprite = gMonIcon_Manaphy, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-5, 8, SHADOW_SIZE_S) FOOTPRINT(Manaphy) OVERWORLD( @@ -7145,6 +7239,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .shinyPalette = gMonShinyPalette_Darkrai, .iconSprite = gMonIcon_Darkrai, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(4, 12, SHADOW_SIZE_M) FOOTPRINT(Darkrai) OVERWORLD( @@ -7226,6 +7321,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .shinyPalette = gMonShinyPalette_ShayminLand, .iconSprite = gMonIcon_ShayminLand, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(1, -3, SHADOW_SIZE_S) FOOTPRINT(Shaymin) OVERWORLD( @@ -7304,6 +7400,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .shinyPalette = gMonShinyPalette_ShayminSky, .iconSprite = gMonIcon_ShayminSky, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(3, 7, SHADOW_SIZE_M) FOOTPRINT(Shaymin) OVERWORLD( @@ -7385,6 +7482,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .palette = gMonPalette_Arceus ##typeName, \ .shinyPalette = gMonShinyPalette_Arceus ##typeName, \ ARCEUS_ICON(typeName, iconPal) \ + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, \ SHADOW(-1, 15, SHADOW_SIZE_XL_BATTLE_ONLY) \ FOOTPRINT(Arceus) \ OVERWORLD( \ diff --git a/src/data/pokemon/species_info/gen_5_families.h b/src/data/pokemon/species_info/gen_5_families.h index f1df023cec..9e906e8f85 100644 --- a/src/data/pokemon/species_info/gen_5_families.h +++ b/src/data/pokemon/species_info/gen_5_families.h @@ -55,6 +55,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Victini, .iconSprite = gMonIcon_Victini, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 4, SHADOW_SIZE_S) FOOTPRINT(Victini) OVERWORLD( @@ -126,6 +127,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Snivy, .iconSprite = gMonIcon_Snivy, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(-1, 1, SHADOW_SIZE_S) FOOTPRINT(Snivy) OVERWORLD( @@ -198,6 +200,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Servine, .iconSprite = gMonIcon_Servine, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-2, 7, SHADOW_SIZE_S) FOOTPRINT(Servine) OVERWORLD( @@ -267,6 +270,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Serperior, .iconSprite = gMonIcon_Serperior, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(2, 8, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Serperior) OVERWORLD( @@ -337,6 +341,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Tepig, .iconSprite = gMonIcon_Tepig, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, SHADOW(0, -2, SHADOW_SIZE_S) FOOTPRINT(Tepig) OVERWORLD( @@ -405,6 +410,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Pignite, .iconSprite = gMonIcon_Pignite, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 6, SHADOW_SIZE_M) FOOTPRINT(Pignite) OVERWORLD( @@ -492,6 +498,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Emboar, .iconSprite = gMonIcon_Emboar, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 12, SHADOW_SIZE_L) FOOTPRINT(Emboar) OVERWORLD( @@ -564,6 +571,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Oshawott, .iconSprite = gMonIcon_Oshawott, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(-3, 0, SHADOW_SIZE_S) FOOTPRINT(Oshawott) OVERWORLD( @@ -634,6 +642,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Dewott, .iconSprite = gMonIcon_Dewott, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-2, 6, SHADOW_SIZE_S) FOOTPRINT(Dewott) OVERWORLD( @@ -701,6 +710,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Samurott, .iconSprite = gMonIcon_Samurott, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-2, 13, SHADOW_SIZE_L) FOOTPRINT(Samurott) OVERWORLD( @@ -765,6 +775,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_SamurottHisui, .iconSprite = gMonIcon_SamurottHisui, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-2, 13, SHADOW_SIZE_L) FOOTPRINT(Samurott) OVERWORLD( @@ -835,6 +846,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Patrat, .iconSprite = gMonIcon_Patrat, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(1, 2, SHADOW_SIZE_S) FOOTPRINT(Patrat) OVERWORLD( @@ -907,6 +919,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Watchog, .iconSprite = gMonIcon_Watchog, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-4, 11, SHADOW_SIZE_S) FOOTPRINT(Watchog) OVERWORLD( @@ -979,6 +992,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Lillipup, .iconSprite = gMonIcon_Lillipup, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(2, 1, SHADOW_SIZE_S) FOOTPRINT(Lillipup) OVERWORLD( @@ -1050,6 +1064,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Herdier, .iconSprite = gMonIcon_Herdier, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(3, 5, SHADOW_SIZE_M) FOOTPRINT(Herdier) OVERWORLD( @@ -1125,6 +1140,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Stoutland, .iconSprite = gMonIcon_Stoutland, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-4, 9, SHADOW_SIZE_L) FOOTPRINT(Stoutland) OVERWORLD( @@ -1193,6 +1209,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Purrloin, .iconSprite = gMonIcon_Purrloin, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(0, 2, SHADOW_SIZE_S) FOOTPRINT(Purrloin) OVERWORLD( @@ -1261,6 +1278,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Liepard, .iconSprite = gMonIcon_Liepard, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 11, SHADOW_SIZE_M) FOOTPRINT(Liepard) OVERWORLD( @@ -1331,6 +1349,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Pansage, .iconSprite = gMonIcon_Pansage, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(0, 3, SHADOW_SIZE_S) FOOTPRINT(Pansage) OVERWORLD( @@ -1399,6 +1418,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Simisage, .iconSprite = gMonIcon_Simisage, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-2, 12, SHADOW_SIZE_M) FOOTPRINT(Simisage) OVERWORLD( @@ -1467,6 +1487,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Pansear, .iconSprite = gMonIcon_Pansear, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(1, 3, SHADOW_SIZE_S) FOOTPRINT(Pansear) OVERWORLD( @@ -1538,6 +1559,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Simisear, .iconSprite = gMonIcon_Simisear, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-2, 8, SHADOW_SIZE_M) FOOTPRINT(Simisear) OVERWORLD( @@ -1606,6 +1628,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Panpour, .iconSprite = gMonIcon_Panpour, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(-3, 4, SHADOW_SIZE_S) FOOTPRINT(Panpour) OVERWORLD( @@ -1673,6 +1696,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Simipour, .iconSprite = gMonIcon_Simipour, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 8, SHADOW_SIZE_M) FOOTPRINT(Simipour) OVERWORLD( @@ -1747,6 +1771,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Munna, .iconSprite = gMonIcon_Munna, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 2, SHADOW_SIZE_S) FOOTPRINT(Munna) OVERWORLD( @@ -1818,6 +1843,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Musharna, .iconSprite = gMonIcon_Musharna, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(6, 10, SHADOW_SIZE_M) FOOTPRINT(Musharna) OVERWORLD( @@ -1886,6 +1912,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Pidove, .iconSprite = gMonIcon_Pidove, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-2, 1, SHADOW_SIZE_S) FOOTPRINT(Pidove) OVERWORLD( @@ -1954,6 +1981,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Tranquill, .iconSprite = gMonIcon_Tranquill, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 6, SHADOW_SIZE_S) FOOTPRINT(Tranquill) OVERWORLD( @@ -2037,6 +2065,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSpriteFemale = gMonIcon_UnfezantF, .iconPalIndexFemale = 1, #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-2, 12, SHADOW_SIZE_M) FOOTPRINT(Unfezant) OVERWORLD( @@ -2117,6 +2146,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Blitzle, .iconSprite = gMonIcon_Blitzle, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(3, 9, SHADOW_SIZE_M) FOOTPRINT(Blitzle) OVERWORLD( @@ -2185,6 +2215,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Zebstrika, .iconSprite = gMonIcon_Zebstrika, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-2, 13, SHADOW_SIZE_M) FOOTPRINT(Zebstrika) OVERWORLD( @@ -2259,6 +2290,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Roggenrola, .iconSprite = gMonIcon_Roggenrola, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, SHADOW(-1, 0, SHADOW_SIZE_S) FOOTPRINT(Roggenrola) OVERWORLD( @@ -2337,6 +2369,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Boldore, .iconSprite = gMonIcon_Boldore, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 3, SHADOW_SIZE_L) FOOTPRINT(Boldore) OVERWORLD( @@ -2417,6 +2450,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Gigalith, .iconSprite = gMonIcon_Gigalith, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 8, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Gigalith) OVERWORLD( @@ -2502,6 +2536,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Woobat, .iconSprite = gMonIcon_Woobat, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-2, 14, SHADOW_SIZE_S) FOOTPRINT(Woobat) OVERWORLD( @@ -2516,7 +2551,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .levelUpLearnset = sWoobatLevelUpLearnset, .teachableLearnset = sWoobatTeachableLearnset, .eggMoveLearnset = sWoobatEggMoveLearnset, - .evolutions = EVOLUTION({EVO_FRIENDSHIP, 0, SPECIES_SWOOBAT}), + .evolutions = EVOLUTION({EVO_LEVEL, 0, SPECIES_SWOOBAT, CONDITIONS({IF_MIN_FRIENDSHIP, FRIENDSHIP_EVO_THRESHOLD})}), }, [SPECIES_SWOOBAT] = @@ -2574,6 +2609,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Swoobat, .iconSprite = gMonIcon_Swoobat, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 17, SHADOW_SIZE_M) FOOTPRINT(Swoobat) OVERWORLD( @@ -2645,6 +2681,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Drilbur, .iconSprite = gMonIcon_Drilbur, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(0, 4, SHADOW_SIZE_S) FOOTPRINT(Drilbur) OVERWORLD( @@ -2715,6 +2752,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Excadrill, .iconSprite = gMonIcon_Excadrill, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(3, 8, SHADOW_SIZE_L) FOOTPRINT(Excadrill) OVERWORLD( @@ -2785,6 +2823,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Audino, .iconSprite = gMonIcon_Audino, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 6, SHADOW_SIZE_S) FOOTPRINT(Audino) OVERWORLD( @@ -2853,6 +2892,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_AudinoMega, .iconSprite = gMonIcon_AudinoMega, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 7, SHADOW_SIZE_M) FOOTPRINT(Audino) #if OW_BATTLE_ONLY_FORMS @@ -2928,6 +2968,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Timburr, .iconSprite = gMonIcon_Timburr, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, SHADOW(-4, 2, SHADOW_SIZE_S) FOOTPRINT(Timburr) OVERWORLD( @@ -3000,6 +3041,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Gurdurr, .iconSprite = gMonIcon_Gurdurr, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-2, 14, SHADOW_SIZE_M) FOOTPRINT(Gurdurr) OVERWORLD( @@ -3067,6 +3109,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Conkeldurr, .iconSprite = gMonIcon_Conkeldurr, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 3, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Conkeldurr) OVERWORLD( @@ -3134,6 +3177,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Tympole, .iconSprite = gMonIcon_Tympole, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 0, SHADOW_SIZE_S) FOOTPRINT(Tympole) OVERWORLD( @@ -3204,6 +3248,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Palpitoad, .iconSprite = gMonIcon_Palpitoad, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 3, SHADOW_SIZE_S) FOOTPRINT(Palpitoad) OVERWORLD( @@ -3281,6 +3326,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Seismitoad, .iconSprite = gMonIcon_Seismitoad, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(4, 10, SHADOW_SIZE_L) FOOTPRINT(Seismitoad) OVERWORLD( @@ -3351,6 +3397,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Throh, .iconSprite = gMonIcon_Throh, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(3, 4, SHADOW_SIZE_M) FOOTPRINT(Throh) OVERWORLD( @@ -3420,6 +3467,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Sawk, .iconSprite = gMonIcon_Sawk, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 6, SHADOW_SIZE_M) FOOTPRINT(Sawk) OVERWORLD( @@ -3491,6 +3539,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Sewaddle, .iconSprite = gMonIcon_Sewaddle, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(1, 0, SHADOW_SIZE_S) FOOTPRINT(Sewaddle) OVERWORLD( @@ -3561,6 +3610,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Swadloon, .iconSprite = gMonIcon_Swadloon, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(0, 1, SHADOW_SIZE_L) FOOTPRINT(Swadloon) OVERWORLD( @@ -3574,7 +3624,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = ) .levelUpLearnset = sSwadloonLevelUpLearnset, .teachableLearnset = sSwadloonTeachableLearnset, - .evolutions = EVOLUTION({EVO_FRIENDSHIP, 0, SPECIES_LEAVANNY}), + .evolutions = EVOLUTION({EVO_LEVEL, 0, SPECIES_LEAVANNY, CONDITIONS({IF_MIN_FRIENDSHIP, FRIENDSHIP_EVO_THRESHOLD})}), }, [SPECIES_LEAVANNY] = @@ -3635,6 +3685,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Leavanny, .iconSprite = gMonIcon_Leavanny, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 14, SHADOW_SIZE_S) FOOTPRINT(Leavanny) OVERWORLD( @@ -3712,6 +3763,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Venipede, .iconSprite = gMonIcon_Venipede, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(-2, -3, SHADOW_SIZE_M) FOOTPRINT(Venipede) OVERWORLD( @@ -3788,6 +3840,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Whirlipede, .iconSprite = gMonIcon_Whirlipede, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 1, SHADOW_SIZE_S) FOOTPRINT(Whirlipede) OVERWORLD( @@ -3865,6 +3918,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Scolipede, .iconSprite = gMonIcon_Scolipede, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 12, SHADOW_SIZE_L) FOOTPRINT(Scolipede) OVERWORLD( @@ -3946,6 +4000,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Cottonee, .iconSprite = gMonIcon_Cottonee, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, -5, SHADOW_SIZE_M) FOOTPRINT(Cottonee) OVERWORLD( @@ -4015,6 +4070,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Whimsicott, .iconSprite = gMonIcon_Whimsicott, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 8, SHADOW_SIZE_M) FOOTPRINT(Whimsicott) OVERWORLD( @@ -4087,6 +4143,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Petilil, .iconSprite = gMonIcon_Petilil, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, SHADOW(-2, 6, SHADOW_SIZE_S) FOOTPRINT(Petilil) OVERWORLD( @@ -4158,6 +4215,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Lilligant, .iconSprite = gMonIcon_Lilligant, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-2, 13, SHADOW_SIZE_M) FOOTPRINT(Lilligant) OVERWORLD( @@ -4225,6 +4283,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_LilligantHisui, .iconSprite = gMonIcon_LilligantHisui, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-3, 13, SHADOW_SIZE_S) FOOTPRINT(Lilligant) OVERWORLD( @@ -4294,6 +4353,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_BasculinRedStriped, .iconSprite = gMonIcon_BasculinRedStriped, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 4, SHADOW_SIZE_S) FOOTPRINT(Basculin) OVERWORLD( @@ -4360,6 +4420,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_BasculinBlueStriped, .iconSprite = gMonIcon_BasculinBlueStriped, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 1, SHADOW_SIZE_S) FOOTPRINT(Basculin) OVERWORLD( @@ -4427,6 +4488,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_BasculinWhiteStriped, .iconSprite = gMonIcon_BasculinWhiteStriped, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-2, 5, SHADOW_SIZE_S) FOOTPRINT(Basculin) OVERWORLD( @@ -4442,8 +4504,8 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .teachableLearnset = sBasculinWhiteStripedTeachableLearnset, .eggMoveLearnset = sBasculinWhiteStripedEggMoveLearnset, .formSpeciesIdTable = sBasculinFormSpeciesIdTable, - .evolutions = EVOLUTION({EVO_RECOIL_DAMAGE_MALE, 294, SPECIES_BASCULEGION_M}, - {EVO_RECOIL_DAMAGE_FEMALE, 294, SPECIES_BASCULEGION_F}), + .evolutions = EVOLUTION({EVO_LEVEL, 0, SPECIES_BASCULEGION_M, CONDITIONS({IF_RECOIL_DAMAGE_GE, 294}, {IF_GENDER, MON_MALE})}, + {EVO_LEVEL, 0, SPECIES_BASCULEGION_F, CONDITIONS({IF_RECOIL_DAMAGE_GE, 294}, {IF_GENDER, MON_FEMALE})}), }, [SPECIES_BASCULEGION_M] = @@ -4494,6 +4556,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_BasculegionM, .iconSprite = gMonIcon_BasculegionM, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 16, SHADOW_SIZE_M) FOOTPRINT(Basculegion) OVERWORLD( @@ -4557,6 +4620,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_BasculegionF, .iconSprite = gMonIcon_BasculegionF, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 16, SHADOW_SIZE_M) FOOTPRINT(Basculegion) OVERWORLD( @@ -4628,6 +4692,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Sandile, .iconSprite = gMonIcon_Sandile, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(4, -5, SHADOW_SIZE_M) FOOTPRINT(Sandile) OVERWORLD( @@ -4696,6 +4761,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Krokorok, .iconSprite = gMonIcon_Krokorok, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-2, 8, SHADOW_SIZE_M) FOOTPRINT(Krokorok) OVERWORLD( @@ -4772,6 +4838,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Krookodile, .iconSprite = gMonIcon_Krookodile, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(3, 12, SHADOW_SIZE_L) FOOTPRINT(Krookodile) OVERWORLD( @@ -4840,6 +4907,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Darumaka, .iconSprite = gMonIcon_Darumaka, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(-3, 1, SHADOW_SIZE_S) FOOTPRINT(Darumaka) OVERWORLD( @@ -4910,6 +4978,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_DarmanitanStandard, .iconSprite = gMonIcon_DarmanitanStandard, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(3, 5, SHADOW_SIZE_L) FOOTPRINT(Darmanitan) OVERWORLD( @@ -4976,6 +5045,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_DarmanitanZen, .iconSprite = gMonIcon_DarmanitanZen, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, -1, SHADOW_SIZE_S) FOOTPRINT(Darmanitan) .levelUpLearnset = sDarmanitanLevelUpLearnset, @@ -5032,6 +5102,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_DarumakaGalar, .iconSprite = gMonIcon_DarumakaGalar, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(-3, -1, SHADOW_SIZE_S) FOOTPRINT(Darumaka) OVERWORLD( @@ -5098,6 +5169,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_DarmanitanGalarStandard, .iconSprite = gMonIcon_DarmanitanGalarStandard, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(4, 8, SHADOW_SIZE_L) FOOTPRINT(Darmanitan) OVERWORLD( @@ -5163,6 +5235,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_DarmanitanGalarZen, .iconSprite = gMonIcon_DarmanitanGalarZen, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 11, SHADOW_SIZE_S) FOOTPRINT(Darmanitan) .isGalarianForm = TRUE, @@ -5231,6 +5304,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Maractus, .iconSprite = gMonIcon_Maractus, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 13, SHADOW_SIZE_S) FOOTPRINT(Maractus) OVERWORLD( @@ -5307,6 +5381,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Dwebble, .iconSprite = gMonIcon_Dwebble, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, SHADOW(-1, -2, SHADOW_SIZE_S) FOOTPRINT(Dwebble) OVERWORLD( @@ -5379,6 +5454,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Crustle, .iconSprite = gMonIcon_Crustle, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 8, SHADOW_SIZE_L) FOOTPRINT(Crustle) OVERWORLD( @@ -5448,6 +5524,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Scraggy, .iconSprite = gMonIcon_Scraggy, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, SHADOW(-4, 2, SHADOW_SIZE_S) FOOTPRINT(Scraggy) OVERWORLD( @@ -5518,6 +5595,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Scrafty, .iconSprite = gMonIcon_Scrafty, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-2, 9, SHADOW_SIZE_M) FOOTPRINT(Scrafty) OVERWORLD( @@ -5592,6 +5670,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Sigilyph, .iconSprite = gMonIcon_Sigilyph, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(3, 18, SHADOW_SIZE_S) FOOTPRINT(Sigilyph) OVERWORLD( @@ -5665,6 +5744,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Yamask, .iconSprite = gMonIcon_Yamask, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 6, SHADOW_SIZE_S) FOOTPRINT(Yamask) OVERWORLD( @@ -5735,6 +5815,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Cofagrigus, .iconSprite = gMonIcon_Cofagrigus, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(6, 12, SHADOW_SIZE_M) FOOTPRINT(Cofagrigus) OVERWORLD( @@ -5799,6 +5880,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_YamaskGalar, .iconSprite = gMonIcon_YamaskGalar, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 2, SHADOW_SIZE_S) FOOTPRINT(Yamask) OVERWORLD( @@ -5815,7 +5897,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .teachableLearnset = sYamaskGalarTeachableLearnset, .eggMoveLearnset = sYamaskGalarEggMoveLearnset, .formSpeciesIdTable = sYamaskFormSpeciesIdTable, - .evolutions = EVOLUTION({EVO_SCRIPT_TRIGGER_DMG, 49, SPECIES_RUNERIGUS}), + .evolutions = EVOLUTION({EVO_SCRIPT_TRIGGER, 0, SPECIES_RUNERIGUS, CONDITIONS({IF_CURRENT_DAMAGE_GE, 49})}), }, [SPECIES_RUNERIGUS] = @@ -5865,6 +5947,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Runerigus, .iconSprite = gMonIcon_Runerigus, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(14, 14, SHADOW_SIZE_M) FOOTPRINT(Runerigus) OVERWORLD( @@ -5935,6 +6018,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Tirtouga, .iconSprite = gMonIcon_Tirtouga, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, -3, SHADOW_SIZE_M) FOOTPRINT(Tirtouga) OVERWORLD( @@ -6010,6 +6094,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Carracosta, .iconSprite = gMonIcon_Carracosta, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(4, 8, SHADOW_SIZE_L) FOOTPRINT(Carracosta) OVERWORLD( @@ -6078,6 +6163,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Archen, .iconSprite = gMonIcon_Archen, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(-3, -2, SHADOW_SIZE_S) FOOTPRINT(Archen) OVERWORLD( @@ -6152,6 +6238,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Archeops, .iconSprite = gMonIcon_Archeops, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 18, SHADOW_SIZE_M) FOOTPRINT(Archeops) OVERWORLD( @@ -6221,6 +6308,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Trubbish, .iconSprite = gMonIcon_Trubbish, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(-2, -1, SHADOW_SIZE_S) FOOTPRINT(Trubbish) OVERWORLD( @@ -6292,6 +6380,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Garbodor, .iconSprite = gMonIcon_Garbodor, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(3, 9, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Garbodor) OVERWORLD( @@ -6360,6 +6449,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_GarbodorGmax, .iconSprite = gMonIcon_GarbodorGmax, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, NO_SHADOW FOOTPRINT(Garbodor) .isGigantamax = TRUE, @@ -6425,6 +6515,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Zorua, .iconSprite = gMonIcon_Zorua, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(0, 2, SHADOW_SIZE_S) FOOTPRINT(Zorua) OVERWORLD( @@ -6496,6 +6587,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Zoroark, .iconSprite = gMonIcon_Zoroark, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 8, SHADOW_SIZE_L) FOOTPRINT(Zoroark) OVERWORLD( @@ -6560,6 +6652,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_ZoruaHisui, .iconSprite = gMonIcon_ZoruaHisui, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(2, 12, SHADOW_SIZE_S) FOOTPRINT(Zorua) OVERWORLD( @@ -6625,6 +6718,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_ZoroarkHisui, .iconSprite = gMonIcon_ZoroarkHisui, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(11, 13, SHADOW_SIZE_L) FOOTPRINT(Zoroark) OVERWORLD( @@ -6696,6 +6790,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Minccino, .iconSprite = gMonIcon_Minccino, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(-3, 3, SHADOW_SIZE_S) FOOTPRINT(Minccino) OVERWORLD( @@ -6767,6 +6862,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Cinccino, .iconSprite = gMonIcon_Cinccino, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(0, 6, SHADOW_SIZE_M) FOOTPRINT(Cinccino) OVERWORLD( @@ -6840,6 +6936,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Gothita, .iconSprite = gMonIcon_Gothita, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, SHADOW(-3, 2, SHADOW_SIZE_S) FOOTPRINT(Gothita) OVERWORLD( @@ -6914,6 +7011,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Gothorita, .iconSprite = gMonIcon_Gothorita, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, SHADOW(-2, 7, SHADOW_SIZE_S) FOOTPRINT(Gothorita) OVERWORLD( @@ -6986,6 +7084,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Gothitelle, .iconSprite = gMonIcon_Gothitelle, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 13, SHADOW_SIZE_M) FOOTPRINT(Gothitelle) OVERWORLD( @@ -7057,6 +7156,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Solosis, .iconSprite = gMonIcon_Solosis, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 8, SHADOW_SIZE_S) FOOTPRINT(Solosis) OVERWORLD( @@ -7127,6 +7227,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Duosion, .iconSprite = gMonIcon_Duosion, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 6, SHADOW_SIZE_M) FOOTPRINT(Duosion) OVERWORLD( @@ -7197,6 +7298,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Reuniclus, .iconSprite = gMonIcon_Reuniclus, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 8, SHADOW_SIZE_M) FOOTPRINT(Reuniclus) OVERWORLD( @@ -7269,6 +7371,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Ducklett, .iconSprite = gMonIcon_Ducklett, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 2, SHADOW_SIZE_S) FOOTPRINT(Ducklett) OVERWORLD( @@ -7336,6 +7439,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Swanna, .iconSprite = gMonIcon_Swanna, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 12, SHADOW_SIZE_M) FOOTPRINT(Swanna) OVERWORLD( @@ -7411,6 +7515,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Vanillite, .iconSprite = gMonIcon_Vanillite, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 0, SHADOW_SIZE_S) FOOTPRINT(Vanillite) OVERWORLD( @@ -7484,6 +7589,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Vanillish, .iconSprite = gMonIcon_Vanillish, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-3, 9, SHADOW_SIZE_S) FOOTPRINT(Vanillish) OVERWORLD( @@ -7556,6 +7662,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Vanilluxe, .iconSprite = gMonIcon_Vanilluxe, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-2, 10, SHADOW_SIZE_M) FOOTPRINT(Vanilluxe) OVERWORLD( @@ -7620,6 +7727,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_DeerlingSpring, .iconSprite = gMonIcon_DeerlingSpring, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(1, 2, SHADOW_SIZE_S) FOOTPRINT(Deerling) OVERWORLD( @@ -7685,6 +7793,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_DeerlingSummer, .iconSprite = gMonIcon_DeerlingSummer, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(1, 2, SHADOW_SIZE_S) FOOTPRINT(Deerling) OVERWORLD( @@ -7750,6 +7859,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_DeerlingAutumn, .iconSprite = gMonIcon_DeerlingAutumn, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(1, 2, SHADOW_SIZE_S) FOOTPRINT(Deerling) OVERWORLD( @@ -7815,6 +7925,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_DeerlingWinter, .iconSprite = gMonIcon_DeerlingWinter, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(1, 2, SHADOW_SIZE_S) FOOTPRINT(Deerling) OVERWORLD( @@ -7880,6 +7991,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_SawsbuckSpring, .iconSprite = gMonIcon_SawsbuckSpring, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(7, 13, SHADOW_SIZE_M) FOOTPRINT(Sawsbuck) OVERWORLD( @@ -7943,6 +8055,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_SawsbuckSummer, .iconSprite = gMonIcon_SawsbuckSummer, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(7, 13, SHADOW_SIZE_M) FOOTPRINT(Sawsbuck) OVERWORLD( @@ -8006,6 +8119,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_SawsbuckAutumn, .iconSprite = gMonIcon_SawsbuckAutumn, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(7, 13, SHADOW_SIZE_M) FOOTPRINT(Sawsbuck) OVERWORLD( @@ -8069,6 +8183,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_SawsbuckWinter, .iconSprite = gMonIcon_SawsbuckWinter, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(7, 13, SHADOW_SIZE_M) FOOTPRINT(Sawsbuck) OVERWORLD( @@ -8141,6 +8256,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Emolga, .iconSprite = gMonIcon_Emolga, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 13, SHADOW_SIZE_S) FOOTPRINT(Emolga) OVERWORLD( @@ -8209,6 +8325,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Karrablast, .iconSprite = gMonIcon_Karrablast, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(-1, 0, SHADOW_SIZE_S) FOOTPRINT(Karrablast) OVERWORLD( @@ -8223,7 +8340,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .levelUpLearnset = sKarrablastLevelUpLearnset, .teachableLearnset = sKarrablastTeachableLearnset, .eggMoveLearnset = sKarrablastEggMoveLearnset, - .evolutions = EVOLUTION({EVO_TRADE_SPECIFIC_MON, SPECIES_SHELMET, SPECIES_ESCAVALIER}), + .evolutions = EVOLUTION({EVO_TRADE, 0, SPECIES_ESCAVALIER, CONDITIONS({IF_TRADE_PARTNER_SPECIES, SPECIES_SHELMET})}), }, [SPECIES_ESCAVALIER] = @@ -8277,6 +8394,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Escavalier, .iconSprite = gMonIcon_Escavalier, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 11, SHADOW_SIZE_M) FOOTPRINT(Escavalier) OVERWORLD( @@ -8349,6 +8467,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Foongus, .iconSprite = gMonIcon_Foongus, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, SHADOW(-1, -3, SHADOW_SIZE_S) FOOTPRINT(Foongus) OVERWORLD( @@ -8423,6 +8542,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Amoonguss, .iconSprite = gMonIcon_Amoonguss, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, SHADOW(1, 5, SHADOW_SIZE_M) FOOTPRINT(Amoonguss) OVERWORLD( @@ -8502,6 +8622,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSpriteFemale = gMonIcon_FrillishF, .iconPalIndexFemale = 1, #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 9, SHADOW_SIZE_S) FOOTPRINT(Frillish) OVERWORLD( @@ -8591,6 +8712,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSpriteFemale = gMonIcon_JellicentF, .iconPalIndexFemale = 1, #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 11, SHADOW_SIZE_M) FOOTPRINT(Jellicent) OVERWORLD( @@ -8668,6 +8790,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Alomomola, .iconSprite = gMonIcon_Alomomola, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 15, SHADOW_SIZE_S) FOOTPRINT(Alomomola) OVERWORLD( @@ -8739,6 +8862,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Joltik, .iconSprite = gMonIcon_Joltik, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(0, -5, SHADOW_SIZE_S) FOOTPRINT(Joltik) OVERWORLD( @@ -8812,6 +8936,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Galvantula, .iconSprite = gMonIcon_Galvantula, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, -2, SHADOW_SIZE_L) FOOTPRINT(Galvantula) OVERWORLD( @@ -8883,6 +9008,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Ferroseed, .iconSprite = gMonIcon_Ferroseed, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 1, SHADOW_SIZE_S) FOOTPRINT(Ferroseed) OVERWORLD( @@ -8959,6 +9085,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Ferrothorn, .iconSprite = gMonIcon_Ferrothorn, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-2, 17, SHADOW_SIZE_M) FOOTPRINT(Ferrothorn) OVERWORLD( @@ -9030,6 +9157,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Klink, .iconSprite = gMonIcon_Klink, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-2, 11, SHADOW_SIZE_S) FOOTPRINT(Klink) OVERWORLD( @@ -9100,6 +9228,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Klang, .iconSprite = gMonIcon_Klang, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 12, SHADOW_SIZE_M) FOOTPRINT(Klang) OVERWORLD( @@ -9170,6 +9299,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Klinklang, .iconSprite = gMonIcon_Klinklang, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 13, SHADOW_SIZE_L) FOOTPRINT(Klinklang) OVERWORLD( @@ -9252,6 +9382,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Tynamo, .iconSprite = gMonIcon_Tynamo, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-3, 5, SHADOW_SIZE_S) FOOTPRINT(Tynamo) OVERWORLD( @@ -9323,6 +9454,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Eelektrik, .iconSprite = gMonIcon_Eelektrik, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 13, SHADOW_SIZE_S) FOOTPRINT(Eelektrik) OVERWORLD( @@ -9394,6 +9526,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Eelektross, .iconSprite = gMonIcon_Eelektross, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(3, 13, SHADOW_SIZE_M) FOOTPRINT(Eelektross) OVERWORLD( @@ -9467,6 +9600,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Elgyem, .iconSprite = gMonIcon_Elgyem, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 2, SHADOW_SIZE_S) FOOTPRINT(Elgyem) OVERWORLD( @@ -9534,6 +9668,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Beheeyem, .iconSprite = gMonIcon_Beheeyem, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 10, SHADOW_SIZE_M) FOOTPRINT(Beheeyem) OVERWORLD( @@ -9608,6 +9743,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Litwick, .iconSprite = gMonIcon_Litwick, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(1, -1, SHADOW_SIZE_S) FOOTPRINT(Litwick) OVERWORLD( @@ -9682,6 +9818,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Lampent, .iconSprite = gMonIcon_Lampent, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 9, SHADOW_SIZE_S) FOOTPRINT(Lampent) OVERWORLD( @@ -9754,6 +9891,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Chandelure, .iconSprite = gMonIcon_Chandelure, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 13, SHADOW_SIZE_S) FOOTPRINT(Chandelure) OVERWORLD( @@ -9821,6 +9959,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Axew, .iconSprite = gMonIcon_Axew, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(2, 1, SHADOW_SIZE_S) FOOTPRINT(Axew) OVERWORLD( @@ -9888,6 +10027,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Fraxure, .iconSprite = gMonIcon_Fraxure, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-2, 8, SHADOW_SIZE_L) FOOTPRINT(Fraxure) OVERWORLD( @@ -9956,6 +10096,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Haxorus, .iconSprite = gMonIcon_Haxorus, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(2, 9, SHADOW_SIZE_L) FOOTPRINT(Haxorus) OVERWORLD( @@ -10028,6 +10169,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Cubchoo, .iconSprite = gMonIcon_Cubchoo, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(-2, 0, SHADOW_SIZE_S) FOOTPRINT(Cubchoo) OVERWORLD( @@ -10101,6 +10243,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Beartic, .iconSprite = gMonIcon_Beartic, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 13, SHADOW_SIZE_L) FOOTPRINT(Beartic) OVERWORLD( @@ -10173,6 +10316,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Cryogonal, .iconSprite = gMonIcon_Cryogonal, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 14, SHADOW_SIZE_M) FOOTPRINT(Cryogonal) OVERWORLD( @@ -10243,6 +10387,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Shelmet, .iconSprite = gMonIcon_Shelmet, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, SHADOW(0, -1, SHADOW_SIZE_S) FOOTPRINT(Shelmet) OVERWORLD( @@ -10257,7 +10402,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .levelUpLearnset = sShelmetLevelUpLearnset, .teachableLearnset = sShelmetTeachableLearnset, .eggMoveLearnset = sShelmetEggMoveLearnset, - .evolutions = EVOLUTION({EVO_TRADE_SPECIFIC_MON, SPECIES_KARRABLAST, SPECIES_ACCELGOR}), + .evolutions = EVOLUTION({EVO_TRADE, 0, SPECIES_ACCELGOR, CONDITIONS({IF_TRADE_PARTNER_SPECIES, SPECIES_KARRABLAST})}), }, [SPECIES_ACCELGOR] = @@ -10310,6 +10455,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Accelgor, .iconSprite = gMonIcon_Accelgor, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-14, 8, SHADOW_SIZE_S) FOOTPRINT(Accelgor) OVERWORLD( @@ -10378,6 +10524,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Stunfisk, .iconSprite = gMonIcon_Stunfisk, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, SHADOW(0, -1, SHADOW_SIZE_M) FOOTPRINT(Stunfisk) OVERWORLD( @@ -10443,6 +10590,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_StunfiskGalar, .iconSprite = gMonIcon_StunfiskGalar, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, SHADOW(0, -1, SHADOW_SIZE_M) FOOTPRINT(Stunfisk) OVERWORLD( @@ -10514,6 +10662,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Mienfoo, .iconSprite = gMonIcon_Mienfoo, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 2, SHADOW_SIZE_S) FOOTPRINT(Mienfoo) OVERWORLD( @@ -10586,6 +10735,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Mienshao, .iconSprite = gMonIcon_Mienshao, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 8, SHADOW_SIZE_M) FOOTPRINT(Mienshao) OVERWORLD( @@ -10659,6 +10809,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Druddigon, .iconSprite = gMonIcon_Druddigon, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(3, 9, SHADOW_SIZE_M) FOOTPRINT(Druddigon) OVERWORLD( @@ -10730,6 +10881,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Golett, .iconSprite = gMonIcon_Golett, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 7, SHADOW_SIZE_M) FOOTPRINT(Golett) OVERWORLD( @@ -10798,6 +10950,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Golurk, .iconSprite = gMonIcon_Golurk, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 14, SHADOW_SIZE_L) FOOTPRINT(Golurk) OVERWORLD( @@ -10871,6 +11024,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Pawniard, .iconSprite = gMonIcon_Pawniard, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(4, 4, SHADOW_SIZE_S) FOOTPRINT(Pawniard) OVERWORLD( @@ -10939,6 +11093,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Bisharp, .iconSprite = gMonIcon_Bisharp, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-2, 14, SHADOW_SIZE_M) FOOTPRINT(Bisharp) OVERWORLD( @@ -10952,7 +11107,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = ) .levelUpLearnset = sBisharpLevelUpLearnset, .teachableLearnset = sBisharpTeachableLearnset, - .evolutions = EVOLUTION({EVO_DEFEAT_THREE_WITH_ITEM, ITEM_LEADERS_CREST, SPECIES_KINGAMBIT}), + .evolutions = EVOLUTION({EVO_LEVEL, 0, SPECIES_KINGAMBIT, CONDITIONS({IF_DEFEAT_X_WITH_ITEMS, SPECIES_BISHARP, ITEM_LEADERS_CREST, 3})}), }, #if P_GEN_9_CROSS_EVOS @@ -11003,6 +11158,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Kingambit, .iconSprite = gMonIcon_Kingambit, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-2, 14, SHADOW_SIZE_M) FOOTPRINT(Kingambit) OVERWORLD( @@ -11072,6 +11228,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Bouffalant, .iconSprite = gMonIcon_Bouffalant, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(8, 7, SHADOW_SIZE_M) FOOTPRINT(Bouffalant) OVERWORLD( @@ -11143,6 +11300,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Rufflet, .iconSprite = gMonIcon_Rufflet, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-2, 2, SHADOW_SIZE_S) FOOTPRINT(Rufflet) OVERWORLD( @@ -11212,6 +11370,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Braviary, .iconSprite = gMonIcon_Braviary, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 16, SHADOW_SIZE_M) FOOTPRINT(Braviary) OVERWORLD( @@ -11276,6 +11435,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_BraviaryHisui, .iconSprite = gMonIcon_BraviaryHisui, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 14, SHADOW_SIZE_M) FOOTPRINT(Braviary) OVERWORLD( @@ -11347,6 +11507,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Vullaby, .iconSprite = gMonIcon_Vullaby, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 9, SHADOW_SIZE_M) FOOTPRINT(Vullaby) OVERWORLD( @@ -11415,6 +11576,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Mandibuzz, .iconSprite = gMonIcon_Mandibuzz, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 12, SHADOW_SIZE_M) FOOTPRINT(Mandibuzz) OVERWORLD( @@ -11482,6 +11644,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Heatmor, .iconSprite = gMonIcon_Heatmor, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(5, 7, SHADOW_SIZE_L) FOOTPRINT(Heatmor) OVERWORLD( @@ -11565,6 +11728,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Durant, .iconSprite = gMonIcon_Durant, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(0, -3, SHADOW_SIZE_L) FOOTPRINT(Durant) OVERWORLD( @@ -11634,6 +11798,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Deino, .iconSprite = gMonIcon_Deino, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 3, SHADOW_SIZE_S) FOOTPRINT(Deino) OVERWORLD( @@ -11701,6 +11866,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Zweilous, .iconSprite = gMonIcon_Zweilous, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 6, SHADOW_SIZE_L) FOOTPRINT(Zweilous) OVERWORLD( @@ -11774,6 +11940,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Hydreigon, .iconSprite = gMonIcon_Hydreigon, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 16, SHADOW_SIZE_M) FOOTPRINT(Hydreigon) OVERWORLD( @@ -11850,6 +12017,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Larvesta, .iconSprite = gMonIcon_Larvesta, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 0, SHADOW_SIZE_S) FOOTPRINT(Larvesta) OVERWORLD( @@ -11922,6 +12090,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Volcarona, .iconSprite = gMonIcon_Volcarona, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-4, 14, SHADOW_SIZE_M) FOOTPRINT(Volcarona) OVERWORLD( @@ -11990,6 +12159,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Cobalion, .iconSprite = gMonIcon_Cobalion, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(2, 14, SHADOW_SIZE_M) FOOTPRINT(Cobalion) OVERWORLD( @@ -12064,6 +12234,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Terrakion, .iconSprite = gMonIcon_Terrakion, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(3, 6, SHADOW_SIZE_L) FOOTPRINT(Terrakion) OVERWORLD( @@ -12133,6 +12304,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Virizion, .iconSprite = gMonIcon_Virizion, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 12, SHADOW_SIZE_M) FOOTPRINT(Virizion) OVERWORLD( @@ -12223,6 +12395,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_TornadusIncarnate, .iconSprite = gMonIcon_TornadusIncarnate, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(2, 17, SHADOW_SIZE_M) FOOTPRINT(Tornadus) OVERWORLD( @@ -12295,6 +12468,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_TornadusTherian, .iconSprite = gMonIcon_TornadusTherian, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-5, 12, SHADOW_SIZE_L) FOOTPRINT(Tornadus) OVERWORLD( @@ -12387,6 +12561,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_ThundurusIncarnate, .iconSprite = gMonIcon_ThundurusIncarnate, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(2, 17, SHADOW_SIZE_M) FOOTPRINT(Thundurus) OVERWORLD( @@ -12471,6 +12646,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_ThundurusTherian, .iconSprite = gMonIcon_ThundurusTherian, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(5, 16, SHADOW_SIZE_M) FOOTPRINT(Thundurus) OVERWORLD( @@ -12542,6 +12718,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Reshiram, .iconSprite = gMonIcon_Reshiram, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-2, 12, SHADOW_SIZE_L) FOOTPRINT(Reshiram) OVERWORLD( @@ -12612,6 +12789,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Zekrom, .iconSprite = gMonIcon_Zekrom, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(2, 14, SHADOW_SIZE_L) FOOTPRINT(Zekrom) OVERWORLD( @@ -12703,6 +12881,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_LandorusIncarnate, .iconSprite = gMonIcon_LandorusIncarnate, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(2, 17, SHADOW_SIZE_M) FOOTPRINT(Landorus) OVERWORLD( @@ -12775,6 +12954,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_LandorusTherian, .iconSprite = gMonIcon_LandorusTherian, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 11, SHADOW_SIZE_L) FOOTPRINT(Landorus) OVERWORLD( @@ -12851,6 +13031,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_Kyurem, .iconSprite = gMonIcon_Kyurem, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 8, SHADOW_SIZE_L) FOOTPRINT(Kyurem) OVERWORLD( @@ -12928,6 +13109,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_KyuremWhite, .iconSprite = gMonIcon_KyuremWhite, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-8, 14, SHADOW_SIZE_L) FOOTPRINT(Kyurem) OVERWORLD( @@ -13005,6 +13187,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_KyuremBlack, .iconSprite = gMonIcon_KyuremBlack, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(4, 14, SHADOW_SIZE_L) FOOTPRINT(Kyurem) OVERWORLD( @@ -13078,6 +13261,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_KeldeoOrdinary, .iconSprite = gMonIcon_KeldeoOrdinary, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-2, 8, SHADOW_SIZE_M) FOOTPRINT(Keldeo) OVERWORLD( @@ -13150,6 +13334,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_KeldeoResolute, .iconSprite = gMonIcon_KeldeoResolute, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 12, SHADOW_SIZE_M) FOOTPRINT(Keldeo) .isMythical = TRUE, @@ -13224,6 +13409,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_MeloettaAria, .iconSprite = gMonIcon_MeloettaAria, .iconPalIndex = 4, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 10, SHADOW_SIZE_S) FOOTPRINT(Meloetta) OVERWORLD( @@ -13303,6 +13489,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_MeloettaPirouette, .iconSprite = gMonIcon_MeloettaPirouette, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 16, SHADOW_SIZE_S) FOOTPRINT(Meloetta) OVERWORLD( @@ -13370,6 +13557,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .shinyPalette = gMonShinyPalette_##form, \ .iconSprite = gMonIcon_Genesect, \ .iconPalIndex = 2, \ + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, \ SHADOW(5, 13, SHADOW_SIZE_L) \ FOOTPRINT(Genesect) \ OVERWORLD( \ diff --git a/src/data/pokemon/species_info/gen_6_families.h b/src/data/pokemon/species_info/gen_6_families.h index b42696983e..9dfac96c80 100644 --- a/src/data/pokemon/species_info/gen_6_families.h +++ b/src/data/pokemon/species_info/gen_6_families.h @@ -57,6 +57,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .shinyPalette = gMonShinyPalette_Chespin, .iconSprite = gMonIcon_Chespin, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, SHADOW(-2, 3, SHADOW_SIZE_S) FOOTPRINT(Chespin) OVERWORLD( @@ -127,6 +128,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .shinyPalette = gMonShinyPalette_Quilladin, .iconSprite = gMonIcon_Quilladin, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, SHADOW(2, 4, SHADOW_SIZE_M) FOOTPRINT(Quilladin) OVERWORLD( @@ -194,6 +196,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .shinyPalette = gMonShinyPalette_Chesnaught, .iconSprite = gMonIcon_Chesnaught, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(4, 10, SHADOW_SIZE_L) FOOTPRINT(Chesnaught) OVERWORLD( @@ -266,6 +269,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .shinyPalette = gMonShinyPalette_Fennekin, .iconSprite = gMonIcon_Fennekin, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(0, 4, SHADOW_SIZE_S) FOOTPRINT(Fennekin) OVERWORLD( @@ -334,6 +338,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .shinyPalette = gMonShinyPalette_Braixen, .iconSprite = gMonIcon_Braixen, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-2, 10, SHADOW_SIZE_M) FOOTPRINT(Braixen) OVERWORLD( @@ -405,6 +410,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .shinyPalette = gMonShinyPalette_Delphox, .iconSprite = gMonIcon_Delphox, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(7, 14, SHADOW_SIZE_M) FOOTPRINT(Delphox) OVERWORLD( @@ -477,6 +483,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .shinyPalette = gMonShinyPalette_Froakie, .iconSprite = gMonIcon_Froakie, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(2, 0, SHADOW_SIZE_S) FOOTPRINT(Froakie) OVERWORLD( @@ -544,6 +551,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .shinyPalette = gMonShinyPalette_Frogadier, .iconSprite = gMonIcon_Frogadier, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(0, 5, SHADOW_SIZE_M) FOOTPRINT(Frogadier) OVERWORLD( @@ -604,6 +612,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .shinyPalette = gMonShinyPalette_Greninja, .iconSprite = gMonIcon_Greninja, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(4, 6, SHADOW_SIZE_L) FOOTPRINT(Greninja) OVERWORLD( @@ -664,6 +673,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .shinyPalette = gMonShinyPalette_Greninja, .iconSprite = gMonIcon_Greninja, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(4, 6, SHADOW_SIZE_L) FOOTPRINT(Greninja) OVERWORLD( @@ -731,6 +741,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .shinyPalette = gMonShinyPalette_GreninjaAsh, .iconSprite = gMonIcon_GreninjaAsh, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 10, SHADOW_SIZE_L) FOOTPRINT(Greninja) .levelUpLearnset = sGreninjaLevelUpLearnset, @@ -791,6 +802,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .shinyPalette = gMonShinyPalette_Bunnelby, .iconSprite = gMonIcon_Bunnelby, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(3, 9, SHADOW_SIZE_S) FOOTPRINT(Bunnelby) OVERWORLD( @@ -858,6 +870,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .shinyPalette = gMonShinyPalette_Diggersby, .iconSprite = gMonIcon_Diggersby, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(8, 10, SHADOW_SIZE_M) FOOTPRINT(Diggersby) OVERWORLD( @@ -929,6 +942,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .shinyPalette = gMonShinyPalette_Fletchling, .iconSprite = gMonIcon_Fletchling, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-2, 0, SHADOW_SIZE_S) FOOTPRINT(Fletchling) OVERWORLD( @@ -1003,6 +1017,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .shinyPalette = gMonShinyPalette_Fletchinder, .iconSprite = gMonIcon_Fletchinder, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 12, SHADOW_SIZE_S) FOOTPRINT(Fletchinder) OVERWORLD( @@ -1070,6 +1085,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .shinyPalette = gMonShinyPalette_Talonflame, .iconSprite = gMonIcon_Talonflame, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-2, 17, SHADOW_SIZE_M) FOOTPRINT(Talonflame) OVERWORLD( @@ -1130,6 +1146,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .shinyPalette = gMonShinyPalette_Scatterbug, \ .iconSprite = gMonIcon_Scatterbug, \ .iconPalIndex = 1, \ + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, \ SHADOW(1, 1, SHADOW_SIZE_S) \ FOOTPRINT(Scatterbug) \ OVERWORLD( \ @@ -1213,6 +1230,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .shinyPalette = gMonShinyPalette_Spewpa, \ .iconSprite = gMonIcon_Spewpa, \ .iconPalIndex = 1, \ + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, \ SHADOW(0, 2, SHADOW_SIZE_M) \ FOOTPRINT(Spewpa) \ OVERWORLD( \ @@ -1296,6 +1314,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .shinyPalette = gMonShinyPalette_Vivillon ##form, \ .iconSprite = gMonIcon_Vivillon ##form, \ .iconPalIndex = iconPal, \ + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, \ SHADOW(0, 20, SHADOW_SIZE_M) \ FOOTPRINT(Vivillon) \ OVERWORLD( \ @@ -1545,6 +1564,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .shinyPalette = gMonShinyPalette_Litleo, .iconSprite = gMonIcon_Litleo, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(2, 3, SHADOW_SIZE_S) FOOTPRINT(Litleo) OVERWORLD( @@ -1620,6 +1640,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .iconSpriteFemale = gMonIcon_PyroarF, .iconPalIndexFemale = 2, #endif //P_GENDER_DIFFERENCES + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-2, 11, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Pyroar) OVERWORLD( @@ -1686,6 +1707,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .shinyPalette = gMonShinyPalette_Flabebe##Form, \ .iconSprite = gMonIcon_Flabebe##Form, \ .iconPalIndex = iconPal, \ + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, \ SHADOW(0, 11, SHADOW_SIZE_S) \ FOOTPRINT(Flabebe) \ OVERWORLD( \ @@ -1775,6 +1797,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .shinyPalette = gMonShinyPalette_Floette ##form, \ .iconSprite = gMonIcon_Floette##form, \ .iconPalIndex = iconPal, \ + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, \ SHADOW(-3, 12, SHADOW_SIZE_S) \ FOOTPRINT(Floette) \ OVERWORLD( \ @@ -1924,6 +1947,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .shinyPalette = gMonShinyPalette_Florges##Form, \ .iconSprite = gMonIcon_Florges##Form, \ .iconPalIndex = iconPal, \ + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, \ SHADOW(-5, 15, SHADOW_SIZE_M) \ FOOTPRINT(Florges) \ OVERWORLD( \ @@ -2036,6 +2060,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .shinyPalette = gMonShinyPalette_Skiddo, .iconSprite = gMonIcon_Skiddo, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(2, 7, SHADOW_SIZE_M) FOOTPRINT(Skiddo) OVERWORLD( @@ -2104,6 +2129,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .shinyPalette = gMonShinyPalette_Gogoat, .iconSprite = gMonIcon_Gogoat, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(2, 9, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Gogoat) OVERWORLD( @@ -2176,6 +2202,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .shinyPalette = gMonShinyPalette_Pancham, .iconSprite = gMonIcon_Pancham, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(-2, 2, SHADOW_SIZE_S) FOOTPRINT(Pancham) OVERWORLD( @@ -2190,7 +2217,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .levelUpLearnset = sPanchamLevelUpLearnset, .teachableLearnset = sPanchamTeachableLearnset, .eggMoveLearnset = sPanchamEggMoveLearnset, - .evolutions = EVOLUTION({EVO_LEVEL_DARK_TYPE_MON_IN_PARTY, 32, SPECIES_PANGORO}), + .evolutions = EVOLUTION({EVO_LEVEL, 32, SPECIES_PANGORO, CONDITIONS({IF_TYPE_IN_PARTY, TYPE_DARK})}), }, [SPECIES_PANGORO] = @@ -2248,6 +2275,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .shinyPalette = gMonShinyPalette_Pangoro, .iconSprite = gMonIcon_Pangoro, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-2, 13, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Pangoro) OVERWORLD( @@ -2309,6 +2337,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .shinyPalette = gMonShinyPalette_Furfrou##_form, \ .iconSprite = gMonIcon_Furfrou##_form, \ .iconPalIndex = _iconIdx, \ + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, \ SHADOW(3, 10, SHADOW_SIZE_XL_BATTLE_ONLY) \ FOOTPRINT(Furfrou) \ OVERWORLD( \ @@ -2395,6 +2424,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .shinyPalette = gMonShinyPalette_Espurr, .iconSprite = gMonIcon_Espurr, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(-1, 4, SHADOW_SIZE_S) FOOTPRINT(Espurr) OVERWORLD( @@ -2409,8 +2439,8 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .levelUpLearnset = sEspurrLevelUpLearnset, .teachableLearnset = sEspurrTeachableLearnset, .eggMoveLearnset = sEspurrEggMoveLearnset, - .evolutions = EVOLUTION({EVO_LEVEL_MALE, 25, SPECIES_MEOWSTIC_M}, - {EVO_LEVEL_FEMALE, 25, SPECIES_MEOWSTIC_F}), + .evolutions = EVOLUTION({EVO_LEVEL, 25, SPECIES_MEOWSTIC_M, CONDITIONS({IF_GENDER, MON_MALE})}, + {EVO_LEVEL, 25, SPECIES_MEOWSTIC_F, CONDITIONS({IF_GENDER, MON_FEMALE})}), }, [SPECIES_MEOWSTIC_M] = @@ -2460,6 +2490,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .shinyPalette = gMonShinyPalette_MeowsticM, .iconSprite = gMonIcon_MeowsticM, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(-2, 11, SHADOW_SIZE_S) FOOTPRINT(Meowstic) OVERWORLD( @@ -2523,6 +2554,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .shinyPalette = gMonShinyPalette_MeowsticF, .iconSprite = gMonIcon_MeowsticF, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(-2, 12, SHADOW_SIZE_S) FOOTPRINT(Meowstic) OVERWORLD( @@ -2593,6 +2625,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .shinyPalette = gMonShinyPalette_Honedge, .iconSprite = gMonIcon_Honedge, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-10, 11, SHADOW_SIZE_S) FOOTPRINT(Honedge) OVERWORLD( @@ -2664,6 +2697,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .shinyPalette = gMonShinyPalette_Doublade, .iconSprite = gMonIcon_Doublade, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(8, 11, SHADOW_SIZE_M) FOOTPRINT(Doublade) OVERWORLD( @@ -2737,6 +2771,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .shinyPalette = gMonShinyPalette_AegislashShield, .iconSprite = gMonIcon_AegislashShield, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 14, SHADOW_SIZE_M) FOOTPRINT(Aegislash) OVERWORLD( @@ -2814,6 +2849,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .shinyPalette = gMonShinyPalette_AegislashBlade, .iconSprite = gMonIcon_AegislashBlade, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 14, SHADOW_SIZE_M) FOOTPRINT(Aegislash) .levelUpLearnset = sAegislashLevelUpLearnset, @@ -2879,6 +2915,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .shinyPalette = gMonShinyPalette_Spritzee, .iconSprite = gMonIcon_Spritzee, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 13, SHADOW_SIZE_S) FOOTPRINT(Spritzee) OVERWORLD( @@ -2893,7 +2930,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .levelUpLearnset = sSpritzeeLevelUpLearnset, .teachableLearnset = sSpritzeeTeachableLearnset, .eggMoveLearnset = sSpritzeeEggMoveLearnset, - .evolutions = EVOLUTION({EVO_TRADE_ITEM, ITEM_SACHET, SPECIES_AROMATISSE}, + .evolutions = EVOLUTION({EVO_TRADE, 0, SPECIES_AROMATISSE, CONDITIONS({IF_HOLD_ITEM, ITEM_SACHET})}, {EVO_ITEM, ITEM_SACHET, SPECIES_AROMATISSE}), }, @@ -2947,6 +2984,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .shinyPalette = gMonShinyPalette_Aromatisse, .iconSprite = gMonIcon_Aromatisse, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 10, SHADOW_SIZE_M) FOOTPRINT(Aromatisse) OVERWORLD( @@ -3019,6 +3057,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .shinyPalette = gMonShinyPalette_Swirlix, .iconSprite = gMonIcon_Swirlix, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, -1, SHADOW_SIZE_S) FOOTPRINT(Swirlix) OVERWORLD( @@ -3033,7 +3072,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .levelUpLearnset = sSwirlixLevelUpLearnset, .teachableLearnset = sSwirlixTeachableLearnset, .eggMoveLearnset = sSwirlixEggMoveLearnset, - .evolutions = EVOLUTION({EVO_TRADE_ITEM, ITEM_WHIPPED_DREAM, SPECIES_SLURPUFF}, + .evolutions = EVOLUTION({EVO_TRADE, 0, SPECIES_SLURPUFF, CONDITIONS({IF_HOLD_ITEM, ITEM_WHIPPED_DREAM})}, {EVO_ITEM, ITEM_WHIPPED_DREAM, SPECIES_SLURPUFF}), }, @@ -3090,6 +3129,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .shinyPalette = gMonShinyPalette_Slurpuff, .iconSprite = gMonIcon_Slurpuff, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 6, SHADOW_SIZE_M) FOOTPRINT(Slurpuff) OVERWORLD( @@ -3160,6 +3200,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .shinyPalette = gMonShinyPalette_Inkay, .iconSprite = gMonIcon_Inkay, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 11, SHADOW_SIZE_S) FOOTPRINT(Inkay) OVERWORLD( @@ -3229,6 +3270,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .shinyPalette = gMonShinyPalette_Malamar, .iconSprite = gMonIcon_Malamar, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(5, 14, SHADOW_SIZE_M) FOOTPRINT(Malamar) OVERWORLD( @@ -3300,6 +3342,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .shinyPalette = gMonShinyPalette_Binacle, .iconSprite = gMonIcon_Binacle, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, SHADOW(-3, 5, SHADOW_SIZE_M) FOOTPRINT(Binacle) OVERWORLD( @@ -3368,6 +3411,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .shinyPalette = gMonShinyPalette_Barbaracle, .iconSprite = gMonIcon_Barbaracle, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(4, 14, SHADOW_SIZE_L) FOOTPRINT(Barbaracle) OVERWORLD( @@ -3441,6 +3485,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .shinyPalette = gMonShinyPalette_Skrelp, .iconSprite = gMonIcon_Skrelp, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(3, 5, SHADOW_SIZE_S) FOOTPRINT(Skrelp) OVERWORLD( @@ -3510,6 +3555,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .shinyPalette = gMonShinyPalette_Dragalge, .iconSprite = gMonIcon_Dragalge, .iconPalIndex = 5, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-3, 14, SHADOW_SIZE_M) FOOTPRINT(Dragalge) OVERWORLD( @@ -3581,6 +3627,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .shinyPalette = gMonShinyPalette_Clauncher, .iconSprite = gMonIcon_Clauncher, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, SHADOW(4, -6, SHADOW_SIZE_M) FOOTPRINT(Clauncher) OVERWORLD( @@ -3655,6 +3702,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .shinyPalette = gMonShinyPalette_Clawitzer, .iconSprite = gMonIcon_Clawitzer, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(6, 1, SHADOW_SIZE_L) FOOTPRINT(Clawitzer) OVERWORLD( @@ -3723,6 +3771,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .shinyPalette = gMonShinyPalette_Helioptile, .iconSprite = gMonIcon_Helioptile, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(-1, 1, SHADOW_SIZE_S) FOOTPRINT(Helioptile) OVERWORLD( @@ -3792,6 +3841,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .shinyPalette = gMonShinyPalette_Heliolisk, .iconSprite = gMonIcon_Heliolisk, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-2, 10, SHADOW_SIZE_M) FOOTPRINT(Heliolisk) OVERWORLD( @@ -3861,6 +3911,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .shinyPalette = gMonShinyPalette_Tyrunt, .iconSprite = gMonIcon_Tyrunt, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(3, 2, SHADOW_SIZE_M) FOOTPRINT(Tyrunt) OVERWORLD( @@ -3875,7 +3926,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .levelUpLearnset = sTyruntLevelUpLearnset, .teachableLearnset = sTyruntTeachableLearnset, .eggMoveLearnset = sTyruntEggMoveLearnset, - .evolutions = EVOLUTION({EVO_LEVEL_DAY, 39, SPECIES_TYRANTRUM}), + .evolutions = EVOLUTION({EVO_LEVEL, 39, SPECIES_TYRANTRUM, CONDITIONS({IF_NOT_TIME, TIME_NIGHT})}), }, [SPECIES_TYRANTRUM] = @@ -3928,6 +3979,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .shinyPalette = gMonShinyPalette_Tyrantrum, .iconSprite = gMonIcon_Tyrantrum, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-2, 14, SHADOW_SIZE_L) FOOTPRINT(Tyrantrum) OVERWORLD( @@ -4003,6 +4055,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .shinyPalette = gMonShinyPalette_Amaura, .iconSprite = gMonIcon_Amaura, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 8, SHADOW_SIZE_S) FOOTPRINT(Amaura) OVERWORLD( @@ -4017,7 +4070,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .levelUpLearnset = sAmauraLevelUpLearnset, .teachableLearnset = sAmauraTeachableLearnset, .eggMoveLearnset = sAmauraEggMoveLearnset, - .evolutions = EVOLUTION({EVO_LEVEL_NIGHT, 39, SPECIES_AURORUS}), + .evolutions = EVOLUTION({EVO_LEVEL, 39, SPECIES_AURORUS, CONDITIONS({IF_TIME, TIME_NIGHT})}), }, [SPECIES_AURORUS] = @@ -4070,6 +4123,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .shinyPalette = gMonShinyPalette_Aurorus, .iconSprite = gMonIcon_Aurorus, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-6, 14, SHADOW_SIZE_L) FOOTPRINT(Aurorus) OVERWORLD( @@ -4143,6 +4197,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .shinyPalette = gMonShinyPalette_Hawlucha, .iconSprite = gMonIcon_Hawlucha, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(3, 6, SHADOW_SIZE_S) FOOTPRINT(Hawlucha) OVERWORLD( @@ -4212,6 +4267,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .shinyPalette = gMonShinyPalette_Dedenne, .iconSprite = gMonIcon_Dedenne, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(-2, 1, SHADOW_SIZE_S) FOOTPRINT(Dedenne) OVERWORLD( @@ -4289,6 +4345,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .shinyPalette = gMonShinyPalette_Carbink, .iconSprite = gMonIcon_Carbink, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 5, SHADOW_SIZE_S) FOOTPRINT(Carbink) OVERWORLD( @@ -4358,6 +4415,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .shinyPalette = gMonShinyPalette_Goomy, .iconSprite = gMonIcon_Goomy, .iconPalIndex = 5, + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, SHADOW(-1, -1, SHADOW_SIZE_S) FOOTPRINT(Goomy) OVERWORLD( @@ -4428,6 +4486,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .shinyPalette = gMonShinyPalette_Sliggoo, .iconSprite = gMonIcon_Sliggoo, .iconPalIndex = 5, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 6, SHADOW_SIZE_S) FOOTPRINT(Sliggoo) OVERWORLD( @@ -4442,8 +4501,8 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .levelUpLearnset = sSliggooLevelUpLearnset, .teachableLearnset = sSliggooTeachableLearnset, .formSpeciesIdTable = sSliggooFormSpeciesIdTable, - .evolutions = EVOLUTION({EVO_LEVEL_RAIN, 50, SPECIES_GOODRA}, - {EVO_LEVEL_FOG, 50, SPECIES_GOODRA}), + .evolutions = EVOLUTION({EVO_LEVEL, 50, SPECIES_GOODRA, CONDITIONS({IF_WEATHER, WEATHER_RAIN})}, + {EVO_LEVEL, 50, SPECIES_GOODRA, CONDITIONS({IF_WEATHER, WEATHER_FOG})}), }, [SPECIES_GOODRA] = @@ -4499,6 +4558,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .shinyPalette = gMonShinyPalette_Goodra, .iconSprite = gMonIcon_Goodra, .iconPalIndex = 5, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-2, 14, SHADOW_SIZE_M) FOOTPRINT(Goodra) OVERWORLD( @@ -4564,6 +4624,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .shinyPalette = gMonShinyPalette_SliggooHisui, .iconSprite = gMonIcon_SliggooHisui, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, SHADOW(2, 6, SHADOW_SIZE_M) FOOTPRINT(Sliggoo) OVERWORLD( @@ -4579,8 +4640,9 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .levelUpLearnset = sSliggooHisuiLevelUpLearnset, .teachableLearnset = sSliggooHisuiTeachableLearnset, .formSpeciesIdTable = sSliggooFormSpeciesIdTable, - .evolutions = EVOLUTION({EVO_LEVEL_RAIN, 50, SPECIES_GOODRA_HISUI}, - {EVO_LEVEL_FOG, 50, SPECIES_GOODRA_HISUI}), + .evolutions = EVOLUTION({EVO_LEVEL, 50, SPECIES_GOODRA_HISUI, CONDITIONS({IF_WEATHER, WEATHER_RAIN})}, + {EVO_LEVEL, 50, SPECIES_GOODRA_HISUI, CONDITIONS({IF_WEATHER, WEATHER_FOG})}), + }, [SPECIES_GOODRA_HISUI] = @@ -4630,6 +4692,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .shinyPalette = gMonShinyPalette_GoodraHisui, .iconSprite = gMonIcon_GoodraHisui, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 12, SHADOW_SIZE_M) FOOTPRINT(Goodra) OVERWORLD( @@ -4709,6 +4772,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .shinyPalette = gMonShinyPalette_Klefki, .iconSprite = gMonIcon_Klefki, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 12, SHADOW_SIZE_S) FOOTPRINT(Klefki) OVERWORLD( @@ -4779,6 +4843,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .shinyPalette = gMonShinyPalette_Phantump, .iconSprite = gMonIcon_Phantump, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 5, SHADOW_SIZE_S) FOOTPRINT(Phantump) OVERWORLD( @@ -4851,6 +4916,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .shinyPalette = gMonShinyPalette_Trevenant, .iconSprite = gMonIcon_Trevenant, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 13, SHADOW_SIZE_M) FOOTPRINT(Trevenant) OVERWORLD( @@ -4915,6 +4981,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .shinyPalette = gMonShinyPalette_Pumpkaboo, .iconSprite = gMonIcon_Pumpkaboo, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 1, SHADOW_SIZE_S) FOOTPRINT(Pumpkaboo) OVERWORLD( @@ -4980,6 +5047,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .shinyPalette = gMonShinyPalette_Pumpkaboo, .iconSprite = gMonIcon_Pumpkaboo, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, -1, SHADOW_SIZE_S) FOOTPRINT(Pumpkaboo) OVERWORLD( @@ -5045,6 +5113,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .shinyPalette = gMonShinyPalette_Pumpkaboo, .iconSprite = gMonIcon_Pumpkaboo, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 2, SHADOW_SIZE_S) FOOTPRINT(Pumpkaboo) OVERWORLD( @@ -5112,6 +5181,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .shinyPalette = gMonShinyPalette_Pumpkaboo, .iconSprite = gMonIcon_Pumpkaboo, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 4, SHADOW_SIZE_S) FOOTPRINT(Pumpkaboo) OVERWORLD( @@ -5178,6 +5248,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .shinyPalette = gMonShinyPalette_Gourgeist, .iconSprite = gMonIcon_Gourgeist, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(3, 10, SHADOW_SIZE_M) FOOTPRINT(Gourgeist) OVERWORLD( @@ -5241,6 +5312,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .shinyPalette = gMonShinyPalette_Gourgeist, .iconSprite = gMonIcon_Gourgeist, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(4, 9, SHADOW_SIZE_S) FOOTPRINT(Gourgeist) OVERWORLD( @@ -5304,6 +5376,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .shinyPalette = gMonShinyPalette_Gourgeist, .iconSprite = gMonIcon_Gourgeist, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(4, 12, SHADOW_SIZE_M) FOOTPRINT(Gourgeist) OVERWORLD( @@ -5369,6 +5442,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .shinyPalette = gMonShinyPalette_Gourgeist, .iconSprite = gMonIcon_Gourgeist, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(4, 14, SHADOW_SIZE_M) FOOTPRINT(Gourgeist) OVERWORLD( @@ -5446,6 +5520,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .shinyPalette = gMonShinyPalette_Bergmite, .iconSprite = gMonIcon_Bergmite, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, -1, SHADOW_SIZE_S) FOOTPRINT(Bergmite) OVERWORLD( @@ -5516,6 +5591,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .shinyPalette = gMonShinyPalette_Avalugg, .iconSprite = gMonIcon_Avalugg, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, -1, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Avalugg) OVERWORLD( @@ -5579,6 +5655,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .shinyPalette = gMonShinyPalette_AvaluggHisui, .iconSprite = gMonIcon_AvaluggHisui, .iconPalIndex = 5, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(2, -2, SHADOW_SIZE_L) FOOTPRINT(Avalugg) OVERWORLD( @@ -5660,6 +5737,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .shinyPalette = gMonShinyPalette_Noibat, .iconSprite = gMonIcon_Noibat, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(2, 11, SHADOW_SIZE_L) FOOTPRINT(Noibat) OVERWORLD( @@ -5731,6 +5809,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .shinyPalette = gMonShinyPalette_Noivern, .iconSprite = gMonIcon_Noivern, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(5, 10, SHADOW_SIZE_L) FOOTPRINT(Noivern) OVERWORLD( @@ -5791,6 +5870,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .shinyPalette = gMonShinyPalette_XerneasNeutral, .iconSprite = gMonIcon_XerneasNeutral, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(3, 14, SHADOW_SIZE_M) FOOTPRINT(Xerneas) OVERWORLD( @@ -5854,6 +5934,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .shinyPalette = gMonShinyPalette_XerneasActive, .iconSprite = gMonIcon_XerneasActive, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(3, 14, SHADOW_SIZE_M) FOOTPRINT(Xerneas) OVERWORLD( @@ -5929,6 +6010,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .shinyPalette = gMonShinyPalette_Yveltal, .iconSprite = gMonIcon_Yveltal, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 16, SHADOW_SIZE_L) FOOTPRINT(Yveltal) OVERWORLD( @@ -5993,6 +6075,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .shinyPalette = gMonShinyPalette_Zygarde50, .iconSprite = gMonIcon_Zygarde50, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 13, SHADOW_SIZE_L) FOOTPRINT(Zygarde) OVERWORLD( @@ -6056,6 +6139,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .shinyPalette = gMonShinyPalette_Zygarde50, .iconSprite = gMonIcon_Zygarde50, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 13, SHADOW_SIZE_L) FOOTPRINT(Zygarde) OVERWORLD( @@ -6119,6 +6203,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .shinyPalette = gMonShinyPalette_Zygarde10, .iconSprite = gMonIcon_Zygarde10, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 11, SHADOW_SIZE_L) FOOTPRINT(Zygarde) OVERWORLD( @@ -6183,6 +6268,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .shinyPalette = gMonShinyPalette_Zygarde10, .iconSprite = gMonIcon_Zygarde10, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 11, SHADOW_SIZE_L) FOOTPRINT(Zygarde) OVERWORLD( @@ -6255,6 +6341,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .shinyPalette = gMonShinyPalette_ZygardeComplete, .iconSprite = gMonIcon_ZygardeComplete, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-3, 13, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Zygarde) OVERWORLD( @@ -6329,6 +6416,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .shinyPalette = gMonShinyPalette_Diancie, .iconSprite = gMonIcon_Diancie, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 13, SHADOW_SIZE_S) FOOTPRINT(Diancie) OVERWORLD( @@ -6398,6 +6486,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .shinyPalette = gMonShinyPalette_DiancieMega, .iconSprite = gMonIcon_DiancieMega, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 12, SHADOW_SIZE_M) FOOTPRINT(Diancie) #if OW_BATTLE_ONLY_FORMS @@ -6482,6 +6571,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .shinyPalette = gMonShinyPalette_HoopaConfined, .iconSprite = gMonIcon_HoopaConfined, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 13, SHADOW_SIZE_S) FOOTPRINT(Hoopa) OVERWORLD( @@ -6553,6 +6643,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .shinyPalette = gMonShinyPalette_HoopaUnbound, .iconSprite = gMonIcon_HoopaUnbound, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 14, SHADOW_SIZE_L) FOOTPRINT(Hoopa) OVERWORLD( @@ -6625,6 +6716,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .shinyPalette = gMonShinyPalette_Volcanion, .iconSprite = gMonIcon_Volcanion, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 12, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Volcanion) OVERWORLD( diff --git a/src/data/pokemon/species_info/gen_7_families.h b/src/data/pokemon/species_info/gen_7_families.h index ec710173a9..d264f830ad 100644 --- a/src/data/pokemon/species_info/gen_7_families.h +++ b/src/data/pokemon/species_info/gen_7_families.h @@ -54,6 +54,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_Rowlet, .iconSprite = gMonIcon_Rowlet, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(-1, 1, SHADOW_SIZE_S) FOOTPRINT(Rowlet) OVERWORLD( @@ -122,6 +123,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_Dartrix, .iconSprite = gMonIcon_Dartrix, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(0, 5, SHADOW_SIZE_S) FOOTPRINT(Dartrix) OVERWORLD( @@ -189,6 +191,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_Decidueye, .iconSprite = gMonIcon_Decidueye, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 13, SHADOW_SIZE_S) FOOTPRINT(Decidueye) OVERWORLD( @@ -253,6 +256,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_DecidueyeHisui, .iconSprite = gMonIcon_DecidueyeHisui, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 14, SHADOW_SIZE_L) FOOTPRINT(Decidueye) OVERWORLD( @@ -320,6 +324,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_Litten, .iconSprite = gMonIcon_Litten, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(1, 1, SHADOW_SIZE_S) FOOTPRINT(Litten) OVERWORLD( @@ -384,6 +389,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_Torracat, .iconSprite = gMonIcon_Torracat, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(5, 7, SHADOW_SIZE_M) FOOTPRINT(Torracat) OVERWORLD( @@ -447,6 +453,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_Incineroar, .iconSprite = gMonIcon_Incineroar, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(4, 14, SHADOW_SIZE_L) FOOTPRINT(Incineroar) OVERWORLD( @@ -511,6 +518,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_Popplio, .iconSprite = gMonIcon_Popplio, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, SHADOW(0, 1, SHADOW_SIZE_S) FOOTPRINT(Popplio) OVERWORLD( @@ -575,6 +583,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_Brionne, .iconSprite = gMonIcon_Brionne, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, SHADOW(-5, 6, SHADOW_SIZE_M) FOOTPRINT(Brionne) OVERWORLD( @@ -638,6 +647,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_Primarina, .iconSprite = gMonIcon_Primarina, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-6, 11, SHADOW_SIZE_L) FOOTPRINT(Primarina) OVERWORLD( @@ -707,6 +717,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_Pikipek, .iconSprite = gMonIcon_Pikipek, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 3, SHADOW_SIZE_S) FOOTPRINT(Pikipek) OVERWORLD( @@ -777,6 +788,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_Trumbeak, .iconSprite = gMonIcon_Trumbeak, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 8, SHADOW_SIZE_S) FOOTPRINT(Trumbeak) OVERWORLD( @@ -844,6 +856,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_Toucannon, .iconSprite = gMonIcon_Toucannon, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(9, 12, SHADOW_SIZE_M) FOOTPRINT(Toucannon) OVERWORLD( @@ -909,6 +922,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_Yungoos, .iconSprite = gMonIcon_Yungoos, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(-9, 1, SHADOW_SIZE_M) FOOTPRINT(Yungoos) OVERWORLD( @@ -923,7 +937,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .levelUpLearnset = sYungoosLevelUpLearnset, .teachableLearnset = sYungoosTeachableLearnset, .eggMoveLearnset = sYungoosEggMoveLearnset, - .evolutions = EVOLUTION({EVO_LEVEL_DAY, 20, SPECIES_GUMSHOOS}), + .evolutions = EVOLUTION({EVO_LEVEL, 20, SPECIES_GUMSHOOS, CONDITIONS({IF_NOT_TIME, TIME_NIGHT})}), }, [SPECIES_GUMSHOOS] = @@ -970,6 +984,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_Gumshoos, .iconSprite = gMonIcon_Gumshoos, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(-2, 8, SHADOW_SIZE_M) FOOTPRINT(Gumshoos) OVERWORLD( @@ -1030,6 +1045,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_Gumshoos, .iconSprite = gMonIcon_Gumshoos, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-2, 8, SHADOW_SIZE_M) FOOTPRINT(Gumshoos) OVERWORLD( @@ -1097,6 +1113,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_Grubbin, .iconSprite = gMonIcon_Grubbin, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, SHADOW(0, -4, SHADOW_SIZE_M) FOOTPRINT(Grubbin) OVERWORLD( @@ -1166,6 +1183,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_Charjabug, .iconSprite = gMonIcon_Charjabug, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, NO_SHADOW FOOTPRINT(Charjabug) OVERWORLD( @@ -1179,7 +1197,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = ) .levelUpLearnset = sCharjabugLevelUpLearnset, .teachableLearnset = sCharjabugTeachableLearnset, - .evolutions = EVOLUTION({EVO_MAPSEC, MAPSEC_NEW_MAUVILLE, SPECIES_VIKAVOLT}, + .evolutions = EVOLUTION({EVO_LEVEL, 0, SPECIES_VIKAVOLT, CONDITIONS({IF_IN_MAPSEC, MAPSEC_NEW_MAUVILLE})}, {EVO_ITEM, ITEM_THUNDER_STONE, SPECIES_VIKAVOLT}, {EVO_NONE, 0, SPECIES_VIKAVOLT_TOTEM}), }, @@ -1228,6 +1246,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_Vikavolt, .iconSprite = gMonIcon_Vikavolt, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 16, SHADOW_SIZE_S) FOOTPRINT(Vikavolt) OVERWORLD( @@ -1296,6 +1315,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_Vikavolt, .iconSprite = gMonIcon_Vikavolt, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 16, SHADOW_SIZE_S) FOOTPRINT(Vikavolt) OVERWORLD( @@ -1364,6 +1384,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_Crabrawler, .iconSprite = gMonIcon_Crabrawler, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, SHADOW(7, 6, SHADOW_SIZE_M) FOOTPRINT(Crabrawler) OVERWORLD( @@ -1378,7 +1399,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .levelUpLearnset = sCrabrawlerLevelUpLearnset, .teachableLearnset = sCrabrawlerTeachableLearnset, .eggMoveLearnset = sCrabrawlerEggMoveLearnset, - .evolutions = EVOLUTION({EVO_SPECIFIC_MAP, MAP_SHOAL_CAVE_LOW_TIDE_ICE_ROOM, SPECIES_CRABOMINABLE}, + .evolutions = EVOLUTION({EVO_LEVEL, 0, SPECIES_CRABOMINABLE, CONDITIONS({IF_IN_MAP, MAP_SHOAL_CAVE_LOW_TIDE_ICE_ROOM})}, {EVO_ITEM, ITEM_ICE_STONE, SPECIES_CRABOMINABLE}), }, @@ -1430,6 +1451,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_Crabominable, .iconSprite = gMonIcon_Crabominable, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 14, SHADOW_SIZE_L) FOOTPRINT(Crabominable) OVERWORLD( @@ -1495,6 +1517,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_OricorioBaile, .iconSprite = gMonIcon_OricorioBaile, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-4, 9, SHADOW_SIZE_S) FOOTPRINT(Oricorio) OVERWORLD( @@ -1561,6 +1584,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_OricorioPomPom, .iconSprite = gMonIcon_OricorioPomPom, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(5, 8, SHADOW_SIZE_S) FOOTPRINT(Oricorio) OVERWORLD( @@ -1627,6 +1651,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_OricorioPau, .iconSprite = gMonIcon_OricorioPau, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-3, 11, SHADOW_SIZE_S) FOOTPRINT(Oricorio) OVERWORLD( @@ -1693,6 +1718,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_OricorioSensu, .iconSprite = gMonIcon_OricorioSensu, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(7, 10, SHADOW_SIZE_S) FOOTPRINT(Oricorio) OVERWORLD( @@ -1795,6 +1821,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_Cutiefly, .iconSprite = gMonIcon_Cutiefly, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 5, SHADOW_SIZE_S) FOOTPRINT(Cutiefly) OVERWORLD( @@ -1858,6 +1885,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_Ribombee, .iconSprite = gMonIcon_Ribombee, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 12, SHADOW_SIZE_S) FOOTPRINT(Ribombee) OVERWORLD( @@ -1919,6 +1947,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_Ribombee, .iconSprite = gMonIcon_Ribombee, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 12, SHADOW_SIZE_S) FOOTPRINT(Ribombee) OVERWORLD( @@ -1982,6 +2011,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_Rockruff, .iconSprite = gMonIcon_Rockruff, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(-2, 2, SHADOW_SIZE_S) FOOTPRINT(Rockruff) OVERWORLD( @@ -1997,8 +2027,8 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .teachableLearnset = sRockruffTeachableLearnset, .eggMoveLearnset = sRockruffEggMoveLearnset, .formSpeciesIdTable = sRockruffFormSpeciesIdTable, - .evolutions = EVOLUTION({EVO_LEVEL_DAY, 25, SPECIES_LYCANROC_MIDDAY}, - {EVO_LEVEL_NIGHT, 25, SPECIES_LYCANROC_MIDNIGHT}), + .evolutions = EVOLUTION({EVO_LEVEL, 25, SPECIES_LYCANROC_MIDDAY, CONDITIONS({IF_NOT_TIME, TIME_NIGHT})}, + {EVO_LEVEL, 25, SPECIES_LYCANROC_MIDNIGHT, CONDITIONS({IF_TIME, TIME_NIGHT})}), }, [SPECIES_ROCKRUFF_OWN_TEMPO] = @@ -2044,6 +2074,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_Rockruff, .iconSprite = gMonIcon_Rockruff, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(-2, 2, SHADOW_SIZE_S) FOOTPRINT(Rockruff) OVERWORLD( @@ -2059,7 +2090,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .teachableLearnset = sRockruffTeachableLearnset, .eggMoveLearnset = sRockruffEggMoveLearnset, .formSpeciesIdTable = sRockruffFormSpeciesIdTable, - .evolutions = EVOLUTION({EVO_LEVEL_DUSK, 25, SPECIES_LYCANROC_DUSK}), + .evolutions = EVOLUTION({EVO_LEVEL, 25, SPECIES_LYCANROC_DUSK, CONDITIONS({IF_TIME, TIME_EVENING})}), }, [SPECIES_LYCANROC_MIDDAY] = @@ -2112,6 +2143,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_LycanrocMidday, .iconSprite = gMonIcon_LycanrocMidday, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(5, 7, SHADOW_SIZE_L) FOOTPRINT(Lycanroc) OVERWORLD( @@ -2178,6 +2210,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_LycanrocMidnight, .iconSprite = gMonIcon_LycanrocMidnight, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(5, 13, SHADOW_SIZE_L) FOOTPRINT(Lycanroc) OVERWORLD( @@ -2244,6 +2277,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_LycanrocDusk, .iconSprite = gMonIcon_LycanrocDusk, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(5, 7, SHADOW_SIZE_L) FOOTPRINT(Lycanroc) OVERWORLD( @@ -2310,6 +2344,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_WishiwashiSolo, .iconSprite = gMonIcon_WishiwashiSolo, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 3, SHADOW_SIZE_S) FOOTPRINT(Wishiwashi) OVERWORLD( @@ -2375,6 +2410,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_WishiwashiSchool, .iconSprite = gMonIcon_WishiwashiSchool, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-4, 7, SHADOW_SIZE_L) FOOTPRINT(Wishiwashi) .levelUpLearnset = sWishiwashiLevelUpLearnset, @@ -2434,6 +2470,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_Mareanie, .iconSprite = gMonIcon_Mareanie, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, SHADOW(0, -1, SHADOW_SIZE_M) FOOTPRINT(Mareanie) OVERWORLD( @@ -2499,6 +2536,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_Toxapex, .iconSprite = gMonIcon_Toxapex, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 6, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Toxapex) OVERWORLD( @@ -2564,6 +2602,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_Mudbray, .iconSprite = gMonIcon_Mudbray, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(2, 6, SHADOW_SIZE_M) FOOTPRINT(Mudbray) OVERWORLD( @@ -2629,6 +2668,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_Mudsdale, .iconSprite = gMonIcon_Mudsdale, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(4, 13, SHADOW_SIZE_L) FOOTPRINT(Mudsdale) OVERWORLD( @@ -2701,6 +2741,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_Dewpider, .iconSprite = gMonIcon_Dewpider, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(1, 2, SHADOW_SIZE_S) FOOTPRINT(Dewpider) OVERWORLD( @@ -2763,6 +2804,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_Araquanid, .iconSprite = gMonIcon_Araquanid, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-6, 9, SHADOW_SIZE_M) FOOTPRINT(Araquanid) OVERWORLD( @@ -2823,6 +2865,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_Araquanid, .iconSprite = gMonIcon_Araquanid, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-6, 9, SHADOW_SIZE_S) FOOTPRINT(Araquanid) OVERWORLD( @@ -2891,6 +2934,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_Fomantis, .iconSprite = gMonIcon_Fomantis, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, SHADOW(0, 3, SHADOW_SIZE_S) FOOTPRINT(Fomantis) OVERWORLD( @@ -2905,7 +2949,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .levelUpLearnset = sFomantisLevelUpLearnset, .teachableLearnset = sFomantisTeachableLearnset, .eggMoveLearnset = sFomantisEggMoveLearnset, - .evolutions = EVOLUTION({EVO_LEVEL_DAY, 34, SPECIES_LURANTIS}, + .evolutions = EVOLUTION({EVO_LEVEL, 34, SPECIES_LURANTIS, CONDITIONS({IF_NOT_TIME, TIME_NIGHT})}, {EVO_NONE, 0, SPECIES_LURANTIS_TOTEM}), }, @@ -2957,6 +3001,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_Lurantis, .iconSprite = gMonIcon_Lurantis, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 12, SHADOW_SIZE_S) FOOTPRINT(Lurantis) OVERWORLD( @@ -3017,6 +3062,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_Lurantis, .iconSprite = gMonIcon_Lurantis, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 12, SHADOW_SIZE_S) FOOTPRINT(Lurantis) OVERWORLD( @@ -3086,6 +3132,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_Morelull, .iconSprite = gMonIcon_Morelull, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, SHADOW(-1, 4, SHADOW_SIZE_S) FOOTPRINT(Morelull) OVERWORLD( @@ -3152,6 +3199,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_Shiinotic, .iconSprite = gMonIcon_Shiinotic, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 10, SHADOW_SIZE_S) FOOTPRINT(Shiinotic) OVERWORLD( @@ -3221,6 +3269,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_Salandit, .iconSprite = gMonIcon_Salandit, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(3, 1, SHADOW_SIZE_M) FOOTPRINT(Salandit) OVERWORLD( @@ -3235,7 +3284,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .levelUpLearnset = sSalanditLevelUpLearnset, .teachableLearnset = sSalanditTeachableLearnset, .eggMoveLearnset = sSalanditEggMoveLearnset, - .evolutions = EVOLUTION({EVO_LEVEL_FEMALE, 33, SPECIES_SALAZZLE}, + .evolutions = EVOLUTION({EVO_LEVEL, 33, SPECIES_SALAZZLE, CONDITIONS({IF_GENDER, MON_FEMALE})}, {EVO_NONE, 0, SPECIES_SALAZZLE_TOTEM}), }, @@ -3283,6 +3332,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_Salazzle, .iconSprite = gMonIcon_Salazzle, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-4, 9, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Salazzle) OVERWORLD( @@ -3343,6 +3393,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_Salazzle, .iconSprite = gMonIcon_Salazzle, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-4, 9, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Salazzle) OVERWORLD( @@ -3414,6 +3465,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_Stufful, .iconSprite = gMonIcon_Stufful, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(0, 3, SHADOW_SIZE_M) FOOTPRINT(Stufful) OVERWORLD( @@ -3482,6 +3534,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_Bewear, .iconSprite = gMonIcon_Bewear, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 13, SHADOW_SIZE_M) FOOTPRINT(Bewear) OVERWORLD( @@ -3547,6 +3600,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_Bounsweet, .iconSprite = gMonIcon_Bounsweet, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(-2, -3, SHADOW_SIZE_S) FOOTPRINT(Bounsweet) OVERWORLD( @@ -3613,6 +3667,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_Steenee, .iconSprite = gMonIcon_Steenee, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(-2, 7, SHADOW_SIZE_S) FOOTPRINT(Steenee) OVERWORLD( @@ -3626,7 +3681,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = ) .levelUpLearnset = sSteeneeLevelUpLearnset, .teachableLearnset = sSteeneeTeachableLearnset, - .evolutions = EVOLUTION({EVO_MOVE, MOVE_STOMP, SPECIES_TSAREENA}), + .evolutions = EVOLUTION({EVO_LEVEL, 0, SPECIES_TSAREENA, CONDITIONS({IF_KNOWS_MOVE, MOVE_STOMP})}), }, [SPECIES_TSAREENA] = @@ -3678,6 +3733,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_Tsareena, .iconSprite = gMonIcon_Tsareena, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 13, SHADOW_SIZE_M) FOOTPRINT(Tsareena) OVERWORLD( @@ -3745,6 +3801,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_Comfey, .iconSprite = gMonIcon_Comfey, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 10, SHADOW_SIZE_M) FOOTPRINT(Comfey) OVERWORLD( @@ -3813,6 +3870,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_Oranguru, .iconSprite = gMonIcon_Oranguru, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-2, 6, SHADOW_SIZE_M) FOOTPRINT(Oranguru) OVERWORLD( @@ -3881,6 +3939,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_Passimian, .iconSprite = gMonIcon_Passimian, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-4, 12, SHADOW_SIZE_L) FOOTPRINT(Passimian) OVERWORLD( @@ -3950,6 +4009,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_Wimpod, .iconSprite = gMonIcon_Wimpod, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(-4, -3, SHADOW_SIZE_S) FOOTPRINT(Wimpod) OVERWORLD( @@ -4018,6 +4078,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_Golisopod, .iconSprite = gMonIcon_Golisopod, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(2, 13, SHADOW_SIZE_L) FOOTPRINT(Golisopod) OVERWORLD( @@ -4083,6 +4144,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_Sandygast, .iconSprite = gMonIcon_Sandygast, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, NO_SHADOW FOOTPRINT(Sandygast) OVERWORLD( @@ -4148,6 +4210,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_Palossand, .iconSprite = gMonIcon_Palossand, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, NO_SHADOW FOOTPRINT(Palossand) OVERWORLD( @@ -4216,6 +4279,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_Pyukumuku, .iconSprite = gMonIcon_Pyukumuku, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(-3, -3, SHADOW_SIZE_S) FOOTPRINT(Pyukumuku) OVERWORLD( @@ -4281,6 +4345,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_TypeNull, .iconSprite = gMonIcon_TypeNull, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 11, SHADOW_SIZE_L) FOOTPRINT(Type_Null) OVERWORLD( @@ -4296,7 +4361,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .perfectIVCount = LEGENDARY_PERFECT_IV_COUNT, .levelUpLearnset = sTypeNullLevelUpLearnset, .teachableLearnset = sTypeNullTeachableLearnset, - .evolutions = EVOLUTION({EVO_FRIENDSHIP, 0, SPECIES_SILVALLY_NORMAL}), + .evolutions = EVOLUTION({EVO_LEVEL, 0, SPECIES_SILVALLY_NORMAL, CONDITIONS({IF_MIN_FRIENDSHIP, FRIENDSHIP_EVO_THRESHOLD})}), }, #define SILVALLY_SPECIES_INFO(type, _palette) \ @@ -4344,6 +4409,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_Silvally##_palette, \ .iconSprite = gMonIcon_Silvally, \ .iconPalIndex = 0, \ + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, \ SHADOW(1, 13, SHADOW_SIZE_L) \ FOOTPRINT(Silvally) \ OVERWORLD( \ @@ -4437,6 +4503,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_MiniorMeteor, \ .iconSprite = gMonIcon_MiniorMeteor, \ .iconPalIndex = 0, \ + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, \ SHADOW(0, 14, SHADOW_SIZE_S) \ OVERWORLD( \ sPicTable_MiniorMeteor, \ @@ -4475,6 +4542,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_MiniorCore, \ .iconSprite = gMonIcon_MiniorCore##Form, \ .iconPalIndex = iconPal, \ + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, \ SHADOW(-2, 12, SHADOW_SIZE_S) \ .formChangeTable = sMinior ##Form##FormChangeTable, \ MINIOR_MISC_INFO(color), \ @@ -4544,6 +4612,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_Komala, .iconSprite = gMonIcon_Komala, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, SHADOW(-4, 0, SHADOW_SIZE_S) FOOTPRINT(Komala) OVERWORLD( @@ -4614,6 +4683,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_Turtonator, .iconSprite = gMonIcon_Turtonator, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-3, 12, SHADOW_SIZE_L) FOOTPRINT(Turtonator) OVERWORLD( @@ -4676,6 +4746,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_Togedemaru, .iconSprite = gMonIcon_Togedemaru, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(-1, 4, SHADOW_SIZE_S) FOOTPRINT(Togedemaru) OVERWORLD( @@ -4737,6 +4808,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_Togedemaru, .iconSprite = gMonIcon_Togedemaru, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(-1, 4, SHADOW_SIZE_S) FOOTPRINT(Togedemaru) OVERWORLD( @@ -4802,6 +4874,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_MimikyuDisguised, .iconSprite = gMonIcon_MimikyuDisguised, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(-3, 1, SHADOW_SIZE_S) FOOTPRINT(Mimikyu) OVERWORLD( @@ -4864,6 +4937,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_MimikyuBusted, .iconSprite = gMonIcon_MimikyuBusted, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(-3, 1, SHADOW_SIZE_S) FOOTPRINT(Mimikyu) .levelUpLearnset = sMimikyuLevelUpLearnset, @@ -4917,6 +4991,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_MimikyuDisguised, .iconSprite = gMonIcon_MimikyuDisguised, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-3, 1, SHADOW_SIZE_S) FOOTPRINT(Mimikyu) OVERWORLD( @@ -4981,6 +5056,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_MimikyuBusted, .iconSprite = gMonIcon_MimikyuBusted, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-3, 1, SHADOW_SIZE_S) FOOTPRINT(Mimikyu) .isTotem = TRUE, @@ -5042,6 +5118,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_Bruxish, .iconSprite = gMonIcon_Bruxish, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, -1, SHADOW_SIZE_M) FOOTPRINT(Bruxish) OVERWORLD( @@ -5111,6 +5188,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_Drampa, .iconSprite = gMonIcon_Drampa, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(5, 13, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Drampa) OVERWORLD( @@ -5178,6 +5256,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_Dhelmise, .iconSprite = gMonIcon_Dhelmise, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 12, SHADOW_SIZE_M) FOOTPRINT(Dhelmise) OVERWORLD( @@ -5246,6 +5325,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_JangmoO, .iconSprite = gMonIcon_JangmoO, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(0, 5, SHADOW_SIZE_S) FOOTPRINT(JangmoO) OVERWORLD( @@ -5314,6 +5394,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_HakamoO, .iconSprite = gMonIcon_HakamoO, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-2, 12, SHADOW_SIZE_M) FOOTPRINT(HakamoO) OVERWORLD( @@ -5375,6 +5456,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_KommoO, .iconSprite = gMonIcon_KommoO, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 13, SHADOW_SIZE_L) FOOTPRINT(KommoO) OVERWORLD( @@ -5441,6 +5523,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_KommoO, .iconSprite = gMonIcon_KommoO, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 13, SHADOW_SIZE_L) FOOTPRINT(KommoO) OVERWORLD( @@ -5517,6 +5600,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_TapuKoko, .iconSprite = gMonIcon_TapuKoko, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 19, SHADOW_SIZE_M) FOOTPRINT(TapuKoko) OVERWORLD( @@ -5588,6 +5672,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_TapuLele, .iconSprite = gMonIcon_TapuLele, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 13, SHADOW_SIZE_S) FOOTPRINT(TapuLele) OVERWORLD( @@ -5661,6 +5746,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_TapuBulu, .iconSprite = gMonIcon_TapuBulu, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(4, 16, SHADOW_SIZE_M) FOOTPRINT(TapuBulu) OVERWORLD( @@ -5733,6 +5819,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_TapuFini, .iconSprite = gMonIcon_TapuFini, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 15, SHADOW_SIZE_M) FOOTPRINT(TapuFini) OVERWORLD( @@ -5800,6 +5887,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_Cosmog, .iconSprite = gMonIcon_Cosmog, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 8, SHADOW_SIZE_S) FOOTPRINT(Cosmog) OVERWORLD( @@ -5869,6 +5957,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_Cosmoem, .iconSprite = gMonIcon_Cosmoem, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 5, SHADOW_SIZE_M) FOOTPRINT(Cosmoem) OVERWORLD( @@ -5886,8 +5975,8 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .perfectIVCount = LEGENDARY_PERFECT_IV_COUNT, .levelUpLearnset = sCosmoemLevelUpLearnset, .teachableLearnset = sCosmoemTeachableLearnset, - .evolutions = EVOLUTION({EVO_LEVEL_DAY, 53, SPECIES_SOLGALEO}, - {EVO_LEVEL_NIGHT, 53, SPECIES_LUNALA}), + .evolutions = EVOLUTION({EVO_LEVEL, 53, SPECIES_SOLGALEO, CONDITIONS({IF_NOT_TIME, TIME_NIGHT})}, + {EVO_LEVEL, 53, SPECIES_LUNALA, CONDITIONS({IF_TIME, TIME_NIGHT})}), }, [SPECIES_SOLGALEO] = @@ -5937,6 +6026,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_Solgaleo, .iconSprite = gMonIcon_Solgaleo, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 11, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Solgaleo) OVERWORLD( @@ -6003,6 +6093,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_Lunala, .iconSprite = gMonIcon_Lunala, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(4, 17, SHADOW_SIZE_L) FOOTPRINT(Lunala) OVERWORLD( @@ -6071,6 +6162,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_Nihilego, .iconSprite = gMonIcon_Nihilego, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-2, 14, SHADOW_SIZE_S) FOOTPRINT(Nihilego) OVERWORLD( @@ -6138,6 +6230,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_Buzzwole, .iconSprite = gMonIcon_Buzzwole, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-2, 12, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Buzzwole) OVERWORLD( @@ -6204,6 +6297,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_Pheromosa, .iconSprite = gMonIcon_Pheromosa, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 13, SHADOW_SIZE_S) FOOTPRINT(Pheromosa) OVERWORLD( @@ -6270,6 +6364,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_Xurkitree, .iconSprite = gMonIcon_Xurkitree, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 13, SHADOW_SIZE_L) FOOTPRINT(Xurkitree) OVERWORLD( @@ -6338,6 +6433,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_Celesteela, .iconSprite = gMonIcon_Celesteela, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 13, SHADOW_SIZE_M) FOOTPRINT(Celesteela) OVERWORLD( @@ -6405,6 +6501,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_Kartana, .iconSprite = gMonIcon_Kartana, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(2, 14, SHADOW_SIZE_M) FOOTPRINT(Kartana) OVERWORLD( @@ -6471,6 +6568,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_Guzzlord, .iconSprite = gMonIcon_Guzzlord, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(4, 10, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Guzzlord) OVERWORLD( @@ -6540,6 +6638,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_Necrozma, .iconSprite = gMonIcon_Necrozma, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 15, SHADOW_SIZE_M) FOOTPRINT(Necrozma) OVERWORLD( @@ -6608,6 +6707,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_NecrozmaDuskMane, .iconSprite = gMonIcon_NecrozmaDuskMane, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-3, 11, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Necrozma) OVERWORLD( @@ -6678,6 +6778,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_NecrozmaDawnWings, .iconSprite = gMonIcon_NecrozmaDawnWings, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(3, 17, SHADOW_SIZE_L) FOOTPRINT(Necrozma) OVERWORLD( @@ -6751,6 +6852,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_NecrozmaUltra, .iconSprite = gMonIcon_NecrozmaUltra, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 16, SHADOW_SIZE_L) FOOTPRINT(Necrozma) #if OW_BATTLE_ONLY_FORMS @@ -6825,6 +6927,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_Magearna, .iconSprite = gMonIcon_Magearna, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-2, 14, SHADOW_SIZE_M) FOOTPRINT(Magearna) OVERWORLD( @@ -6890,6 +6993,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_MagearnaOriginal, .iconSprite = gMonIcon_MagearnaOriginal, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-2, 14, SHADOW_SIZE_M) FOOTPRINT(Magearna) OVERWORLD( @@ -6964,6 +7068,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_Marshadow, .iconSprite = gMonIcon_Marshadow, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, SHADOW(0, 5, SHADOW_SIZE_S) FOOTPRINT(Marshadow) OVERWORLD( @@ -7031,6 +7136,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_Poipole, .iconSprite = gMonIcon_Poipole, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 12, SHADOW_SIZE_S) FOOTPRINT(Poipole) OVERWORLD( @@ -7046,7 +7152,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .perfectIVCount = LEGENDARY_PERFECT_IV_COUNT, .levelUpLearnset = sPoipoleLevelUpLearnset, .teachableLearnset = sPoipoleTeachableLearnset, - .evolutions = EVOLUTION({EVO_MOVE, MOVE_DRAGON_PULSE, SPECIES_NAGANADEL}), + .evolutions = EVOLUTION({EVO_LEVEL, 0, SPECIES_NAGANADEL, CONDITIONS({IF_KNOWS_MOVE, MOVE_DRAGON_PULSE})}), }, [SPECIES_NAGANADEL] = @@ -7096,6 +7202,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_Naganadel, .iconSprite = gMonIcon_Naganadel, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(7, 17, SHADOW_SIZE_M) FOOTPRINT(Naganadel) OVERWORLD( @@ -7162,6 +7269,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_Stakataka, .iconSprite = gMonIcon_Stakataka, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(2, 15, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Stakataka) OVERWORLD( @@ -7228,6 +7336,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_Blacephalon, .iconSprite = gMonIcon_Blacephalon, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 13, SHADOW_SIZE_M) FOOTPRINT(Blacephalon) OVERWORLD( @@ -7293,6 +7402,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_Zeraora, .iconSprite = gMonIcon_Zeraora, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 9, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Zeraora) OVERWORLD( @@ -7359,6 +7469,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_Meltan, .iconSprite = gMonIcon_Meltan, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, SHADOW(-1, 2, SHADOW_SIZE_S) FOOTPRINT(Meltan) OVERWORLD( @@ -7423,6 +7534,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_Melmetal, .iconSprite = gMonIcon_Melmetal, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(3, 10, SHADOW_SIZE_L) FOOTPRINT(Melmetal) OVERWORLD( @@ -7491,6 +7603,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_MelmetalGmax, .iconSprite = gMonIcon_MelmetalGmax, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(2, 13, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Melmetal) .isMythical = TRUE, diff --git a/src/data/pokemon/species_info/gen_8_families.h b/src/data/pokemon/species_info/gen_8_families.h index 34c49eb0cc..8495287bf7 100644 --- a/src/data/pokemon/species_info/gen_8_families.h +++ b/src/data/pokemon/species_info/gen_8_families.h @@ -51,6 +51,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_Grookey, .iconSprite = gMonIcon_Grookey, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(1, 1, SHADOW_SIZE_S) FOOTPRINT(Grookey) OVERWORLD( @@ -114,6 +115,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_Thwackey, .iconSprite = gMonIcon_Thwackey, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(5, 6, SHADOW_SIZE_M) FOOTPRINT(Thwackey) OVERWORLD( @@ -176,6 +178,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_Rillaboom, .iconSprite = gMonIcon_Rillaboom, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(2, 8, SHADOW_SIZE_L) FOOTPRINT(Rillaboom) OVERWORLD( @@ -240,6 +243,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_RillaboomGmax, .iconSprite = gMonIcon_RillaboomGmax, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 8, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Rillaboom) .isGigantamax = TRUE, @@ -299,6 +303,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_Scorbunny, .iconSprite = gMonIcon_Scorbunny, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(-1, 6, SHADOW_SIZE_S) FOOTPRINT(Scorbunny) OVERWORLD( @@ -362,6 +367,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_Raboot, .iconSprite = gMonIcon_Raboot, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(-4, 5, SHADOW_SIZE_S) FOOTPRINT(Raboot) OVERWORLD( @@ -425,6 +431,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_Cinderace, .iconSprite = gMonIcon_Cinderace, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 14, SHADOW_SIZE_M) FOOTPRINT(Cinderace) OVERWORLD( @@ -490,6 +497,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_CinderaceGmax, .iconSprite = gMonIcon_CinderaceGmax, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-3, 13, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Cinderace) .isGigantamax = TRUE, @@ -550,6 +558,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_Sobble, .iconSprite = gMonIcon_Sobble, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, SHADOW(-3, 3, SHADOW_SIZE_S) FOOTPRINT(Sobble) OVERWORLD( @@ -613,6 +622,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_Drizzile, .iconSprite = gMonIcon_Drizzile, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, SHADOW(2, 5, SHADOW_SIZE_M) FOOTPRINT(Drizzile) OVERWORLD( @@ -676,6 +686,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_Inteleon, .iconSprite = gMonIcon_Inteleon, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-5, 12, SHADOW_SIZE_S) FOOTPRINT(Inteleon) OVERWORLD( @@ -741,6 +752,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_InteleonGmax, .iconSprite = gMonIcon_InteleonGmax, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-5, 12, SHADOW_SIZE_L) FOOTPRINT(Inteleon) .isGigantamax = TRUE, @@ -800,6 +812,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_Skwovet, .iconSprite = gMonIcon_Skwovet, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(-7, 5, SHADOW_SIZE_S) FOOTPRINT(Skwovet) OVERWORLD( @@ -865,6 +878,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_Greedent, .iconSprite = gMonIcon_Greedent, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-11, 10, SHADOW_SIZE_M) FOOTPRINT(Greedent) OVERWORLD( @@ -937,6 +951,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_Rookidee, .iconSprite = gMonIcon_Rookidee, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, -3, SHADOW_SIZE_S) FOOTPRINT(Rookidee) OVERWORLD( @@ -1010,6 +1025,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_Corvisquire, .iconSprite = gMonIcon_Corvisquire, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(2, 16, SHADOW_SIZE_S) FOOTPRINT(Corvisquire) OVERWORLD( @@ -1077,6 +1093,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_Corviknight, .iconSprite = gMonIcon_Corviknight, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 9, SHADOW_SIZE_L) FOOTPRINT(Corviknight) OVERWORLD( @@ -1142,6 +1159,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_CorviknightGmax, .iconSprite = gMonIcon_CorviknightGmax, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(2, 8, SHADOW_SIZE_L) FOOTPRINT(Corviknight) .isGigantamax = TRUE, @@ -1200,6 +1218,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_Blipbug, .iconSprite = gMonIcon_Blipbug, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, SHADOW(2, 1, SHADOW_SIZE_S) FOOTPRINT(Blipbug) OVERWORLD( @@ -1266,6 +1285,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_Dottler, .iconSprite = gMonIcon_Dottler, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, SHADOW(-1, 0, SHADOW_SIZE_M) FOOTPRINT(Dottler) OVERWORLD( @@ -1331,6 +1351,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_Orbeetle, .iconSprite = gMonIcon_Orbeetle, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 15, SHADOW_SIZE_M) FOOTPRINT(Orbeetle) OVERWORLD( @@ -1397,6 +1418,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_OrbeetleGmax, .iconSprite = gMonIcon_OrbeetleGmax, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 12, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Orbeetle) .isGigantamax = TRUE, @@ -1456,6 +1478,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_Nickit, .iconSprite = gMonIcon_Nickit, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(0, 4, SHADOW_SIZE_M) FOOTPRINT(Nickit) OVERWORLD( @@ -1520,6 +1543,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_Thievul, .iconSprite = gMonIcon_Thievul, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-9, 7, SHADOW_SIZE_M) FOOTPRINT(Thievul) OVERWORLD( @@ -1584,6 +1608,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_Gossifleur, .iconSprite = gMonIcon_Gossifleur, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, SHADOW(0, 2, SHADOW_SIZE_S) FOOTPRINT(Gossifleur) OVERWORLD( @@ -1648,6 +1673,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_Eldegoss, .iconSprite = gMonIcon_Eldegoss, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, SHADOW(-2, 8, SHADOW_SIZE_S) FOOTPRINT(Eldegoss) OVERWORLD( @@ -1712,6 +1738,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_Wooloo, .iconSprite = gMonIcon_Wooloo, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(1, 1, SHADOW_SIZE_S) FOOTPRINT(Wooloo) OVERWORLD( @@ -1776,6 +1803,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_Dubwool, .iconSprite = gMonIcon_Dubwool, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(2, 8, SHADOW_SIZE_M) FOOTPRINT(Dubwool) OVERWORLD( @@ -1843,6 +1871,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_Chewtle, .iconSprite = gMonIcon_Chewtle, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, SHADOW(3, 1, SHADOW_SIZE_S) FOOTPRINT(Chewtle) OVERWORLD( @@ -1910,6 +1939,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_Drednaw, .iconSprite = gMonIcon_Drednaw, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-2, 4, SHADOW_SIZE_L) FOOTPRINT(Drednaw) OVERWORLD( @@ -1975,6 +2005,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_DrednawGmax, .iconSprite = gMonIcon_DrednawGmax, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(2, 12, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Drednaw) .isGigantamax = TRUE, @@ -2034,6 +2065,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_Yamper, .iconSprite = gMonIcon_Yamper, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(-1, 2, SHADOW_SIZE_M) FOOTPRINT(Yamper) OVERWORLD( @@ -2098,6 +2130,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_Boltund, .iconSprite = gMonIcon_Boltund, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 7, SHADOW_SIZE_M) FOOTPRINT(Boltund) OVERWORLD( @@ -2162,6 +2195,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_Rolycoly, .iconSprite = gMonIcon_Rolycoly, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(0, -3, SHADOW_SIZE_S) FOOTPRINT(Rolycoly) OVERWORLD( @@ -2225,6 +2259,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_Carkol, .iconSprite = gMonIcon_Carkol, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 3, SHADOW_SIZE_M) FOOTPRINT(Carkol) OVERWORLD( @@ -2288,6 +2323,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_Coalossal, .iconSprite = gMonIcon_Coalossal, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 12, SHADOW_SIZE_L) FOOTPRINT(Coalossal) OVERWORLD( @@ -2353,6 +2389,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_CoalossalGmax, .iconSprite = gMonIcon_CoalossalGmax, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 12, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Coalossal) .isGigantamax = TRUE, @@ -2412,6 +2449,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_Applin, .iconSprite = gMonIcon_Applin, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(-1, -3, SHADOW_SIZE_S) FOOTPRINT(Applin) OVERWORLD( @@ -2479,6 +2517,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_Flapple, .iconSprite = gMonIcon_Flapple, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-6, 11, SHADOW_SIZE_S) FOOTPRINT(Flapple) OVERWORLD( @@ -2544,6 +2583,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_FlappleGmax, .iconSprite = gMonIcon_FlappleGmax, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 10, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Flapple) .isGigantamax = TRUE, @@ -2600,6 +2640,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_Appletun, .iconSprite = gMonIcon_Appletun, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, SHADOW(5, 6, SHADOW_SIZE_L) FOOTPRINT(Appletun) OVERWORLD( @@ -2665,6 +2706,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_AppletunGmax, .iconSprite = gMonIcon_AppletunGmax, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 10, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Appletun) .isGigantamax = TRUE, @@ -2722,6 +2764,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_Dipplin, .iconSprite = gMonIcon_Dipplin, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, SHADOW(-4, 8, SHADOW_SIZE_S) FOOTPRINT(Dipplin) OVERWORLD( @@ -2735,7 +2778,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = ) .levelUpLearnset = sDipplinLevelUpLearnset, .teachableLearnset = sDipplinTeachableLearnset, - .evolutions = EVOLUTION({EVO_MOVE, MOVE_DRAGON_CHEER, SPECIES_HYDRAPPLE}), + .evolutions = EVOLUTION({EVO_LEVEL, 0, SPECIES_HYDRAPPLE, CONDITIONS({IF_KNOWS_MOVE, MOVE_DRAGON_CHEER})}), }, [SPECIES_HYDRAPPLE] = @@ -2785,6 +2828,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_Hydrapple, .iconSprite = gMonIcon_Hydrapple, .iconPalIndex = 5, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 12, SHADOW_SIZE_L) FOOTPRINT(Hydrapple) OVERWORLD( @@ -2849,6 +2893,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_Silicobra, .iconSprite = gMonIcon_Silicobra, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(3, 1, SHADOW_SIZE_M) FOOTPRINT(Silicobra) OVERWORLD( @@ -2913,6 +2958,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_Sandaconda, .iconSprite = gMonIcon_Sandaconda, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(2, -1, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Sandaconda) OVERWORLD( @@ -2978,6 +3024,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_SandacondaGmax, .iconSprite = gMonIcon_SandacondaGmax, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 14, SHADOW_SIZE_M) FOOTPRINT(Sandaconda) .isGigantamax = TRUE, @@ -3036,6 +3083,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_Cramorant, .iconSprite = gMonIcon_Cramorant, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(5, 14, SHADOW_SIZE_M) FOOTPRINT(Cramorant) OVERWORLD( @@ -3101,6 +3149,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_CramorantGulping, .iconSprite = gMonIcon_CramorantGulping, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(5, 14, SHADOW_SIZE_M) FOOTPRINT(Cramorant) .levelUpLearnset = sCramorantLevelUpLearnset, @@ -3157,6 +3206,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_CramorantGorging, .iconSprite = gMonIcon_CramorantGorging, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(5, 14, SHADOW_SIZE_M) FOOTPRINT(Cramorant) .levelUpLearnset = sCramorantLevelUpLearnset, @@ -3215,6 +3265,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_Arrokuda, .iconSprite = gMonIcon_Arrokuda, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, -5, SHADOW_SIZE_S) FOOTPRINT(Arrokuda) OVERWORLD( @@ -3279,6 +3330,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_Barraskewda, .iconSprite = gMonIcon_Barraskewda, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(4, 5, SHADOW_SIZE_M) FOOTPRINT(Barraskewda) OVERWORLD( @@ -3343,6 +3395,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_Toxel, .iconSprite = gMonIcon_Toxel, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(-2, 1, SHADOW_SIZE_M) FOOTPRINT(Toxel) OVERWORLD( @@ -3357,8 +3410,8 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .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}), + .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_TOXTRICITY_AMPED, CONDITIONS({IF_AMPED_NATURE})}, + {EVO_LEVEL, 30, SPECIES_TOXTRICITY_LOW_KEY, CONDITIONS({IF_LOW_KEY_NATURE})}), }, [SPECIES_TOXTRICITY_AMPED] = @@ -3408,6 +3461,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_ToxtricityAmped, .iconSprite = gMonIcon_ToxtricityAmped, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-6, 13, SHADOW_SIZE_M) FOOTPRINT(Toxtricity) OVERWORLD( @@ -3469,6 +3523,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_ToxtricityGmax, .iconSprite = gMonIcon_ToxtricityGmax, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 10, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Toxtricity) .isGigantamax = TRUE, @@ -3525,6 +3580,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_ToxtricityLowKey, .iconSprite = gMonIcon_ToxtricityLowKey, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 12, SHADOW_SIZE_M) FOOTPRINT(Toxtricity) OVERWORLD( @@ -3586,6 +3642,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_ToxtricityGmax, .iconSprite = gMonIcon_ToxtricityGmax, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 10, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Toxtricity) .isGigantamax = TRUE, @@ -3648,6 +3705,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_Sizzlipede, .iconSprite = gMonIcon_Sizzlipede, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(6, -4, SHADOW_SIZE_S) FOOTPRINT(Sizzlipede) OVERWORLD( @@ -3716,6 +3774,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_Centiskorch, .iconSprite = gMonIcon_Centiskorch, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-3, 7, SHADOW_SIZE_M) FOOTPRINT(Centiskorch) OVERWORLD( @@ -3781,6 +3840,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_CentiskorchGmax, .iconSprite = gMonIcon_CentiskorchGmax, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(6, 9, SHADOW_SIZE_L) FOOTPRINT(Centiskorch) .isGigantamax = TRUE, @@ -3840,6 +3900,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_Clobbopus, .iconSprite = gMonIcon_Clobbopus, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(1, -2, SHADOW_SIZE_S) FOOTPRINT(Clobbopus) OVERWORLD( @@ -3854,7 +3915,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .levelUpLearnset = sClobbopusLevelUpLearnset, .teachableLearnset = sClobbopusTeachableLearnset, .eggMoveLearnset = sClobbopusEggMoveLearnset, - .evolutions = EVOLUTION({EVO_MOVE, MOVE_TAUNT, SPECIES_GRAPPLOCT}), + .evolutions = EVOLUTION({EVO_LEVEL, 0, SPECIES_GRAPPLOCT, CONDITIONS({IF_KNOWS_MOVE, MOVE_TAUNT})}), }, [SPECIES_GRAPPLOCT] = @@ -3903,6 +3964,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_Grapploct, .iconSprite = gMonIcon_Grapploct, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(4, 9, SHADOW_SIZE_M) FOOTPRINT(Grapploct) OVERWORLD( @@ -3967,6 +4029,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_Sinistea, .iconSprite = gMonIcon_Sinistea, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(3, 3, SHADOW_SIZE_S) FOOTPRINT(Sinistea) OVERWORLD( @@ -4032,6 +4095,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_Sinistea, .iconSprite = gMonIcon_Sinistea, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(3, 4, SHADOW_SIZE_S) FOOTPRINT(Sinistea) OVERWORLD( @@ -4096,6 +4160,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_Polteageist, .iconSprite = gMonIcon_Polteageist, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 12, SHADOW_SIZE_S) FOOTPRINT(Polteageist) OVERWORLD( @@ -4160,6 +4225,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_Polteageist, .iconSprite = gMonIcon_Polteageist, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 11, SHADOW_SIZE_S) FOOTPRINT(Polteageist) OVERWORLD( @@ -4225,6 +4291,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_Hatenna, .iconSprite = gMonIcon_Hatenna, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(0, 1, SHADOW_SIZE_M) FOOTPRINT(Hatenna) OVERWORLD( @@ -4288,6 +4355,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_Hattrem, .iconSprite = gMonIcon_Hattrem, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(0, 5, SHADOW_SIZE_M) FOOTPRINT(Hattrem) OVERWORLD( @@ -4350,6 +4418,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_Hatterene, .iconSprite = gMonIcon_Hatterene, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(6, 13, SHADOW_SIZE_S) FOOTPRINT(Hatterene) OVERWORLD( @@ -4415,6 +4484,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_HattereneGmax, .iconSprite = gMonIcon_HattereneGmax, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-3, 13, SHADOW_SIZE_S) FOOTPRINT(Hatterene) .isGigantamax = TRUE, @@ -4474,6 +4544,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_Impidimp, .iconSprite = gMonIcon_Impidimp, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(0, 2, SHADOW_SIZE_S) FOOTPRINT(Impidimp) OVERWORLD( @@ -4537,6 +4608,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_Morgrem, .iconSprite = gMonIcon_Morgrem, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 7, SHADOW_SIZE_M) FOOTPRINT(Morgrem) OVERWORLD( @@ -4600,6 +4672,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_Grimmsnarl, .iconSprite = gMonIcon_Grimmsnarl, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 11, SHADOW_SIZE_L) FOOTPRINT(Grimmsnarl) OVERWORLD( @@ -4665,6 +4738,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_GrimmsnarlGmax, .iconSprite = gMonIcon_GrimmsnarlGmax, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 14, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Grimmsnarl) .isGigantamax = TRUE, @@ -4724,6 +4798,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_Milcery, .iconSprite = gMonIcon_Milcery, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 6, SHADOW_SIZE_S) FOOTPRINT(Milcery) OVERWORLD( @@ -4738,15 +4813,197 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .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}, - {EVO_LEVEL, 0, SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM}, - {EVO_LEVEL, 0, SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM}, - {EVO_LEVEL, 0, SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM}, - {EVO_LEVEL, 0, SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL}, - {EVO_LEVEL, 0, SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL}, - {EVO_LEVEL, 0, SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL}), + .evolutions = EVOLUTION( + {EVO_SPIN, SPIN_CW_SHORT, SPECIES_ALCREMIE_STRAWBERRY_VANILLA_CREAM, + CONDITIONS({IF_HOLD_ITEM, ITEM_STRAWBERRY_SWEET}, + {IF_TIME, TIME_DAY})}, + {EVO_SPIN, SPIN_CCW_SHORT, SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM, + CONDITIONS({IF_HOLD_ITEM, ITEM_STRAWBERRY_SWEET}, + {IF_TIME, TIME_DAY})}, + {EVO_SPIN, SPIN_CW_SHORT, SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM, + CONDITIONS({IF_HOLD_ITEM, ITEM_STRAWBERRY_SWEET}, + {IF_TIME, TIME_NIGHT})}, + {EVO_SPIN, SPIN_CCW_LONG, SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM, + CONDITIONS({IF_HOLD_ITEM, ITEM_STRAWBERRY_SWEET}, + {IF_TIME, TIME_NIGHT})}, + {EVO_SPIN, SPIN_CW_LONG, SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM, + CONDITIONS({IF_HOLD_ITEM, ITEM_STRAWBERRY_SWEET}, + {IF_TIME, TIME_NIGHT})}, + {EVO_SPIN, SPIN_CCW_SHORT, SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM, + CONDITIONS({IF_HOLD_ITEM, ITEM_STRAWBERRY_SWEET}, + {IF_TIME, TIME_NIGHT})}, + {EVO_SPIN, SPIN_CCW_LONG, SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL, + CONDITIONS({IF_HOLD_ITEM, ITEM_STRAWBERRY_SWEET}, + {IF_TIME, TIME_DAY})}, + {EVO_SPIN, SPIN_CW_LONG, SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL, + CONDITIONS({IF_HOLD_ITEM, ITEM_STRAWBERRY_SWEET}, + {IF_TIME, TIME_DAY})}, + {EVO_SPIN, SPIN_EITHER, SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL, + CONDITIONS({IF_HOLD_ITEM, ITEM_STRAWBERRY_SWEET}, + {IF_TIME, TIME_EVENING})}, + {EVO_SPIN, SPIN_CW_SHORT, SPECIES_ALCREMIE_BERRY_VANILLA_CREAM, + CONDITIONS({IF_HOLD_ITEM, ITEM_BERRY_SWEET}, + {IF_TIME, TIME_DAY})}, + {EVO_SPIN, SPIN_CCW_SHORT, SPECIES_ALCREMIE_BERRY_RUBY_CREAM, + CONDITIONS({IF_HOLD_ITEM, ITEM_BERRY_SWEET}, + {IF_TIME, TIME_DAY})}, + {EVO_SPIN, SPIN_CW_SHORT, SPECIES_ALCREMIE_BERRY_MATCHA_CREAM, + CONDITIONS({IF_HOLD_ITEM, ITEM_BERRY_SWEET}, + {IF_TIME, TIME_NIGHT})}, + {EVO_SPIN, SPIN_CCW_LONG, SPECIES_ALCREMIE_BERRY_MINT_CREAM, + CONDITIONS({IF_HOLD_ITEM, ITEM_BERRY_SWEET}, + {IF_TIME, TIME_NIGHT})}, + {EVO_SPIN, SPIN_CW_LONG, SPECIES_ALCREMIE_BERRY_LEMON_CREAM, + CONDITIONS({IF_HOLD_ITEM, ITEM_BERRY_SWEET}, + {IF_TIME, TIME_NIGHT})}, + {EVO_SPIN, SPIN_CCW_SHORT, SPECIES_ALCREMIE_BERRY_SALTED_CREAM, + CONDITIONS({IF_HOLD_ITEM, ITEM_BERRY_SWEET}, + {IF_TIME, TIME_NIGHT})}, + {EVO_SPIN, SPIN_CCW_LONG, SPECIES_ALCREMIE_BERRY_RUBY_SWIRL, + CONDITIONS({IF_HOLD_ITEM, ITEM_BERRY_SWEET}, + {IF_TIME, TIME_DAY})}, + {EVO_SPIN, SPIN_CW_LONG, SPECIES_ALCREMIE_BERRY_CARAMEL_SWIRL, + CONDITIONS({IF_HOLD_ITEM, ITEM_BERRY_SWEET}, + {IF_TIME, TIME_DAY})}, + {EVO_SPIN, SPIN_EITHER, SPECIES_ALCREMIE_BERRY_RAINBOW_SWIRL, + CONDITIONS({IF_HOLD_ITEM, ITEM_BERRY_SWEET}, + {IF_TIME, TIME_EVENING})}, + {EVO_SPIN, SPIN_CW_SHORT, SPECIES_ALCREMIE_LOVE_VANILLA_CREAM, + CONDITIONS({IF_HOLD_ITEM, ITEM_LOVE_SWEET}, + {IF_TIME, TIME_DAY})}, + {EVO_SPIN, SPIN_CCW_SHORT, SPECIES_ALCREMIE_LOVE_RUBY_CREAM, + CONDITIONS({IF_HOLD_ITEM, ITEM_LOVE_SWEET}, + {IF_TIME, TIME_DAY})}, + {EVO_SPIN, SPIN_CW_SHORT, SPECIES_ALCREMIE_LOVE_MATCHA_CREAM, + CONDITIONS({IF_HOLD_ITEM, ITEM_LOVE_SWEET}, + {IF_TIME, TIME_NIGHT})}, + {EVO_SPIN, SPIN_CCW_LONG, SPECIES_ALCREMIE_LOVE_MINT_CREAM, + CONDITIONS({IF_HOLD_ITEM, ITEM_LOVE_SWEET}, + {IF_TIME, TIME_NIGHT})}, + {EVO_SPIN, SPIN_CW_LONG, SPECIES_ALCREMIE_LOVE_LEMON_CREAM, + CONDITIONS({IF_HOLD_ITEM, ITEM_LOVE_SWEET}, + {IF_TIME, TIME_NIGHT})}, + {EVO_SPIN, SPIN_CCW_SHORT, SPECIES_ALCREMIE_LOVE_SALTED_CREAM, + CONDITIONS({IF_HOLD_ITEM, ITEM_LOVE_SWEET}, + {IF_TIME, TIME_NIGHT})}, + {EVO_SPIN, SPIN_CCW_LONG, SPECIES_ALCREMIE_LOVE_RUBY_SWIRL, + CONDITIONS({IF_HOLD_ITEM, ITEM_LOVE_SWEET}, + {IF_TIME, TIME_DAY})}, + {EVO_SPIN, SPIN_CW_LONG, SPECIES_ALCREMIE_LOVE_CARAMEL_SWIRL, + CONDITIONS({IF_HOLD_ITEM, ITEM_LOVE_SWEET}, + {IF_TIME, TIME_DAY})}, + {EVO_SPIN, SPIN_EITHER, SPECIES_ALCREMIE_LOVE_RAINBOW_SWIRL, + CONDITIONS({IF_HOLD_ITEM, ITEM_LOVE_SWEET}, + {IF_TIME, TIME_EVENING})}, + {EVO_SPIN, SPIN_CW_SHORT, SPECIES_ALCREMIE_STAR_VANILLA_CREAM, + CONDITIONS({IF_HOLD_ITEM, ITEM_STAR_SWEET}, + {IF_TIME, TIME_DAY})}, + {EVO_SPIN, SPIN_CCW_SHORT, SPECIES_ALCREMIE_STAR_RUBY_CREAM, + CONDITIONS({IF_HOLD_ITEM, ITEM_STAR_SWEET}, + {IF_TIME, TIME_DAY})}, + {EVO_SPIN, SPIN_CW_SHORT, SPECIES_ALCREMIE_STAR_MATCHA_CREAM, + CONDITIONS({IF_HOLD_ITEM, ITEM_STAR_SWEET}, + {IF_TIME, TIME_NIGHT})}, + {EVO_SPIN, SPIN_CCW_LONG, SPECIES_ALCREMIE_STAR_MINT_CREAM, + CONDITIONS({IF_HOLD_ITEM, ITEM_STAR_SWEET}, + {IF_TIME, TIME_NIGHT})}, + {EVO_SPIN, SPIN_CW_LONG, SPECIES_ALCREMIE_STAR_LEMON_CREAM, + CONDITIONS({IF_HOLD_ITEM, ITEM_STAR_SWEET}, + {IF_TIME, TIME_NIGHT})}, + {EVO_SPIN, SPIN_CCW_SHORT, SPECIES_ALCREMIE_STAR_SALTED_CREAM, + CONDITIONS({IF_HOLD_ITEM, ITEM_STAR_SWEET}, + {IF_TIME, TIME_NIGHT})}, + {EVO_SPIN, SPIN_CCW_LONG, SPECIES_ALCREMIE_STAR_RUBY_SWIRL, + CONDITIONS({IF_HOLD_ITEM, ITEM_STAR_SWEET}, + {IF_TIME, TIME_DAY})}, + {EVO_SPIN, SPIN_CW_LONG, SPECIES_ALCREMIE_STAR_CARAMEL_SWIRL, + CONDITIONS({IF_HOLD_ITEM, ITEM_STAR_SWEET}, + {IF_TIME, TIME_DAY})}, + {EVO_SPIN, SPIN_EITHER, SPECIES_ALCREMIE_STAR_RAINBOW_SWIRL, + CONDITIONS({IF_HOLD_ITEM, ITEM_STAR_SWEET}, + {IF_TIME, TIME_EVENING})}, + {EVO_SPIN, SPIN_CW_SHORT, SPECIES_ALCREMIE_CLOVER_VANILLA_CREAM, + CONDITIONS({IF_HOLD_ITEM, ITEM_CLOVER_SWEET}, + {IF_TIME, TIME_DAY})}, + {EVO_SPIN, SPIN_CCW_SHORT, SPECIES_ALCREMIE_CLOVER_RUBY_CREAM, + CONDITIONS({IF_HOLD_ITEM, ITEM_CLOVER_SWEET}, + {IF_TIME, TIME_DAY})}, + {EVO_SPIN, SPIN_CW_SHORT, SPECIES_ALCREMIE_CLOVER_MATCHA_CREAM, + CONDITIONS({IF_HOLD_ITEM, ITEM_CLOVER_SWEET}, + {IF_TIME, TIME_NIGHT})}, + {EVO_SPIN, SPIN_CCW_LONG, SPECIES_ALCREMIE_CLOVER_MINT_CREAM, + CONDITIONS({IF_HOLD_ITEM, ITEM_CLOVER_SWEET}, + {IF_TIME, TIME_NIGHT})}, + {EVO_SPIN, SPIN_CW_LONG, SPECIES_ALCREMIE_CLOVER_LEMON_CREAM, + CONDITIONS({IF_HOLD_ITEM, ITEM_CLOVER_SWEET}, + {IF_TIME, TIME_NIGHT})}, + {EVO_SPIN, SPIN_CCW_SHORT, SPECIES_ALCREMIE_CLOVER_SALTED_CREAM, + CONDITIONS({IF_HOLD_ITEM, ITEM_CLOVER_SWEET}, + {IF_TIME, TIME_NIGHT})}, + {EVO_SPIN, SPIN_CCW_LONG, SPECIES_ALCREMIE_CLOVER_RUBY_SWIRL, + CONDITIONS({IF_HOLD_ITEM, ITEM_CLOVER_SWEET}, + {IF_TIME, TIME_DAY})}, + {EVO_SPIN, SPIN_CW_LONG, SPECIES_ALCREMIE_CLOVER_CARAMEL_SWIRL, + CONDITIONS({IF_HOLD_ITEM, ITEM_CLOVER_SWEET}, + {IF_TIME, TIME_DAY})}, + {EVO_SPIN, SPIN_EITHER, SPECIES_ALCREMIE_CLOVER_RAINBOW_SWIRL, + CONDITIONS({IF_HOLD_ITEM, ITEM_CLOVER_SWEET}, + {IF_TIME, TIME_EVENING})}, + {EVO_SPIN, SPIN_CW_SHORT, SPECIES_ALCREMIE_FLOWER_VANILLA_CREAM, + CONDITIONS({IF_HOLD_ITEM, ITEM_FLOWER_SWEET}, + {IF_TIME, TIME_DAY})}, + {EVO_SPIN, SPIN_CCW_SHORT, SPECIES_ALCREMIE_FLOWER_RUBY_CREAM, + CONDITIONS({IF_HOLD_ITEM, ITEM_FLOWER_SWEET}, + {IF_TIME, TIME_DAY})}, + {EVO_SPIN, SPIN_CW_SHORT, SPECIES_ALCREMIE_FLOWER_MATCHA_CREAM, + CONDITIONS({IF_HOLD_ITEM, ITEM_FLOWER_SWEET}, + {IF_TIME, TIME_NIGHT})}, + {EVO_SPIN, SPIN_CCW_LONG, SPECIES_ALCREMIE_FLOWER_MINT_CREAM, + CONDITIONS({IF_HOLD_ITEM, ITEM_FLOWER_SWEET}, + {IF_TIME, TIME_NIGHT})}, + {EVO_SPIN, SPIN_CW_LONG, SPECIES_ALCREMIE_FLOWER_LEMON_CREAM, + CONDITIONS({IF_HOLD_ITEM, ITEM_FLOWER_SWEET}, + {IF_TIME, TIME_NIGHT})}, + {EVO_SPIN, SPIN_CCW_SHORT, SPECIES_ALCREMIE_FLOWER_SALTED_CREAM, + CONDITIONS({IF_HOLD_ITEM, ITEM_FLOWER_SWEET}, + {IF_TIME, TIME_NIGHT})}, + {EVO_SPIN, SPIN_CCW_LONG, SPECIES_ALCREMIE_FLOWER_RUBY_SWIRL, + CONDITIONS({IF_HOLD_ITEM, ITEM_FLOWER_SWEET}, + {IF_TIME, TIME_DAY})}, + {EVO_SPIN, SPIN_CW_LONG, SPECIES_ALCREMIE_FLOWER_CARAMEL_SWIRL, + CONDITIONS({IF_HOLD_ITEM, ITEM_FLOWER_SWEET}, + {IF_TIME, TIME_DAY})}, + {EVO_SPIN, SPIN_EITHER, SPECIES_ALCREMIE_FLOWER_RAINBOW_SWIRL, + CONDITIONS({IF_HOLD_ITEM, ITEM_FLOWER_SWEET}, + {IF_TIME, TIME_EVENING})}, + {EVO_SPIN, SPIN_CW_SHORT, SPECIES_ALCREMIE_RIBBON_VANILLA_CREAM, + CONDITIONS({IF_HOLD_ITEM, ITEM_RIBBON_SWEET}, + {IF_TIME, TIME_DAY})}, + {EVO_SPIN, SPIN_CCW_SHORT, SPECIES_ALCREMIE_RIBBON_RUBY_CREAM, + CONDITIONS({IF_HOLD_ITEM, ITEM_RIBBON_SWEET}, + {IF_TIME, TIME_DAY})}, + {EVO_SPIN, SPIN_CW_SHORT, SPECIES_ALCREMIE_RIBBON_MATCHA_CREAM, + CONDITIONS({IF_HOLD_ITEM, ITEM_RIBBON_SWEET}, + {IF_TIME, TIME_NIGHT})}, + {EVO_SPIN, SPIN_CCW_LONG, SPECIES_ALCREMIE_RIBBON_MINT_CREAM, + CONDITIONS({IF_HOLD_ITEM, ITEM_RIBBON_SWEET}, + {IF_TIME, TIME_NIGHT})}, + {EVO_SPIN, SPIN_CW_LONG, SPECIES_ALCREMIE_RIBBON_LEMON_CREAM, + CONDITIONS({IF_HOLD_ITEM, ITEM_RIBBON_SWEET}, + {IF_TIME, TIME_NIGHT})}, + {EVO_SPIN, SPIN_CCW_SHORT, SPECIES_ALCREMIE_RIBBON_SALTED_CREAM, + CONDITIONS({IF_HOLD_ITEM, ITEM_RIBBON_SWEET}, + {IF_TIME, TIME_NIGHT})}, + {EVO_SPIN, SPIN_CCW_LONG, SPECIES_ALCREMIE_RIBBON_RUBY_SWIRL, + CONDITIONS({IF_HOLD_ITEM, ITEM_RIBBON_SWEET}, + {IF_TIME, TIME_DAY})}, + {EVO_SPIN, SPIN_CW_LONG, SPECIES_ALCREMIE_RIBBON_CARAMEL_SWIRL, + CONDITIONS({IF_HOLD_ITEM, ITEM_RIBBON_SWEET}, + {IF_TIME, TIME_DAY})}, + {EVO_SPIN, SPIN_EITHER, SPECIES_ALCREMIE_RIBBON_RAINBOW_SWIRL, + CONDITIONS({IF_HOLD_ITEM, ITEM_RIBBON_SWEET}, + {IF_TIME, TIME_EVENING})} + ) }, #define ALCREMIE_MISC_INFO(color) \ @@ -4795,6 +5052,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_Alcremie ##sweet, \ .iconSprite = gMonIcon_AlcremieStrawberryVanillaCream, /*AlcremieStrawberry##cream##*/ \ .iconPalIndex = 1, \ + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, \ SHADOW(0, 5, SHADOW_SIZE_S) \ FOOTPRINT(Alcremie) \ OVERWORLD( \ @@ -4907,6 +5165,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_AlcremieGmax, .iconSprite = gMonIcon_AlcremieGmax, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 10, SHADOW_SIZE_L) FOOTPRINT(Alcremie) .isGigantamax = TRUE, @@ -4965,6 +5224,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_Falinks, .iconSprite = gMonIcon_Falinks, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-7, 5, SHADOW_SIZE_S) FOOTPRINT(Falinks) OVERWORLD( @@ -5028,6 +5288,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_Pincurchin, .iconSprite = gMonIcon_Pincurchin, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, SHADOW(-1, -4, SHADOW_SIZE_S) FOOTPRINT(Pincurchin) OVERWORLD( @@ -5094,6 +5355,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_Snom, .iconSprite = gMonIcon_Snom, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, SHADOW(-2, -7, SHADOW_SIZE_S) FOOTPRINT(Snom) OVERWORLD( @@ -5108,7 +5370,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .levelUpLearnset = sSnomLevelUpLearnset, .teachableLearnset = sSnomTeachableLearnset, .eggMoveLearnset = sSnomEggMoveLearnset, - .evolutions = EVOLUTION({EVO_FRIENDSHIP_NIGHT, 0, SPECIES_FROSMOTH}), + .evolutions = EVOLUTION({EVO_LEVEL, 0, SPECIES_FROSMOTH, CONDITIONS({IF_MIN_FRIENDSHIP, FRIENDSHIP_EVO_THRESHOLD},{IF_TIME, TIME_NIGHT})}), }, [SPECIES_FROSMOTH] = @@ -5159,6 +5421,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_Frosmoth, .iconSprite = gMonIcon_Frosmoth, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-7, 13, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Frosmoth) OVERWORLD( @@ -5223,6 +5486,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_Stonjourner, .iconSprite = gMonIcon_Stonjourner, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 10, SHADOW_SIZE_L) FOOTPRINT(Stonjourner) OVERWORLD( @@ -5288,6 +5552,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_EiscueIce, .iconSprite = gMonIcon_EiscueIce, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 13, SHADOW_SIZE_S) FOOTPRINT(Eiscue) OVERWORLD( @@ -5353,6 +5618,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_EiscueNoice, .iconSprite = gMonIcon_EiscueNoice, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 13, SHADOW_SIZE_S) FOOTPRINT(Eiscue) .levelUpLearnset = sEiscueLevelUpLearnset, @@ -5411,6 +5677,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_IndeedeeM, .iconSprite = gMonIcon_IndeedeeM, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(2, 4, SHADOW_SIZE_S) FOOTPRINT(Indeedee) OVERWORLD( @@ -5474,6 +5741,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_IndeedeeF, .iconSprite = gMonIcon_IndeedeeF, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(2, 4, SHADOW_SIZE_S) FOOTPRINT(Indeedee) OVERWORLD( @@ -5540,6 +5808,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_MorpekoFullBelly, .iconSprite = gMonIcon_MorpekoFullBelly, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(0, 0, SHADOW_SIZE_S) FOOTPRINT(Morpeko) OVERWORLD( @@ -5605,6 +5874,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_MorpekoHangry, .iconSprite = gMonIcon_MorpekoHangry, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(0, 0, SHADOW_SIZE_S) FOOTPRINT(Morpeko) .levelUpLearnset = sMorpekoLevelUpLearnset, @@ -5664,6 +5934,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_Cufant, .iconSprite = gMonIcon_Cufant, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(5, 2, SHADOW_SIZE_M) FOOTPRINT(Cufant) OVERWORLD( @@ -5728,6 +5999,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_Copperajah, .iconSprite = gMonIcon_Copperajah, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(6, 7, SHADOW_SIZE_L) FOOTPRINT(Copperajah) OVERWORLD( @@ -5794,6 +6066,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_CopperajahGmax, .iconSprite = gMonIcon_CopperajahGmax, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 11, SHADOW_SIZE_L) FOOTPRINT(Copperajah) .isGigantamax = TRUE, @@ -5853,6 +6126,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_Dracozolt, .iconSprite = gMonIcon_Dracozolt, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-4, 10, SHADOW_SIZE_L) FOOTPRINT(Dracozolt) OVERWORLD( @@ -5916,6 +6190,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_Arctozolt, .iconSprite = gMonIcon_Arctozolt, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-2, 11, SHADOW_SIZE_M) FOOTPRINT(Arctozolt) OVERWORLD( @@ -5980,6 +6255,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_Dracovish, .iconSprite = gMonIcon_Dracovish, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(2, 11, SHADOW_SIZE_M) FOOTPRINT(Dracovish) OVERWORLD( @@ -6044,6 +6320,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_Arctovish, .iconSprite = gMonIcon_Arctovish, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 11, SHADOW_SIZE_L) FOOTPRINT(Arctovish) OVERWORLD( @@ -6111,6 +6388,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_Duraludon, .iconSprite = gMonIcon_Duraludon, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(2, 11, SHADOW_SIZE_L) FOOTPRINT(Duraludon) OVERWORLD( @@ -6178,6 +6456,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_DuraludonGmax, .iconSprite = gMonIcon_DuraludonGmax, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(3, 12, SHADOW_SIZE_L) FOOTPRINT(Duraludon) .isGigantamax = TRUE, @@ -6237,6 +6516,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_Archaludon, .iconSprite = gMonIcon_Archaludon, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(4, 14, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Archaludon) OVERWORLD( @@ -6303,6 +6583,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_Dreepy, .iconSprite = gMonIcon_Dreepy, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 2, SHADOW_SIZE_S) FOOTPRINT(Dreepy) OVERWORLD( @@ -6367,6 +6648,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_Drakloak, .iconSprite = gMonIcon_Drakloak, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 9, SHADOW_SIZE_M) FOOTPRINT(Drakloak) OVERWORLD( @@ -6431,6 +6713,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_Dragapult, .iconSprite = gMonIcon_Dragapult, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 12, SHADOW_SIZE_M) FOOTPRINT(Dragapult) OVERWORLD( @@ -6494,6 +6777,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_ZacianHero, .iconSprite = gMonIcon_ZacianHero, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 9, SHADOW_SIZE_L) FOOTPRINT(Zacian) OVERWORLD( @@ -6561,6 +6845,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_ZacianCrowned, .iconSprite = gMonIcon_ZacianCrowned, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-3, 12, SHADOW_SIZE_L) FOOTPRINT(Zacian) OVERWORLD( @@ -6630,6 +6915,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_ZamazentaHero, .iconSprite = gMonIcon_ZamazentaHero, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 12, SHADOW_SIZE_L) FOOTPRINT(Zamazenta) OVERWORLD( @@ -6697,6 +6983,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_ZamazentaCrowned, .iconSprite = gMonIcon_ZamazentaCrowned, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 12, SHADOW_SIZE_L) FOOTPRINT(Zamazenta) OVERWORLD( @@ -6767,6 +7054,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_Eternatus, .iconSprite = gMonIcon_Eternatus, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 14, SHADOW_SIZE_L) FOOTPRINT(Eternatus) OVERWORLD( @@ -6834,6 +7122,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_EternatusEternamax, .iconSprite = gMonIcon_EternatusEternamax, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-3, 20, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Eternatus) .isLegendary = TRUE, @@ -6892,6 +7181,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_Kubfu, .iconSprite = gMonIcon_Kubfu, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(-2, 5, SHADOW_SIZE_S) FOOTPRINT(Kubfu) OVERWORLD( @@ -6907,10 +7197,10 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .perfectIVCount = LEGENDARY_PERFECT_IV_COUNT, .levelUpLearnset = sKubfuLevelUpLearnset, .teachableLearnset = sKubfuTeachableLearnset, - .evolutions = EVOLUTION({EVO_DARK_SCROLL, 0, SPECIES_URSHIFU_SINGLE_STRIKE}, + .evolutions = EVOLUTION({EVO_SCRIPT_TRIGGER, 0, SPECIES_URSHIFU_SINGLE_STRIKE}, + {EVO_SCRIPT_TRIGGER, 1, SPECIES_URSHIFU_RAPID_STRIKE}, {EVO_ITEM, ITEM_SCROLL_OF_DARKNESS, SPECIES_URSHIFU_SINGLE_STRIKE}, - {EVO_WATER_SCROLL, 0, SPECIES_URSHIFU_RAPID_STRIKE}, - {EVO_ITEM, ITEM_SCROLL_OF_WATERS, SPECIES_URSHIFU_RAPID_STRIKE}), + {EVO_ITEM, ITEM_SCROLL_OF_WATERS, SPECIES_URSHIFU_RAPID_STRIKE}), }, [SPECIES_URSHIFU_SINGLE_STRIKE] = @@ -6960,6 +7250,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_UrshifuSingleStrike, .iconSprite = gMonIcon_Urshifu, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 14, SHADOW_SIZE_L) FOOTPRINT(Urshifu) OVERWORLD( @@ -7027,6 +7318,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_UrshifuSingleStrikeGmax, .iconSprite = gMonIcon_UrshifuSingleStrikeGmax, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 13, SHADOW_SIZE_L) FOOTPRINT(Urshifu) .isLegendary = TRUE, @@ -7085,6 +7377,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_UrshifuRapidStrike, .iconSprite = gMonIcon_Urshifu, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(4, 14, SHADOW_SIZE_M) FOOTPRINT(Urshifu) OVERWORLD( @@ -7152,6 +7445,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_UrshifuRapidStrikeGmax, .iconSprite = gMonIcon_UrshifuRapidStrikeGmax, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(2, 13, SHADOW_SIZE_M) FOOTPRINT(Urshifu) .isLegendary = TRUE, @@ -7213,6 +7507,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_Zarude, .iconSprite = gMonIcon_Zarude, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(5, 11, SHADOW_SIZE_L) FOOTPRINT(Zarude) OVERWORLD( @@ -7278,6 +7573,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_ZarudeDada, .iconSprite = gMonIcon_ZarudeDada, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(5, 11, SHADOW_SIZE_L) FOOTPRINT(Zarude) .isMythical = TRUE, @@ -7338,6 +7634,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_Regieleki, .iconSprite = gMonIcon_Regieleki, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-3, 14, SHADOW_SIZE_S) FOOTPRINT(Regieleki) OVERWORLD( @@ -7405,6 +7702,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_Regidrago, .iconSprite = gMonIcon_Regidrago, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 13, SHADOW_SIZE_M) FOOTPRINT(Regidrago) OVERWORLD( @@ -7470,6 +7768,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_Glastrier, .iconSprite = gMonIcon_Glastrier, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-5, 11, SHADOW_SIZE_L) FOOTPRINT(Glastrier) OVERWORLD( @@ -7536,6 +7835,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_Spectrier, .iconSprite = gMonIcon_Spectrier, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-6, 12, SHADOW_SIZE_L) FOOTPRINT(Spectrier) OVERWORLD( @@ -7602,6 +7902,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_Calyrex, .iconSprite = gMonIcon_Calyrex, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 12, SHADOW_SIZE_S) FOOTPRINT(Calyrex) OVERWORLD( @@ -7669,6 +7970,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_CalyrexIce, .iconSprite = gMonIcon_CalyrexIce, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-5, 11, SHADOW_SIZE_L) FOOTPRINT(Calyrex) OVERWORLD( @@ -7736,6 +8038,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_CalyrexShadow, .iconSprite = gMonIcon_CalyrexShadow, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-5, 12, SHADOW_SIZE_L) FOOTPRINT(Calyrex) OVERWORLD( @@ -7807,6 +8110,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_EnamorusIncarnate, .iconSprite = gMonIcon_EnamorusIncarnate, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-3, 19, SHADOW_SIZE_M) FOOTPRINT(Enamorus) OVERWORLD( @@ -7873,6 +8177,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_EnamorusTherian, .iconSprite = gMonIcon_EnamorusTherian, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(2, 8, SHADOW_SIZE_L) FOOTPRINT(Enamorus) OVERWORLD( diff --git a/src/data/pokemon/species_info/gen_9_families.h b/src/data/pokemon/species_info/gen_9_families.h index 93b9818b10..f239836cfd 100644 --- a/src/data/pokemon/species_info/gen_9_families.h +++ b/src/data/pokemon/species_info/gen_9_families.h @@ -51,6 +51,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Sprigatito, .iconSprite = gMonIcon_Sprigatito, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(-2, 5, SHADOW_SIZE_S) FOOTPRINT(Sprigatito) OVERWORLD( @@ -115,6 +116,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Floragato, .iconSprite = gMonIcon_Floragato, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-3, 11, SHADOW_SIZE_M) FOOTPRINT(Floragato) OVERWORLD( @@ -178,6 +180,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Meowscarada, .iconSprite = gMonIcon_Meowscarada, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-3, 14, SHADOW_SIZE_S) FOOTPRINT(Meowscarada) OVERWORLD( @@ -242,6 +245,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Fuecoco, .iconSprite = gMonIcon_Fuecoco, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, SHADOW(-3, 5, SHADOW_SIZE_S) FOOTPRINT(Fuecoco) OVERWORLD( @@ -306,6 +310,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Crocalor, .iconSprite = gMonIcon_Crocalor, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(2, 8, SHADOW_SIZE_M) FOOTPRINT(Crocalor) OVERWORLD( @@ -369,6 +374,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Skeledirge, .iconSprite = gMonIcon_Skeledirge, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(6, 7, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Skeledirge) OVERWORLD( @@ -433,6 +439,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Quaxly, .iconSprite = gMonIcon_Quaxly, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(0, 5, SHADOW_SIZE_S) FOOTPRINT(Quaxly) OVERWORLD( @@ -497,6 +504,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Quaxwell, .iconSprite = gMonIcon_Quaxwell, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 10, SHADOW_SIZE_S) FOOTPRINT(Quaxwell) OVERWORLD( @@ -560,6 +568,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Quaquaval, .iconSprite = gMonIcon_Quaquaval, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-7, 13, SHADOW_SIZE_M) FOOTPRINT(Quaquaval) OVERWORLD( @@ -624,6 +633,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Lechonk, .iconSprite = gMonIcon_Lechonk, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, SHADOW(0, 1, SHADOW_SIZE_S) FOOTPRINT(Lechonk) OVERWORLD( @@ -638,8 +648,8 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .levelUpLearnset = sLechonkLevelUpLearnset, .teachableLearnset = sLechonkTeachableLearnset, .eggMoveLearnset = sLechonkEggMoveLearnset, - .evolutions = EVOLUTION({EVO_LEVEL_MALE, 18, SPECIES_OINKOLOGNE_M}, - {EVO_LEVEL_FEMALE, 18, SPECIES_OINKOLOGNE_F}), + .evolutions = EVOLUTION({EVO_LEVEL, 18, SPECIES_OINKOLOGNE_M, CONDITIONS({IF_GENDER, MON_MALE})}, + {EVO_LEVEL, 18, SPECIES_OINKOLOGNE_F, CONDITIONS({IF_GENDER, MON_FEMALE})}), }, [SPECIES_OINKOLOGNE_M] = @@ -688,6 +698,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_OinkologneM, .iconSprite = gMonIcon_OinkologneM, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(5, 6, SHADOW_SIZE_M) FOOTPRINT(Oinkologne) OVERWORLD( @@ -751,6 +762,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_OinkologneF, .iconSprite = gMonIcon_OinkologneF, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(5, 6, SHADOW_SIZE_M) FOOTPRINT(Oinkologne) OVERWORLD( @@ -816,6 +828,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Tarountula, .iconSprite = gMonIcon_Tarountula, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 2, SHADOW_SIZE_M) FOOTPRINT(Tarountula) OVERWORLD( @@ -880,6 +893,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Spidops, .iconSprite = gMonIcon_Spidops, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(6, 8, SHADOW_SIZE_L) FOOTPRINT(Spidops) OVERWORLD( @@ -944,6 +958,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Nymble, .iconSprite = gMonIcon_Nymble, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(1, 3, SHADOW_SIZE_M) FOOTPRINT(Nymble) OVERWORLD( @@ -1008,6 +1023,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Lokix, .iconSprite = gMonIcon_Lokix, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 11, SHADOW_SIZE_M) FOOTPRINT(Lokix) OVERWORLD( @@ -1072,6 +1088,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Pawmi, .iconSprite = gMonIcon_Pawmi, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(1, 4, SHADOW_SIZE_M) FOOTPRINT(Pawmi) OVERWORLD( @@ -1136,6 +1153,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Pawmo, .iconSprite = gMonIcon_Pawmo, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(-3, 10, SHADOW_SIZE_S) FOOTPRINT(Pawmo) OVERWORLD( @@ -1149,7 +1167,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = ) .levelUpLearnset = sPawmoLevelUpLearnset, .teachableLearnset = sPawmoTeachableLearnset, - .evolutions = EVOLUTION({EVO_OVERWORLD_STEPS, 1000, SPECIES_PAWMOT}), + .evolutions = EVOLUTION({EVO_LEVEL, 0, SPECIES_PAWMOT, CONDITIONS({IF_MIN_OVERWORLD_STEPS, 1000})}), }, [SPECIES_PAWMOT] = @@ -1199,6 +1217,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Pawmot, .iconSprite = gMonIcon_Pawmot, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 11, SHADOW_SIZE_M) FOOTPRINT(Pawmot) OVERWORLD( @@ -1263,6 +1282,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Tandemaus, .iconSprite = gMonIcon_Tandemaus, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(0, -1, SHADOW_SIZE_M) FOOTPRINT(Tandemaus) OVERWORLD( @@ -1277,8 +1297,8 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .levelUpLearnset = sTandemausLevelUpLearnset, .teachableLearnset = sTandemausTeachableLearnset, .eggMoveLearnset = sTandemausEggMoveLearnset, - .evolutions = EVOLUTION({EVO_LEVEL_FAMILY_OF_FOUR, 25, SPECIES_MAUSHOLD_FOUR}, - {EVO_LEVEL_FAMILY_OF_THREE, 25, SPECIES_MAUSHOLD_THREE}), + .evolutions = EVOLUTION({EVO_LEVEL_BATTLE_ONLY, 25, SPECIES_MAUSHOLD_FOUR, CONDITIONS({IF_PID_MODULO_100_GT, 0})}, + {EVO_LEVEL_BATTLE_ONLY, 25, SPECIES_MAUSHOLD_THREE, CONDITIONS({IF_PID_MODULO_100_EQ, 0})}), }, [SPECIES_MAUSHOLD_THREE] = @@ -1328,6 +1348,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Maushold, .iconSprite = gMonIcon_MausholdThree, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(4, -1, SHADOW_SIZE_L) FOOTPRINT(MausholdThree) OVERWORLD( @@ -1390,6 +1411,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Maushold, .iconSprite = gMonIcon_MausholdFour, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(0, -1, SHADOW_SIZE_L) FOOTPRINT(MausholdFour) OVERWORLD( @@ -1455,6 +1477,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Fidough, .iconSprite = gMonIcon_Fidough, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, SHADOW(4, 0, SHADOW_SIZE_S) FOOTPRINT(Fidough) OVERWORLD( @@ -1519,6 +1542,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Dachsbun, .iconSprite = gMonIcon_Dachsbun, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(-1, 7, SHADOW_SIZE_L) FOOTPRINT(Dachsbun) OVERWORLD( @@ -1583,6 +1607,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Smoliv, .iconSprite = gMonIcon_Smoliv, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, SHADOW(-1, -2, SHADOW_SIZE_S) FOOTPRINT(Smoliv) OVERWORLD( @@ -1647,6 +1672,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Dolliv, .iconSprite = gMonIcon_Dolliv, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, SHADOW(1, 9, SHADOW_SIZE_M) FOOTPRINT(Dolliv) OVERWORLD( @@ -1710,6 +1736,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Arboliva, .iconSprite = gMonIcon_Arboliva, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 13, SHADOW_SIZE_L) FOOTPRINT(Arboliva) OVERWORLD( @@ -1774,6 +1801,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_SquawkabillyGreen, .iconSprite = gMonIcon_SquawkabillyGreen, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-6, 9, SHADOW_SIZE_M) FOOTPRINT(Squawkabilly) OVERWORLD( @@ -1838,6 +1866,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_SquawkabillyBlue, .iconSprite = gMonIcon_SquawkabillyBlue, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-6, 9, SHADOW_SIZE_M) FOOTPRINT(Squawkabilly) OVERWORLD( @@ -1902,6 +1931,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_SquawkabillyYellow, .iconSprite = gMonIcon_SquawkabillyYellow, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-6, 9, SHADOW_SIZE_M) FOOTPRINT(Squawkabilly) OVERWORLD( @@ -1966,6 +1996,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_SquawkabillyWhite, .iconSprite = gMonIcon_SquawkabillyWhite, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-6, 9, SHADOW_SIZE_M) FOOTPRINT(Squawkabilly) OVERWORLD( @@ -2032,6 +2063,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Nacli, .iconSprite = gMonIcon_Nacli, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, SHADOW(-1, 5, SHADOW_SIZE_S) FOOTPRINT(Nacli) OVERWORLD( @@ -2096,6 +2128,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Naclstack, .iconSprite = gMonIcon_Naclstack, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, SHADOW(0, 5, SHADOW_SIZE_L) FOOTPRINT(Naclstack) OVERWORLD( @@ -2159,6 +2192,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Garganacl, .iconSprite = gMonIcon_Garganacl, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 13, SHADOW_SIZE_L) FOOTPRINT(Garganacl) OVERWORLD( @@ -2223,6 +2257,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Charcadet, .iconSprite = gMonIcon_Charcadet, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(-1, 5, SHADOW_SIZE_S) FOOTPRINT(Charcadet) OVERWORLD( @@ -2288,6 +2323,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Armarouge, .iconSprite = gMonIcon_Armarouge, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 14, SHADOW_SIZE_L) FOOTPRINT(Armarouge) OVERWORLD( @@ -2350,6 +2386,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Ceruledge, .iconSprite = gMonIcon_Ceruledge, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(9, 14, SHADOW_SIZE_L) FOOTPRINT(Ceruledge) OVERWORLD( @@ -2415,6 +2452,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Tadbulb, .iconSprite = gMonIcon_Tadbulb, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 19, SHADOW_SIZE_S) FOOTPRINT(Tadbulb) OVERWORLD( @@ -2479,6 +2517,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Bellibolt, .iconSprite = gMonIcon_Bellibolt, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 7, SHADOW_SIZE_M) FOOTPRINT(Bellibolt) OVERWORLD( @@ -2543,6 +2582,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Wattrel, .iconSprite = gMonIcon_Wattrel, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-3, 0, SHADOW_SIZE_S) FOOTPRINT(Wattrel) OVERWORLD( @@ -2607,6 +2647,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Kilowattrel, .iconSprite = gMonIcon_Kilowattrel, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-6, 6, SHADOW_SIZE_M) FOOTPRINT(Kilowattrel) OVERWORLD( @@ -2671,6 +2712,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Maschiff, .iconSprite = gMonIcon_Maschiff, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(2, 5, SHADOW_SIZE_L) FOOTPRINT(Maschiff) OVERWORLD( @@ -2735,6 +2777,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Mabosstiff, .iconSprite = gMonIcon_Mabosstiff, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 5, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Mabosstiff) OVERWORLD( @@ -2799,6 +2842,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Shroodle, .iconSprite = gMonIcon_Shroodle, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, SHADOW(0, -6, SHADOW_SIZE_S) FOOTPRINT(Shroodle) OVERWORLD( @@ -2863,6 +2907,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Grafaiai, .iconSprite = gMonIcon_Grafaiai, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(-2, 5, SHADOW_SIZE_S) FOOTPRINT(Grafaiai) OVERWORLD( @@ -2927,6 +2972,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Bramblin, .iconSprite = gMonIcon_Bramblin, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, SHADOW(2, 0, SHADOW_SIZE_S) FOOTPRINT(Bramblin) OVERWORLD( @@ -2941,7 +2987,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .levelUpLearnset = sBramblinLevelUpLearnset, .teachableLearnset = sBramblinTeachableLearnset, .eggMoveLearnset = sBramblinEggMoveLearnset, - .evolutions = EVOLUTION({EVO_OVERWORLD_STEPS, 1000, SPECIES_BRAMBLEGHAST}), + .evolutions = EVOLUTION({EVO_LEVEL, 0, SPECIES_BRAMBLEGHAST, CONDITIONS({IF_MIN_OVERWORLD_STEPS, 1000})}), }, [SPECIES_BRAMBLEGHAST] = @@ -2991,6 +3037,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Brambleghast, .iconSprite = gMonIcon_Brambleghast, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 6, SHADOW_SIZE_M) FOOTPRINT(Brambleghast) OVERWORLD( @@ -3057,6 +3104,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Toedscool, .iconSprite = gMonIcon_Toedscool, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-2, 10, SHADOW_SIZE_M) FOOTPRINT(Toedscool) OVERWORLD( @@ -3123,6 +3171,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Toedscruel, .iconSprite = gMonIcon_Toedscruel, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(2, 8, SHADOW_SIZE_L) FOOTPRINT(Toedscruel) OVERWORLD( @@ -3187,6 +3236,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Klawf, .iconSprite = gMonIcon_Klawf, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 0, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Klawf) OVERWORLD( @@ -3252,6 +3302,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Capsakid, .iconSprite = gMonIcon_Capsakid, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(2, 0, SHADOW_SIZE_S) FOOTPRINT(Capsakid) OVERWORLD( @@ -3316,6 +3367,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Scovillain, .iconSprite = gMonIcon_Scovillain, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(6, 11, SHADOW_SIZE_M) FOOTPRINT(Scovillain) OVERWORLD( @@ -3380,6 +3432,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Rellor, .iconSprite = gMonIcon_Rellor, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(4, -3, SHADOW_SIZE_L) FOOTPRINT(Rellor) OVERWORLD( @@ -3394,7 +3447,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .levelUpLearnset = sRellorLevelUpLearnset, .teachableLearnset = sRellorTeachableLearnset, .eggMoveLearnset = sRellorEggMoveLearnset, - .evolutions = EVOLUTION({EVO_OVERWORLD_STEPS, 1000, SPECIES_RABSCA}), + .evolutions = EVOLUTION({EVO_LEVEL, 0, SPECIES_RABSCA, CONDITIONS({IF_MIN_OVERWORLD_STEPS, 1000})}), }, [SPECIES_RABSCA] = @@ -3444,6 +3497,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Rabsca, .iconSprite = gMonIcon_Rabsca, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-2, 14, SHADOW_SIZE_M) FOOTPRINT(Rabsca) OVERWORLD( @@ -3508,6 +3562,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Flittle, .iconSprite = gMonIcon_Flittle, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-2, 2, SHADOW_SIZE_S) FOOTPRINT(Flittle) OVERWORLD( @@ -3572,6 +3627,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Espathra, .iconSprite = gMonIcon_Espathra, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-5, 10, SHADOW_SIZE_M) FOOTPRINT(Espathra) OVERWORLD( @@ -3636,6 +3692,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Tinkatink, .iconSprite = gMonIcon_Tinkatink, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, SHADOW(-3, 1, SHADOW_SIZE_S) FOOTPRINT(Tinkatink) OVERWORLD( @@ -3700,6 +3757,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Tinkatuff, .iconSprite = gMonIcon_Tinkatuff, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, SHADOW(-4, 5, SHADOW_SIZE_L) FOOTPRINT(Tinkatuff) OVERWORLD( @@ -3763,6 +3821,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Tinkaton, .iconSprite = gMonIcon_Tinkaton, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, SHADOW(-5, 15, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Tinkaton) OVERWORLD( @@ -3826,6 +3885,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Wiglett, .iconSprite = gMonIcon_Wiglett, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, NO_SHADOW FOOTPRINT(Wiglett) OVERWORLD( @@ -3889,6 +3949,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Wugtrio, .iconSprite = gMonIcon_Wugtrio, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, NO_SHADOW FOOTPRINT(Wugtrio) OVERWORLD( @@ -3953,6 +4014,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Bombirdier, .iconSprite = gMonIcon_Bombirdier, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(8, 12, SHADOW_SIZE_M) FOOTPRINT(Bombirdier) OVERWORLD( @@ -4017,6 +4079,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Finizen, .iconSprite = gMonIcon_Finizen, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 7, SHADOW_SIZE_S) FOOTPRINT(Finizen) OVERWORLD( @@ -4081,6 +4144,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_PalafinZero, .iconSprite = gMonIcon_PalafinZero, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 7, SHADOW_SIZE_S) FOOTPRINT(Palafin) OVERWORLD( @@ -4145,6 +4209,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_PalafinHero, .iconSprite = gMonIcon_PalafinHero, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 13, SHADOW_SIZE_M) FOOTPRINT(Palafin) OVERWORLD( @@ -4211,6 +4276,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Varoom, .iconSprite = gMonIcon_Varoom, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 0, SHADOW_SIZE_M) FOOTPRINT(Varoom) OVERWORLD( @@ -4275,6 +4341,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Revavroom, .iconSprite = gMonIcon_Revavroom, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 7, SHADOW_SIZE_L) FOOTPRINT(Revavroom) OVERWORLD( @@ -4339,6 +4406,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Cyclizar, .iconSprite = gMonIcon_Cyclizar, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 9, SHADOW_SIZE_M) FOOTPRINT(Cyclizar) OVERWORLD( @@ -4404,6 +4472,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Orthworm, .iconSprite = gMonIcon_Orthworm, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(6, 10, SHADOW_SIZE_L) FOOTPRINT(Orthworm) OVERWORLD( @@ -4470,6 +4539,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Glimmet, .iconSprite = gMonIcon_Glimmet, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-2, 6, SHADOW_SIZE_S) FOOTPRINT(Glimmet) OVERWORLD( @@ -4535,6 +4605,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Glimmora, .iconSprite = gMonIcon_Glimmora, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-3, 17, SHADOW_SIZE_M) FOOTPRINT(Glimmora) OVERWORLD( @@ -4599,6 +4670,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Greavard, .iconSprite = gMonIcon_Greavard, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(3, 2, SHADOW_SIZE_M) FOOTPRINT(Greavard) OVERWORLD( @@ -4613,7 +4685,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .levelUpLearnset = sGreavardLevelUpLearnset, .teachableLearnset = sGreavardTeachableLearnset, .eggMoveLearnset = sGreavardEggMoveLearnset, - .evolutions = EVOLUTION({EVO_LEVEL_NIGHT, 30, SPECIES_HOUNDSTONE}), + .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_HOUNDSTONE, CONDITIONS({IF_TIME, TIME_NIGHT})}), }, [SPECIES_HOUNDSTONE] = @@ -4663,6 +4735,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Houndstone, .iconSprite = gMonIcon_Houndstone, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(4, 6, SHADOW_SIZE_L) FOOTPRINT(Houndstone) OVERWORLD( @@ -4727,6 +4800,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Flamigo, .iconSprite = gMonIcon_Flamigo, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 12, SHADOW_SIZE_S) FOOTPRINT(Flamigo) OVERWORLD( @@ -4792,6 +4866,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Cetoddle, .iconSprite = gMonIcon_Cetoddle, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(2, 0, SHADOW_SIZE_M) FOOTPRINT(Cetoddle) OVERWORLD( @@ -4856,6 +4931,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Cetitan, .iconSprite = gMonIcon_Cetitan, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 10, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Cetitan) OVERWORLD( @@ -4921,6 +4997,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Veluza, .iconSprite = gMonIcon_Veluza, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 5, SHADOW_SIZE_M) FOOTPRINT(Veluza) OVERWORLD( @@ -4987,6 +5064,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Dondozo, .iconSprite = gMonIcon_Dondozo, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 8, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Dondozo) OVERWORLD( @@ -5052,6 +5130,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_TatsugiriCurly, .iconSprite = gMonIcon_TatsugiriCurly, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(-2, -1, SHADOW_SIZE_S) FOOTPRINT(Tatsugiri) OVERWORLD( @@ -5115,6 +5194,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_TatsugiriDroopy, .iconSprite = gMonIcon_TatsugiriDroopy, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(-2, -1, SHADOW_SIZE_S) FOOTPRINT(Tatsugiri) OVERWORLD( @@ -5178,6 +5258,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_TatsugiriStretchy, .iconSprite = gMonIcon_TatsugiriStretchy, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(-2, -1, SHADOW_SIZE_S) FOOTPRINT(Tatsugiri) OVERWORLD( @@ -5245,6 +5326,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_GreatTusk, .iconSprite = gMonIcon_GreatTusk, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(2, 13, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(GreatTusk) OVERWORLD( @@ -5311,6 +5393,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_ScreamTail, .iconSprite = gMonIcon_ScreamTail, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 3, SHADOW_SIZE_L) FOOTPRINT(ScreamTail) OVERWORLD( @@ -5377,6 +5460,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_BruteBonnet, .iconSprite = gMonIcon_BruteBonnet, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(2, 7, SHADOW_SIZE_L) FOOTPRINT(BruteBonnet) OVERWORLD( @@ -5446,6 +5530,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_FlutterMane, .iconSprite = gMonIcon_FlutterMane, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-2, 20, SHADOW_SIZE_S) FOOTPRINT(FlutterMane) OVERWORLD( @@ -5511,6 +5596,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_SlitherWing, .iconSprite = gMonIcon_SlitherWing, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-5, 13, SHADOW_SIZE_M) FOOTPRINT(SlitherWing) OVERWORLD( @@ -5577,6 +5663,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_SandyShocks, .iconSprite = gMonIcon_SandyShocks, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(2, 13, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(SandyShocks) OVERWORLD( @@ -5643,6 +5730,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_IronTreads, .iconSprite = gMonIcon_IronTreads, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(4, 3, SHADOW_SIZE_L) FOOTPRINT(IronTreads) OVERWORLD( @@ -5709,6 +5797,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_IronBundle, .iconSprite = gMonIcon_IronBundle, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, SHADOW(-1, 6, SHADOW_SIZE_M) FOOTPRINT(IronBundle) OVERWORLD( @@ -5775,6 +5864,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_IronHands, .iconSprite = gMonIcon_IronHands, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-2, 8, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(IronHands) OVERWORLD( @@ -5842,6 +5932,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_IronJugulis, .iconSprite = gMonIcon_IronJugulis, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 15, SHADOW_SIZE_M) FOOTPRINT(IronJugulis) OVERWORLD( @@ -5909,6 +6000,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_IronMoth, .iconSprite = gMonIcon_IronMoth, .iconPalIndex = 3, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-4, 14, SHADOW_SIZE_M) FOOTPRINT(IronMoth) OVERWORLD( @@ -5975,6 +6067,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_IronThorns, .iconSprite = gMonIcon_IronThorns, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-9, 12, SHADOW_SIZE_L) FOOTPRINT(IronThorns) OVERWORLD( @@ -6040,6 +6133,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Frigibax, .iconSprite = gMonIcon_Frigibax, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, SHADOW(2, -1, SHADOW_SIZE_S) FOOTPRINT(Frigibax) OVERWORLD( @@ -6104,6 +6198,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Arctibax, .iconSprite = gMonIcon_Arctibax, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(4, 8, SHADOW_SIZE_M) FOOTPRINT(Arctibax) OVERWORLD( @@ -6167,6 +6262,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Baxcalibur, .iconSprite = gMonIcon_Baxcalibur, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(5, 12, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Baxcalibur) OVERWORLD( @@ -6231,6 +6327,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_GimmighoulChest, .iconSprite = gMonIcon_GimmighoulChest, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_SLOW, SHADOW(0, 7, SHADOW_SIZE_M) FOOTPRINT(GimmighoulChest) OVERWORLD( @@ -6245,7 +6342,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .levelUpLearnset = sGimmighoulLevelUpLearnset, .teachableLearnset = sGimmighoulTeachableLearnset, .formSpeciesIdTable = sGimmighoulFormSpeciesIdTable, - .evolutions = EVOLUTION({EVO_ITEM_COUNT_999, ITEM_GIMMIGHOUL_COIN, SPECIES_GHOLDENGO}), + .evolutions = EVOLUTION({EVO_LEVEL, 0, SPECIES_GHOLDENGO, CONDITIONS({IF_BAG_ITEM_COUNT, ITEM_GIMMIGHOUL_COIN, 999})}), }, [SPECIES_GIMMIGHOUL_ROAMING] = @@ -6295,12 +6392,13 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_GimmighoulRoaming, .iconSprite = gMonIcon_GimmighoulRoaming, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_FAST, SHADOW(-1, -4, SHADOW_SIZE_S) FOOTPRINT(GimmighoulRoaming) .levelUpLearnset = sGimmighoulLevelUpLearnset, .teachableLearnset = sGimmighoulTeachableLearnset, .formSpeciesIdTable = sGimmighoulFormSpeciesIdTable, - .evolutions = EVOLUTION({EVO_ITEM_COUNT_999, ITEM_GIMMIGHOUL_COIN, SPECIES_GHOLDENGO}), + .evolutions = EVOLUTION({EVO_LEVEL, 0, SPECIES_GHOLDENGO, CONDITIONS({IF_BAG_ITEM_COUNT, ITEM_GIMMIGHOUL_COIN, 999})}), }, [SPECIES_GHOLDENGO] = @@ -6350,6 +6448,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Gholdengo, .iconSprite = gMonIcon_Gholdengo, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(3, 13, SHADOW_SIZE_M) FOOTPRINT(Gholdengo) OVERWORLD( @@ -6414,6 +6513,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_WoChien, .iconSprite = gMonIcon_WoChien, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 11, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(WoChien) OVERWORLD( @@ -6480,6 +6580,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_ChienPao, .iconSprite = gMonIcon_ChienPao, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-4, 8, SHADOW_SIZE_L) FOOTPRINT(ChienPao) OVERWORLD( @@ -6546,6 +6647,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_TingLu, .iconSprite = gMonIcon_TingLu, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(12, 13, SHADOW_SIZE_L) FOOTPRINT(TingLu) OVERWORLD( @@ -6613,6 +6715,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_ChiYu, .iconSprite = gMonIcon_ChiYu, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 16, SHADOW_SIZE_S) FOOTPRINT(ChiYu) OVERWORLD( @@ -6681,6 +6784,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_RoaringMoon, .iconSprite = gMonIcon_RoaringMoon, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(3, 9, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(RoaringMoon) OVERWORLD( @@ -6746,6 +6850,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_IronValiant, .iconSprite = gMonIcon_IronValiant, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(2, 14, SHADOW_SIZE_L) FOOTPRINT(IronValiant) OVERWORLD( @@ -6811,6 +6916,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Koraidon, .iconSprite = gMonIcon_Koraidon, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-3, 13, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(Koraidon) OVERWORLD( @@ -6879,6 +6985,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Miraidon, .iconSprite = gMonIcon_Miraidon, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(3, 22, SHADOW_SIZE_L) FOOTPRINT(Miraidon) OVERWORLD( @@ -6946,6 +7053,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_WalkingWake, .iconSprite = gMonIcon_WalkingWake, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(2, 13, SHADOW_SIZE_L) FOOTPRINT(WalkingWake) OVERWORLD( @@ -7011,6 +7119,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_IronLeaves, .iconSprite = gMonIcon_IronLeaves, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(2, 11, SHADOW_SIZE_M) FOOTPRINT(IronLeaves) OVERWORLD( @@ -7077,6 +7186,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Poltchageist, .iconSprite = gMonIcon_Poltchageist, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 14, SHADOW_SIZE_S) FOOTPRINT(Poltchageist) OVERWORLD( @@ -7141,6 +7251,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Poltchageist, .iconSprite = gMonIcon_Poltchageist, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 14, SHADOW_SIZE_S) FOOTPRINT(Poltchageist) OVERWORLD( @@ -7206,6 +7317,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Sinistcha, .iconSprite = gMonIcon_Sinistcha, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 11, SHADOW_SIZE_M) FOOTPRINT(Sinistcha) OVERWORLD( @@ -7269,6 +7381,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Sinistcha, .iconSprite = gMonIcon_Sinistcha, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 11, SHADOW_SIZE_M) FOOTPRINT(Sinistcha) OVERWORLD( @@ -7334,6 +7447,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Okidogi, .iconSprite = gMonIcon_Okidogi, .iconPalIndex = 1, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 11, SHADOW_SIZE_L) FOOTPRINT(Okidogi) OVERWORLD( @@ -7400,6 +7514,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Munkidori, .iconSprite = gMonIcon_Munkidori, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(1, 8, SHADOW_SIZE_S) FOOTPRINT(Munkidori) OVERWORLD( @@ -7466,6 +7581,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Fezandipiti, .iconSprite = gMonIcon_Fezandipiti, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-3, 10, SHADOW_SIZE_M) FOOTPRINT(Fezandipiti) OVERWORLD( @@ -7529,6 +7645,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Ogerpon##Form2, \ .iconSprite = gMonIcon_Ogerpon##Form1, \ .iconPalIndex = iconpalette, \ + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, \ SHADOW(7, 13, SHADOW_SIZE_L) \ FOOTPRINT(Ogerpon) \ OVERWORLD( \ @@ -7611,6 +7728,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_GougingFire, .iconSprite = gMonIcon_GougingFire, .iconPalIndex = 5, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-1, 6, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(GougingFire) OVERWORLD( @@ -7677,6 +7795,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_RagingBolt, .iconSprite = gMonIcon_RagingBolt, .iconPalIndex = 2, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(4, 14, SHADOW_SIZE_L) FOOTPRINT(RagingBolt) OVERWORLD( @@ -7742,6 +7861,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_IronBoulder, .iconSprite = gMonIcon_IronBoulder, .iconPalIndex = 5, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(4, 7, SHADOW_SIZE_XL_BATTLE_ONLY) FOOTPRINT(IronBoulder) OVERWORLD( @@ -7808,6 +7928,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_IronCrown, .iconSprite = gMonIcon_IronCrown, .iconPalIndex = 3, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 14, SHADOW_SIZE_L) FOOTPRINT(IronCrown) OVERWORLD( @@ -7874,6 +7995,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_TerapagosNormal, .iconSprite = gMonIcon_TerapagosNormal, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NORMAL, SHADOW(0, 2, SHADOW_SIZE_M) FOOTPRINT(TerapagosNormal) OVERWORLD( @@ -7944,6 +8066,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_TerapagosTerastal, .iconSprite = gMonIcon_TerapagosTerastal, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(-4, 8, SHADOW_SIZE_L) FOOTPRINT(TerapagosTerastal) OVERWORLD( @@ -8012,6 +8135,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_TerapagosStellar, .iconSprite = gMonIcon_TerapagosStellar, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(0, 12, SHADOW_SIZE_L) FOOTPRINT(TerapagosStellar) .isLegendary = TRUE, @@ -8073,6 +8197,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .shinyPalette = gMonShinyPalette_Pecharunt, .iconSprite = gMonIcon_Pecharunt, .iconPalIndex = 0, + .pokemonJumpType = PKMN_JUMP_TYPE_NONE, SHADOW(2, 1, SHADOW_SIZE_L) FOOTPRINT(Pecharunt) OVERWORLD( diff --git a/src/data/pokemon/teachable_learnsets.h b/src/data/pokemon/teachable_learnsets.h index b0755d6039..ae04d18e68 100644 --- a/src/data/pokemon/teachable_learnsets.h +++ b/src/data/pokemon/teachable_learnsets.h @@ -1,5 +1,5 @@ // -// DO NOT MODIFY THIS FILE! It is auto-generated from tools/learnset_helpers/teachable.py +// DO NOT MODIFY THIS FILE! It is auto-generated by tools/learnset_helpers/make_teachables.py // // *************************************************** // @@ -63,7 +63,7 @@ // - MOVE_WATERFALL // // - MOVE_DIVE // // *************************************************** // -// Tutor moves found in map scripts: // +// Tutor moves found from map scripts: // // - MOVE_BODY_SLAM // // - MOVE_COUNTER // // - MOVE_DEFENSE_CURL // @@ -95,7 +95,7 @@ // - MOVE_THUNDER_PUNCH // // - MOVE_THUNDER_WAVE // // *************************************************** // -// Near-universal moves found in sUniversalMoves: // +// Near-universal moves found from sUniversalMoves: // // - MOVE_BIDE // // - MOVE_FRUSTRATION // // - MOVE_HIDDEN_POWER // @@ -115,101 +115,101 @@ static const u16 sNoneTeachableLearnset[] = { #if P_FAMILY_BULBASAUR static const u16 sBulbasaurTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BULLET_SEED, MOVE_CUT, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, + MOVE_FURY_CUTTER, MOVE_GIGA_DRAIN, MOVE_LIGHT_SCREEN, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_REFLECT, MOVE_REST, MOVE_ROCK_SMASH, MOVE_SAFEGUARD, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_STRENGTH, MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_MUD_SLAP, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWORDS_DANCE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sIvysaurTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BULLET_SEED, MOVE_CUT, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, + MOVE_FURY_CUTTER, MOVE_GIGA_DRAIN, MOVE_LIGHT_SCREEN, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_REFLECT, MOVE_REST, MOVE_ROAR, MOVE_ROCK_SMASH, MOVE_SAFEGUARD, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_STRENGTH, MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_MUD_SLAP, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWORDS_DANCE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sVenusaurTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BULLET_SEED, MOVE_CUT, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, + MOVE_FURY_CUTTER, MOVE_GIGA_DRAIN, MOVE_HYPER_BEAM, MOVE_LIGHT_SCREEN, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_REFLECT, MOVE_REST, MOVE_ROAR, MOVE_ROCK_SMASH, MOVE_SAFEGUARD, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_STRENGTH, MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_MUD_SLAP, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWORDS_DANCE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_BULBASAUR @@ -218,141 +218,141 @@ static const u16 sVenusaurTeachableLearnset[] = { static const u16 sCharmanderTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, + MOVE_COUNTER, MOVE_CUT, + MOVE_DEFENSE_CURL, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_DRAGON_CLAW, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, + MOVE_FIRE_PUNCH, MOVE_FLAMETHROWER, MOVE_FOCUS_PUNCH, + MOVE_FURY_CUTTER, MOVE_IRON_TAIL, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MUD_SLAP, MOVE_OVERHEAT, MOVE_PROTECT, MOVE_REFLECT, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_FURY_CUTTER, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, MOVE_SEISMIC_TOSS, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, MOVE_SWORDS_DANCE, MOVE_THUNDER_PUNCH, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sCharmeleonTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, + MOVE_COUNTER, MOVE_CUT, + MOVE_DEFENSE_CURL, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_DRAGON_CLAW, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, + MOVE_FIRE_PUNCH, MOVE_FLAMETHROWER, MOVE_FOCUS_PUNCH, + MOVE_FURY_CUTTER, MOVE_IRON_TAIL, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MUD_SLAP, MOVE_OVERHEAT, MOVE_PROTECT, MOVE_REFLECT, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_FURY_CUTTER, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, MOVE_SEISMIC_TOSS, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, MOVE_SWORDS_DANCE, MOVE_THUNDER_PUNCH, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sCharizardTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, + MOVE_COUNTER, MOVE_CUT, + MOVE_DEFENSE_CURL, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_DRAGON_CLAW, + MOVE_DYNAMIC_PUNCH, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, + MOVE_FIRE_PUNCH, MOVE_FLAMETHROWER, MOVE_FLY, MOVE_FOCUS_PUNCH, + MOVE_FURY_CUTTER, MOVE_HYPER_BEAM, MOVE_IRON_TAIL, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MUD_SLAP, MOVE_OVERHEAT, MOVE_PROTECT, MOVE_REFLECT, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SANDSTORM, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_STEEL_WING, MOVE_STRENGTH, MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_FURY_CUTTER, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, - MOVE_SEISMIC_TOSS, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWIFT, MOVE_SWORDS_DANCE, MOVE_THUNDER_PUNCH, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_CHARMANDER @@ -361,132 +361,132 @@ static const u16 sCharizardTeachableLearnset[] = { static const u16 sSquirtleTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, MOVE_DIG, MOVE_DIVE, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, MOVE_FACADE, MOVE_FOCUS_PUNCH, MOVE_HAIL, MOVE_ICE_BEAM, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, MOVE_IRON_TAIL, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, - MOVE_STRENGTH, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_ICE_PUNCH, - MOVE_ICY_WIND, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, MOVE_ROLLOUT, MOVE_SEISMIC_TOSS, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SURF, MOVE_SWAGGER, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; static const u16 sWartortleTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, MOVE_DIG, MOVE_DIVE, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, MOVE_FACADE, MOVE_FOCUS_PUNCH, MOVE_HAIL, MOVE_ICE_BEAM, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, MOVE_IRON_TAIL, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, - MOVE_STRENGTH, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_ICE_PUNCH, - MOVE_ICY_WIND, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, MOVE_ROLLOUT, MOVE_SEISMIC_TOSS, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SURF, MOVE_SWAGGER, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; static const u16 sBlastoiseTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, MOVE_DIG, MOVE_DIVE, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DYNAMIC_PUNCH, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FOCUS_PUNCH, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, MOVE_IRON_TAIL, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, - MOVE_STRENGTH, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_ICE_PUNCH, - MOVE_ICY_WIND, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, MOVE_ROLLOUT, MOVE_SEISMIC_TOSS, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SURF, MOVE_SWAGGER, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_SQUIRTLE @@ -504,31 +504,31 @@ static const u16 sMetapodTeachableLearnset[] = { static const u16 sButterfreeTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_GIGA_DRAIN, MOVE_HYPER_BEAM, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, MOVE_SAFEGUARD, MOVE_SHADOW_BALL, MOVE_SKILL_SWAP, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_PSYCH_UP, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_THIEF, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_CATERPIE @@ -547,28 +547,28 @@ static const u16 sBeedrillTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_CUT, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, + MOVE_FURY_CUTTER, MOVE_GIGA_DRAIN, MOVE_HYPER_BEAM, MOVE_PROTECT, MOVE_REFLECT, MOVE_REST, MOVE_ROCK_SMASH, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_THIEF, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_WEEDLE @@ -577,73 +577,73 @@ static const u16 sBeedrillTeachableLearnset[] = { static const u16 sPidgeyTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLY, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MUD_SLAP, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_THIEF, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sPidgeottoTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLY, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MUD_SLAP, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_THIEF, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sPidgeotTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLY, MOVE_HYPER_BEAM, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MUD_SLAP, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_THIEF, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_PIDGEY @@ -652,50 +652,57 @@ static const u16 sPidgeotTeachableLearnset[] = { static const u16 sRattataTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, + MOVE_COUNTER, MOVE_CUT, + MOVE_DEFENSE_CURL, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROCK_SMASH, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_SUNNY_DAY, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_TAUNT, MOVE_THIEF, MOVE_THUNDER, MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sRaticateTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, + MOVE_COUNTER, MOVE_CUT, + MOVE_DEFENSE_CURL, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, @@ -703,27 +710,20 @@ static const u16 sRaticateTeachableLearnset[] = { MOVE_ROCK_SMASH, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_STRENGTH, MOVE_SUNNY_DAY, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, MOVE_TAUNT, MOVE_THIEF, MOVE_THUNDER, MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, - MOVE_SWORDS_DANCE, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; @@ -731,29 +731,29 @@ static const u16 sRaticateTeachableLearnset[] = { static const u16 sRattataAlolaTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_COUNTER, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_FACADE, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_IRON_TAIL, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, MOVE_SNATCH, + MOVE_SNORE, MOVE_SUNNY_DAY, + MOVE_SWAGGER, MOVE_TAUNT, MOVE_THIEF, MOVE_TORMENT, MOVE_TOXIC, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_ICY_WIND, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, MOVE_UNAVAILABLE, }; @@ -761,11 +761,14 @@ static const u16 sRaticateAlolaTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_BULK_UP, + MOVE_COUNTER, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_FACADE, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_IRON_TAIL, MOVE_PROTECT, MOVE_RAIN_DANCE, @@ -773,20 +776,17 @@ static const u16 sRaticateAlolaTeachableLearnset[] = { MOVE_ROAR, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, MOVE_SNATCH, + MOVE_SNORE, MOVE_SUNNY_DAY, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, MOVE_TAUNT, MOVE_THIEF, MOVE_TORMENT, MOVE_TOXIC, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_ICY_WIND, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; #endif //P_ALOLAN_FORMS @@ -796,47 +796,47 @@ static const u16 sRaticateAlolaTeachableLearnset[] = { static const u16 sSpearowTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLY, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MUD_SLAP, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_THIEF, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sFearowTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLY, MOVE_HYPER_BEAM, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MUD_SLAP, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_THIEF, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_SPEAROW @@ -844,62 +844,62 @@ static const u16 sFearowTeachableLearnset[] = { #if P_FAMILY_EKANS static const u16 sEkansTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_GIGA_DRAIN, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_TOMB, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, MOVE_SNATCH, + MOVE_SNORE, MOVE_STRENGTH, MOVE_SUNNY_DAY, + MOVE_SWAGGER, MOVE_THIEF, MOVE_TORMENT, MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, MOVE_UNAVAILABLE, }; static const u16 sArbokTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_GIGA_DRAIN, MOVE_HYPER_BEAM, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_TOMB, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, MOVE_SNATCH, + MOVE_SNORE, MOVE_STRENGTH, MOVE_SUNNY_DAY, + MOVE_SWAGGER, MOVE_THIEF, MOVE_TORMENT, MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_EKANS @@ -908,140 +908,144 @@ static const u16 sArbokTeachableLearnset[] = { #if P_GEN_2_CROSS_EVOS static const u16 sPichuTeachableLearnset[] = { MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_SHOCK_WAVE, - MOVE_SURF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, MOVE_BODY_SLAM, MOVE_COUNTER, MOVE_DEFENSE_CURL, MOVE_DOUBLE_EDGE, + MOVE_DOUBLE_TEAM, MOVE_ENDURE, + MOVE_FACADE, + MOVE_FLASH, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, MOVE_MUD_SLAP, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, MOVE_ROLLOUT, MOVE_SEISMIC_TOSS, + MOVE_SHOCK_WAVE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SURF, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_GEN_2_CROSS_EVOS static const u16 sPikachuTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_CALM_MIND, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_FOCUS_PUNCH, MOVE_IRON_TAIL, MOVE_LIGHT_SCREEN, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, MOVE_ROCK_SMASH, + MOVE_ROLLOUT, + MOVE_SEISMIC_TOSS, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_STRENGTH, MOVE_SURF, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_THIEF, MOVE_THUNDER, MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_MUD_SLAP, - MOVE_ROLLOUT, - MOVE_SEISMIC_TOSS, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sRaichuTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_CALM_MIND, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_FOCUS_PUNCH, MOVE_HYPER_BEAM, MOVE_IRON_TAIL, MOVE_LIGHT_SCREEN, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, MOVE_ROCK_SMASH, + MOVE_ROLLOUT, MOVE_SAFEGUARD, + MOVE_SEISMIC_TOSS, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_STRENGTH, MOVE_SURF, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_THIEF, MOVE_THUNDER, MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_MUD_SLAP, - MOVE_ROLLOUT, - MOVE_SEISMIC_TOSS, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #if P_ALOLAN_FORMS static const u16 sRaichuAlolaTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_CALM_MIND, MOVE_DIG, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FOCUS_PUNCH, MOVE_HYPER_BEAM, MOVE_IRON_TAIL, MOVE_LIGHT_SCREEN, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, MOVE_PROTECT, MOVE_PSYCHIC, MOVE_RAIN_DANCE, @@ -1049,24 +1053,20 @@ static const u16 sRaichuAlolaTeachableLearnset[] = { MOVE_REST, MOVE_ROCK_SMASH, MOVE_SAFEGUARD, + MOVE_SEISMIC_TOSS, MOVE_SHOCK_WAVE, MOVE_SKILL_SWAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SURF, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_THIEF, MOVE_THUNDER, MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_SEISMIC_TOSS, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_ALOLAN_FORMS @@ -1076,81 +1076,81 @@ static const u16 sRaichuAlolaTeachableLearnset[] = { static const u16 sSandshrewTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, + MOVE_COUNTER, MOVE_CUT, + MOVE_DEFENSE_CURL, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DYNAMIC_PUNCH, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FOCUS_PUNCH, + MOVE_FURY_CUTTER, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, + MOVE_ROLLOUT, MOVE_SAFEGUARD, MOVE_SANDSTORM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, - MOVE_ROLLOUT, MOVE_SEISMIC_TOSS, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_THIEF, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sSandslashTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, + MOVE_COUNTER, MOVE_CUT, + MOVE_DEFENSE_CURL, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DYNAMIC_PUNCH, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FOCUS_PUNCH, + MOVE_FURY_CUTTER, MOVE_HYPER_BEAM, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, + MOVE_ROLLOUT, MOVE_SAFEGUARD, MOVE_SANDSTORM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, - MOVE_ROLLOUT, MOVE_SEISMIC_TOSS, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_THIEF, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; @@ -1159,38 +1159,38 @@ static const u16 sSandshrewAlolaTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FOCUS_PUNCH, + MOVE_FURY_CUTTER, MOVE_HAIL, MOVE_ICE_BEAM, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, MOVE_IRON_TAIL, MOVE_PROTECT, MOVE_REST, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_ICE_PUNCH, - MOVE_ICY_WIND, MOVE_ROCK_SLIDE, + MOVE_ROCK_TOMB, MOVE_ROLLOUT, + MOVE_SAFEGUARD, MOVE_SEISMIC_TOSS, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_THIEF, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; @@ -1198,39 +1198,39 @@ static const u16 sSandslashAlolaTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FOCUS_PUNCH, + MOVE_FURY_CUTTER, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, MOVE_IRON_TAIL, MOVE_PROTECT, MOVE_REST, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_ICE_PUNCH, - MOVE_ICY_WIND, MOVE_ROCK_SLIDE, + MOVE_ROCK_TOMB, MOVE_ROLLOUT, + MOVE_SAFEGUARD, MOVE_SEISMIC_TOSS, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_THIEF, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_ALOLAN_FORMS @@ -1241,35 +1241,35 @@ static const u16 sNidoranFTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, + MOVE_COUNTER, MOVE_CUT, + MOVE_DEFENSE_CURL, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_ICE_BEAM, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, MOVE_ROCK_SMASH, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_STRENGTH, MOVE_SUNNY_DAY, + MOVE_SWAGGER, MOVE_THIEF, MOVE_THUNDER, MOVE_THUNDERBOLT, MOVE_TOXIC, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, MOVE_UNAVAILABLE, }; @@ -1277,35 +1277,35 @@ static const u16 sNidorinaTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, + MOVE_COUNTER, MOVE_CUT, + MOVE_DEFENSE_CURL, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_ICE_BEAM, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, MOVE_ROCK_SMASH, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_STRENGTH, MOVE_SUNNY_DAY, + MOVE_SWAGGER, MOVE_THIEF, MOVE_THUNDER, MOVE_THUNDERBOLT, MOVE_TOXIC, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, MOVE_UNAVAILABLE, }; @@ -1313,186 +1313,186 @@ static const u16 sNidoqueenTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, + MOVE_COUNTER, MOVE_CUT, + MOVE_DEFENSE_CURL, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DYNAMIC_PUNCH, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, + MOVE_FIRE_PUNCH, MOVE_FLAMETHROWER, MOVE_FOCUS_PUNCH, + MOVE_FURY_CUTTER, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, MOVE_IRON_TAIL, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SANDSTORM, + MOVE_SEISMIC_TOSS, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_STRENGTH, MOVE_SUNNY_DAY, MOVE_SURF, + MOVE_SWAGGER, MOVE_TAUNT, MOVE_THIEF, MOVE_THUNDER, MOVE_THUNDERBOLT, + MOVE_THUNDER_PUNCH, MOVE_TORMENT, MOVE_TOXIC, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_FURY_CUTTER, - MOVE_ICE_PUNCH, - MOVE_ICY_WIND, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, - MOVE_SEISMIC_TOSS, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_THUNDER_PUNCH, MOVE_UNAVAILABLE, }; static const u16 sNidoranMTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, + MOVE_COUNTER, MOVE_CUT, + MOVE_DEFENSE_CURL, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_ICE_BEAM, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, MOVE_ROCK_SMASH, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_STRENGTH, MOVE_SUNNY_DAY, + MOVE_SWAGGER, MOVE_THIEF, MOVE_THUNDER, MOVE_THUNDERBOLT, MOVE_TOXIC, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, MOVE_UNAVAILABLE, }; static const u16 sNidorinoTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, + MOVE_COUNTER, MOVE_CUT, + MOVE_DEFENSE_CURL, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_ICE_BEAM, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, MOVE_ROCK_SMASH, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_STRENGTH, MOVE_SUNNY_DAY, + MOVE_SWAGGER, MOVE_THIEF, MOVE_THUNDER, MOVE_THUNDERBOLT, MOVE_TOXIC, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, MOVE_UNAVAILABLE, }; static const u16 sNidokingTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, + MOVE_COUNTER, MOVE_CUT, + MOVE_DEFENSE_CURL, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DYNAMIC_PUNCH, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, + MOVE_FIRE_PUNCH, MOVE_FLAMETHROWER, MOVE_FOCUS_PUNCH, + MOVE_FURY_CUTTER, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, MOVE_IRON_TAIL, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SANDSTORM, + MOVE_SEISMIC_TOSS, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_STRENGTH, MOVE_SUNNY_DAY, MOVE_SURF, + MOVE_SWAGGER, MOVE_TAUNT, MOVE_THIEF, MOVE_THUNDER, MOVE_THUNDERBOLT, + MOVE_THUNDER_PUNCH, MOVE_TORMENT, MOVE_TOXIC, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_FURY_CUTTER, - MOVE_ICE_PUNCH, - MOVE_ICY_WIND, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, - MOVE_SEISMIC_TOSS, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_THUNDER_PUNCH, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_NIDORAN @@ -1501,47 +1501,47 @@ static const u16 sNidokingTeachableLearnset[] = { #if P_GEN_2_CROSS_EVOS static const u16 sCleffaTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_CALM_MIND, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, MOVE_FLASH, + MOVE_ICY_WIND, MOVE_IRON_TAIL, MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_SAFEGUARD, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_ICY_WIND, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, MOVE_METRONOME, MOVE_MUD_SLAP, + MOVE_PROTECT, + MOVE_PSYCHIC, MOVE_PSYCH_UP, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, MOVE_ROLLOUT, + MOVE_SAFEGUARD, MOVE_SEISMIC_TOSS, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, MOVE_SLEEP_TALK, MOVE_SNORE, MOVE_SOFT_BOILED, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, MOVE_THUNDER_WAVE, + MOVE_TOXIC, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; #endif //P_GEN_2_CROSS_EVOS @@ -1549,123 +1549,123 @@ static const u16 sCleffaTeachableLearnset[] = { static const u16 sClefairyTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_CALM_MIND, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, + MOVE_FIRE_PUNCH, MOVE_FLAMETHROWER, MOVE_FLASH, MOVE_FOCUS_PUNCH, MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_SAFEGUARD, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH, MOVE_ICY_WIND, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, MOVE_METRONOME, MOVE_MUD_SLAP, + MOVE_PROTECT, + MOVE_PSYCHIC, MOVE_PSYCH_UP, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_ROCK_SMASH, MOVE_ROLLOUT, + MOVE_SAFEGUARD, MOVE_SEISMIC_TOSS, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, MOVE_SLEEP_TALK, + MOVE_SNATCH, MOVE_SNORE, MOVE_SOFT_BOILED, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, + MOVE_TOXIC, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; static const u16 sClefableTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_CALM_MIND, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, + MOVE_FIRE_PUNCH, MOVE_FLAMETHROWER, MOVE_FLASH, MOVE_FOCUS_PUNCH, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_SAFEGUARD, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH, MOVE_ICY_WIND, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, MOVE_METRONOME, MOVE_MUD_SLAP, + MOVE_PROTECT, + MOVE_PSYCHIC, MOVE_PSYCH_UP, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_ROCK_SMASH, MOVE_ROLLOUT, + MOVE_SAFEGUARD, MOVE_SEISMIC_TOSS, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, MOVE_SLEEP_TALK, + MOVE_SNATCH, MOVE_SNORE, MOVE_SOFT_BOILED, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, + MOVE_TOXIC, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_CLEFAIRY @@ -1673,36 +1673,40 @@ static const u16 sClefableTeachableLearnset[] = { #if P_FAMILY_VULPIX static const u16 sVulpixTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, MOVE_IRON_TAIL, MOVE_OVERHEAT, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_REFLECT, MOVE_REST, MOVE_ROAR, MOVE_SAFEGUARD, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_PSYCH_UP, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sNinetalesTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_CALM_MIND, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, @@ -1710,23 +1714,19 @@ static const u16 sNinetalesTeachableLearnset[] = { MOVE_IRON_TAIL, MOVE_OVERHEAT, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_REFLECT, MOVE_REST, MOVE_ROAR, MOVE_SAFEGUARD, MOVE_SHADOW_BALL, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_PSYCH_UP, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; @@ -1734,60 +1734,60 @@ static const u16 sNinetalesTeachableLearnset[] = { static const u16 sVulpixAlolaTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_HAIL, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_IRON_TAIL, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, MOVE_ROAR, MOVE_SAFEGUARD, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_PSYCH_UP, MOVE_SLEEP_TALK, MOVE_SNORE, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sNinetalesAlolaTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_CALM_MIND, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_IRON_TAIL, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, MOVE_ROAR, MOVE_SAFEGUARD, - MOVE_SOLAR_BEAM, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_PSYCH_UP, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_ALOLAN_FORMS @@ -1797,43 +1797,43 @@ static const u16 sNinetalesAlolaTeachableLearnset[] = { #if P_GEN_2_CROSS_EVOS static const u16 sIgglybuffTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, MOVE_FLASH, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_SAFEGUARD, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_ENDURE, MOVE_ICY_WIND, + MOVE_LIGHT_SCREEN, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, MOVE_MUD_SLAP, + MOVE_PROTECT, + MOVE_PSYCHIC, MOVE_PSYCH_UP, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, MOVE_ROLLOUT, + MOVE_SAFEGUARD, MOVE_SEISMIC_TOSS, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, MOVE_THUNDER_WAVE, + MOVE_TOXIC, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; #endif //P_GEN_2_CROSS_EVOS @@ -1841,121 +1841,121 @@ static const u16 sIgglybuffTeachableLearnset[] = { static const u16 sJigglypuffTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_CALM_MIND, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, + MOVE_FIRE_PUNCH, MOVE_FLAMETHROWER, MOVE_FLASH, MOVE_FOCUS_PUNCH, MOVE_ICE_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH, MOVE_ICY_WIND, + MOVE_LIGHT_SCREEN, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, MOVE_METRONOME, MOVE_MUD_SLAP, + MOVE_PROTECT, + MOVE_PSYCHIC, MOVE_PSYCH_UP, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, MOVE_ROLLOUT, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, MOVE_SEISMIC_TOSS, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, MOVE_SLEEP_TALK, + MOVE_SNATCH, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, + MOVE_TOXIC, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; static const u16 sWigglytuffTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_CALM_MIND, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, + MOVE_FIRE_PUNCH, MOVE_FLAMETHROWER, MOVE_FLASH, MOVE_FOCUS_PUNCH, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH, MOVE_ICY_WIND, + MOVE_LIGHT_SCREEN, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, MOVE_METRONOME, MOVE_MUD_SLAP, + MOVE_PROTECT, + MOVE_PSYCHIC, MOVE_PSYCH_UP, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, MOVE_ROLLOUT, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, MOVE_SEISMIC_TOSS, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, MOVE_SLEEP_TALK, + MOVE_SNATCH, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, + MOVE_TOXIC, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_JIGGLYPUFF @@ -1964,7 +1964,9 @@ static const u16 sWigglytuffTeachableLearnset[] = { static const u16 sZubatTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLY, MOVE_GIGA_DRAIN, @@ -1972,27 +1974,27 @@ static const u16 sZubatTeachableLearnset[] = { MOVE_RAIN_DANCE, MOVE_REST, MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, MOVE_SNATCH, + MOVE_SNORE, MOVE_STEEL_WING, MOVE_SUNNY_DAY, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_TAUNT, MOVE_THIEF, MOVE_TORMENT, MOVE_TOXIC, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_UNAVAILABLE, }; static const u16 sGolbatTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLY, MOVE_GIGA_DRAIN, @@ -2001,20 +2003,18 @@ static const u16 sGolbatTeachableLearnset[] = { MOVE_RAIN_DANCE, MOVE_REST, MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, MOVE_SNATCH, + MOVE_SNORE, MOVE_STEEL_WING, MOVE_SUNNY_DAY, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_TAUNT, MOVE_THIEF, MOVE_TORMENT, MOVE_TOXIC, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_UNAVAILABLE, }; @@ -2022,7 +2022,9 @@ static const u16 sGolbatTeachableLearnset[] = { static const u16 sCrobatTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLY, MOVE_GIGA_DRAIN, @@ -2031,20 +2033,18 @@ static const u16 sCrobatTeachableLearnset[] = { MOVE_RAIN_DANCE, MOVE_REST, MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, MOVE_SNATCH, + MOVE_SNORE, MOVE_STEEL_WING, MOVE_SUNNY_DAY, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_TAUNT, MOVE_THIEF, MOVE_TORMENT, MOVE_TOXIC, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_UNAVAILABLE, }; #endif //P_GEN_2_CROSS_EVOS @@ -2055,23 +2055,23 @@ static const u16 sOddishTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULLET_SEED, MOVE_CUT, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_GIGA_DRAIN, MOVE_PROTECT, MOVE_REFLECT, MOVE_REST, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWORDS_DANCE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; @@ -2079,31 +2079,34 @@ static const u16 sGloomTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULLET_SEED, MOVE_CUT, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_GIGA_DRAIN, MOVE_PROTECT, MOVE_REFLECT, MOVE_REST, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWORDS_DANCE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sVileplumeTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BULLET_SEED, MOVE_CUT, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_GIGA_DRAIN, @@ -2112,17 +2115,14 @@ static const u16 sVileplumeTeachableLearnset[] = { MOVE_REFLECT, MOVE_REST, MOVE_SAFEGUARD, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWORDS_DANCE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; @@ -2131,7 +2131,9 @@ static const u16 sBellossomTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULLET_SEED, MOVE_CUT, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_GIGA_DRAIN, @@ -2139,16 +2141,14 @@ static const u16 sBellossomTeachableLearnset[] = { MOVE_PROTECT, MOVE_REST, MOVE_SAFEGUARD, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWORDS_DANCE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_GEN_2_CROSS_EVOS @@ -2158,46 +2158,51 @@ static const u16 sBellossomTeachableLearnset[] = { static const u16 sParasTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULLET_SEED, + MOVE_COUNTER, MOVE_CUT, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, + MOVE_FURY_CUTTER, MOVE_GIGA_DRAIN, MOVE_LIGHT_SCREEN, MOVE_PROTECT, MOVE_REFLECT, MOVE_REST, MOVE_ROCK_SMASH, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWORDS_DANCE, + MOVE_THIEF, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sParasectTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULLET_SEED, + MOVE_COUNTER, MOVE_CUT, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, + MOVE_FURY_CUTTER, MOVE_GIGA_DRAIN, MOVE_HYPER_BEAM, MOVE_LIGHT_SCREEN, @@ -2205,20 +2210,15 @@ static const u16 sParasectTeachableLearnset[] = { MOVE_REFLECT, MOVE_REST, MOVE_ROCK_SMASH, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWORDS_DANCE, + MOVE_THIEF, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_PARAS @@ -2226,7 +2226,9 @@ static const u16 sParasectTeachableLearnset[] = { #if P_FAMILY_VENONAT static const u16 sVenonatTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_GIGA_DRAIN, @@ -2235,24 +2237,25 @@ static const u16 sVenonatTeachableLearnset[] = { MOVE_REFLECT, MOVE_REST, MOVE_SKILL_SWAP, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_THIEF, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sVenomothTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_GIGA_DRAIN, @@ -2262,18 +2265,15 @@ static const u16 sVenomothTeachableLearnset[] = { MOVE_REFLECT, MOVE_REST, MOVE_SKILL_SWAP, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_THIEF, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_VENONAT @@ -2282,59 +2282,59 @@ static const u16 sVenomothTeachableLearnset[] = { static const u16 sDiglettTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_CUT, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SANDSTORM, - MOVE_SLUDGE_BOMB, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, MOVE_SLEEP_TALK, + MOVE_SLUDGE_BOMB, MOVE_SNORE, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWORDS_DANCE, + MOVE_THIEF, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sDugtrioTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_CUT, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_HYPER_BEAM, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SANDSTORM, - MOVE_SLUDGE_BOMB, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, MOVE_SLEEP_TALK, + MOVE_SLUDGE_BOMB, MOVE_SNORE, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWORDS_DANCE, + MOVE_THIEF, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; @@ -2342,54 +2342,54 @@ static const u16 sDugtrioTeachableLearnset[] = { static const u16 sDiglettAlolaTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_DIG, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_TOMB, MOVE_SANDSTORM, - MOVE_SLUDGE_BOMB, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, MOVE_SLEEP_TALK, + MOVE_SLUDGE_BOMB, MOVE_SNORE, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWORDS_DANCE, + MOVE_THIEF, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sDugtrioAlolaTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_HYPER_BEAM, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_TOMB, MOVE_SANDSTORM, - MOVE_SLUDGE_BOMB, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, MOVE_SLEEP_TALK, + MOVE_SLUDGE_BOMB, MOVE_SNORE, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWORDS_DANCE, + MOVE_THIEF, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_ALOLAN_FORMS @@ -2399,80 +2399,80 @@ static const u16 sDugtrioAlolaTeachableLearnset[] = { static const u16 sMeowthTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_CUT, + MOVE_DEFENSE_CURL, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, + MOVE_ICY_WIND, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, MOVE_SNATCH, + MOVE_SNORE, MOVE_SUNNY_DAY, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_TAUNT, MOVE_THIEF, MOVE_THUNDER, MOVE_THUNDERBOLT, + MOVE_THUNDER_WAVE, MOVE_TORMENT, MOVE_TOXIC, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, - MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; static const u16 sPersianTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_CUT, + MOVE_DEFENSE_CURL, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_HYPER_BEAM, + MOVE_ICY_WIND, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROAR, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, MOVE_SNATCH, + MOVE_SNORE, MOVE_SUNNY_DAY, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_TAUNT, MOVE_THIEF, MOVE_THUNDER, MOVE_THUNDERBOLT, + MOVE_THUNDER_WAVE, MOVE_TORMENT, MOVE_TOXIC, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, - MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; @@ -2480,72 +2480,72 @@ static const u16 sPersianTeachableLearnset[] = { static const u16 sMeowthAlolaTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, + MOVE_ICY_WIND, MOVE_IRON_TAIL, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, MOVE_SNATCH, + MOVE_SNORE, MOVE_SUNNY_DAY, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_TAUNT, MOVE_THIEF, MOVE_THUNDER, MOVE_THUNDERBOLT, + MOVE_THUNDER_WAVE, MOVE_TORMENT, MOVE_TOXIC, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, - MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; static const u16 sPersianAlolaTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_HYPER_BEAM, + MOVE_ICY_WIND, MOVE_IRON_TAIL, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROAR, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, MOVE_SNATCH, + MOVE_SNORE, MOVE_SUNNY_DAY, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_TAUNT, MOVE_THIEF, MOVE_THUNDER, MOVE_THUNDERBOLT, + MOVE_THUNDER_WAVE, MOVE_TORMENT, MOVE_TOXIC, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, - MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; #endif //P_ALOLAN_FORMS @@ -2554,55 +2554,55 @@ static const u16 sPersianAlolaTeachableLearnset[] = { static const u16 sMeowthGalarTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_DIG, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, MOVE_FACADE, MOVE_IRON_TAIL, + MOVE_METRONOME, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SUNNY_DAY, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, MOVE_TAUNT, MOVE_THIEF, MOVE_THUNDER, MOVE_THUNDERBOLT, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_METRONOME, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; static const u16 sPerrserkerTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_DIG, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, MOVE_FACADE, MOVE_HYPER_BEAM, MOVE_IRON_TAIL, + MOVE_METRONOME, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SUNNY_DAY, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, MOVE_TAUNT, MOVE_THIEF, MOVE_THUNDER, MOVE_THUNDERBOLT, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_METRONOME, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; #endif //P_GALARIAN_FORMS @@ -2613,48 +2613,48 @@ static const u16 sPsyduckTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_CALM_MIND, + MOVE_COUNTER, MOVE_DIG, MOVE_DIVE, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_FOCUS_PUNCH, MOVE_HAIL, MOVE_ICE_BEAM, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, MOVE_IRON_TAIL, MOVE_LIGHT_SCREEN, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_METRONOME, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROCK_SMASH, + MOVE_SEISMIC_TOSS, MOVE_SKILL_SWAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_STRENGTH, MOVE_SURF, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_TAUNT, MOVE_THIEF, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_ICE_PUNCH, - MOVE_ICY_WIND, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_METRONOME, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_SEISMIC_TOSS, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_UNAVAILABLE, }; @@ -2662,50 +2662,50 @@ static const u16 sGolduckTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_CALM_MIND, + MOVE_COUNTER, MOVE_DIG, MOVE_DIVE, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_FOCUS_PUNCH, + MOVE_FURY_CUTTER, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, MOVE_IRON_TAIL, MOVE_LIGHT_SCREEN, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_METRONOME, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROCK_SMASH, + MOVE_SEISMIC_TOSS, MOVE_SKILL_SWAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_STRENGTH, MOVE_SURF, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_TAUNT, MOVE_THIEF, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_ICE_PUNCH, - MOVE_ICY_WIND, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_METRONOME, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_SEISMIC_TOSS, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_PSYDUCK @@ -2714,130 +2714,130 @@ static const u16 sGolduckTeachableLearnset[] = { static const u16 sMankeyTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULK_UP, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_IRON_TAIL, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_BODY_SLAM, MOVE_COUNTER, MOVE_DEFENSE_CURL, + MOVE_DIG, MOVE_DOUBLE_EDGE, + MOVE_DOUBLE_TEAM, MOVE_DYNAMIC_PUNCH, + MOVE_EARTHQUAKE, MOVE_ENDURE, + MOVE_FACADE, MOVE_FIRE_PUNCH, + MOVE_FOCUS_PUNCH, MOVE_ICE_PUNCH, + MOVE_IRON_TAIL, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, MOVE_METRONOME, MOVE_MUD_SLAP, + MOVE_OVERHEAT, + MOVE_PROTECT, MOVE_PSYCH_UP, + MOVE_RAIN_DANCE, + MOVE_REST, MOVE_ROCK_SLIDE, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, MOVE_SEISMIC_TOSS, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_PUNCH, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sPrimeapeTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULK_UP, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_BODY_SLAM, MOVE_COUNTER, MOVE_DEFENSE_CURL, + MOVE_DIG, MOVE_DOUBLE_EDGE, + MOVE_DOUBLE_TEAM, MOVE_DYNAMIC_PUNCH, + MOVE_EARTHQUAKE, MOVE_ENDURE, + MOVE_FACADE, MOVE_FIRE_PUNCH, + MOVE_FOCUS_PUNCH, + MOVE_HYPER_BEAM, MOVE_ICE_PUNCH, + MOVE_IRON_TAIL, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, MOVE_METRONOME, MOVE_MUD_SLAP, + MOVE_OVERHEAT, + MOVE_PROTECT, MOVE_PSYCH_UP, + MOVE_RAIN_DANCE, + MOVE_REST, MOVE_ROCK_SLIDE, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, MOVE_SEISMIC_TOSS, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_PUNCH, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #if P_GEN_9_CROSS_EVOS static const u16 sAnnihilapeTeachableLearnset[] = { + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULK_UP, + MOVE_COUNTER, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FIRE_PUNCH, MOVE_FOCUS_PUNCH, MOVE_HYPER_BEAM, + MOVE_ICE_PUNCH, + MOVE_METRONOME, MOVE_OVERHEAT, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_TOMB, + MOVE_SEISMIC_TOSS, MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, MOVE_SUNNY_DAY, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_TAUNT, MOVE_THIEF, MOVE_THUNDER, MOVE_THUNDERBOLT, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_ICE_PUNCH, - MOVE_METRONOME, - MOVE_ROCK_SLIDE, - MOVE_SEISMIC_TOSS, - MOVE_SLEEP_TALK, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_THUNDER_PUNCH, MOVE_UNAVAILABLE, }; @@ -2848,12 +2848,16 @@ static const u16 sAnnihilapeTeachableLearnset[] = { static const u16 sGrowlitheTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_OVERHEAT, MOVE_PROTECT, MOVE_REFLECT, @@ -2861,31 +2865,31 @@ static const u16 sGrowlitheTeachableLearnset[] = { MOVE_ROAR, MOVE_ROCK_SMASH, MOVE_SAFEGUARD, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MUD_SLAP, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_THIEF, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sArcanineTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, MOVE_HYPER_BEAM, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_OVERHEAT, MOVE_PROTECT, MOVE_REFLECT, @@ -2893,26 +2897,25 @@ static const u16 sArcanineTeachableLearnset[] = { MOVE_ROAR, MOVE_ROCK_SMASH, MOVE_SAFEGUARD, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_STRENGTH, MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_THIEF, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #if P_HISUIAN_FORMS static const u16 sGrowlitheHisuiTeachableLearnset[] = { MOVE_AERIAL_ACE, + MOVE_BODY_SLAM, MOVE_DIG, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, @@ -2921,22 +2924,22 @@ static const u16 sGrowlitheHisuiTeachableLearnset[] = { MOVE_PROTECT, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SANDSTORM, - MOVE_SUNNY_DAY, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ROCK_SLIDE, MOVE_SLEEP_TALK, + MOVE_SUNNY_DAY, MOVE_SWIFT, MOVE_UNAVAILABLE, }; static const u16 sArcanineHisuiTeachableLearnset[] = { MOVE_AERIAL_ACE, + MOVE_BODY_SLAM, MOVE_DIG, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, @@ -2946,18 +2949,15 @@ static const u16 sArcanineHisuiTeachableLearnset[] = { MOVE_PROTECT, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SANDSTORM, + MOVE_SLEEP_TALK, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, MOVE_SWIFT, + MOVE_THIEF, MOVE_UNAVAILABLE, }; #endif //P_HISUIAN_FORMS @@ -2967,124 +2967,124 @@ static const u16 sArcanineHisuiTeachableLearnset[] = { static const u16 sPoliwagTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, + MOVE_DEFENSE_CURL, MOVE_DIG, MOVE_DIVE, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FOCUS_PUNCH, MOVE_HAIL, MOVE_ICE_BEAM, + MOVE_ICY_WIND, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_PSYCHIC, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SURF, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_THIEF, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_UNAVAILABLE, }; static const u16 sPoliwhirlTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, MOVE_DIG, MOVE_DIVE, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FOCUS_PUNCH, MOVE_HAIL, MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_STRENGTH, - MOVE_SURF, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, MOVE_ICE_PUNCH, MOVE_ICY_WIND, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, MOVE_METRONOME, MOVE_MUD_SLAP, + MOVE_PROTECT, + MOVE_PSYCHIC, MOVE_PSYCH_UP, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_ROCK_SMASH, MOVE_SEISMIC_TOSS, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SURF, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; static const u16 sPoliwrathTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULK_UP, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, MOVE_DIG, MOVE_DIVE, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DYNAMIC_PUNCH, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FOCUS_PUNCH, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_STRENGTH, - MOVE_SURF, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, MOVE_ICE_PUNCH, MOVE_ICY_WIND, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, MOVE_METRONOME, MOVE_MUD_SLAP, + MOVE_PROTECT, + MOVE_PSYCHIC, MOVE_PSYCH_UP, + MOVE_RAIN_DANCE, + MOVE_REST, MOVE_ROCK_SLIDE, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, MOVE_SEISMIC_TOSS, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SURF, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; @@ -3092,45 +3092,45 @@ static const u16 sPoliwrathTeachableLearnset[] = { static const u16 sPolitoedTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, MOVE_DIG, MOVE_DIVE, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DYNAMIC_PUNCH, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FOCUS_PUNCH, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_STRENGTH, - MOVE_SURF, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, MOVE_ICE_PUNCH, MOVE_ICY_WIND, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, MOVE_METRONOME, MOVE_MUD_SLAP, + MOVE_PROTECT, + MOVE_PSYCHIC, MOVE_PSYCH_UP, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_ROCK_SMASH, MOVE_SEISMIC_TOSS, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SURF, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; #endif //P_GEN_2_CROSS_EVOS @@ -3139,142 +3139,142 @@ static const u16 sPolitoedTeachableLearnset[] = { #if P_FAMILY_ABRA static const u16 sAbraTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_CALM_MIND, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FIRE_PUNCH, MOVE_FLASH, MOVE_FOCUS_PUNCH, + MOVE_ICE_PUNCH, MOVE_IRON_TAIL, MOVE_LIGHT_SCREEN, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_METRONOME, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, MOVE_SAFEGUARD, + MOVE_SEISMIC_TOSS, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_ICE_PUNCH, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_METRONOME, - MOVE_PSYCH_UP, - MOVE_SEISMIC_TOSS, MOVE_SLEEP_TALK, + MOVE_SNATCH, MOVE_SNORE, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_TAUNT, + MOVE_THIEF, MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, + MOVE_TORMENT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sKadabraTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_CALM_MIND, + MOVE_COUNTER, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FIRE_PUNCH, MOVE_FLASH, MOVE_FOCUS_PUNCH, + MOVE_ICE_PUNCH, MOVE_IRON_TAIL, MOVE_LIGHT_SCREEN, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_METRONOME, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, MOVE_SAFEGUARD, + MOVE_SEISMIC_TOSS, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_ICE_PUNCH, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_METRONOME, - MOVE_PSYCH_UP, - MOVE_SEISMIC_TOSS, MOVE_SLEEP_TALK, + MOVE_SNATCH, MOVE_SNORE, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_TAUNT, + MOVE_THIEF, MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, + MOVE_TORMENT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sAlakazamTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_CALM_MIND, + MOVE_COUNTER, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FIRE_PUNCH, MOVE_FLASH, MOVE_FOCUS_PUNCH, MOVE_HYPER_BEAM, + MOVE_ICE_PUNCH, MOVE_IRON_TAIL, MOVE_LIGHT_SCREEN, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_METRONOME, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, MOVE_SAFEGUARD, + MOVE_SEISMIC_TOSS, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_ICE_PUNCH, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_METRONOME, - MOVE_PSYCH_UP, - MOVE_SEISMIC_TOSS, MOVE_SLEEP_TALK, + MOVE_SNATCH, MOVE_SNORE, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_TAUNT, + MOVE_THIEF, MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, + MOVE_TORMENT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_ABRA @@ -3282,125 +3282,125 @@ static const u16 sAlakazamTeachableLearnset[] = { #if P_FAMILY_MACHOP static const u16 sMachopTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULK_UP, + MOVE_COUNTER, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DYNAMIC_PUNCH, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, + MOVE_FIRE_PUNCH, MOVE_FLAMETHROWER, MOVE_FOCUS_PUNCH, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH, + MOVE_LIGHT_SCREEN, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, MOVE_METRONOME, MOVE_MUD_SLAP, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, MOVE_ROCK_SLIDE, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, MOVE_SEISMIC_TOSS, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, + MOVE_THIEF, MOVE_THUNDER_PUNCH, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sMachokeTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULK_UP, + MOVE_COUNTER, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DYNAMIC_PUNCH, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, + MOVE_FIRE_PUNCH, MOVE_FLAMETHROWER, MOVE_FOCUS_PUNCH, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH, + MOVE_LIGHT_SCREEN, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, MOVE_METRONOME, MOVE_MUD_SLAP, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, MOVE_ROCK_SLIDE, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, MOVE_SEISMIC_TOSS, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, + MOVE_THIEF, MOVE_THUNDER_PUNCH, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sMachampTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULK_UP, + MOVE_COUNTER, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DYNAMIC_PUNCH, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, + MOVE_FIRE_PUNCH, MOVE_FLAMETHROWER, MOVE_FOCUS_PUNCH, MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH, + MOVE_LIGHT_SCREEN, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, MOVE_METRONOME, MOVE_MUD_SLAP, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, MOVE_ROCK_SLIDE, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, MOVE_SEISMIC_TOSS, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, + MOVE_THIEF, MOVE_THUNDER_PUNCH, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_MACHOP @@ -3410,59 +3410,62 @@ static const u16 sBellsproutTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULLET_SEED, MOVE_CUT, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_GIGA_DRAIN, MOVE_PROTECT, MOVE_REFLECT, MOVE_REST, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWORDS_DANCE, + MOVE_THIEF, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sWeepinbellTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BULLET_SEED, MOVE_CUT, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_GIGA_DRAIN, MOVE_PROTECT, MOVE_REFLECT, MOVE_REST, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_THIEF, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sVictreebelTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BULLET_SEED, MOVE_CUT, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_GIGA_DRAIN, @@ -3470,19 +3473,16 @@ static const u16 sVictreebelTeachableLearnset[] = { MOVE_PROTECT, MOVE_REFLECT, MOVE_REST, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_THIEF, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_BELLSPROUT @@ -3493,30 +3493,30 @@ static const u16 sTentacoolTeachableLearnset[] = { MOVE_BLIZZARD, MOVE_CUT, MOVE_DIVE, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_GIGA_DRAIN, MOVE_HAIL, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, MOVE_SAFEGUARD, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_SURF, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, MOVE_THIEF, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, - MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; @@ -3525,31 +3525,31 @@ static const u16 sTentacruelTeachableLearnset[] = { MOVE_BLIZZARD, MOVE_CUT, MOVE_DIVE, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_GIGA_DRAIN, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, MOVE_SAFEGUARD, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_SURF, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, MOVE_THIEF, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, - MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_TENTACOOL @@ -3557,244 +3557,244 @@ static const u16 sTentacruelTeachableLearnset[] = { #if P_FAMILY_GEODUDE static const u16 sGeodudeTeachableLearnset[] = { MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FOCUS_PUNCH, - MOVE_PROTECT, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, MOVE_BODY_SLAM, + MOVE_BRICK_BREAK, MOVE_COUNTER, MOVE_DEFENSE_CURL, + MOVE_DIG, MOVE_DOUBLE_EDGE, + MOVE_DOUBLE_TEAM, MOVE_DYNAMIC_PUNCH, + MOVE_EARTHQUAKE, MOVE_ENDURE, MOVE_EXPLOSION, + MOVE_FACADE, + MOVE_FIRE_BLAST, MOVE_FIRE_PUNCH, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, MOVE_MEGA_PUNCH, MOVE_METRONOME, MOVE_MUD_SLAP, + MOVE_PROTECT, + MOVE_REST, MOVE_ROCK_SLIDE, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, MOVE_ROLLOUT, + MOVE_SANDSTORM, MOVE_SEISMIC_TOSS, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_THUNDER_PUNCH, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sGravelerTeachableLearnset[] = { MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FOCUS_PUNCH, - MOVE_PROTECT, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, MOVE_BODY_SLAM, + MOVE_BRICK_BREAK, MOVE_COUNTER, MOVE_DEFENSE_CURL, + MOVE_DIG, MOVE_DOUBLE_EDGE, + MOVE_DOUBLE_TEAM, MOVE_DYNAMIC_PUNCH, + MOVE_EARTHQUAKE, MOVE_ENDURE, MOVE_EXPLOSION, + MOVE_FACADE, + MOVE_FIRE_BLAST, MOVE_FIRE_PUNCH, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, MOVE_MEGA_PUNCH, MOVE_METRONOME, MOVE_MUD_SLAP, + MOVE_PROTECT, + MOVE_REST, MOVE_ROCK_SLIDE, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, MOVE_ROLLOUT, + MOVE_SANDSTORM, MOVE_SEISMIC_TOSS, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_THUNDER_PUNCH, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sGolemTeachableLearnset[] = { MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FOCUS_PUNCH, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_REST, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, MOVE_BODY_SLAM, + MOVE_BRICK_BREAK, MOVE_COUNTER, MOVE_DEFENSE_CURL, + MOVE_DIG, MOVE_DOUBLE_EDGE, + MOVE_DOUBLE_TEAM, MOVE_DYNAMIC_PUNCH, + MOVE_EARTHQUAKE, MOVE_ENDURE, MOVE_EXPLOSION, + MOVE_FACADE, + MOVE_FIRE_BLAST, MOVE_FIRE_PUNCH, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, MOVE_FURY_CUTTER, + MOVE_HYPER_BEAM, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, MOVE_METRONOME, MOVE_MUD_SLAP, + MOVE_PROTECT, + MOVE_REST, + MOVE_ROAR, MOVE_ROCK_SLIDE, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, MOVE_ROLLOUT, + MOVE_SANDSTORM, MOVE_SEISMIC_TOSS, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_THUNDER_PUNCH, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #if P_ALOLAN_FORMS static const u16 sGeodudeAlolaTeachableLearnset[] = { MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FOCUS_PUNCH, - MOVE_PROTECT, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SUNNY_DAY, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, MOVE_BODY_SLAM, + MOVE_BRICK_BREAK, MOVE_COUNTER, MOVE_DEFENSE_CURL, + MOVE_DIG, MOVE_DOUBLE_EDGE, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, MOVE_ENDURE, MOVE_EXPLOSION, + MOVE_FACADE, + MOVE_FIRE_BLAST, MOVE_FIRE_PUNCH, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, MOVE_MUD_SLAP, + MOVE_PROTECT, + MOVE_REST, MOVE_ROCK_SLIDE, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, MOVE_ROLLOUT, + MOVE_SANDSTORM, MOVE_SEISMIC_TOSS, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SUNNY_DAY, MOVE_SWAGGER, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sGravelerAlolaTeachableLearnset[] = { MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FOCUS_PUNCH, - MOVE_PROTECT, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SHOCK_WAVE, - MOVE_SUNNY_DAY, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, MOVE_BODY_SLAM, + MOVE_BRICK_BREAK, MOVE_COUNTER, MOVE_DEFENSE_CURL, + MOVE_DIG, MOVE_DOUBLE_EDGE, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, MOVE_ENDURE, MOVE_EXPLOSION, + MOVE_FACADE, + MOVE_FIRE_BLAST, MOVE_FIRE_PUNCH, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, MOVE_METRONOME, MOVE_MUD_SLAP, + MOVE_PROTECT, + MOVE_REST, MOVE_ROCK_SLIDE, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, MOVE_ROLLOUT, + MOVE_SANDSTORM, MOVE_SEISMIC_TOSS, + MOVE_SHOCK_WAVE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SUNNY_DAY, MOVE_SWAGGER, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sGolemAlolaTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, + MOVE_EXPLOSION, MOVE_FACADE, MOVE_FIRE_BLAST, + MOVE_FIRE_PUNCH, MOVE_FLAMETHROWER, MOVE_FOCUS_PUNCH, MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_REST, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SHOCK_WAVE, - MOVE_SUNNY_DAY, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_EXPLOSION, - MOVE_FIRE_PUNCH, MOVE_MEGA_PUNCH, MOVE_METRONOME, MOVE_MUD_SLAP, + MOVE_PROTECT, + MOVE_REST, + MOVE_ROAR, MOVE_ROCK_SLIDE, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, MOVE_ROLLOUT, + MOVE_SANDSTORM, MOVE_SEISMIC_TOSS, + MOVE_SHOCK_WAVE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SUNNY_DAY, MOVE_SWAGGER, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_ALOLAN_FORMS @@ -3803,7 +3803,10 @@ static const u16 sGolemAlolaTeachableLearnset[] = { #if P_FAMILY_PONYTA static const u16 sPonytaTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, @@ -3812,23 +3815,23 @@ static const u16 sPonytaTeachableLearnset[] = { MOVE_PROTECT, MOVE_REFLECT, MOVE_REST, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_STRENGTH, MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sRapidashTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, @@ -3838,25 +3841,25 @@ static const u16 sRapidashTeachableLearnset[] = { MOVE_PROTECT, MOVE_REFLECT, MOVE_REST, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_STRENGTH, MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #if P_GALARIAN_FORMS static const u16 sPonytaGalarTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_CALM_MIND, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, @@ -3864,9 +3867,6 @@ static const u16 sPonytaGalarTeachableLearnset[] = { MOVE_PROTECT, MOVE_PSYCHIC, MOVE_REST, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, MOVE_SLEEP_TALK, MOVE_SNORE, MOVE_SWIFT, @@ -3875,7 +3875,10 @@ static const u16 sPonytaGalarTeachableLearnset[] = { static const u16 sRapidashGalarTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_CALM_MIND, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, @@ -3884,9 +3887,6 @@ static const u16 sRapidashGalarTeachableLearnset[] = { MOVE_PROTECT, MOVE_PSYCHIC, MOVE_REST, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, MOVE_SLEEP_TALK, MOVE_SNORE, MOVE_SWIFT, @@ -3900,45 +3900,45 @@ static const u16 sRapidashGalarTeachableLearnset[] = { static const u16 sSlowpokeTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_CALM_MIND, MOVE_DIG, MOVE_DIVE, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, MOVE_FLASH, MOVE_HAIL, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_IRON_TAIL, MOVE_LIGHT_SCREEN, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, MOVE_SAFEGUARD, MOVE_SHADOW_BALL, MOVE_SKILL_SWAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_STRENGTH, MOVE_SUNNY_DAY, MOVE_SURF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWIFT, MOVE_THUNDER_WAVE, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; @@ -3946,57 +3946,57 @@ static const u16 sSlowbroTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_CALM_MIND, + MOVE_COUNTER, MOVE_DIG, MOVE_DIVE, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_DYNAMIC_PUNCH, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, MOVE_FLASH, MOVE_FOCUS_PUNCH, + MOVE_FURY_CUTTER, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, MOVE_IRON_TAIL, MOVE_LIGHT_SCREEN, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_METRONOME, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, MOVE_ROCK_SMASH, MOVE_SAFEGUARD, + MOVE_SEISMIC_TOSS, MOVE_SHADOW_BALL, MOVE_SKILL_SWAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_STRENGTH, MOVE_SUNNY_DAY, MOVE_SURF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_ICE_PUNCH, - MOVE_ICY_WIND, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_METRONOME, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_SEISMIC_TOSS, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWIFT, MOVE_THUNDER_WAVE, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; @@ -4004,61 +4004,61 @@ static const u16 sSlowbroTeachableLearnset[] = { static const u16 sSlowkingTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_CALM_MIND, + MOVE_COUNTER, MOVE_DIG, MOVE_DIVE, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_DYNAMIC_PUNCH, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, + MOVE_FIRE_PUNCH, MOVE_FLAMETHROWER, MOVE_FLASH, MOVE_FOCUS_PUNCH, + MOVE_FURY_CUTTER, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SHADOW_BALL, - MOVE_SKILL_SWAP, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_FURY_CUTTER, MOVE_ICE_PUNCH, MOVE_ICY_WIND, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, MOVE_METRONOME, MOVE_MUD_SLAP, + MOVE_PROTECT, + MOVE_PSYCHIC, MOVE_PSYCH_UP, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, MOVE_ROCK_SLIDE, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, MOVE_SEISMIC_TOSS, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, MOVE_SWAGGER, MOVE_SWIFT, MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; #endif //P_GEN_2_CROSS_EVOS @@ -4067,82 +4067,82 @@ static const u16 sSlowkingTeachableLearnset[] = { static const u16 sSlowpokeGalarTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_CALM_MIND, MOVE_DIG, MOVE_DIVE, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, MOVE_HAIL, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_IRON_TAIL, MOVE_LIGHT_SCREEN, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, MOVE_SAFEGUARD, MOVE_SHADOW_BALL, MOVE_SKILL_SWAP, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_PSYCH_UP, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SUNNY_DAY, + MOVE_SURF, MOVE_SWIFT, MOVE_THUNDER_WAVE, + MOVE_WATERFALL, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; static const u16 sSlowbroGalarTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_CALM_MIND, MOVE_DIG, MOVE_DIVE, + MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, MOVE_IRON_TAIL, MOVE_LIGHT_SCREEN, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_METRONOME, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, MOVE_SAFEGUARD, MOVE_SANDSTORM, MOVE_SHADOW_BALL, MOVE_SKILL_SWAP, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_SUNNY_DAY, MOVE_SURF, + MOVE_SWIFT, + MOVE_THUNDER_WAVE, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ICE_PUNCH, - MOVE_ICY_WIND, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_METRONOME, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWIFT, - MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; @@ -4150,48 +4150,48 @@ static const u16 sSlowbroGalarTeachableLearnset[] = { static const u16 sSlowkingGalarTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_CALM_MIND, MOVE_DIG, MOVE_DIVE, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, + MOVE_FIRE_PUNCH, MOVE_FLAMETHROWER, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, MOVE_IRON_TAIL, MOVE_LIGHT_SCREEN, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_METRONOME, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, MOVE_SAFEGUARD, MOVE_SHADOW_BALL, MOVE_SKILL_SWAP, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_SUNNY_DAY, MOVE_SURF, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_TAUNT, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_ICE_PUNCH, - MOVE_ICY_WIND, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_METRONOME, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, - MOVE_THUNDER_PUNCH, - MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; #endif //P_GEN_2_CROSS_EVOS @@ -4200,90 +4200,90 @@ static const u16 sSlowkingGalarTeachableLearnset[] = { #if P_FAMILY_MAGNEMITE static const u16 sMagnemiteTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, + MOVE_EXPLOSION, MOVE_FACADE, MOVE_FLASH, MOVE_LIGHT_SCREEN, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, + MOVE_ROLLOUT, MOVE_SANDSTORM, MOVE_SHOCK_WAVE, - MOVE_SUNNY_DAY, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_EXPLOSION, - MOVE_PSYCH_UP, - MOVE_ROLLOUT, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sMagnetonTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, + MOVE_EXPLOSION, MOVE_FACADE, MOVE_FLASH, MOVE_HYPER_BEAM, MOVE_LIGHT_SCREEN, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, + MOVE_ROLLOUT, MOVE_SANDSTORM, MOVE_SHOCK_WAVE, - MOVE_SUNNY_DAY, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_EXPLOSION, - MOVE_PSYCH_UP, - MOVE_ROLLOUT, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #if P_GEN_4_CROSS_EVOS static const u16 sMagnezoneTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, + MOVE_EXPLOSION, MOVE_FACADE, MOVE_FLASH, MOVE_HYPER_BEAM, MOVE_LIGHT_SCREEN, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, + MOVE_ROLLOUT, MOVE_SANDSTORM, MOVE_SHOCK_WAVE, - MOVE_SUNNY_DAY, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_EXPLOSION, - MOVE_PSYCH_UP, - MOVE_ROLLOUT, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_GEN_4_CROSS_EVOS @@ -4293,69 +4293,69 @@ static const u16 sMagnezoneTeachableLearnset[] = { static const u16 sFarfetchdTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_CUT, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLY, + MOVE_FURY_CUTTER, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_REFLECT, MOVE_REST, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_THIEF, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #if P_GALARIAN_FORMS static const u16 sFarfetchdGalarTeachableLearnset[] = { MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_FACADE, - MOVE_PROTECT, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, MOVE_BODY_SLAM, + MOVE_BRICK_BREAK, MOVE_COUNTER, MOVE_DOUBLE_EDGE, MOVE_ENDURE, + MOVE_FACADE, MOVE_FURY_CUTTER, + MOVE_PROTECT, + MOVE_REST, + MOVE_ROCK_SMASH, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; static const u16 sSirfetchdTeachableLearnset[] = { MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_FACADE, - MOVE_PROTECT, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, MOVE_BODY_SLAM, + MOVE_BRICK_BREAK, MOVE_COUNTER, MOVE_DOUBLE_EDGE, MOVE_ENDURE, + MOVE_FACADE, MOVE_FURY_CUTTER, + MOVE_PROTECT, + MOVE_REST, + MOVE_ROCK_SMASH, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; @@ -4366,55 +4366,55 @@ static const u16 sSirfetchdTeachableLearnset[] = { static const u16 sDoduoTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLY, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MUD_SLAP, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_THIEF, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sDodrioTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLY, MOVE_HYPER_BEAM, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_STEEL_WING, MOVE_SUNNY_DAY, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, MOVE_TAUNT, MOVE_THIEF, MOVE_TORMENT, MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, - MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_DODUO @@ -4423,59 +4423,59 @@ static const u16 sDodrioTeachableLearnset[] = { static const u16 sSeelTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_DIVE, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_HAIL, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_IRON_TAIL, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_SAFEGUARD, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_STRENGTH, MOVE_SURF, + MOVE_SWAGGER, MOVE_THIEF, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, MOVE_UNAVAILABLE, }; static const u16 sDewgongTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_DIVE, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_IRON_TAIL, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_SAFEGUARD, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_STRENGTH, MOVE_SURF, + MOVE_SWAGGER, MOVE_THIEF, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_SEEL @@ -4483,170 +4483,170 @@ static const u16 sDewgongTeachableLearnset[] = { #if P_FAMILY_GRIMER static const u16 sGrimerTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_DIG, MOVE_DOUBLE_TEAM, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_EXPLOSION, MOVE_FACADE, MOVE_FIRE_BLAST, + MOVE_FIRE_PUNCH, MOVE_FLAMETHROWER, MOVE_GIGA_DRAIN, + MOVE_ICE_PUNCH, + MOVE_METRONOME, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_TOMB, MOVE_SANDSTORM, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_STRENGTH, MOVE_SUNNY_DAY, + MOVE_SWAGGER, MOVE_TAUNT, MOVE_THIEF, MOVE_THUNDER, MOVE_THUNDERBOLT, + MOVE_THUNDER_PUNCH, MOVE_TORMENT, MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_EXPLOSION, - MOVE_FIRE_PUNCH, - MOVE_ICE_PUNCH, - MOVE_METRONOME, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_THUNDER_PUNCH, MOVE_UNAVAILABLE, }; static const u16 sMukTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_DIG, MOVE_DOUBLE_TEAM, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_EXPLOSION, MOVE_FACADE, MOVE_FIRE_BLAST, + MOVE_FIRE_PUNCH, MOVE_FLAMETHROWER, MOVE_FOCUS_PUNCH, MOVE_GIGA_DRAIN, MOVE_HYPER_BEAM, + MOVE_ICE_PUNCH, + MOVE_METRONOME, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SANDSTORM, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_STRENGTH, MOVE_SUNNY_DAY, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_TAUNT, MOVE_THIEF, MOVE_THUNDER, MOVE_THUNDERBOLT, + MOVE_THUNDER_PUNCH, MOVE_TORMENT, MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_EXPLOSION, - MOVE_FIRE_PUNCH, - MOVE_ICE_PUNCH, - MOVE_METRONOME, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, - MOVE_THUNDER_PUNCH, MOVE_UNAVAILABLE, }; #if P_ALOLAN_FORMS static const u16 sGrimerAlolaTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_DIG, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, + MOVE_EXPLOSION, MOVE_FACADE, MOVE_FIRE_BLAST, + MOVE_FIRE_PUNCH, MOVE_FLAMETHROWER, MOVE_GIGA_DRAIN, MOVE_HYPER_BEAM, + MOVE_ICE_PUNCH, + MOVE_METRONOME, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_TOMB, MOVE_SANDSTORM, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_SUNNY_DAY, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_TAUNT, MOVE_THIEF, MOVE_THUNDER, MOVE_THUNDERBOLT, + MOVE_THUNDER_PUNCH, MOVE_TORMENT, MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_EXPLOSION, - MOVE_FIRE_PUNCH, - MOVE_ICE_PUNCH, - MOVE_METRONOME, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, - MOVE_THUNDER_PUNCH, MOVE_UNAVAILABLE, }; static const u16 sMukAlolaTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_DIG, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, + MOVE_EXPLOSION, MOVE_FACADE, MOVE_FIRE_BLAST, + MOVE_FIRE_PUNCH, MOVE_FLAMETHROWER, MOVE_FOCUS_PUNCH, MOVE_GIGA_DRAIN, MOVE_HYPER_BEAM, + MOVE_ICE_PUNCH, + MOVE_METRONOME, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_TOMB, MOVE_SANDSTORM, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_SUNNY_DAY, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_TAUNT, MOVE_THIEF, MOVE_THUNDER, MOVE_THUNDERBOLT, + MOVE_THUNDER_PUNCH, MOVE_TORMENT, MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_EXPLOSION, - MOVE_FIRE_PUNCH, - MOVE_ICE_PUNCH, - MOVE_METRONOME, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, - MOVE_THUNDER_PUNCH, MOVE_UNAVAILABLE, }; #endif //P_ALOLAN_FORMS @@ -4657,57 +4657,57 @@ static const u16 sShellderTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DIVE, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, + MOVE_EXPLOSION, MOVE_FACADE, MOVE_HAIL, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SURF, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_EXPLOSION, - MOVE_ICY_WIND, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_UNAVAILABLE, }; static const u16 sCloysterTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_DIVE, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, + MOVE_EXPLOSION, MOVE_FACADE, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_LIGHT_SCREEN, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SURF, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_TORMENT, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_EXPLOSION, - MOVE_ICY_WIND, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_SHELLDER @@ -4716,117 +4716,117 @@ static const u16 sCloysterTeachableLearnset[] = { static const u16 sGastlyTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_EXPLOSION, MOVE_FACADE, + MOVE_FIRE_PUNCH, MOVE_GIGA_DRAIN, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, MOVE_SHADOW_BALL, MOVE_SKILL_SWAP, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, MOVE_SNATCH, + MOVE_SNORE, MOVE_SUNNY_DAY, + MOVE_SWAGGER, MOVE_TAUNT, MOVE_THIEF, MOVE_THUNDER, MOVE_THUNDERBOLT, + MOVE_THUNDER_PUNCH, MOVE_TORMENT, MOVE_TOXIC, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_EXPLOSION, - MOVE_FIRE_PUNCH, - MOVE_ICE_PUNCH, - MOVE_ICY_WIND, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_THUNDER_PUNCH, MOVE_UNAVAILABLE, }; static const u16 sHaunterTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_EXPLOSION, MOVE_FACADE, + MOVE_FIRE_PUNCH, MOVE_GIGA_DRAIN, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_METRONOME, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, MOVE_SHADOW_BALL, MOVE_SKILL_SWAP, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, MOVE_SNATCH, + MOVE_SNORE, MOVE_SUNNY_DAY, + MOVE_SWAGGER, MOVE_TAUNT, MOVE_THIEF, MOVE_THUNDER, MOVE_THUNDERBOLT, + MOVE_THUNDER_PUNCH, MOVE_TORMENT, MOVE_TOXIC, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_EXPLOSION, - MOVE_FIRE_PUNCH, - MOVE_ICE_PUNCH, - MOVE_ICY_WIND, - MOVE_METRONOME, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_THUNDER_PUNCH, MOVE_UNAVAILABLE, }; static const u16 sGengarTeachableLearnset[] = { MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_GIGA_DRAIN, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_SHADOW_BALL, - MOVE_SKILL_SWAP, - MOVE_SLUDGE_BOMB, - MOVE_SNATCH, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, MOVE_BODY_SLAM, + MOVE_BRICK_BREAK, MOVE_COUNTER, MOVE_DOUBLE_EDGE, + MOVE_DOUBLE_TEAM, MOVE_DREAM_EATER, MOVE_DYNAMIC_PUNCH, MOVE_ENDURE, MOVE_EXPLOSION, + MOVE_FACADE, MOVE_FIRE_PUNCH, + MOVE_FOCUS_PUNCH, + MOVE_GIGA_DRAIN, + MOVE_HYPER_BEAM, MOVE_ICE_PUNCH, MOVE_ICY_WIND, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, MOVE_METRONOME, + MOVE_PROTECT, + MOVE_PSYCHIC, MOVE_PSYCH_UP, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_ROCK_SMASH, MOVE_SEISMIC_TOSS, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, MOVE_SLEEP_TALK, + MOVE_SLUDGE_BOMB, + MOVE_SNATCH, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, + MOVE_TORMENT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_GASTLY @@ -4834,70 +4834,70 @@ static const u16 sGengarTeachableLearnset[] = { #if P_FAMILY_ONIX static const u16 sOnixTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, + MOVE_DEFENSE_CURL, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, + MOVE_EXPLOSION, MOVE_FACADE, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, + MOVE_ROLLOUT, MOVE_SANDSTORM, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_STRENGTH, MOVE_SUNNY_DAY, + MOVE_SWAGGER, MOVE_TAUNT, MOVE_TORMENT, MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_EXPLOSION, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_ROCK_SLIDE, - MOVE_ROLLOUT, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, MOVE_UNAVAILABLE, }; #if P_GEN_2_CROSS_EVOS static const u16 sSteelixTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_CUT, + MOVE_DEFENSE_CURL, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, + MOVE_EXPLOSION, MOVE_FACADE, MOVE_HYPER_BEAM, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, + MOVE_ROLLOUT, MOVE_SANDSTORM, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_STRENGTH, MOVE_SUNNY_DAY, + MOVE_SWAGGER, MOVE_TAUNT, MOVE_TORMENT, MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_EXPLOSION, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_ROCK_SLIDE, - MOVE_ROLLOUT, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, MOVE_UNAVAILABLE, }; #endif //P_GEN_2_CROSS_EVOS @@ -4906,92 +4906,92 @@ static const u16 sSteelixTeachableLearnset[] = { #if P_FAMILY_DROWZEE static const u16 sDrowzeeTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_CALM_MIND, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FIRE_PUNCH, MOVE_FLASH, MOVE_FOCUS_PUNCH, + MOVE_ICE_PUNCH, MOVE_LIGHT_SCREEN, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_METRONOME, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, MOVE_SAFEGUARD, + MOVE_SEISMIC_TOSS, MOVE_SHADOW_BALL, MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_ICE_PUNCH, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_METRONOME, - MOVE_PSYCH_UP, - MOVE_SEISMIC_TOSS, MOVE_SLEEP_TALK, + MOVE_SNATCH, MOVE_SNORE, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_TAUNT, + MOVE_THIEF, MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, + MOVE_TORMENT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sHypnoTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_CALM_MIND, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FIRE_PUNCH, MOVE_FLASH, MOVE_FOCUS_PUNCH, MOVE_HYPER_BEAM, + MOVE_ICE_PUNCH, MOVE_LIGHT_SCREEN, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_METRONOME, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, MOVE_SAFEGUARD, + MOVE_SEISMIC_TOSS, MOVE_SHADOW_BALL, MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_ICE_PUNCH, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_METRONOME, - MOVE_PSYCH_UP, - MOVE_SEISMIC_TOSS, MOVE_SLEEP_TALK, + MOVE_SNATCH, MOVE_SNORE, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_TAUNT, + MOVE_THIEF, MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, + MOVE_TORMENT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_DROWZEE @@ -5000,78 +5000,81 @@ static const u16 sHypnoTeachableLearnset[] = { static const u16 sKrabbyTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_CUT, MOVE_DIG, MOVE_DIVE, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FURY_CUTTER, MOVE_HAIL, MOVE_ICE_BEAM, + MOVE_ICY_WIND, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_STRENGTH, MOVE_SURF, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, MOVE_THIEF, MOVE_TOXIC, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; static const u16 sKinglerTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_CUT, MOVE_DIG, MOVE_DIVE, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FURY_CUTTER, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_STRENGTH, MOVE_SURF, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, MOVE_THIEF, MOVE_TOXIC, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_KRABBY #if P_FAMILY_VOLTORB static const u16 sVoltorbTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, + MOVE_EXPLOSION, MOVE_FACADE, MOVE_FLASH, MOVE_LIGHT_SCREEN, @@ -5079,27 +5082,27 @@ static const u16 sVoltorbTeachableLearnset[] = { MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, - MOVE_SHOCK_WAVE, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_EXPLOSION, MOVE_ROLLOUT, + MOVE_SHOCK_WAVE, MOVE_SLEEP_TALK, MOVE_SNORE, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, + MOVE_TORMENT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sElectrodeTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, + MOVE_EXPLOSION, MOVE_FACADE, MOVE_FLASH, MOVE_HYPER_BEAM, @@ -5108,51 +5111,51 @@ static const u16 sElectrodeTeachableLearnset[] = { MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, - MOVE_SHOCK_WAVE, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_EXPLOSION, MOVE_ROLLOUT, + MOVE_SHOCK_WAVE, MOVE_SLEEP_TALK, MOVE_SNORE, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, + MOVE_TORMENT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #if P_HISUIAN_FORMS static const u16 sVoltorbHisuiTeachableLearnset[] = { MOVE_BULLET_SEED, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_EXPLOSION, MOVE_FACADE, MOVE_GIGA_DRAIN, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, MOVE_SOLAR_BEAM, + MOVE_SWIFT, MOVE_TAUNT, MOVE_THIEF, MOVE_THUNDER, MOVE_THUNDERBOLT, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_EXPLOSION, - MOVE_ROLLOUT, - MOVE_SLEEP_TALK, - MOVE_SWIFT, MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; static const u16 sElectrodeHisuiTeachableLearnset[] = { MOVE_BULLET_SEED, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_EXPLOSION, MOVE_FACADE, MOVE_GIGA_DRAIN, MOVE_HYPER_BEAM, @@ -5160,17 +5163,14 @@ static const u16 sElectrodeHisuiTeachableLearnset[] = { MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, MOVE_SOLAR_BEAM, + MOVE_SWIFT, MOVE_TAUNT, MOVE_THIEF, MOVE_THUNDER, MOVE_THUNDERBOLT, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_EXPLOSION, - MOVE_ROLLOUT, - MOVE_SLEEP_TALK, - MOVE_SWIFT, MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; @@ -5181,41 +5181,46 @@ static const u16 sElectrodeHisuiTeachableLearnset[] = { static const u16 sExeggcuteTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULLET_SEED, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_EXPLOSION, MOVE_FACADE, MOVE_FLASH, MOVE_GIGA_DRAIN, MOVE_LIGHT_SCREEN, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_REFLECT, MOVE_REST, + MOVE_ROLLOUT, MOVE_SKILL_SWAP, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_STRENGTH, MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_EXPLOSION, - MOVE_PSYCH_UP, - MOVE_ROLLOUT, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWORDS_DANCE, + MOVE_THIEF, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sExeggutorTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BULLET_SEED, MOVE_CALM_MIND, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, MOVE_EARTHQUAKE, + MOVE_ENDURE, + MOVE_EXPLOSION, MOVE_FACADE, MOVE_FLASH, MOVE_GIGA_DRAIN, @@ -5223,37 +5228,37 @@ static const u16 sExeggutorTeachableLearnset[] = { MOVE_LIGHT_SCREEN, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_REFLECT, MOVE_REST, + MOVE_ROLLOUT, MOVE_SKILL_SWAP, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_STRENGTH, MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_EXPLOSION, - MOVE_PSYCH_UP, - MOVE_ROLLOUT, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWORDS_DANCE, + MOVE_THIEF, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #if P_ALOLAN_FORMS static const u16 sExeggutorAlolaTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULLET_SEED, MOVE_CALM_MIND, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, MOVE_EARTHQUAKE, + MOVE_ENDURE, + MOVE_EXPLOSION, MOVE_FACADE, MOVE_FLAMETHROWER, MOVE_GIGA_DRAIN, @@ -5262,24 +5267,19 @@ static const u16 sExeggutorAlolaTeachableLearnset[] = { MOVE_LIGHT_SCREEN, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_REFLECT, MOVE_REST, MOVE_SKILL_SWAP, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_EXPLOSION, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWORDS_DANCE, + MOVE_THIEF, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_ALOLAN_FORMS @@ -5290,44 +5290,44 @@ static const u16 sCuboneTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, + MOVE_COUNTER, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DYNAMIC_PUNCH, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, + MOVE_FIRE_PUNCH, MOVE_FLAMETHROWER, MOVE_FOCUS_PUNCH, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, MOVE_FURY_CUTTER, + MOVE_ICE_BEAM, MOVE_ICY_WIND, + MOVE_IRON_TAIL, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, MOVE_MUD_SLAP, + MOVE_PROTECT, + MOVE_REST, MOVE_ROCK_SLIDE, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, MOVE_SEISMIC_TOSS, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_THIEF, MOVE_THUNDER_PUNCH, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; @@ -5335,45 +5335,45 @@ static const u16 sMarowakTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, + MOVE_COUNTER, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DYNAMIC_PUNCH, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, + MOVE_FIRE_PUNCH, MOVE_FLAMETHROWER, MOVE_FOCUS_PUNCH, + MOVE_FURY_CUTTER, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_FURY_CUTTER, MOVE_ICY_WIND, + MOVE_IRON_TAIL, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, MOVE_MUD_SLAP, + MOVE_PROTECT, + MOVE_REST, MOVE_ROCK_SLIDE, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, MOVE_SEISMIC_TOSS, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_THIEF, MOVE_THUNDER_PUNCH, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; @@ -5382,45 +5382,45 @@ static const u16 sMarowakAlolaTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, + MOVE_FIRE_PUNCH, MOVE_FLAMETHROWER, MOVE_FOCUS_PUNCH, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SHADOW_BALL, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, MOVE_ICY_WIND, + MOVE_IRON_TAIL, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, MOVE_MUD_SLAP, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, MOVE_ROCK_SLIDE, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, MOVE_SEISMIC_TOSS, + MOVE_SHADOW_BALL, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_PUNCH, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_ALOLAN_FORMS @@ -5430,110 +5430,110 @@ static const u16 sMarowakAlolaTeachableLearnset[] = { #if P_GEN_2_CROSS_EVOS static const u16 sTyrogueTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULK_UP, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_BODY_SLAM, MOVE_COUNTER, MOVE_DOUBLE_EDGE, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, MOVE_ENDURE, + MOVE_FACADE, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, MOVE_MUD_SLAP, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, MOVE_ROCK_SLIDE, + MOVE_ROCK_SMASH, MOVE_SEISMIC_TOSS, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_THIEF, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_GEN_2_CROSS_EVOS static const u16 sHitmonleeTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULK_UP, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_BODY_SLAM, MOVE_COUNTER, MOVE_DOUBLE_EDGE, + MOVE_DOUBLE_TEAM, MOVE_DYNAMIC_PUNCH, + MOVE_EARTHQUAKE, MOVE_ENDURE, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, MOVE_METRONOME, MOVE_MUD_SLAP, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, MOVE_ROCK_SLIDE, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, MOVE_SEISMIC_TOSS, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sHitmonchanTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULK_UP, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_BODY_SLAM, MOVE_COUNTER, MOVE_DOUBLE_EDGE, + MOVE_DOUBLE_TEAM, MOVE_DYNAMIC_PUNCH, + MOVE_EARTHQUAKE, MOVE_ENDURE, + MOVE_FACADE, MOVE_FIRE_PUNCH, + MOVE_FOCUS_PUNCH, MOVE_ICE_PUNCH, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, MOVE_METRONOME, MOVE_MUD_SLAP, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, MOVE_ROCK_SLIDE, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, MOVE_SEISMIC_TOSS, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_TAUNT, + MOVE_THIEF, MOVE_THUNDER_PUNCH, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; @@ -5541,35 +5541,35 @@ static const u16 sHitmonchanTeachableLearnset[] = { static const u16 sHitmontopTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULK_UP, + MOVE_COUNTER, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_SANDSTORM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, MOVE_ENDURE, + MOVE_FACADE, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, MOVE_MUD_SLAP, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, MOVE_ROCK_SLIDE, + MOVE_ROCK_SMASH, MOVE_ROLLOUT, + MOVE_SANDSTORM, MOVE_SEISMIC_TOSS, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_THIEF, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_GEN_2_CROSS_EVOS @@ -5579,57 +5579,57 @@ static const u16 sHitmontopTeachableLearnset[] = { static const u16 sLickitungTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, + MOVE_COUNTER, MOVE_CUT, + MOVE_DEFENSE_CURL, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_DYNAMIC_PUNCH, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, + MOVE_FIRE_PUNCH, MOVE_FLAMETHROWER, MOVE_FOCUS_PUNCH, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, MOVE_IRON_TAIL, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MUD_SLAP, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, + MOVE_ROLLOUT, MOVE_SANDSTORM, + MOVE_SEISMIC_TOSS, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_STRENGTH, MOVE_SUNNY_DAY, MOVE_SURF, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, MOVE_THIEF, MOVE_THUNDER, MOVE_THUNDERBOLT, + MOVE_THUNDER_PUNCH, MOVE_TOXIC, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_ICE_PUNCH, - MOVE_ICY_WIND, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_ROCK_SLIDE, - MOVE_ROLLOUT, - MOVE_SEISMIC_TOSS, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWORDS_DANCE, - MOVE_THUNDER_PUNCH, MOVE_UNAVAILABLE, }; @@ -5637,55 +5637,55 @@ static const u16 sLickitungTeachableLearnset[] = { static const u16 sLickilickyTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_CUT, + MOVE_DEFENSE_CURL, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, MOVE_EARTHQUAKE, + MOVE_ENDURE, + MOVE_EXPLOSION, MOVE_FACADE, MOVE_FIRE_BLAST, + MOVE_FIRE_PUNCH, MOVE_FLAMETHROWER, MOVE_FOCUS_PUNCH, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, MOVE_IRON_TAIL, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MUD_SLAP, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, + MOVE_ROLLOUT, MOVE_SANDSTORM, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_STRENGTH, MOVE_SUNNY_DAY, MOVE_SURF, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, MOVE_THIEF, MOVE_THUNDER, MOVE_THUNDERBOLT, + MOVE_THUNDER_PUNCH, MOVE_TOXIC, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_EXPLOSION, - MOVE_FIRE_PUNCH, - MOVE_ICE_PUNCH, - MOVE_ICY_WIND, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_ROCK_SLIDE, - MOVE_ROLLOUT, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWORDS_DANCE, - MOVE_THUNDER_PUNCH, MOVE_UNAVAILABLE, }; #endif //P_GEN_4_CROSS_EVOS @@ -5694,7 +5694,10 @@ static const u16 sLickilickyTeachableLearnset[] = { #if P_FAMILY_KOFFING static const u16 sKoffingTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, + MOVE_EXPLOSION, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, @@ -5702,29 +5705,29 @@ static const u16 sKoffingTeachableLearnset[] = { MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROLLOUT, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_SUNNY_DAY, + MOVE_SWAGGER, MOVE_TAUNT, MOVE_THIEF, MOVE_THUNDER, MOVE_THUNDERBOLT, MOVE_TORMENT, MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_EXPLOSION, - MOVE_ROLLOUT, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, MOVE_UNAVAILABLE, }; static const u16 sWeezingTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, + MOVE_EXPLOSION, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, @@ -5733,29 +5736,30 @@ static const u16 sWeezingTeachableLearnset[] = { MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROLLOUT, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_SUNNY_DAY, + MOVE_SWAGGER, MOVE_TAUNT, MOVE_THIEF, MOVE_THUNDER, MOVE_THUNDERBOLT, MOVE_TORMENT, MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_EXPLOSION, - MOVE_ROLLOUT, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, MOVE_UNAVAILABLE, }; #if P_GALARIAN_FORMS static const u16 sWeezingGalarTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_EXPLOSION, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, @@ -5765,19 +5769,15 @@ static const u16 sWeezingGalarTeachableLearnset[] = { MOVE_RAIN_DANCE, MOVE_REST, MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_SUNNY_DAY, MOVE_TAUNT, MOVE_THIEF, MOVE_THUNDER, MOVE_THUNDERBOLT, MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_EXPLOSION, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_UNAVAILABLE, }; #endif //P_GALARIAN_FORMS @@ -5787,93 +5787,93 @@ static const u16 sWeezingGalarTeachableLearnset[] = { static const u16 sRhyhornTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, + MOVE_COUNTER, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, + MOVE_ROLLOUT, MOVE_SANDSTORM, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_STRENGTH, MOVE_SUNNY_DAY, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, MOVE_THIEF, MOVE_THUNDER, MOVE_THUNDERBOLT, MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, - MOVE_ROLLOUT, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; static const u16 sRhydonTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, + MOVE_COUNTER, MOVE_CUT, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DYNAMIC_PUNCH, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, + MOVE_FIRE_PUNCH, MOVE_FLAMETHROWER, MOVE_FOCUS_PUNCH, + MOVE_FURY_CUTTER, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, MOVE_IRON_TAIL, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, + MOVE_ROLLOUT, MOVE_SANDSTORM, + MOVE_SEISMIC_TOSS, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_STRENGTH, MOVE_SUNNY_DAY, MOVE_SURF, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, MOVE_THIEF, MOVE_THUNDER, MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_FURY_CUTTER, - MOVE_ICE_PUNCH, - MOVE_ICY_WIND, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, - MOVE_ROLLOUT, - MOVE_SEISMIC_TOSS, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWORDS_DANCE, MOVE_THUNDER_PUNCH, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; @@ -5881,51 +5881,51 @@ static const u16 sRhydonTeachableLearnset[] = { static const u16 sRhyperiorTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, + MOVE_COUNTER, MOVE_CUT, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, + MOVE_FIRE_PUNCH, MOVE_FLAMETHROWER, MOVE_FOCUS_PUNCH, + MOVE_FURY_CUTTER, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, MOVE_IRON_TAIL, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, + MOVE_ROLLOUT, MOVE_SANDSTORM, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_STRENGTH, MOVE_SUNNY_DAY, MOVE_SURF, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, MOVE_THIEF, MOVE_THUNDER, MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_FURY_CUTTER, - MOVE_ICE_PUNCH, - MOVE_ICY_WIND, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, - MOVE_ROLLOUT, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWORDS_DANCE, MOVE_THUNDER_PUNCH, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_GEN_4_CROSS_EVOS @@ -5936,40 +5936,40 @@ static const u16 sRhyperiorTeachableLearnset[] = { static const u16 sHappinyTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, MOVE_FLASH, MOVE_HAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_SAFEGUARD, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_COUNTER, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_ENDURE, MOVE_ICY_WIND, + MOVE_LIGHT_SCREEN, MOVE_METRONOME, MOVE_MUD_SLAP, + MOVE_PROTECT, + MOVE_PSYCHIC, MOVE_PSYCH_UP, + MOVE_RAIN_DANCE, + MOVE_REST, MOVE_ROLLOUT, + MOVE_SAFEGUARD, MOVE_SEISMIC_TOSS, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, MOVE_SLEEP_TALK, MOVE_SNORE, MOVE_SOFT_BOILED, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_THUNDER_WAVE, + MOVE_TOXIC, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; #endif //P_GEN_4_CROSS_EVOS @@ -5977,66 +5977,66 @@ static const u16 sHappinyTeachableLearnset[] = { static const u16 sChanseyTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_CALM_MIND, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_DYNAMIC_PUNCH, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, + MOVE_FIRE_PUNCH, MOVE_FLAMETHROWER, MOVE_FLASH, MOVE_FOCUS_PUNCH, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH, MOVE_ICY_WIND, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, MOVE_METRONOME, MOVE_MUD_SLAP, + MOVE_PROTECT, + MOVE_PSYCHIC, MOVE_PSYCH_UP, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, MOVE_ROCK_SLIDE, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, MOVE_ROLLOUT, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, MOVE_SEISMIC_TOSS, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, MOVE_SLEEP_TALK, + MOVE_SNATCH, MOVE_SNORE, MOVE_SOFT_BOILED, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, + MOVE_TOXIC, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; @@ -6044,65 +6044,65 @@ static const u16 sChanseyTeachableLearnset[] = { static const u16 sBlisseyTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_CALM_MIND, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_DYNAMIC_PUNCH, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, + MOVE_FIRE_PUNCH, MOVE_FLAMETHROWER, MOVE_FLASH, MOVE_FOCUS_PUNCH, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH, MOVE_ICY_WIND, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, MOVE_METRONOME, MOVE_MUD_SLAP, + MOVE_PROTECT, + MOVE_PSYCHIC, MOVE_PSYCH_UP, + MOVE_RAIN_DANCE, + MOVE_REST, MOVE_ROCK_SLIDE, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, MOVE_ROLLOUT, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, MOVE_SEISMIC_TOSS, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, MOVE_SLEEP_TALK, + MOVE_SNATCH, MOVE_SNORE, MOVE_SOFT_BOILED, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, + MOVE_TOXIC, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; #endif //P_GEN_2_CROSS_EVOS @@ -6111,31 +6111,31 @@ static const u16 sBlisseyTeachableLearnset[] = { #if P_FAMILY_TANGELA static const u16 sTangelaTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BULLET_SEED, MOVE_CUT, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_GIGA_DRAIN, MOVE_HYPER_BEAM, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_REFLECT, MOVE_REST, MOVE_ROCK_SMASH, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWORDS_DANCE, + MOVE_THIEF, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; @@ -6143,36 +6143,36 @@ static const u16 sTangelaTeachableLearnset[] = { static const u16 sTangrowthTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULLET_SEED, MOVE_CUT, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_GIGA_DRAIN, MOVE_HYPER_BEAM, + MOVE_MUD_SLAP, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_REFLECT, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_STRENGTH, MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWORDS_DANCE, + MOVE_THIEF, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_GEN_4_CROSS_EVOS @@ -6183,56 +6183,56 @@ static const u16 sKangaskhanTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, + MOVE_COUNTER, MOVE_CUT, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DYNAMIC_PUNCH, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, + MOVE_FIRE_PUNCH, MOVE_FLAMETHROWER, MOVE_FOCUS_PUNCH, + MOVE_FURY_CUTTER, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, MOVE_IRON_TAIL, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SAFEGUARD, MOVE_SANDSTORM, + MOVE_SEISMIC_TOSS, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_STRENGTH, MOVE_SUNNY_DAY, MOVE_SURF, + MOVE_SWAGGER, MOVE_THIEF, MOVE_THUNDER, MOVE_THUNDERBOLT, + MOVE_THUNDER_PUNCH, MOVE_TOXIC, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_FURY_CUTTER, - MOVE_ICE_PUNCH, - MOVE_ICY_WIND, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, - MOVE_SEISMIC_TOSS, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_THUNDER_PUNCH, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_KANGASKHAN @@ -6242,24 +6242,24 @@ static const u16 sHorseaTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DIVE, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_HAIL, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SURF, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_UNAVAILABLE, }; @@ -6267,25 +6267,25 @@ static const u16 sSeadraTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DIVE, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SURF, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_UNAVAILABLE, }; @@ -6293,27 +6293,27 @@ static const u16 sSeadraTeachableLearnset[] = { static const u16 sKingdraTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_DIVE, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SURF, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_UNAVAILABLE, }; #endif //P_GEN_2_CROSS_EVOS @@ -6323,59 +6323,59 @@ static const u16 sKingdraTeachableLearnset[] = { static const u16 sGoldeenTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_DIVE, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FURY_CUTTER, MOVE_HAIL, MOVE_ICE_BEAM, + MOVE_ICY_WIND, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SURF, MOVE_SWAGGER, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; static const u16 sSeakingTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_DIVE, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FURY_CUTTER, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SURF, MOVE_SWAGGER, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_GOLDEEN @@ -6385,33 +6385,33 @@ static const u16 sStaryuTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DIVE, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_HAIL, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_LIGHT_SCREEN, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, - MOVE_SURF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_PSYCH_UP, MOVE_ROLLOUT, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SURF, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; @@ -6419,36 +6419,36 @@ static const u16 sStarmieTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DIVE, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_LIGHT_SCREEN, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, + MOVE_ROLLOUT, MOVE_SKILL_SWAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SURF, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_THUNDER, MOVE_THUNDERBOLT, + MOVE_THUNDER_WAVE, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_PSYCH_UP, - MOVE_ROLLOUT, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, - MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_STARYU @@ -6460,12 +6460,17 @@ static const u16 sMimeJrTeachableLearnset[] = { MOVE_BRICK_BREAK, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_FOCUS_PUNCH, + MOVE_ICY_WIND, MOVE_LIGHT_SCREEN, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, @@ -6473,24 +6478,19 @@ static const u16 sMimeJrTeachableLearnset[] = { MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, MOVE_SKILL_SWAP, + MOVE_SLEEP_TALK, MOVE_SNATCH, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, + MOVE_SWAGGER, MOVE_TAUNT, MOVE_THIEF, MOVE_THUNDER, MOVE_THUNDERBOLT, + MOVE_THUNDER_WAVE, MOVE_TORMENT, MOVE_TOXIC, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; #endif //P_GEN_4_CROSS_EVOS @@ -6498,52 +6498,52 @@ static const u16 sMimeJrTeachableLearnset[] = { static const u16 sMrMimeTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FOCUS_PUNCH, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_SAFEGUARD, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_BODY_SLAM, MOVE_COUNTER, MOVE_DOUBLE_EDGE, + MOVE_DOUBLE_TEAM, MOVE_DREAM_EATER, MOVE_DYNAMIC_PUNCH, MOVE_ENDURE, + MOVE_FACADE, MOVE_FIRE_PUNCH, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_HYPER_BEAM, MOVE_ICE_PUNCH, MOVE_ICY_WIND, + MOVE_LIGHT_SCREEN, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, MOVE_METRONOME, MOVE_MUD_SLAP, + MOVE_PROTECT, + MOVE_PSYCHIC, MOVE_PSYCH_UP, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_SAFEGUARD, MOVE_SEISMIC_TOSS, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, MOVE_SLEEP_TALK, + MOVE_SNATCH, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, MOVE_SWAGGER, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, + MOVE_TORMENT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; @@ -6551,13 +6551,20 @@ static const u16 sMrMimeTeachableLearnset[] = { static const u16 sMrMimeGalarTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_CALM_MIND, + MOVE_ENDURE, MOVE_FACADE, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, MOVE_LIGHT_SCREEN, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_METRONOME, MOVE_PROTECT, MOVE_PSYCHIC, MOVE_RAIN_DANCE, @@ -6566,21 +6573,14 @@ static const u16 sMrMimeGalarTeachableLearnset[] = { MOVE_SAFEGUARD, MOVE_SHADOW_BALL, MOVE_SKILL_SWAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, MOVE_TAUNT, MOVE_THIEF, MOVE_THUNDER, MOVE_THUNDERBOLT, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_ICE_PUNCH, - MOVE_ICY_WIND, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_METRONOME, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; @@ -6588,13 +6588,20 @@ static const u16 sMrMimeGalarTeachableLearnset[] = { static const u16 sMrRimeTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_CALM_MIND, + MOVE_ENDURE, MOVE_FACADE, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, MOVE_LIGHT_SCREEN, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_METRONOME, MOVE_PROTECT, MOVE_PSYCHIC, MOVE_RAIN_DANCE, @@ -6603,21 +6610,14 @@ static const u16 sMrRimeTeachableLearnset[] = { MOVE_SAFEGUARD, MOVE_SHADOW_BALL, MOVE_SKILL_SWAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, MOVE_TAUNT, MOVE_THIEF, MOVE_THUNDER, MOVE_THUNDERBOLT, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_ICE_PUNCH, - MOVE_ICY_WIND, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_METRONOME, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; @@ -6630,9 +6630,13 @@ static const u16 sScytherTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_CALM_MIND, + MOVE_COUNTER, MOVE_CUT, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FURY_CUTTER, MOVE_HYPER_BEAM, MOVE_LIGHT_SCREEN, MOVE_PROTECT, @@ -6640,19 +6644,15 @@ static const u16 sScytherTeachableLearnset[] = { MOVE_REST, MOVE_ROCK_SMASH, MOVE_SAFEGUARD, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FURY_CUTTER, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_THIEF, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; @@ -6662,9 +6662,13 @@ static const u16 sScizorTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_CALM_MIND, + MOVE_COUNTER, MOVE_CUT, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FURY_CUTTER, MOVE_HYPER_BEAM, MOVE_LIGHT_SCREEN, MOVE_PROTECT, @@ -6673,20 +6677,16 @@ static const u16 sScizorTeachableLearnset[] = { MOVE_ROCK_SMASH, MOVE_SAFEGUARD, MOVE_SANDSTORM, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_STEEL_WING, MOVE_STRENGTH, MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_THIEF, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_GEN_2_CROSS_EVOS @@ -6696,26 +6696,26 @@ static const u16 sKleavorTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_BRICK_BREAK, MOVE_CALM_MIND, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FURY_CUTTER, MOVE_HYPER_BEAM, MOVE_LIGHT_SCREEN, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SANDSTORM, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_ROCK_SLIDE, MOVE_SLEEP_TALK, + MOVE_SUNNY_DAY, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_THIEF, MOVE_UNAVAILABLE, }; #endif //P_GEN_8_CROSS_EVOS @@ -6726,40 +6726,40 @@ static const u16 sKleavorTeachableLearnset[] = { static const u16 sSmoochumTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_CALM_MIND, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_HAIL, MOVE_ICE_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_SHADOW_BALL, - MOVE_SKILL_SWAP, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, MOVE_ICE_PUNCH, MOVE_ICY_WIND, + MOVE_LIGHT_SCREEN, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, MOVE_METRONOME, MOVE_MUD_SLAP, + MOVE_PROTECT, + MOVE_PSYCHIC, MOVE_PSYCH_UP, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, MOVE_SEISMIC_TOSS, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, MOVE_SLEEP_TALK, MOVE_SNORE, MOVE_SWAGGER, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; #endif //P_GEN_2_CROSS_EVOS @@ -6767,45 +6767,45 @@ static const u16 sSmoochumTeachableLearnset[] = { static const u16 sJynxTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_CALM_MIND, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_FOCUS_PUNCH, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, MOVE_LIGHT_SCREEN, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_METRONOME, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, + MOVE_SEISMIC_TOSS, MOVE_SHADOW_BALL, MOVE_SKILL_SWAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SWAGGER, MOVE_TAUNT, MOVE_THIEF, MOVE_TORMENT, MOVE_TOXIC, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_ICE_PUNCH, - MOVE_ICY_WIND, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_METRONOME, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_SEISMIC_TOSS, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_JYNX @@ -6814,136 +6814,136 @@ static const u16 sJynxTeachableLearnset[] = { #if P_GEN_2_CROSS_EVOS static const u16 sElekidTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FIRE_PUNCH, MOVE_FLASH, MOVE_FOCUS_PUNCH, + MOVE_ICE_PUNCH, MOVE_LIGHT_SCREEN, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_PSYCHIC, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROCK_SMASH, - MOVE_SHOCK_WAVE, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_ICE_PUNCH, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_MUD_SLAP, MOVE_SEISMIC_TOSS, + MOVE_SHOCK_WAVE, MOVE_SLEEP_TALK, MOVE_SNORE, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_GEN_2_CROSS_EVOS static const u16 sElectabuzzTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULK_UP, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FIRE_PUNCH, MOVE_FLASH, MOVE_FOCUS_PUNCH, MOVE_HYPER_BEAM, + MOVE_ICE_PUNCH, MOVE_IRON_TAIL, MOVE_LIGHT_SCREEN, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_METRONOME, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_PSYCHIC, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, MOVE_ROCK_SMASH, + MOVE_SEISMIC_TOSS, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_STRENGTH, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_TAUNT, MOVE_THIEF, MOVE_THUNDER, MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_ICE_PUNCH, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_METRONOME, - MOVE_MUD_SLAP, - MOVE_SEISMIC_TOSS, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #if P_GEN_4_CROSS_EVOS static const u16 sElectivireTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULK_UP, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DYNAMIC_PUNCH, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FIRE_PUNCH, MOVE_FLAMETHROWER, MOVE_FLASH, MOVE_FOCUS_PUNCH, MOVE_HYPER_BEAM, + MOVE_ICE_PUNCH, MOVE_IRON_TAIL, MOVE_LIGHT_SCREEN, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_METRONOME, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_PSYCHIC, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_STRENGTH, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_TAUNT, MOVE_THIEF, MOVE_THUNDER, MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_ICE_PUNCH, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_METRONOME, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, + MOVE_TORMENT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_GEN_4_CROSS_EVOS @@ -6953,119 +6953,119 @@ static const u16 sElectivireTeachableLearnset[] = { #if P_GEN_2_CROSS_EVOS static const u16 sMagbyTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, + MOVE_FIRE_PUNCH, MOVE_FLAMETHROWER, MOVE_FOCUS_PUNCH, MOVE_IRON_TAIL, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MUD_SLAP, MOVE_OVERHEAT, MOVE_PROTECT, MOVE_PSYCHIC, MOVE_REST, MOVE_ROCK_SMASH, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_MUD_SLAP, MOVE_SEISMIC_TOSS, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SUNNY_DAY, MOVE_SWAGGER, + MOVE_THIEF, MOVE_THUNDER_PUNCH, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_GEN_2_CROSS_EVOS static const u16 sMagmarTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, + MOVE_FIRE_PUNCH, MOVE_FLAMETHROWER, MOVE_FOCUS_PUNCH, MOVE_HYPER_BEAM, MOVE_IRON_TAIL, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_METRONOME, + MOVE_MUD_SLAP, MOVE_OVERHEAT, MOVE_PROTECT, MOVE_PSYCHIC, MOVE_REST, MOVE_ROAR, MOVE_ROCK_SMASH, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_METRONOME, - MOVE_MUD_SLAP, MOVE_SEISMIC_TOSS, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, + MOVE_TAUNT, + MOVE_THIEF, MOVE_THUNDER_PUNCH, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #if P_GEN_4_CROSS_EVOS static const u16 sMagmortarTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DYNAMIC_PUNCH, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, + MOVE_FIRE_PUNCH, MOVE_FLAMETHROWER, MOVE_FOCUS_PUNCH, MOVE_HYPER_BEAM, MOVE_IRON_TAIL, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_METRONOME, + MOVE_MUD_SLAP, MOVE_OVERHEAT, MOVE_PROTECT, MOVE_PSYCHIC, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_STRENGTH, MOVE_SUNNY_DAY, + MOVE_SWAGGER, MOVE_TAUNT, MOVE_THIEF, MOVE_THUNDERBOLT, + MOVE_THUNDER_PUNCH, MOVE_TORMENT, MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_METRONOME, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_THUNDER_PUNCH, MOVE_UNAVAILABLE, }; #endif //P_GEN_4_CROSS_EVOS @@ -7074,34 +7074,34 @@ static const u16 sMagmortarTeachableLearnset[] = { #if P_FAMILY_PINSIR static const u16 sPinsirTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULK_UP, MOVE_CUT, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FOCUS_PUNCH, + MOVE_FURY_CUTTER, MOVE_HYPER_BEAM, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_ROCK_SLIDE, MOVE_SEISMIC_TOSS, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWORDS_DANCE, + MOVE_THIEF, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_PINSIR @@ -7110,71 +7110,74 @@ static const u16 sPinsirTeachableLearnset[] = { static const u16 sTaurosTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_IRON_TAIL, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SANDSTORM, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_STRENGTH, MOVE_SUNNY_DAY, MOVE_SURF, + MOVE_SWAGGER, MOVE_THIEF, MOVE_THUNDER, MOVE_THUNDERBOLT, MOVE_TOXIC, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, MOVE_UNAVAILABLE, }; #if P_PALDEAN_FORMS static const u16 sTaurosPaldeaCombatTeachableLearnset[] = { + MOVE_BODY_SLAM, MOVE_BULK_UP, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_HYPER_BEAM, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_TOMB, MOVE_SANDSTORM, + MOVE_SLEEP_TALK, MOVE_SUNNY_DAY, MOVE_SURF, - MOVE_THIEF, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, MOVE_SWAGGER, + MOVE_THIEF, MOVE_UNAVAILABLE, }; static const u16 sTaurosPaldeaBlazeTeachableLearnset[] = { + MOVE_BODY_SLAM, MOVE_BULK_UP, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, @@ -7183,39 +7186,36 @@ static const u16 sTaurosPaldeaBlazeTeachableLearnset[] = { MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_TOMB, MOVE_SANDSTORM, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ROCK_SLIDE, MOVE_SLEEP_TALK, + MOVE_SUNNY_DAY, MOVE_SWAGGER, + MOVE_THIEF, MOVE_UNAVAILABLE, }; static const u16 sTaurosPaldeaAquaTeachableLearnset[] = { + MOVE_BODY_SLAM, MOVE_BULK_UP, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_HYPER_BEAM, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_TOMB, MOVE_SANDSTORM, + MOVE_SLEEP_TALK, MOVE_SURF, + MOVE_SWAGGER, MOVE_THIEF, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SWAGGER, MOVE_UNAVAILABLE, }; #endif //P_PALDEAN_FORMS @@ -7229,15 +7229,19 @@ static const u16 sMagikarpTeachableLearnset[] = { static const u16 sGyaradosTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_DIVE, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_IRON_TAIL, MOVE_PROTECT, MOVE_RAIN_DANCE, @@ -7246,24 +7250,20 @@ static const u16 sGyaradosTeachableLearnset[] = { MOVE_ROAR, MOVE_ROCK_SMASH, MOVE_SANDSTORM, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_STRENGTH, MOVE_SUNNY_DAY, MOVE_SURF, + MOVE_SWAGGER, MOVE_TAUNT, MOVE_THUNDER, MOVE_THUNDERBOLT, + MOVE_THUNDER_WAVE, MOVE_TORMENT, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_MAGIKARP @@ -7272,13 +7272,18 @@ static const u16 sGyaradosTeachableLearnset[] = { static const u16 sLaprasTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_DIVE, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_IRON_TAIL, MOVE_PROTECT, MOVE_PSYCHIC, @@ -7289,22 +7294,17 @@ static const u16 sLaprasTeachableLearnset[] = { MOVE_ROCK_SMASH, MOVE_SAFEGUARD, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_STRENGTH, MOVE_SURF, + MOVE_SWAGGER, MOVE_THUNDER, MOVE_THUNDERBOLT, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_LAPRAS @@ -7318,42 +7318,47 @@ static const u16 sDittoTeachableLearnset[] = { #if P_FAMILY_EEVEE static const u16 sEeveeTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_CALM_MIND, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, MOVE_ROAR, MOVE_SHADOW_BALL, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MUD_SLAP, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sVaporeonTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_CALM_MIND, MOVE_DIG, MOVE_DIVE, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REFLECT, @@ -7361,34 +7366,33 @@ static const u16 sVaporeonTeachableLearnset[] = { MOVE_ROAR, MOVE_ROCK_SMASH, MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_STRENGTH, MOVE_SUNNY_DAY, MOVE_SURF, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_UNAVAILABLE, }; static const u16 sJolteonTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_CALM_MIND, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_HYPER_BEAM, MOVE_IRON_TAIL, MOVE_LIGHT_SCREEN, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REFLECT, @@ -7397,33 +7401,33 @@ static const u16 sJolteonTeachableLearnset[] = { MOVE_ROCK_SMASH, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MUD_SLAP, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sFlareonTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_CALM_MIND, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, MOVE_HYPER_BEAM, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_OVERHEAT, MOVE_PROTECT, MOVE_RAIN_DANCE, @@ -7432,34 +7436,36 @@ static const u16 sFlareonTeachableLearnset[] = { MOVE_ROAR, MOVE_ROCK_SMASH, MOVE_SHADOW_BALL, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MUD_SLAP, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #if P_GEN_2_CROSS_EVOS static const u16 sEspeonTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_CALM_MIND, MOVE_CUT, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_HYPER_BEAM, MOVE_IRON_TAIL, MOVE_LIGHT_SCREEN, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, @@ -7467,35 +7473,35 @@ static const u16 sEspeonTeachableLearnset[] = { MOVE_ROCK_SMASH, MOVE_SHADOW_BALL, MOVE_SKILL_SWAP, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sUmbreonTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_CALM_MIND, MOVE_CUT, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_HYPER_BEAM, MOVE_IRON_TAIL, MOVE_LIGHT_SCREEN, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, @@ -7503,23 +7509,17 @@ static const u16 sUmbreonTeachableLearnset[] = { MOVE_ROCK_SMASH, MOVE_SHADOW_BALL, MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, MOVE_SLEEP_TALK, + MOVE_SNATCH, MOVE_SNORE, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_TAUNT, + MOVE_THIEF, MOVE_THUNDER_WAVE, + MOVE_TORMENT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_GEN_2_CROSS_EVOS @@ -7528,68 +7528,68 @@ static const u16 sUmbreonTeachableLearnset[] = { static const u16 sLeafeonTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BULLET_SEED, MOVE_CALM_MIND, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, + MOVE_FURY_CUTTER, MOVE_GIGA_DRAIN, MOVE_HYPER_BEAM, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROAR, MOVE_ROCK_SMASH, MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_STRENGTH, MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_MUD_SLAP, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sGlaceonTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_CALM_MIND, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROAR, MOVE_ROCK_SMASH, MOVE_SHADOW_BALL, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_TOXIC, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; #endif //P_GEN_4_CROSS_EVOS @@ -7597,17 +7597,22 @@ static const u16 sGlaceonTeachableLearnset[] = { #if P_GEN_6_CROSS_EVOS static const u16 sSylveonTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_CALM_MIND, MOVE_CUT, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_HYPER_BEAM, MOVE_IRON_TAIL, MOVE_LIGHT_SCREEN, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, @@ -7616,17 +7621,12 @@ static const u16 sSylveonTeachableLearnset[] = { MOVE_SAFEGUARD, MOVE_SHADOW_BALL, MOVE_SKILL_SWAP, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_GEN_6_CROSS_EVOS @@ -7636,35 +7636,35 @@ static const u16 sSylveonTeachableLearnset[] = { static const u16 sPorygonTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_BLIZZARD, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_IRON_TAIL, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_THIEF, MOVE_THUNDER, MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; @@ -7672,35 +7672,35 @@ static const u16 sPorygonTeachableLearnset[] = { static const u16 sPorygon2TeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_BLIZZARD, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_IRON_TAIL, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_THIEF, MOVE_THUNDER, MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; @@ -7708,35 +7708,35 @@ static const u16 sPorygon2TeachableLearnset[] = { static const u16 sPorygonZTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_BLIZZARD, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_IRON_TAIL, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_THIEF, MOVE_THUNDER, MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_GEN_4_CROSS_EVOS @@ -7747,66 +7747,66 @@ static const u16 sPorygonZTeachableLearnset[] = { static const u16 sOmanyteTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_DIVE, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_HAIL, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, + MOVE_ROLLOUT, MOVE_SANDSTORM, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SURF, + MOVE_SWAGGER, MOVE_THIEF, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_ROCK_SLIDE, - MOVE_ROLLOUT, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, MOVE_UNAVAILABLE, }; static const u16 sOmastarTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_DIVE, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, + MOVE_ROLLOUT, MOVE_SANDSTORM, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SURF, + MOVE_SWAGGER, MOVE_THIEF, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_ROCK_SLIDE, - MOVE_ROLLOUT, - MOVE_SEISMIC_TOSS, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_OMANYTE @@ -7816,34 +7816,34 @@ static const u16 sKabutoTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_GIGA_DRAIN, MOVE_HAIL, MOVE_ICE_BEAM, + MOVE_ICY_WIND, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, + MOVE_ROLLOUT, MOVE_SANDSTORM, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SURF, + MOVE_SWAGGER, MOVE_THIEF, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, - MOVE_ROLLOUT, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, MOVE_UNAVAILABLE, }; @@ -7851,42 +7851,42 @@ static const u16 sKabutopsTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_CUT, MOVE_DIG, MOVE_DIVE, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FURY_CUTTER, MOVE_GIGA_DRAIN, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, + MOVE_MEGA_KICK, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, + MOVE_ROLLOUT, MOVE_SANDSTORM, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SURF, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, MOVE_THIEF, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_ICY_WIND, - MOVE_MEGA_KICK, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, - MOVE_ROLLOUT, - MOVE_SEISMIC_TOSS, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_KABUTO @@ -7895,9 +7895,11 @@ static const u16 sKabutopsTeachableLearnset[] = { static const u16 sAerodactylTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_DRAGON_CLAW, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, @@ -7909,23 +7911,21 @@ static const u16 sAerodactylTeachableLearnset[] = { MOVE_REFLECT, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SANDSTORM, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_STEEL_WING, MOVE_STRENGTH, MOVE_SUNNY_DAY, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_TAUNT, MOVE_THIEF, MOVE_TORMENT, MOVE_TOXIC, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_AERODACTYL @@ -7935,51 +7935,51 @@ static const u16 sAerodactylTeachableLearnset[] = { static const u16 sMunchlaxTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, + MOVE_FIRE_PUNCH, MOVE_FLAMETHROWER, MOVE_FOCUS_PUNCH, MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SNATCH, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH, MOVE_ICY_WIND, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, MOVE_METRONOME, MOVE_MUD_SLAP, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, MOVE_ROCK_SLIDE, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, MOVE_ROLLOUT, + MOVE_SANDSTORM, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, MOVE_SLEEP_TALK, + MOVE_SNATCH, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, MOVE_SWAGGER, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_PUNCH, + MOVE_TOXIC, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; #endif //P_GEN_4_CROSS_EVOS @@ -7987,56 +7987,56 @@ static const u16 sMunchlaxTeachableLearnset[] = { static const u16 sSnorlaxTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DYNAMIC_PUNCH, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, + MOVE_FIRE_PUNCH, MOVE_FLAMETHROWER, MOVE_FOCUS_PUNCH, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SNATCH, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH, MOVE_ICY_WIND, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, MOVE_METRONOME, MOVE_MUD_SLAP, + MOVE_PROTECT, + MOVE_PSYCHIC, MOVE_PSYCH_UP, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, MOVE_ROCK_SLIDE, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, MOVE_ROLLOUT, + MOVE_SANDSTORM, MOVE_SEISMIC_TOSS, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, MOVE_SLEEP_TALK, + MOVE_SNATCH, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, MOVE_SWAGGER, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_PUNCH, + MOVE_TOXIC, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_SNORLAX @@ -8045,13 +8045,17 @@ static const u16 sSnorlaxTeachableLearnset[] = { static const u16 sArticunoTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_BLIZZARD, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLY, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_LIGHT_SCREEN, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REFLECT, @@ -8059,18 +8063,14 @@ static const u16 sArticunoTeachableLearnset[] = { MOVE_ROAR, MOVE_ROCK_SMASH, MOVE_SANDSTORM, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_TOXIC, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; @@ -8078,6 +8078,8 @@ static const u16 sArticunoTeachableLearnset[] = { static const u16 sArticunoGalarTeachableLearnset[] = { MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLY, MOVE_HYPER_BEAM, @@ -8089,12 +8091,10 @@ static const u16 sArticunoGalarTeachableLearnset[] = { MOVE_REST, MOVE_SHADOW_BALL, MOVE_SKILL_SWAP, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_DREAM_EATER, - MOVE_ENDURE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, MOVE_SWIFT, MOVE_UNAVAILABLE, }; @@ -8104,13 +8104,16 @@ static const u16 sArticunoGalarTeachableLearnset[] = { #if P_FAMILY_ZAPDOS static const u16 sZapdosTeachableLearnset[] = { MOVE_AERIAL_ACE, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_FLY, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_LIGHT_SCREEN, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REFLECT, @@ -8119,19 +8122,16 @@ static const u16 sZapdosTeachableLearnset[] = { MOVE_ROCK_SMASH, MOVE_SANDSTORM, MOVE_SHOCK_WAVE, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MUD_SLAP, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; @@ -8140,25 +8140,25 @@ static const u16 sZapdosGalarTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_BRICK_BREAK, MOVE_BULK_UP, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLY, MOVE_HYPER_BEAM, MOVE_LIGHT_SCREEN, + MOVE_MEGA_KICK, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROCK_SMASH, MOVE_SANDSTORM, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MEGA_KICK, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, MOVE_SWIFT, + MOVE_TAUNT, MOVE_UNAVAILABLE, }; #endif //P_GALARIAN_FORMS @@ -8167,12 +8167,15 @@ static const u16 sZapdosGalarTeachableLearnset[] = { #if P_FAMILY_MOLTRES static const u16 sMoltresTeachableLearnset[] = { MOVE_AERIAL_ACE, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, MOVE_FLY, MOVE_HYPER_BEAM, + MOVE_MUD_SLAP, MOVE_OVERHEAT, MOVE_PROTECT, MOVE_RAIN_DANCE, @@ -8182,23 +8185,21 @@ static const u16 sMoltresTeachableLearnset[] = { MOVE_ROCK_SMASH, MOVE_SAFEGUARD, MOVE_SANDSTORM, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_STEEL_WING, MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #if P_GALARIAN_FORMS static const u16 sMoltresGalarTeachableLearnset[] = { MOVE_AERIAL_ACE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLY, MOVE_HYPER_BEAM, @@ -8208,14 +8209,13 @@ static const u16 sMoltresGalarTeachableLearnset[] = { MOVE_SAFEGUARD, MOVE_SANDSTORM, MOVE_SHADOW_BALL, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_ENDURE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, MOVE_SWIFT, + MOVE_TAUNT, + MOVE_THIEF, MOVE_UNAVAILABLE, }; #endif //P_GALARIAN_FORMS @@ -8225,13 +8225,17 @@ static const u16 sMoltresGalarTeachableLearnset[] = { static const u16 sDratiniTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_IRON_TAIL, MOVE_LIGHT_SCREEN, MOVE_PROTECT, @@ -8240,35 +8244,35 @@ static const u16 sDratiniTeachableLearnset[] = { MOVE_REST, MOVE_SAFEGUARD, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SUNNY_DAY, MOVE_SURF, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_THUNDER, MOVE_THUNDERBOLT, + MOVE_THUNDER_WAVE, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, - MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; static const u16 sDragonairTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_IRON_TAIL, MOVE_LIGHT_SCREEN, MOVE_PROTECT, @@ -8277,22 +8281,18 @@ static const u16 sDragonairTeachableLearnset[] = { MOVE_REST, MOVE_SAFEGUARD, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SUNNY_DAY, MOVE_SURF, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_THUNDER, MOVE_THUNDERBOLT, + MOVE_THUNDER_WAVE, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, - MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; @@ -8300,60 +8300,60 @@ static const u16 sDragoniteTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_CUT, MOVE_DIVE, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_DRAGON_CLAW, + MOVE_DYNAMIC_PUNCH, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, + MOVE_FIRE_PUNCH, MOVE_FLAMETHROWER, MOVE_FLY, MOVE_FOCUS_PUNCH, + MOVE_FURY_CUTTER, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, MOVE_IRON_TAIL, MOVE_LIGHT_SCREEN, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_METRONOME, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SAFEGUARD, MOVE_SANDSTORM, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_STEEL_WING, MOVE_STRENGTH, MOVE_SUNNY_DAY, MOVE_SURF, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_THUNDER, MOVE_THUNDERBOLT, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_FURY_CUTTER, - MOVE_ICE_PUNCH, - MOVE_ICY_WIND, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_METRONOME, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, - MOVE_THUNDER_PUNCH, - MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_DRATINI @@ -8362,66 +8362,66 @@ static const u16 sDragoniteTeachableLearnset[] = { static const u16 sMewtwoTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULK_UP, MOVE_CALM_MIND, + MOVE_COUNTER, MOVE_DIVE, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_DYNAMIC_PUNCH, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, + MOVE_FIRE_PUNCH, MOVE_FLAMETHROWER, MOVE_FLASH, MOVE_FOCUS_PUNCH, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH, MOVE_ICY_WIND, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, MOVE_METRONOME, MOVE_MUD_SLAP, + MOVE_PROTECT, + MOVE_PSYCHIC, MOVE_PSYCH_UP, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, MOVE_ROCK_SLIDE, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, MOVE_SEISMIC_TOSS, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, MOVE_SLEEP_TALK, + MOVE_SNATCH, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_TAUNT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_MEWTWO @@ -8436,97 +8436,97 @@ static const u16 sMewTeachableLearnset[] = { #if P_FAMILY_CHIKORITA static const u16 sChikoritaTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BULLET_SEED, + MOVE_COUNTER, MOVE_CUT, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, + MOVE_FURY_CUTTER, MOVE_GIGA_DRAIN, MOVE_IRON_TAIL, MOVE_LIGHT_SCREEN, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_REFLECT, MOVE_REST, MOVE_SAFEGUARD, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_MUD_SLAP, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWORDS_DANCE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sBayleefTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BULLET_SEED, + MOVE_COUNTER, MOVE_CUT, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, + MOVE_FURY_CUTTER, MOVE_GIGA_DRAIN, MOVE_IRON_TAIL, MOVE_LIGHT_SCREEN, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_REFLECT, MOVE_REST, MOVE_ROCK_SMASH, MOVE_SAFEGUARD, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_STRENGTH, MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_MUD_SLAP, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWORDS_DANCE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sMeganiumTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BULLET_SEED, + MOVE_COUNTER, MOVE_CUT, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, + MOVE_FURY_CUTTER, MOVE_GIGA_DRAIN, MOVE_HYPER_BEAM, MOVE_IRON_TAIL, MOVE_LIGHT_SCREEN, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_REFLECT, MOVE_REST, MOVE_ROCK_SMASH, MOVE_SAFEGUARD, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_STRENGTH, MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_MUD_SLAP, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWORDS_DANCE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_CHIKORITA @@ -8535,122 +8535,127 @@ static const u16 sMeganiumTeachableLearnset[] = { static const u16 sCyndaquilTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_CUT, + MOVE_DEFENSE_CURL, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_OVERHEAT, MOVE_PROTECT, MOVE_REST, MOVE_ROAR, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MUD_SLAP, MOVE_ROLLOUT, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sQuilavaTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_CUT, + MOVE_DEFENSE_CURL, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, MOVE_FOCUS_PUNCH, + MOVE_FURY_CUTTER, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_OVERHEAT, MOVE_PROTECT, MOVE_REST, MOVE_ROAR, MOVE_ROCK_SMASH, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_MUD_SLAP, MOVE_ROLLOUT, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sTyphlosionTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, + MOVE_COUNTER, MOVE_CUT, + MOVE_DEFENSE_CURL, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DYNAMIC_PUNCH, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, + MOVE_FIRE_PUNCH, MOVE_FLAMETHROWER, MOVE_FOCUS_PUNCH, + MOVE_FURY_CUTTER, MOVE_HYPER_BEAM, MOVE_IRON_TAIL, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MUD_SLAP, MOVE_OVERHEAT, MOVE_PROTECT, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, + MOVE_ROLLOUT, + MOVE_SEISMIC_TOSS, MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_STRENGTH, MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_FURY_CUTTER, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, - MOVE_ROLLOUT, - MOVE_SEISMIC_TOSS, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWIFT, MOVE_THUNDER_PUNCH, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #if P_HISUIAN_FORMS static const u16 sTyphlosionHisuiTeachableLearnset[] = { MOVE_AERIAL_ACE, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_CALM_MIND, + MOVE_DEFENSE_CURL, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, + MOVE_FIRE_PUNCH, MOVE_FLAMETHROWER, MOVE_FOCUS_PUNCH, MOVE_HYPER_BEAM, @@ -8659,18 +8664,13 @@ static const u16 sTyphlosionHisuiTeachableLearnset[] = { MOVE_PROTECT, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, + MOVE_ROLLOUT, MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, - MOVE_BODY_SLAM, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_ROCK_SLIDE, - MOVE_ROLLOUT, - MOVE_SLEEP_TALK, MOVE_SWIFT, MOVE_THUNDER_PUNCH, MOVE_UNAVAILABLE, @@ -8683,42 +8683,42 @@ static const u16 sTotodileTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, + MOVE_COUNTER, MOVE_CUT, MOVE_DIG, MOVE_DIVE, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_DRAGON_CLAW, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, MOVE_FACADE, MOVE_FOCUS_PUNCH, MOVE_HAIL, MOVE_ICE_BEAM, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, MOVE_IRON_TAIL, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_TOMB, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SURF, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, MOVE_THIEF, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_ICE_PUNCH, - MOVE_ICY_WIND, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, - MOVE_SEISMIC_TOSS, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; @@ -8726,46 +8726,46 @@ static const u16 sCroconawTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, + MOVE_COUNTER, MOVE_CUT, MOVE_DIG, MOVE_DIVE, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_DRAGON_CLAW, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, MOVE_FACADE, MOVE_FOCUS_PUNCH, + MOVE_FURY_CUTTER, MOVE_HAIL, MOVE_ICE_BEAM, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, MOVE_IRON_TAIL, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_STRENGTH, MOVE_SURF, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, MOVE_THIEF, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_ICE_PUNCH, - MOVE_ICY_WIND, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, - MOVE_SEISMIC_TOSS, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; @@ -8773,48 +8773,48 @@ static const u16 sFeraligatrTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, + MOVE_COUNTER, MOVE_CUT, MOVE_DIG, MOVE_DIVE, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_DRAGON_CLAW, + MOVE_DYNAMIC_PUNCH, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FOCUS_PUNCH, + MOVE_FURY_CUTTER, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, MOVE_IRON_TAIL, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_STRENGTH, MOVE_SURF, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, MOVE_THIEF, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_ICE_PUNCH, - MOVE_ICY_WIND, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, - MOVE_SEISMIC_TOSS, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_TOTODILE @@ -8823,89 +8823,89 @@ static const u16 sFeraligatrTeachableLearnset[] = { static const u16 sSentretTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_CUT, + MOVE_DEFENSE_CURL, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FIRE_PUNCH, MOVE_FLAMETHROWER, MOVE_FOCUS_PUNCH, + MOVE_FURY_CUTTER, MOVE_ICE_BEAM, + MOVE_ICE_PUNCH, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROLLOUT, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, MOVE_SURF, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_THIEF, MOVE_THUNDER, MOVE_THUNDERBOLT, + MOVE_THUNDER_PUNCH, MOVE_TOXIC, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_FURY_CUTTER, - MOVE_ICE_PUNCH, - MOVE_MUD_SLAP, - MOVE_ROLLOUT, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, - MOVE_THUNDER_PUNCH, MOVE_UNAVAILABLE, }; static const u16 sFurretTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_CUT, + MOVE_DEFENSE_CURL, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FIRE_PUNCH, MOVE_FLAMETHROWER, MOVE_FOCUS_PUNCH, + MOVE_FURY_CUTTER, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICE_PUNCH, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROCK_SMASH, + MOVE_ROLLOUT, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_STRENGTH, MOVE_SUNNY_DAY, MOVE_SURF, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_THIEF, MOVE_THUNDER, MOVE_THUNDERBOLT, + MOVE_THUNDER_PUNCH, MOVE_TOXIC, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_FURY_CUTTER, - MOVE_ICE_PUNCH, - MOVE_MUD_SLAP, - MOVE_ROLLOUT, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, - MOVE_THUNDER_PUNCH, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_SENTRET @@ -8915,63 +8915,63 @@ static const u16 sHoothootTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_CALM_MIND, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_FLY, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, MOVE_SHADOW_BALL, MOVE_SKILL_SWAP, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_THIEF, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sNoctowlTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_CALM_MIND, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_FLY, MOVE_HYPER_BEAM, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, MOVE_SHADOW_BALL, MOVE_SKILL_SWAP, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_THIEF, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_HOOTHOOT @@ -8981,34 +8981,34 @@ static const u16 sLedybaTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, + MOVE_COUNTER, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_FOCUS_PUNCH, MOVE_GIGA_DRAIN, + MOVE_ICE_PUNCH, MOVE_LIGHT_SCREEN, + MOVE_MEGA_PUNCH, MOVE_PROTECT, MOVE_REFLECT, MOVE_REST, - MOVE_SAFEGUARD, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_ICE_PUNCH, - MOVE_MEGA_PUNCH, MOVE_ROLLOUT, + MOVE_SAFEGUARD, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_THIEF, MOVE_THUNDER_PUNCH, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; @@ -9016,37 +9016,37 @@ static const u16 sLedianTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, + MOVE_COUNTER, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_FOCUS_PUNCH, MOVE_GIGA_DRAIN, MOVE_HYPER_BEAM, + MOVE_ICE_PUNCH, MOVE_LIGHT_SCREEN, + MOVE_MEGA_PUNCH, MOVE_PROTECT, MOVE_REFLECT, MOVE_REST, MOVE_ROCK_SMASH, + MOVE_ROLLOUT, MOVE_SAFEGUARD, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_STRENGTH, MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_ICE_PUNCH, - MOVE_MEGA_PUNCH, - MOVE_ROLLOUT, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_THIEF, MOVE_THUNDER_PUNCH, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_LEDYBA @@ -9054,32 +9054,35 @@ static const u16 sLedianTeachableLearnset[] = { #if P_FAMILY_SPINARAK static const u16 sSpinarakTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_GIGA_DRAIN, MOVE_PROTECT, MOVE_PSYCHIC, MOVE_REST, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, + MOVE_SWAGGER, MOVE_THIEF, MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, MOVE_UNAVAILABLE, }; static const u16 sAriadosTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_GIGA_DRAIN, @@ -9087,18 +9090,15 @@ static const u16 sAriadosTeachableLearnset[] = { MOVE_PROTECT, MOVE_PSYCHIC, MOVE_REST, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWORDS_DANCE, + MOVE_THIEF, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_SPINARAK @@ -9108,28 +9108,28 @@ static const u16 sChinchouTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DIVE, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_HAIL, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SURF, + MOVE_SWAGGER, MOVE_THUNDER, MOVE_THUNDERBOLT, + MOVE_THUNDER_WAVE, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; @@ -9137,29 +9137,29 @@ static const u16 sLanturnTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DIVE, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SURF, + MOVE_SWAGGER, MOVE_THUNDER, MOVE_THUNDERBOLT, + MOVE_THUNDER_WAVE, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_CHINCHOU @@ -9168,54 +9168,60 @@ static const u16 sLanturnTeachableLearnset[] = { static const u16 sTogepiTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_CALM_MIND, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, MOVE_FLASH, MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_SAFEGUARD, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_ENDURE, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, MOVE_METRONOME, MOVE_MUD_SLAP, + MOVE_PROTECT, + MOVE_PSYCHIC, MOVE_PSYCH_UP, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_ROCK_SMASH, MOVE_ROLLOUT, + MOVE_SAFEGUARD, MOVE_SEISMIC_TOSS, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, MOVE_SLEEP_TALK, MOVE_SNORE, MOVE_SOFT_BOILED, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, MOVE_THUNDER_WAVE, + MOVE_TOXIC, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; static const u16 sTogeticTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_CALM_MIND, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, @@ -9224,39 +9230,33 @@ static const u16 sTogeticTeachableLearnset[] = { MOVE_FOCUS_PUNCH, MOVE_HYPER_BEAM, MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_SAFEGUARD, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SOLAR_BEAM, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_ENDURE, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, MOVE_METRONOME, MOVE_MUD_SLAP, + MOVE_PROTECT, + MOVE_PSYCHIC, MOVE_PSYCH_UP, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_ROCK_SMASH, MOVE_ROLLOUT, + MOVE_SAFEGUARD, MOVE_SEISMIC_TOSS, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, MOVE_SLEEP_TALK, MOVE_SNORE, MOVE_SOFT_BOILED, + MOVE_SOLAR_BEAM, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, MOVE_THUNDER_WAVE, + MOVE_TOXIC, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; @@ -9264,9 +9264,13 @@ static const u16 sTogeticTeachableLearnset[] = { static const u16 sTogekissTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_CALM_MIND, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, @@ -9275,35 +9279,31 @@ static const u16 sTogekissTeachableLearnset[] = { MOVE_FOCUS_PUNCH, MOVE_HYPER_BEAM, MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_SAFEGUARD, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SOLAR_BEAM, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_ENDURE, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, MOVE_METRONOME, MOVE_MUD_SLAP, + MOVE_PROTECT, + MOVE_PSYCHIC, MOVE_PSYCH_UP, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_ROCK_SMASH, MOVE_ROLLOUT, + MOVE_SAFEGUARD, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, MOVE_THUNDER_WAVE, + MOVE_TOXIC, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; #endif //P_GEN_4_CROSS_EVOS @@ -9314,32 +9314,32 @@ static const u16 sNatuTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_CALM_MIND, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_GIGA_DRAIN, MOVE_LIGHT_SCREEN, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, MOVE_SHADOW_BALL, MOVE_SKILL_SWAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_STEEL_WING, MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_THIEF, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; @@ -9347,7 +9347,10 @@ static const u16 sXatuTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_CALM_MIND, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_FLY, @@ -9356,25 +9359,22 @@ static const u16 sXatuTeachableLearnset[] = { MOVE_LIGHT_SCREEN, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, MOVE_SHADOW_BALL, MOVE_SKILL_SWAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_STEEL_WING, MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_THIEF, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_NATU @@ -9382,8 +9382,12 @@ static const u16 sXatuTeachableLearnset[] = { #if P_FAMILY_MAREEP static const u16 sMareepTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, + MOVE_DEFENSE_CURL, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_IRON_TAIL, @@ -9394,32 +9398,38 @@ static const u16 sMareepTeachableLearnset[] = { MOVE_REST, MOVE_SAFEGUARD, MOVE_SHOCK_WAVE, - MOVE_SUNNY_DAY, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sFlaaffyTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FIRE_PUNCH, MOVE_FLASH, MOVE_FOCUS_PUNCH, + MOVE_ICE_PUNCH, MOVE_IRON_TAIL, MOVE_LIGHT_SCREEN, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REFLECT, @@ -9427,43 +9437,43 @@ static const u16 sFlaaffyTeachableLearnset[] = { MOVE_ROAR, MOVE_ROCK_SMASH, MOVE_SAFEGUARD, - MOVE_SHOCK_WAVE, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_ICE_PUNCH, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, MOVE_SEISMIC_TOSS, + MOVE_SHOCK_WAVE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sAmpharosTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FIRE_PUNCH, MOVE_FLASH, MOVE_FOCUS_PUNCH, MOVE_HYPER_BEAM, + MOVE_ICE_PUNCH, MOVE_IRON_TAIL, MOVE_LIGHT_SCREEN, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REFLECT, @@ -9471,29 +9481,19 @@ static const u16 sAmpharosTeachableLearnset[] = { MOVE_ROAR, MOVE_ROCK_SMASH, MOVE_SAFEGUARD, - MOVE_SHOCK_WAVE, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_ICE_PUNCH, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, MOVE_SEISMIC_TOSS, + MOVE_SHOCK_WAVE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_MAREEP @@ -9503,30 +9503,30 @@ static const u16 sAmpharosTeachableLearnset[] = { static const u16 sAzurillTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_HAIL, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, MOVE_BODY_SLAM, MOVE_DEFENSE_CURL, MOVE_DOUBLE_EDGE, + MOVE_DOUBLE_TEAM, MOVE_ENDURE, + MOVE_FACADE, + MOVE_HAIL, + MOVE_ICE_BEAM, MOVE_ICY_WIND, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, MOVE_MUD_SLAP, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, MOVE_ROLLOUT, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SURF, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; #endif //P_GEN_3_CROSS_EVOS @@ -9534,85 +9534,85 @@ static const u16 sAzurillTeachableLearnset[] = { static const u16 sMarillTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, + MOVE_DEFENSE_CURL, MOVE_DIG, MOVE_DIVE, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, MOVE_FACADE, MOVE_FOCUS_PUNCH, MOVE_HAIL, MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_STRENGTH, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, MOVE_ICE_PUNCH, MOVE_ICY_WIND, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, MOVE_METRONOME, MOVE_MUD_SLAP, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_ROCK_SMASH, MOVE_ROLLOUT, MOVE_SEISMIC_TOSS, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SURF, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; static const u16 sAzumarillTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, + MOVE_DEFENSE_CURL, MOVE_DIG, MOVE_DIVE, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, MOVE_FACADE, MOVE_FOCUS_PUNCH, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_STRENGTH, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, MOVE_ICE_PUNCH, MOVE_ICY_WIND, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, MOVE_METRONOME, MOVE_MUD_SLAP, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_ROCK_SMASH, MOVE_ROLLOUT, MOVE_SEISMIC_TOSS, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SURF, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_MARILL @@ -9621,77 +9621,77 @@ static const u16 sAzumarillTeachableLearnset[] = { #if P_GEN_4_CROSS_EVOS static const u16 sBonslyTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_CALM_MIND, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_PROTECT, - MOVE_REST, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_BODY_SLAM, MOVE_COUNTER, MOVE_DEFENSE_CURL, + MOVE_DIG, MOVE_DOUBLE_EDGE, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, MOVE_ENDURE, MOVE_EXPLOSION, + MOVE_FACADE, MOVE_MUD_SLAP, + MOVE_PROTECT, MOVE_PSYCH_UP, + MOVE_REST, MOVE_ROCK_SLIDE, + MOVE_ROCK_TOMB, MOVE_ROLLOUT, + MOVE_SANDSTORM, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SUNNY_DAY, MOVE_SWAGGER, + MOVE_THIEF, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_GEN_4_CROSS_EVOS static const u16 sSudowoodoTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_CALM_MIND, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_BODY_SLAM, MOVE_COUNTER, MOVE_DEFENSE_CURL, + MOVE_DIG, MOVE_DOUBLE_EDGE, + MOVE_DOUBLE_TEAM, MOVE_DYNAMIC_PUNCH, + MOVE_EARTHQUAKE, MOVE_ENDURE, MOVE_EXPLOSION, + MOVE_FACADE, MOVE_FIRE_PUNCH, + MOVE_FOCUS_PUNCH, + MOVE_HYPER_BEAM, MOVE_ICE_PUNCH, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, MOVE_MUD_SLAP, + MOVE_PROTECT, MOVE_PSYCH_UP, + MOVE_REST, MOVE_ROCK_SLIDE, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, MOVE_ROLLOUT, + MOVE_SANDSTORM, MOVE_SEISMIC_TOSS, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, + MOVE_TAUNT, + MOVE_THIEF, MOVE_THUNDER_PUNCH, + MOVE_TORMENT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_SUDOWOODO @@ -9701,27 +9701,27 @@ static const u16 sHoppipTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BULLET_SEED, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_GIGA_DRAIN, MOVE_LIGHT_SCREEN, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_PSYCH_UP, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWORDS_DANCE, + MOVE_THIEF, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; @@ -9729,27 +9729,27 @@ static const u16 sSkiploomTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BULLET_SEED, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_GIGA_DRAIN, MOVE_LIGHT_SCREEN, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_PSYCH_UP, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWORDS_DANCE, + MOVE_THIEF, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; @@ -9757,28 +9757,28 @@ static const u16 sJumpluffTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BULLET_SEED, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_GIGA_DRAIN, MOVE_HYPER_BEAM, MOVE_LIGHT_SCREEN, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_PSYCH_UP, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWORDS_DANCE, + MOVE_THIEF, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_HOPPIP @@ -9787,50 +9787,50 @@ static const u16 sJumpluffTeachableLearnset[] = { static const u16 sAipomTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SNATCH, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATER_PULSE, MOVE_BODY_SLAM, + MOVE_BRICK_BREAK, MOVE_COUNTER, + MOVE_CUT, MOVE_DEFENSE_CURL, + MOVE_DIG, MOVE_DOUBLE_EDGE, + MOVE_DOUBLE_TEAM, MOVE_DREAM_EATER, MOVE_DYNAMIC_PUNCH, MOVE_ENDURE, + MOVE_FACADE, MOVE_FIRE_PUNCH, + MOVE_FOCUS_PUNCH, MOVE_FURY_CUTTER, MOVE_ICE_PUNCH, + MOVE_IRON_TAIL, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, MOVE_METRONOME, MOVE_MUD_SLAP, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_ROCK_SMASH, MOVE_SEISMIC_TOSS, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, MOVE_SLEEP_TALK, + MOVE_SNATCH, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, + MOVE_TOXIC, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; @@ -9839,44 +9839,44 @@ static const u16 sAmbipomTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, + MOVE_COUNTER, MOVE_CUT, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FIRE_PUNCH, MOVE_FOCUS_PUNCH, + MOVE_FURY_CUTTER, MOVE_HYPER_BEAM, + MOVE_ICE_PUNCH, MOVE_IRON_TAIL, + MOVE_METRONOME, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROCK_SMASH, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, MOVE_SNATCH, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_STRENGTH, MOVE_SUNNY_DAY, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_TAUNT, MOVE_THIEF, MOVE_THUNDER, MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_FURY_CUTTER, - MOVE_ICE_PUNCH, - MOVE_METRONOME, - MOVE_MUD_SLAP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, + MOVE_TOXIC, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; #endif //P_GEN_4_CROSS_EVOS @@ -9887,7 +9887,9 @@ static const u16 sSunkernTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULLET_SEED, MOVE_CUT, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_GIGA_DRAIN, @@ -9896,16 +9898,14 @@ static const u16 sSunkernTeachableLearnset[] = { MOVE_RAIN_DANCE, MOVE_REST, MOVE_SAFEGUARD, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWORDS_DANCE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; @@ -9913,7 +9913,9 @@ static const u16 sSunfloraTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULLET_SEED, MOVE_CUT, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_GIGA_DRAIN, @@ -9923,16 +9925,14 @@ static const u16 sSunfloraTeachableLearnset[] = { MOVE_RAIN_DANCE, MOVE_REST, MOVE_SAFEGUARD, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWORDS_DANCE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_SUNKERN @@ -9941,28 +9941,28 @@ static const u16 sSunfloraTeachableLearnset[] = { static const u16 sYanmaTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_GIGA_DRAIN, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_REST, MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_STEEL_WING, MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_THIEF, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; @@ -9970,30 +9970,30 @@ static const u16 sYanmaTeachableLearnset[] = { static const u16 sYanmegaTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_GIGA_DRAIN, MOVE_HYPER_BEAM, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_REST, MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_STEEL_WING, MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_THIEF, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_GEN_4_CROSS_EVOS @@ -10003,140 +10003,140 @@ static const u16 sYanmegaTeachableLearnset[] = { static const u16 sWooperTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, MOVE_DIG, MOVE_DIVE, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DYNAMIC_PUNCH, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_HAIL, MOVE_ICE_BEAM, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, + MOVE_ROLLOUT, MOVE_SAFEGUARD, MOVE_SANDSTORM, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_SURF, + MOVE_SWAGGER, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_ICE_PUNCH, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, - MOVE_ROLLOUT, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, MOVE_UNAVAILABLE, }; static const u16 sQuagsireTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, MOVE_DIG, MOVE_DIVE, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DYNAMIC_PUNCH, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_FOCUS_PUNCH, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, MOVE_IRON_TAIL, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, + MOVE_ROLLOUT, MOVE_SAFEGUARD, MOVE_SANDSTORM, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_STRENGTH, MOVE_SURF, + MOVE_SWAGGER, MOVE_THIEF, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_ICE_PUNCH, - MOVE_ICY_WIND, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, - MOVE_ROLLOUT, - MOVE_SEISMIC_TOSS, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, MOVE_UNAVAILABLE, }; #if P_PALDEAN_FORMS static const u16 sWooperPaldeaTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_COUNTER, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_TOMB, MOVE_SANDSTORM, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, MOVE_SURF, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, MOVE_UNAVAILABLE, }; static const u16 sClodsireTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_COUNTER, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_HYPER_BEAM, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_TOMB, MOVE_SANDSTORM, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, MOVE_SURF, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, MOVE_UNAVAILABLE, }; #endif //P_PALDEAN_FORMS @@ -10147,33 +10147,33 @@ static const u16 sMurkrowTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_CALM_MIND, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLY, MOVE_HYPER_BEAM, + MOVE_ICY_WIND, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, MOVE_SNATCH, + MOVE_SNORE, MOVE_STEEL_WING, MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_TAUNT, + MOVE_THIEF, MOVE_THUNDER_WAVE, + MOVE_TORMENT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; @@ -10182,33 +10182,33 @@ static const u16 sHonchkrowTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_CALM_MIND, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLY, MOVE_HYPER_BEAM, + MOVE_ICY_WIND, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, MOVE_SNATCH, + MOVE_SNORE, MOVE_STEEL_WING, MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_TAUNT, + MOVE_THIEF, MOVE_THUNDER_WAVE, + MOVE_TORMENT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_GEN_4_CROSS_EVOS @@ -10219,36 +10219,36 @@ static const u16 sMisdreavusTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_CALM_MIND, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_HYPER_BEAM, + MOVE_ICY_WIND, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, MOVE_SKILL_SWAP, + MOVE_SLEEP_TALK, MOVE_SNATCH, + MOVE_SNORE, MOVE_SUNNY_DAY, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_TAUNT, MOVE_THIEF, MOVE_THUNDER, MOVE_THUNDERBOLT, + MOVE_THUNDER_WAVE, MOVE_TORMENT, MOVE_TOXIC, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, - MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; @@ -10258,33 +10258,33 @@ static const u16 sMismagiusTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_HYPER_BEAM, + MOVE_ICY_WIND, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, MOVE_SKILL_SWAP, + MOVE_SLEEP_TALK, MOVE_SNATCH, + MOVE_SNORE, MOVE_SUNNY_DAY, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_TAUNT, MOVE_THIEF, MOVE_THUNDER, MOVE_THUNDERBOLT, + MOVE_THUNDER_WAVE, MOVE_TORMENT, MOVE_TOXIC, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, - MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; #endif //P_GEN_4_CROSS_EVOS @@ -10299,15 +10299,15 @@ static const u16 sUnownTeachableLearnset[] = { #if P_FAMILY_WOBBUFFET #if P_GEN_3_CROSS_EVOS static const u16 sWynautTeachableLearnset[] = { - MOVE_SAFEGUARD, MOVE_COUNTER, + MOVE_SAFEGUARD, MOVE_UNAVAILABLE, }; #endif //P_GEN_3_CROSS_EVOS static const u16 sWobbuffetTeachableLearnset[] = { - MOVE_SAFEGUARD, MOVE_COUNTER, + MOVE_SAFEGUARD, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_WOBBUFFET @@ -10315,16 +10315,22 @@ static const u16 sWobbuffetTeachableLearnset[] = { #if P_FAMILY_GIRAFARIG static const u16 sGirafarigTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_CALM_MIND, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_HYPER_BEAM, MOVE_IRON_TAIL, MOVE_LIGHT_SCREEN, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, @@ -10332,51 +10338,45 @@ static const u16 sGirafarigTeachableLearnset[] = { MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, MOVE_SKILL_SWAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_STRENGTH, MOVE_SUNNY_DAY, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_THIEF, MOVE_THUNDER, MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #if P_GEN_9_CROSS_EVOS static const u16 sFarigirafTeachableLearnset[] = { + MOVE_BODY_SLAM, MOVE_CALM_MIND, + MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_HYPER_BEAM, MOVE_LIGHT_SCREEN, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, MOVE_ROAR, MOVE_SHADOW_BALL, MOVE_SKILL_SWAP, + MOVE_SLEEP_TALK, MOVE_SUNNY_DAY, + MOVE_SWIFT, MOVE_THIEF, MOVE_THUNDER, MOVE_THUNDERBOLT, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SWIFT, MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; @@ -10386,9 +10386,15 @@ static const u16 sFarigirafTeachableLearnset[] = { #if P_FAMILY_PINECO static const u16 sPinecoTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, + MOVE_EXPLOSION, MOVE_FACADE, MOVE_GIGA_DRAIN, MOVE_LIGHT_SCREEN, @@ -10396,33 +10402,33 @@ static const u16 sPinecoTeachableLearnset[] = { MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, + MOVE_ROLLOUT, MOVE_SANDSTORM, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_STRENGTH, MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_EXPLOSION, - MOVE_ROCK_SLIDE, - MOVE_ROLLOUT, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sForretressTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, + MOVE_EXPLOSION, MOVE_FACADE, MOVE_GIGA_DRAIN, MOVE_HYPER_BEAM, @@ -10431,26 +10437,20 @@ static const u16 sForretressTeachableLearnset[] = { MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, + MOVE_ROLLOUT, MOVE_SANDSTORM, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_STRENGTH, MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_EXPLOSION, - MOVE_ROCK_SLIDE, - MOVE_ROLLOUT, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWIFT, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_PINECO @@ -10459,81 +10459,81 @@ static const u16 sForretressTeachableLearnset[] = { static const u16 sDunsparceTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_CALM_MIND, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, + MOVE_ROLLOUT, MOVE_SANDSTORM, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_STRENGTH, MOVE_SUNNY_DAY, + MOVE_SWAGGER, MOVE_THIEF, MOVE_THUNDER, MOVE_THUNDERBOLT, + MOVE_THUNDER_WAVE, MOVE_TOXIC, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_ROCK_SLIDE, - MOVE_ROLLOUT, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; #if P_GEN_9_CROSS_EVOS static const u16 sDudunsparceTeachableLearnset[] = { MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_CALM_MIND, + MOVE_DEFENSE_CURL, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_MUD_SLAP, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_TOMB, + MOVE_ROLLOUT, MOVE_SANDSTORM, MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, MOVE_THIEF, MOVE_THUNDER, MOVE_THUNDERBOLT, MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_ROCK_SLIDE, - MOVE_ROLLOUT, - MOVE_SLEEP_TALK, MOVE_UNAVAILABLE, }; #endif //P_GEN_9_CROSS_EVOS @@ -10544,38 +10544,38 @@ static const u16 sGligarTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, + MOVE_COUNTER, MOVE_CUT, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FURY_CUTTER, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SANDSTORM, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_STEEL_WING, MOVE_STRENGTH, MOVE_SUNNY_DAY, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, MOVE_TAUNT, MOVE_THIEF, MOVE_TORMENT, MOVE_TOXIC, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, - MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; @@ -10584,38 +10584,38 @@ static const u16 sGliscorTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, + MOVE_COUNTER, MOVE_CUT, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FURY_CUTTER, MOVE_HYPER_BEAM, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SANDSTORM, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_STEEL_WING, MOVE_STRENGTH, MOVE_SUNNY_DAY, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, MOVE_TAUNT, MOVE_THIEF, MOVE_TORMENT, MOVE_TOXIC, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, - MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; #endif //P_GEN_4_CROSS_EVOS @@ -10624,15 +10624,27 @@ static const u16 sGliscorTeachableLearnset[] = { #if P_FAMILY_SNUBBULL static const u16 sSnubbullTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULK_UP, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DYNAMIC_PUNCH, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, + MOVE_FIRE_PUNCH, MOVE_FLAMETHROWER, MOVE_FOCUS_PUNCH, + MOVE_ICE_PUNCH, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_METRONOME, + MOVE_MUD_SLAP, MOVE_OVERHEAT, MOVE_PROTECT, MOVE_RAIN_DANCE, @@ -10640,93 +10652,81 @@ static const u16 sSnubbullTeachableLearnset[] = { MOVE_REST, MOVE_ROAR, MOVE_ROCK_SMASH, + MOVE_SEISMIC_TOSS, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_STRENGTH, MOVE_SUNNY_DAY, + MOVE_SWAGGER, MOVE_TAUNT, MOVE_THIEF, MOVE_THUNDER, MOVE_THUNDERBOLT, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, MOVE_TORMENT, MOVE_TOXIC, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_ICE_PUNCH, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_METRONOME, - MOVE_MUD_SLAP, - MOVE_SEISMIC_TOSS, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_THUNDER_PUNCH, - MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; static const u16 sGranbullTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULK_UP, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DYNAMIC_PUNCH, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, + MOVE_FIRE_PUNCH, MOVE_FLAMETHROWER, MOVE_FOCUS_PUNCH, MOVE_HYPER_BEAM, + MOVE_ICE_PUNCH, MOVE_IRON_TAIL, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_METRONOME, + MOVE_MUD_SLAP, MOVE_OVERHEAT, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, + MOVE_SEISMIC_TOSS, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_STRENGTH, MOVE_SUNNY_DAY, + MOVE_SWAGGER, MOVE_TAUNT, MOVE_THIEF, MOVE_THUNDER, MOVE_THUNDERBOLT, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, MOVE_TORMENT, MOVE_TOXIC, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_ICE_PUNCH, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_METRONOME, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, - MOVE_SEISMIC_TOSS, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_THUNDER_PUNCH, - MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_SNUBBULL @@ -10735,82 +10735,82 @@ static const u16 sGranbullTeachableLearnset[] = { static const u16 sQwilfishTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_DEFENSE_CURL, MOVE_DIVE, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, + MOVE_EXPLOSION, MOVE_FACADE, MOVE_HAIL, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROLLOUT, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, - MOVE_SLUDGE_BOMB, - MOVE_SURF, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_EXPLOSION, - MOVE_ICY_WIND, - MOVE_ROLLOUT, MOVE_SLEEP_TALK, + MOVE_SLUDGE_BOMB, MOVE_SNORE, + MOVE_SURF, MOVE_SWAGGER, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_TAUNT, MOVE_THUNDER_WAVE, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; #if P_HISUIAN_FORMS static const u16 sQwilfishHisuiTeachableLearnset[] = { MOVE_BLIZZARD, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, MOVE_FACADE, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, MOVE_SURF, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, MOVE_TAUNT, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_SLEEP_TALK, - MOVE_SWIFT, - MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; static const u16 sOverqwilTeachableLearnset[] = { MOVE_BLIZZARD, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, MOVE_FACADE, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, MOVE_SURF, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, MOVE_TAUNT, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_SLEEP_TALK, - MOVE_SWIFT, - MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; #endif //P_HISUIAN_FORMS @@ -10819,31 +10819,31 @@ static const u16 sOverqwilTeachableLearnset[] = { #if P_FAMILY_SHUCKLE static const u16 sShuckleTeachableLearnset[] = { MOVE_ATTRACT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FLASH, - MOVE_PROTECT, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SLUDGE_BOMB, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, MOVE_BODY_SLAM, MOVE_DEFENSE_CURL, + MOVE_DIG, MOVE_DOUBLE_EDGE, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, MOVE_ENDURE, + MOVE_FACADE, + MOVE_FLASH, MOVE_MUD_SLAP, + MOVE_PROTECT, + MOVE_REST, MOVE_ROCK_SLIDE, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, MOVE_ROLLOUT, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, MOVE_SLEEP_TALK, + MOVE_SLUDGE_BOMB, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_SHUCKLE @@ -10852,37 +10852,37 @@ static const u16 sShuckleTeachableLearnset[] = { static const u16 sHeracrossTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULK_UP, MOVE_BULLET_SEED, MOVE_CALM_MIND, + MOVE_COUNTER, MOVE_CUT, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FOCUS_PUNCH, + MOVE_FURY_CUTTER, MOVE_HYPER_BEAM, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_ROCK_SLIDE, MOVE_SEISMIC_TOSS, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWORDS_DANCE, + MOVE_THIEF, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_HERACROSS @@ -10894,47 +10894,47 @@ static const u16 sSneaselTeachableLearnset[] = { MOVE_BLIZZARD, MOVE_BRICK_BREAK, MOVE_CALM_MIND, + MOVE_COUNTER, MOVE_CUT, + MOVE_DEFENSE_CURL, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, MOVE_FACADE, MOVE_FOCUS_PUNCH, + MOVE_FURY_CUTTER, MOVE_HAIL, MOVE_ICE_BEAM, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, MOVE_IRON_TAIL, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MUD_SLAP, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, MOVE_ROCK_SMASH, MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, MOVE_SNATCH, + MOVE_SNORE, MOVE_STRENGTH, MOVE_SUNNY_DAY, MOVE_SURF, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, MOVE_TAUNT, MOVE_THIEF, MOVE_TORMENT, MOVE_TOXIC, MOVE_WATER_PULSE, - MOVE_COUNTER, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_ICE_PUNCH, - MOVE_ICY_WIND, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, - MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; @@ -10945,46 +10945,46 @@ static const u16 sWeavileTeachableLearnset[] = { MOVE_BLIZZARD, MOVE_BRICK_BREAK, MOVE_CALM_MIND, + MOVE_COUNTER, MOVE_CUT, MOVE_DIG, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FOCUS_PUNCH, + MOVE_FURY_CUTTER, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, MOVE_IRON_TAIL, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_METRONOME, + MOVE_MUD_SLAP, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, MOVE_ROCK_SMASH, MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, MOVE_SNATCH, + MOVE_SNORE, MOVE_STRENGTH, MOVE_SUNNY_DAY, MOVE_SURF, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, MOVE_TAUNT, MOVE_THIEF, MOVE_TORMENT, MOVE_TOXIC, MOVE_WATER_PULSE, - MOVE_COUNTER, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_ICE_PUNCH, - MOVE_ICY_WIND, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_METRONOME, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, - MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; #endif //P_GEN_4_CROSS_EVOS @@ -10995,7 +10995,9 @@ static const u16 sSneaselHisuiTeachableLearnset[] = { MOVE_BRICK_BREAK, MOVE_BULK_UP, MOVE_CALM_MIND, + MOVE_COUNTER, MOVE_DIG, + MOVE_ENDURE, MOVE_FACADE, MOVE_FOCUS_PUNCH, MOVE_IRON_TAIL, @@ -11004,16 +11006,14 @@ static const u16 sSneaselHisuiTeachableLearnset[] = { MOVE_REST, MOVE_ROCK_SMASH, MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, MOVE_SUNNY_DAY, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, MOVE_TAUNT, MOVE_THIEF, MOVE_TOXIC, - MOVE_COUNTER, - MOVE_ENDURE, - MOVE_SLEEP_TALK, - MOVE_SWIFT, - MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; @@ -11022,29 +11022,29 @@ static const u16 sSneaslerTeachableLearnset[] = { MOVE_BRICK_BREAK, MOVE_BULK_UP, MOVE_CALM_MIND, + MOVE_COUNTER, MOVE_DIG, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FIRE_PUNCH, MOVE_FOCUS_PUNCH, MOVE_HYPER_BEAM, MOVE_IRON_TAIL, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, MOVE_SUNNY_DAY, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, MOVE_TAUNT, MOVE_THIEF, MOVE_TOXIC, - MOVE_COUNTER, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SWIFT, - MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; #endif //P_HISUIAN_FORMS @@ -11054,166 +11054,166 @@ static const u16 sSneaslerTeachableLearnset[] = { static const u16 sTeddiursaTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULK_UP, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_BODY_SLAM, MOVE_COUNTER, + MOVE_CUT, MOVE_DEFENSE_CURL, + MOVE_DIG, MOVE_DOUBLE_EDGE, + MOVE_DOUBLE_TEAM, MOVE_DYNAMIC_PUNCH, + MOVE_EARTHQUAKE, MOVE_ENDURE, + MOVE_FACADE, MOVE_FIRE_PUNCH, + MOVE_FOCUS_PUNCH, MOVE_FURY_CUTTER, MOVE_ICE_PUNCH, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, MOVE_METRONOME, MOVE_MUD_SLAP, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_ROAR, MOVE_ROCK_SLIDE, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, MOVE_ROLLOUT, MOVE_SEISMIC_TOSS, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_TAUNT, + MOVE_THIEF, MOVE_THUNDER_PUNCH, + MOVE_TORMENT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sUrsaringTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULK_UP, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_BODY_SLAM, MOVE_COUNTER, + MOVE_CUT, MOVE_DEFENSE_CURL, + MOVE_DIG, MOVE_DOUBLE_EDGE, + MOVE_DOUBLE_TEAM, MOVE_DYNAMIC_PUNCH, + MOVE_EARTHQUAKE, MOVE_ENDURE, + MOVE_FACADE, MOVE_FIRE_PUNCH, + MOVE_FOCUS_PUNCH, MOVE_FURY_CUTTER, + MOVE_HYPER_BEAM, MOVE_ICE_PUNCH, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, MOVE_METRONOME, MOVE_MUD_SLAP, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_ROAR, MOVE_ROCK_SLIDE, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, MOVE_ROLLOUT, MOVE_SEISMIC_TOSS, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_TAUNT, + MOVE_THIEF, MOVE_THUNDER_PUNCH, + MOVE_TORMENT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #if P_GEN_8_CROSS_EVOS static const u16 sUrsalunaTeachableLearnset[] = { MOVE_AERIAL_ACE, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULK_UP, + MOVE_COUNTER, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FIRE_PUNCH, MOVE_FOCUS_PUNCH, + MOVE_FURY_CUTTER, MOVE_HYPER_BEAM, + MOVE_ICE_PUNCH, + MOVE_METRONOME, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_FURY_CUTTER, - MOVE_ICE_PUNCH, - MOVE_METRONOME, - MOVE_ROCK_SLIDE, MOVE_SEISMIC_TOSS, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SUNNY_DAY, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_TAUNT, + MOVE_THIEF, MOVE_THUNDER_PUNCH, MOVE_UNAVAILABLE, }; static const u16 sUrsalunaBloodmoonTeachableLearnset[] = { + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_CALM_MIND, + MOVE_COUNTER, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FIRE_PUNCH, MOVE_FOCUS_PUNCH, + MOVE_FURY_CUTTER, MOVE_HYPER_BEAM, + MOVE_ICE_PUNCH, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROAR, - MOVE_ROCK_TOMB, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_FURY_CUTTER, - MOVE_ICE_PUNCH, MOVE_ROCK_SLIDE, + MOVE_ROCK_TOMB, MOVE_SEISMIC_TOSS, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SUNNY_DAY, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_TAUNT, + MOVE_THIEF, MOVE_THUNDER_PUNCH, MOVE_UNAVAILABLE, }; @@ -11223,65 +11223,65 @@ static const u16 sUrsalunaBloodmoonTeachableLearnset[] = { #if P_FAMILY_SLUGMA static const u16 sSlugmaTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, MOVE_LIGHT_SCREEN, + MOVE_MUD_SLAP, MOVE_OVERHEAT, MOVE_PROTECT, MOVE_REFLECT, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, MOVE_ROLLOUT, + MOVE_SANDSTORM, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SUNNY_DAY, MOVE_SWAGGER, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sMagcargoTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, + MOVE_EXPLOSION, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, MOVE_HYPER_BEAM, MOVE_LIGHT_SCREEN, + MOVE_MUD_SLAP, MOVE_OVERHEAT, MOVE_PROTECT, MOVE_REFLECT, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, + MOVE_ROLLOUT, MOVE_SANDSTORM, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_STRENGTH, MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_EXPLOSION, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, - MOVE_ROLLOUT, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_SLUGMA @@ -11290,67 +11290,67 @@ static const u16 sMagcargoTeachableLearnset[] = { static const u16 sSwinubTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, + MOVE_DEFENSE_CURL, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_HAIL, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_LIGHT_SCREEN, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SANDSTORM, - MOVE_STRENGTH, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, MOVE_SWAGGER, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sPiloswineTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, + MOVE_DEFENSE_CURL, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_LIGHT_SCREEN, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SANDSTORM, - MOVE_STRENGTH, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, MOVE_SWAGGER, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; @@ -11358,34 +11358,34 @@ static const u16 sPiloswineTeachableLearnset[] = { static const u16 sMamoswineTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FURY_CUTTER, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_LIGHT_SCREEN, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SANDSTORM, - MOVE_STRENGTH, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, MOVE_SWAGGER, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_GEN_4_CROSS_EVOS @@ -11395,41 +11395,41 @@ static const u16 sMamoswineTeachableLearnset[] = { static const u16 sCorsolaTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_CALM_MIND, + MOVE_DEFENSE_CURL, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, + MOVE_EXPLOSION, MOVE_FACADE, MOVE_HAIL, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_LIGHT_SCREEN, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_PSYCHIC, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, + MOVE_ROLLOUT, MOVE_SAFEGUARD, MOVE_SANDSTORM, MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_STRENGTH, MOVE_SUNNY_DAY, MOVE_SURF, + MOVE_SWAGGER, MOVE_TOXIC, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_EXPLOSION, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, - MOVE_ROLLOUT, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, MOVE_UNAVAILABLE, }; @@ -11437,65 +11437,65 @@ static const u16 sCorsolaTeachableLearnset[] = { static const u16 sCorsolaGalarTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_CALM_MIND, MOVE_DIG, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_GIGA_DRAIN, MOVE_HAIL, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_LIGHT_SCREEN, MOVE_PROTECT, MOVE_PSYCHIC, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_TOMB, MOVE_SAFEGUARD, MOVE_SANDSTORM, MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SUNNY_DAY, MOVE_SURF, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_UNAVAILABLE, }; static const u16 sCursolaTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_CALM_MIND, MOVE_DIG, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_GIGA_DRAIN, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_LIGHT_SCREEN, MOVE_PROTECT, MOVE_PSYCHIC, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_TOMB, MOVE_SAFEGUARD, MOVE_SANDSTORM, MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SUNNY_DAY, MOVE_SURF, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_UNAVAILABLE, }; #endif //P_GALARIAN_FORMS @@ -11506,33 +11506,33 @@ static const u16 sRemoraidTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_BULLET_SEED, + MOVE_DEFENSE_CURL, MOVE_DIVE, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_PSYCHIC, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SUNNY_DAY, MOVE_SURF, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_THIEF, + MOVE_THUNDER_WAVE, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, - MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; @@ -11540,35 +11540,35 @@ static const u16 sOctilleryTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_BULLET_SEED, + MOVE_DEFENSE_CURL, MOVE_DIVE, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_PSYCHIC, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_SUNNY_DAY, MOVE_SURF, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_THIEF, + MOVE_THUNDER_WAVE, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, - MOVE_SEISMIC_TOSS, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, - MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_REMORAID @@ -11578,36 +11578,36 @@ static const u16 sDelibirdTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLY, MOVE_FOCUS_PUNCH, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_STEEL_WING, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, MOVE_ICE_PUNCH, MOVE_ICY_WIND, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, MOVE_MUD_SLAP, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, MOVE_ROLLOUT, MOVE_SEISMIC_TOSS, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STEEL_WING, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_DELIBIRD @@ -11619,27 +11619,27 @@ static const u16 sMantykeTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DIVE, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_HAIL, MOVE_ICE_BEAM, + MOVE_ICY_WIND, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, MOVE_ROCK_SLIDE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SURF, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; #endif //P_GEN_4_CROSS_EVOS @@ -11648,32 +11648,32 @@ static const u16 sMantineTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_BULLET_SEED, MOVE_DIVE, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_TOMB, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SURF, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_MANTINE @@ -11682,36 +11682,36 @@ static const u16 sMantineTeachableLearnset[] = { static const u16 sSkarmoryTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_COUNTER, MOVE_CUT, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_FLY, + MOVE_FURY_CUTTER, MOVE_HYPER_BEAM, + MOVE_ICY_WIND, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SANDSTORM, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_STEEL_WING, MOVE_SUNNY_DAY, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, MOVE_TAUNT, MOVE_THIEF, MOVE_TORMENT, MOVE_TOXIC, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, - MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_SKARMORY @@ -11719,11 +11719,17 @@ static const u16 sSkarmoryTeachableLearnset[] = { #if P_FAMILY_HOUNDOUR static const u16 sHoundourTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_OVERHEAT, MOVE_PROTECT, MOVE_RAIN_DANCE, @@ -11731,35 +11737,35 @@ static const u16 sHoundourTeachableLearnset[] = { MOVE_ROAR, MOVE_ROCK_SMASH, MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, MOVE_SNATCH, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_TAUNT, MOVE_THIEF, MOVE_TORMENT, MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_UNAVAILABLE, }; static const u16 sHoundoomTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, MOVE_HYPER_BEAM, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_OVERHEAT, MOVE_PROTECT, MOVE_RAIN_DANCE, @@ -11767,25 +11773,19 @@ static const u16 sHoundoomTeachableLearnset[] = { MOVE_ROAR, MOVE_ROCK_SMASH, MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, MOVE_SNATCH, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_STRENGTH, MOVE_SUNNY_DAY, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_TAUNT, MOVE_THIEF, MOVE_TORMENT, MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_HOUNDOUR @@ -11793,66 +11793,66 @@ static const u16 sHoundoomTeachableLearnset[] = { #if P_FAMILY_PHANPY static const u16 sPhanpyTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, MOVE_ROLLOUT, + MOVE_SANDSTORM, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, + MOVE_THIEF, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sDonphanTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_HYPER_BEAM, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, MOVE_ROLLOUT, + MOVE_SANDSTORM, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, + MOVE_THIEF, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_PHANPY @@ -11860,17 +11860,23 @@ static const u16 sDonphanTeachableLearnset[] = { #if P_FAMILY_STANTLER static const u16 sStantlerTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_CALM_MIND, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_HYPER_BEAM, MOVE_IRON_TAIL, MOVE_LIGHT_SCREEN, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, @@ -11878,54 +11884,48 @@ static const u16 sStantlerTeachableLearnset[] = { MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, MOVE_SKILL_SWAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_THIEF, MOVE_THUNDER, MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #if P_GEN_8_CROSS_EVOS static const u16 sWyrdeerTeachableLearnset[] = { + MOVE_BODY_SLAM, MOVE_CALM_MIND, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_HYPER_BEAM, MOVE_IRON_TAIL, MOVE_LIGHT_SCREEN, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, MOVE_ROAR, MOVE_SHADOW_BALL, MOVE_SKILL_SWAP, + MOVE_SLEEP_TALK, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, + MOVE_SWIFT, MOVE_THIEF, MOVE_THUNDER, MOVE_THUNDERBOLT, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SWIFT, MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; @@ -11942,68 +11942,73 @@ static const u16 sSmeargleTeachableLearnset[] = { static const u16 sMiltankTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATER_PULSE, MOVE_BODY_SLAM, + MOVE_BRICK_BREAK, MOVE_COUNTER, MOVE_DEFENSE_CURL, MOVE_DOUBLE_EDGE, + MOVE_DOUBLE_TEAM, MOVE_DYNAMIC_PUNCH, + MOVE_EARTHQUAKE, MOVE_ENDURE, + MOVE_FACADE, MOVE_FIRE_PUNCH, + MOVE_FOCUS_PUNCH, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, MOVE_ICE_PUNCH, MOVE_ICY_WIND, + MOVE_IRON_TAIL, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, MOVE_METRONOME, MOVE_MUD_SLAP, + MOVE_PROTECT, MOVE_PSYCH_UP, + MOVE_RAIN_DANCE, + MOVE_REST, MOVE_ROCK_SLIDE, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, MOVE_ROLLOUT, + MOVE_SANDSTORM, MOVE_SEISMIC_TOSS, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, MOVE_SWAGGER, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, + MOVE_TOXIC, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_MILTANK #if P_FAMILY_RAIKOU static const u16 sRaikouTeachableLearnset[] = { + MOVE_BODY_SLAM, MOVE_CALM_MIND, MOVE_CUT, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_HYPER_BEAM, MOVE_IRON_TAIL, MOVE_LIGHT_SCREEN, + MOVE_MUD_SLAP, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, @@ -12012,39 +12017,39 @@ static const u16 sRaikouTeachableLearnset[] = { MOVE_SANDSTORM, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_RAIKOU #if P_FAMILY_ENTEI static const u16 sEnteiTeachableLearnset[] = { + MOVE_BODY_SLAM, MOVE_CALM_MIND, MOVE_CUT, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, MOVE_FLASH, MOVE_HYPER_BEAM, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_OVERHEAT, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, @@ -12052,19 +12057,14 @@ static const u16 sEnteiTeachableLearnset[] = { MOVE_ROCK_SMASH, MOVE_SANDSTORM, MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_STRENGTH, MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_ENTEI @@ -12072,17 +12072,23 @@ static const u16 sEnteiTeachableLearnset[] = { #if P_FAMILY_SUICUNE static const u16 sSuicuneTeachableLearnset[] = { MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_CALM_MIND, MOVE_CUT, MOVE_DIG, MOVE_DIVE, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, @@ -12090,21 +12096,15 @@ static const u16 sSuicuneTeachableLearnset[] = { MOVE_ROCK_SMASH, MOVE_SANDSTORM, MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SUNNY_DAY, MOVE_SURF, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_SUICUNE @@ -12112,62 +12112,62 @@ static const u16 sSuicuneTeachableLearnset[] = { #if P_FAMILY_LARVITAR static const u16 sLarvitarTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_HYPER_BEAM, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SANDSTORM, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SUNNY_DAY, + MOVE_SWAGGER, MOVE_TAUNT, MOVE_TORMENT, MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, MOVE_UNAVAILABLE, }; static const u16 sPupitarTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_HYPER_BEAM, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SANDSTORM, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SUNNY_DAY, + MOVE_SWAGGER, MOVE_TAUNT, MOVE_TORMENT, MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, MOVE_UNAVAILABLE, }; @@ -12175,55 +12175,55 @@ static const u16 sTyranitarTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, + MOVE_COUNTER, MOVE_CUT, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_DRAGON_CLAW, + MOVE_DYNAMIC_PUNCH, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, + MOVE_FIRE_PUNCH, MOVE_FLAMETHROWER, MOVE_FOCUS_PUNCH, + MOVE_FURY_CUTTER, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, MOVE_IRON_TAIL, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SANDSTORM, + MOVE_SEISMIC_TOSS, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_STRENGTH, MOVE_SUNNY_DAY, MOVE_SURF, + MOVE_SWAGGER, MOVE_TAUNT, MOVE_THUNDER, MOVE_THUNDERBOLT, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, MOVE_TORMENT, MOVE_TOXIC, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_FURY_CUTTER, - MOVE_ICE_PUNCH, - MOVE_ICY_WIND, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, - MOVE_SEISMIC_TOSS, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_THUNDER_PUNCH, - MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_LARVITAR @@ -12232,10 +12232,14 @@ static const u16 sTyranitarTeachableLearnset[] = { static const u16 sLugiaTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_CALM_MIND, MOVE_DIVE, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_FLY, @@ -12243,10 +12247,13 @@ static const u16 sLugiaTeachableLearnset[] = { MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_IRON_TAIL, MOVE_LIGHT_SCREEN, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, @@ -12257,27 +12264,20 @@ static const u16 sLugiaTeachableLearnset[] = { MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, MOVE_SKILL_SWAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_STEEL_WING, MOVE_STRENGTH, MOVE_SUNNY_DAY, MOVE_SURF, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_THUNDER, MOVE_THUNDERBOLT, + MOVE_THUNDER_WAVE, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, - MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_LUGIA @@ -12285,9 +12285,13 @@ static const u16 sLugiaTeachableLearnset[] = { #if P_FAMILY_HO_OH static const u16 sHoOhTeachableLearnset[] = { MOVE_AERIAL_ACE, + MOVE_BODY_SLAM, MOVE_CALM_MIND, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, @@ -12296,9 +12300,11 @@ static const u16 sHoOhTeachableLearnset[] = { MOVE_GIGA_DRAIN, MOVE_HYPER_BEAM, MOVE_LIGHT_SCREEN, + MOVE_MUD_SLAP, MOVE_OVERHEAT, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, @@ -12308,24 +12314,18 @@ static const u16 sHoOhTeachableLearnset[] = { MOVE_SANDSTORM, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_STEEL_WING, MOVE_STRENGTH, MOVE_SUNNY_DAY, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_HO_OH @@ -12335,14 +12335,21 @@ static const u16 sCelebiTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_CALM_MIND, MOVE_CUT, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_GIGA_DRAIN, MOVE_HYPER_BEAM, MOVE_LIGHT_SCREEN, + MOVE_METRONOME, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, @@ -12351,23 +12358,16 @@ static const u16 sCelebiTeachableLearnset[] = { MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, MOVE_SKILL_SWAP, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_METRONOME, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, MOVE_SWORDS_DANCE, MOVE_THUNDER_WAVE, + MOVE_TOXIC, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_CELEBI @@ -12376,133 +12376,133 @@ static const u16 sCelebiTeachableLearnset[] = { static const u16 sTreeckoTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULLET_SEED, + MOVE_COUNTER, MOVE_CUT, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_FOCUS_PUNCH, + MOVE_FURY_CUTTER, MOVE_GIGA_DRAIN, MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_FURY_CUTTER, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, MOVE_MUD_SLAP, + MOVE_PROTECT, + MOVE_REST, MOVE_ROCK_SLIDE, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, MOVE_SEISMIC_TOSS, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_THIEF, MOVE_THUNDER_PUNCH, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sGrovyleTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULLET_SEED, + MOVE_COUNTER, MOVE_CUT, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_FOCUS_PUNCH, + MOVE_FURY_CUTTER, MOVE_GIGA_DRAIN, MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_FURY_CUTTER, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, MOVE_MUD_SLAP, + MOVE_PROTECT, + MOVE_REST, MOVE_ROCK_SLIDE, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, MOVE_SEISMIC_TOSS, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_THIEF, MOVE_THUNDER_PUNCH, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sSceptileTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULLET_SEED, + MOVE_COUNTER, MOVE_CUT, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_DRAGON_CLAW, + MOVE_DYNAMIC_PUNCH, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_FOCUS_PUNCH, + MOVE_FURY_CUTTER, MOVE_GIGA_DRAIN, MOVE_HYPER_BEAM, MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_REST, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_FURY_CUTTER, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, MOVE_MUD_SLAP, + MOVE_PROTECT, + MOVE_REST, + MOVE_ROAR, MOVE_ROCK_SLIDE, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, MOVE_SEISMIC_TOSS, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_THIEF, MOVE_THUNDER_PUNCH, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_TREECKO @@ -12511,122 +12511,122 @@ static const u16 sSceptileTeachableLearnset[] = { static const u16 sTorchicTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, + MOVE_COUNTER, MOVE_CUT, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, MOVE_MUD_SLAP, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REST, MOVE_ROCK_SLIDE, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, MOVE_SEISMIC_TOSS, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sCombuskenTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULK_UP, + MOVE_COUNTER, MOVE_CUT, MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FOCUS_PUNCH, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_COUNTER, MOVE_DOUBLE_EDGE, + MOVE_DOUBLE_TEAM, MOVE_DYNAMIC_PUNCH, MOVE_ENDURE, + MOVE_FACADE, + MOVE_FIRE_BLAST, MOVE_FIRE_PUNCH, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, MOVE_FURY_CUTTER, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, MOVE_MUD_SLAP, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REST, MOVE_ROCK_SLIDE, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, MOVE_SEISMIC_TOSS, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_THIEF, MOVE_THUNDER_PUNCH, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sBlazikenTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULK_UP, + MOVE_COUNTER, MOVE_CUT, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DYNAMIC_PUNCH, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, + MOVE_FIRE_PUNCH, MOVE_FLAMETHROWER, MOVE_FOCUS_PUNCH, + MOVE_FURY_CUTTER, MOVE_HYPER_BEAM, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MUD_SLAP, MOVE_OVERHEAT, MOVE_PROTECT, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_FURY_CUTTER, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, MOVE_SEISMIC_TOSS, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_THIEF, MOVE_THUNDER_PUNCH, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_TORCHIC @@ -12635,126 +12635,126 @@ static const u16 sBlazikenTeachableLearnset[] = { static const u16 sMudkipTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, MOVE_DIG, MOVE_DIVE, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_HAIL, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, - MOVE_STRENGTH, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, MOVE_ROLLOUT, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SURF, MOVE_SWAGGER, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; static const u16 sMarshtompTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, MOVE_DIG, MOVE_DIVE, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DYNAMIC_PUNCH, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FOCUS_PUNCH, MOVE_HAIL, MOVE_ICE_BEAM, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, MOVE_IRON_TAIL, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, - MOVE_STRENGTH, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_ICE_PUNCH, - MOVE_ICY_WIND, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, MOVE_ROLLOUT, MOVE_SEISMIC_TOSS, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SURF, MOVE_SWAGGER, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; static const u16 sSwampertTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULK_UP, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, MOVE_DIG, MOVE_DIVE, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DYNAMIC_PUNCH, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FOCUS_PUNCH, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, MOVE_IRON_TAIL, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, - MOVE_STRENGTH, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_ICE_PUNCH, - MOVE_ICY_WIND, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, MOVE_ROLLOUT, MOVE_SEISMIC_TOSS, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SURF, MOVE_SWAGGER, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_MUDKIP @@ -12762,63 +12762,63 @@ static const u16 sSwampertTeachableLearnset[] = { #if P_FAMILY_POOCHYENA static const u16 sPoochyenaTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, + MOVE_COUNTER, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROAR, MOVE_ROCK_SMASH, MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, MOVE_SNATCH, + MOVE_SNORE, MOVE_SUNNY_DAY, + MOVE_SWAGGER, MOVE_TAUNT, MOVE_THIEF, MOVE_TORMENT, MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, MOVE_UNAVAILABLE, }; static const u16 sMightyenaTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, + MOVE_COUNTER, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_HYPER_BEAM, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROAR, MOVE_ROCK_SMASH, MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, MOVE_SNATCH, + MOVE_SNORE, MOVE_STRENGTH, MOVE_SUNNY_DAY, + MOVE_SWAGGER, MOVE_TAUNT, MOVE_THIEF, MOVE_TORMENT, MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_POOCHYENA @@ -12827,79 +12827,79 @@ static const u16 sMightyenaTeachableLearnset[] = { static const u16 sZigzagoonTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_CUT, + MOVE_DEFENSE_CURL, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FURY_CUTTER, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROCK_SMASH, + MOVE_ROLLOUT, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SUNNY_DAY, MOVE_SURF, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_THIEF, MOVE_THUNDER, MOVE_THUNDERBOLT, + MOVE_THUNDER_WAVE, MOVE_TOXIC, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, - MOVE_ROLLOUT, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, - MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; static const u16 sLinooneTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_CUT, + MOVE_DEFENSE_CURL, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FURY_CUTTER, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROAR, MOVE_ROCK_SMASH, + MOVE_ROLLOUT, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_STRENGTH, MOVE_SUNNY_DAY, MOVE_SURF, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_THIEF, MOVE_THUNDER, MOVE_THUNDERBOLT, + MOVE_THUNDER_WAVE, MOVE_TOXIC, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, - MOVE_ROLLOUT, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, - MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; @@ -12907,28 +12907,28 @@ static const u16 sLinooneTeachableLearnset[] = { static const u16 sZigzagoonGalarTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, + MOVE_COUNTER, MOVE_DIG, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, MOVE_FACADE, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_IRON_TAIL, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SUNNY_DAY, MOVE_SURF, + MOVE_SWIFT, MOVE_TAUNT, MOVE_THIEF, MOVE_THUNDER, MOVE_THUNDERBOLT, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWIFT, MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; @@ -12936,29 +12936,29 @@ static const u16 sZigzagoonGalarTeachableLearnset[] = { static const u16 sLinooneGalarTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, + MOVE_COUNTER, MOVE_DIG, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, MOVE_FACADE, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_IRON_TAIL, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SUNNY_DAY, MOVE_SURF, + MOVE_SWIFT, MOVE_TAUNT, MOVE_THIEF, MOVE_THUNDER, MOVE_THUNDERBOLT, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWIFT, MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; @@ -12966,35 +12966,35 @@ static const u16 sLinooneGalarTeachableLearnset[] = { static const u16 sObstagoonTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULK_UP, + MOVE_COUNTER, MOVE_DIG, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FIRE_PUNCH, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, MOVE_IRON_TAIL, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SUNNY_DAY, MOVE_SURF, + MOVE_SWIFT, MOVE_TAUNT, MOVE_THIEF, MOVE_THUNDER, MOVE_THUNDERBOLT, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_ICE_PUNCH, - MOVE_ICY_WIND, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWIFT, MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, @@ -13015,7 +13015,9 @@ static const u16 sSilcoonTeachableLearnset[] = { static const u16 sBeautiflyTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_GIGA_DRAIN, @@ -13025,16 +13027,14 @@ static const u16 sBeautiflyTeachableLearnset[] = { MOVE_REST, MOVE_SAFEGUARD, MOVE_SHADOW_BALL, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_THIEF, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; @@ -13045,7 +13045,9 @@ static const u16 sCascoonTeachableLearnset[] = { static const u16 sDustoxTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_GIGA_DRAIN, @@ -13055,17 +13057,15 @@ static const u16 sDustoxTeachableLearnset[] = { MOVE_PSYCHIC, MOVE_REST, MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_THIEF, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_WURMPLE @@ -13074,123 +13074,123 @@ static const u16 sDustoxTeachableLearnset[] = { static const u16 sLotadTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_BULLET_SEED, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_GIGA_DRAIN, MOVE_HAIL, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, MOVE_SURF, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, MOVE_THIEF, MOVE_TOXIC, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; static const u16 sLombreTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULLET_SEED, + MOVE_COUNTER, MOVE_DIVE, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FIRE_PUNCH, MOVE_FLASH, MOVE_GIGA_DRAIN, MOVE_HAIL, MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH, MOVE_ICY_WIND, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, MOVE_METRONOME, MOVE_MUD_SLAP, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_ROCK_SMASH, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, MOVE_SWAGGER, MOVE_SWORDS_DANCE, + MOVE_THIEF, MOVE_THUNDER_PUNCH, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; static const u16 sLudicoloTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULLET_SEED, + MOVE_COUNTER, MOVE_DIVE, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FIRE_PUNCH, MOVE_FLASH, MOVE_FOCUS_PUNCH, MOVE_GIGA_DRAIN, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH, MOVE_ICY_WIND, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, MOVE_METRONOME, MOVE_MUD_SLAP, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_ROCK_SMASH, MOVE_SEISMIC_TOSS, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, MOVE_SWAGGER, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_THIEF, MOVE_THUNDER_PUNCH, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_LOTAD @@ -13198,9 +13198,14 @@ static const u16 sLudicoloTeachableLearnset[] = { #if P_FAMILY_SEEDOT static const u16 sSeedotTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BULLET_SEED, + MOVE_DEFENSE_CURL, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, + MOVE_EXPLOSION, MOVE_FACADE, MOVE_FLASH, MOVE_GIGA_DRAIN, @@ -13208,107 +13213,102 @@ static const u16 sSeedotTeachableLearnset[] = { MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROCK_SMASH, - MOVE_SHADOW_BALL, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_EXPLOSION, MOVE_ROLLOUT, + MOVE_SHADOW_BALL, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWORDS_DANCE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sNuzleafTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULLET_SEED, MOVE_CUT, + MOVE_DEFENSE_CURL, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, + MOVE_EXPLOSION, MOVE_FACADE, MOVE_FLASH, + MOVE_FURY_CUTTER, MOVE_GIGA_DRAIN, MOVE_HYPER_BEAM, + MOVE_MEGA_KICK, + MOVE_MUD_SLAP, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, + MOVE_ROLLOUT, MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_STRENGTH, MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_EXPLOSION, - MOVE_FURY_CUTTER, - MOVE_MEGA_KICK, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_ROCK_SLIDE, - MOVE_ROLLOUT, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sShiftryTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULLET_SEED, MOVE_CUT, + MOVE_DEFENSE_CURL, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, + MOVE_EXPLOSION, MOVE_FACADE, MOVE_FLASH, + MOVE_FURY_CUTTER, MOVE_GIGA_DRAIN, MOVE_HYPER_BEAM, + MOVE_ICY_WIND, + MOVE_MEGA_KICK, + MOVE_MUD_SLAP, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, + MOVE_ROLLOUT, MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_STRENGTH, MOVE_SUNNY_DAY, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, MOVE_TAUNT, MOVE_THIEF, MOVE_TORMENT, MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_EXPLOSION, - MOVE_FURY_CUTTER, - MOVE_ICY_WIND, - MOVE_MEGA_KICK, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_ROCK_SLIDE, - MOVE_ROLLOUT, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, - MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_SEEDOT @@ -13317,49 +13317,49 @@ static const u16 sShiftryTeachableLearnset[] = { static const u16 sTaillowTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLY, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MUD_SLAP, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_THIEF, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sSwellowTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLY, MOVE_HYPER_BEAM, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MUD_SLAP, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_THIEF, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_TAILLOW @@ -13369,29 +13369,29 @@ static const u16 sWingullTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLY, MOVE_HAIL, MOVE_ICE_BEAM, + MOVE_ICY_WIND, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_STEEL_WING, MOVE_SURF, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_THIEF, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_UNAVAILABLE, }; @@ -13399,31 +13399,31 @@ static const u16 sPelipperTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLY, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_STEEL_WING, MOVE_SURF, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_THIEF, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_WINGULL @@ -13431,14 +13431,27 @@ static const u16 sPelipperTeachableLearnset[] = { #if P_FAMILY_RALTS static const u16 sRaltsTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_CALM_MIND, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FIRE_PUNCH, MOVE_FLASH, MOVE_ICE_BEAM, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, MOVE_LIGHT_SCREEN, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_METRONOME, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, @@ -13446,46 +13459,46 @@ static const u16 sRaltsTeachableLearnset[] = { MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, MOVE_SKILL_SWAP, + MOVE_SLEEP_TALK, MOVE_SNATCH, + MOVE_SNORE, MOVE_SUNNY_DAY, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_TAUNT, MOVE_THIEF, MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_ICE_PUNCH, - MOVE_ICY_WIND, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_METRONOME, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, + MOVE_TORMENT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sKirliaTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_CALM_MIND, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FIRE_PUNCH, MOVE_FLASH, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, MOVE_LIGHT_SCREEN, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_METRONOME, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, @@ -13493,46 +13506,46 @@ static const u16 sKirliaTeachableLearnset[] = { MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, MOVE_SKILL_SWAP, + MOVE_SLEEP_TALK, MOVE_SNATCH, + MOVE_SNORE, MOVE_SUNNY_DAY, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_TAUNT, MOVE_THIEF, MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_ICE_PUNCH, - MOVE_ICY_WIND, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_METRONOME, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, + MOVE_TORMENT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sGardevoirTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_CALM_MIND, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FIRE_PUNCH, MOVE_FLASH, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, MOVE_LIGHT_SCREEN, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_METRONOME, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, @@ -13540,32 +13553,19 @@ static const u16 sGardevoirTeachableLearnset[] = { MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, MOVE_SKILL_SWAP, + MOVE_SLEEP_TALK, MOVE_SNATCH, + MOVE_SNORE, MOVE_SUNNY_DAY, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_TAUNT, MOVE_THIEF, MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_ICE_PUNCH, - MOVE_ICY_WIND, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_METRONOME, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, + MOVE_TORMENT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; @@ -13573,57 +13573,57 @@ static const u16 sGardevoirTeachableLearnset[] = { static const u16 sGalladeTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULK_UP, MOVE_CALM_MIND, MOVE_CUT, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FIRE_PUNCH, MOVE_FLASH, MOVE_FOCUS_PUNCH, + MOVE_FURY_CUTTER, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, MOVE_LIGHT_SCREEN, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_METRONOME, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SAFEGUARD, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, MOVE_SKILL_SWAP, + MOVE_SLEEP_TALK, MOVE_SNATCH, + MOVE_SNORE, MOVE_STRENGTH, MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_FURY_CUTTER, - MOVE_ICE_PUNCH, - MOVE_ICY_WIND, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_METRONOME, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDERBOLT, MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, + MOVE_TORMENT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_GEN_4_CROSS_EVOS @@ -13633,31 +13633,31 @@ static const u16 sGalladeTeachableLearnset[] = { static const u16 sSurskitTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_GIGA_DRAIN, MOVE_ICE_BEAM, + MOVE_ICY_WIND, + MOVE_MUD_SLAP, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, MOVE_SURF, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_THIEF, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_UNAVAILABLE, }; @@ -13665,32 +13665,32 @@ static const u16 sMasquerainTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_GIGA_DRAIN, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, + MOVE_MUD_SLAP, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, MOVE_SURF, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_THIEF, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_SURSKIT @@ -13698,8 +13698,11 @@ static const u16 sMasquerainTeachableLearnset[] = { #if P_FAMILY_SHROOMISH static const u16 sShroomishTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BULLET_SEED, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_FOCUS_PUNCH, @@ -13708,66 +13711,63 @@ static const u16 sShroomishTeachableLearnset[] = { MOVE_RAIN_DANCE, MOVE_REST, MOVE_SAFEGUARD, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, MOVE_SNATCH, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sBreloomTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULK_UP, MOVE_BULLET_SEED, + MOVE_COUNTER, MOVE_CUT, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_FOCUS_PUNCH, + MOVE_FURY_CUTTER, MOVE_GIGA_DRAIN, MOVE_HYPER_BEAM, MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SLUDGE_BOMB, - MOVE_SNATCH, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_FURY_CUTTER, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, MOVE_MUD_SLAP, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, MOVE_ROCK_SLIDE, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, MOVE_SEISMIC_TOSS, MOVE_SLEEP_TALK, + MOVE_SLUDGE_BOMB, + MOVE_SNATCH, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, MOVE_SWORDS_DANCE, MOVE_THUNDER_PUNCH, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_SHROOMISH @@ -13777,49 +13777,49 @@ static const u16 sSlakothTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULK_UP, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FOCUS_PUNCH, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, MOVE_COUNTER, + MOVE_CUT, MOVE_DOUBLE_EDGE, + MOVE_DOUBLE_TEAM, MOVE_DYNAMIC_PUNCH, MOVE_ENDURE, + MOVE_FACADE, + MOVE_FIRE_BLAST, MOVE_FIRE_PUNCH, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, MOVE_FURY_CUTTER, + MOVE_ICE_BEAM, MOVE_ICE_PUNCH, MOVE_ICY_WIND, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, MOVE_METRONOME, MOVE_MUD_SLAP, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, MOVE_ROCK_SLIDE, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, MOVE_SEISMIC_TOSS, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_PUNCH, + MOVE_TOXIC, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; @@ -13827,54 +13827,54 @@ static const u16 sVigorothTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULK_UP, + MOVE_COUNTER, MOVE_CUT, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DYNAMIC_PUNCH, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, + MOVE_FIRE_PUNCH, MOVE_FLAMETHROWER, MOVE_FOCUS_PUNCH, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, MOVE_FURY_CUTTER, + MOVE_ICE_BEAM, MOVE_ICE_PUNCH, MOVE_ICY_WIND, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, MOVE_METRONOME, MOVE_MUD_SLAP, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_ROAR, MOVE_ROCK_SLIDE, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, MOVE_SEISMIC_TOSS, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, + MOVE_TOXIC, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; @@ -13882,55 +13882,55 @@ static const u16 sSlakingTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULK_UP, + MOVE_COUNTER, MOVE_CUT, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DYNAMIC_PUNCH, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, + MOVE_FIRE_PUNCH, MOVE_FLAMETHROWER, MOVE_FOCUS_PUNCH, + MOVE_FURY_CUTTER, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_FURY_CUTTER, MOVE_ICE_PUNCH, MOVE_ICY_WIND, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, MOVE_METRONOME, MOVE_MUD_SLAP, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_ROAR, MOVE_ROCK_SLIDE, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, MOVE_SEISMIC_TOSS, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, + MOVE_TOXIC, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_SLAKOTH @@ -13940,24 +13940,24 @@ static const u16 sNincadaTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_CUT, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, + MOVE_FURY_CUTTER, MOVE_GIGA_DRAIN, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_REST, MOVE_SANDSTORM, MOVE_SHADOW_BALL, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_MUD_SLAP, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, MOVE_SWAGGER, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; @@ -13966,28 +13966,28 @@ static const u16 sNinjaskTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CUT, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, + MOVE_FURY_CUTTER, MOVE_GIGA_DRAIN, MOVE_HYPER_BEAM, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_REST, MOVE_SANDSTORM, MOVE_SHADOW_BALL, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_MUD_SLAP, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_THIEF, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; @@ -13995,27 +13995,27 @@ static const u16 sShedinjaTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_CUT, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, + MOVE_FURY_CUTTER, MOVE_GIGA_DRAIN, MOVE_HYPER_BEAM, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_REST, MOVE_SANDSTORM, MOVE_SHADOW_BALL, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_MUD_SLAP, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, MOVE_SWAGGER, + MOVE_THIEF, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_NINCADA @@ -14024,140 +14024,140 @@ static const u16 sShedinjaTeachableLearnset[] = { static const u16 sWhismurTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_ROAR, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_WATER_PULSE, MOVE_BODY_SLAM, MOVE_COUNTER, MOVE_DEFENSE_CURL, MOVE_DOUBLE_EDGE, + MOVE_DOUBLE_TEAM, MOVE_DYNAMIC_PUNCH, MOVE_ENDURE, + MOVE_FACADE, + MOVE_FIRE_BLAST, MOVE_FIRE_PUNCH, + MOVE_FLAMETHROWER, + MOVE_ICE_BEAM, MOVE_ICE_PUNCH, MOVE_ICY_WIND, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, MOVE_MUD_SLAP, + MOVE_PROTECT, MOVE_PSYCH_UP, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_ROAR, MOVE_ROLLOUT, MOVE_SEISMIC_TOSS, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_THUNDER_PUNCH, + MOVE_TOXIC, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; static const u16 sLoudredTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_ICE_BEAM, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_WATER_PULSE, MOVE_BODY_SLAM, + MOVE_BRICK_BREAK, MOVE_COUNTER, MOVE_DEFENSE_CURL, MOVE_DOUBLE_EDGE, + MOVE_DOUBLE_TEAM, MOVE_DYNAMIC_PUNCH, + MOVE_EARTHQUAKE, MOVE_ENDURE, + MOVE_FACADE, + MOVE_FIRE_BLAST, MOVE_FIRE_PUNCH, + MOVE_FLAMETHROWER, + MOVE_ICE_BEAM, MOVE_ICE_PUNCH, MOVE_ICY_WIND, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, MOVE_MUD_SLAP, + MOVE_OVERHEAT, + MOVE_PROTECT, MOVE_PSYCH_UP, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_ROAR, MOVE_ROCK_SLIDE, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, MOVE_ROLLOUT, MOVE_SEISMIC_TOSS, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, + MOVE_TAUNT, MOVE_THUNDER_PUNCH, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; static const u16 sExploudTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_TAUNT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_WATER_PULSE, MOVE_BODY_SLAM, + MOVE_BRICK_BREAK, MOVE_COUNTER, MOVE_DEFENSE_CURL, MOVE_DOUBLE_EDGE, + MOVE_DOUBLE_TEAM, MOVE_DYNAMIC_PUNCH, + MOVE_EARTHQUAKE, MOVE_ENDURE, + MOVE_FACADE, + MOVE_FIRE_BLAST, MOVE_FIRE_PUNCH, + MOVE_FLAMETHROWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, MOVE_ICE_PUNCH, MOVE_ICY_WIND, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, MOVE_MUD_SLAP, + MOVE_OVERHEAT, + MOVE_PROTECT, MOVE_PSYCH_UP, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_ROAR, MOVE_ROCK_SLIDE, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, MOVE_ROLLOUT, MOVE_SEISMIC_TOSS, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, MOVE_SWAGGER, + MOVE_TAUNT, MOVE_THUNDER_PUNCH, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_WHISMUR @@ -14165,84 +14165,84 @@ static const u16 sExploudTeachableLearnset[] = { #if P_FAMILY_MAKUHITA static const u16 sMakuhitaTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULK_UP, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_BODY_SLAM, MOVE_COUNTER, + MOVE_DIG, MOVE_DOUBLE_EDGE, + MOVE_DOUBLE_TEAM, MOVE_DYNAMIC_PUNCH, + MOVE_EARTHQUAKE, MOVE_ENDURE, + MOVE_FACADE, MOVE_FIRE_PUNCH, + MOVE_FOCUS_PUNCH, MOVE_ICE_PUNCH, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, MOVE_METRONOME, MOVE_MUD_SLAP, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, MOVE_ROCK_SLIDE, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, MOVE_SEISMIC_TOSS, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_TAUNT, + MOVE_THIEF, MOVE_THUNDER_PUNCH, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sHariyamaTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULK_UP, + MOVE_COUNTER, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DYNAMIC_PUNCH, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FIRE_PUNCH, MOVE_FOCUS_PUNCH, MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, MOVE_METRONOME, MOVE_MUD_SLAP, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, MOVE_ROCK_SLIDE, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, MOVE_SEISMIC_TOSS, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_TAUNT, + MOVE_THIEF, MOVE_THUNDER_PUNCH, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_MAKUHITA @@ -14250,75 +14250,75 @@ static const u16 sHariyamaTeachableLearnset[] = { #if P_FAMILY_NOSEPASS static const u16 sNosepassTeachableLearnset[] = { MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_PROTECT, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SHOCK_WAVE, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, MOVE_BODY_SLAM, MOVE_DEFENSE_CURL, MOVE_DOUBLE_EDGE, + MOVE_DOUBLE_TEAM, MOVE_DYNAMIC_PUNCH, + MOVE_EARTHQUAKE, MOVE_ENDURE, MOVE_EXPLOSION, + MOVE_FACADE, MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH, MOVE_MUD_SLAP, + MOVE_PROTECT, + MOVE_REST, MOVE_ROCK_SLIDE, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, MOVE_ROLLOUT, + MOVE_SANDSTORM, + MOVE_SHOCK_WAVE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, + MOVE_TAUNT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, + MOVE_TORMENT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #if P_GEN_4_CROSS_EVOS static const u16 sProbopassTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, + MOVE_EXPLOSION, MOVE_FACADE, + MOVE_FIRE_PUNCH, MOVE_HYPER_BEAM, + MOVE_ICE_PUNCH, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, + MOVE_ROLLOUT, MOVE_SANDSTORM, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_STRENGTH, MOVE_SUNNY_DAY, + MOVE_SWAGGER, MOVE_TAUNT, MOVE_THUNDER, MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_EXPLOSION, - MOVE_FIRE_PUNCH, - MOVE_ICE_PUNCH, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, - MOVE_ROLLOUT, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, + MOVE_TORMENT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_GEN_4_CROSS_EVOS @@ -14328,81 +14328,81 @@ static const u16 sProbopassTeachableLearnset[] = { static const u16 sSkittyTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_CALM_MIND, + MOVE_DEFENSE_CURL, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROLLOUT, MOVE_SAFEGUARD, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_ROLLOUT, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, + MOVE_TOXIC, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; static const u16 sDelcattyTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_CALM_MIND, + MOVE_DEFENSE_CURL, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROCK_SMASH, + MOVE_ROLLOUT, MOVE_SAFEGUARD, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_STRENGTH, MOVE_SUNNY_DAY, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_ROLLOUT, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, + MOVE_TOXIC, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_SKITTY @@ -14411,56 +14411,56 @@ static const u16 sDelcattyTeachableLearnset[] = { static const u16 sSableyeTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULK_UP, MOVE_CALM_MIND, + MOVE_COUNTER, MOVE_CUT, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FIRE_PUNCH, MOVE_FLASH, MOVE_FOCUS_PUNCH, + MOVE_FURY_CUTTER, MOVE_GIGA_DRAIN, MOVE_HYPER_BEAM, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, MOVE_LIGHT_SCREEN, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_METRONOME, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, + MOVE_SEISMIC_TOSS, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, MOVE_SKILL_SWAP, + MOVE_SLEEP_TALK, MOVE_SNATCH, + MOVE_SNORE, MOVE_SUNNY_DAY, + MOVE_SWAGGER, MOVE_TAUNT, MOVE_THIEF, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, MOVE_TORMENT, MOVE_TOXIC, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_FURY_CUTTER, - MOVE_ICE_PUNCH, - MOVE_ICY_WIND, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_METRONOME, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_SEISMIC_TOSS, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_THUNDER_PUNCH, - MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_SABLEYE @@ -14468,47 +14468,47 @@ static const u16 sSableyeTeachableLearnset[] = { #if P_FAMILY_MAWILE static const u16 sMawileTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, MOVE_FOCUS_PUNCH, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SHADOW_BALL, - MOVE_SLUDGE_BOMB, - MOVE_SNATCH, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, MOVE_ICE_PUNCH, MOVE_ICY_WIND, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, MOVE_MUD_SLAP, + MOVE_PROTECT, MOVE_PSYCH_UP, + MOVE_RAIN_DANCE, + MOVE_REST, MOVE_ROCK_SLIDE, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, MOVE_SEISMIC_TOSS, + MOVE_SHADOW_BALL, MOVE_SLEEP_TALK, + MOVE_SLUDGE_BOMB, + MOVE_SNATCH, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWORDS_DANCE, + MOVE_TAUNT, MOVE_THUNDER_PUNCH, + MOVE_TORMENT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_MAWILE @@ -14517,70 +14517,70 @@ static const u16 sMawileTeachableLearnset[] = { static const u16 sAronTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_CUT, + MOVE_DEFENSE_CURL, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FURY_CUTTER, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, + MOVE_ROLLOUT, MOVE_SANDSTORM, MOVE_SHOCK_WAVE, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, - MOVE_ROLLOUT, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, + MOVE_TOXIC, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; static const u16 sLaironTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_CUT, + MOVE_DEFENSE_CURL, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FURY_CUTTER, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, + MOVE_ROLLOUT, MOVE_SANDSTORM, MOVE_SHOCK_WAVE, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, - MOVE_ROLLOUT, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, + MOVE_TOXIC, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; @@ -14588,57 +14588,57 @@ static const u16 sAggronTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, + MOVE_COUNTER, MOVE_CUT, + MOVE_DEFENSE_CURL, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_DRAGON_CLAW, + MOVE_DYNAMIC_PUNCH, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, + MOVE_FIRE_PUNCH, MOVE_FLAMETHROWER, MOVE_FOCUS_PUNCH, + MOVE_FURY_CUTTER, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, MOVE_IRON_TAIL, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, + MOVE_ROLLOUT, MOVE_SANDSTORM, + MOVE_SEISMIC_TOSS, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_STRENGTH, MOVE_SUNNY_DAY, MOVE_SURF, + MOVE_SWAGGER, MOVE_TAUNT, MOVE_THUNDER, MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_FURY_CUTTER, - MOVE_ICE_PUNCH, - MOVE_ICY_WIND, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, - MOVE_ROLLOUT, - MOVE_SEISMIC_TOSS, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, + MOVE_TOXIC, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_ARON @@ -14647,97 +14647,97 @@ static const u16 sAggronTeachableLearnset[] = { static const u16 sMedititeTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULK_UP, MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FOCUS_PUNCH, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SHADOW_BALL, - MOVE_SKILL_SWAP, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_BODY_SLAM, MOVE_COUNTER, MOVE_DOUBLE_EDGE, + MOVE_DOUBLE_TEAM, MOVE_DREAM_EATER, MOVE_DYNAMIC_PUNCH, MOVE_ENDURE, + MOVE_FACADE, MOVE_FIRE_PUNCH, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, MOVE_ICE_PUNCH, + MOVE_LIGHT_SCREEN, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, MOVE_METRONOME, MOVE_MUD_SLAP, + MOVE_PROTECT, + MOVE_PSYCHIC, MOVE_PSYCH_UP, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, MOVE_ROCK_SLIDE, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, MOVE_SEISMIC_TOSS, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_TAUNT, + MOVE_THIEF, MOVE_THUNDER_PUNCH, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sMedichamTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULK_UP, MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FOCUS_PUNCH, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SHADOW_BALL, - MOVE_SKILL_SWAP, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_BODY_SLAM, MOVE_COUNTER, MOVE_DOUBLE_EDGE, + MOVE_DOUBLE_TEAM, MOVE_DREAM_EATER, MOVE_DYNAMIC_PUNCH, MOVE_ENDURE, + MOVE_FACADE, MOVE_FIRE_PUNCH, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_HYPER_BEAM, MOVE_ICE_PUNCH, + MOVE_LIGHT_SCREEN, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, MOVE_METRONOME, MOVE_MUD_SLAP, + MOVE_PROTECT, + MOVE_PSYCHIC, MOVE_PSYCH_UP, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, MOVE_ROCK_SLIDE, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, MOVE_SEISMIC_TOSS, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_TAUNT, + MOVE_THIEF, MOVE_THUNDER_PUNCH, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_MEDITITE @@ -14745,63 +14745,63 @@ static const u16 sMedichamTeachableLearnset[] = { #if P_FAMILY_ELECTRIKE static const u16 sElectrikeTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLAMETHROWER, MOVE_FLASH, MOVE_IRON_TAIL, MOVE_LIGHT_SCREEN, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROAR, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_STRENGTH, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_THIEF, MOVE_THUNDER, MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sManectricTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLAMETHROWER, MOVE_FLASH, MOVE_HYPER_BEAM, MOVE_IRON_TAIL, MOVE_LIGHT_SCREEN, + MOVE_MUD_SLAP, MOVE_OVERHEAT, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROAR, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_STRENGTH, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_THIEF, MOVE_THUNDER, MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_ELECTRIKE @@ -14809,37 +14809,37 @@ static const u16 sManectricTeachableLearnset[] = { #if P_FAMILY_PLUSLE static const u16 sPlusleTeachableLearnset[] = { MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_SHOCK_WAVE, - MOVE_SKILL_SWAP, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, MOVE_BODY_SLAM, MOVE_COUNTER, MOVE_DEFENSE_CURL, MOVE_DOUBLE_EDGE, + MOVE_DOUBLE_TEAM, MOVE_DYNAMIC_PUNCH, MOVE_ENDURE, + MOVE_FACADE, + MOVE_FLASH, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, MOVE_METRONOME, MOVE_MUD_SLAP, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, MOVE_ROLLOUT, MOVE_SEISMIC_TOSS, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, MOVE_SLEEP_TALK, MOVE_SNORE, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_PLUSLE @@ -14847,36 +14847,36 @@ static const u16 sPlusleTeachableLearnset[] = { #if P_FAMILY_MINUN static const u16 sMinunTeachableLearnset[] = { MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_SHOCK_WAVE, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, MOVE_BODY_SLAM, MOVE_COUNTER, MOVE_DEFENSE_CURL, MOVE_DOUBLE_EDGE, + MOVE_DOUBLE_TEAM, MOVE_DYNAMIC_PUNCH, MOVE_ENDURE, + MOVE_FACADE, + MOVE_FLASH, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, MOVE_METRONOME, MOVE_MUD_SLAP, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, MOVE_ROLLOUT, MOVE_SEISMIC_TOSS, + MOVE_SHOCK_WAVE, MOVE_SLEEP_TALK, MOVE_SNORE, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_MINUN @@ -14885,87 +14885,87 @@ static const u16 sMinunTeachableLearnset[] = { static const u16 sVolbeatTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_FOCUS_PUNCH, MOVE_GIGA_DRAIN, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, MOVE_ICE_PUNCH, + MOVE_LIGHT_SCREEN, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, MOVE_METRONOME, MOVE_MUD_SLAP, + MOVE_PROTECT, MOVE_PSYCH_UP, + MOVE_RAIN_DANCE, + MOVE_REST, MOVE_SEISMIC_TOSS, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, + MOVE_TOXIC, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; static const u16 sIllumiseTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_FOCUS_PUNCH, MOVE_GIGA_DRAIN, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, MOVE_ICE_PUNCH, + MOVE_LIGHT_SCREEN, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, MOVE_METRONOME, MOVE_MUD_SLAP, + MOVE_PROTECT, MOVE_PSYCH_UP, + MOVE_RAIN_DANCE, + MOVE_REST, MOVE_SEISMIC_TOSS, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, + MOVE_TOXIC, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_VOLBEAT_ILLUMISE @@ -14977,87 +14977,87 @@ static const u16 sBudewTeachableLearnset[] = { MOVE_BULLET_SEED, MOVE_CUT, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_GIGA_DRAIN, + MOVE_MUD_SLAP, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_GEN_4_CROSS_EVOS static const u16 sRoseliaTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BULLET_SEED, MOVE_CUT, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, + MOVE_FURY_CUTTER, MOVE_GIGA_DRAIN, + MOVE_MUD_SLAP, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #if P_GEN_4_CROSS_EVOS static const u16 sRoseradeTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BULLET_SEED, MOVE_CUT, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, + MOVE_FURY_CUTTER, MOVE_GIGA_DRAIN, MOVE_HYPER_BEAM, + MOVE_MUD_SLAP, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_GEN_4_CROSS_EVOS @@ -15066,89 +15066,89 @@ static const u16 sRoseradeTeachableLearnset[] = { #if P_FAMILY_GULPIN static const u16 sGulpinTeachableLearnset[] = { MOVE_ATTRACT, - MOVE_BULLET_SEED, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_GIGA_DRAIN, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SLUDGE_BOMB, - MOVE_SNATCH, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_WATER_PULSE, MOVE_BODY_SLAM, + MOVE_BULLET_SEED, MOVE_COUNTER, MOVE_DEFENSE_CURL, MOVE_DOUBLE_EDGE, + MOVE_DOUBLE_TEAM, MOVE_DREAM_EATER, MOVE_DYNAMIC_PUNCH, MOVE_ENDURE, MOVE_EXPLOSION, + MOVE_FACADE, MOVE_FIRE_PUNCH, + MOVE_GIGA_DRAIN, + MOVE_ICE_BEAM, MOVE_ICE_PUNCH, MOVE_MUD_SLAP, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_ROCK_SMASH, MOVE_ROLLOUT, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, MOVE_SLEEP_TALK, + MOVE_SLUDGE_BOMB, + MOVE_SNATCH, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWORDS_DANCE, + MOVE_THIEF, MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, + MOVE_TOXIC, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; static const u16 sSwalotTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULLET_SEED, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_DYNAMIC_PUNCH, MOVE_EARTHQUAKE, + MOVE_ENDURE, + MOVE_EXPLOSION, MOVE_FACADE, + MOVE_FIRE_PUNCH, MOVE_GIGA_DRAIN, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICE_PUNCH, + MOVE_METRONOME, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROCK_SMASH, + MOVE_ROLLOUT, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, MOVE_SNATCH, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_STRENGTH, MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_EXPLOSION, - MOVE_FIRE_PUNCH, - MOVE_ICE_PUNCH, - MOVE_METRONOME, - MOVE_MUD_SLAP, - MOVE_ROLLOUT, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWORDS_DANCE, + MOVE_THIEF, MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, + MOVE_TOXIC, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_GULPIN @@ -15158,29 +15158,29 @@ static const u16 sCarvanhaTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DIVE, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FURY_CUTTER, MOVE_HAIL, MOVE_ICE_BEAM, + MOVE_ICY_WIND, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SURF, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_TAUNT, MOVE_THIEF, MOVE_TORMENT, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_UNAVAILABLE, }; @@ -15188,35 +15188,35 @@ static const u16 sSharpedoTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DIVE, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FURY_CUTTER, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROAR, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_STRENGTH, MOVE_SURF, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_TAUNT, MOVE_THIEF, MOVE_TORMENT, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_CARVANHA @@ -15225,65 +15225,65 @@ static const u16 sSharpedoTeachableLearnset[] = { static const u16 sWailmerTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, + MOVE_DEFENSE_CURL, MOVE_DIVE, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_HAIL, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROAR, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, - MOVE_STRENGTH, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ICY_WIND, MOVE_ROLLOUT, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SURF, MOVE_SWAGGER, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; static const u16 sWailordTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, + MOVE_DEFENSE_CURL, MOVE_DIVE, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROAR, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, - MOVE_STRENGTH, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ICY_WIND, MOVE_ROLLOUT, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SURF, MOVE_SWAGGER, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_WAILMER @@ -15291,68 +15291,68 @@ static const u16 sWailordTeachableLearnset[] = { #if P_FAMILY_NUMEL static const u16 sNumelTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, + MOVE_DEFENSE_CURL, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, + MOVE_MUD_SLAP, MOVE_OVERHEAT, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, MOVE_ROLLOUT, + MOVE_SANDSTORM, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sCameruptTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, + MOVE_DEFENSE_CURL, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, + MOVE_EXPLOSION, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, MOVE_HYPER_BEAM, + MOVE_MUD_SLAP, MOVE_OVERHEAT, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, + MOVE_ROLLOUT, MOVE_SANDSTORM, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_STRENGTH, MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_EXPLOSION, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, - MOVE_ROLLOUT, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_NUMEL @@ -15360,34 +15360,34 @@ static const u16 sCameruptTeachableLearnset[] = { #if P_FAMILY_TORKOAL static const u16 sTorkoalTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, + MOVE_EXPLOSION, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, MOVE_HYPER_BEAM, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_OVERHEAT, MOVE_PROTECT, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, + MOVE_ROLLOUT, MOVE_SANDSTORM, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_STRENGTH, MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_EXPLOSION, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, - MOVE_ROLLOUT, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_TORKOAL @@ -15395,87 +15395,87 @@ static const u16 sTorkoalTeachableLearnset[] = { #if P_FAMILY_SPOINK static const u16 sSpoinkTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_CALM_MIND, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, + MOVE_ICY_WIND, MOVE_IRON_TAIL, MOVE_LIGHT_SCREEN, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_PSYCH_UP, MOVE_SLEEP_TALK, + MOVE_SNATCH, MOVE_SNORE, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_TAUNT, + MOVE_THIEF, MOVE_THUNDER_WAVE, + MOVE_TORMENT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sGrumpigTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_CALM_MIND, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FOCUS_PUNCH, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_BODY_SLAM, MOVE_COUNTER, + MOVE_DIG, MOVE_DOUBLE_EDGE, + MOVE_DOUBLE_TEAM, MOVE_DREAM_EATER, MOVE_DYNAMIC_PUNCH, MOVE_ENDURE, + MOVE_FACADE, MOVE_FIRE_PUNCH, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_HYPER_BEAM, MOVE_ICE_PUNCH, MOVE_ICY_WIND, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, MOVE_METRONOME, MOVE_MUD_SLAP, + MOVE_PROTECT, + MOVE_PSYCHIC, MOVE_PSYCH_UP, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, MOVE_SEISMIC_TOSS, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, MOVE_SLEEP_TALK, + MOVE_SNATCH, MOVE_SNORE, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_TAUNT, + MOVE_THIEF, MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, + MOVE_TORMENT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_SPOINK @@ -15483,52 +15483,52 @@ static const u16 sGrumpigTeachableLearnset[] = { #if P_FAMILY_SPINDA static const u16 sSpindaTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_CALM_MIND, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FOCUS_PUNCH, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, MOVE_COUNTER, MOVE_DEFENSE_CURL, + MOVE_DIG, MOVE_DOUBLE_EDGE, + MOVE_DOUBLE_TEAM, MOVE_DREAM_EATER, MOVE_DYNAMIC_PUNCH, MOVE_ENDURE, + MOVE_FACADE, MOVE_FIRE_PUNCH, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, MOVE_ICE_PUNCH, MOVE_ICY_WIND, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, MOVE_METRONOME, MOVE_MUD_SLAP, + MOVE_PROTECT, + MOVE_PSYCHIC, MOVE_PSYCH_UP, + MOVE_RAIN_DANCE, + MOVE_REST, MOVE_ROCK_SLIDE, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, MOVE_ROLLOUT, + MOVE_SAFEGUARD, MOVE_SEISMIC_TOSS, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, MOVE_SLEEP_TALK, + MOVE_SNATCH, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_THIEF, MOVE_THUNDER_PUNCH, + MOVE_TOXIC, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_SPINDA @@ -15536,105 +15536,105 @@ static const u16 sSpindaTeachableLearnset[] = { #if P_FAMILY_TRAPINCH static const u16 sTrapinchTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FURY_CUTTER, MOVE_GIGA_DRAIN, MOVE_HYPER_BEAM, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SANDSTORM, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_STRENGTH, MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sVibravaTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_DRAGON_CLAW, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLY, + MOVE_FURY_CUTTER, MOVE_GIGA_DRAIN, MOVE_HYPER_BEAM, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SANDSTORM, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_STEEL_WING, MOVE_STRENGTH, MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sFlygonTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_DRAGON_CLAW, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, + MOVE_FIRE_PUNCH, MOVE_FLAMETHROWER, MOVE_FLY, + MOVE_FURY_CUTTER, MOVE_GIGA_DRAIN, MOVE_HYPER_BEAM, MOVE_IRON_TAIL, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SANDSTORM, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_STEEL_WING, MOVE_STRENGTH, MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_FURY_CUTTER, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWIFT, MOVE_THUNDER_PUNCH, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_TRAPINCH @@ -15642,80 +15642,80 @@ static const u16 sFlygonTeachableLearnset[] = { #if P_FAMILY_CACNEA static const u16 sCacneaTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULLET_SEED, + MOVE_COUNTER, MOVE_CUT, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_FOCUS_PUNCH, + MOVE_FURY_CUTTER, MOVE_GIGA_DRAIN, + MOVE_MEGA_PUNCH, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_SANDSTORM, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_MEGA_PUNCH, - MOVE_MUD_SLAP, MOVE_SEISMIC_TOSS, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_THIEF, MOVE_THUNDER_PUNCH, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sCacturneTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULLET_SEED, + MOVE_COUNTER, MOVE_CUT, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_FOCUS_PUNCH, + MOVE_FURY_CUTTER, MOVE_GIGA_DRAIN, MOVE_HYPER_BEAM, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_SANDSTORM, + MOVE_SEISMIC_TOSS, MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_STRENGTH, MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_MUD_SLAP, - MOVE_SEISMIC_TOSS, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_TAUNT, + MOVE_THIEF, MOVE_THUNDER_PUNCH, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_CACNEA @@ -15724,38 +15724,42 @@ static const u16 sCacturneTeachableLearnset[] = { static const u16 sSwabluTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLY, MOVE_ICE_BEAM, + MOVE_MUD_SLAP, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, MOVE_SAFEGUARD, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_STEEL_WING, MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_THIEF, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sAltariaTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_DRAGON_CLAW, + MOVE_DREAM_EATER, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, @@ -15763,27 +15767,23 @@ static const u16 sAltariaTeachableLearnset[] = { MOVE_HYPER_BEAM, MOVE_ICE_BEAM, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROAR, MOVE_ROCK_SMASH, MOVE_SAFEGUARD, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_STEEL_WING, MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_THIEF, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_SWABLU @@ -15793,58 +15793,58 @@ static const u16 sZangooseTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, + MOVE_FIRE_PUNCH, MOVE_FLAMETHROWER, MOVE_FOCUS_PUNCH, + MOVE_FURY_CUTTER, MOVE_GIGA_DRAIN, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, MOVE_IRON_TAIL, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, + MOVE_ROLLOUT, + MOVE_SEISMIC_TOSS, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_STRENGTH, MOVE_SUNNY_DAY, MOVE_SURF, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, MOVE_TAUNT, MOVE_THIEF, MOVE_THUNDER, MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_FURY_CUTTER, - MOVE_ICE_PUNCH, - MOVE_ICY_WIND, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, - MOVE_ROLLOUT, - MOVE_SEISMIC_TOSS, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, - MOVE_SWORDS_DANCE, MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, + MOVE_TOXIC, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_ZANGOOSE @@ -15852,36 +15852,36 @@ static const u16 sZangooseTeachableLearnset[] = { #if P_FAMILY_SEVIPER static const u16 sSeviperTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLAMETHROWER, + MOVE_FURY_CUTTER, MOVE_GIGA_DRAIN, MOVE_HYPER_BEAM, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROCK_SMASH, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, MOVE_SNATCH, + MOVE_SNORE, MOVE_STRENGTH, MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_MUD_SLAP, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_SEVIPER @@ -15889,49 +15889,55 @@ static const u16 sSeviperTeachableLearnset[] = { #if P_FAMILY_LUNATONE static const u16 sLunatoneTeachableLearnset[] = { MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_CALM_MIND, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, MOVE_EARTHQUAKE, + MOVE_ENDURE, + MOVE_EXPLOSION, MOVE_FACADE, MOVE_FLASH, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_LIGHT_SCREEN, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_TOMB, + MOVE_ROLLOUT, MOVE_SAFEGUARD, MOVE_SANDSTORM, MOVE_SHADOW_BALL, MOVE_SKILL_SWAP, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_EXPLOSION, - MOVE_ICY_WIND, - MOVE_PSYCH_UP, - MOVE_ROCK_SLIDE, - MOVE_ROLLOUT, MOVE_SLEEP_TALK, MOVE_SNORE, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_LUNATONE #if P_FAMILY_SOLROCK static const u16 sSolrockTeachableLearnset[] = { + MOVE_BODY_SLAM, MOVE_CALM_MIND, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, MOVE_EARTHQUAKE, + MOVE_ENDURE, + MOVE_EXPLOSION, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, @@ -15941,31 +15947,25 @@ static const u16 sSolrockTeachableLearnset[] = { MOVE_OVERHEAT, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_TOMB, + MOVE_ROLLOUT, MOVE_SAFEGUARD, MOVE_SANDSTORM, MOVE_SHADOW_BALL, MOVE_SKILL_SWAP, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_EXPLOSION, - MOVE_PSYCH_UP, - MOVE_ROCK_SLIDE, - MOVE_ROLLOUT, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_SOLROCK @@ -15975,30 +15975,30 @@ static const u16 sBarboachTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DIVE, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_HAIL, MOVE_ICE_BEAM, + MOVE_ICY_WIND, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_TOMB, MOVE_SANDSTORM, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SUNNY_DAY, MOVE_SURF, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_UNAVAILABLE, }; @@ -16006,35 +16006,35 @@ static const u16 sWhiscashTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_DIVE, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SANDSTORM, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_STRENGTH, MOVE_SUNNY_DAY, MOVE_SURF, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_BARBOACH @@ -16044,38 +16044,38 @@ static const u16 sCorphishTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, + MOVE_COUNTER, MOVE_CUT, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FURY_CUTTER, MOVE_HAIL, MOVE_ICE_BEAM, + MOVE_ICY_WIND, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_STRENGTH, MOVE_SURF, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, MOVE_TAUNT, MOVE_THIEF, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; @@ -16083,41 +16083,41 @@ static const u16 sCrawdauntTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, + MOVE_COUNTER, MOVE_CUT, MOVE_DIG, MOVE_DIVE, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FURY_CUTTER, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_STRENGTH, MOVE_SURF, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, MOVE_TAUNT, MOVE_THIEF, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, - MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_CORPHISH @@ -16126,73 +16126,73 @@ static const u16 sCrawdauntTeachableLearnset[] = { static const u16 sBaltoyTeachableLearnset[] = { MOVE_CALM_MIND, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, MOVE_EARTHQUAKE, + MOVE_ENDURE, + MOVE_EXPLOSION, MOVE_FACADE, MOVE_FLASH, MOVE_ICE_BEAM, MOVE_LIGHT_SCREEN, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_TOMB, MOVE_SAFEGUARD, MOVE_SANDSTORM, MOVE_SHADOW_BALL, MOVE_SKILL_SWAP, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_EXPLOSION, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_ROCK_SLIDE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, MOVE_SWAGGER, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sClaydolTeachableLearnset[] = { MOVE_CALM_MIND, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, MOVE_EARTHQUAKE, + MOVE_ENDURE, + MOVE_EXPLOSION, MOVE_FACADE, MOVE_FLASH, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, MOVE_LIGHT_SCREEN, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SAFEGUARD, MOVE_SANDSTORM, MOVE_SHADOW_BALL, MOVE_SKILL_SWAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_STRENGTH, MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_EXPLOSION, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_BALTOY @@ -16200,62 +16200,62 @@ static const u16 sClaydolTeachableLearnset[] = { #if P_FAMILY_LILEEP static const u16 sLileepTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BULLET_SEED, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_GIGA_DRAIN, + MOVE_MUD_SLAP, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_TOMB, MOVE_SANDSTORM, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWORDS_DANCE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sCradilyTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BULLET_SEED, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_GIGA_DRAIN, MOVE_HYPER_BEAM, + MOVE_MUD_SLAP, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SANDSTORM, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_STRENGTH, MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWORDS_DANCE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_LILEEP @@ -16264,63 +16264,63 @@ static const u16 sCradilyTeachableLearnset[] = { static const u16 sAnorithTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_CUT, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FURY_CUTTER, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SANDSTORM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWORDS_DANCE, + MOVE_TOXIC, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; static const u16 sArmaldoTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_CUT, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FURY_CUTTER, MOVE_HYPER_BEAM, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SANDSTORM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, MOVE_SEISMIC_TOSS, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWORDS_DANCE, + MOVE_TOXIC, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_ANORITH @@ -16330,58 +16330,58 @@ static const u16 sFeebasTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DIVE, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_HAIL, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_IRON_TAIL, MOVE_LIGHT_SCREEN, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SURF, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_UNAVAILABLE, }; static const u16 sMiloticTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_DIVE, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_IRON_TAIL, MOVE_LIGHT_SCREEN, + MOVE_MUD_SLAP, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, MOVE_SAFEGUARD, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SURF, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_FEEBAS @@ -16390,37 +16390,37 @@ static const u16 sMiloticTeachableLearnset[] = { static const u16 sCastformTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, MOVE_FLASH, MOVE_HAIL, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, MOVE_SANDSTORM, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_THIEF, MOVE_THUNDER, MOVE_THUNDERBOLT, + MOVE_THUNDER_WAVE, MOVE_TOXIC, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, - MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_CASTFORM @@ -16430,58 +16430,58 @@ static const u16 sKecleonTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, + MOVE_COUNTER, MOVE_CUT, + MOVE_DEFENSE_CURL, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, + MOVE_FIRE_PUNCH, MOVE_FLAMETHROWER, MOVE_FLASH, MOVE_FOCUS_PUNCH, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, MOVE_FURY_CUTTER, + MOVE_ICE_BEAM, MOVE_ICE_PUNCH, MOVE_ICY_WIND, + MOVE_IRON_TAIL, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, MOVE_METRONOME, MOVE_MUD_SLAP, + MOVE_PROTECT, MOVE_PSYCH_UP, + MOVE_RAIN_DANCE, + MOVE_REST, MOVE_ROCK_SLIDE, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, MOVE_ROLLOUT, MOVE_SEISMIC_TOSS, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, MOVE_SLEEP_TALK, + MOVE_SNATCH, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, + MOVE_TOXIC, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_KECLEON @@ -16489,74 +16489,74 @@ static const u16 sKecleonTeachableLearnset[] = { #if P_FAMILY_SHUPPET static const u16 sShuppetTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_CALM_MIND, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, + MOVE_ICY_WIND, + MOVE_METRONOME, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, MOVE_SKILL_SWAP, + MOVE_SLEEP_TALK, MOVE_SNATCH, + MOVE_SNORE, MOVE_SUNNY_DAY, + MOVE_SWAGGER, MOVE_TAUNT, MOVE_THIEF, MOVE_THUNDER, MOVE_THUNDERBOLT, + MOVE_THUNDER_WAVE, MOVE_TORMENT, MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_METRONOME, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; static const u16 sBanetteTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_CALM_MIND, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_HYPER_BEAM, + MOVE_ICY_WIND, + MOVE_METRONOME, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, MOVE_SKILL_SWAP, + MOVE_SLEEP_TALK, MOVE_SNATCH, + MOVE_SNORE, MOVE_SUNNY_DAY, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, MOVE_TAUNT, MOVE_THIEF, MOVE_THUNDER, MOVE_THUNDERBOLT, + MOVE_THUNDER_WAVE, MOVE_TORMENT, MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_METRONOME, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWORDS_DANCE, - MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_SHUPPET @@ -16565,82 +16565,82 @@ static const u16 sBanetteTeachableLearnset[] = { static const u16 sDuskullTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_CALM_MIND, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, MOVE_SHADOW_BALL, MOVE_SKILL_SWAP, + MOVE_SLEEP_TALK, MOVE_SNATCH, + MOVE_SNORE, MOVE_SUNNY_DAY, + MOVE_SWAGGER, MOVE_TAUNT, MOVE_THIEF, MOVE_TORMENT, MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, MOVE_UNAVAILABLE, }; static const u16 sDusclopsTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_CALM_MIND, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_DYNAMIC_PUNCH, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FIRE_PUNCH, MOVE_FLASH, MOVE_FOCUS_PUNCH, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SHADOW_BALL, - MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH, MOVE_ICY_WIND, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, MOVE_METRONOME, MOVE_MUD_SLAP, + MOVE_PROTECT, + MOVE_PSYCHIC, MOVE_PSYCH_UP, + MOVE_RAIN_DANCE, + MOVE_REST, MOVE_ROCK_SLIDE, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, MOVE_SEISMIC_TOSS, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, MOVE_SLEEP_TALK, + MOVE_SNATCH, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, + MOVE_TAUNT, + MOVE_THIEF, MOVE_THUNDER_PUNCH, + MOVE_TORMENT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; @@ -16648,47 +16648,47 @@ static const u16 sDusclopsTeachableLearnset[] = { static const u16 sDusknoirTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FIRE_PUNCH, MOVE_FLASH, MOVE_FOCUS_PUNCH, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SHADOW_BALL, - MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH, MOVE_ICY_WIND, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, MOVE_METRONOME, MOVE_MUD_SLAP, + MOVE_PROTECT, + MOVE_PSYCHIC, MOVE_PSYCH_UP, + MOVE_RAIN_DANCE, + MOVE_REST, MOVE_ROCK_SLIDE, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, MOVE_SLEEP_TALK, + MOVE_SNATCH, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_TAUNT, + MOVE_THIEF, MOVE_THUNDER_PUNCH, + MOVE_TORMENT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_GEN_4_CROSS_EVOS @@ -16698,36 +16698,36 @@ static const u16 sDusknoirTeachableLearnset[] = { static const u16 sTropiusTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BULLET_SEED, MOVE_CALM_MIND, MOVE_CUT, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_FLY, + MOVE_FURY_CUTTER, MOVE_GIGA_DRAIN, MOVE_HYPER_BEAM, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROAR, MOVE_ROCK_SMASH, MOVE_SAFEGUARD, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_STEEL_WING, MOVE_STRENGTH, MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_MUD_SLAP, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWORDS_DANCE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_TROPIUS @@ -16737,35 +16737,35 @@ static const u16 sTropiusTeachableLearnset[] = { static const u16 sChinglingTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, + MOVE_ICY_WIND, MOVE_LIGHT_SCREEN, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, + MOVE_ROLLOUT, MOVE_SAFEGUARD, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_PSYCH_UP, - MOVE_ROLLOUT, MOVE_SLEEP_TALK, + MOVE_SNATCH, MOVE_SNORE, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_TAUNT, MOVE_THUNDER_WAVE, + MOVE_TORMENT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_GEN_4_CROSS_EVOS @@ -16773,36 +16773,36 @@ static const u16 sChinglingTeachableLearnset[] = { static const u16 sChimechoTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, + MOVE_ICY_WIND, MOVE_LIGHT_SCREEN, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, + MOVE_ROLLOUT, MOVE_SAFEGUARD, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_PSYCH_UP, - MOVE_ROLLOUT, MOVE_SLEEP_TALK, + MOVE_SNATCH, MOVE_SNORE, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_TAUNT, MOVE_THUNDER_WAVE, + MOVE_TORMENT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_CHIMECHO @@ -16812,51 +16812,51 @@ static const u16 sAbsolTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_CALM_MIND, + MOVE_COUNTER, MOVE_CUT, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, MOVE_FLASH, + MOVE_FURY_CUTTER, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SANDSTORM, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, MOVE_SNATCH, + MOVE_SNORE, MOVE_STRENGTH, MOVE_SUNNY_DAY, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, MOVE_TAUNT, MOVE_THIEF, MOVE_THUNDER, MOVE_THUNDERBOLT, + MOVE_THUNDER_WAVE, MOVE_TORMENT, MOVE_TOXIC, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, - MOVE_SWORDS_DANCE, - MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_ABSOL @@ -16865,60 +16865,60 @@ static const u16 sAbsolTeachableLearnset[] = { static const u16 sSnoruntTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_HAIL, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_LIGHT_SCREEN, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROLLOUT, MOVE_SAFEGUARD, MOVE_SHADOW_BALL, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_ROLLOUT, MOVE_SLEEP_TALK, MOVE_SNORE, MOVE_SWAGGER, + MOVE_TOXIC, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; static const u16 sGlalieTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, + MOVE_EXPLOSION, MOVE_FACADE, MOVE_FLASH, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_LIGHT_SCREEN, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROLLOUT, MOVE_SAFEGUARD, MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SWAGGER, MOVE_TAUNT, MOVE_TORMENT, MOVE_TOXIC, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_EXPLOSION, - MOVE_ICY_WIND, - MOVE_ROLLOUT, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, MOVE_UNAVAILABLE, }; @@ -16926,40 +16926,40 @@ static const u16 sGlalieTeachableLearnset[] = { static const u16 sFroslassTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, MOVE_LIGHT_SCREEN, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, + MOVE_ROLLOUT, MOVE_SAFEGUARD, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, MOVE_SNATCH, + MOVE_SNORE, + MOVE_SWAGGER, MOVE_TAUNT, MOVE_THUNDER, MOVE_THUNDERBOLT, + MOVE_THUNDER_WAVE, MOVE_TORMENT, MOVE_TOXIC, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_ICE_PUNCH, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_ROLLOUT, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; #endif //P_GEN_4_CROSS_EVOS @@ -16969,107 +16969,107 @@ static const u16 sFroslassTeachableLearnset[] = { static const u16 sSphealTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, + MOVE_DEFENSE_CURL, MOVE_DIVE, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_HAIL, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, - MOVE_STRENGTH, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, MOVE_ROLLOUT, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SURF, MOVE_SWAGGER, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; static const u16 sSealeoTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, + MOVE_DEFENSE_CURL, MOVE_DIVE, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_HAIL, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, - MOVE_STRENGTH, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, MOVE_ROLLOUT, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SURF, MOVE_SWAGGER, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; static const u16 sWalreinTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, + MOVE_DEFENSE_CURL, MOVE_DIVE, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FURY_CUTTER, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, - MOVE_STRENGTH, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, MOVE_ROLLOUT, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SURF, MOVE_SWAGGER, MOVE_SWORDS_DANCE, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_SPHEAL @@ -17078,87 +17078,87 @@ static const u16 sWalreinTeachableLearnset[] = { static const u16 sClamperlTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_DIVE, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_HAIL, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SURF, + MOVE_SWAGGER, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, MOVE_UNAVAILABLE, }; static const u16 sHuntailTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_DIVE, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROCK_TOMB, + MOVE_SLEEP_TALK, MOVE_SNATCH, + MOVE_SNORE, MOVE_SURF, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_UNAVAILABLE, }; static const u16 sGorebyssTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_DIVE, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, MOVE_SAFEGUARD, MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SURF, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_CLAMPERL @@ -17167,35 +17167,35 @@ static const u16 sGorebyssTeachableLearnset[] = { static const u16 sRelicanthTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_CALM_MIND, MOVE_DIVE, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, + MOVE_MUD_SLAP, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SAFEGUARD, MOVE_SANDSTORM, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SURF, + MOVE_SWAGGER, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_RELICANTH @@ -17205,26 +17205,26 @@ static const u16 sLuvdiscTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DIVE, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_HAIL, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, MOVE_SAFEGUARD, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SURF, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_LUVDISC @@ -17233,104 +17233,104 @@ static const u16 sLuvdiscTeachableLearnset[] = { static const u16 sBagonTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_CUT, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_DRAGON_CLAW, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, + MOVE_FURY_CUTTER, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sShelgonTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_CUT, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_DRAGON_CLAW, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, + MOVE_FURY_CUTTER, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, MOVE_ROLLOUT, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sSalamenceTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_CUT, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_DRAGON_CLAW, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, MOVE_FLY, + MOVE_FURY_CUTTER, MOVE_HYPER_BEAM, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, - MOVE_STEEL_WING, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, MOVE_ROLLOUT, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STEEL_WING, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_BAGON @@ -17342,137 +17342,137 @@ static const u16 sBeldumTeachableLearnset[] = { static const u16 sMetangTeachableLearnset[] = { MOVE_AERIAL_ACE, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_CUT, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DYNAMIC_PUNCH, MOVE_EARTHQUAKE, + MOVE_ENDURE, + MOVE_EXPLOSION, MOVE_FACADE, MOVE_FLASH, MOVE_FOCUS_PUNCH, + MOVE_FURY_CUTTER, MOVE_HYPER_BEAM, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, MOVE_LIGHT_SCREEN, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, + MOVE_ROLLOUT, MOVE_SANDSTORM, MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_STRENGTH, MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_EXPLOSION, - MOVE_FURY_CUTTER, - MOVE_ICE_PUNCH, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_ROCK_SLIDE, - MOVE_ROLLOUT, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWIFT, MOVE_THUNDER_PUNCH, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sMetagrossTeachableLearnset[] = { MOVE_AERIAL_ACE, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_CUT, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DYNAMIC_PUNCH, MOVE_EARTHQUAKE, + MOVE_ENDURE, + MOVE_EXPLOSION, MOVE_FACADE, MOVE_FLASH, MOVE_FOCUS_PUNCH, + MOVE_FURY_CUTTER, MOVE_HYPER_BEAM, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, MOVE_LIGHT_SCREEN, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, + MOVE_ROLLOUT, MOVE_SANDSTORM, MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_STRENGTH, MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_EXPLOSION, - MOVE_FURY_CUTTER, - MOVE_ICE_PUNCH, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_ROCK_SLIDE, - MOVE_ROLLOUT, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWIFT, MOVE_THUNDER_PUNCH, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_BELDUM #if P_FAMILY_REGIROCK static const u16 sRegirockTeachableLearnset[] = { - MOVE_BRICK_BREAK, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SHOCK_WAVE, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, MOVE_BODY_SLAM, + MOVE_BRICK_BREAK, MOVE_COUNTER, MOVE_DEFENSE_CURL, + MOVE_DIG, MOVE_DOUBLE_EDGE, + MOVE_DOUBLE_TEAM, MOVE_DYNAMIC_PUNCH, + MOVE_EARTHQUAKE, MOVE_ENDURE, MOVE_EXPLOSION, + MOVE_FACADE, MOVE_FIRE_PUNCH, + MOVE_FOCUS_PUNCH, + MOVE_HYPER_BEAM, MOVE_ICE_PUNCH, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, MOVE_MUD_SLAP, + MOVE_PROTECT, MOVE_PSYCH_UP, + MOVE_REST, MOVE_ROCK_SLIDE, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, MOVE_ROLLOUT, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, MOVE_SEISMIC_TOSS, + MOVE_SHOCK_WAVE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_REGIROCK @@ -17480,46 +17480,46 @@ static const u16 sRegirockTeachableLearnset[] = { #if P_FAMILY_REGICE static const u16 sRegiceTeachableLearnset[] = { MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DYNAMIC_PUNCH, MOVE_EARTHQUAKE, + MOVE_ENDURE, + MOVE_EXPLOSION, MOVE_FACADE, MOVE_FOCUS_PUNCH, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SHOCK_WAVE, - MOVE_STRENGTH, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_EXPLOSION, MOVE_ICE_PUNCH, MOVE_ICY_WIND, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, MOVE_MUD_SLAP, + MOVE_PROTECT, MOVE_PSYCH_UP, + MOVE_RAIN_DANCE, + MOVE_REST, MOVE_ROCK_SLIDE, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, MOVE_ROLLOUT, + MOVE_SAFEGUARD, MOVE_SEISMIC_TOSS, + MOVE_SHOCK_WAVE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, MOVE_SWAGGER, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_REGICE @@ -17527,45 +17527,45 @@ static const u16 sRegiceTeachableLearnset[] = { #if P_FAMILY_REGISTEEL static const u16 sRegisteelTeachableLearnset[] = { MOVE_AERIAL_ACE, - MOVE_BRICK_BREAK, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SHOCK_WAVE, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, MOVE_BODY_SLAM, + MOVE_BRICK_BREAK, MOVE_COUNTER, MOVE_DEFENSE_CURL, MOVE_DOUBLE_EDGE, + MOVE_DOUBLE_TEAM, MOVE_DYNAMIC_PUNCH, + MOVE_EARTHQUAKE, MOVE_ENDURE, MOVE_EXPLOSION, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_HYPER_BEAM, MOVE_ICE_PUNCH, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, MOVE_MUD_SLAP, + MOVE_PROTECT, MOVE_PSYCH_UP, + MOVE_RAIN_DANCE, + MOVE_REST, MOVE_ROCK_SLIDE, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, MOVE_ROLLOUT, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, MOVE_SEISMIC_TOSS, + MOVE_SHOCK_WAVE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_REGISTEEL @@ -17574,20 +17574,28 @@ static const u16 sRegisteelTeachableLearnset[] = { static const u16 sLatiasTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_CALM_MIND, MOVE_CUT, MOVE_DIVE, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_DRAGON_CLAW, + MOVE_DREAM_EATER, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_FLY, + MOVE_FURY_CUTTER, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_LIGHT_SCREEN, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, @@ -17596,28 +17604,20 @@ static const u16 sLatiasTeachableLearnset[] = { MOVE_SANDSTORM, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_STEEL_WING, MOVE_SUNNY_DAY, MOVE_SURF, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_THUNDER, MOVE_THUNDERBOLT, + MOVE_THUNDER_WAVE, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, - MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_LATIAS @@ -17626,20 +17626,28 @@ static const u16 sLatiasTeachableLearnset[] = { static const u16 sLatiosTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_CALM_MIND, MOVE_CUT, MOVE_DIVE, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_DRAGON_CLAW, + MOVE_DREAM_EATER, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_FLY, + MOVE_FURY_CUTTER, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_LIGHT_SCREEN, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, @@ -17648,28 +17656,20 @@ static const u16 sLatiosTeachableLearnset[] = { MOVE_SANDSTORM, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_STEEL_WING, MOVE_SUNNY_DAY, MOVE_SURF, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_THUNDER, MOVE_THUNDERBOLT, + MOVE_THUNDER_WAVE, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, - MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_LATIOS @@ -17677,43 +17677,43 @@ static const u16 sLatiosTeachableLearnset[] = { #if P_FAMILY_KYOGRE static const u16 sKyogreTeachableLearnset[] = { MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_CALM_MIND, + MOVE_DEFENSE_CURL, MOVE_DIVE, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, + MOVE_MUD_SLAP, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SAFEGUARD, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_STRENGTH, MOVE_SURF, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_THUNDER, MOVE_THUNDERBOLT, + MOVE_THUNDER_WAVE, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, - MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_KYOGRE @@ -17721,56 +17721,56 @@ static const u16 sKyogreTeachableLearnset[] = { #if P_FAMILY_GROUDON static const u16 sGroudonTeachableLearnset[] = { MOVE_AERIAL_ACE, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULK_UP, + MOVE_COUNTER, MOVE_CUT, + MOVE_DEFENSE_CURL, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_DRAGON_CLAW, + MOVE_DYNAMIC_PUNCH, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, + MOVE_FIRE_PUNCH, MOVE_FLAMETHROWER, MOVE_FOCUS_PUNCH, + MOVE_FURY_CUTTER, MOVE_HYPER_BEAM, MOVE_IRON_TAIL, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_REST, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SHOCK_WAVE, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_FURY_CUTTER, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, MOVE_MUD_SLAP, + MOVE_OVERHEAT, + MOVE_PROTECT, MOVE_PSYCH_UP, + MOVE_REST, + MOVE_ROAR, MOVE_ROCK_SLIDE, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, MOVE_ROLLOUT, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, MOVE_SEISMIC_TOSS, + MOVE_SHOCK_WAVE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_GROUDON @@ -17779,51 +17779,51 @@ static const u16 sGroudonTeachableLearnset[] = { static const u16 sRayquazaTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULK_UP, MOVE_DIVE, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_DRAGON_CLAW, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, MOVE_FLY, + MOVE_FURY_CUTTER, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_OVERHEAT, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SANDSTORM, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_STRENGTH, MOVE_SUNNY_DAY, MOVE_SURF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_RAYQUAZA @@ -17831,14 +17831,28 @@ static const u16 sRayquazaTeachableLearnset[] = { #if P_FAMILY_JIRACHI static const u16 sJirachiTeachableLearnset[] = { MOVE_AERIAL_ACE, + MOVE_BODY_SLAM, MOVE_CALM_MIND, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FIRE_PUNCH, MOVE_FLASH, MOVE_HYPER_BEAM, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, MOVE_LIGHT_SCREEN, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_METRONOME, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, @@ -17847,31 +17861,17 @@ static const u16 sJirachiTeachableLearnset[] = { MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, MOVE_SKILL_SWAP, - MOVE_SUNNY_DAY, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_ICE_PUNCH, - MOVE_ICY_WIND, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_METRONOME, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, + MOVE_TOXIC, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_JIRACHI @@ -17879,223 +17879,223 @@ static const u16 sJirachiTeachableLearnset[] = { #if P_FAMILY_DEOXYS static const u16 sDeoxysNormalTeachableLearnset[] = { MOVE_AERIAL_ACE, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_CALM_MIND, MOVE_CUT, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FIRE_PUNCH, MOVE_FLASH, MOVE_FOCUS_PUNCH, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, MOVE_LIGHT_SCREEN, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SAFEGUARD, + MOVE_SEISMIC_TOSS, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, MOVE_SKILL_SWAP, + MOVE_SLEEP_TALK, MOVE_SNATCH, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_STRENGTH, MOVE_SUNNY_DAY, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_TAUNT, MOVE_THUNDER, MOVE_THUNDERBOLT, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, MOVE_TORMENT, MOVE_TOXIC, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_ICE_PUNCH, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_ROCK_SLIDE, - MOVE_SEISMIC_TOSS, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, - MOVE_THUNDER_PUNCH, - MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; static const u16 sDeoxysAttackTeachableLearnset[] = { MOVE_AERIAL_ACE, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_CALM_MIND, + MOVE_COUNTER, MOVE_CUT, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FIRE_PUNCH, MOVE_FLASH, MOVE_FOCUS_PUNCH, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH, MOVE_ICY_WIND, + MOVE_LIGHT_SCREEN, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, MOVE_MUD_SLAP, + MOVE_PROTECT, + MOVE_PSYCHIC, MOVE_PSYCH_UP, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, MOVE_ROCK_SLIDE, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, MOVE_SEISMIC_TOSS, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, MOVE_SLEEP_TALK, + MOVE_SNATCH, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_TAUNT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; static const u16 sDeoxysDefenseTeachableLearnset[] = { MOVE_AERIAL_ACE, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_CALM_MIND, + MOVE_COUNTER, MOVE_CUT, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FIRE_PUNCH, MOVE_FLASH, MOVE_FOCUS_PUNCH, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH, MOVE_ICY_WIND, + MOVE_LIGHT_SCREEN, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, MOVE_MUD_SLAP, + MOVE_PROTECT, + MOVE_PSYCHIC, MOVE_PSYCH_UP, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, MOVE_ROCK_SLIDE, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, MOVE_SEISMIC_TOSS, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, MOVE_SLEEP_TALK, + MOVE_SNATCH, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_TAUNT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; static const u16 sDeoxysSpeedTeachableLearnset[] = { MOVE_AERIAL_ACE, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_CALM_MIND, + MOVE_COUNTER, MOVE_CUT, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FIRE_PUNCH, MOVE_FLASH, MOVE_FOCUS_PUNCH, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH, MOVE_ICY_WIND, + MOVE_LIGHT_SCREEN, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, MOVE_MUD_SLAP, + MOVE_PROTECT, + MOVE_PSYCHIC, MOVE_PSYCH_UP, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, MOVE_ROCK_SLIDE, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, MOVE_SEISMIC_TOSS, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, MOVE_SLEEP_TALK, + MOVE_SNATCH, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_TAUNT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_DEOXYS @@ -18103,99 +18103,99 @@ static const u16 sDeoxysSpeedTeachableLearnset[] = { #if P_FAMILY_TURTWIG static const u16 sTurtwigTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BULLET_SEED, MOVE_CUT, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_GIGA_DRAIN, MOVE_IRON_TAIL, MOVE_LIGHT_SCREEN, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_REFLECT, MOVE_REST, MOVE_ROAR, MOVE_ROCK_SMASH, MOVE_SAFEGUARD, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_STRENGTH, MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWORDS_DANCE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sGrotleTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BULLET_SEED, MOVE_CUT, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_GIGA_DRAIN, MOVE_IRON_TAIL, MOVE_LIGHT_SCREEN, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_REFLECT, MOVE_REST, MOVE_ROAR, MOVE_ROCK_SMASH, MOVE_SAFEGUARD, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_STRENGTH, MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWORDS_DANCE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sTorterraTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BULLET_SEED, MOVE_CUT, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_GIGA_DRAIN, MOVE_HYPER_BEAM, MOVE_IRON_TAIL, MOVE_LIGHT_SCREEN, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_REFLECT, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SAFEGUARD, MOVE_SANDSTORM, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_STRENGTH, MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWORDS_DANCE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_TURTWIG @@ -18206,40 +18206,40 @@ static const u16 sChimcharTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_BULK_UP, + MOVE_COUNTER, MOVE_CUT, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, + MOVE_FIRE_PUNCH, MOVE_FLAMETHROWER, MOVE_FOCUS_PUNCH, MOVE_IRON_TAIL, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, MOVE_METRONOME, MOVE_MUD_SLAP, + MOVE_OVERHEAT, + MOVE_PROTECT, MOVE_PSYCH_UP, + MOVE_REST, MOVE_ROCK_SLIDE, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, MOVE_ROLLOUT, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_TAUNT, + MOVE_THIEF, MOVE_THUNDER_PUNCH, + MOVE_TORMENT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; @@ -18248,88 +18248,88 @@ static const u16 sMonfernoTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_BULK_UP, + MOVE_COUNTER, MOVE_CUT, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, + MOVE_FIRE_PUNCH, MOVE_FLAMETHROWER, MOVE_FOCUS_PUNCH, MOVE_IRON_TAIL, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, MOVE_METRONOME, MOVE_MUD_SLAP, + MOVE_OVERHEAT, + MOVE_PROTECT, MOVE_PSYCH_UP, + MOVE_REST, MOVE_ROCK_SLIDE, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, MOVE_ROLLOUT, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_TAUNT, + MOVE_THIEF, MOVE_THUNDER_PUNCH, + MOVE_TORMENT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sInfernapeTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULK_UP, MOVE_CALM_MIND, + MOVE_COUNTER, MOVE_CUT, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, + MOVE_FIRE_PUNCH, MOVE_FLAMETHROWER, MOVE_FOCUS_PUNCH, MOVE_HYPER_BEAM, MOVE_IRON_TAIL, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_REST, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, MOVE_METRONOME, MOVE_MUD_SLAP, + MOVE_OVERHEAT, + MOVE_PROTECT, MOVE_PSYCH_UP, + MOVE_REST, + MOVE_ROAR, MOVE_ROCK_SLIDE, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, MOVE_ROLLOUT, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_TAUNT, + MOVE_THIEF, MOVE_THUNDER_PUNCH, + MOVE_TORMENT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_CHIMCHAR @@ -18343,28 +18343,28 @@ static const u16 sPiplupTeachableLearnset[] = { MOVE_CUT, MOVE_DIG, MOVE_DIVE, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_HAIL, MOVE_ICE_BEAM, + MOVE_ICY_WIND, + MOVE_MUD_SLAP, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SURF, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_UNAVAILABLE, }; @@ -18376,29 +18376,29 @@ static const u16 sPrinplupTeachableLearnset[] = { MOVE_CUT, MOVE_DIG, MOVE_DIVE, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_HAIL, MOVE_ICE_BEAM, + MOVE_ICY_WIND, + MOVE_MUD_SLAP, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_STRENGTH, MOVE_SURF, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_UNAVAILABLE, }; @@ -18406,41 +18406,41 @@ static const u16 sEmpoleonTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_CUT, MOVE_DIG, MOVE_DIVE, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FURY_CUTTER, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, + MOVE_MUD_SLAP, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_STEEL_WING, MOVE_STRENGTH, MOVE_SURF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_PIPLUP @@ -18449,70 +18449,70 @@ static const u16 sEmpoleonTeachableLearnset[] = { static const u16 sStarlyTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLY, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MUD_SLAP, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_THIEF, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sStaraviaTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLY, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MUD_SLAP, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_THIEF, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sStaraptorTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLY, MOVE_HYPER_BEAM, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MUD_SLAP, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_THIEF, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_STARLY @@ -18522,36 +18522,36 @@ static const u16 sBidoofTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_CUT, + MOVE_DEFENSE_CURL, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FURY_CUTTER, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROCK_SMASH, + MOVE_ROLLOUT, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SUNNY_DAY, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, MOVE_TAUNT, MOVE_THIEF, MOVE_THUNDER, MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, - MOVE_ROLLOUT, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, - MOVE_SWORDS_DANCE, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; @@ -18559,43 +18559,43 @@ static const u16 sBibarelTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_CUT, + MOVE_DEFENSE_CURL, MOVE_DIG, MOVE_DIVE, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FOCUS_PUNCH, + MOVE_FURY_CUTTER, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROCK_SMASH, + MOVE_ROLLOUT, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_STRENGTH, MOVE_SUNNY_DAY, MOVE_SURF, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, MOVE_TAUNT, MOVE_THIEF, MOVE_THUNDER, MOVE_THUNDERBOLT, + MOVE_THUNDER_WAVE, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, - MOVE_ROLLOUT, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, - MOVE_SWORDS_DANCE, - MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_BIDOOF @@ -18613,25 +18613,25 @@ static const u16 sKricketuneTeachableLearnset[] = { MOVE_BRICK_BREAK, MOVE_CUT, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, + MOVE_FURY_CUTTER, MOVE_GIGA_DRAIN, MOVE_HYPER_BEAM, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROCK_SMASH, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_MUD_SLAP, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWORDS_DANCE, + MOVE_TAUNT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_KRICKETOT @@ -18639,93 +18639,93 @@ static const u16 sKricketuneTeachableLearnset[] = { #if P_FAMILY_SHINX static const u16 sShinxTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, + MOVE_FURY_CUTTER, MOVE_IRON_TAIL, MOVE_LIGHT_SCREEN, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROAR, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_STRENGTH, MOVE_SUNNY_DAY, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_THIEF, MOVE_THUNDER, MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_MUD_SLAP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sLuxioTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, + MOVE_FURY_CUTTER, MOVE_IRON_TAIL, MOVE_LIGHT_SCREEN, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROAR, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_STRENGTH, MOVE_SUNNY_DAY, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_THIEF, MOVE_THUNDER, MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_MUD_SLAP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sLuxrayTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, + MOVE_FURY_CUTTER, MOVE_HYPER_BEAM, MOVE_IRON_TAIL, MOVE_LIGHT_SCREEN, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROAR, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_STRENGTH, MOVE_SUNNY_DAY, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_THIEF, MOVE_THUNDER, MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_MUD_SLAP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_SHINX @@ -18734,84 +18734,84 @@ static const u16 sLuxrayTeachableLearnset[] = { static const u16 sCranidosTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, + MOVE_FIRE_PUNCH, MOVE_FLAMETHROWER, MOVE_ICE_BEAM, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SANDSTORM, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_STRENGTH, MOVE_SUNNY_DAY, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, MOVE_THIEF, MOVE_THUNDER, MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWORDS_DANCE, MOVE_THUNDER_PUNCH, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sRampardosTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_CUT, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_DRAGON_CLAW, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, + MOVE_FIRE_PUNCH, MOVE_FLAMETHROWER, MOVE_FOCUS_PUNCH, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SANDSTORM, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_STRENGTH, MOVE_SUNNY_DAY, MOVE_SURF, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, MOVE_THIEF, MOVE_THUNDER, MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWORDS_DANCE, MOVE_THUNDER_PUNCH, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_CRANIDOS @@ -18820,78 +18820,78 @@ static const u16 sRampardosTeachableLearnset[] = { static const u16 sShieldonTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, + MOVE_COUNTER, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, MOVE_ICE_BEAM, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SANDSTORM, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_STRENGTH, MOVE_SUNNY_DAY, + MOVE_SWAGGER, MOVE_TAUNT, MOVE_THUNDER, MOVE_THUNDERBOLT, MOVE_TORMENT, MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, MOVE_UNAVAILABLE, }; static const u16 sBastiodonTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, + MOVE_COUNTER, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SANDSTORM, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_STRENGTH, MOVE_SUNNY_DAY, + MOVE_SWAGGER, MOVE_TAUNT, MOVE_THUNDER, MOVE_THUNDERBOLT, MOVE_TORMENT, MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_SHIELDON @@ -18908,27 +18908,27 @@ static const u16 sWormadamPlantTeachableLearnset[] = { MOVE_BULLET_SEED, MOVE_DIG, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_GIGA_DRAIN, MOVE_HYPER_BEAM, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, MOVE_SAFEGUARD, MOVE_SHADOW_BALL, MOVE_SKILL_SWAP, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_PSYCH_UP, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, MOVE_SWAGGER, + MOVE_THIEF, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; @@ -18936,32 +18936,32 @@ static const u16 sWormadamSandyTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DIG, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_GIGA_DRAIN, MOVE_HYPER_BEAM, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROCK_TOMB, + MOVE_ROLLOUT, MOVE_SAFEGUARD, MOVE_SANDSTORM, MOVE_SHADOW_BALL, MOVE_SKILL_SWAP, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_ROLLOUT, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, MOVE_SWAGGER, + MOVE_THIEF, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; @@ -18969,27 +18969,27 @@ static const u16 sWormadamTrashTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DIG, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_GIGA_DRAIN, MOVE_HYPER_BEAM, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, MOVE_SAFEGUARD, MOVE_SHADOW_BALL, MOVE_SKILL_SWAP, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_PSYCH_UP, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, MOVE_SWAGGER, + MOVE_THIEF, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; @@ -18997,29 +18997,29 @@ static const u16 sMothimTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_GIGA_DRAIN, MOVE_HYPER_BEAM, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, MOVE_SAFEGUARD, MOVE_SHADOW_BALL, MOVE_SKILL_SWAP, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_THIEF, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_BURMY @@ -19038,24 +19038,24 @@ static const u16 sVespiquenTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CUT, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, + MOVE_FURY_CUTTER, MOVE_HYPER_BEAM, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_SUNNY_DAY, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_TAUNT, MOVE_THIEF, MOVE_TOXIC, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_MUD_SLAP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_COMBEE @@ -19065,32 +19065,32 @@ static const u16 sPachirisuTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_CUT, + MOVE_DEFENSE_CURL, MOVE_DIG, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_HYPER_BEAM, MOVE_IRON_TAIL, MOVE_LIGHT_SCREEN, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROLLOUT, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SUNNY_DAY, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_THIEF, MOVE_THUNDER, MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_DEFENSE_CURL, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_ROLLOUT, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_PACHIRISU @@ -19104,76 +19104,76 @@ static const u16 sBuizelTeachableLearnset[] = { MOVE_DIG, MOVE_DIVE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FOCUS_PUNCH, + MOVE_FURY_CUTTER, MOVE_HAIL, MOVE_ICE_BEAM, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROAR, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_STRENGTH, MOVE_SURF, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_TAUNT, MOVE_THIEF, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_ICE_PUNCH, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_UNAVAILABLE, }; static const u16 sFloatzelTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULK_UP, MOVE_DIG, MOVE_DIVE, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FOCUS_PUNCH, + MOVE_FURY_CUTTER, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, MOVE_IRON_TAIL, + MOVE_METRONOME, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROAR, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_STRENGTH, MOVE_SURF, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_TAUNT, MOVE_THIEF, MOVE_TORMENT, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_ICE_PUNCH, - MOVE_ICY_WIND, - MOVE_METRONOME, - MOVE_MUD_SLAP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_BUIZEL @@ -19182,49 +19182,49 @@ static const u16 sFloatzelTeachableLearnset[] = { static const u16 sCherubiTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULLET_SEED, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_GIGA_DRAIN, MOVE_PROTECT, MOVE_REST, - MOVE_SAFEGUARD, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, MOVE_ROLLOUT, + MOVE_SAFEGUARD, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWORDS_DANCE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sCherrimTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULLET_SEED, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_GIGA_DRAIN, MOVE_HYPER_BEAM, MOVE_PROTECT, MOVE_REST, - MOVE_SAFEGUARD, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, MOVE_ROLLOUT, + MOVE_SAFEGUARD, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWORDS_DANCE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_CHERUBI @@ -19233,65 +19233,65 @@ static const u16 sCherrimTeachableLearnset[] = { static const u16 sShellosTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, + MOVE_COUNTER, MOVE_DIVE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_HAIL, MOVE_ICE_BEAM, + MOVE_ICY_WIND, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_TOMB, MOVE_SANDSTORM, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SURF, + MOVE_SWAGGER, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, MOVE_UNAVAILABLE, }; static const u16 sGastrodonTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, + MOVE_COUNTER, MOVE_DIG, MOVE_DIVE, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SANDSTORM, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_STRENGTH, MOVE_SURF, + MOVE_SWAGGER, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_SHELLOS @@ -19300,75 +19300,75 @@ static const u16 sGastrodonTeachableLearnset[] = { static const u16 sDrifloonTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_CALM_MIND, MOVE_CUT, MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FLY, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SKILL_SWAP, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_BODY_SLAM, MOVE_DREAM_EATER, MOVE_ENDURE, MOVE_EXPLOSION, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FLY, MOVE_ICY_WIND, MOVE_MUD_SLAP, + MOVE_PROTECT, + MOVE_PSYCHIC, MOVE_PSYCH_UP, + MOVE_RAIN_DANCE, + MOVE_REST, MOVE_ROLLOUT, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sDrifblimTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_CALM_MIND, MOVE_CUT, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_EXPLOSION, MOVE_FACADE, MOVE_FLASH, MOVE_FLY, MOVE_HYPER_BEAM, + MOVE_ICY_WIND, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROLLOUT, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, MOVE_SKILL_SWAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SUNNY_DAY, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_THIEF, MOVE_THUNDER, MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_EXPLOSION, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_ROLLOUT, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_DRIFLOON @@ -19377,37 +19377,37 @@ static const u16 sDrifblimTeachableLearnset[] = { static const u16 sBunearyTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CUT, + MOVE_DEFENSE_CURL, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FIRE_PUNCH, MOVE_FOCUS_PUNCH, MOVE_ICE_BEAM, + MOVE_ICE_PUNCH, MOVE_IRON_TAIL, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROCK_SMASH, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_ICE_PUNCH, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_MUD_SLAP, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_THUNDERBOLT, MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, + MOVE_TOXIC, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; @@ -19415,41 +19415,41 @@ static const u16 sLopunnyTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_CUT, + MOVE_DEFENSE_CURL, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FIRE_PUNCH, MOVE_FOCUS_PUNCH, + MOVE_FURY_CUTTER, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICE_PUNCH, MOVE_IRON_TAIL, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROCK_SMASH, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_STRENGTH, MOVE_SUNNY_DAY, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_FURY_CUTTER, - MOVE_ICE_PUNCH, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_MUD_SLAP, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, + MOVE_TOXIC, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_BUNEARY @@ -19460,17 +19460,27 @@ static const u16 sGlameowTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CUT, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, + MOVE_FURY_CUTTER, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, MOVE_SNATCH, + MOVE_SNORE, MOVE_SUNNY_DAY, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_TAUNT, MOVE_THIEF, MOVE_THUNDER, @@ -19478,37 +19488,39 @@ static const u16 sGlameowTeachableLearnset[] = { MOVE_TORMENT, MOVE_TOXIC, MOVE_WATER_PULSE, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_UNAVAILABLE, }; static const u16 sPuruglyTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_CUT, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, + MOVE_FURY_CUTTER, MOVE_HYPER_BEAM, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROAR, + MOVE_ROLLOUT, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, MOVE_SNATCH, + MOVE_SNORE, MOVE_SUNNY_DAY, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_TAUNT, MOVE_THIEF, MOVE_THUNDER, @@ -19516,18 +19528,6 @@ static const u16 sPuruglyTeachableLearnset[] = { MOVE_TORMENT, MOVE_TOXIC, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_ROLLOUT, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_GLAMEOW @@ -19535,143 +19535,143 @@ static const u16 sPuruglyTeachableLearnset[] = { #if P_FAMILY_STUNKY static const u16 sStunkyTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_CUT, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, + MOVE_EXPLOSION, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, + MOVE_FURY_CUTTER, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROAR, MOVE_ROCK_SMASH, MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, MOVE_SNATCH, + MOVE_SNORE, MOVE_SUNNY_DAY, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_TAUNT, MOVE_THIEF, MOVE_TORMENT, MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_EXPLOSION, - MOVE_FURY_CUTTER, - MOVE_MUD_SLAP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_UNAVAILABLE, }; static const u16 sSkuntankTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_CUT, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, + MOVE_EXPLOSION, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, + MOVE_FURY_CUTTER, MOVE_HYPER_BEAM, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROAR, MOVE_ROCK_SMASH, MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, MOVE_SNATCH, + MOVE_SNORE, MOVE_STRENGTH, MOVE_SUNNY_DAY, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_TAUNT, MOVE_THIEF, MOVE_TORMENT, MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_EXPLOSION, - MOVE_FURY_CUTTER, - MOVE_MUD_SLAP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_STUNKY #if P_FAMILY_BRONZOR static const u16 sBronzorTeachableLearnset[] = { + MOVE_BODY_SLAM, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_LIGHT_SCREEN, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_TOMB, + MOVE_ROLLOUT, MOVE_SAFEGUARD, MOVE_SANDSTORM, MOVE_SHADOW_BALL, MOVE_SKILL_SWAP, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_PSYCH_UP, - MOVE_ROCK_SLIDE, - MOVE_ROLLOUT, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, MOVE_SWAGGER, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sBronzongTeachableLearnset[] = { + MOVE_BODY_SLAM, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, MOVE_EARTHQUAKE, + MOVE_ENDURE, + MOVE_EXPLOSION, MOVE_FACADE, MOVE_FLASH, MOVE_HYPER_BEAM, MOVE_LIGHT_SCREEN, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, + MOVE_ROLLOUT, MOVE_SAFEGUARD, MOVE_SANDSTORM, MOVE_SHADOW_BALL, MOVE_SKILL_SWAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_STRENGTH, MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_EXPLOSION, - MOVE_PSYCH_UP, - MOVE_ROCK_SLIDE, - MOVE_ROLLOUT, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_BRONZOR @@ -19681,23 +19681,23 @@ static const u16 sChatotTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLY, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_STEEL_WING, MOVE_SUNNY_DAY, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_TAUNT, MOVE_THIEF, MOVE_TORMENT, MOVE_TOXIC, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_CHATOT @@ -19705,34 +19705,34 @@ static const u16 sChatotTeachableLearnset[] = { #if P_FAMILY_SPIRITOMB static const u16 sSpiritombTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_HYPER_BEAM, + MOVE_ICY_WIND, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROCK_TOMB, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, MOVE_SKILL_SWAP, + MOVE_SLEEP_TALK, MOVE_SNATCH, + MOVE_SNORE, MOVE_SUNNY_DAY, + MOVE_SWAGGER, MOVE_TAUNT, MOVE_THIEF, MOVE_TORMENT, MOVE_TOXIC, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_SPIRITOMB @@ -19741,111 +19741,111 @@ static const u16 sSpiritombTeachableLearnset[] = { static const u16 sGibleTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_CUT, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_DRAGON_CLAW, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, + MOVE_FURY_CUTTER, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SANDSTORM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sGabiteTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_CUT, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_DRAGON_CLAW, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, + MOVE_FURY_CUTTER, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SANDSTORM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sGarchompTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_CUT, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_DRAGON_CLAW, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, + MOVE_FURY_CUTTER, MOVE_HYPER_BEAM, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SANDSTORM, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_STRENGTH, MOVE_SUNNY_DAY, MOVE_SURF, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_GIBLE @@ -19856,81 +19856,81 @@ static const u16 sRioluTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_BULK_UP, + MOVE_COUNTER, MOVE_DIG, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FOCUS_PUNCH, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_COUNTER, - MOVE_ENDURE, MOVE_FURY_CUTTER, MOVE_ICE_PUNCH, + MOVE_IRON_TAIL, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, MOVE_MUD_SLAP, + MOVE_PROTECT, MOVE_PSYCH_UP, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_ROAR, MOVE_ROCK_SLIDE, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, MOVE_SWORDS_DANCE, MOVE_THUNDER_PUNCH, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sLucarioTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULK_UP, MOVE_CALM_MIND, + MOVE_COUNTER, MOVE_DIG, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FOCUS_PUNCH, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SHADOW_BALL, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_ENDURE, MOVE_FURY_CUTTER, + MOVE_HYPER_BEAM, MOVE_ICE_PUNCH, + MOVE_IRON_TAIL, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, MOVE_METRONOME, MOVE_MUD_SLAP, + MOVE_PROTECT, + MOVE_PSYCHIC, MOVE_PSYCH_UP, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_ROAR, MOVE_ROCK_SLIDE, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SHADOW_BALL, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, MOVE_SWORDS_DANCE, MOVE_THUNDER_PUNCH, + MOVE_TOXIC, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_RIOLU @@ -19938,58 +19938,58 @@ static const u16 sLucarioTeachableLearnset[] = { #if P_FAMILY_HIPPOPOTAS static const u16 sHippopotasTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SANDSTORM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, + MOVE_TOXIC, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; static const u16 sHippowdonTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_HYPER_BEAM, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SANDSTORM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, + MOVE_TOXIC, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_HIPPOPOTAS @@ -20002,29 +20002,29 @@ static const u16 sSkorupiTeachableLearnset[] = { MOVE_CUT, MOVE_DIG, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, + MOVE_FURY_CUTTER, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_STRENGTH, MOVE_SUNNY_DAY, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, MOVE_TAUNT, MOVE_THIEF, MOVE_TORMENT, MOVE_TOXIC, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_MUD_SLAP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; @@ -20036,32 +20036,32 @@ static const u16 sDrapionTeachableLearnset[] = { MOVE_DIG, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, + MOVE_FURY_CUTTER, MOVE_HYPER_BEAM, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_STRENGTH, MOVE_SUNNY_DAY, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, MOVE_TAUNT, MOVE_THIEF, MOVE_TORMENT, MOVE_TOXIC, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_SKORUPI @@ -20072,39 +20072,39 @@ static const u16 sCroagunkTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_BULK_UP, + MOVE_COUNTER, MOVE_DIG, MOVE_DOUBLE_TEAM, + MOVE_DYNAMIC_PUNCH, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FOCUS_PUNCH, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SHADOW_BALL, - MOVE_SLUDGE_BOMB, - MOVE_SNATCH, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_COUNTER, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, MOVE_FURY_CUTTER, MOVE_ICE_PUNCH, MOVE_ICY_WIND, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, MOVE_MUD_SLAP, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, MOVE_ROCK_SLIDE, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SHADOW_BALL, MOVE_SLEEP_TALK, + MOVE_SLUDGE_BOMB, + MOVE_SNATCH, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, + MOVE_TAUNT, + MOVE_THIEF, MOVE_THUNDER_PUNCH, + MOVE_TORMENT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; @@ -20113,42 +20113,42 @@ static const u16 sToxicroakTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_BULK_UP, + MOVE_COUNTER, MOVE_CUT, MOVE_DIG, MOVE_DOUBLE_TEAM, + MOVE_DYNAMIC_PUNCH, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FOCUS_PUNCH, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SHADOW_BALL, - MOVE_SLUDGE_BOMB, - MOVE_SNATCH, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_COUNTER, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, MOVE_FURY_CUTTER, + MOVE_HYPER_BEAM, MOVE_ICE_PUNCH, MOVE_ICY_WIND, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, MOVE_MUD_SLAP, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, MOVE_ROCK_SLIDE, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SHADOW_BALL, MOVE_SLEEP_TALK, + MOVE_SLUDGE_BOMB, + MOVE_SNATCH, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWORDS_DANCE, + MOVE_TAUNT, + MOVE_THIEF, MOVE_THUNDER_PUNCH, + MOVE_TORMENT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_CROAGUNK @@ -20159,24 +20159,24 @@ static const u16 sCarnivineTeachableLearnset[] = { MOVE_BULLET_SEED, MOVE_CUT, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, + MOVE_FURY_CUTTER, MOVE_GIGA_DRAIN, MOVE_HYPER_BEAM, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_REST, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_MUD_SLAP, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWORDS_DANCE, + MOVE_THIEF, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_CARNIVINE @@ -20187,26 +20187,26 @@ static const u16 sFinneonTeachableLearnset[] = { MOVE_BLIZZARD, MOVE_DIVE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_HAIL, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, MOVE_SAFEGUARD, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SURF, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_THIEF, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_UNAVAILABLE, }; @@ -20216,27 +20216,27 @@ static const u16 sLumineonTeachableLearnset[] = { MOVE_BLIZZARD, MOVE_DIVE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, MOVE_SAFEGUARD, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SURF, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_THIEF, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_FINNEON @@ -20245,44 +20245,47 @@ static const u16 sLumineonTeachableLearnset[] = { static const u16 sSnoverTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_BULLET_SEED, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_GIGA_DRAIN, MOVE_HAIL, MOVE_ICE_BEAM, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, MOVE_IRON_TAIL, MOVE_LIGHT_SCREEN, + MOVE_MEGA_PUNCH, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_SAFEGUARD, MOVE_SHADOW_BALL, - MOVE_SOLAR_BEAM, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ICE_PUNCH, - MOVE_ICY_WIND, - MOVE_MEGA_PUNCH, - MOVE_MUD_SLAP, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, MOVE_SWAGGER, MOVE_SWORDS_DANCE, + MOVE_TOXIC, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; static const u16 sAbomasnowTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULLET_SEED, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_FOCUS_PUNCH, @@ -20290,32 +20293,29 @@ static const u16 sAbomasnowTeachableLearnset[] = { MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, MOVE_IRON_TAIL, MOVE_LIGHT_SCREEN, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SAFEGUARD, MOVE_SHADOW_BALL, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ICE_PUNCH, - MOVE_ICY_WIND, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, MOVE_SWAGGER, MOVE_SWORDS_DANCE, + MOVE_TOXIC, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_SNOVER @@ -20323,30 +20323,30 @@ static const u16 sAbomasnowTeachableLearnset[] = { #if P_FAMILY_ROTOM static const u16 sRotomTeachableLearnset[] = { MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_LIGHT_SCREEN, + MOVE_MUD_SLAP, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, MOVE_SNATCH, + MOVE_SNORE, MOVE_SUNNY_DAY, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_THIEF, MOVE_THUNDER, MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_ROTOM @@ -20355,14 +20355,21 @@ static const u16 sRotomTeachableLearnset[] = { static const u16 sUxieTeachableLearnset[] = { MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FIRE_PUNCH, MOVE_FLASH, MOVE_GIGA_DRAIN, MOVE_HYPER_BEAM, + MOVE_ICE_PUNCH, MOVE_IRON_TAIL, MOVE_LIGHT_SCREEN, + MOVE_METRONOME, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, @@ -20371,25 +20378,18 @@ static const u16 sUxieTeachableLearnset[] = { MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, MOVE_SKILL_SWAP, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_ICE_PUNCH, - MOVE_METRONOME, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, + MOVE_TOXIC, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_UXIE @@ -20398,15 +20398,23 @@ static const u16 sUxieTeachableLearnset[] = { static const u16 sMespritTeachableLearnset[] = { MOVE_BLIZZARD, MOVE_CALM_MIND, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FIRE_PUNCH, MOVE_FLASH, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICE_PUNCH, MOVE_IRON_TAIL, MOVE_LIGHT_SCREEN, + MOVE_METRONOME, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, @@ -20415,25 +20423,17 @@ static const u16 sMespritTeachableLearnset[] = { MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, MOVE_SKILL_SWAP, - MOVE_SUNNY_DAY, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_ICE_PUNCH, - MOVE_METRONOME, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, + MOVE_TOXIC, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_MESPRIT @@ -20441,16 +20441,25 @@ static const u16 sMespritTeachableLearnset[] = { #if P_FAMILY_AZELF static const u16 sAzelfTeachableLearnset[] = { MOVE_CALM_MIND, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_EXPLOSION, MOVE_FACADE, MOVE_FIRE_BLAST, + MOVE_FIRE_PUNCH, MOVE_FLAMETHROWER, MOVE_FLASH, MOVE_HYPER_BEAM, + MOVE_ICE_PUNCH, MOVE_IRON_TAIL, MOVE_LIGHT_SCREEN, + MOVE_METRONOME, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, @@ -20459,28 +20468,19 @@ static const u16 sAzelfTeachableLearnset[] = { MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, MOVE_SKILL_SWAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SUNNY_DAY, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_TAUNT, MOVE_THUNDER, MOVE_THUNDERBOLT, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, MOVE_TORMENT, MOVE_TOXIC, MOVE_WATER_PULSE, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_EXPLOSION, - MOVE_FIRE_PUNCH, - MOVE_ICE_PUNCH, - MOVE_METRONOME, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, - MOVE_THUNDER_PUNCH, - MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_AZELF @@ -20489,45 +20489,45 @@ static const u16 sAzelfTeachableLearnset[] = { static const u16 sDialgaTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULK_UP, MOVE_CUT, MOVE_DOUBLE_TEAM, MOVE_DRAGON_CLAW, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, MOVE_FLASH, + MOVE_FURY_CUTTER, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_OVERHEAT, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SAFEGUARD, MOVE_SANDSTORM, MOVE_SHOCK_WAVE, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_ROCK_SLIDE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_DIALGA @@ -20536,6 +20536,7 @@ static const u16 sDialgaTeachableLearnset[] = { static const u16 sPalkiaTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULK_UP, MOVE_CUT, @@ -20543,42 +20544,41 @@ static const u16 sPalkiaTeachableLearnset[] = { MOVE_DOUBLE_TEAM, MOVE_DRAGON_CLAW, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, MOVE_FOCUS_PUNCH, + MOVE_FURY_CUTTER, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, + MOVE_MUD_SLAP, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SAFEGUARD, MOVE_SANDSTORM, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_STRENGTH, MOVE_SUNNY_DAY, MOVE_SURF, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_THUNDER, MOVE_THUNDERBOLT, + MOVE_THUNDER_WAVE, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, - MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_PALKIA @@ -20586,34 +20586,34 @@ static const u16 sPalkiaTeachableLearnset[] = { #if P_FAMILY_HEATRAN static const u16 sHeatranTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_DIG, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, + MOVE_EXPLOSION, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, MOVE_HYPER_BEAM, + MOVE_MUD_SLAP, MOVE_OVERHEAT, MOVE_PROTECT, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SANDSTORM, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_STRENGTH, MOVE_SUNNY_DAY, + MOVE_SWAGGER, MOVE_TAUNT, MOVE_TORMENT, MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_EXPLOSION, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_HEATRAN @@ -20621,40 +20621,40 @@ static const u16 sHeatranTeachableLearnset[] = { #if P_FAMILY_REGIGIGAS static const u16 sRegigigasTeachableLearnset[] = { MOVE_AERIAL_ACE, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FIRE_PUNCH, MOVE_FOCUS_PUNCH, MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SHOCK_WAVE, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH, MOVE_ICY_WIND, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, MOVE_MUD_SLAP, + MOVE_PROTECT, MOVE_PSYCH_UP, + MOVE_RAIN_DANCE, + MOVE_REST, MOVE_ROCK_SLIDE, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SHOCK_WAVE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_REGIGIGAS @@ -20662,17 +20662,24 @@ static const u16 sRegigigasTeachableLearnset[] = { #if P_FAMILY_GIRATINA static const u16 sGiratinaTeachableLearnset[] = { MOVE_AERIAL_ACE, + MOVE_BODY_SLAM, MOVE_CALM_MIND, MOVE_CUT, MOVE_DOUBLE_TEAM, MOVE_DRAGON_CLAW, + MOVE_DREAM_EATER, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLY, + MOVE_FURY_CUTTER, MOVE_HYPER_BEAM, + MOVE_ICY_WIND, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROAR, @@ -20680,24 +20687,17 @@ static const u16 sGiratinaTeachableLearnset[] = { MOVE_SAFEGUARD, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_STEEL_WING, MOVE_STRENGTH, MOVE_SUNNY_DAY, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_GIRATINA @@ -20705,38 +20705,38 @@ static const u16 sGiratinaTeachableLearnset[] = { #if P_FAMILY_CRESSELIA static const u16 sCresseliaTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, + MOVE_FURY_CUTTER, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_LIGHT_SCREEN, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, MOVE_SAFEGUARD, MOVE_SHADOW_BALL, MOVE_SKILL_SWAP, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_CRESSELIA @@ -20747,25 +20747,25 @@ static const u16 sPhioneTeachableLearnset[] = { MOVE_CALM_MIND, MOVE_DIVE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_HAIL, MOVE_ICE_BEAM, + MOVE_ICY_WIND, + MOVE_MUD_SLAP, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, MOVE_SAFEGUARD, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SURF, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_UNAVAILABLE, }; @@ -20774,32 +20774,32 @@ static const u16 sManaphyTeachableLearnset[] = { MOVE_CALM_MIND, MOVE_DIVE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_LIGHT_SCREEN, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, MOVE_SAFEGUARD, MOVE_SHADOW_BALL, MOVE_SKILL_SWAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SURF, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_MANAPHY @@ -20812,41 +20812,41 @@ static const u16 sDarkraiTeachableLearnset[] = { MOVE_CALM_MIND, MOVE_CUT, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_FOCUS_PUNCH, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, MOVE_SNATCH, + MOVE_SNORE, MOVE_STRENGTH, MOVE_SUNNY_DAY, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, MOVE_TAUNT, MOVE_THIEF, MOVE_THUNDER, MOVE_THUNDERBOLT, + MOVE_THUNDER_WAVE, MOVE_TORMENT, MOVE_TOXIC, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, - MOVE_SWORDS_DANCE, - MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_DARKRAI @@ -20855,55 +20855,55 @@ static const u16 sDarkraiTeachableLearnset[] = { static const u16 sShayminLandTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_BULLET_SEED, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_GIGA_DRAIN, MOVE_HYPER_BEAM, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_REST, MOVE_SAFEGUARD, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sShayminSkyTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_BULLET_SEED, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_GIGA_DRAIN, MOVE_HYPER_BEAM, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_REST, MOVE_SAFEGUARD, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_SHAYMIN @@ -20912,66 +20912,66 @@ static const u16 sShayminSkyTeachableLearnset[] = { static const u16 sArceusTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULK_UP, MOVE_BULLET_SEED, MOVE_CALM_MIND, MOVE_CUT, MOVE_DIVE, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_DRAGON_CLAW, + MOVE_DREAM_EATER, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, MOVE_FLASH, MOVE_FLY, + MOVE_FURY_CUTTER, MOVE_GIGA_DRAIN, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_IRON_TAIL, MOVE_LIGHT_SCREEN, + MOVE_MUD_SLAP, MOVE_OVERHEAT, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SAFEGUARD, MOVE_SANDSTORM, + MOVE_SEISMIC_TOSS, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_STRENGTH, MOVE_SUNNY_DAY, MOVE_SURF, - MOVE_TAUNT, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_ROCK_SLIDE, - MOVE_SEISMIC_TOSS, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_TAUNT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_ARCEUS @@ -20979,40 +20979,40 @@ static const u16 sArceusTeachableLearnset[] = { #if P_FAMILY_VICTINI static const u16 sVictiniTeachableLearnset[] = { MOVE_BRICK_BREAK, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, + MOVE_FIRE_PUNCH, MOVE_FLAMETHROWER, MOVE_FLASH, MOVE_HYPER_BEAM, MOVE_LIGHT_SCREEN, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, MOVE_OVERHEAT, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_REST, MOVE_ROCK_SMASH, MOVE_SAFEGUARD, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, MOVE_SKILL_SWAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_TAUNT, MOVE_THUNDER, MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_VICTINI @@ -21024,7 +21024,9 @@ static const u16 sSnivyTeachableLearnset[] = { MOVE_BULLET_SEED, MOVE_CALM_MIND, MOVE_CUT, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_GIGA_DRAIN, @@ -21034,19 +21036,17 @@ static const u16 sSnivyTeachableLearnset[] = { MOVE_REFLECT, MOVE_REST, MOVE_SAFEGUARD, + MOVE_SLEEP_TALK, MOVE_SNATCH, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_TAUNT, + MOVE_TORMENT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; @@ -21056,7 +21056,9 @@ static const u16 sServineTeachableLearnset[] = { MOVE_BULLET_SEED, MOVE_CALM_MIND, MOVE_CUT, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_GIGA_DRAIN, @@ -21066,29 +21068,30 @@ static const u16 sServineTeachableLearnset[] = { MOVE_REFLECT, MOVE_REST, MOVE_SAFEGUARD, + MOVE_SLEEP_TALK, MOVE_SNATCH, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_TAUNT, + MOVE_TORMENT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sSerperiorTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BULLET_SEED, MOVE_CALM_MIND, MOVE_CUT, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_GIGA_DRAIN, @@ -21100,21 +21103,18 @@ static const u16 sSerperiorTeachableLearnset[] = { MOVE_REST, MOVE_ROCK_SMASH, MOVE_SAFEGUARD, + MOVE_SLEEP_TALK, MOVE_SNATCH, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_STRENGTH, MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_TAUNT, + MOVE_TORMENT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_SNIVY @@ -21122,109 +21122,109 @@ static const u16 sSerperiorTeachableLearnset[] = { #if P_FAMILY_TEPIG static const u16 sTepigTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, + MOVE_DEFENSE_CURL, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, + MOVE_FIRE_PUNCH, MOVE_FLAMETHROWER, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_OVERHEAT, MOVE_PROTECT, MOVE_REST, MOVE_ROAR, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_MUD_SLAP, MOVE_ROLLOUT, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, + MOVE_TAUNT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sPigniteTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULK_UP, + MOVE_DEFENSE_CURL, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, + MOVE_FIRE_PUNCH, MOVE_FLAMETHROWER, MOVE_FOCUS_PUNCH, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_OVERHEAT, MOVE_PROTECT, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, MOVE_ROLLOUT, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, + MOVE_TAUNT, MOVE_THUNDER_PUNCH, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sEmboarTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULK_UP, + MOVE_DEFENSE_CURL, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, + MOVE_FIRE_PUNCH, MOVE_FLAMETHROWER, MOVE_FOCUS_PUNCH, MOVE_HYPER_BEAM, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_OVERHEAT, MOVE_PROTECT, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, MOVE_ROLLOUT, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, + MOVE_TAUNT, MOVE_THUNDER_PUNCH, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_TEPIG @@ -21238,28 +21238,28 @@ static const u16 sOshawottTeachableLearnset[] = { MOVE_DIG, MOVE_DIVE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FURY_CUTTER, MOVE_HAIL, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_IRON_TAIL, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROCK_SMASH, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SURF, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, MOVE_TAUNT, MOVE_THIEF, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_ICY_WIND, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, - MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; @@ -21272,28 +21272,28 @@ static const u16 sDewottTeachableLearnset[] = { MOVE_DIG, MOVE_DIVE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FURY_CUTTER, MOVE_HAIL, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_IRON_TAIL, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROCK_SMASH, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SURF, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, MOVE_TAUNT, MOVE_THIEF, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_ICY_WIND, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, - MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; @@ -21301,36 +21301,36 @@ static const u16 sSamurottTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_CUT, MOVE_DIG, MOVE_DIVE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FURY_CUTTER, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_IRON_TAIL, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROCK_SMASH, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_STRENGTH, MOVE_SURF, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, MOVE_TAUNT, MOVE_THIEF, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_ICY_WIND, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, - MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; @@ -21338,28 +21338,28 @@ static const u16 sSamurottTeachableLearnset[] = { static const u16 sSamurottHisuiTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_DIG, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FURY_CUTTER, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_IRON_TAIL, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROCK_SMASH, + MOVE_SLEEP_TALK, MOVE_SURF, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, MOVE_TAUNT, MOVE_THIEF, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_ICY_WIND, - MOVE_SLEEP_TALK, - MOVE_SWIFT, - MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; #endif //P_HISUIAN_FORMS @@ -21379,13 +21379,13 @@ static const u16 sPatratTeachableLearnset[] = { MOVE_REST, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, - MOVE_SUNNY_DAY, - MOVE_THUNDERBOLT, - MOVE_TOXIC, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWORDS_DANCE, + MOVE_THUNDERBOLT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; @@ -21395,34 +21395,34 @@ static const u16 sWatchogTeachableLearnset[] = { MOVE_CUT, MOVE_DIG, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, MOVE_FACADE, + MOVE_FIRE_PUNCH, MOVE_FLAMETHROWER, MOVE_FLASH, MOVE_FOCUS_PUNCH, MOVE_HYPER_BEAM, + MOVE_ICE_PUNCH, MOVE_IRON_TAIL, MOVE_LIGHT_SCREEN, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROCK_SMASH, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_DREAM_EATER, - MOVE_FIRE_PUNCH, - MOVE_ICE_PUNCH, - MOVE_PSYCH_UP, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWORDS_DANCE, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_PATRAT @@ -21433,7 +21433,9 @@ static const u16 sLillipupTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DIG, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, @@ -21442,15 +21444,13 @@ static const u16 sLillipupTeachableLearnset[] = { MOVE_ROCK_TOMB, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, - MOVE_SUNNY_DAY, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_ENDURE, - MOVE_MUD_SLAP, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SUNNY_DAY, MOVE_SWAGGER, + MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; @@ -21459,7 +21459,9 @@ static const u16 sHerdierTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DIG, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, @@ -21468,17 +21470,15 @@ static const u16 sHerdierTeachableLearnset[] = { MOVE_ROCK_TOMB, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_STRENGTH, MOVE_SUNNY_DAY, MOVE_SURF, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, + MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; @@ -21487,8 +21487,10 @@ static const u16 sStoutlandTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DIG, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_HYPER_BEAM, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, @@ -21497,18 +21499,16 @@ static const u16 sStoutlandTeachableLearnset[] = { MOVE_ROCK_TOMB, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_STRENGTH, MOVE_SUNNY_DAY, MOVE_SURF, + MOVE_SWAGGER, MOVE_THUNDER, MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_LILLIPUP @@ -21519,26 +21519,26 @@ static const u16 sPurrloinTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CUT, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_IRON_TAIL, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, MOVE_SHADOW_BALL, - MOVE_SNATCH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_PSYCH_UP, MOVE_SLEEP_TALK, + MOVE_SNATCH, MOVE_SNORE, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_TAUNT, + MOVE_THIEF, MOVE_THUNDER_WAVE, + MOVE_TORMENT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; @@ -21547,28 +21547,28 @@ static const u16 sLiepardTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CUT, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_HYPER_BEAM, MOVE_IRON_TAIL, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROCK_SMASH, MOVE_SHADOW_BALL, - MOVE_SNATCH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_PSYCH_UP, MOVE_SLEEP_TALK, + MOVE_SNATCH, MOVE_SNORE, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_TAUNT, + MOVE_THIEF, MOVE_THUNDER_WAVE, + MOVE_TORMENT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_PURRLOIN @@ -21589,15 +21589,15 @@ static const u16 sPansageTeachableLearnset[] = { MOVE_REST, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, + MOVE_SWAGGER, MOVE_TAUNT, MOVE_THIEF, MOVE_TORMENT, MOVE_TOXIC, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, MOVE_UNAVAILABLE, }; @@ -21616,18 +21616,18 @@ static const u16 sSimisageTeachableLearnset[] = { MOVE_IRON_TAIL, MOVE_PROTECT, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, + MOVE_SWAGGER, MOVE_TAUNT, MOVE_THIEF, MOVE_TORMENT, MOVE_TOXIC, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_PANSAGE @@ -21640,6 +21640,7 @@ static const u16 sPansearTeachableLearnset[] = { MOVE_DOUBLE_TEAM, MOVE_FACADE, MOVE_FIRE_BLAST, + MOVE_FIRE_PUNCH, MOVE_FLAMETHROWER, MOVE_FOCUS_PUNCH, MOVE_IRON_TAIL, @@ -21648,16 +21649,15 @@ static const u16 sPansearTeachableLearnset[] = { MOVE_REST, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, + MOVE_SWAGGER, MOVE_TAUNT, MOVE_THIEF, MOVE_TORMENT, MOVE_TOXIC, - MOVE_FIRE_PUNCH, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, MOVE_UNAVAILABLE, }; @@ -21669,6 +21669,7 @@ static const u16 sSimisearTeachableLearnset[] = { MOVE_DOUBLE_TEAM, MOVE_FACADE, MOVE_FIRE_BLAST, + MOVE_FIRE_PUNCH, MOVE_FLAMETHROWER, MOVE_FOCUS_PUNCH, MOVE_HYPER_BEAM, @@ -21676,19 +21677,18 @@ static const u16 sSimisearTeachableLearnset[] = { MOVE_OVERHEAT, MOVE_PROTECT, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, + MOVE_SWAGGER, MOVE_TAUNT, MOVE_THIEF, MOVE_TORMENT, MOVE_TOXIC, - MOVE_FIRE_PUNCH, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_PANSEAR @@ -21705,24 +21705,24 @@ static const u16 sPanpourTeachableLearnset[] = { MOVE_FOCUS_PUNCH, MOVE_HAIL, MOVE_ICE_BEAM, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, MOVE_IRON_TAIL, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SURF, + MOVE_SWAGGER, MOVE_TAUNT, MOVE_THIEF, MOVE_TORMENT, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_ICE_PUNCH, - MOVE_ICY_WIND, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, MOVE_UNAVAILABLE, }; @@ -21739,25 +21739,25 @@ static const u16 sSimipourTeachableLearnset[] = { MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, MOVE_IRON_TAIL, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SURF, + MOVE_SWAGGER, MOVE_TAUNT, MOVE_THIEF, MOVE_TORMENT, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_ICE_PUNCH, - MOVE_ICY_WIND, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_PANPOUR @@ -21766,65 +21766,65 @@ static const u16 sSimipourTeachableLearnset[] = { static const u16 sMunnaTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, + MOVE_DEFENSE_CURL, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_LIGHT_SCREEN, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_TOMB, MOVE_SAFEGUARD, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, MOVE_SKILL_SWAP, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_DEFENSE_CURL, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_PSYCH_UP, - MOVE_ROCK_SLIDE, MOVE_SLEEP_TALK, MOVE_SNORE, MOVE_SWAGGER, MOVE_SWIFT, MOVE_THUNDER_WAVE, + MOVE_TORMENT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sMusharnaTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, + MOVE_DEFENSE_CURL, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_HYPER_BEAM, MOVE_LIGHT_SCREEN, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_TOMB, MOVE_SAFEGUARD, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, MOVE_SKILL_SWAP, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_DEFENSE_CURL, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_PSYCH_UP, - MOVE_ROCK_SLIDE, MOVE_SLEEP_TALK, MOVE_SNORE, MOVE_SWAGGER, MOVE_SWIFT, MOVE_THUNDER_WAVE, + MOVE_TORMENT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_MUNNA @@ -21834,20 +21834,20 @@ static const u16 sPidoveTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLY, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_ENDURE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_TAUNT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; @@ -21855,20 +21855,20 @@ static const u16 sTranquillTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLY, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_ENDURE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_TAUNT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; @@ -21876,22 +21876,22 @@ static const u16 sUnfezantTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLY, MOVE_HYPER_BEAM, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_ENDURE, - MOVE_PSYCH_UP, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_TAUNT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_PIDOVE @@ -21899,7 +21899,10 @@ static const u16 sUnfezantTeachableLearnset[] = { #if P_FAMILY_BLITZLE static const u16 sBlitzleTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_LIGHT_SCREEN, @@ -21907,25 +21910,25 @@ static const u16 sBlitzleTeachableLearnset[] = { MOVE_RAIN_DANCE, MOVE_REST, MOVE_SHOCK_WAVE, - MOVE_SNATCH, - MOVE_SUNNY_DAY, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, MOVE_SLEEP_TALK, + MOVE_SNATCH, MOVE_SNORE, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sZebstrikaTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_HYPER_BEAM, @@ -21937,20 +21940,17 @@ static const u16 sZebstrikaTeachableLearnset[] = { MOVE_ROAR, MOVE_ROCK_SMASH, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, MOVE_SNATCH, + MOVE_SNORE, MOVE_SUNNY_DAY, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_TAUNT, MOVE_THUNDER, MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_BLITZLE @@ -21960,21 +21960,21 @@ static const u16 sRoggenrolaTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, + MOVE_EXPLOSION, MOVE_FACADE, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SANDSTORM, - MOVE_STRENGTH, - MOVE_TOXIC, - MOVE_ENDURE, - MOVE_EXPLOSION, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, MOVE_SWAGGER, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; @@ -21982,21 +21982,21 @@ static const u16 sBoldoreTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, + MOVE_EXPLOSION, MOVE_FACADE, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SANDSTORM, - MOVE_STRENGTH, - MOVE_TOXIC, - MOVE_ENDURE, - MOVE_EXPLOSION, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, MOVE_SWAGGER, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; @@ -22004,23 +22004,23 @@ static const u16 sGigalithTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, + MOVE_EXPLOSION, MOVE_FACADE, MOVE_HYPER_BEAM, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SANDSTORM, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_TOXIC, - MOVE_ENDURE, - MOVE_EXPLOSION, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, MOVE_SWAGGER, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_ROGGENROLA @@ -22031,6 +22031,8 @@ static const u16 sWoobatTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_FLY, @@ -22038,6 +22040,7 @@ static const u16 sWoobatTeachableLearnset[] = { MOVE_LIGHT_SCREEN, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, @@ -22045,19 +22048,16 @@ static const u16 sWoobatTeachableLearnset[] = { MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, MOVE_SKILL_SWAP, - MOVE_STEEL_WING, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_PSYCH_UP, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STEEL_WING, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_TAUNT, + MOVE_THIEF, MOVE_THUNDER_WAVE, + MOVE_TORMENT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; @@ -22066,6 +22066,8 @@ static const u16 sSwoobatTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_FLY, @@ -22074,6 +22076,7 @@ static const u16 sSwoobatTeachableLearnset[] = { MOVE_LIGHT_SCREEN, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, @@ -22081,19 +22084,16 @@ static const u16 sSwoobatTeachableLearnset[] = { MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, MOVE_SKILL_SWAP, - MOVE_STEEL_WING, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_PSYCH_UP, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STEEL_WING, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_TAUNT, + MOVE_THIEF, MOVE_THUNDER_WAVE, + MOVE_TORMENT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_WOOBAT @@ -22105,57 +22105,57 @@ static const u16 sDrilburTeachableLearnset[] = { MOVE_BRICK_BREAK, MOVE_CUT, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SANDSTORM, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_STRENGTH, MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWORDS_DANCE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sExcadrillTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_CUT, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_HYPER_BEAM, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SANDSTORM, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_STRENGTH, MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWORDS_DANCE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_DRILBUR @@ -22164,48 +22164,48 @@ static const u16 sExcadrillTeachableLearnset[] = { static const u16 sAudinoTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_CALM_MIND, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, + MOVE_FIRE_PUNCH, MOVE_FLAMETHROWER, MOVE_FLASH, MOVE_FOCUS_PUNCH, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, MOVE_IRON_TAIL, MOVE_LIGHT_SCREEN, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, MOVE_SAFEGUARD, MOVE_SHADOW_BALL, MOVE_SKILL_SWAP, + MOVE_SLEEP_TALK, MOVE_SNATCH, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, MOVE_SURF, + MOVE_SWAGGER, MOVE_THUNDER, MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_ICE_PUNCH, - MOVE_ICY_WIND, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_AUDINO @@ -22215,33 +22215,33 @@ static const u16 sTimburrTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_BULK_UP, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TOXIC, MOVE_COUNTER, + MOVE_DIG, MOVE_DOUBLE_EDGE, + MOVE_DOUBLE_TEAM, MOVE_DYNAMIC_PUNCH, MOVE_ENDURE, + MOVE_FACADE, MOVE_FIRE_PUNCH, + MOVE_FOCUS_PUNCH, MOVE_ICE_PUNCH, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, MOVE_ROCK_SLIDE, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, + MOVE_TAUNT, + MOVE_THIEF, MOVE_THUNDER_PUNCH, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; @@ -22249,70 +22249,70 @@ static const u16 sGurdurrTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_BULK_UP, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TOXIC, MOVE_COUNTER, + MOVE_DIG, MOVE_DOUBLE_EDGE, + MOVE_DOUBLE_TEAM, MOVE_DYNAMIC_PUNCH, MOVE_ENDURE, + MOVE_FACADE, MOVE_FIRE_PUNCH, + MOVE_FOCUS_PUNCH, MOVE_ICE_PUNCH, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, MOVE_ROCK_SLIDE, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, + MOVE_TAUNT, + MOVE_THIEF, MOVE_THUNDER_PUNCH, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sConkeldurrTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULK_UP, + MOVE_COUNTER, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DYNAMIC_PUNCH, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FIRE_PUNCH, MOVE_FOCUS_PUNCH, MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, MOVE_ROCK_SLIDE, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, + MOVE_TAUNT, + MOVE_THIEF, MOVE_THUNDER_PUNCH, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_TIMBURR @@ -22321,44 +22321,44 @@ static const u16 sConkeldurrTeachableLearnset[] = { static const u16 sTympoleTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_HAIL, + MOVE_ICY_WIND, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_SURF, + MOVE_SWAGGER, MOVE_TOXIC, MOVE_WATER_PULSE, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, MOVE_UNAVAILABLE, }; static const u16 sPalpitoadTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FOCUS_PUNCH, MOVE_HAIL, + MOVE_ICY_WIND, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROCK_SMASH, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_SURF, + MOVE_SWAGGER, MOVE_TOXIC, MOVE_WATER_PULSE, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, MOVE_UNAVAILABLE, }; @@ -22369,30 +22369,30 @@ static const u16 sSeismitoadTeachableLearnset[] = { MOVE_DIVE, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FOCUS_PUNCH, MOVE_HAIL, MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SLUDGE_BOMB, - MOVE_STRENGTH, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_ENDURE, MOVE_ICE_PUNCH, MOVE_ICY_WIND, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, MOVE_MUD_SLAP, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, MOVE_ROCK_SLIDE, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, MOVE_SLEEP_TALK, + MOVE_SLUDGE_BOMB, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SURF, MOVE_SWAGGER, + MOVE_TOXIC, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_TYMPOLE @@ -22400,34 +22400,34 @@ static const u16 sSeismitoadTeachableLearnset[] = { #if P_FAMILY_THROH static const u16 sThrohTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULK_UP, MOVE_DIG, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_BODY_SLAM, MOVE_ENDURE, + MOVE_FACADE, MOVE_FIRE_PUNCH, + MOVE_FOCUS_PUNCH, MOVE_ICE_PUNCH, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, MOVE_ROCK_SLIDE, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, MOVE_SEISMIC_TOSS, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, + MOVE_TAUNT, MOVE_THUNDER_PUNCH, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_THROH @@ -22437,31 +22437,31 @@ static const u16 sSawkTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_BULK_UP, + MOVE_COUNTER, MOVE_DIG, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_COUNTER, MOVE_ENDURE, + MOVE_FACADE, MOVE_FIRE_PUNCH, + MOVE_FOCUS_PUNCH, MOVE_ICE_PUNCH, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, MOVE_ROCK_SLIDE, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, + MOVE_TAUNT, MOVE_THUNDER_PUNCH, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_SAWK @@ -22472,6 +22472,8 @@ static const u16 sSewaddleTeachableLearnset[] = { MOVE_CALM_MIND, MOVE_CUT, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_GIGA_DRAIN, @@ -22480,14 +22482,12 @@ static const u16 sSewaddleTeachableLearnset[] = { MOVE_RAIN_DANCE, MOVE_REST, MOVE_SAFEGUARD, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_DREAM_EATER, - MOVE_ENDURE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, MOVE_SWAGGER, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; @@ -22496,6 +22496,8 @@ static const u16 sSwadloonTeachableLearnset[] = { MOVE_CALM_MIND, MOVE_CUT, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_GIGA_DRAIN, @@ -22504,14 +22506,12 @@ static const u16 sSwadloonTeachableLearnset[] = { MOVE_RAIN_DANCE, MOVE_REST, MOVE_SAFEGUARD, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_DREAM_EATER, - MOVE_ENDURE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, MOVE_SWAGGER, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; @@ -22522,6 +22522,8 @@ static const u16 sLeavannyTeachableLearnset[] = { MOVE_CALM_MIND, MOVE_CUT, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_GIGA_DRAIN, @@ -22532,16 +22534,14 @@ static const u16 sLeavannyTeachableLearnset[] = { MOVE_REFLECT, MOVE_REST, MOVE_SAFEGUARD, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_STEEL_WING, MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWORDS_DANCE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_SEWADDLE @@ -22549,77 +22549,77 @@ static const u16 sLeavannyTeachableLearnset[] = { #if P_FAMILY_VENIPEDE static const u16 sVenipedeTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FURY_CUTTER, MOVE_PROTECT, MOVE_REST, MOVE_ROCK_SMASH, - MOVE_SLUDGE_BOMB, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FURY_CUTTER, MOVE_ROLLOUT, MOVE_SLEEP_TALK, + MOVE_SLUDGE_BOMB, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, MOVE_SWAGGER, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sWhirlipedeTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FURY_CUTTER, MOVE_PROTECT, MOVE_REST, MOVE_ROCK_SMASH, - MOVE_SLUDGE_BOMB, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FURY_CUTTER, MOVE_ROLLOUT, MOVE_SLEEP_TALK, + MOVE_SLUDGE_BOMB, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, MOVE_SWAGGER, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sScolipedeTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CUT, + MOVE_DEFENSE_CURL, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FURY_CUTTER, MOVE_HYPER_BEAM, MOVE_IRON_TAIL, MOVE_PROTECT, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, MOVE_SNATCH, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_STRENGTH, MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_ROCK_SLIDE, - MOVE_ROLLOUT, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWORDS_DANCE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_VENIPEDE @@ -22628,28 +22628,30 @@ static const u16 sScolipedeTeachableLearnset[] = { static const u16 sCottoneeTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_GIGA_DRAIN, MOVE_PROTECT, MOVE_REST, MOVE_SAFEGUARD, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_DREAM_EATER, - MOVE_ENDURE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_TAUNT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sWhimsicottTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_GIGA_DRAIN, @@ -22660,17 +22662,15 @@ static const u16 sWhimsicottTeachableLearnset[] = { MOVE_REST, MOVE_SAFEGUARD, MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_TAUNT, MOVE_THIEF, MOVE_TOXIC, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_COTTONEE @@ -22681,20 +22681,20 @@ static const u16 sPetililTeachableLearnset[] = { MOVE_BULLET_SEED, MOVE_CUT, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_GIGA_DRAIN, MOVE_PROTECT, MOVE_REST, MOVE_SAFEGUARD, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_DREAM_EATER, - MOVE_ENDURE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, MOVE_SWAGGER, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; @@ -22703,24 +22703,24 @@ static const u16 sLilligantTeachableLearnset[] = { MOVE_BULLET_SEED, MOVE_CUT, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_GIGA_DRAIN, MOVE_HYPER_BEAM, MOVE_LIGHT_SCREEN, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_REST, MOVE_SAFEGUARD, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_PSYCH_UP, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWORDS_DANCE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; @@ -22729,20 +22729,20 @@ static const u16 sLilligantHisuiTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_BRICK_BREAK, MOVE_BULLET_SEED, + MOVE_ENDURE, MOVE_FACADE, MOVE_GIGA_DRAIN, MOVE_HYPER_BEAM, + MOVE_MEGA_KICK, + MOVE_METRONOME, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROCK_SMASH, + MOVE_SLEEP_TALK, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, - MOVE_ENDURE, - MOVE_MEGA_KICK, - MOVE_METRONOME, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; @@ -22755,67 +22755,67 @@ static const u16 sBasculinTeachableLearnset[] = { MOVE_BLIZZARD, MOVE_CUT, MOVE_DIVE, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SURF, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_TAUNT, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_UNAVAILABLE, }; #if P_HISUIAN_FORMS static const u16 sBasculinWhiteStripedTeachableLearnset[] = { MOVE_BLIZZARD, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, MOVE_FACADE, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_SLEEP_TALK, MOVE_SURF, + MOVE_SWIFT, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_SLEEP_TALK, - MOVE_SWIFT, MOVE_UNAVAILABLE, }; static const u16 sBasculegionTeachableLearnset[] = { MOVE_BLIZZARD, MOVE_CALM_MIND, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, MOVE_FACADE, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_PROTECT, MOVE_PSYCHIC, MOVE_RAIN_DANCE, MOVE_REST, MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, MOVE_SURF, + MOVE_SWIFT, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_SLEEP_TALK, - MOVE_SWIFT, MOVE_UNAVAILABLE, }; #endif //P_HISUIAN_FORMS @@ -22824,113 +22824,113 @@ static const u16 sBasculegionTeachableLearnset[] = { #if P_FAMILY_SANDILE static const u16 sSandileTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, + MOVE_COUNTER, MOVE_CUT, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_TOMB, MOVE_SANDSTORM, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, MOVE_SNATCH, + MOVE_SNORE, + MOVE_SWAGGER, MOVE_TAUNT, MOVE_THIEF, MOVE_TORMENT, MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, MOVE_UNAVAILABLE, }; static const u16 sKrokorokTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, + MOVE_COUNTER, MOVE_CUT, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_DRAGON_CLAW, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FOCUS_PUNCH, MOVE_IRON_TAIL, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SANDSTORM, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, MOVE_SNATCH, + MOVE_SNORE, MOVE_STRENGTH, + MOVE_SWAGGER, MOVE_TAUNT, MOVE_THIEF, MOVE_TORMENT, MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, MOVE_UNAVAILABLE, }; static const u16 sKrookodileTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULK_UP, + MOVE_COUNTER, MOVE_CUT, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_DRAGON_CLAW, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FOCUS_PUNCH, MOVE_HYPER_BEAM, MOVE_IRON_TAIL, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SANDSTORM, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, MOVE_SNATCH, + MOVE_SNORE, MOVE_STRENGTH, + MOVE_SWAGGER, MOVE_TAUNT, MOVE_THIEF, MOVE_TORMENT, MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_SANDILE @@ -22941,72 +22941,72 @@ static const u16 sDarumakaTeachableLearnset[] = { MOVE_BRICK_BREAK, MOVE_DIG, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, + MOVE_FIRE_PUNCH, MOVE_FLAMETHROWER, MOVE_FOCUS_PUNCH, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, MOVE_OVERHEAT, MOVE_PROTECT, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, MOVE_SNATCH, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_STRENGTH, MOVE_SUNNY_DAY, + MOVE_SWAGGER, MOVE_TAUNT, MOVE_THIEF, MOVE_TOXIC, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_ROCK_SLIDE, - MOVE_ROLLOUT, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, MOVE_UNAVAILABLE, }; static const u16 sDarmanitanTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULK_UP, MOVE_DIG, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, + MOVE_FIRE_PUNCH, MOVE_FLAMETHROWER, MOVE_FOCUS_PUNCH, MOVE_HYPER_BEAM, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, MOVE_OVERHEAT, MOVE_PROTECT, MOVE_PSYCHIC, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, MOVE_SNATCH, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_STRENGTH, MOVE_SUNNY_DAY, + MOVE_SWAGGER, MOVE_TAUNT, MOVE_THIEF, MOVE_TORMENT, MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_ROCK_SLIDE, - MOVE_ROLLOUT, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, MOVE_UNAVAILABLE, }; @@ -23016,61 +23016,61 @@ static const u16 sDarumakaGalarTeachableLearnset[] = { MOVE_BLIZZARD, MOVE_BRICK_BREAK, MOVE_DIG, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, + MOVE_FIRE_PUNCH, MOVE_FLAMETHROWER, MOVE_FOCUS_PUNCH, MOVE_ICE_BEAM, + MOVE_ICE_PUNCH, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, MOVE_OVERHEAT, MOVE_PROTECT, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_TOMB, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, MOVE_TAUNT, MOVE_THIEF, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_ICE_PUNCH, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_UNAVAILABLE, }; static const u16 sDarmanitanGalarTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULK_UP, MOVE_DIG, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, + MOVE_FIRE_PUNCH, MOVE_FLAMETHROWER, MOVE_FOCUS_PUNCH, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICE_PUNCH, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, MOVE_OVERHEAT, MOVE_PROTECT, MOVE_PSYCHIC, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_TOMB, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, MOVE_TAUNT, MOVE_THIEF, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_ICE_PUNCH, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_UNAVAILABLE, }; #endif //P_GALARIAN_FORMS @@ -23082,19 +23082,19 @@ static const u16 sMaractusTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULLET_SEED, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_GIGA_DRAIN, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_SAFEGUARD, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_ENDURE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, MOVE_SWAGGER, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_MARACTUS @@ -23103,55 +23103,55 @@ static const u16 sMaractusTeachableLearnset[] = { static const u16 sDwebbleTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_COUNTER, MOVE_CUT, MOVE_DIG, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FURY_CUTTER, MOVE_PROTECT, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SANDSTORM, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_TOXIC, - MOVE_COUNTER, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_ROCK_SLIDE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, MOVE_SWAGGER, MOVE_SWORDS_DANCE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sCrustleTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_COUNTER, MOVE_CUT, MOVE_DIG, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FURY_CUTTER, MOVE_HYPER_BEAM, MOVE_PROTECT, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SANDSTORM, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_TOXIC, - MOVE_COUNTER, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_ROCK_SLIDE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, MOVE_SWAGGER, MOVE_SWORDS_DANCE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_DWEBBLE @@ -23161,81 +23161,81 @@ static const u16 sScraggyTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_BULK_UP, + MOVE_COUNTER, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_DRAGON_CLAW, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FIRE_PUNCH, MOVE_FOCUS_PUNCH, + MOVE_ICE_PUNCH, MOVE_IRON_TAIL, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, MOVE_SNATCH, + MOVE_SNORE, MOVE_STRENGTH, MOVE_SUNNY_DAY, + MOVE_SWAGGER, MOVE_TAUNT, MOVE_THIEF, + MOVE_THUNDER_PUNCH, MOVE_TORMENT, MOVE_TOXIC, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_ICE_PUNCH, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_THUNDER_PUNCH, MOVE_UNAVAILABLE, }; static const u16 sScraftyTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULK_UP, + MOVE_COUNTER, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_DRAGON_CLAW, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FIRE_PUNCH, MOVE_FOCUS_PUNCH, MOVE_HYPER_BEAM, + MOVE_ICE_PUNCH, MOVE_IRON_TAIL, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_METRONOME, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, MOVE_SNATCH, + MOVE_SNORE, MOVE_STRENGTH, MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_ICE_PUNCH, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_METRONOME, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWORDS_DANCE, + MOVE_TAUNT, + MOVE_THIEF, MOVE_THUNDER_PUNCH, + MOVE_TORMENT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_SCRAGGY @@ -23246,14 +23246,18 @@ static const u16 sSigilyphTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_FLY, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_LIGHT_SCREEN, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, @@ -23261,19 +23265,15 @@ static const u16 sSigilyphTeachableLearnset[] = { MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, MOVE_SKILL_SWAP, - MOVE_SOLAR_BEAM, - MOVE_STEEL_WING, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_PSYCH_UP, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_STEEL_WING, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_THIEF, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_SIGILYPH @@ -23283,25 +23283,25 @@ static const u16 sYamaskTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, MOVE_SAFEGUARD, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_PSYCH_UP, MOVE_SLEEP_TALK, + MOVE_SNATCH, MOVE_SNORE, MOVE_SWAGGER, + MOVE_THIEF, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; @@ -23309,26 +23309,26 @@ static const u16 sCofagrigusTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_HYPER_BEAM, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, MOVE_SAFEGUARD, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_PSYCH_UP, MOVE_SLEEP_TALK, + MOVE_SNATCH, MOVE_SNORE, MOVE_SWAGGER, + MOVE_THIEF, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; @@ -23337,21 +23337,21 @@ static const u16 sYamaskGalarTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_PROTECT, MOVE_PSYCHIC, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_TOMB, MOVE_SAFEGUARD, MOVE_SANDSTORM, MOVE_SHADOW_BALL, MOVE_SKILL_SWAP, - MOVE_THIEF, - MOVE_ENDURE, - MOVE_ROCK_SLIDE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_THIEF, MOVE_UNAVAILABLE, }; @@ -23359,23 +23359,23 @@ static const u16 sRunerigusTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_HYPER_BEAM, MOVE_PROTECT, MOVE_PSYCHIC, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_TOMB, MOVE_SAFEGUARD, MOVE_SANDSTORM, MOVE_SHADOW_BALL, MOVE_SKILL_SWAP, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_ENDURE, - MOVE_ROCK_SLIDE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_TAUNT, + MOVE_THIEF, MOVE_UNAVAILABLE, }; #endif //P_GALARIAN_FORMS @@ -23385,65 +23385,65 @@ static const u16 sRunerigusTeachableLearnset[] = { static const u16 sTirtougaTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_DIG, MOVE_DIVE, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_IRON_TAIL, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, + MOVE_ROLLOUT, MOVE_SANDSTORM, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_STRENGTH, MOVE_SURF, + MOVE_SWAGGER, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_ROCK_SLIDE, - MOVE_ROLLOUT, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, MOVE_UNAVAILABLE, }; static const u16 sCarracostaTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_DIG, MOVE_DIVE, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_IRON_TAIL, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, + MOVE_ROLLOUT, MOVE_SANDSTORM, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_STRENGTH, MOVE_SURF, + MOVE_SWAGGER, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_ROCK_SLIDE, - MOVE_ROLLOUT, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_TIRTOUGA @@ -23457,24 +23457,24 @@ static const u16 sArchenTeachableLearnset[] = { MOVE_DOUBLE_TEAM, MOVE_DRAGON_CLAW, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_IRON_TAIL, MOVE_PROTECT, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SANDSTORM, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_STEEL_WING, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_TAUNT, MOVE_TORMENT, MOVE_TOXIC, - MOVE_ENDURE, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_UNAVAILABLE, }; @@ -23486,6 +23486,7 @@ static const u16 sArcheopsTeachableLearnset[] = { MOVE_DOUBLE_TEAM, MOVE_DRAGON_CLAW, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLY, MOVE_HYPER_BEAM, @@ -23493,19 +23494,18 @@ static const u16 sArcheopsTeachableLearnset[] = { MOVE_PROTECT, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SANDSTORM, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_STEEL_WING, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_TAUNT, MOVE_TORMENT, MOVE_TOXIC, - MOVE_ENDURE, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_ARCHEN @@ -23514,27 +23514,30 @@ static const u16 sArcheopsTeachableLearnset[] = { static const u16 sTrubbishTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, + MOVE_EXPLOSION, MOVE_FACADE, MOVE_GIGA_DRAIN, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, - MOVE_SLUDGE_BOMB, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_ENDURE, - MOVE_EXPLOSION, MOVE_ROLLOUT, MOVE_SLEEP_TALK, + MOVE_SLUDGE_BOMB, MOVE_SNORE, + MOVE_SUNNY_DAY, MOVE_SWAGGER, + MOVE_THIEF, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sGarbodorTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, + MOVE_EXPLOSION, MOVE_FACADE, MOVE_GIGA_DRAIN, MOVE_HYPER_BEAM, @@ -23542,19 +23545,16 @@ static const u16 sGarbodorTeachableLearnset[] = { MOVE_PSYCHIC, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, + MOVE_SWAGGER, MOVE_THIEF, MOVE_THUNDERBOLT, MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_EXPLOSION, - MOVE_ROLLOUT, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_TRUBBISH @@ -23564,69 +23564,69 @@ static const u16 sZoruaTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_CALM_MIND, + MOVE_COUNTER, MOVE_CUT, MOVE_DIG, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROAR, MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, MOVE_SNATCH, + MOVE_SNORE, MOVE_SUNNY_DAY, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, MOVE_TAUNT, MOVE_THIEF, MOVE_TORMENT, MOVE_TOXIC, - MOVE_COUNTER, - MOVE_ENDURE, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, - MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; static const u16 sZoroarkTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_CALM_MIND, + MOVE_COUNTER, MOVE_CUT, MOVE_DIG, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLAMETHROWER, MOVE_HYPER_BEAM, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROAR, MOVE_ROCK_SMASH, MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, MOVE_SNATCH, + MOVE_SNORE, MOVE_SUNNY_DAY, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, MOVE_TAUNT, MOVE_THIEF, MOVE_TORMENT, MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_ENDURE, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, - MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; @@ -23635,53 +23635,53 @@ static const u16 sZoruaHisuiTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_CALM_MIND, MOVE_DIG, + MOVE_ENDURE, MOVE_FACADE, MOVE_FOCUS_PUNCH, MOVE_HYPER_BEAM, + MOVE_ICY_WIND, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROAR, MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SWIFT, MOVE_TAUNT, MOVE_THIEF, MOVE_TORMENT, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SWIFT, MOVE_UNAVAILABLE, }; static const u16 sZoroarkHisuiTeachableLearnset[] = { MOVE_AERIAL_ACE, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_CALM_MIND, MOVE_DIG, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLAMETHROWER, MOVE_FOCUS_PUNCH, MOVE_HYPER_BEAM, + MOVE_ICY_WIND, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROAR, MOVE_ROCK_SMASH, MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, MOVE_TAUNT, MOVE_THIEF, MOVE_TORMENT, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SWIFT, - MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; #endif //P_HISUIAN_FORMS @@ -23694,24 +23694,24 @@ static const u16 sMinccinoTeachableLearnset[] = { MOVE_CALM_MIND, MOVE_DIG, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_SAFEGUARD, MOVE_SHOCK_WAVE, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_ENDURE, - MOVE_MUD_SLAP, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_THIEF, + MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; @@ -23720,29 +23720,29 @@ static const u16 sCinccinoTeachableLearnset[] = { MOVE_BULLET_SEED, MOVE_CALM_MIND, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_HYPER_BEAM, MOVE_IRON_TAIL, MOVE_LIGHT_SCREEN, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_SAFEGUARD, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SUNNY_DAY, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_THIEF, MOVE_THUNDER, MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_MINCCINO @@ -23752,34 +23752,34 @@ static const u16 sGothitaTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_LIGHT_SCREEN, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_TOMB, MOVE_SAFEGUARD, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_PSYCH_UP, - MOVE_ROCK_SLIDE, MOVE_SLEEP_TALK, + MOVE_SNATCH, MOVE_SNORE, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, + MOVE_TORMENT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; @@ -23787,74 +23787,74 @@ static const u16 sGothoritaTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_LIGHT_SCREEN, + MOVE_METRONOME, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_TOMB, MOVE_SAFEGUARD, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_METRONOME, - MOVE_PSYCH_UP, - MOVE_ROCK_SLIDE, MOVE_SLEEP_TALK, + MOVE_SNATCH, MOVE_SNORE, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, + MOVE_TORMENT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sGothitelleTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_HYPER_BEAM, MOVE_LIGHT_SCREEN, + MOVE_METRONOME, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_TOMB, MOVE_SAFEGUARD, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_METRONOME, - MOVE_PSYCH_UP, - MOVE_ROCK_SLIDE, MOVE_SLEEP_TALK, + MOVE_SNATCH, MOVE_SNORE, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, + MOVE_TORMENT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_GOTHITA @@ -23864,34 +23864,34 @@ static const u16 sSolosisTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_EXPLOSION, MOVE_FACADE, MOVE_FLASH, MOVE_LIGHT_SCREEN, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_TOMB, + MOVE_ROLLOUT, MOVE_SAFEGUARD, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_SUNNY_DAY, - MOVE_THUNDER, - MOVE_TOXIC, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_EXPLOSION, - MOVE_PSYCH_UP, - MOVE_ROCK_SLIDE, - MOVE_ROLLOUT, MOVE_SLEEP_TALK, + MOVE_SNATCH, MOVE_SNORE, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_THUNDER, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; @@ -23899,78 +23899,78 @@ static const u16 sDuosionTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_EXPLOSION, MOVE_FACADE, MOVE_FLASH, MOVE_LIGHT_SCREEN, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_TOMB, + MOVE_ROLLOUT, MOVE_SAFEGUARD, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_SUNNY_DAY, - MOVE_THUNDER, - MOVE_TOXIC, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_EXPLOSION, - MOVE_PSYCH_UP, - MOVE_ROCK_SLIDE, - MOVE_ROLLOUT, MOVE_SLEEP_TALK, + MOVE_SNATCH, MOVE_SNORE, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_THUNDER, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sReuniclusTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_EXPLOSION, MOVE_FACADE, + MOVE_FIRE_PUNCH, MOVE_FLASH, MOVE_FOCUS_PUNCH, MOVE_HYPER_BEAM, + MOVE_ICE_PUNCH, MOVE_LIGHT_SCREEN, + MOVE_MEGA_PUNCH, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, + MOVE_ROLLOUT, MOVE_SAFEGUARD, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, MOVE_SKILL_SWAP, + MOVE_SLEEP_TALK, MOVE_SNATCH, + MOVE_SNORE, MOVE_STRENGTH, MOVE_SUNNY_DAY, - MOVE_THUNDER, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_EXPLOSION, - MOVE_FIRE_PUNCH, - MOVE_ICE_PUNCH, - MOVE_MEGA_PUNCH, - MOVE_PSYCH_UP, - MOVE_ROCK_SLIDE, - MOVE_ROLLOUT, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_THUNDER, MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_SOLOSIS @@ -23980,25 +23980,25 @@ static const u16 sDucklettTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_DIVE, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLY, MOVE_HAIL, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, - MOVE_STEEL_WING, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ICY_WIND, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STEEL_WING, + MOVE_SURF, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_TOXIC, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; @@ -24006,26 +24006,26 @@ static const u16 sSwannaTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_DIVE, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLY, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, - MOVE_STEEL_WING, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ICY_WIND, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STEEL_WING, + MOVE_SURF, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_TOXIC, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_DUCKLETT @@ -24035,22 +24035,22 @@ static const u16 sVanilliteTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, + MOVE_EXPLOSION, MOVE_FACADE, MOVE_HAIL, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_LIGHT_SCREEN, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_ENDURE, - MOVE_EXPLOSION, - MOVE_ICY_WIND, MOVE_SLEEP_TALK, MOVE_SNORE, MOVE_SWAGGER, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; @@ -24058,22 +24058,22 @@ static const u16 sVanillishTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, + MOVE_EXPLOSION, MOVE_FACADE, MOVE_HAIL, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_LIGHT_SCREEN, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_ENDURE, - MOVE_EXPLOSION, - MOVE_ICY_WIND, MOVE_SLEEP_TALK, MOVE_SNORE, MOVE_SWAGGER, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; @@ -24081,23 +24081,23 @@ static const u16 sVanilluxeTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, + MOVE_EXPLOSION, MOVE_FACADE, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_LIGHT_SCREEN, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_ENDURE, - MOVE_EXPLOSION, - MOVE_ICY_WIND, MOVE_SLEEP_TALK, MOVE_SNORE, MOVE_SWAGGER, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_VANILLITE @@ -24105,9 +24105,12 @@ static const u16 sVanilluxeTeachableLearnset[] = { #if P_FAMILY_DEERLING static const u16 sDeerlingTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BULLET_SEED, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_GIGA_DRAIN, @@ -24117,25 +24120,25 @@ static const u16 sDeerlingTeachableLearnset[] = { MOVE_REST, MOVE_SAFEGUARD, MOVE_SHADOW_BALL, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sSawsbuckTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BULLET_SEED, MOVE_CUT, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_GIGA_DRAIN, @@ -24147,17 +24150,14 @@ static const u16 sSawsbuckTeachableLearnset[] = { MOVE_ROCK_SMASH, MOVE_SAFEGUARD, MOVE_SHADOW_BALL, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWORDS_DANCE, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_DEERLING @@ -24168,6 +24168,7 @@ static const u16 sEmolgaTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CUT, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_IRON_TAIL, @@ -24176,17 +24177,16 @@ static const u16 sEmolgaTeachableLearnset[] = { MOVE_RAIN_DANCE, MOVE_REST, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SOLAR_BEAM, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_TAUNT, MOVE_THUNDER, MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_ENDURE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_EMOLGA @@ -24195,47 +24195,47 @@ static const u16 sEmolgaTeachableLearnset[] = { static const u16 sKarrablastTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_COUNTER, MOVE_CUT, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FURY_CUTTER, MOVE_GIGA_DRAIN, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, - MOVE_TOXIC, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FURY_CUTTER, MOVE_SLEEP_TALK, MOVE_SNORE, MOVE_SWAGGER, MOVE_SWORDS_DANCE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sEscavalierTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_COUNTER, MOVE_CUT, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FURY_CUTTER, MOVE_GIGA_DRAIN, MOVE_HYPER_BEAM, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROCK_SMASH, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FURY_CUTTER, MOVE_SLEEP_TALK, MOVE_SNORE, MOVE_SWAGGER, MOVE_SWORDS_DANCE, + MOVE_TAUNT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_KARRABLAST @@ -24243,32 +24243,35 @@ static const u16 sEscavalierTeachableLearnset[] = { #if P_FAMILY_FOONGUS static const u16 sFoongusTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BULLET_SEED, + MOVE_DEFENSE_CURL, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_GIGA_DRAIN, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, - MOVE_SLUDGE_BOMB, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DEFENSE_CURL, - MOVE_ENDURE, MOVE_ROLLOUT, MOVE_SLEEP_TALK, + MOVE_SLUDGE_BOMB, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, MOVE_SWAGGER, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sAmoongussTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BULLET_SEED, + MOVE_DEFENSE_CURL, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_GIGA_DRAIN, @@ -24276,17 +24279,14 @@ static const u16 sAmoongussTeachableLearnset[] = { MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, - MOVE_SLUDGE_BOMB, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DEFENSE_CURL, - MOVE_ENDURE, MOVE_ROLLOUT, MOVE_SLEEP_TALK, + MOVE_SLUDGE_BOMB, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, MOVE_SWAGGER, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_FOONGUS @@ -24297,31 +24297,31 @@ static const u16 sFrillishTeachableLearnset[] = { MOVE_BLIZZARD, MOVE_DIVE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_GIGA_DRAIN, MOVE_HAIL, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, MOVE_SAFEGUARD, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_SURF, + MOVE_SWAGGER, MOVE_TAUNT, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, MOVE_UNAVAILABLE, }; @@ -24330,32 +24330,32 @@ static const u16 sJellicentTeachableLearnset[] = { MOVE_BLIZZARD, MOVE_DIVE, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_GIGA_DRAIN, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, MOVE_SAFEGUARD, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_SURF, + MOVE_SWAGGER, MOVE_TAUNT, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_FRILLISH @@ -24364,32 +24364,32 @@ static const u16 sJellicentTeachableLearnset[] = { static const u16 sAlomomolaTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_CALM_MIND, MOVE_DIVE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_LIGHT_SCREEN, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, MOVE_SAFEGUARD, MOVE_SHADOW_BALL, MOVE_SKILL_SWAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SURF, + MOVE_SWAGGER, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_ALOMOMOLA @@ -24399,25 +24399,25 @@ static const u16 sJoltikTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CUT, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, + MOVE_FURY_CUTTER, MOVE_GIGA_DRAIN, MOVE_LIGHT_SCREEN, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_SHOCK_WAVE, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_ENDURE, - MOVE_FURY_CUTTER, MOVE_SLEEP_TALK, MOVE_SNORE, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; @@ -24425,8 +24425,10 @@ static const u16 sGalvantulaTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CUT, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, + MOVE_FURY_CUTTER, MOVE_GIGA_DRAIN, MOVE_HYPER_BEAM, MOVE_LIGHT_SCREEN, @@ -24434,17 +24436,15 @@ static const u16 sGalvantulaTeachableLearnset[] = { MOVE_RAIN_DANCE, MOVE_REST, MOVE_SHOCK_WAVE, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_ENDURE, - MOVE_FURY_CUTTER, MOVE_SLEEP_TALK, MOVE_SNORE, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_JOLTIK @@ -24454,23 +24454,23 @@ static const u16 sFerroseedTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULLET_SEED, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, + MOVE_EXPLOSION, MOVE_FACADE, MOVE_FLASH, MOVE_GIGA_DRAIN, MOVE_PROTECT, MOVE_REST, MOVE_ROCK_SMASH, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_ENDURE, - MOVE_EXPLOSION, MOVE_ROLLOUT, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, MOVE_SWAGGER, + MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; @@ -24480,6 +24480,8 @@ static const u16 sFerrothornTeachableLearnset[] = { MOVE_BULLET_SEED, MOVE_CUT, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, + MOVE_EXPLOSION, MOVE_FACADE, MOVE_FLASH, MOVE_GIGA_DRAIN, @@ -24487,21 +24489,19 @@ static const u16 sFerrothornTeachableLearnset[] = { MOVE_PROTECT, MOVE_REST, MOVE_ROCK_SMASH, + MOVE_ROLLOUT, MOVE_SANDSTORM, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_STRENGTH, MOVE_SUNNY_DAY, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_ENDURE, - MOVE_EXPLOSION, - MOVE_ROLLOUT, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWORDS_DANCE, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_FERROSEED @@ -24509,6 +24509,7 @@ static const u16 sFerrothornTeachableLearnset[] = { #if P_FAMILY_KLINK static const u16 sKlinkTeachableLearnset[] = { MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_HYPER_BEAM, MOVE_PROTECT, @@ -24516,18 +24517,18 @@ static const u16 sKlinkTeachableLearnset[] = { MOVE_ROCK_SMASH, MOVE_SANDSTORM, MOVE_SHOCK_WAVE, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_ENDURE, MOVE_SLEEP_TALK, MOVE_SNORE, MOVE_SWAGGER, + MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sKlangTeachableLearnset[] = { MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_HYPER_BEAM, MOVE_PROTECT, @@ -24535,18 +24536,18 @@ static const u16 sKlangTeachableLearnset[] = { MOVE_ROCK_SMASH, MOVE_SANDSTORM, MOVE_SHOCK_WAVE, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_ENDURE, MOVE_SLEEP_TALK, MOVE_SNORE, MOVE_SWAGGER, + MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sKlinklangTeachableLearnset[] = { MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_HYPER_BEAM, MOVE_PROTECT, @@ -24554,14 +24555,13 @@ static const u16 sKlinklangTeachableLearnset[] = { MOVE_ROCK_SMASH, MOVE_SANDSTORM, MOVE_SHOCK_WAVE, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_ENDURE, MOVE_SLEEP_TALK, MOVE_SNORE, MOVE_SWAGGER, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_KLINK @@ -24574,7 +24574,9 @@ static const u16 sTynamoTeachableLearnset[] = { static const u16 sEelektrikTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_GIGA_DRAIN, @@ -24584,26 +24586,27 @@ static const u16 sEelektrikTeachableLearnset[] = { MOVE_RAIN_DANCE, MOVE_REST, MOVE_SHOCK_WAVE, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_ENDURE, MOVE_SLEEP_TALK, MOVE_SNORE, MOVE_SWAGGER, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sEelektrossTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULK_UP, MOVE_CUT, MOVE_DOUBLE_TEAM, MOVE_DRAGON_CLAW, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FIRE_PUNCH, MOVE_FLAMETHROWER, MOVE_FLASH, MOVE_FOCUS_PUNCH, @@ -24615,24 +24618,21 @@ static const u16 sEelektrossTeachableLearnset[] = { MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SHOCK_WAVE, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_ROCK_SLIDE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_TYNAMO @@ -24642,32 +24642,32 @@ static const u16 sElgyemTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_LIGHT_SCREEN, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_TOMB, MOVE_SAFEGUARD, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, MOVE_SKILL_SWAP, + MOVE_SLEEP_TALK, MOVE_SNATCH, + MOVE_SNORE, MOVE_STEEL_WING, + MOVE_SWAGGER, MOVE_THIEF, MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_PSYCH_UP, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; @@ -24675,33 +24675,33 @@ static const u16 sBeheeyemTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_HYPER_BEAM, MOVE_LIGHT_SCREEN, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_TOMB, MOVE_SAFEGUARD, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, MOVE_SKILL_SWAP, + MOVE_SLEEP_TALK, MOVE_SNATCH, + MOVE_SNORE, MOVE_STEEL_WING, + MOVE_SWAGGER, MOVE_THIEF, MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_PSYCH_UP, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_ELGYEM @@ -24711,6 +24711,8 @@ static const u16 sLitwickTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, @@ -24718,21 +24720,19 @@ static const u16 sLitwickTeachableLearnset[] = { MOVE_OVERHEAT, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_REST, MOVE_SAFEGUARD, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, + MOVE_SWAGGER, MOVE_TAUNT, MOVE_THIEF, MOVE_TOXIC, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, MOVE_UNAVAILABLE, }; @@ -24740,6 +24740,8 @@ static const u16 sLampentTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, @@ -24747,21 +24749,19 @@ static const u16 sLampentTeachableLearnset[] = { MOVE_OVERHEAT, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_REST, MOVE_SAFEGUARD, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, + MOVE_SWAGGER, MOVE_TAUNT, MOVE_THIEF, MOVE_TOXIC, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, MOVE_UNAVAILABLE, }; @@ -24769,6 +24769,8 @@ static const u16 sChandelureTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, @@ -24777,21 +24779,19 @@ static const u16 sChandelureTeachableLearnset[] = { MOVE_OVERHEAT, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_REST, MOVE_SAFEGUARD, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, + MOVE_SWAGGER, MOVE_TAUNT, MOVE_THIEF, MOVE_TOXIC, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_LITWICK @@ -24801,10 +24801,13 @@ static const u16 sAxewTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, + MOVE_COUNTER, MOVE_CUT, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_DRAGON_CLAW, + MOVE_ENDURE, MOVE_FACADE, MOVE_IRON_TAIL, MOVE_PROTECT, @@ -24814,19 +24817,16 @@ static const u16 sAxewTeachableLearnset[] = { MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_STRENGTH, MOVE_SUNNY_DAY, MOVE_SURF, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_TAUNT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; @@ -24834,10 +24834,13 @@ static const u16 sFraxureTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, + MOVE_COUNTER, MOVE_CUT, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_DRAGON_CLAW, + MOVE_ENDURE, MOVE_FACADE, MOVE_IRON_TAIL, MOVE_PROTECT, @@ -24847,31 +24850,32 @@ static const u16 sFraxureTeachableLearnset[] = { MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_STRENGTH, MOVE_SUNNY_DAY, MOVE_SURF, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_TAUNT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sHaxorusTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, + MOVE_COUNTER, MOVE_CUT, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_DRAGON_CLAW, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_HYPER_BEAM, MOVE_IRON_TAIL, @@ -24879,24 +24883,20 @@ static const u16 sHaxorusTeachableLearnset[] = { MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_STRENGTH, MOVE_SUNNY_DAY, MOVE_SURF, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_TAUNT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_AXEW @@ -24906,35 +24906,35 @@ static const u16 sCubchooTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_CUT, MOVE_DIG, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FOCUS_PUNCH, MOVE_HAIL, MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_STRENGTH, - MOVE_SURF, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_ENDURE, MOVE_ICE_PUNCH, MOVE_ICY_WIND, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, MOVE_MUD_SLAP, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, MOVE_ROCK_SLIDE, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SURF, MOVE_SWAGGER, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; @@ -24942,43 +24942,43 @@ static const u16 sBearticTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULK_UP, MOVE_CUT, MOVE_DIG, MOVE_DIVE, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FOCUS_PUNCH, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_STRENGTH, - MOVE_SURF, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, MOVE_ICE_PUNCH, MOVE_ICY_WIND, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, MOVE_MUD_SLAP, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_ROAR, MOVE_ROCK_SLIDE, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SURF, MOVE_SWAGGER, MOVE_SWORDS_DANCE, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_CUBCHOO @@ -24987,26 +24987,26 @@ static const u16 sBearticTeachableLearnset[] = { static const u16 sCryogonalTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, + MOVE_EXPLOSION, MOVE_FACADE, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_LIGHT_SCREEN, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, - MOVE_SOLAR_BEAM, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_EXPLOSION, - MOVE_ICY_WIND, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, MOVE_SWAGGER, + MOVE_TOXIC, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_CRYOGONAL @@ -25014,44 +25014,44 @@ static const u16 sCryogonalTeachableLearnset[] = { #if P_FAMILY_SHELMET static const u16 sShelmetTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_GIGA_DRAIN, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, - MOVE_SLUDGE_BOMB, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MUD_SLAP, MOVE_SLEEP_TALK, + MOVE_SLUDGE_BOMB, MOVE_SNORE, MOVE_SWAGGER, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sAccelgorTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_GIGA_DRAIN, MOVE_HYPER_BEAM, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_SANDSTORM, - MOVE_SLUDGE_BOMB, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MUD_SLAP, MOVE_SLEEP_TALK, + MOVE_SLUDGE_BOMB, MOVE_SNORE, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_SHELMET @@ -25062,49 +25062,49 @@ static const u16 sStunfiskTeachableLearnset[] = { MOVE_DIG, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_TOMB, MOVE_SANDSTORM, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_SURF, + MOVE_SWAGGER, MOVE_THUNDER, MOVE_THUNDERBOLT, + MOVE_THUNDER_WAVE, MOVE_TOXIC, MOVE_WATER_PULSE, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; #if P_GALARIAN_FORMS static const u16 sStunfiskGalarTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_COUNTER, MOVE_DIG, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_TOMB, MOVE_SANDSTORM, - MOVE_SLUDGE_BOMB, - MOVE_SURF, - MOVE_COUNTER, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, MOVE_SLEEP_TALK, + MOVE_SLUDGE_BOMB, MOVE_SNORE, + MOVE_SURF, MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; @@ -25120,28 +25120,28 @@ static const u16 sMienfooTeachableLearnset[] = { MOVE_CALM_MIND, MOVE_DIG, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FOCUS_PUNCH, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_ENDURE, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_PSYCH_UP, - MOVE_ROCK_SLIDE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_TAUNT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; @@ -25152,31 +25152,31 @@ static const u16 sMienshaoTeachableLearnset[] = { MOVE_BULK_UP, MOVE_CALM_MIND, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FOCUS_PUNCH, MOVE_HYPER_BEAM, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_PSYCH_UP, - MOVE_ROCK_SLIDE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_TAUNT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_MIENFOO @@ -25185,135 +25185,135 @@ static const u16 sMienshaoTeachableLearnset[] = { static const u16 sDruddigonTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_CUT, MOVE_DIG, MOVE_DOUBLE_TEAM, MOVE_DRAGON_CLAW, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FIRE_PUNCH, MOVE_FLAMETHROWER, MOVE_HYPER_BEAM, MOVE_IRON_TAIL, + MOVE_MEGA_PUNCH, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, MOVE_SNATCH, + MOVE_SNORE, MOVE_STRENGTH, MOVE_SUNNY_DAY, MOVE_SURF, + MOVE_SWAGGER, MOVE_TAUNT, + MOVE_THUNDER_PUNCH, MOVE_TORMENT, MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_MEGA_PUNCH, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_THUNDER_PUNCH, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_DRUDDIGON #if P_FAMILY_GOLETT static const u16 sGolettTeachableLearnset[] = { + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, + MOVE_DEFENSE_CURL, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DYNAMIC_PUNCH, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FIRE_PUNCH, MOVE_FLASH, MOVE_FOCUS_PUNCH, MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH, MOVE_ICY_WIND, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, MOVE_MUD_SLAP, + MOVE_PROTECT, + MOVE_PSYCHIC, MOVE_PSYCH_UP, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, MOVE_ROCK_SLIDE, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, MOVE_ROLLOUT, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, + MOVE_THIEF, MOVE_THUNDER_PUNCH, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sGolurkTeachableLearnset[] = { + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, + MOVE_DEFENSE_CURL, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_DYNAMIC_PUNCH, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FIRE_PUNCH, MOVE_FLASH, MOVE_FLY, MOVE_FOCUS_PUNCH, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH, MOVE_ICY_WIND, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, MOVE_MUD_SLAP, + MOVE_PROTECT, + MOVE_PSYCHIC, MOVE_PSYCH_UP, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, MOVE_ROCK_SLIDE, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, MOVE_ROLLOUT, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, + MOVE_THIEF, + MOVE_THUNDERBOLT, MOVE_THUNDER_PUNCH, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_GOLETT @@ -25326,25 +25326,25 @@ static const u16 sPawniardTeachableLearnset[] = { MOVE_CUT, MOVE_DIG, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FURY_CUTTER, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SANDSTORM, - MOVE_SNATCH, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_ENDURE, - MOVE_FURY_CUTTER, MOVE_SLEEP_TALK, + MOVE_SNATCH, MOVE_SNORE, MOVE_SWAGGER, MOVE_SWORDS_DANCE, + MOVE_TAUNT, + MOVE_THIEF, MOVE_THUNDER_WAVE, + MOVE_TORMENT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; @@ -25355,7 +25355,9 @@ static const u16 sBisharpTeachableLearnset[] = { MOVE_CUT, MOVE_DIG, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FURY_CUTTER, MOVE_HYPER_BEAM, MOVE_PROTECT, MOVE_RAIN_DANCE, @@ -25363,18 +25365,16 @@ static const u16 sBisharpTeachableLearnset[] = { MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SANDSTORM, - MOVE_SNATCH, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_ENDURE, - MOVE_FURY_CUTTER, MOVE_SLEEP_TALK, + MOVE_SNATCH, MOVE_SNORE, MOVE_SWAGGER, MOVE_SWORDS_DANCE, + MOVE_TAUNT, + MOVE_THIEF, MOVE_THUNDER_WAVE, + MOVE_TORMENT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; @@ -25383,21 +25383,21 @@ static const u16 sKingambitTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_BRICK_BREAK, MOVE_DIG, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FURY_CUTTER, MOVE_HYPER_BEAM, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROCK_TOMB, MOVE_SANDSTORM, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_ENDURE, - MOVE_FURY_CUTTER, MOVE_SLEEP_TALK, MOVE_SWORDS_DANCE, + MOVE_TAUNT, + MOVE_THIEF, MOVE_THUNDER_WAVE, + MOVE_TORMENT, MOVE_UNAVAILABLE, }; #endif //P_GEN_9_CROSS_EVOS @@ -25407,28 +25407,28 @@ static const u16 sKingambitTeachableLearnset[] = { static const u16 sBouffalantTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_CUT, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_STRENGTH, MOVE_SUNNY_DAY, MOVE_SURF, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWORDS_DANCE, + MOVE_TAUNT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_BOUFFALANT @@ -25437,83 +25437,83 @@ static const u16 sBouffalantTeachableLearnset[] = { static const u16 sRuffletTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BULK_UP, MOVE_CUT, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLY, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_STEEL_WING, MOVE_STRENGTH, MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sBraviaryTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BULK_UP, MOVE_CUT, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLY, MOVE_HYPER_BEAM, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_STEEL_WING, MOVE_STRENGTH, MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #if P_HISUIAN_FORMS static const u16 sBraviaryHisuiTeachableLearnset[] = { MOVE_AERIAL_ACE, + MOVE_BODY_SLAM, MOVE_BULK_UP, MOVE_CALM_MIND, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLY, MOVE_HYPER_BEAM, + MOVE_ICY_WIND, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SHADOW_BALL, - MOVE_SUNNY_DAY, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_PSYCH_UP, - MOVE_ROCK_SLIDE, MOVE_SLEEP_TALK, + MOVE_SUNNY_DAY, MOVE_SWIFT, MOVE_UNAVAILABLE, }; @@ -25525,29 +25525,29 @@ static const u16 sVullabyTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_CUT, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLY, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, MOVE_SNATCH, + MOVE_SNORE, MOVE_STEEL_WING, MOVE_SUNNY_DAY, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_TAUNT, MOVE_THIEF, MOVE_TORMENT, MOVE_TOXIC, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_UNAVAILABLE, }; @@ -25555,31 +25555,31 @@ static const u16 sMandibuzzTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_CUT, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLY, MOVE_HYPER_BEAM, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SANDSTORM, MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, MOVE_SNATCH, + MOVE_SNORE, MOVE_STEEL_WING, MOVE_SUNNY_DAY, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_TAUNT, MOVE_THIEF, MOVE_TORMENT, MOVE_TOXIC, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_VULLABY @@ -25588,11 +25588,14 @@ static const u16 sMandibuzzTeachableLearnset[] = { static const u16 sHeatmorTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_CUT, MOVE_DIG, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, + MOVE_FIRE_PUNCH, MOVE_FLAMETHROWER, MOVE_FOCUS_PUNCH, MOVE_GIGA_DRAIN, @@ -25602,19 +25605,16 @@ static const u16 sHeatmorTeachableLearnset[] = { MOVE_REST, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, + MOVE_SLEEP_TALK, MOVE_SNATCH, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, + MOVE_SWAGGER, MOVE_TAUNT, MOVE_THIEF, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, MOVE_THUNDER_PUNCH, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_HEATMOR @@ -25626,21 +25626,21 @@ static const u16 sDurantTeachableLearnset[] = { MOVE_CUT, MOVE_DIG, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FURY_CUTTER, MOVE_PROTECT, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SANDSTORM, - MOVE_STRENGTH, - MOVE_TOXIC, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_ROCK_SLIDE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, MOVE_SWAGGER, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_DURANT @@ -25648,60 +25648,62 @@ static const u16 sDurantTeachableLearnset[] = { #if P_FAMILY_DEINO static const u16 sDeinoTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROAR, MOVE_ROCK_SMASH, MOVE_SHOCK_WAVE, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_PSYCH_UP, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, + MOVE_TAUNT, + MOVE_THIEF, MOVE_THUNDER_WAVE, + MOVE_TORMENT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sZweilousTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROAR, MOVE_ROCK_SMASH, MOVE_SHOCK_WAVE, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_PSYCH_UP, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, + MOVE_TAUNT, + MOVE_THIEF, MOVE_THUNDER_WAVE, + MOVE_TORMENT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sHydreigonTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, @@ -25709,29 +25711,27 @@ static const u16 sHydreigonTeachableLearnset[] = { MOVE_HYPER_BEAM, MOVE_IRON_TAIL, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_STEEL_WING, MOVE_STRENGTH, MOVE_SUNNY_DAY, MOVE_SURF, + MOVE_SWAGGER, MOVE_TAUNT, MOVE_THIEF, + MOVE_THUNDER_WAVE, MOVE_TORMENT, MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_PSYCH_UP, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_DEINO @@ -25739,8 +25739,11 @@ static const u16 sHydreigonTeachableLearnset[] = { #if P_FAMILY_LARVESTA static const u16 sLarvestaTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_CALM_MIND, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, @@ -25751,23 +25754,23 @@ static const u16 sLarvestaTeachableLearnset[] = { MOVE_PSYCHIC, MOVE_REST, MOVE_SAFEGUARD, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, MOVE_SWAGGER, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sVolcaronaTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_CALM_MIND, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, @@ -25781,15 +25784,12 @@ static const u16 sVolcaronaTeachableLearnset[] = { MOVE_RAIN_DANCE, MOVE_REST, MOVE_SAFEGUARD, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, MOVE_SWAGGER, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_LARVESTA @@ -25797,13 +25797,17 @@ static const u16 sVolcaronaTeachableLearnset[] = { #if P_FAMILY_COBALION static const u16 sCobalionTeachableLearnset[] = { MOVE_AERIAL_ACE, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_CALM_MIND, MOVE_CUT, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_HYPER_BEAM, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, @@ -25811,20 +25815,16 @@ static const u16 sCobalionTeachableLearnset[] = { MOVE_ROCK_SMASH, MOVE_SAFEGUARD, MOVE_SANDSTORM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_PSYCH_UP, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_TAUNT, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_COBALION @@ -25832,34 +25832,34 @@ static const u16 sCobalionTeachableLearnset[] = { #if P_FAMILY_TERRAKION static const u16 sTerrakionTeachableLearnset[] = { MOVE_AERIAL_ACE, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_CALM_MIND, MOVE_CUT, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_HYPER_BEAM, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_REFLECT, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SAFEGUARD, MOVE_SANDSTORM, - MOVE_STRENGTH, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_PSYCH_UP, - MOVE_ROCK_SLIDE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, MOVE_SWAGGER, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_TAUNT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_TERRAKION @@ -25867,36 +25867,36 @@ static const u16 sTerrakionTeachableLearnset[] = { #if P_FAMILY_VIRIZION static const u16 sVirizionTeachableLearnset[] = { MOVE_AERIAL_ACE, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULLET_SEED, MOVE_CALM_MIND, MOVE_CUT, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_GIGA_DRAIN, MOVE_HYPER_BEAM, MOVE_LIGHT_SCREEN, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_REFLECT, MOVE_REST, MOVE_ROAR, MOVE_ROCK_SMASH, MOVE_SAFEGUARD, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_STRENGTH, MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_TAUNT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_VIRIZION @@ -25905,33 +25905,33 @@ static const u16 sVirizionTeachableLearnset[] = { static const u16 sTornadusTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULK_UP, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLY, MOVE_HYPER_BEAM, + MOVE_ICY_WIND, MOVE_IRON_TAIL, + MOVE_METRONOME, MOVE_PROTECT, MOVE_PSYCHIC, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROCK_SMASH, MOVE_SANDSTORM, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_STRENGTH, MOVE_SUNNY_DAY, + MOVE_SWAGGER, MOVE_TAUNT, MOVE_THIEF, MOVE_TORMENT, MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_METRONOME, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_TORNADUS @@ -25939,9 +25939,11 @@ static const u16 sTornadusTeachableLearnset[] = { #if P_FAMILY_THUNDURUS static const u16 sThundurusTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULK_UP, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLY, MOVE_HYPER_BEAM, @@ -25952,31 +25954,32 @@ static const u16 sThundurusTeachableLearnset[] = { MOVE_REST, MOVE_ROCK_SMASH, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_STRENGTH, MOVE_SUNNY_DAY, + MOVE_SWAGGER, MOVE_TAUNT, MOVE_THIEF, MOVE_THUNDER, MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, + MOVE_TORMENT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_THUNDURUS #if P_FAMILY_RESHIRAM static const u16 sReshiramTeachableLearnset[] = { + MOVE_BODY_SLAM, MOVE_CUT, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_DRAGON_CLAW, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, @@ -25990,33 +25993,33 @@ static const u16 sReshiramTeachableLearnset[] = { MOVE_REFLECT, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SAFEGUARD, MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_STEEL_WING, MOVE_STRENGTH, MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_RESHIRAM #if P_FAMILY_ZEKROM static const u16 sZekromTeachableLearnset[] = { + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_CUT, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_DRAGON_CLAW, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_FLY, @@ -26029,27 +26032,24 @@ static const u16 sZekromTeachableLearnset[] = { MOVE_REFLECT, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SAFEGUARD, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_STEEL_WING, MOVE_STRENGTH, MOVE_SUNNY_DAY, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_ZEKROM @@ -26057,37 +26057,37 @@ static const u16 sZekromTeachableLearnset[] = { #if P_FAMILY_LANDORUS static const u16 sLandorusTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULK_UP, MOVE_CALM_MIND, MOVE_DIG, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, + MOVE_EXPLOSION, MOVE_FACADE, MOVE_FLY, MOVE_HYPER_BEAM, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_PSYCHIC, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SANDSTORM, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_STRENGTH, MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_EXPLOSION, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWORDS_DANCE, + MOVE_TAUNT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_LANDORUS @@ -26096,14 +26096,17 @@ static const u16 sLandorusTeachableLearnset[] = { static const u16 sKyuremTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_CUT, MOVE_DOUBLE_TEAM, MOVE_DRAGON_CLAW, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLY, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_LIGHT_SCREEN, MOVE_PROTECT, MOVE_PSYCHIC, @@ -26111,22 +26114,19 @@ static const u16 sKyuremTeachableLearnset[] = { MOVE_REFLECT, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SAFEGUARD, MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_STEEL_WING, MOVE_STRENGTH, MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_KYUREM @@ -26137,32 +26137,32 @@ static const u16 sKeldeoTeachableLearnset[] = { MOVE_BRICK_BREAK, MOVE_CALM_MIND, MOVE_CUT, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_HAIL, MOVE_HYPER_BEAM, + MOVE_ICY_WIND, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, MOVE_ROAR, MOVE_ROCK_SMASH, MOVE_SAFEGUARD, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_STRENGTH, MOVE_SUNNY_DAY, MOVE_SURF, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_KELDEO @@ -26172,13 +26172,19 @@ static const u16 sMeloettaTeachableLearnset[] = { MOVE_BRICK_BREAK, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FIRE_PUNCH, MOVE_FLASH, MOVE_FOCUS_PUNCH, MOVE_HYPER_BEAM, + MOVE_ICE_PUNCH, MOVE_LIGHT_SCREEN, + MOVE_METRONOME, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROCK_SMASH, @@ -26186,25 +26192,19 @@ static const u16 sMeloettaTeachableLearnset[] = { MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, MOVE_SKILL_SWAP, + MOVE_SLEEP_TALK, MOVE_SNATCH, + MOVE_SNORE, MOVE_STRENGTH, MOVE_SUNNY_DAY, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_ICE_PUNCH, - MOVE_METRONOME, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_MELOETTA @@ -26214,10 +26214,13 @@ static const u16 sGenesectTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_BLIZZARD, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, + MOVE_EXPLOSION, MOVE_FACADE, MOVE_FLAMETHROWER, MOVE_FLASH, MOVE_FLY, + MOVE_FURY_CUTTER, MOVE_GIGA_DRAIN, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, @@ -26227,18 +26230,15 @@ static const u16 sGenesectTeachableLearnset[] = { MOVE_REFLECT, MOVE_REST, MOVE_SHOCK_WAVE, - MOVE_SOLAR_BEAM, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_ENDURE, - MOVE_EXPLOSION, - MOVE_FURY_CUTTER, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_GENESECT @@ -26247,12 +26247,15 @@ static const u16 sGenesectTeachableLearnset[] = { static const u16 sChespinTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULK_UP, MOVE_BULLET_SEED, MOVE_CUT, + MOVE_DEFENSE_CURL, MOVE_DIG, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_FOCUS_PUNCH, @@ -26263,37 +26266,37 @@ static const u16 sChespinTeachableLearnset[] = { MOVE_REFLECT, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_STRENGTH, MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DEFENSE_CURL, - MOVE_ENDURE, - MOVE_ROCK_SLIDE, - MOVE_ROLLOUT, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_TAUNT, MOVE_THUNDER_PUNCH, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sQuilladinTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULK_UP, MOVE_BULLET_SEED, MOVE_CUT, + MOVE_DEFENSE_CURL, MOVE_DIG, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_FOCUS_PUNCH, @@ -26304,71 +26307,68 @@ static const u16 sQuilladinTeachableLearnset[] = { MOVE_REFLECT, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_STRENGTH, MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DEFENSE_CURL, - MOVE_ENDURE, - MOVE_ROCK_SLIDE, - MOVE_ROLLOUT, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_TAUNT, MOVE_THUNDER_PUNCH, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sChesnaughtTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULK_UP, MOVE_BULLET_SEED, MOVE_CUT, + MOVE_DEFENSE_CURL, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_DRAGON_CLAW, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_FOCUS_PUNCH, MOVE_GIGA_DRAIN, MOVE_HYPER_BEAM, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_STRENGTH, MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, - MOVE_ROLLOUT, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_TAUNT, MOVE_THUNDER_PUNCH, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_CHESPIN @@ -26379,30 +26379,30 @@ static const u16 sFennekinTeachableLearnset[] = { MOVE_CALM_MIND, MOVE_CUT, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, MOVE_IRON_TAIL, MOVE_LIGHT_SCREEN, + MOVE_MUD_SLAP, MOVE_OVERHEAT, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, MOVE_SAFEGUARD, MOVE_SKILL_SWAP, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_THIEF, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; @@ -26411,34 +26411,34 @@ static const u16 sBraixenTeachableLearnset[] = { MOVE_CALM_MIND, MOVE_CUT, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, + MOVE_FIRE_PUNCH, MOVE_FLAMETHROWER, MOVE_IRON_TAIL, MOVE_LIGHT_SCREEN, + MOVE_MUD_SLAP, MOVE_OVERHEAT, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, MOVE_SAFEGUARD, MOVE_SHOCK_WAVE, MOVE_SKILL_SWAP, + MOVE_SLEEP_TALK, MOVE_SNATCH, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_THIEF, MOVE_THUNDER_PUNCH, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; @@ -26447,15 +26447,21 @@ static const u16 sDelphoxTeachableLearnset[] = { MOVE_CALM_MIND, MOVE_CUT, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, + MOVE_FIRE_PUNCH, MOVE_FLAMETHROWER, MOVE_HYPER_BEAM, MOVE_IRON_TAIL, MOVE_LIGHT_SCREEN, + MOVE_METRONOME, + MOVE_MUD_SLAP, MOVE_OVERHEAT, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, @@ -26463,22 +26469,16 @@ static const u16 sDelphoxTeachableLearnset[] = { MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, MOVE_SKILL_SWAP, + MOVE_SLEEP_TALK, MOVE_SNATCH, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_METRONOME, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_THIEF, MOVE_THUNDER_PUNCH, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_FENNEKIN @@ -26488,34 +26488,34 @@ static const u16 sFroakieTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_COUNTER, MOVE_CUT, MOVE_DIG, MOVE_DIVE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_ICE_BEAM, + MOVE_ICY_WIND, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, + MOVE_SLEEP_TALK, MOVE_SNATCH, + MOVE_SNORE, MOVE_STRENGTH, MOVE_SURF, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_TAUNT, MOVE_THIEF, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_COUNTER, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_UNAVAILABLE, }; @@ -26523,36 +26523,36 @@ static const u16 sFrogadierTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_COUNTER, MOVE_CUT, MOVE_DIG, MOVE_DIVE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_ICE_BEAM, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, + MOVE_SLEEP_TALK, MOVE_SNATCH, + MOVE_SNORE, MOVE_STRENGTH, MOVE_SURF, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, MOVE_TAUNT, MOVE_THIEF, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_COUNTER, - MOVE_ENDURE, - MOVE_ICE_PUNCH, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, - MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; @@ -26561,37 +26561,37 @@ static const u16 sGreninjaTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_BRICK_BREAK, + MOVE_COUNTER, MOVE_CUT, MOVE_DIG, MOVE_DIVE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, + MOVE_SLEEP_TALK, MOVE_SNATCH, + MOVE_SNORE, MOVE_STRENGTH, MOVE_SURF, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, MOVE_TAUNT, MOVE_THIEF, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_COUNTER, - MOVE_ENDURE, - MOVE_ICE_PUNCH, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, - MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_FROAKIE @@ -26602,73 +26602,73 @@ static const u16 sBunnelbyTeachableLearnset[] = { MOVE_BRICK_BREAK, MOVE_BULK_UP, MOVE_CUT, + MOVE_DEFENSE_CURL, MOVE_DIG, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, + MOVE_ROLLOUT, MOVE_SANDSTORM, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_STRENGTH, MOVE_SURF, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, MOVE_THIEF, MOVE_TORMENT, MOVE_TOXIC, - MOVE_DEFENSE_CURL, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, - MOVE_ROLLOUT, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; static const u16 sDiggersbyTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULK_UP, MOVE_CUT, + MOVE_DEFENSE_CURL, MOVE_DIG, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FIRE_PUNCH, MOVE_FOCUS_PUNCH, MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SLUDGE_BOMB, - MOVE_SNATCH, - MOVE_STRENGTH, - MOVE_SURF, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DEFENSE_CURL, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH, + MOVE_IRON_TAIL, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, MOVE_MUD_SLAP, + MOVE_PROTECT, + MOVE_REST, MOVE_ROCK_SLIDE, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, MOVE_ROLLOUT, + MOVE_SANDSTORM, MOVE_SLEEP_TALK, + MOVE_SLUDGE_BOMB, + MOVE_SNATCH, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SURF, MOVE_SWAGGER, MOVE_SWORDS_DANCE, + MOVE_THIEF, MOVE_THUNDER_PUNCH, + MOVE_TORMENT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_BUNNELBY @@ -26677,33 +26677,35 @@ static const u16 sDiggersbyTeachableLearnset[] = { static const u16 sFletchlingTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLY, MOVE_OVERHEAT, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_SLEEP_TALK, MOVE_SNATCH, + MOVE_SNORE, MOVE_STEEL_WING, MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sFletchinderTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, @@ -26712,19 +26714,17 @@ static const u16 sFletchinderTeachableLearnset[] = { MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_SLEEP_TALK, MOVE_SNATCH, + MOVE_SNORE, MOVE_STEEL_WING, MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; @@ -26732,7 +26732,9 @@ static const u16 sTalonflameTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BULK_UP, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, @@ -26742,20 +26744,18 @@ static const u16 sTalonflameTeachableLearnset[] = { MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_SLEEP_TALK, MOVE_SNATCH, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_STEEL_WING, MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_FLETCHLING @@ -26775,6 +26775,8 @@ static const u16 sVivillonTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_GIGA_DRAIN, @@ -26782,20 +26784,18 @@ static const u16 sVivillonTeachableLearnset[] = { MOVE_LIGHT_SCREEN, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, MOVE_SAFEGUARD, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_PSYCH_UP, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_THIEF, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_SCATTERBUG @@ -26803,66 +26803,66 @@ static const u16 sVivillonTeachableLearnset[] = { #if P_FAMILY_LITLEO static const u16 sLitleoTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_OVERHEAT, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROAR, MOVE_ROCK_SMASH, + MOVE_SLEEP_TALK, MOVE_SNATCH, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_STRENGTH, MOVE_SUNNY_DAY, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_TAUNT, MOVE_THIEF, MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_UNAVAILABLE, }; static const u16 sPyroarTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, MOVE_HYPER_BEAM, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_OVERHEAT, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROAR, MOVE_ROCK_SMASH, + MOVE_SLEEP_TALK, MOVE_SNATCH, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_STRENGTH, MOVE_SUNNY_DAY, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_TAUNT, MOVE_THIEF, MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_LITLEO @@ -26872,6 +26872,7 @@ static const u16 sFlabebeTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_GIGA_DRAIN, @@ -26881,14 +26882,13 @@ static const u16 sFlabebeTeachableLearnset[] = { MOVE_RAIN_DANCE, MOVE_REST, MOVE_SAFEGUARD, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_ENDURE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; @@ -26896,25 +26896,25 @@ static const u16 sFloetteTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_GIGA_DRAIN, MOVE_LIGHT_SCREEN, + MOVE_METRONOME, MOVE_PROTECT, MOVE_PSYCHIC, MOVE_RAIN_DANCE, MOVE_REST, MOVE_SAFEGUARD, MOVE_SKILL_SWAP, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_ENDURE, - MOVE_METRONOME, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; @@ -26922,25 +26922,25 @@ static const u16 sFloetteEternalTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_GIGA_DRAIN, MOVE_LIGHT_SCREEN, + MOVE_METRONOME, MOVE_PROTECT, MOVE_PSYCHIC, MOVE_RAIN_DANCE, MOVE_REST, MOVE_SAFEGUARD, MOVE_SKILL_SWAP, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_ENDURE, - MOVE_METRONOME, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; @@ -26948,26 +26948,26 @@ static const u16 sFlorgesTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_GIGA_DRAIN, MOVE_HYPER_BEAM, MOVE_LIGHT_SCREEN, + MOVE_METRONOME, MOVE_PROTECT, MOVE_PSYCHIC, MOVE_RAIN_DANCE, MOVE_REST, MOVE_SAFEGUARD, MOVE_SKILL_SWAP, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_ENDURE, - MOVE_METRONOME, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_FLABEBE @@ -26975,70 +26975,70 @@ static const u16 sFlorgesTeachableLearnset[] = { #if P_FAMILY_SKIDDO static const u16 sSkiddoTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULK_UP, MOVE_BULLET_SEED, + MOVE_DEFENSE_CURL, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_GIGA_DRAIN, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_STRENGTH, MOVE_SUNNY_DAY, MOVE_SURF, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, - MOVE_ROLLOUT, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sGogoatTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULK_UP, MOVE_BULLET_SEED, + MOVE_DEFENSE_CURL, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_GIGA_DRAIN, MOVE_HYPER_BEAM, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_STRENGTH, MOVE_SUNNY_DAY, MOVE_SURF, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, - MOVE_ROLLOUT, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_SKIDDO @@ -27047,46 +27047,47 @@ static const u16 sGogoatTeachableLearnset[] = { static const u16 sPanchamTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULK_UP, MOVE_CUT, MOVE_DIG, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FIRE_PUNCH, MOVE_FOCUS_PUNCH, + MOVE_ICE_PUNCH, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, MOVE_SNATCH, + MOVE_SNORE, MOVE_STRENGTH, MOVE_SUNNY_DAY, MOVE_SURF, - MOVE_TAUNT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_ICE_PUNCH, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_ROCK_SLIDE, - MOVE_SEISMIC_TOSS, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWORDS_DANCE, + MOVE_TAUNT, MOVE_THUNDER_PUNCH, + MOVE_TORMENT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sPangoroTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULK_UP, MOVE_CUT, @@ -27094,37 +27095,36 @@ static const u16 sPangoroTeachableLearnset[] = { MOVE_DOUBLE_TEAM, MOVE_DRAGON_CLAW, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FIRE_PUNCH, MOVE_FOCUS_PUNCH, MOVE_HYPER_BEAM, + MOVE_ICE_PUNCH, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, MOVE_SNATCH, + MOVE_SNORE, MOVE_STRENGTH, MOVE_SUNNY_DAY, MOVE_SURF, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_ICE_PUNCH, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_ROCK_SLIDE, - MOVE_SEISMIC_TOSS, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWORDS_DANCE, + MOVE_TAUNT, + MOVE_THIEF, MOVE_THUNDER_PUNCH, + MOVE_TORMENT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_PANCHAM @@ -27142,13 +27142,13 @@ static const u16 sFurfrouTeachableLearnset[] = { MOVE_REST, MOVE_ROAR, MOVE_ROCK_SMASH, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_TOXIC, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SUNNY_DAY, + MOVE_SURF, MOVE_SWAGGER, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_FURFROU @@ -27159,12 +27159,15 @@ static const u16 sEspurrTeachableLearnset[] = { MOVE_CALM_MIND, MOVE_CUT, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_IRON_TAIL, MOVE_LIGHT_SCREEN, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, @@ -27172,19 +27175,16 @@ static const u16 sEspurrTeachableLearnset[] = { MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_SUNNY_DAY, - MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_PSYCH_UP, MOVE_SLEEP_TALK, + MOVE_SNATCH, MOVE_SNORE, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, + MOVE_TORMENT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; @@ -27194,6 +27194,8 @@ static const u16 sMeowsticMTeachableLearnset[] = { MOVE_CUT, MOVE_DIG, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_HYPER_BEAM, @@ -27201,6 +27203,7 @@ static const u16 sMeowsticMTeachableLearnset[] = { MOVE_LIGHT_SCREEN, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, @@ -27208,19 +27211,16 @@ static const u16 sMeowsticMTeachableLearnset[] = { MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_SUNNY_DAY, - MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_PSYCH_UP, MOVE_SLEEP_TALK, + MOVE_SNATCH, MOVE_SNORE, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, + MOVE_TORMENT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; @@ -27230,6 +27230,8 @@ static const u16 sMeowsticFTeachableLearnset[] = { MOVE_CUT, MOVE_DIG, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_HYPER_BEAM, @@ -27237,6 +27239,7 @@ static const u16 sMeowsticFTeachableLearnset[] = { MOVE_LIGHT_SCREEN, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, @@ -27244,19 +27247,16 @@ static const u16 sMeowsticFTeachableLearnset[] = { MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_SUNNY_DAY, - MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_PSYCH_UP, MOVE_SLEEP_TALK, + MOVE_SNATCH, MOVE_SNORE, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, + MOVE_TORMENT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_ESPURR @@ -27268,21 +27268,21 @@ static const u16 sHonedgeTeachableLearnset[] = { MOVE_BRICK_BREAK, MOVE_CUT, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FURY_CUTTER, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_SHOCK_WAVE, - MOVE_TOXIC, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_ROCK_SLIDE, MOVE_SLEEP_TALK, MOVE_SNORE, MOVE_SWAGGER, MOVE_SWORDS_DANCE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; @@ -27292,21 +27292,21 @@ static const u16 sDoubladeTeachableLearnset[] = { MOVE_BRICK_BREAK, MOVE_CUT, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FURY_CUTTER, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_SHOCK_WAVE, - MOVE_TOXIC, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_ROCK_SLIDE, MOVE_SLEEP_TALK, MOVE_SNORE, MOVE_SWAGGER, MOVE_SWORDS_DANCE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; @@ -27316,24 +27316,24 @@ static const u16 sAegislashTeachableLearnset[] = { MOVE_BRICK_BREAK, MOVE_CUT, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FURY_CUTTER, MOVE_HYPER_BEAM, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_ROCK_SLIDE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWORDS_DANCE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_HONEDGE @@ -27343,25 +27343,25 @@ static const u16 sSpritzeeTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_LIGHT_SCREEN, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, MOVE_SKILL_SWAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SUNNY_DAY, + MOVE_SWAGGER, MOVE_THUNDERBOLT, MOVE_TORMENT, MOVE_TOXIC, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, MOVE_UNAVAILABLE, }; @@ -27369,28 +27369,28 @@ static const u16 sAromatisseTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_HYPER_BEAM, MOVE_LIGHT_SCREEN, + MOVE_METRONOME, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, MOVE_SKILL_SWAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SUNNY_DAY, + MOVE_SWAGGER, MOVE_THUNDER, MOVE_THUNDERBOLT, MOVE_TORMENT, MOVE_TOXIC, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_METRONOME, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_SPRITZEE @@ -27400,26 +27400,26 @@ static const u16 sSwirlixTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLAMETHROWER, MOVE_FLASH, MOVE_LIGHT_SCREEN, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, MOVE_SAFEGUARD, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SUNNY_DAY, MOVE_SURF, + MOVE_SWAGGER, MOVE_THIEF, MOVE_THUNDERBOLT, MOVE_TOXIC, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, MOVE_UNAVAILABLE, }; @@ -27427,29 +27427,29 @@ static const u16 sSlurpuffTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLAMETHROWER, MOVE_FLASH, MOVE_HYPER_BEAM, MOVE_LIGHT_SCREEN, + MOVE_METRONOME, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, MOVE_SAFEGUARD, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SUNNY_DAY, MOVE_SURF, + MOVE_SWAGGER, MOVE_THIEF, MOVE_THUNDER, MOVE_THUNDERBOLT, MOVE_TOXIC, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_METRONOME, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_SWIRLIX @@ -27461,30 +27461,30 @@ static const u16 sInkayTeachableLearnset[] = { MOVE_CALM_MIND, MOVE_CUT, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLAMETHROWER, MOVE_FLASH, MOVE_LIGHT_SCREEN, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_SKILL_SWAP, + MOVE_SLEEP_TALK, MOVE_SNATCH, + MOVE_SNORE, MOVE_SUNNY_DAY, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_TAUNT, MOVE_THIEF, MOVE_THUNDERBOLT, MOVE_TORMENT, MOVE_TOXIC, - MOVE_ENDURE, - MOVE_PSYCH_UP, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_UNAVAILABLE, }; @@ -27494,6 +27494,7 @@ static const u16 sMalamarTeachableLearnset[] = { MOVE_CALM_MIND, MOVE_CUT, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLAMETHROWER, MOVE_FLASH, @@ -27501,24 +27502,23 @@ static const u16 sMalamarTeachableLearnset[] = { MOVE_LIGHT_SCREEN, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_SKILL_SWAP, + MOVE_SLEEP_TALK, MOVE_SNATCH, + MOVE_SNORE, MOVE_SUNNY_DAY, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_TAUNT, MOVE_THIEF, MOVE_THUNDERBOLT, MOVE_TORMENT, MOVE_TOXIC, - MOVE_ENDURE, - MOVE_PSYCH_UP, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_INKAY @@ -27533,32 +27533,32 @@ static const u16 sBinacleTeachableLearnset[] = { MOVE_DIG, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FURY_CUTTER, MOVE_ICE_BEAM, + MOVE_ICY_WIND, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SAFEGUARD, MOVE_SANDSTORM, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_STRENGTH, MOVE_SURF, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, MOVE_TAUNT, MOVE_THIEF, MOVE_TORMENT, MOVE_TOXIC, MOVE_WATER_PULSE, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; @@ -27574,33 +27574,33 @@ static const u16 sBarbaracleTeachableLearnset[] = { MOVE_DOUBLE_TEAM, MOVE_DRAGON_CLAW, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FURY_CUTTER, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SAFEGUARD, MOVE_SANDSTORM, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_STRENGTH, MOVE_SURF, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, MOVE_TAUNT, MOVE_THIEF, MOVE_TORMENT, MOVE_TOXIC, MOVE_WATER_PULSE, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_BINACLE @@ -27610,27 +27610,27 @@ static const u16 sSkrelpTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DIVE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_HAIL, + MOVE_ICY_WIND, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_SURF, + MOVE_SWAGGER, MOVE_THIEF, MOVE_THUNDERBOLT, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, MOVE_UNAVAILABLE, }; @@ -27638,29 +27638,29 @@ static const u16 sDragalgeTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DIVE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_HAIL, MOVE_HYPER_BEAM, + MOVE_ICY_WIND, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_SURF, + MOVE_SWAGGER, MOVE_THIEF, MOVE_THUNDER, MOVE_THUNDERBOLT, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_SKRELP @@ -27672,58 +27672,58 @@ static const u16 sClauncherTeachableLearnset[] = { MOVE_CUT, MOVE_DIVE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_SURF, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, MOVE_THIEF, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; static const u16 sClawitzerTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_CUT, MOVE_DIVE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_SURF, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, MOVE_THIEF, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_CLAUNCHER @@ -27734,29 +27734,29 @@ static const u16 sHelioptileTeachableLearnset[] = { MOVE_CUT, MOVE_DIG, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_IRON_TAIL, MOVE_LIGHT_SCREEN, + MOVE_MUD_SLAP, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_TOMB, MOVE_SANDSTORM, MOVE_SHOCK_WAVE, - MOVE_SURF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_ROCK_SLIDE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SURF, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; @@ -27765,36 +27765,36 @@ static const u16 sHelioliskTeachableLearnset[] = { MOVE_CUT, MOVE_DIG, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FIRE_PUNCH, MOVE_FLASH, MOVE_HYPER_BEAM, MOVE_IRON_TAIL, MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SHOCK_WAVE, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, MOVE_MUD_SLAP, + MOVE_PROTECT, MOVE_PSYCH_UP, + MOVE_RAIN_DANCE, + MOVE_REST, MOVE_ROCK_SLIDE, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SHOCK_WAVE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_SURF, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_HELIOPTILE @@ -27803,57 +27803,57 @@ static const u16 sHelioliskTeachableLearnset[] = { static const u16 sTyruntTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_DIG, MOVE_DOUBLE_TEAM, MOVE_DRAGON_CLAW, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_IRON_TAIL, MOVE_PROTECT, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SANDSTORM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_ROCK_SLIDE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sTyrantrumTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_DIG, MOVE_DOUBLE_TEAM, MOVE_DRAGON_CLAW, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_HYPER_BEAM, MOVE_IRON_TAIL, MOVE_PROTECT, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SANDSTORM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_ROCK_SLIDE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_TYRUNT @@ -27862,77 +27862,77 @@ static const u16 sTyrantrumTeachableLearnset[] = { static const u16 sAmauraTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_IRON_TAIL, MOVE_LIGHT_SCREEN, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SAFEGUARD, MOVE_SANDSTORM, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_PSYCH_UP, - MOVE_ROCK_SLIDE, MOVE_SLEEP_TALK, MOVE_SNORE, MOVE_SWAGGER, + MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, + MOVE_TOXIC, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; static const u16 sAurorusTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_IRON_TAIL, MOVE_LIGHT_SCREEN, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SAFEGUARD, MOVE_SANDSTORM, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_PSYCH_UP, - MOVE_ROCK_SLIDE, MOVE_SLEEP_TALK, MOVE_SNORE, MOVE_SWAGGER, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, + MOVE_TOXIC, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_AMAURA @@ -27941,39 +27941,39 @@ static const u16 sAurorusTeachableLearnset[] = { static const u16 sHawluchaTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULK_UP, MOVE_CUT, MOVE_DIG, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FIRE_PUNCH, MOVE_FLY, MOVE_FOCUS_PUNCH, MOVE_HYPER_BEAM, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_STEEL_WING, MOVE_STRENGTH, MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_TAUNT, + MOVE_THIEF, MOVE_THUNDER_PUNCH, + MOVE_TORMENT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_HAWLUCHA @@ -27985,6 +27985,7 @@ static const u16 sDedenneTeachableLearnset[] = { MOVE_CUT, MOVE_DIG, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_HYPER_BEAM, @@ -27994,26 +27995,29 @@ static const u16 sDedenneTeachableLearnset[] = { MOVE_RAIN_DANCE, MOVE_REST, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SUNNY_DAY, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_THIEF, MOVE_THUNDER, MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_ENDURE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_DEDENNE #if P_FAMILY_CARBINK static const u16 sCarbinkTeachableLearnset[] = { + MOVE_BODY_SLAM, MOVE_CALM_MIND, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, + MOVE_EXPLOSION, MOVE_FACADE, MOVE_FLASH, MOVE_HAIL, @@ -28021,24 +28025,20 @@ static const u16 sCarbinkTeachableLearnset[] = { MOVE_LIGHT_SCREEN, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_TOMB, MOVE_SAFEGUARD, MOVE_SANDSTORM, MOVE_SKILL_SWAP, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_EXPLOSION, - MOVE_PSYCH_UP, - MOVE_ROCK_SLIDE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SUNNY_DAY, MOVE_SWAGGER, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_CARBINK @@ -28046,126 +28046,130 @@ static const u16 sCarbinkTeachableLearnset[] = { #if P_FAMILY_GOOMY static const u16 sGoomyTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, + MOVE_COUNTER, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_IRON_TAIL, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_SUNNY_DAY, + MOVE_SWAGGER, MOVE_THUNDERBOLT, MOVE_TOXIC, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_ENDURE, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, MOVE_UNAVAILABLE, }; static const u16 sSliggooTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, + MOVE_COUNTER, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_ICE_BEAM, MOVE_IRON_TAIL, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_SUNNY_DAY, + MOVE_SWAGGER, MOVE_THUNDER, MOVE_THUNDERBOLT, MOVE_TOXIC, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_ENDURE, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, MOVE_UNAVAILABLE, }; static const u16 sGoodraTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, + MOVE_COUNTER, MOVE_DOUBLE_TEAM, MOVE_DRAGON_CLAW, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, + MOVE_FIRE_PUNCH, MOVE_FLAMETHROWER, MOVE_FOCUS_PUNCH, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, MOVE_IRON_TAIL, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_STRENGTH, MOVE_SUNNY_DAY, MOVE_SURF, + MOVE_SWAGGER, MOVE_THUNDER, MOVE_THUNDERBOLT, + MOVE_THUNDER_PUNCH, MOVE_TOXIC, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_THUNDER_PUNCH, MOVE_UNAVAILABLE, }; #if P_HISUIAN_FORMS static const u16 sSliggooHisuiTeachableLearnset[] = { MOVE_BLIZZARD, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_ENDURE, MOVE_FACADE, MOVE_ICE_BEAM, MOVE_IRON_TAIL, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_TOMB, MOVE_SANDSTORM, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, MOVE_SUNNY_DAY, MOVE_THUNDER, MOVE_THUNDERBOLT, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_ENDURE, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, MOVE_UNAVAILABLE, }; static const u16 sGoodraHisuiTeachableLearnset[] = { MOVE_BLIZZARD, + MOVE_BODY_SLAM, + MOVE_COUNTER, MOVE_DRAGON_CLAW, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, + MOVE_FIRE_PUNCH, MOVE_FLAMETHROWER, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, @@ -28173,22 +28177,18 @@ static const u16 sGoodraHisuiTeachableLearnset[] = { MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SANDSTORM, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, MOVE_SUNNY_DAY, MOVE_SURF, MOVE_THUNDER, MOVE_THUNDERBOLT, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, MOVE_THUNDER_PUNCH, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; #endif //P_HISUIAN_FORMS @@ -28200,27 +28200,27 @@ static const u16 sKlefkiTeachableLearnset[] = { MOVE_CALM_MIND, MOVE_CUT, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_HYPER_BEAM, MOVE_LIGHT_SCREEN, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, MOVE_SAFEGUARD, MOVE_SANDSTORM, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_ENDURE, - MOVE_PSYCH_UP, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_THIEF, MOVE_THUNDER_WAVE, + MOVE_TORMENT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_KLEFKI @@ -28231,29 +28231,29 @@ static const u16 sPhantumpTeachableLearnset[] = { MOVE_CUT, MOVE_DIG, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_GIGA_DRAIN, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_SAFEGUARD, MOVE_SHADOW_BALL, MOVE_SKILL_SWAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_STRENGTH, MOVE_SUNNY_DAY, + MOVE_SWAGGER, MOVE_THIEF, MOVE_TOXIC, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_PSYCH_UP, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, MOVE_UNAVAILABLE, }; @@ -28263,31 +28263,31 @@ static const u16 sTrevenantTeachableLearnset[] = { MOVE_CUT, MOVE_DIG, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_GIGA_DRAIN, MOVE_HYPER_BEAM, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_SAFEGUARD, MOVE_SHADOW_BALL, MOVE_SKILL_SWAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_STRENGTH, MOVE_SUNNY_DAY, + MOVE_SWAGGER, MOVE_THIEF, MOVE_TOXIC, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_PSYCH_UP, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_PHANTUMP @@ -28297,6 +28297,9 @@ static const u16 sPumpkabooTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULLET_SEED, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_EXPLOSION, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, @@ -28306,22 +28309,19 @@ static const u16 sPumpkabooTeachableLearnset[] = { MOVE_PROTECT, MOVE_PSYCHIC, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_SAFEGUARD, MOVE_SHADOW_BALL, MOVE_SKILL_SWAP, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, + MOVE_SWAGGER, MOVE_THIEF, MOVE_TOXIC, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_EXPLOSION, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, MOVE_UNAVAILABLE, }; @@ -28329,6 +28329,9 @@ static const u16 sGourgeistTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULLET_SEED, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_EXPLOSION, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, @@ -28339,22 +28342,19 @@ static const u16 sGourgeistTeachableLearnset[] = { MOVE_PROTECT, MOVE_PSYCHIC, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_SAFEGUARD, MOVE_SHADOW_BALL, MOVE_SKILL_SWAP, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, + MOVE_SWAGGER, MOVE_THIEF, MOVE_TOXIC, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_EXPLOSION, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_PUMPKABOO @@ -28363,85 +28363,85 @@ static const u16 sGourgeistTeachableLearnset[] = { static const u16 sBergmiteTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_HAIL, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SAFEGUARD, - MOVE_STRENGTH, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_ROCK_SLIDE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SURF, MOVE_SWAGGER, + MOVE_TOXIC, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; static const u16 sAvaluggTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SAFEGUARD, - MOVE_STRENGTH, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_ROCK_SLIDE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SURF, MOVE_SWAGGER, + MOVE_TOXIC, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; #if P_HISUIAN_FORMS static const u16 sAvaluggHisuiTeachableLearnset[] = { MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SANDSTORM, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_ROCK_SLIDE, MOVE_SLEEP_TALK, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; #endif //P_HISUIAN_FORMS @@ -28455,6 +28455,8 @@ static const u16 sNoibatTeachableLearnset[] = { MOVE_CUT, MOVE_DOUBLE_TEAM, MOVE_DRAGON_CLAW, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLY, MOVE_IRON_TAIL, @@ -28462,31 +28464,33 @@ static const u16 sNoibatTeachableLearnset[] = { MOVE_PSYCHIC, MOVE_REST, MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, MOVE_SNATCH, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_STEEL_WING, MOVE_SUNNY_DAY, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_TAUNT, MOVE_THIEF, MOVE_TORMENT, MOVE_TOXIC, MOVE_WATER_PULSE, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_UNAVAILABLE, }; static const u16 sNoivernTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_CUT, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_DRAGON_CLAW, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLAMETHROWER, MOVE_FLY, @@ -28496,32 +28500,30 @@ static const u16 sNoivernTeachableLearnset[] = { MOVE_PSYCHIC, MOVE_REST, MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, MOVE_SNATCH, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_STEEL_WING, MOVE_SUNNY_DAY, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_TAUNT, MOVE_THIEF, MOVE_TORMENT, MOVE_TOXIC, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_NOIBAT #if P_FAMILY_XERNEAS static const u16 sXerneasTeachableLearnset[] = { + MOVE_BODY_SLAM, MOVE_CALM_MIND, MOVE_CUT, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_HAIL, @@ -28529,23 +28531,21 @@ static const u16 sXerneasTeachableLearnset[] = { MOVE_LIGHT_SCREEN, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, MOVE_ROAR, - MOVE_SUNNY_DAY, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_PSYCH_UP, MOVE_ROCK_SLIDE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_XERNEAS @@ -28553,9 +28553,12 @@ static const u16 sXerneasTeachableLearnset[] = { #if P_FAMILY_YVELTAL static const u16 sYveltalTeachableLearnset[] = { MOVE_AERIAL_ACE, + MOVE_BODY_SLAM, MOVE_CUT, MOVE_DOUBLE_TEAM, MOVE_DRAGON_CLAW, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLY, MOVE_HYPER_BEAM, @@ -28563,84 +28566,81 @@ static const u16 sYveltalTeachableLearnset[] = { MOVE_PSYCHIC, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_STEEL_WING, MOVE_SUNNY_DAY, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_TAUNT, MOVE_THIEF, MOVE_TORMENT, MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_YVELTAL #if P_FAMILY_ZYGARDE static const u16 sZygardeTeachableLearnset[] = { + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_DIG, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_HYPER_BEAM, MOVE_IRON_TAIL, MOVE_PROTECT, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_SAFEGUARD, MOVE_SANDSTORM, MOVE_SHOCK_WAVE, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_ROCK_SLIDE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_ZYGARDE #if P_FAMILY_DIANCIE static const u16 sDiancieTeachableLearnset[] = { + MOVE_BODY_SLAM, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, + MOVE_EXPLOSION, MOVE_FACADE, MOVE_FLASH, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_LIGHT_SCREEN, + MOVE_METRONOME, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_TOMB, MOVE_SAFEGUARD, MOVE_SANDSTORM, MOVE_SKILL_SWAP, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_EXPLOSION, - MOVE_METRONOME, - MOVE_PSYCH_UP, - MOVE_ROCK_SLIDE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_DIANCIE @@ -28650,13 +28650,18 @@ static const u16 sHoopaConfinedTeachableLearnset[] = { MOVE_BRICK_BREAK, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FIRE_PUNCH, MOVE_FLASH, MOVE_FOCUS_PUNCH, MOVE_HYPER_BEAM, + MOVE_ICE_PUNCH, MOVE_LIGHT_SCREEN, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, @@ -28666,24 +28671,19 @@ static const u16 sHoopaConfinedTeachableLearnset[] = { MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, MOVE_SKILL_SWAP, + MOVE_SLEEP_TALK, MOVE_SNATCH, + MOVE_SNORE, MOVE_SUNNY_DAY, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_TAUNT, MOVE_THIEF, MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_ICE_PUNCH, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, + MOVE_TORMENT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; @@ -28691,13 +28691,18 @@ static const u16 sHoopaUnboundTeachableLearnset[] = { MOVE_BRICK_BREAK, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FIRE_PUNCH, MOVE_FLASH, MOVE_FOCUS_PUNCH, MOVE_HYPER_BEAM, + MOVE_ICE_PUNCH, MOVE_LIGHT_SCREEN, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, @@ -28707,35 +28712,34 @@ static const u16 sHoopaUnboundTeachableLearnset[] = { MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, MOVE_SKILL_SWAP, + MOVE_SLEEP_TALK, MOVE_SNATCH, + MOVE_SNORE, MOVE_SUNNY_DAY, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_TAUNT, MOVE_THIEF, MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_ICE_PUNCH, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, + MOVE_TORMENT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_HOOPA #if P_FAMILY_VOLCANION static const u16 sVolcanionTeachableLearnset[] = { + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_CUT, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, + MOVE_EXPLOSION, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, @@ -28745,24 +28749,20 @@ static const u16 sVolcanionTeachableLearnset[] = { MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SANDSTORM, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_STRENGTH, MOVE_SUNNY_DAY, + MOVE_SWAGGER, MOVE_TAUNT, MOVE_TOXIC, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_EXPLOSION, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_VOLCANION @@ -28773,6 +28773,7 @@ static const u16 sRowletTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULLET_SEED, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_GIGA_DRAIN, MOVE_LIGHT_SCREEN, @@ -28780,16 +28781,15 @@ static const u16 sRowletTeachableLearnset[] = { MOVE_RAIN_DANCE, MOVE_REST, MOVE_SAFEGUARD, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_STEEL_WING, MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_ENDURE, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; @@ -28798,6 +28798,7 @@ static const u16 sDartrixTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULLET_SEED, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_GIGA_DRAIN, MOVE_LIGHT_SCREEN, @@ -28805,16 +28806,15 @@ static const u16 sDartrixTeachableLearnset[] = { MOVE_RAIN_DANCE, MOVE_REST, MOVE_SAFEGUARD, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_STEEL_WING, MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_ENDURE, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; @@ -28823,6 +28823,7 @@ static const u16 sDecidueyeTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULLET_SEED, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_GIGA_DRAIN, MOVE_HYPER_BEAM, @@ -28832,16 +28833,15 @@ static const u16 sDecidueyeTeachableLearnset[] = { MOVE_REST, MOVE_SAFEGUARD, MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_STEEL_WING, MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_ENDURE, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; @@ -28852,6 +28852,7 @@ static const u16 sDecidueyeHisuiTeachableLearnset[] = { MOVE_BULK_UP, MOVE_BULLET_SEED, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FOCUS_PUNCH, MOVE_GIGA_DRAIN, @@ -28862,13 +28863,12 @@ static const u16 sDecidueyeHisuiTeachableLearnset[] = { MOVE_REST, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, + MOVE_SLEEP_TALK, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_ENDURE, - MOVE_SLEEP_TALK, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_TAUNT, MOVE_UNAVAILABLE, }; #endif //P_HISUIAN_FORMS @@ -28877,8 +28877,11 @@ static const u16 sDecidueyeHisuiTeachableLearnset[] = { #if P_FAMILY_LITTEN static const u16 sLittenTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BULK_UP, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, @@ -28886,24 +28889,24 @@ static const u16 sLittenTeachableLearnset[] = { MOVE_PROTECT, MOVE_REST, MOVE_ROAR, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SUNNY_DAY, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, MOVE_TAUNT, MOVE_TORMENT, MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; static const u16 sTorracatTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BULK_UP, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, @@ -28911,53 +28914,50 @@ static const u16 sTorracatTeachableLearnset[] = { MOVE_PROTECT, MOVE_REST, MOVE_ROAR, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SUNNY_DAY, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, MOVE_TAUNT, MOVE_TORMENT, MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; static const u16 sIncineroarTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULK_UP, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, + MOVE_FIRE_PUNCH, MOVE_FLAMETHROWER, MOVE_FOCUS_PUNCH, MOVE_HYPER_BEAM, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, MOVE_OVERHEAT, MOVE_PROTECT, MOVE_REST, MOVE_ROAR, - MOVE_SNATCH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, MOVE_SLEEP_TALK, + MOVE_SNATCH, MOVE_SNORE, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWORDS_DANCE, + MOVE_TAUNT, + MOVE_THIEF, MOVE_THUNDER_PUNCH, + MOVE_TORMENT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_LITTEN @@ -28968,82 +28968,82 @@ static const u16 sPopplioTeachableLearnset[] = { MOVE_BLIZZARD, MOVE_DIVE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_HAIL, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_IRON_TAIL, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SURF, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_UNAVAILABLE, }; static const u16 sBrionneTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_DIVE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_HAIL, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_IRON_TAIL, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SURF, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_UNAVAILABLE, }; static const u16 sPrimarinaTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_CALM_MIND, MOVE_DIVE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_IRON_TAIL, MOVE_LIGHT_SCREEN, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SURF, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_POPPLIO @@ -29055,20 +29055,20 @@ static const u16 sPikipekTeachableLearnset[] = { MOVE_BRICK_BREAK, MOVE_BULLET_SEED, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLY, MOVE_PROTECT, MOVE_REST, MOVE_ROCK_SMASH, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_ENDURE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWORDS_DANCE, + MOVE_THIEF, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; @@ -29078,21 +29078,21 @@ static const u16 sTrumbeakTeachableLearnset[] = { MOVE_BRICK_BREAK, MOVE_BULLET_SEED, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLY, MOVE_PROTECT, MOVE_REST, MOVE_ROCK_SMASH, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_ENDURE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_THIEF, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; @@ -29102,24 +29102,24 @@ static const u16 sToucannonTeachableLearnset[] = { MOVE_BRICK_BREAK, MOVE_BULLET_SEED, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLY, MOVE_HYPER_BEAM, MOVE_OVERHEAT, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_REST, MOVE_ROCK_SMASH, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_ENDURE, - MOVE_PSYCH_UP, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_THIEF, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_PIKIPEK @@ -29128,39 +29128,45 @@ static const u16 sToucannonTeachableLearnset[] = { static const u16 sYungoosTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROCK_TOMB, MOVE_SANDSTORM, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SUNNY_DAY, + MOVE_SWAGGER, MOVE_TAUNT, MOVE_THIEF, MOVE_TORMENT, MOVE_TOXIC, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, MOVE_UNAVAILABLE, }; static const u16 sGumshoosTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FIRE_PUNCH, MOVE_FOCUS_PUNCH, MOVE_HYPER_BEAM, + MOVE_ICE_PUNCH, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, @@ -29168,21 +29174,15 @@ static const u16 sGumshoosTeachableLearnset[] = { MOVE_ROCK_TOMB, MOVE_SANDSTORM, MOVE_SHOCK_WAVE, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_ICE_PUNCH, - MOVE_MUD_SLAP, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SUNNY_DAY, MOVE_SWAGGER, + MOVE_TAUNT, + MOVE_THIEF, MOVE_THUNDER_PUNCH, + MOVE_TORMENT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_YUNGOOS @@ -29192,20 +29192,20 @@ static const u16 sGrubbinTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DIG, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_LIGHT_SCREEN, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_SHOCK_WAVE, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_ENDURE, - MOVE_MUD_SLAP, MOVE_SLEEP_TALK, MOVE_SNORE, MOVE_SWAGGER, + MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; @@ -29213,21 +29213,21 @@ static const u16 sCharjabugTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DIG, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_LIGHT_SCREEN, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_SHOCK_WAVE, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_ENDURE, - MOVE_MUD_SLAP, MOVE_SLEEP_TALK, MOVE_SNORE, MOVE_SWAGGER, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; @@ -29235,25 +29235,25 @@ static const u16 sVikavoltTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DIG, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLY, MOVE_HYPER_BEAM, MOVE_LIGHT_SCREEN, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_SHOCK_WAVE, - MOVE_SOLAR_BEAM, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_ENDURE, - MOVE_MUD_SLAP, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_GRUBBIN @@ -29261,68 +29261,68 @@ static const u16 sVikavoltTeachableLearnset[] = { #if P_FAMILY_CRABRAWLER static const u16 sCrabrawlerTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULK_UP, MOVE_DIG, MOVE_DOUBLE_TEAM, + MOVE_DYNAMIC_PUNCH, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FOCUS_PUNCH, + MOVE_ICE_PUNCH, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_ICE_PUNCH, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_THIEF, MOVE_THUNDER_PUNCH, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sCrabominableTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULK_UP, MOVE_DIG, MOVE_DOUBLE_TEAM, + MOVE_DYNAMIC_PUNCH, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FOCUS_PUNCH, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, MOVE_ICE_PUNCH, MOVE_ICY_WIND, MOVE_MUD_SLAP, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, MOVE_ROCK_SLIDE, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_THIEF, MOVE_THUNDER_PUNCH, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_CRABRAWLER @@ -29333,25 +29333,25 @@ static const u16 sOricorioTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLY, + MOVE_ICY_WIND, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, MOVE_SAFEGUARD, MOVE_SANDSTORM, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_PSYCH_UP, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_TAUNT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_ORICORIO @@ -29362,24 +29362,24 @@ static const u16 sCutieflyTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_LIGHT_SCREEN, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_REFLECT, MOVE_REST, MOVE_SAFEGUARD, MOVE_SKILL_SWAP, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_PSYCH_UP, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_THIEF, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; @@ -29388,26 +29388,26 @@ static const u16 sRibombeeTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_HYPER_BEAM, MOVE_LIGHT_SCREEN, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_REFLECT, MOVE_REST, MOVE_SAFEGUARD, MOVE_SKILL_SWAP, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_PSYCH_UP, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_THIEF, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_CUTIEFLY @@ -29415,117 +29415,117 @@ static const u16 sRibombeeTeachableLearnset[] = { #if P_FAMILY_ROCKRUFF static const u16 sRockruffTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_TOMB, MOVE_SANDSTORM, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, MOVE_SLEEP_TALK, MOVE_SNORE, MOVE_SWAGGER, MOVE_SWORDS_DANCE, + MOVE_TAUNT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sLycanrocMiddayTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULK_UP, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_TOMB, MOVE_SANDSTORM, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_TAUNT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sLycanrocMidnightTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULK_UP, + MOVE_COUNTER, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FIRE_PUNCH, MOVE_FOCUS_PUNCH, MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_REST, - MOVE_ROAR, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, MOVE_MUD_SLAP, + MOVE_PROTECT, + MOVE_REST, + MOVE_ROAR, MOVE_ROCK_SLIDE, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWORDS_DANCE, + MOVE_TAUNT, MOVE_THUNDER_PUNCH, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sLycanrocDuskTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULK_UP, + MOVE_COUNTER, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_TOMB, MOVE_SANDSTORM, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, MOVE_SLEEP_TALK, MOVE_SNORE, MOVE_SWAGGER, MOVE_SWORDS_DANCE, + MOVE_TAUNT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_ROCKRUFF @@ -29534,8 +29534,10 @@ static const u16 sLycanrocDuskTeachableLearnset[] = { static const u16 sWishiwashiTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DIVE, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_HAIL, MOVE_ICE_BEAM, @@ -29543,15 +29545,13 @@ static const u16 sWishiwashiTeachableLearnset[] = { MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SURF, + MOVE_SWAGGER, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_WISHIWASHI @@ -29561,50 +29561,50 @@ static const u16 sMareanieTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_HAIL, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_SAFEGUARD, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, MOVE_SNATCH, + MOVE_SNORE, MOVE_SURF, + MOVE_SWAGGER, MOVE_TOXIC, MOVE_WATER_PULSE, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, MOVE_UNAVAILABLE, }; static const u16 sToxapexTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_LIGHT_SCREEN, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_SAFEGUARD, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, MOVE_SNATCH, + MOVE_SNORE, MOVE_SURF, + MOVE_SWAGGER, MOVE_TOXIC, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_MAREANIE @@ -29612,56 +29612,56 @@ static const u16 sToxapexTeachableLearnset[] = { #if P_FAMILY_MUDBRAY static const u16 sMudbrayTeachableLearnset[] = { MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_PROTECT, - MOVE_REST, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, MOVE_BODY_SLAM, MOVE_COUNTER, MOVE_DOUBLE_EDGE, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, MOVE_ENDURE, + MOVE_FACADE, MOVE_MEGA_KICK, MOVE_MUD_SLAP, + MOVE_PROTECT, + MOVE_REST, + MOVE_ROAR, MOVE_ROCK_SLIDE, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sMudsdaleTeachableLearnset[] = { MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_REST, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, MOVE_BODY_SLAM, MOVE_COUNTER, MOVE_DOUBLE_EDGE, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, MOVE_ENDURE, + MOVE_FACADE, + MOVE_HYPER_BEAM, MOVE_MEGA_KICK, MOVE_MUD_SLAP, + MOVE_PROTECT, + MOVE_REST, + MOVE_ROAR, MOVE_ROCK_SLIDE, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, MOVE_SWAGGER, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_MUDBRAY @@ -29671,48 +29671,48 @@ static const u16 sDewpiderTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_GIGA_DRAIN, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SURF, + MOVE_SWAGGER, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, MOVE_UNAVAILABLE, }; static const u16 sAraquanidTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_DIVE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_GIGA_DRAIN, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, MOVE_SAFEGUARD, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SURF, + MOVE_SWAGGER, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_DEWPIDER @@ -29722,20 +29722,20 @@ static const u16 sFomantisTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULLET_SEED, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FURY_CUTTER, MOVE_GIGA_DRAIN, MOVE_PROTECT, MOVE_REST, MOVE_SAFEGUARD, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_ENDURE, - MOVE_FURY_CUTTER, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWORDS_DANCE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; @@ -29745,22 +29745,22 @@ static const u16 sLurantisTeachableLearnset[] = { MOVE_BRICK_BREAK, MOVE_BULLET_SEED, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FURY_CUTTER, MOVE_GIGA_DRAIN, MOVE_HYPER_BEAM, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_SAFEGUARD, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_ENDURE, - MOVE_FURY_CUTTER, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWORDS_DANCE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_FOMANTIS @@ -29769,6 +29769,8 @@ static const u16 sLurantisTeachableLearnset[] = { static const u16 sMorelullTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_GIGA_DRAIN, @@ -29776,22 +29778,22 @@ static const u16 sMorelullTeachableLearnset[] = { MOVE_PROTECT, MOVE_REST, MOVE_SAFEGUARD, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sShiinoticTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLASH, MOVE_GIGA_DRAIN, @@ -29801,16 +29803,14 @@ static const u16 sShiinoticTeachableLearnset[] = { MOVE_RAIN_DANCE, MOVE_REST, MOVE_SAFEGUARD, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_MORELULL @@ -29820,57 +29820,57 @@ static const u16 sSalanditTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, MOVE_DRAGON_CLAW, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_OVERHEAT, MOVE_PROTECT, MOVE_REST, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, MOVE_SNATCH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_TAUNT, + MOVE_THIEF, MOVE_THUNDER_WAVE, + MOVE_TORMENT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sSalazzleTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_DOUBLE_TEAM, MOVE_DRAGON_CLAW, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, MOVE_HYPER_BEAM, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_OVERHEAT, MOVE_PROTECT, MOVE_REST, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, MOVE_SNATCH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_TAUNT, + MOVE_THIEF, MOVE_THUNDER_WAVE, + MOVE_TORMENT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_SALANDIT @@ -29881,65 +29881,65 @@ static const u16 sStuffulTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_BULK_UP, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_PROTECT, - MOVE_REST, - MOVE_ROAR, - MOVE_ROCK_TOMB, - MOVE_STRENGTH, - MOVE_TAUNT, - MOVE_TOXIC, MOVE_DEFENSE_CURL, MOVE_DOUBLE_EDGE, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, MOVE_ENDURE, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, MOVE_ICE_PUNCH, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, + MOVE_PROTECT, + MOVE_REST, + MOVE_ROAR, MOVE_ROCK_SLIDE, + MOVE_ROCK_TOMB, MOVE_ROLLOUT, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, MOVE_SWAGGER, MOVE_SWORDS_DANCE, + MOVE_TAUNT, MOVE_THUNDER_PUNCH, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sBewearTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULK_UP, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_DRAGON_CLAW, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FOCUS_PUNCH, MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_REST, - MOVE_ROAR, - MOVE_ROCK_TOMB, - MOVE_STRENGTH, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, MOVE_ICE_PUNCH, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, + MOVE_PROTECT, + MOVE_REST, + MOVE_ROAR, MOVE_ROCK_SLIDE, + MOVE_ROCK_TOMB, MOVE_ROLLOUT, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, MOVE_SWAGGER, MOVE_SWORDS_DANCE, + MOVE_TAUNT, MOVE_THUNDER_PUNCH, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_STUFFUL @@ -29949,6 +29949,7 @@ static const u16 sBounsweetTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULLET_SEED, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_GIGA_DRAIN, MOVE_LIGHT_SCREEN, @@ -29956,14 +29957,13 @@ static const u16 sBounsweetTeachableLearnset[] = { MOVE_REFLECT, MOVE_REST, MOVE_SAFEGUARD, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_ENDURE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; @@ -29971,6 +29971,7 @@ static const u16 sSteeneeTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULLET_SEED, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_GIGA_DRAIN, MOVE_LIGHT_SCREEN, @@ -29978,14 +29979,13 @@ static const u16 sSteeneeTeachableLearnset[] = { MOVE_REFLECT, MOVE_REST, MOVE_SAFEGUARD, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_ENDURE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; @@ -29993,24 +29993,24 @@ static const u16 sTsareenaTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULLET_SEED, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_GIGA_DRAIN, MOVE_HYPER_BEAM, MOVE_LIGHT_SCREEN, + MOVE_MEGA_KICK, MOVE_PROTECT, MOVE_REFLECT, MOVE_REST, MOVE_SAFEGUARD, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_ENDURE, - MOVE_MEGA_KICK, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_TAUNT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_BOUNSWEET @@ -30021,24 +30021,24 @@ static const u16 sComfeyTeachableLearnset[] = { MOVE_BULLET_SEED, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_GIGA_DRAIN, MOVE_HYPER_BEAM, MOVE_LIGHT_SCREEN, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_REST, MOVE_SAFEGUARD, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_TAUNT, MOVE_THIEF, MOVE_TOXIC, - MOVE_ENDURE, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_COMFEY @@ -30046,38 +30046,38 @@ static const u16 sComfeyTeachableLearnset[] = { #if P_FAMILY_ORANGURU static const u16 sOranguruTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_HYPER_BEAM, MOVE_LIGHT_SCREEN, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_SAFEGUARD, MOVE_SHADOW_BALL, MOVE_SKILL_SWAP, + MOVE_SLEEP_TALK, MOVE_SNATCH, + MOVE_SNORE, MOVE_SUNNY_DAY, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_TAUNT, MOVE_THUNDER, MOVE_THUNDERBOLT, MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_PSYCH_UP, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_ORANGURU @@ -30086,37 +30086,37 @@ static const u16 sOranguruTeachableLearnset[] = { static const u16 sPassimianTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULK_UP, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FOCUS_PUNCH, MOVE_HYPER_BEAM, MOVE_IRON_TAIL, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, + MOVE_SEISMIC_TOSS, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, MOVE_SNATCH, + MOVE_SNORE, MOVE_SUNNY_DAY, + MOVE_SWAGGER, MOVE_TAUNT, MOVE_THIEF, MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_ROCK_SLIDE, - MOVE_SEISMIC_TOSS, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_PASSIMIAN @@ -30124,23 +30124,23 @@ static const u16 sPassimianTeachableLearnset[] = { #if P_FAMILY_WIMPOD static const u16 sWimpodTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_DEFENSE_CURL, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_HAIL, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, - MOVE_SURF, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_DEFENSE_CURL, - MOVE_ENDURE, MOVE_ROLLOUT, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SURF, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_WATERFALL, MOVE_UNAVAILABLE, }; @@ -30150,35 +30150,35 @@ static const u16 sGolisopodTeachableLearnset[] = { MOVE_BLIZZARD, MOVE_BRICK_BREAK, MOVE_BULK_UP, + MOVE_DEFENSE_CURL, MOVE_DIVE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FURY_CUTTER, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_SURF, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, MOVE_TAUNT, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_DEFENSE_CURL, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_ICY_WIND, - MOVE_PSYCH_UP, - MOVE_ROCK_SLIDE, - MOVE_ROLLOUT, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, - MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_WIMPOD @@ -30188,53 +30188,53 @@ static const u16 sSandygastTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_GIGA_DRAIN, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_PSYCHIC, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_TOMB, MOVE_SANDSTORM, MOVE_SHADOW_BALL, MOVE_SKILL_SWAP, - MOVE_SLUDGE_BOMB, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, MOVE_SLEEP_TALK, + MOVE_SLUDGE_BOMB, MOVE_SNORE, + MOVE_SUNNY_DAY, MOVE_SWAGGER, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sPalossandTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_GIGA_DRAIN, MOVE_HYPER_BEAM, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_PSYCHIC, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_TOMB, MOVE_SANDSTORM, MOVE_SHADOW_BALL, MOVE_SKILL_SWAP, - MOVE_SLUDGE_BOMB, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, MOVE_SLEEP_TALK, + MOVE_SLUDGE_BOMB, MOVE_SNORE, + MOVE_SUNNY_DAY, MOVE_SWAGGER, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_SANDYGAST @@ -30242,21 +30242,21 @@ static const u16 sPalossandTeachableLearnset[] = { #if P_FAMILY_PYUKUMUKU static const u16 sPyukumukuTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_COUNTER, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_HAIL, MOVE_LIGHT_SCREEN, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, MOVE_SAFEGUARD, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_COUNTER, - MOVE_ENDURE, - MOVE_PSYCH_UP, MOVE_SLEEP_TALK, MOVE_SWAGGER, + MOVE_TAUNT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_PYUKUMUKU @@ -30264,62 +30264,62 @@ static const u16 sPyukumukuTeachableLearnset[] = { #if P_FAMILY_TYPE_NULL static const u16 sTypeNullTeachableLearnset[] = { MOVE_AERIAL_ACE, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_DRAGON_CLAW, + MOVE_ENDURE, MOVE_FACADE, MOVE_HAIL, MOVE_HYPER_BEAM, + MOVE_ICY_WIND, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROAR, - MOVE_SANDSTORM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ICY_WIND, MOVE_ROCK_SLIDE, + MOVE_SANDSTORM, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, MOVE_SWORDS_DANCE, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sSilvallyTeachableLearnset[] = { MOVE_AERIAL_ACE, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_DRAGON_CLAW, + MOVE_ENDURE, + MOVE_EXPLOSION, MOVE_FACADE, MOVE_FLAMETHROWER, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_SANDSTORM, MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_STEEL_WING, MOVE_SUNNY_DAY, MOVE_SURF, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_EXPLOSION, - MOVE_ICY_WIND, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_TYPE_NULL @@ -30328,31 +30328,31 @@ static const u16 sSilvallyTeachableLearnset[] = { static const u16 sMiniorTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, + MOVE_EXPLOSION, MOVE_FACADE, MOVE_HYPER_BEAM, MOVE_LIGHT_SCREEN, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_REFLECT, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_TOMB, + MOVE_ROLLOUT, MOVE_SAFEGUARD, MOVE_SANDSTORM, - MOVE_SOLAR_BEAM, - MOVE_TOXIC, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_EXPLOSION, - MOVE_PSYCH_UP, - MOVE_ROCK_SLIDE, - MOVE_ROLLOUT, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_MINIOR @@ -30360,30 +30360,30 @@ static const u16 sMiniorTeachableLearnset[] = { #if P_FAMILY_KOMALA static const u16 sKomalaTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULK_UP, MOVE_CALM_MIND, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_HYPER_BEAM, MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_ROCK_TOMB, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, MOVE_PSYCH_UP, + MOVE_RAIN_DANCE, MOVE_ROCK_SLIDE, + MOVE_ROCK_TOMB, MOVE_ROLLOUT, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWORDS_DANCE, + MOVE_THIEF, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_KOMALA @@ -30391,33 +30391,33 @@ static const u16 sKomalaTeachableLearnset[] = { #if P_FAMILY_TURTONATOR static const u16 sTurtonatorTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BULK_UP, MOVE_DOUBLE_TEAM, MOVE_DRAGON_CLAW, MOVE_EARTHQUAKE, + MOVE_ENDURE, + MOVE_EXPLOSION, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, MOVE_HYPER_BEAM, MOVE_IRON_TAIL, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, MOVE_OVERHEAT, MOVE_PROTECT, MOVE_REST, MOVE_ROAR, MOVE_ROCK_TOMB, MOVE_SHOCK_WAVE, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_EXPLOSION, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, MOVE_SWAGGER, + MOVE_TAUNT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_TURTONATOR @@ -30425,26 +30425,26 @@ static const u16 sTurtonatorTeachableLearnset[] = { #if P_FAMILY_TOGEDEMARU static const u16 sTogedemaruTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_DEFENSE_CURL, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_HYPER_BEAM, MOVE_IRON_TAIL, MOVE_PROTECT, MOVE_REFLECT, MOVE_REST, - MOVE_SHOCK_WAVE, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_DEFENSE_CURL, - MOVE_ENDURE, MOVE_ROLLOUT, + MOVE_SHOCK_WAVE, MOVE_SLEEP_TALK, MOVE_SNORE, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_TOGEDEMARU @@ -30454,31 +30454,31 @@ static const u16 sMimikyuTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULK_UP, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_GIGA_DRAIN, MOVE_HYPER_BEAM, MOVE_LIGHT_SCREEN, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, MOVE_SAFEGUARD, MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, MOVE_SNATCH, + MOVE_SNORE, MOVE_SUNNY_DAY, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, MOVE_TAUNT, MOVE_THIEF, MOVE_THUNDER, MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWORDS_DANCE, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_MIMIKYU @@ -30491,9 +30491,12 @@ static const u16 sBruxishTeachableLearnset[] = { MOVE_BULK_UP, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_IRON_TAIL, MOVE_LIGHT_SCREEN, MOVE_PROTECT, @@ -30502,20 +30505,17 @@ static const u16 sBruxishTeachableLearnset[] = { MOVE_REFLECT, MOVE_REST, MOVE_SAFEGUARD, + MOVE_SLEEP_TALK, MOVE_SNATCH, + MOVE_SNORE, MOVE_SURF, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, MOVE_TAUNT, MOVE_TORMENT, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_BRUXISH @@ -30528,36 +30528,36 @@ static const u16 sDrampaTeachableLearnset[] = { MOVE_DOUBLE_TEAM, MOVE_DRAGON_CLAW, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, MOVE_FLY, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_LIGHT_SCREEN, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_SAFEGUARD, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_STEEL_WING, MOVE_SUNNY_DAY, MOVE_SURF, + MOVE_SWIFT, MOVE_THUNDER, MOVE_THUNDERBOLT, + MOVE_THUNDER_WAVE, MOVE_TOXIC, MOVE_WATER_PULSE, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_PSYCH_UP, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWIFT, - MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_DRAMPA @@ -30569,24 +30569,24 @@ static const u16 sDhelmiseTeachableLearnset[] = { MOVE_BRICK_BREAK, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_GIGA_DRAIN, MOVE_HYPER_BEAM, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, MOVE_SURF, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_ENDURE, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWAGGER, MOVE_SWORDS_DANCE, + MOVE_THIEF, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_DHELMISE @@ -30595,106 +30595,106 @@ static const u16 sDhelmiseTeachableLearnset[] = { static const u16 sJangmoOTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULK_UP, + MOVE_COUNTER, MOVE_DOUBLE_TEAM, MOVE_DRAGON_CLAW, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FOCUS_PUNCH, MOVE_IRON_TAIL, MOVE_PROTECT, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_TOMB, MOVE_SAFEGUARD, MOVE_SANDSTORM, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_ENDURE, - MOVE_ROCK_SLIDE, MOVE_SLEEP_TALK, MOVE_SNORE, MOVE_SWAGGER, MOVE_SWORDS_DANCE, + MOVE_TAUNT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sHakamoOTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULK_UP, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_DRAGON_CLAW, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FOCUS_PUNCH, MOVE_IRON_TAIL, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, MOVE_PROTECT, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_TOMB, MOVE_SAFEGUARD, MOVE_SANDSTORM, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_ROCK_SLIDE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWORDS_DANCE, + MOVE_TAUNT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sKommoOTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULK_UP, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_DRAGON_CLAW, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FIRE_PUNCH, MOVE_FLAMETHROWER, MOVE_FOCUS_PUNCH, MOVE_HYPER_BEAM, + MOVE_ICE_PUNCH, MOVE_IRON_TAIL, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_TOMB, MOVE_SAFEGUARD, MOVE_SANDSTORM, MOVE_SHOCK_WAVE, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_ICE_PUNCH, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_ROCK_SLIDE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWORDS_DANCE, + MOVE_TAUNT, MOVE_THUNDER_PUNCH, + MOVE_TOXIC, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_JANGMO_O @@ -30704,32 +30704,32 @@ static const u16 sTapuKokoTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLY, MOVE_HYPER_BEAM, MOVE_LIGHT_SCREEN, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, MOVE_ROAR, MOVE_SAFEGUARD, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_STEEL_WING, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_TAUNT, MOVE_THIEF, MOVE_THUNDER, MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_ENDURE, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, + MOVE_TORMENT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_TAPU_KOKO @@ -30738,28 +30738,28 @@ static const u16 sTapuKokoTeachableLearnset[] = { static const u16 sTapuLeleTeachableLearnset[] = { MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_HYPER_BEAM, MOVE_LIGHT_SCREEN, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_REFLECT, MOVE_REST, MOVE_SAFEGUARD, MOVE_SHADOW_BALL, MOVE_SKILL_SWAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SUNNY_DAY, + MOVE_SWAGGER, MOVE_TAUNT, MOVE_THIEF, MOVE_THUNDER, MOVE_THUNDERBOLT, MOVE_TORMENT, MOVE_TOXIC, - MOVE_ENDURE, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_TAPU_LELE @@ -30770,31 +30770,31 @@ static const u16 sTapuBuluTeachableLearnset[] = { MOVE_BULK_UP, MOVE_BULLET_SEED, MOVE_CALM_MIND, + MOVE_ENDURE, MOVE_FACADE, MOVE_FOCUS_PUNCH, MOVE_GIGA_DRAIN, MOVE_HYPER_BEAM, MOVE_LIGHT_SCREEN, + MOVE_MEGA_PUNCH, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_REFLECT, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SAFEGUARD, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, MOVE_TAUNT, MOVE_TORMENT, MOVE_TOXIC, - MOVE_ENDURE, - MOVE_MEGA_PUNCH, - MOVE_PSYCH_UP, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_TAPU_BULU @@ -30805,29 +30805,29 @@ static const u16 sTapuFiniTeachableLearnset[] = { MOVE_CALM_MIND, MOVE_DIVE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, MOVE_LIGHT_SCREEN, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, MOVE_SAFEGUARD, MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SURF, + MOVE_SWAGGER, MOVE_TAUNT, MOVE_TORMENT, MOVE_TOXIC, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_ENDURE, - MOVE_ICE_PUNCH, - MOVE_ICY_WIND, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_TAPU_FINI @@ -30842,9 +30842,12 @@ static const u16 sCosmoemTeachableLearnset[] = { }; static const u16 sSolgaleoTeachableLearnset[] = { + MOVE_BODY_SLAM, MOVE_CALM_MIND, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, @@ -30853,27 +30856,24 @@ static const u16 sSolgaleoTeachableLearnset[] = { MOVE_LIGHT_SCREEN, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_REFLECT, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_TOMB, MOVE_SAFEGUARD, MOVE_SHOCK_WAVE, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_PSYCH_UP, - MOVE_ROCK_SLIDE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; @@ -30882,13 +30882,17 @@ static const u16 sLunalaTeachableLearnset[] = { MOVE_BLIZZARD, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLY, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_LIGHT_SCREEN, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, @@ -30896,75 +30900,71 @@ static const u16 sLunalaTeachableLearnset[] = { MOVE_SAFEGUARD, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_PSYCH_UP, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_COSMOG #if P_FAMILY_NIHILEGO static const u16 sNihilegoTeachableLearnset[] = { + MOVE_BODY_SLAM, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_LIGHT_SCREEN, MOVE_PROTECT, MOVE_PSYCHIC, MOVE_REFLECT, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_TOMB, MOVE_SAFEGUARD, MOVE_SANDSTORM, - MOVE_SLUDGE_BOMB, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_ROCK_SLIDE, MOVE_SLEEP_TALK, + MOVE_SLUDGE_BOMB, MOVE_SNORE, MOVE_SWAGGER, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_NIHILEGO #if P_FAMILY_BUZZWOLE static const u16 sBuzzwoleTeachableLearnset[] = { + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULK_UP, + MOVE_COUNTER, MOVE_DOUBLE_TEAM, + MOVE_DYNAMIC_PUNCH, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FOCUS_PUNCH, - MOVE_PROTECT, - MOVE_REST, - MOVE_ROCK_TOMB, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, MOVE_ICE_PUNCH, MOVE_MEGA_PUNCH, + MOVE_PROTECT, + MOVE_REST, MOVE_ROCK_SLIDE, + MOVE_ROCK_TOMB, MOVE_SLEEP_TALK, MOVE_SNORE, MOVE_SWAGGER, + MOVE_TAUNT, MOVE_THUNDER_PUNCH, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_BUZZWOLE @@ -30974,22 +30974,22 @@ static const u16 sPheromosaTeachableLearnset[] = { MOVE_BLIZZARD, MOVE_BRICK_BREAK, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_PROTECT, MOVE_REST, MOVE_SHOCK_WAVE, - MOVE_SNATCH, - MOVE_TAUNT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_ENDURE, - MOVE_ICY_WIND, MOVE_SLEEP_TALK, + MOVE_SNATCH, MOVE_SNORE, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_TAUNT, + MOVE_TORMENT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_PHEROMOSA @@ -30998,6 +30998,7 @@ static const u16 sPheromosaTeachableLearnset[] = { static const u16 sXurkitreeTeachableLearnset[] = { MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_HYPER_BEAM, MOVE_LIGHT_SCREEN, @@ -31006,25 +31007,28 @@ static const u16 sXurkitreeTeachableLearnset[] = { MOVE_REFLECT, MOVE_REST, MOVE_SHOCK_WAVE, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_ENDURE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, MOVE_SWAGGER, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_XURKITREE #if P_FAMILY_CELESTEELA static const u16 sCelesteelaTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, + MOVE_EXPLOSION, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, @@ -31033,17 +31037,13 @@ static const u16 sCelesteelaTeachableLearnset[] = { MOVE_HYPER_BEAM, MOVE_PROTECT, MOVE_REST, - MOVE_SHOCK_WAVE, - MOVE_SOLAR_BEAM, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_EXPLOSION, MOVE_ROCK_SLIDE, + MOVE_SHOCK_WAVE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, MOVE_SWAGGER, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_CELESTEELA @@ -31055,45 +31055,45 @@ static const u16 sKartanaTeachableLearnset[] = { MOVE_CALM_MIND, MOVE_CUT, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, + MOVE_FURY_CUTTER, MOVE_GIGA_DRAIN, MOVE_PROTECT, MOVE_REST, - MOVE_TOXIC, - MOVE_ENDURE, - MOVE_FURY_CUTTER, MOVE_SLEEP_TALK, MOVE_SNORE, MOVE_SWAGGER, MOVE_SWORDS_DANCE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_KARTANA #if P_FAMILY_GUZZLORD static const u16 sGuzzlordTeachableLearnset[] = { + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_DOUBLE_TEAM, MOVE_DRAGON_CLAW, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, MOVE_HYPER_BEAM, MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_REST, - MOVE_ROCK_TOMB, - MOVE_SHOCK_WAVE, - MOVE_SLUDGE_BOMB, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_ENDURE, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, + MOVE_PROTECT, + MOVE_REST, MOVE_ROCK_SLIDE, + MOVE_ROCK_TOMB, + MOVE_SHOCK_WAVE, MOVE_SLEEP_TALK, + MOVE_SLUDGE_BOMB, MOVE_SNORE, + MOVE_THIEF, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_GUZZLORD @@ -31101,10 +31101,12 @@ static const u16 sGuzzlordTeachableLearnset[] = { #if P_FAMILY_NECROZMA static const u16 sNecrozmaTeachableLearnset[] = { MOVE_AERIAL_ACE, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_HYPER_BEAM, MOVE_LIGHT_SCREEN, @@ -31112,31 +31114,33 @@ static const u16 sNecrozmaTeachableLearnset[] = { MOVE_PSYCHIC, MOVE_REFLECT, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_TOMB, MOVE_SANDSTORM, MOVE_SHOCK_WAVE, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_ROCK_SLIDE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_THIEF, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_NECROZMA #if P_FAMILY_MAGEARNA static const u16 sMagearnaTeachableLearnset[] = { + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_CALM_MIND, + MOVE_DEFENSE_CURL, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, + MOVE_EXPLOSION, MOVE_FACADE, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, @@ -31145,21 +31149,17 @@ static const u16 sMagearnaTeachableLearnset[] = { MOVE_PSYCHIC, MOVE_REFLECT, MOVE_REST, + MOVE_ROLLOUT, MOVE_SHADOW_BALL, MOVE_SHOCK_WAVE, MOVE_SKILL_SWAP, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THUNDERBOLT, - MOVE_BODY_SLAM, - MOVE_DEFENSE_CURL, - MOVE_ENDURE, - MOVE_EXPLOSION, - MOVE_ROLLOUT, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; @@ -31170,46 +31170,46 @@ static const u16 sMarshadowTeachableLearnset[] = { MOVE_BRICK_BREAK, MOVE_BULK_UP, MOVE_CALM_MIND, + MOVE_COUNTER, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FIRE_PUNCH, MOVE_FOCUS_PUNCH, MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_REST, - MOVE_ROCK_TOMB, - MOVE_SHADOW_BALL, - MOVE_SNATCH, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_COUNTER, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, + MOVE_PROTECT, MOVE_PSYCH_UP, + MOVE_REST, MOVE_ROCK_SLIDE, + MOVE_ROCK_TOMB, + MOVE_SHADOW_BALL, MOVE_SLEEP_TALK, + MOVE_SNATCH, MOVE_SNORE, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_THIEF, MOVE_THUNDER_PUNCH, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_MARSHADOW #if P_FAMILY_POIPOLE static const u16 sPoipoleTeachableLearnset[] = { + MOVE_ENDURE, MOVE_FACADE, MOVE_IRON_TAIL, MOVE_PROTECT, MOVE_REST, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, MOVE_SNATCH, - MOVE_TOXIC, - MOVE_ENDURE, - MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; @@ -31217,6 +31217,7 @@ static const u16 sNaganadelTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_DOUBLE_TEAM, MOVE_DRAGON_CLAW, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, @@ -31226,39 +31227,38 @@ static const u16 sNaganadelTeachableLearnset[] = { MOVE_PROTECT, MOVE_REST, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, MOVE_SNATCH, + MOVE_SNORE, + MOVE_SWIFT, MOVE_THIEF, MOVE_THUNDERBOLT, MOVE_TOXIC, - MOVE_ENDURE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWIFT, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_POIPOLE #if P_FAMILY_STAKATAKA static const u16 sStakatakaTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_LIGHT_SCREEN, + MOVE_MEGA_KICK, MOVE_PROTECT, MOVE_REFLECT, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_TOMB, MOVE_SAFEGUARD, MOVE_SANDSTORM, MOVE_SKILL_SWAP, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MEGA_KICK, - MOVE_ROCK_SLIDE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_STAKATAKA @@ -31267,8 +31267,11 @@ static const u16 sStakatakaTeachableLearnset[] = { static const u16 sBlacephalonTeachableLearnset[] = { MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, + MOVE_EXPLOSION, MOVE_FACADE, MOVE_FIRE_BLAST, + MOVE_FIRE_PUNCH, MOVE_FLAMETHROWER, MOVE_HYPER_BEAM, MOVE_LIGHT_SCREEN, @@ -31277,18 +31280,15 @@ static const u16 sBlacephalonTeachableLearnset[] = { MOVE_PSYCHIC, MOVE_REST, MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, + MOVE_SWAGGER, MOVE_TAUNT, MOVE_THIEF, MOVE_TORMENT, MOVE_TOXIC, - MOVE_ENDURE, - MOVE_EXPLOSION, - MOVE_FIRE_PUNCH, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_BLACEPHALON @@ -31300,69 +31300,69 @@ static const u16 sZeraoraTeachableLearnset[] = { MOVE_BULK_UP, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FIRE_PUNCH, MOVE_FOCUS_PUNCH, MOVE_HYPER_BEAM, MOVE_IRON_TAIL, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, MOVE_PROTECT, MOVE_REST, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, MOVE_SNATCH, + MOVE_SNORE, + MOVE_SWIFT, MOVE_TAUNT, MOVE_THUNDER, MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWIFT, MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_ZERAORA #if P_FAMILY_MELTAN static const u16 sMeltanTeachableLearnset[] = { + MOVE_ENDURE, MOVE_FACADE, MOVE_PROTECT, MOVE_REST, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_ENDURE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sMelmetalTeachableLearnset[] = { + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, + MOVE_DYNAMIC_PUNCH, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_REST, - MOVE_ROCK_TOMB, - MOVE_SOLAR_BEAM, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, MOVE_ICE_PUNCH, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, + MOVE_PROTECT, + MOVE_REST, MOVE_ROCK_SLIDE, + MOVE_ROCK_TOMB, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_MELTAN @@ -31370,77 +31370,77 @@ static const u16 sMelmetalTeachableLearnset[] = { #if P_FAMILY_GROOKEY static const u16 sGrookeyTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BULLET_SEED, + MOVE_ENDURE, MOVE_FACADE, MOVE_GIGA_DRAIN, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, MOVE_PROTECT, MOVE_REST, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_STRENGTH, MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_TAUNT, + MOVE_THIEF, MOVE_UNAVAILABLE, }; static const u16 sThwackeyTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BULLET_SEED, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, MOVE_FACADE, MOVE_GIGA_DRAIN, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, MOVE_PROTECT, MOVE_REST, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_STRENGTH, MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_TAUNT, + MOVE_THIEF, MOVE_UNAVAILABLE, }; static const u16 sRillaboomTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULK_UP, MOVE_BULLET_SEED, + MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FOCUS_PUNCH, MOVE_GIGA_DRAIN, MOVE_HYPER_BEAM, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, MOVE_PROTECT, MOVE_REST, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_STRENGTH, MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_TAUNT, + MOVE_THIEF, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_GROOKEY @@ -31448,69 +31448,69 @@ static const u16 sRillaboomTeachableLearnset[] = { #if P_FAMILY_SCORBUNNY static const u16 sScorbunnyTeachableLearnset[] = { MOVE_ATTRACT, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_REST, - MOVE_SUNNY_DAY, - MOVE_TAUNT, MOVE_COUNTER, MOVE_DOUBLE_EDGE, MOVE_ENDURE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, MOVE_MEGA_KICK, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REST, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SUNNY_DAY, MOVE_SWIFT, + MOVE_TAUNT, MOVE_UNAVAILABLE, }; static const u16 sRabootTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULK_UP, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_REST, - MOVE_SUNNY_DAY, - MOVE_TAUNT, MOVE_COUNTER, MOVE_DOUBLE_EDGE, MOVE_ENDURE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, MOVE_MEGA_KICK, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REST, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SUNNY_DAY, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_TAUNT, MOVE_UNAVAILABLE, }; static const u16 sCinderaceTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULK_UP, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, + MOVE_FIRE_PUNCH, MOVE_FLAMETHROWER, MOVE_HYPER_BEAM, + MOVE_MEGA_KICK, + MOVE_MUD_SLAP, MOVE_OVERHEAT, MOVE_PROTECT, MOVE_REST, MOVE_SHADOW_BALL, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_MEGA_KICK, - MOVE_MUD_SLAP, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SUNNY_DAY, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_TAUNT, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_SCORBUNNY @@ -31520,6 +31520,7 @@ static const u16 sSobbleTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DIVE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_LIGHT_SCREEN, MOVE_PROTECT, @@ -31527,13 +31528,12 @@ static const u16 sSobbleTeachableLearnset[] = { MOVE_REFLECT, MOVE_REST, MOVE_SAFEGUARD, - MOVE_SURF, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_ENDURE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SURF, MOVE_SWIFT, + MOVE_WATERFALL, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; @@ -31541,6 +31541,7 @@ static const u16 sDrizzileTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DIVE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_LIGHT_SCREEN, MOVE_PROTECT, @@ -31548,13 +31549,12 @@ static const u16 sDrizzileTeachableLearnset[] = { MOVE_REFLECT, MOVE_REST, MOVE_SAFEGUARD, - MOVE_SURF, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_ENDURE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SURF, MOVE_SWIFT, + MOVE_WATERFALL, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; @@ -31563,28 +31563,28 @@ static const u16 sInteleonTeachableLearnset[] = { MOVE_BLIZZARD, MOVE_DIVE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_LIGHT_SCREEN, + MOVE_METRONOME, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, MOVE_SAFEGUARD, MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SURF, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, MOVE_TAUNT, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_METRONOME, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWIFT, - MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_SOBBLE @@ -31592,48 +31592,48 @@ static const u16 sInteleonTeachableLearnset[] = { #if P_FAMILY_SKWOVET static const u16 sSkwovetTeachableLearnset[] = { MOVE_ATTRACT, - MOVE_BULLET_SEED, - MOVE_DIG, - MOVE_FACADE, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_REST, - MOVE_THIEF, MOVE_BODY_SLAM, + MOVE_BULLET_SEED, MOVE_COUNTER, MOVE_DEFENSE_CURL, + MOVE_DIG, MOVE_DOUBLE_EDGE, MOVE_ENDURE, + MOVE_FACADE, + MOVE_IRON_TAIL, MOVE_MUD_SLAP, + MOVE_PROTECT, + MOVE_REST, MOVE_ROLLOUT, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_THIEF, MOVE_UNAVAILABLE, }; static const u16 sGreedentTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BULLET_SEED, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_HYPER_BEAM, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MUD_SLAP, MOVE_ROLLOUT, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SUNNY_DAY, MOVE_SWORDS_DANCE, + MOVE_THIEF, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_SKWOVET @@ -31642,44 +31642,47 @@ static const u16 sGreedentTeachableLearnset[] = { static const u16 sRookideeTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLY, MOVE_PROTECT, MOVE_REST, MOVE_ROCK_SMASH, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_ENDURE, MOVE_SLEEP_TALK, MOVE_SNORE, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_TAUNT, + MOVE_THIEF, MOVE_UNAVAILABLE, }; static const u16 sCorvisquireTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLY, MOVE_PROTECT, MOVE_REST, MOVE_ROCK_SMASH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_ENDURE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_TAUNT, + MOVE_THIEF, MOVE_UNAVAILABLE, }; static const u16 sCorviknightTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BULK_UP, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLY, MOVE_HYPER_BEAM, @@ -31689,17 +31692,14 @@ static const u16 sCorviknightTeachableLearnset[] = { MOVE_REFLECT, MOVE_REST, MOVE_ROCK_SMASH, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_TAUNT, + MOVE_THIEF, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_ROOKIDEE @@ -31712,6 +31712,7 @@ static const u16 sBlipbugTeachableLearnset[] = { static const u16 sDottlerTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, + MOVE_ENDURE, MOVE_FACADE, MOVE_LIGHT_SCREEN, MOVE_PROTECT, @@ -31721,16 +31722,16 @@ static const u16 sDottlerTeachableLearnset[] = { MOVE_SAFEGUARD, MOVE_SHADOW_BALL, MOVE_SKILL_SWAP, - MOVE_SOLAR_BEAM, - MOVE_ENDURE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, MOVE_UNAVAILABLE, }; static const u16 sOrbeetleTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, + MOVE_ENDURE, MOVE_FACADE, MOVE_GIGA_DRAIN, MOVE_HYPER_BEAM, @@ -31742,10 +31743,9 @@ static const u16 sOrbeetleTeachableLearnset[] = { MOVE_SAFEGUARD, MOVE_SHADOW_BALL, MOVE_SKILL_SWAP, - MOVE_SOLAR_BEAM, - MOVE_ENDURE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_BLIPBUG @@ -31754,35 +31754,35 @@ static const u16 sOrbeetleTeachableLearnset[] = { static const u16 sNickitTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DIG, + MOVE_ENDURE, MOVE_FACADE, MOVE_PROTECT, MOVE_REST, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_ENDURE, MOVE_SLEEP_TALK, MOVE_SNORE, MOVE_SWIFT, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, MOVE_UNAVAILABLE, }; static const u16 sThievulTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DIG, + MOVE_ENDURE, MOVE_FACADE, MOVE_HYPER_BEAM, MOVE_PROTECT, MOVE_PSYCHIC, MOVE_REST, MOVE_SHADOW_BALL, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_ENDURE, MOVE_SLEEP_TALK, MOVE_SNORE, MOVE_SWIFT, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_NICKIT @@ -31791,33 +31791,33 @@ static const u16 sThievulTeachableLearnset[] = { static const u16 sGossifleurTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULLET_SEED, + MOVE_ENDURE, MOVE_FACADE, MOVE_GIGA_DRAIN, MOVE_LIGHT_SCREEN, MOVE_PROTECT, MOVE_REST, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_ENDURE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, MOVE_UNAVAILABLE, }; static const u16 sEldegossTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULLET_SEED, + MOVE_ENDURE, MOVE_FACADE, MOVE_GIGA_DRAIN, MOVE_HYPER_BEAM, MOVE_LIGHT_SCREEN, MOVE_PROTECT, MOVE_REST, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_ENDURE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_GOSSIFLEUR @@ -31825,13 +31825,13 @@ static const u16 sEldegossTeachableLearnset[] = { #if P_FAMILY_WOOLOO static const u16 sWoolooTeachableLearnset[] = { MOVE_ATTRACT, - MOVE_FACADE, - MOVE_PROTECT, - MOVE_REST, MOVE_COUNTER, MOVE_DEFENSE_CURL, MOVE_DOUBLE_EDGE, MOVE_ENDURE, + MOVE_FACADE, + MOVE_PROTECT, + MOVE_REST, MOVE_SLEEP_TALK, MOVE_SNORE, MOVE_SWAGGER, @@ -31841,16 +31841,16 @@ static const u16 sWoolooTeachableLearnset[] = { static const u16 sDubwoolTeachableLearnset[] = { MOVE_ATTRACT, - MOVE_FACADE, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_REST, MOVE_BODY_SLAM, MOVE_COUNTER, MOVE_DEFENSE_CURL, MOVE_DOUBLE_EDGE, MOVE_ENDURE, + MOVE_FACADE, + MOVE_HYPER_BEAM, MOVE_MEGA_KICK, + MOVE_PROTECT, + MOVE_REST, MOVE_SLEEP_TALK, MOVE_SNORE, MOVE_SWAGGER, @@ -31863,28 +31863,32 @@ static const u16 sDubwoolTeachableLearnset[] = { #if P_FAMILY_CHEWTLE static const u16 sChewtleTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, + MOVE_COUNTER, MOVE_DIVE, + MOVE_ENDURE, MOVE_FACADE, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SURF, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_ENDURE, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_UNAVAILABLE, }; static const u16 sDrednawTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, + MOVE_COUNTER, MOVE_DIG, MOVE_DIVE, + MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, @@ -31892,19 +31896,15 @@ static const u16 sDrednawTeachableLearnset[] = { MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_TOMB, MOVE_SANDSTORM, - MOVE_SURF, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ROCK_SLIDE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SURF, MOVE_SWORDS_DANCE, + MOVE_WATERFALL, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_CHEWTLE @@ -31913,17 +31913,17 @@ static const u16 sDrednawTeachableLearnset[] = { static const u16 sYamperTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DIG, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, MOVE_FACADE, MOVE_PROTECT, MOVE_REST, MOVE_ROAR, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, MOVE_SLEEP_TALK, MOVE_SNORE, MOVE_SWIFT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; @@ -31932,18 +31932,18 @@ static const u16 sBoltundTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULK_UP, MOVE_DIG, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, MOVE_FACADE, MOVE_HYPER_BEAM, MOVE_PROTECT, MOVE_REST, MOVE_ROAR, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, MOVE_SLEEP_TALK, MOVE_SNORE, MOVE_SWIFT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; @@ -31952,18 +31952,18 @@ static const u16 sBoltundTeachableLearnset[] = { #if P_FAMILY_ROLYCOLY static const u16 sRolycolyTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_DIG, + MOVE_ENDURE, + MOVE_EXPLOSION, MOVE_FACADE, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_REFLECT, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_TOMB, MOVE_SANDSTORM, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_EXPLOSION, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, MOVE_SLEEP_TALK, MOVE_SNORE, MOVE_UNAVAILABLE, @@ -31971,53 +31971,53 @@ static const u16 sRolycolyTeachableLearnset[] = { static const u16 sCarkolTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_DIG, + MOVE_ENDURE, + MOVE_EXPLOSION, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, + MOVE_MUD_SLAP, MOVE_OVERHEAT, MOVE_PROTECT, MOVE_REFLECT, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_TOMB, MOVE_SANDSTORM, - MOVE_SUNNY_DAY, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_EXPLOSION, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SUNNY_DAY, MOVE_UNAVAILABLE, }; static const u16 sCoalossalTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_DIG, MOVE_EARTHQUAKE, + MOVE_ENDURE, + MOVE_EXPLOSION, MOVE_FACADE, MOVE_FIRE_BLAST, + MOVE_FIRE_PUNCH, MOVE_FLAMETHROWER, MOVE_HYPER_BEAM, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MUD_SLAP, MOVE_OVERHEAT, MOVE_PROTECT, MOVE_REFLECT, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_TOMB, MOVE_SANDSTORM, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_EXPLOSION, - MOVE_FIRE_PUNCH, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_ROLYCOLY @@ -32034,26 +32034,29 @@ static const u16 sFlappleTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BULLET_SEED, + MOVE_DEFENSE_CURL, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLY, MOVE_GIGA_DRAIN, MOVE_HYPER_BEAM, MOVE_PROTECT, MOVE_REST, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_DEFENSE_CURL, - MOVE_ENDURE, MOVE_ROLLOUT, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, MOVE_UNAVAILABLE, }; static const u16 sAppletunTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BULLET_SEED, + MOVE_DEFENSE_CURL, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_GIGA_DRAIN, MOVE_HYPER_BEAM, @@ -32062,40 +32065,40 @@ static const u16 sAppletunTeachableLearnset[] = { MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, - MOVE_SAFEGUARD, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_BODY_SLAM, - MOVE_DEFENSE_CURL, - MOVE_ENDURE, MOVE_ROLLOUT, + MOVE_SAFEGUARD, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, MOVE_UNAVAILABLE, }; #if P_GEN_9_CROSS_EVOS static const u16 sDipplinTeachableLearnset[] = { + MOVE_BODY_SLAM, MOVE_BULLET_SEED, + MOVE_DEFENSE_CURL, + MOVE_ENDURE, MOVE_FACADE, MOVE_GIGA_DRAIN, MOVE_HYPER_BEAM, MOVE_PROTECT, MOVE_REFLECT, MOVE_REST, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_BODY_SLAM, - MOVE_DEFENSE_CURL, - MOVE_ENDURE, MOVE_ROLLOUT, MOVE_SLEEP_TALK, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, MOVE_UNAVAILABLE, }; static const u16 sHydrappleTeachableLearnset[] = { + MOVE_BODY_SLAM, MOVE_BULLET_SEED, + MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_GIGA_DRAIN, MOVE_HYPER_BEAM, @@ -32103,12 +32106,9 @@ static const u16 sHydrappleTeachableLearnset[] = { MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, + MOVE_SLEEP_TALK, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_SLEEP_TALK, MOVE_UNAVAILABLE, }; #endif //P_GEN_9_CROSS_EVOS @@ -32117,17 +32117,17 @@ static const u16 sHydrappleTeachableLearnset[] = { #if P_FAMILY_SILICOBRA static const u16 sSilicobraTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_DIG, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_TOMB, MOVE_SANDSTORM, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, MOVE_SLEEP_TALK, MOVE_SNORE, MOVE_UNAVAILABLE, @@ -32135,18 +32135,18 @@ static const u16 sSilicobraTeachableLearnset[] = { static const u16 sSandacondaTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_DIG, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_HYPER_BEAM, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_TOMB, MOVE_SANDSTORM, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, MOVE_SLEEP_TALK, MOVE_SNORE, MOVE_UNAVAILABLE, @@ -32159,21 +32159,21 @@ static const u16 sCramorantTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DIVE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLY, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_STEEL_WING, MOVE_SURF, MOVE_THIEF, MOVE_WATER_PULSE, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_CRAMORANT @@ -32183,18 +32183,18 @@ static const u16 sArrokudaTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_DIVE, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, MOVE_FACADE, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, - MOVE_SURF, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SURF, MOVE_SWIFT, + MOVE_WATERFALL, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; @@ -32203,20 +32203,20 @@ static const u16 sBarraskewdaTeachableLearnset[] = { MOVE_BLIZZARD, MOVE_BRICK_BREAK, MOVE_DIVE, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, MOVE_FACADE, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, - MOVE_SURF, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SURF, MOVE_SWIFT, + MOVE_WATERFALL, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_ARROKUDA @@ -32224,10 +32224,10 @@ static const u16 sBarraskewdaTeachableLearnset[] = { #if P_FAMILY_TOXEL static const u16 sToxelTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_ENDURE, MOVE_FACADE, MOVE_PROTECT, MOVE_REST, - MOVE_ENDURE, MOVE_SLEEP_TALK, MOVE_SNORE, MOVE_UNAVAILABLE, @@ -32236,60 +32236,60 @@ static const u16 sToxelTeachableLearnset[] = { static const u16 sToxtricityAmpedTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FIRE_PUNCH, MOVE_HYPER_BEAM, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_METRONOME, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_SUNNY_DAY, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_TAUNT, MOVE_THIEF, MOVE_THUNDER, MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_METRONOME, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; static const u16 sToxtricityLowKeyTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FIRE_PUNCH, MOVE_HYPER_BEAM, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_METRONOME, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_SUNNY_DAY, + MOVE_SWAGGER, + MOVE_SWIFT, MOVE_TAUNT, MOVE_THIEF, MOVE_THUNDER, MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_METRONOME, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWAGGER, - MOVE_SWIFT, MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_TOXEL @@ -32297,20 +32297,22 @@ static const u16 sToxtricityLowKeyTeachableLearnset[] = { #if P_FAMILY_SIZZLIPEDE static const u16 sSizzlipedeTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_DEFENSE_CURL, + MOVE_ENDURE, MOVE_FACADE, MOVE_PROTECT, MOVE_REST, - MOVE_SUNNY_DAY, - MOVE_DEFENSE_CURL, - MOVE_ENDURE, MOVE_ROLLOUT, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SUNNY_DAY, MOVE_UNAVAILABLE, }; static const u16 sCentiskorchTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_DEFENSE_CURL, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, @@ -32318,13 +32320,11 @@ static const u16 sCentiskorchTeachableLearnset[] = { MOVE_OVERHEAT, MOVE_PROTECT, MOVE_REST, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_DEFENSE_CURL, - MOVE_ENDURE, MOVE_ROLLOUT, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_SIZZLIPEDE @@ -32332,46 +32332,46 @@ static const u16 sCentiskorchTeachableLearnset[] = { #if P_FAMILY_CLOBBOPUS static const u16 sClobbopusTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULK_UP, MOVE_DIVE, + MOVE_ENDURE, MOVE_FACADE, + MOVE_ICE_PUNCH, + MOVE_MEGA_PUNCH, MOVE_PROTECT, MOVE_REST, MOVE_ROCK_SMASH, - MOVE_TAUNT, - MOVE_WATERFALL, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_ICE_PUNCH, - MOVE_MEGA_PUNCH, MOVE_SEISMIC_TOSS, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_TAUNT, + MOVE_WATERFALL, MOVE_UNAVAILABLE, }; static const u16 sGrapploctTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULK_UP, MOVE_DIG, MOVE_DIVE, + MOVE_ENDURE, MOVE_FACADE, MOVE_HYPER_BEAM, + MOVE_ICE_PUNCH, + MOVE_MEGA_PUNCH, MOVE_PROTECT, MOVE_REST, MOVE_ROCK_SMASH, - MOVE_SURF, - MOVE_TAUNT, - MOVE_WATERFALL, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_ICE_PUNCH, - MOVE_MEGA_PUNCH, MOVE_SEISMIC_TOSS, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SURF, + MOVE_TAUNT, + MOVE_WATERFALL, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_CLOBBOPUS @@ -32379,15 +32379,15 @@ static const u16 sGrapploctTeachableLearnset[] = { #if P_FAMILY_SINISTEA static const u16 sSinisteaTeachableLearnset[] = { MOVE_CALM_MIND, + MOVE_ENDURE, MOVE_FACADE, MOVE_GIGA_DRAIN, + MOVE_METRONOME, MOVE_PROTECT, MOVE_PSYCHIC, MOVE_REST, MOVE_SHADOW_BALL, MOVE_SKILL_SWAP, - MOVE_ENDURE, - MOVE_METRONOME, MOVE_SLEEP_TALK, MOVE_SNORE, MOVE_UNAVAILABLE, @@ -32395,18 +32395,18 @@ static const u16 sSinisteaTeachableLearnset[] = { static const u16 sPolteageistTeachableLearnset[] = { MOVE_CALM_MIND, + MOVE_ENDURE, MOVE_FACADE, MOVE_GIGA_DRAIN, MOVE_HYPER_BEAM, MOVE_LIGHT_SCREEN, + MOVE_METRONOME, MOVE_PROTECT, MOVE_PSYCHIC, MOVE_REFLECT, MOVE_REST, MOVE_SHADOW_BALL, MOVE_SKILL_SWAP, - MOVE_ENDURE, - MOVE_METRONOME, MOVE_SLEEP_TALK, MOVE_SNORE, MOVE_UNAVAILABLE, @@ -32417,18 +32417,18 @@ static const u16 sPolteageistTeachableLearnset[] = { static const u16 sHatennaTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, + MOVE_ENDURE, MOVE_FACADE, MOVE_GIGA_DRAIN, MOVE_LIGHT_SCREEN, + MOVE_METRONOME, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_REFLECT, MOVE_REST, MOVE_SAFEGUARD, MOVE_SKILL_SWAP, - MOVE_ENDURE, - MOVE_METRONOME, - MOVE_PSYCH_UP, MOVE_SLEEP_TALK, MOVE_SNORE, MOVE_SWIFT, @@ -32439,18 +32439,18 @@ static const u16 sHatennaTeachableLearnset[] = { static const u16 sHattremTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, + MOVE_ENDURE, MOVE_FACADE, MOVE_GIGA_DRAIN, MOVE_LIGHT_SCREEN, + MOVE_METRONOME, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_REFLECT, MOVE_REST, MOVE_SAFEGUARD, MOVE_SKILL_SWAP, - MOVE_ENDURE, - MOVE_METRONOME, - MOVE_PSYCH_UP, MOVE_SLEEP_TALK, MOVE_SNORE, MOVE_SWIFT, @@ -32461,20 +32461,20 @@ static const u16 sHattremTeachableLearnset[] = { static const u16 sHattereneTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, + MOVE_ENDURE, MOVE_FACADE, MOVE_GIGA_DRAIN, MOVE_HYPER_BEAM, MOVE_LIGHT_SCREEN, + MOVE_METRONOME, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_REFLECT, MOVE_REST, MOVE_SAFEGUARD, MOVE_SHADOW_BALL, MOVE_SKILL_SWAP, - MOVE_ENDURE, - MOVE_METRONOME, - MOVE_PSYCH_UP, MOVE_SLEEP_TALK, MOVE_SNORE, MOVE_SWIFT, @@ -32487,72 +32487,72 @@ static const u16 sHattereneTeachableLearnset[] = { #if P_FAMILY_IMPIDIMP static const u16 sImpidimpTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_ENDURE, MOVE_FACADE, MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_REFLECT, - MOVE_REST, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_ENDURE, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, MOVE_METRONOME, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, MOVE_SLEEP_TALK, MOVE_SNORE, MOVE_SWAGGER, + MOVE_TAUNT, + MOVE_THIEF, MOVE_THUNDER_WAVE, + MOVE_TORMENT, MOVE_UNAVAILABLE, }; static const u16 sMorgremTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_ENDURE, MOVE_FACADE, MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_REFLECT, - MOVE_REST, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_ENDURE, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, MOVE_METRONOME, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, MOVE_SLEEP_TALK, MOVE_SNORE, MOVE_SWAGGER, + MOVE_TAUNT, + MOVE_THIEF, MOVE_THUNDER_WAVE, + MOVE_TORMENT, MOVE_UNAVAILABLE, }; static const u16 sGrimmsnarlTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULK_UP, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FIRE_PUNCH, MOVE_FOCUS_PUNCH, MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_REFLECT, - MOVE_REST, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH, + MOVE_LIGHT_SCREEN, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, MOVE_METRONOME, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, MOVE_SLEEP_TALK, MOVE_SNORE, MOVE_SWAGGER, + MOVE_TAUNT, + MOVE_THIEF, MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, + MOVE_TORMENT, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_IMPIDIMP @@ -32560,10 +32560,10 @@ static const u16 sGrimmsnarlTeachableLearnset[] = { #if P_FAMILY_MILCERY static const u16 sMilceryTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_ENDURE, MOVE_FACADE, MOVE_PROTECT, MOVE_REST, - MOVE_ENDURE, MOVE_SLEEP_TALK, MOVE_SNORE, MOVE_UNAVAILABLE, @@ -32572,43 +32572,43 @@ static const u16 sMilceryTeachableLearnset[] = { static const u16 sAlcremieTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, + MOVE_ENDURE, MOVE_FACADE, MOVE_GIGA_DRAIN, MOVE_HYPER_BEAM, MOVE_LIGHT_SCREEN, + MOVE_METRONOME, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_REST, MOVE_SAFEGUARD, - MOVE_SOLAR_BEAM, - MOVE_ENDURE, - MOVE_METRONOME, - MOVE_PSYCH_UP, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_MILCERY #if P_FAMILY_FALINKS static const u16 sFalinksTeachableLearnset[] = { + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULK_UP, + MOVE_COUNTER, + MOVE_ENDURE, MOVE_FACADE, MOVE_HYPER_BEAM, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, - MOVE_SUNNY_DAY, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_ENDURE, - MOVE_PSYCH_UP, - MOVE_ROCK_SLIDE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SUNNY_DAY, MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; @@ -32617,19 +32617,19 @@ static const u16 sFalinksTeachableLearnset[] = { #if P_FAMILY_PINCURCHIN static const u16 sPincurchinTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_HYPER_BEAM, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, - MOVE_SURF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_BODY_SLAM, - MOVE_ENDURE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SURF, MOVE_SWIFT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; @@ -32638,11 +32638,11 @@ static const u16 sPincurchinTeachableLearnset[] = { #if P_FAMILY_SNOM static const u16 sSnomTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_ENDURE, MOVE_FACADE, + MOVE_ICY_WIND, MOVE_PROTECT, MOVE_REST, - MOVE_ENDURE, - MOVE_ICY_WIND, MOVE_SLEEP_TALK, MOVE_SNORE, MOVE_UNAVAILABLE, @@ -32652,18 +32652,18 @@ static const u16 sFrosmothTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_CALM_MIND, + MOVE_ENDURE, MOVE_FACADE, MOVE_GIGA_DRAIN, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_LIGHT_SCREEN, MOVE_PROTECT, MOVE_REFLECT, MOVE_REST, MOVE_SAFEGUARD, - MOVE_ENDURE, - MOVE_ICY_WIND, MOVE_SLEEP_TALK, MOVE_SNORE, MOVE_SWIFT, @@ -32674,22 +32674,22 @@ static const u16 sFrosmothTeachableLearnset[] = { #if P_FAMILY_STONJOURNER static const u16 sStonjournerTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_HYPER_BEAM, + MOVE_MEGA_KICK, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_TOMB, MOVE_SAFEGUARD, MOVE_SANDSTORM, - MOVE_SUNNY_DAY, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_MEGA_KICK, - MOVE_PSYCH_UP, - MOVE_ROCK_SLIDE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SUNNY_DAY, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_STONJOURNER @@ -32698,25 +32698,25 @@ static const u16 sStonjournerTeachableLearnset[] = { static const u16 sEiscueTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_DIVE, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, MOVE_FACADE, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SURF, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ICE_PUNCH, - MOVE_ICY_WIND, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_EISCUE @@ -32724,17 +32724,17 @@ static const u16 sEiscueTeachableLearnset[] = { #if P_FAMILY_INDEEDEE static const u16 sIndeedeeMTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_CALM_MIND, + MOVE_ENDURE, MOVE_FACADE, + MOVE_METRONOME, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_REST, MOVE_SHADOW_BALL, MOVE_SKILL_SWAP, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_METRONOME, - MOVE_PSYCH_UP, MOVE_SLEEP_TALK, MOVE_SNORE, MOVE_SWIFT, @@ -32743,20 +32743,20 @@ static const u16 sIndeedeeMTeachableLearnset[] = { static const u16 sIndeedeeFTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_CALM_MIND, + MOVE_ENDURE, MOVE_FACADE, MOVE_LIGHT_SCREEN, + MOVE_METRONOME, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_REFLECT, MOVE_REST, MOVE_SAFEGUARD, MOVE_SHADOW_BALL, MOVE_SKILL_SWAP, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_METRONOME, - MOVE_PSYCH_UP, MOVE_SLEEP_TALK, MOVE_SNORE, MOVE_SWIFT, @@ -32769,22 +32769,22 @@ static const u16 sMorpekoTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_BULLET_SEED, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, MOVE_FACADE, MOVE_PROTECT, MOVE_REST, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, MOVE_SLEEP_TALK, MOVE_SNORE, MOVE_SWAGGER, MOVE_SWIFT, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, + MOVE_TORMENT, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_MORPEKO @@ -32792,53 +32792,53 @@ static const u16 sMorpekoTeachableLearnset[] = { #if P_FAMILY_CUFANT static const u16 sCufantTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, + MOVE_DEFENSE_CURL, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, + MOVE_MEGA_KICK, MOVE_PROTECT, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_STRENGTH, - MOVE_BODY_SLAM, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MEGA_KICK, - MOVE_ROCK_SLIDE, MOVE_ROLLOUT, + MOVE_SANDSTORM, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, MOVE_SWAGGER, MOVE_UNAVAILABLE, }; static const u16 sCopperajahTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, + MOVE_DEFENSE_CURL, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_HYPER_BEAM, + MOVE_MEGA_KICK, MOVE_PROTECT, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_STRENGTH, - MOVE_TAUNT, - MOVE_BODY_SLAM, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MEGA_KICK, - MOVE_ROCK_SLIDE, MOVE_ROLLOUT, + MOVE_SANDSTORM, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_STRENGTH, MOVE_SWAGGER, + MOVE_TAUNT, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_CUFANT @@ -32846,28 +32846,28 @@ static const u16 sCopperajahTeachableLearnset[] = { #if P_FAMILY_DRACOZOLT static const u16 sDracozoltTeachableLearnset[] = { MOVE_AERIAL_ACE, + MOVE_BODY_SLAM, MOVE_DRAGON_CLAW, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, MOVE_HYPER_BEAM, MOVE_IRON_TAIL, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_TOMB, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SUNNY_DAY, MOVE_TAUNT, MOVE_THUNDER, MOVE_THUNDERBOLT, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, @@ -32877,27 +32877,27 @@ static const u16 sDracozoltTeachableLearnset[] = { #if P_FAMILY_ARCTOZOLT static const u16 sArctozoltTeachableLearnset[] = { MOVE_BLIZZARD, + MOVE_BODY_SLAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_IRON_TAIL, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_TOMB, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SURF, MOVE_TAUNT, MOVE_THUNDER, MOVE_THUNDERBOLT, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, @@ -32906,22 +32906,22 @@ static const u16 sArctozoltTeachableLearnset[] = { #if P_FAMILY_DRACOVISH static const u16 sDracovishTeachableLearnset[] = { + MOVE_BODY_SLAM, MOVE_DIVE, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_HYPER_BEAM, + MOVE_MEGA_KICK, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, - MOVE_ROCK_TOMB, - MOVE_SURF, - MOVE_WATERFALL, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_MEGA_KICK, MOVE_ROCK_SLIDE, + MOVE_ROCK_TOMB, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SURF, + MOVE_WATERFALL, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_DRACOVISH @@ -32929,23 +32929,23 @@ static const u16 sDracovishTeachableLearnset[] = { #if P_FAMILY_ARCTOVISH static const u16 sArctovishTeachableLearnset[] = { MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_DIVE, + MOVE_ENDURE, MOVE_FACADE, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, - MOVE_ROCK_TOMB, - MOVE_SURF, - MOVE_WATERFALL, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_ICY_WIND, MOVE_ROCK_SLIDE, + MOVE_ROCK_TOMB, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SURF, + MOVE_WATERFALL, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_ARCTOVISH @@ -32953,8 +32953,11 @@ static const u16 sArctovishTeachableLearnset[] = { #if P_FAMILY_DURALUDON static const u16 sDuraludonTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, + MOVE_DOUBLE_EDGE, MOVE_DRAGON_CLAW, + MOVE_ENDURE, MOVE_FACADE, MOVE_HYPER_BEAM, MOVE_LIGHT_SCREEN, @@ -32962,27 +32965,27 @@ static const u16 sDuraludonTeachableLearnset[] = { MOVE_REFLECT, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, - MOVE_SOLAR_BEAM, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ROCK_SLIDE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, MOVE_SWORDS_DANCE, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; #if P_GEN_9_CROSS_EVOS static const u16 sArchaludonTeachableLearnset[] = { + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, + MOVE_DOUBLE_EDGE, MOVE_DRAGON_CLAW, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_HYPER_BEAM, MOVE_LIGHT_SCREEN, @@ -32990,17 +32993,14 @@ static const u16 sArchaludonTeachableLearnset[] = { MOVE_REFLECT, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, + MOVE_SLEEP_TALK, MOVE_SOLAR_BEAM, + MOVE_SWORDS_DANCE, MOVE_THUNDER, MOVE_THUNDERBOLT, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SWORDS_DANCE, MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; @@ -33011,10 +33011,10 @@ static const u16 sArchaludonTeachableLearnset[] = { static const u16 sDreepyTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_PROTECT, MOVE_REST, - MOVE_ENDURE, MOVE_SLEEP_TALK, MOVE_SNORE, MOVE_SWIFT, @@ -33025,7 +33025,9 @@ static const u16 sDreepyTeachableLearnset[] = { static const u16 sDrakloakTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DIVE, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, @@ -33034,26 +33036,27 @@ static const u16 sDrakloakTeachableLearnset[] = { MOVE_REFLECT, MOVE_REST, MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_STEEL_WING, MOVE_SUNNY_DAY, MOVE_SURF, + MOVE_SWIFT, MOVE_THIEF, MOVE_THUNDER, MOVE_THUNDERBOLT, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWIFT, MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; static const u16 sDragapultTeachableLearnset[] = { MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_DIVE, + MOVE_DOUBLE_EDGE, MOVE_DOUBLE_TEAM, MOVE_DRAGON_CLAW, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, @@ -33064,19 +33067,16 @@ static const u16 sDragapultTeachableLearnset[] = { MOVE_REFLECT, MOVE_REST, MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_STEEL_WING, MOVE_SUNNY_DAY, MOVE_SURF, + MOVE_SWIFT, MOVE_THIEF, MOVE_THUNDER, MOVE_THUNDERBOLT, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SWIFT, MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; @@ -33084,15 +33084,15 @@ static const u16 sDragapultTeachableLearnset[] = { #if P_FAMILY_ZACIAN static const u16 sZacianTeachableLearnset[] = { + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_DIG, + MOVE_ENDURE, MOVE_FACADE, MOVE_HYPER_BEAM, MOVE_IRON_TAIL, MOVE_PROTECT, MOVE_REST, - MOVE_BODY_SLAM, - MOVE_ENDURE, MOVE_SLEEP_TALK, MOVE_SNORE, MOVE_SWIFT, @@ -33103,8 +33103,10 @@ static const u16 sZacianTeachableLearnset[] = { #if P_FAMILY_ZAMAZENTA static const u16 sZamazentaTeachableLearnset[] = { + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_DIG, + MOVE_ENDURE, MOVE_FACADE, MOVE_HYPER_BEAM, MOVE_IRON_TAIL, @@ -33116,12 +33118,10 @@ static const u16 sZamazentaTeachableLearnset[] = { MOVE_ROAR, MOVE_SAFEGUARD, MOVE_SANDSTORM, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_BODY_SLAM, - MOVE_ENDURE, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, MOVE_SWIFT, MOVE_UNAVAILABLE, }; @@ -33129,6 +33129,8 @@ static const u16 sZamazentaTeachableLearnset[] = { #if P_FAMILY_ETERNATUS static const u16 sEternatusTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, @@ -33140,14 +33142,12 @@ static const u16 sEternatusTeachableLearnset[] = { MOVE_REFLECT, MOVE_REST, MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SNORE, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_SLEEP_TALK, - MOVE_SNORE, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_ETERNATUS @@ -33156,23 +33156,23 @@ static const u16 sEternatusTeachableLearnset[] = { static const u16 sKubfuTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULK_UP, - MOVE_DIG, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_PROTECT, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_BODY_SLAM, MOVE_COUNTER, + MOVE_DIG, MOVE_DOUBLE_EDGE, MOVE_DYNAMIC_PUNCH, MOVE_ENDURE, + MOVE_FACADE, MOVE_FIRE_PUNCH, + MOVE_FOCUS_PUNCH, MOVE_ICE_PUNCH, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, + MOVE_PROTECT, + MOVE_REST, + MOVE_ROCK_SMASH, MOVE_SLEEP_TALK, MOVE_SNORE, MOVE_SWORDS_DANCE, @@ -33183,31 +33183,31 @@ static const u16 sKubfuTeachableLearnset[] = { static const u16 sUrshifuSingleStrikeTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULK_UP, - MOVE_DIG, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_PROTECT, - MOVE_REST, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_TAUNT, - MOVE_BODY_SLAM, MOVE_COUNTER, + MOVE_DIG, MOVE_DOUBLE_EDGE, MOVE_DYNAMIC_PUNCH, MOVE_ENDURE, + MOVE_FACADE, MOVE_FIRE_PUNCH, + MOVE_FOCUS_PUNCH, MOVE_ICE_PUNCH, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, + MOVE_PROTECT, + MOVE_REST, + MOVE_ROAR, MOVE_ROCK_SLIDE, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, MOVE_SLEEP_TALK, MOVE_SNORE, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_TAUNT, MOVE_THUNDER_PUNCH, MOVE_UNAVAILABLE, }; @@ -33215,34 +33215,34 @@ static const u16 sUrshifuSingleStrikeTeachableLearnset[] = { static const u16 sUrshifuRapidStrikeTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULK_UP, + MOVE_COUNTER, MOVE_DIG, MOVE_DIVE, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_TAUNT, - MOVE_WATERFALL, - MOVE_BODY_SLAM, - MOVE_COUNTER, MOVE_DOUBLE_EDGE, MOVE_DYNAMIC_PUNCH, MOVE_ENDURE, + MOVE_FACADE, MOVE_FIRE_PUNCH, + MOVE_FOCUS_PUNCH, MOVE_ICE_PUNCH, MOVE_MEGA_KICK, MOVE_MEGA_PUNCH, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, MOVE_ROCK_SLIDE, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, MOVE_SLEEP_TALK, MOVE_SNORE, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_TAUNT, MOVE_THUNDER_PUNCH, + MOVE_WATERFALL, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_KUBFU @@ -33250,40 +33250,43 @@ static const u16 sUrshifuRapidStrikeTeachableLearnset[] = { #if P_FAMILY_ZARUDE static const u16 sZarudeTeachableLearnset[] = { MOVE_AERIAL_ACE, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULK_UP, MOVE_BULLET_SEED, MOVE_DIG, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FOCUS_PUNCH, MOVE_GIGA_DRAIN, MOVE_HYPER_BEAM, MOVE_IRON_TAIL, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, MOVE_PROTECT, MOVE_REST, MOVE_ROAR, - MOVE_ROCK_TOMB, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, MOVE_ROCK_SLIDE, + MOVE_ROCK_TOMB, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_TAUNT, + MOVE_THIEF, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_ZARUDE #if P_FAMILY_REGIELEKI static const u16 sRegielekiTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_ENDURE, + MOVE_EXPLOSION, MOVE_FACADE, MOVE_HYPER_BEAM, MOVE_LIGHT_SCREEN, @@ -33292,14 +33295,11 @@ static const u16 sRegielekiTeachableLearnset[] = { MOVE_REFLECT, MOVE_REST, MOVE_SHOCK_WAVE, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_EXPLOSION, MOVE_SLEEP_TALK, MOVE_SNORE, MOVE_SWIFT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; @@ -33307,17 +33307,17 @@ static const u16 sRegielekiTeachableLearnset[] = { #if P_FAMILY_REGIDRAGO static const u16 sRegidragoTeachableLearnset[] = { + MOVE_BODY_SLAM, MOVE_DRAGON_CLAW, MOVE_EARTHQUAKE, + MOVE_ENDURE, + MOVE_EXPLOSION, MOVE_FACADE, MOVE_HYPER_BEAM, MOVE_LIGHT_SCREEN, MOVE_PROTECT, MOVE_REFLECT, MOVE_REST, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_EXPLOSION, MOVE_SLEEP_TALK, MOVE_SNORE, MOVE_SWIFT, @@ -33328,42 +33328,42 @@ static const u16 sRegidragoTeachableLearnset[] = { #if P_FAMILY_GLASTRIER static const u16 sGlastrierTeachableLearnset[] = { MOVE_BLIZZARD, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, MOVE_FACADE, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_PROTECT, MOVE_REST, MOVE_ROAR, - MOVE_TAUNT, - MOVE_TORMENT, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ICY_WIND, MOVE_SLEEP_TALK, MOVE_SNORE, MOVE_SWORDS_DANCE, + MOVE_TAUNT, + MOVE_TORMENT, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_GLASTRIER #if P_FAMILY_SPECTRIER static const u16 sSpectrierTeachableLearnset[] = { + MOVE_BODY_SLAM, MOVE_CALM_MIND, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, MOVE_FACADE, MOVE_HYPER_BEAM, MOVE_PROTECT, MOVE_PSYCHIC, MOVE_REST, MOVE_SHADOW_BALL, - MOVE_TAUNT, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, MOVE_SLEEP_TALK, MOVE_SNORE, MOVE_SWIFT, + MOVE_TAUNT, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_SPECTRIER @@ -33372,23 +33372,23 @@ static const u16 sSpectrierTeachableLearnset[] = { static const u16 sCalyrexTeachableLearnset[] = { MOVE_BULLET_SEED, MOVE_CALM_MIND, + MOVE_ENDURE, MOVE_FACADE, MOVE_GIGA_DRAIN, MOVE_HYPER_BEAM, MOVE_LIGHT_SCREEN, + MOVE_METRONOME, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_REFLECT, MOVE_REST, MOVE_SAFEGUARD, MOVE_SKILL_SWAP, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_ENDURE, - MOVE_METRONOME, - MOVE_PSYCH_UP, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, MOVE_SWIFT, MOVE_UNAVAILABLE, }; @@ -33396,63 +33396,63 @@ static const u16 sCalyrexTeachableLearnset[] = { #if P_FUSION_FORMS static const u16 sCalyrexIceTeachableLearnset[] = { MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_BULLET_SEED, MOVE_CALM_MIND, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, MOVE_FACADE, MOVE_GIGA_DRAIN, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_LIGHT_SCREEN, + MOVE_METRONOME, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_REFLECT, MOVE_REST, MOVE_ROAR, MOVE_SAFEGUARD, MOVE_SKILL_SWAP, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_TORMENT, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_METRONOME, - MOVE_PSYCH_UP, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_TAUNT, + MOVE_TORMENT, MOVE_UNAVAILABLE, }; static const u16 sCalyrexShadowTeachableLearnset[] = { + MOVE_BODY_SLAM, MOVE_BULLET_SEED, MOVE_CALM_MIND, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, MOVE_FACADE, MOVE_GIGA_DRAIN, MOVE_HYPER_BEAM, MOVE_LIGHT_SCREEN, + MOVE_METRONOME, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_REFLECT, MOVE_REST, MOVE_SAFEGUARD, MOVE_SHADOW_BALL, MOVE_SKILL_SWAP, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_METRONOME, - MOVE_PSYCH_UP, MOVE_SLEEP_TALK, MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, MOVE_SWIFT, + MOVE_TAUNT, MOVE_UNAVAILABLE, }; #endif //P_FUSION_FORMS @@ -33460,23 +33460,23 @@ static const u16 sCalyrexShadowTeachableLearnset[] = { #if P_FAMILY_ENAMORUS static const u16 sEnamorusTeachableLearnset[] = { + MOVE_BODY_SLAM, MOVE_CALM_MIND, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLY, MOVE_HYPER_BEAM, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROCK_SMASH, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, MOVE_SUNNY_DAY, MOVE_TAUNT, MOVE_TORMENT, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_ENAMORUS @@ -33484,32 +33484,32 @@ static const u16 sEnamorusTeachableLearnset[] = { #if P_FAMILY_SPRIGATITO static const u16 sSprigatitoTeachableLearnset[] = { MOVE_BULLET_SEED, + MOVE_ENDURE, MOVE_FACADE, MOVE_GIGA_DRAIN, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_REST, - MOVE_SOLAR_BEAM, - MOVE_TAUNT, - MOVE_ENDURE, - MOVE_MUD_SLAP, MOVE_SLEEP_TALK, + MOVE_SOLAR_BEAM, MOVE_SWIFT, + MOVE_TAUNT, MOVE_UNAVAILABLE, }; static const u16 sFloragatoTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_BULLET_SEED, + MOVE_ENDURE, MOVE_FACADE, MOVE_GIGA_DRAIN, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_REST, - MOVE_SOLAR_BEAM, - MOVE_TAUNT, - MOVE_ENDURE, - MOVE_MUD_SLAP, MOVE_SLEEP_TALK, + MOVE_SOLAR_BEAM, MOVE_SWIFT, + MOVE_TAUNT, MOVE_THUNDER_PUNCH, MOVE_UNAVAILABLE, }; @@ -33519,21 +33519,21 @@ static const u16 sMeowscaradaTeachableLearnset[] = { MOVE_BRICK_BREAK, MOVE_BULLET_SEED, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_GIGA_DRAIN, MOVE_HYPER_BEAM, + MOVE_MUD_SLAP, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_REST, MOVE_SHADOW_BALL, MOVE_SKILL_SWAP, + MOVE_SLEEP_TALK, MOVE_SOLAR_BEAM, + MOVE_SWIFT, MOVE_TAUNT, MOVE_THIEF, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SWIFT, MOVE_THUNDER_PUNCH, MOVE_UNAVAILABLE, }; @@ -33541,57 +33541,57 @@ static const u16 sMeowscaradaTeachableLearnset[] = { #if P_FAMILY_FUECOCO static const u16 sFuecocoTeachableLearnset[] = { + MOVE_BODY_SLAM, MOVE_DIG, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, + MOVE_MUD_SLAP, MOVE_OVERHEAT, MOVE_PROTECT, MOVE_REST, MOVE_ROAR, - MOVE_SUNNY_DAY, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_MUD_SLAP, MOVE_SLEEP_TALK, + MOVE_SUNNY_DAY, MOVE_UNAVAILABLE, }; static const u16 sCrocalorTeachableLearnset[] = { + MOVE_BODY_SLAM, MOVE_DIG, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, + MOVE_MUD_SLAP, MOVE_OVERHEAT, MOVE_PROTECT, MOVE_REST, MOVE_ROAR, - MOVE_SUNNY_DAY, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_MUD_SLAP, MOVE_SLEEP_TALK, + MOVE_SUNNY_DAY, MOVE_UNAVAILABLE, }; static const u16 sSkeledirgeTeachableLearnset[] = { + MOVE_BODY_SLAM, MOVE_DIG, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, MOVE_HYPER_BEAM, + MOVE_MUD_SLAP, MOVE_OVERHEAT, MOVE_PROTECT, MOVE_REST, MOVE_ROAR, MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_SLEEP_TALK, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_FUECOCO @@ -33599,30 +33599,30 @@ static const u16 sSkeledirgeTeachableLearnset[] = { #if P_FAMILY_QUAXLY static const u16 sQuaxlyTeachableLearnset[] = { MOVE_AERIAL_ACE, + MOVE_ENDURE, MOVE_FACADE, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, - MOVE_SURF, - MOVE_ENDURE, - MOVE_PSYCH_UP, MOVE_SLEEP_TALK, + MOVE_SURF, MOVE_SWIFT, MOVE_UNAVAILABLE, }; static const u16 sQuaxwellTeachableLearnset[] = { MOVE_AERIAL_ACE, + MOVE_ENDURE, MOVE_FACADE, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, - MOVE_SURF, - MOVE_WATER_PULSE, - MOVE_ENDURE, - MOVE_PSYCH_UP, MOVE_SLEEP_TALK, + MOVE_SURF, MOVE_SWIFT, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; @@ -33630,130 +33630,130 @@ static const u16 sQuaquavalTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_BRICK_BREAK, MOVE_BULK_UP, - MOVE_FACADE, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_SURF, - MOVE_TAUNT, - MOVE_WATER_PULSE, MOVE_COUNTER, MOVE_ENDURE, + MOVE_FACADE, + MOVE_HYPER_BEAM, MOVE_ICY_WIND, MOVE_MEGA_KICK, + MOVE_PROTECT, MOVE_PSYCH_UP, + MOVE_RAIN_DANCE, + MOVE_REST, MOVE_SLEEP_TALK, + MOVE_SURF, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_TAUNT, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_QUAXLY #if P_FAMILY_LECHONK static const u16 sLechonkTeachableLearnset[] = { + MOVE_BODY_SLAM, MOVE_BULLET_SEED, MOVE_DIG, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, MOVE_FACADE, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_SLEEP_TALK, MOVE_SUNNY_DAY, MOVE_THIEF, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_SLEEP_TALK, MOVE_UNAVAILABLE, }; static const u16 sOinkologneTeachableLearnset[] = { + MOVE_BODY_SLAM, MOVE_BULLET_SEED, MOVE_DIG, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, MOVE_FACADE, MOVE_HYPER_BEAM, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_SLEEP_TALK, MOVE_SUNNY_DAY, MOVE_THIEF, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_SLEEP_TALK, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_LECHONK #if P_FAMILY_TAROUNTULA static const u16 sTarountulaTeachableLearnset[] = { + MOVE_BODY_SLAM, MOVE_BULLET_SEED, + MOVE_COUNTER, + MOVE_ENDURE, MOVE_FACADE, MOVE_GIGA_DRAIN, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_SLEEP_TALK, MOVE_SUNNY_DAY, MOVE_THIEF, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_ENDURE, - MOVE_SLEEP_TALK, MOVE_UNAVAILABLE, }; static const u16 sSpidopsTeachableLearnset[] = { MOVE_AERIAL_ACE, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULLET_SEED, + MOVE_COUNTER, + MOVE_ENDURE, MOVE_FACADE, MOVE_GIGA_DRAIN, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROCK_TOMB, + MOVE_SLEEP_TALK, MOVE_SUNNY_DAY, MOVE_TAUNT, MOVE_THIEF, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_ENDURE, - MOVE_SLEEP_TALK, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_TAROUNTULA #if P_FAMILY_NYMBLE static const u16 sNymbleTeachableLearnset[] = { + MOVE_COUNTER, + MOVE_ENDURE, MOVE_FACADE, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_SLEEP_TALK, MOVE_SUNNY_DAY, MOVE_THIEF, - MOVE_COUNTER, - MOVE_ENDURE, - MOVE_SLEEP_TALK, MOVE_UNAVAILABLE, }; static const u16 sLokixTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_BRICK_BREAK, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, MOVE_FACADE, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_SLEEP_TALK, MOVE_SUNNY_DAY, + MOVE_SWORDS_DANCE, MOVE_TAUNT, MOVE_THIEF, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_SLEEP_TALK, - MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_NYMBLE @@ -33761,35 +33761,35 @@ static const u16 sLokixTeachableLearnset[] = { #if P_FAMILY_PAWMI static const u16 sPawmiTeachableLearnset[] = { MOVE_DIG, + MOVE_ENDURE, MOVE_FACADE, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_SLEEP_TALK, MOVE_SUNNY_DAY, + MOVE_SWIFT, MOVE_THIEF, MOVE_THUNDER, MOVE_THUNDERBOLT, - MOVE_ENDURE, - MOVE_SLEEP_TALK, - MOVE_SWIFT, MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; static const u16 sPawmoTeachableLearnset[] = { MOVE_DIG, + MOVE_ENDURE, MOVE_FACADE, MOVE_FOCUS_PUNCH, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_SLEEP_TALK, MOVE_SUNNY_DAY, + MOVE_SWIFT, MOVE_THIEF, MOVE_THUNDER, MOVE_THUNDERBOLT, - MOVE_ENDURE, - MOVE_SLEEP_TALK, - MOVE_SWIFT, MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, @@ -33799,24 +33799,24 @@ static const u16 sPawmotTeachableLearnset[] = { MOVE_BRICK_BREAK, MOVE_BULK_UP, MOVE_DIG, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FIRE_PUNCH, MOVE_FOCUS_PUNCH, MOVE_HYPER_BEAM, + MOVE_ICE_PUNCH, + MOVE_METRONOME, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROCK_TOMB, + MOVE_SLEEP_TALK, MOVE_SUNNY_DAY, + MOVE_SWIFT, MOVE_THIEF, MOVE_THUNDER, MOVE_THUNDERBOLT, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_ICE_PUNCH, - MOVE_METRONOME, - MOVE_SLEEP_TALK, - MOVE_SWIFT, MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, @@ -33828,20 +33828,20 @@ static const u16 sTandemausTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_BULLET_SEED, MOVE_DIG, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, MOVE_FACADE, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_SLEEP_TALK, MOVE_SUNNY_DAY, + MOVE_SWIFT, MOVE_TAUNT, MOVE_THIEF, - MOVE_WATER_PULSE, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_SLEEP_TALK, - MOVE_SWIFT, MOVE_THUNDER_WAVE, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; @@ -33849,58 +33849,58 @@ static const u16 sMausholdTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_BULLET_SEED, MOVE_DIG, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, MOVE_FACADE, MOVE_HYPER_BEAM, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_SLEEP_TALK, MOVE_SUNNY_DAY, + MOVE_SWIFT, MOVE_TAUNT, MOVE_THIEF, - MOVE_WATER_PULSE, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_SLEEP_TALK, - MOVE_SWIFT, MOVE_THUNDER_WAVE, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_TANDEMAUS #if P_FAMILY_FIDOUGH static const u16 sFidoughTeachableLearnset[] = { + MOVE_BODY_SLAM, MOVE_DIG, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, MOVE_FACADE, + MOVE_MUD_SLAP, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROAR, - MOVE_SUNNY_DAY, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, MOVE_SLEEP_TALK, + MOVE_SUNNY_DAY, MOVE_UNAVAILABLE, }; static const u16 sDachsbunTeachableLearnset[] = { + MOVE_BODY_SLAM, MOVE_DIG, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, MOVE_FACADE, MOVE_HYPER_BEAM, + MOVE_MUD_SLAP, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROAR, - MOVE_SUNNY_DAY, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, MOVE_SLEEP_TALK, + MOVE_SUNNY_DAY, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_FIDOUGH @@ -33908,48 +33908,48 @@ static const u16 sDachsbunTeachableLearnset[] = { #if P_FAMILY_SMOLIV static const u16 sSmolivTeachableLearnset[] = { MOVE_BULLET_SEED, + MOVE_ENDURE, MOVE_FACADE, MOVE_GIGA_DRAIN, MOVE_PROTECT, MOVE_REST, + MOVE_SLEEP_TALK, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, - MOVE_ENDURE, - MOVE_SLEEP_TALK, MOVE_SWIFT, MOVE_UNAVAILABLE, }; static const u16 sDollivTeachableLearnset[] = { MOVE_BULLET_SEED, + MOVE_ENDURE, MOVE_FACADE, MOVE_GIGA_DRAIN, MOVE_PROTECT, MOVE_REST, + MOVE_SLEEP_TALK, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, - MOVE_ENDURE, - MOVE_SLEEP_TALK, MOVE_SWIFT, MOVE_UNAVAILABLE, }; static const u16 sArbolivaTeachableLearnset[] = { MOVE_BULLET_SEED, + MOVE_ENDURE, MOVE_FACADE, MOVE_GIGA_DRAIN, MOVE_HYPER_BEAM, MOVE_LIGHT_SCREEN, + MOVE_METRONOME, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_REFLECT, MOVE_REST, MOVE_SAFEGUARD, + MOVE_SLEEP_TALK, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, - MOVE_ENDURE, - MOVE_METRONOME, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, MOVE_SWIFT, MOVE_UNAVAILABLE, }; @@ -33958,79 +33958,79 @@ static const u16 sArbolivaTeachableLearnset[] = { #if P_FAMILY_SQUAWKABILLY static const u16 sSquawkabillyTeachableLearnset[] = { MOVE_AERIAL_ACE, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLY, MOVE_HYPER_BEAM, MOVE_PROTECT, MOVE_REST, + MOVE_SLEEP_TALK, MOVE_SUNNY_DAY, + MOVE_SWAGGER, MOVE_TAUNT, MOVE_THIEF, MOVE_TORMENT, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_SLEEP_TALK, - MOVE_SWAGGER, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_SQUAWKABILLY #if P_FAMILY_NACLI static const u16 sNacliTeachableLearnset[] = { + MOVE_BODY_SLAM, MOVE_DIG, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, - MOVE_SANDSTORM, - MOVE_SUNNY_DAY, - MOVE_BODY_SLAM, - MOVE_ENDURE, MOVE_ROCK_SLIDE, + MOVE_SANDSTORM, MOVE_SLEEP_TALK, + MOVE_SUNNY_DAY, MOVE_UNAVAILABLE, }; static const u16 sNaclstackTeachableLearnset[] = { + MOVE_BODY_SLAM, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_HYPER_BEAM, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, - MOVE_SANDSTORM, - MOVE_SUNNY_DAY, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, MOVE_ROCK_SLIDE, + MOVE_SANDSTORM, MOVE_SLEEP_TALK, + MOVE_SUNNY_DAY, MOVE_UNAVAILABLE, }; static const u16 sGarganaclTeachableLearnset[] = { + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, + MOVE_ENDURE, + MOVE_EXPLOSION, MOVE_FACADE, + MOVE_FIRE_PUNCH, MOVE_FOCUS_PUNCH, MOVE_HYPER_BEAM, + MOVE_ICE_PUNCH, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_TOMB, MOVE_SANDSTORM, - MOVE_SUNNY_DAY, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_EXPLOSION, - MOVE_FIRE_PUNCH, - MOVE_ICE_PUNCH, - MOVE_ROCK_SLIDE, MOVE_SLEEP_TALK, + MOVE_SUNNY_DAY, MOVE_THUNDER_PUNCH, MOVE_UNAVAILABLE, }; @@ -34038,20 +34038,21 @@ static const u16 sGarganaclTeachableLearnset[] = { #if P_FAMILY_CHARCADET static const u16 sCharcadetTeachableLearnset[] = { + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, MOVE_OVERHEAT, MOVE_PROTECT, MOVE_REST, - MOVE_SUNNY_DAY, - MOVE_ENDURE, MOVE_SLEEP_TALK, + MOVE_SUNNY_DAY, MOVE_UNAVAILABLE, }; static const u16 sArmarougeTeachableLearnset[] = { MOVE_CALM_MIND, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, @@ -34059,15 +34060,14 @@ static const u16 sArmarougeTeachableLearnset[] = { MOVE_OVERHEAT, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_REFLECT, MOVE_REST, MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, MOVE_TAUNT, - MOVE_ENDURE, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, MOVE_UNAVAILABLE, }; @@ -34075,59 +34075,59 @@ static const u16 sCeruledgeTeachableLearnset[] = { MOVE_BRICK_BREAK, MOVE_BULK_UP, MOVE_DRAGON_CLAW, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, MOVE_LIGHT_SCREEN, MOVE_OVERHEAT, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_REFLECT, MOVE_REST, MOVE_SHADOW_BALL, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_ENDURE, - MOVE_PSYCH_UP, MOVE_SLEEP_TALK, + MOVE_SUNNY_DAY, MOVE_SWORDS_DANCE, + MOVE_TAUNT, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_CHARCADET #if P_FAMILY_TADBULB static const u16 sTadbulbTeachableLearnset[] = { + MOVE_ENDURE, MOVE_LIGHT_SCREEN, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_WATER_PULSE, - MOVE_ENDURE, - MOVE_MUD_SLAP, MOVE_SLEEP_TALK, MOVE_SWIFT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; static const u16 sBelliboltTeachableLearnset[] = { + MOVE_ENDURE, MOVE_HYPER_BEAM, MOVE_LIGHT_SCREEN, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_ENDURE, - MOVE_MUD_SLAP, MOVE_SLEEP_TALK, MOVE_SWIFT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, + MOVE_TOXIC, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_TADBULB @@ -34135,31 +34135,31 @@ static const u16 sBelliboltTeachableLearnset[] = { #if P_FAMILY_WATTREL static const u16 sWattrelTeachableLearnset[] = { MOVE_AERIAL_ACE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLY, MOVE_PROTECT, MOVE_REST, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_ENDURE, MOVE_SLEEP_TALK, MOVE_SWIFT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; static const u16 sKilowattrelTeachableLearnset[] = { MOVE_AERIAL_ACE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLY, MOVE_HYPER_BEAM, MOVE_PROTECT, MOVE_REST, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_ENDURE, MOVE_SLEEP_TALK, MOVE_SWIFT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; @@ -34167,39 +34167,39 @@ static const u16 sKilowattrelTeachableLearnset[] = { #if P_FAMILY_MASCHIFF static const u16 sMaschiffTeachableLearnset[] = { + MOVE_BODY_SLAM, MOVE_DIG, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, MOVE_FACADE, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROAR, + MOVE_SLEEP_TALK, MOVE_SUNNY_DAY, + MOVE_SWAGGER, MOVE_TAUNT, MOVE_THIEF, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_SLEEP_TALK, - MOVE_SWAGGER, MOVE_UNAVAILABLE, }; static const u16 sMabosstiffTeachableLearnset[] = { + MOVE_BODY_SLAM, MOVE_DIG, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, MOVE_FACADE, MOVE_HYPER_BEAM, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROAR, + MOVE_SLEEP_TALK, MOVE_SUNNY_DAY, + MOVE_SWAGGER, MOVE_TAUNT, MOVE_THIEF, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_SLEEP_TALK, - MOVE_SWAGGER, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_MASCHIFF @@ -34207,45 +34207,45 @@ static const u16 sMabosstiffTeachableLearnset[] = { #if P_FAMILY_SHROODLE static const u16 sShroodleTeachableLearnset[] = { MOVE_DIG, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, MOVE_FACADE, + MOVE_METRONOME, + MOVE_MUD_SLAP, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, MOVE_SUNNY_DAY, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, MOVE_TAUNT, MOVE_THIEF, MOVE_TOXIC, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_METRONOME, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SWAGGER, - MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; static const u16 sGrafaiaiTeachableLearnset[] = { MOVE_DIG, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, MOVE_FACADE, + MOVE_METRONOME, + MOVE_MUD_SLAP, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, MOVE_SUNNY_DAY, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, MOVE_TAUNT, MOVE_THIEF, MOVE_TOXIC, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_METRONOME, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SWAGGER, - MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_SHROODLE @@ -34253,34 +34253,34 @@ static const u16 sGrafaiaiTeachableLearnset[] = { #if P_FAMILY_BRAMBLIN static const u16 sBramblinTeachableLearnset[] = { MOVE_BULLET_SEED, + MOVE_DEFENSE_CURL, + MOVE_ENDURE, MOVE_FACADE, MOVE_GIGA_DRAIN, MOVE_PROTECT, MOVE_REST, + MOVE_ROLLOUT, MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, MOVE_SOLAR_BEAM, MOVE_THIEF, - MOVE_DEFENSE_CURL, - MOVE_ENDURE, - MOVE_ROLLOUT, - MOVE_SLEEP_TALK, MOVE_UNAVAILABLE, }; static const u16 sBrambleghastTeachableLearnset[] = { MOVE_BULLET_SEED, + MOVE_DEFENSE_CURL, + MOVE_ENDURE, MOVE_FACADE, MOVE_GIGA_DRAIN, MOVE_HYPER_BEAM, MOVE_PROTECT, MOVE_REST, + MOVE_ROLLOUT, MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, MOVE_SOLAR_BEAM, MOVE_THIEF, - MOVE_DEFENSE_CURL, - MOVE_ENDURE, - MOVE_ROLLOUT, - MOVE_SLEEP_TALK, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_BRAMBLIN @@ -34288,64 +34288,64 @@ static const u16 sBrambleghastTeachableLearnset[] = { #if P_FAMILY_TOEDSCOOL static const u16 sToedscoolTeachableLearnset[] = { MOVE_BULLET_SEED, + MOVE_ENDURE, MOVE_GIGA_DRAIN, MOVE_LIGHT_SCREEN, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, MOVE_SOLAR_BEAM, + MOVE_SWIFT, MOVE_TAUNT, MOVE_TOXIC, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_SLEEP_TALK, - MOVE_SWIFT, MOVE_UNAVAILABLE, }; static const u16 sToedscruelTeachableLearnset[] = { MOVE_BULLET_SEED, + MOVE_ENDURE, MOVE_GIGA_DRAIN, MOVE_HYPER_BEAM, MOVE_LIGHT_SCREEN, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, MOVE_SOLAR_BEAM, + MOVE_SWIFT, MOVE_TAUNT, MOVE_TOXIC, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_SLEEP_TALK, - MOVE_SWIFT, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_TOEDSCOOL #if P_FAMILY_KLAWF static const u16 sKlawfTeachableLearnset[] = { + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_DIG, + MOVE_ENDURE, MOVE_FACADE, MOVE_HYPER_BEAM, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SANDSTORM, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, MOVE_SLEEP_TALK, + MOVE_SUNNY_DAY, MOVE_SWORDS_DANCE, + MOVE_THIEF, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_KLAWF @@ -34353,22 +34353,23 @@ static const u16 sKlawfTeachableLearnset[] = { #if P_FAMILY_CAPSAKID static const u16 sCapsakidTeachableLearnset[] = { MOVE_BULLET_SEED, + MOVE_ENDURE, MOVE_FACADE, MOVE_GIGA_DRAIN, MOVE_PROTECT, MOVE_REST, + MOVE_ROLLOUT, MOVE_SANDSTORM, + MOVE_SLEEP_TALK, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, MOVE_THIEF, - MOVE_ENDURE, - MOVE_ROLLOUT, - MOVE_SLEEP_TALK, MOVE_UNAVAILABLE, }; static const u16 sScovillainTeachableLearnset[] = { MOVE_BULLET_SEED, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, @@ -34377,59 +34378,58 @@ static const u16 sScovillainTeachableLearnset[] = { MOVE_OVERHEAT, MOVE_PROTECT, MOVE_REST, + MOVE_ROLLOUT, MOVE_SANDSTORM, + MOVE_SLEEP_TALK, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, MOVE_THIEF, - MOVE_ENDURE, - MOVE_ROLLOUT, - MOVE_SLEEP_TALK, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_CAPSAKID #if P_FAMILY_RELLOR static const u16 sRellorTeachableLearnset[] = { + MOVE_DEFENSE_CURL, MOVE_DIG, + MOVE_ENDURE, MOVE_FACADE, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_REST, MOVE_ROCK_TOMB, - MOVE_SLUDGE_BOMB, - MOVE_THIEF, - MOVE_DEFENSE_CURL, - MOVE_ENDURE, - MOVE_MUD_SLAP, MOVE_ROLLOUT, MOVE_SLEEP_TALK, + MOVE_SLUDGE_BOMB, + MOVE_THIEF, MOVE_UNAVAILABLE, }; static const u16 sRabscaTeachableLearnset[] = { MOVE_CALM_MIND, + MOVE_DEFENSE_CURL, MOVE_DIG, + MOVE_ENDURE, MOVE_FACADE, MOVE_HYPER_BEAM, MOVE_LIGHT_SCREEN, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, MOVE_ROCK_TOMB, + MOVE_ROLLOUT, MOVE_SAFEGUARD, MOVE_SANDSTORM, MOVE_SHADOW_BALL, MOVE_SKILL_SWAP, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, MOVE_SUNNY_DAY, MOVE_THIEF, - MOVE_DEFENSE_CURL, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_ROLLOUT, - MOVE_SLEEP_TALK, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_RELLOR @@ -34437,8 +34437,10 @@ static const u16 sRabscaTeachableLearnset[] = { #if P_FAMILY_FLITTLE static const u16 sFlittleTeachableLearnset[] = { MOVE_CALM_MIND, + MOVE_ENDURE, MOVE_FACADE, MOVE_LIGHT_SCREEN, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_PSYCHIC, MOVE_RAIN_DANCE, @@ -34446,98 +34448,96 @@ static const u16 sFlittleTeachableLearnset[] = { MOVE_REST, MOVE_SANDSTORM, MOVE_SKILL_SWAP, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_ENDURE, - MOVE_MUD_SLAP, MOVE_SLEEP_TALK, + MOVE_SUNNY_DAY, MOVE_SWIFT, + MOVE_THIEF, MOVE_UNAVAILABLE, }; static const u16 sEspathraTeachableLearnset[] = { MOVE_AERIAL_ACE, + MOVE_BODY_SLAM, MOVE_CALM_MIND, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, MOVE_FACADE, MOVE_HYPER_BEAM, MOVE_LIGHT_SCREEN, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, MOVE_SANDSTORM, MOVE_SHADOW_BALL, MOVE_SKILL_SWAP, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, MOVE_SLEEP_TALK, + MOVE_SUNNY_DAY, MOVE_SWIFT, + MOVE_THIEF, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_FLITTLE #if P_FAMILY_TINKATINK static const u16 sTinkatinkTeachableLearnset[] = { + MOVE_ENDURE, MOVE_FACADE, MOVE_LIGHT_SCREEN, + MOVE_METRONOME, MOVE_PROTECT, MOVE_REFLECT, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SKILL_SWAP, - MOVE_THIEF, - MOVE_ENDURE, - MOVE_METRONOME, - MOVE_ROCK_SLIDE, MOVE_SLEEP_TALK, MOVE_SWORDS_DANCE, + MOVE_THIEF, MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; static const u16 sTinkatuffTeachableLearnset[] = { MOVE_BRICK_BREAK, + MOVE_ENDURE, MOVE_FACADE, MOVE_LIGHT_SCREEN, + MOVE_METRONOME, MOVE_PROTECT, MOVE_REFLECT, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SKILL_SWAP, - MOVE_THIEF, - MOVE_ENDURE, - MOVE_METRONOME, - MOVE_ROCK_SLIDE, MOVE_SLEEP_TALK, MOVE_SWORDS_DANCE, + MOVE_THIEF, MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; static const u16 sTinkatonTeachableLearnset[] = { MOVE_BRICK_BREAK, + MOVE_ENDURE, MOVE_FACADE, MOVE_LIGHT_SCREEN, + MOVE_METRONOME, MOVE_PROTECT, MOVE_REFLECT, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SKILL_SWAP, - MOVE_THIEF, - MOVE_ENDURE, - MOVE_METRONOME, - MOVE_ROCK_SLIDE, MOVE_SLEEP_TALK, MOVE_SWORDS_DANCE, + MOVE_THIEF, MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; @@ -34547,37 +34547,37 @@ static const u16 sTinkatonTeachableLearnset[] = { static const u16 sWiglettTeachableLearnset[] = { MOVE_BLIZZARD, MOVE_DIG, + MOVE_ENDURE, MOVE_FACADE, MOVE_ICE_BEAM, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_SANDSTORM, - MOVE_SURF, - MOVE_WATER_PULSE, - MOVE_ENDURE, - MOVE_MUD_SLAP, MOVE_SLEEP_TALK, + MOVE_SURF, MOVE_SWIFT, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; static const u16 sWugtrioTeachableLearnset[] = { MOVE_BLIZZARD, MOVE_DIG, + MOVE_ENDURE, MOVE_FACADE, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_SANDSTORM, - MOVE_SURF, - MOVE_WATER_PULSE, - MOVE_ENDURE, - MOVE_MUD_SLAP, MOVE_SLEEP_TALK, + MOVE_SURF, MOVE_SWIFT, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_WIGLETT @@ -34585,23 +34585,23 @@ static const u16 sWugtrioTeachableLearnset[] = { #if P_FAMILY_BOMBIRDIER static const u16 sBombirdierTeachableLearnset[] = { MOVE_AERIAL_ACE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLY, MOVE_HYPER_BEAM, + MOVE_ICY_WIND, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_TOMB, MOVE_SANDSTORM, + MOVE_SLEEP_TALK, MOVE_SUNNY_DAY, MOVE_TAUNT, MOVE_THIEF, MOVE_TORMENT, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_PSYCH_UP, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_BOMBIRDIER @@ -34609,74 +34609,77 @@ static const u16 sBombirdierTeachableLearnset[] = { #if P_FAMILY_FINIZEN static const u16 sFinizenTeachableLearnset[] = { MOVE_BLIZZARD, - MOVE_DIVE, - MOVE_FACADE, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_SURF, - MOVE_WATERFALL, - MOVE_WATER_PULSE, MOVE_BODY_SLAM, MOVE_COUNTER, + MOVE_DIVE, MOVE_ENDURE, + MOVE_FACADE, + MOVE_ICE_BEAM, MOVE_ICY_WIND, + MOVE_PROTECT, MOVE_PSYCH_UP, + MOVE_RAIN_DANCE, + MOVE_REST, MOVE_SLEEP_TALK, + MOVE_SURF, MOVE_SWIFT, + MOVE_WATERFALL, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; static const u16 sPalafinTeachableLearnset[] = { MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_BULK_UP, + MOVE_COUNTER, MOVE_DIVE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FOCUS_PUNCH, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_SLEEP_TALK, MOVE_SURF, + MOVE_SWIFT, MOVE_TAUNT, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_ENDURE, - MOVE_ICE_PUNCH, - MOVE_ICY_WIND, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SWIFT, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_FINIZEN #if P_FAMILY_VAROOM static const u16 sVaroomTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, MOVE_FACADE, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_SANDSTORM, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, MOVE_SUNNY_DAY, + MOVE_SWAGGER, MOVE_TAUNT, MOVE_THIEF, MOVE_TORMENT, MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_SLEEP_TALK, - MOVE_SWAGGER, MOVE_UNAVAILABLE, }; static const u16 sRevavroomTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, MOVE_FACADE, MOVE_HYPER_BEAM, MOVE_OVERHEAT, @@ -34684,17 +34687,14 @@ static const u16 sRevavroomTeachableLearnset[] = { MOVE_RAIN_DANCE, MOVE_REST, MOVE_SANDSTORM, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, MOVE_SUNNY_DAY, + MOVE_SWAGGER, MOVE_TAUNT, MOVE_THIEF, MOVE_TORMENT, MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_SLEEP_TALK, - MOVE_SWAGGER, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_VAROOM @@ -34702,43 +34702,43 @@ static const u16 sRevavroomTeachableLearnset[] = { #if P_FAMILY_CYCLIZAR static const u16 sCyclizarTeachableLearnset[] = { MOVE_AERIAL_ACE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, MOVE_DRAGON_CLAW, + MOVE_ENDURE, MOVE_FACADE, MOVE_HYPER_BEAM, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_OVERHEAT, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_SLEEP_TALK, MOVE_SUNNY_DAY, MOVE_TAUNT, MOVE_THIEF, MOVE_THUNDERBOLT, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_SLEEP_TALK, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_CYCLIZAR #if P_FAMILY_ORTHWORM static const u16 sOrthwormTeachableLearnset[] = { + MOVE_BODY_SLAM, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_HYPER_BEAM, MOVE_IRON_TAIL, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_TOMB, MOVE_SANDSTORM, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, MOVE_SLEEP_TALK, MOVE_UNAVAILABLE, }; @@ -34746,25 +34746,27 @@ static const u16 sOrthwormTeachableLearnset[] = { #if P_FAMILY_GLIMMET static const u16 sGlimmetTeachableLearnset[] = { + MOVE_ENDURE, + MOVE_EXPLOSION, MOVE_FACADE, MOVE_LIGHT_SCREEN, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_TOMB, MOVE_SANDSTORM, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, MOVE_SUNNY_DAY, MOVE_TOXIC, - MOVE_ENDURE, - MOVE_EXPLOSION, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, MOVE_UNAVAILABLE, }; static const u16 sGlimmoraTeachableLearnset[] = { + MOVE_ENDURE, + MOVE_EXPLOSION, MOVE_FACADE, MOVE_HYPER_BEAM, MOVE_LIGHT_SCREEN, @@ -34772,16 +34774,14 @@ static const u16 sGlimmoraTeachableLearnset[] = { MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_TOMB, MOVE_SANDSTORM, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, MOVE_TOXIC, - MOVE_ENDURE, - MOVE_EXPLOSION, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_GLIMMET @@ -34789,38 +34789,38 @@ static const u16 sGlimmoraTeachableLearnset[] = { #if P_FAMILY_GREAVARD static const u16 sGreavardTeachableLearnset[] = { MOVE_DIG, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, MOVE_FACADE, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROAR, MOVE_SANDSTORM, MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, MOVE_SUNNY_DAY, MOVE_THIEF, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_SLEEP_TALK, MOVE_UNAVAILABLE, }; static const u16 sHoundstoneTeachableLearnset[] = { MOVE_DIG, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, MOVE_FACADE, MOVE_HYPER_BEAM, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROAR, MOVE_SANDSTORM, MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, MOVE_SUNNY_DAY, MOVE_THIEF, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_SLEEP_TALK, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_GREAVARD @@ -34830,19 +34830,19 @@ static const u16 sFlamigoTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_BULK_UP, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLY, MOVE_HYPER_BEAM, + MOVE_MEGA_KICK, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_REST, + MOVE_SLEEP_TALK, + MOVE_SWORDS_DANCE, MOVE_TAUNT, MOVE_THIEF, MOVE_WATER_PULSE, - MOVE_ENDURE, - MOVE_MEGA_KICK, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_FLAMIGO @@ -34850,38 +34850,38 @@ static const u16 sFlamigoTeachableLearnset[] = { #if P_FAMILY_CETODDLE static const u16 sCetoddleTeachableLearnset[] = { MOVE_BLIZZARD, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ICY_WIND, MOVE_SLEEP_TALK, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; static const u16 sCetitanTeachableLearnset[] = { MOVE_BLIZZARD, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ICE_PUNCH, - MOVE_ICY_WIND, MOVE_SLEEP_TALK, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_CETODDLE @@ -34889,86 +34889,86 @@ static const u16 sCetitanTeachableLearnset[] = { #if P_FAMILY_VELUZA static const u16 sVeluzaTeachableLearnset[] = { MOVE_BLIZZARD, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_PROTECT, MOVE_PSYCHIC, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_SLEEP_TALK, MOVE_SURF, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_SLEEP_TALK, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_VELUZA #if P_FAMILY_DONDOZO static const u16 sDondozoTeachableLearnset[] = { + MOVE_BODY_SLAM, MOVE_DIVE, + MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_HYPER_BEAM, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, MOVE_SURF, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_DONDOZO #if P_FAMILY_TATSUGIRI static const u16 sTatsugiriTeachableLearnset[] = { + MOVE_COUNTER, + MOVE_ENDURE, MOVE_FACADE, MOVE_HYPER_BEAM, + MOVE_ICY_WIND, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_SLEEP_TALK, MOVE_SURF, MOVE_TAUNT, MOVE_WATER_PULSE, - MOVE_COUNTER, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_SLEEP_TALK, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_TATSUGIRI #if P_FAMILY_GREAT_TUSK static const u16 sGreatTuskTeachableLearnset[] = { + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULK_UP, + MOVE_DEFENSE_CURL, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_HYPER_BEAM, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, MOVE_ROCK_TOMB, + MOVE_ROLLOUT, MOVE_SANDSTORM, + MOVE_SLEEP_TALK, MOVE_SUNNY_DAY, MOVE_TAUNT, - MOVE_BODY_SLAM, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, - MOVE_ROLLOUT, - MOVE_SLEEP_TALK, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_GREAT_TUSK @@ -34976,57 +34976,57 @@ static const u16 sGreatTuskTeachableLearnset[] = { #if P_FAMILY_SCREAM_TAIL static const u16 sScreamTailTeachableLearnset[] = { MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_BULK_UP, MOVE_CALM_MIND, MOVE_DIG, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, + MOVE_FIRE_PUNCH, MOVE_FLAMETHROWER, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICE_PUNCH, MOVE_LIGHT_SCREEN, + MOVE_METRONOME, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, MOVE_ROAR, MOVE_ROCK_TOMB, MOVE_SANDSTORM, + MOVE_SLEEP_TALK, MOVE_SUNNY_DAY, MOVE_THUNDER, MOVE_THUNDERBOLT, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_ICE_PUNCH, - MOVE_METRONOME, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, + MOVE_WATER_PULSE, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_SCREAM_TAIL #if P_FAMILY_BRUTE_BONNET static const u16 sBruteBonnetTeachableLearnset[] = { + MOVE_BODY_SLAM, MOVE_BULLET_SEED, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, MOVE_FACADE, MOVE_GIGA_DRAIN, MOVE_HYPER_BEAM, MOVE_PROTECT, MOVE_REST, + MOVE_SLEEP_TALK, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, MOVE_TAUNT, MOVE_THIEF, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_SLEEP_TALK, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_BRUTE_BONNET @@ -35034,18 +35034,18 @@ static const u16 sBruteBonnetTeachableLearnset[] = { #if P_FAMILY_FLUTTER_MANE static const u16 sFlutterManeTeachableLearnset[] = { MOVE_CALM_MIND, + MOVE_ENDURE, MOVE_HYPER_BEAM, + MOVE_ICY_WIND, MOVE_PROTECT, MOVE_REST, MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, MOVE_SUNNY_DAY, + MOVE_SWIFT, MOVE_TAUNT, MOVE_THUNDER, MOVE_THUNDERBOLT, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_SLEEP_TALK, - MOVE_SWIFT, MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; @@ -35054,9 +35054,12 @@ static const u16 sFlutterManeTeachableLearnset[] = { #if P_FAMILY_SLITHER_WING static const u16 sSlitherWingTeachableLearnset[] = { MOVE_AERIAL_ACE, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULK_UP, + MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_GIGA_DRAIN, MOVE_HYPER_BEAM, @@ -35064,18 +35067,17 @@ static const u16 sSlitherWingTeachableLearnset[] = { MOVE_RAIN_DANCE, MOVE_REST, MOVE_SANDSTORM, - MOVE_SUNNY_DAY, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, MOVE_SLEEP_TALK, + MOVE_SUNNY_DAY, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_SLITHER_WING #if P_FAMILY_SANDY_SHOCKS static const u16 sSandyShocksTeachableLearnset[] = { + MOVE_BODY_SLAM, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_HYPER_BEAM, MOVE_LIGHT_SCREEN, @@ -35083,13 +35085,11 @@ static const u16 sSandyShocksTeachableLearnset[] = { MOVE_REFLECT, MOVE_REST, MOVE_SANDSTORM, + MOVE_SLEEP_TALK, MOVE_SUNNY_DAY, + MOVE_SWIFT, MOVE_THUNDER, MOVE_THUNDERBOLT, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_SLEEP_TALK, - MOVE_SWIFT, MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; @@ -35097,21 +35097,21 @@ static const u16 sSandyShocksTeachableLearnset[] = { #if P_FAMILY_IRON_TREADS static const u16 sIronTreadsTeachableLearnset[] = { - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_REST, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_THUNDER, MOVE_BODY_SLAM, MOVE_DEFENSE_CURL, MOVE_DOUBLE_EDGE, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_HYPER_BEAM, MOVE_MUD_SLAP, + MOVE_PROTECT, + MOVE_REST, MOVE_ROCK_SLIDE, + MOVE_ROCK_TOMB, MOVE_ROLLOUT, + MOVE_SANDSTORM, MOVE_SLEEP_TALK, + MOVE_THUNDER, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_IRON_TREADS @@ -35119,47 +35119,47 @@ static const u16 sIronTreadsTeachableLearnset[] = { #if P_FAMILY_IRON_BUNDLE static const u16 sIronBundleTeachableLearnset[] = { MOVE_BLIZZARD, + MOVE_BODY_SLAM, + MOVE_ENDURE, MOVE_FACADE, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_SLEEP_TALK, + MOVE_SWIFT, MOVE_TAUNT, MOVE_THIEF, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_ICE_PUNCH, - MOVE_ICY_WIND, - MOVE_SLEEP_TALK, - MOVE_SWIFT, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_IRON_BUNDLE #if P_FAMILY_IRON_HANDS static const u16 sIronHandsTeachableLearnset[] = { + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, + MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FIRE_PUNCH, MOVE_FOCUS_PUNCH, MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_REST, - MOVE_ROCK_TOMB, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH, MOVE_METRONOME, + MOVE_PROTECT, + MOVE_REST, MOVE_ROCK_SLIDE, + MOVE_ROCK_TOMB, MOVE_SEISMIC_TOSS, MOVE_SLEEP_TALK, MOVE_SWORDS_DANCE, + MOVE_THUNDER, + MOVE_THUNDERBOLT, MOVE_THUNDER_PUNCH, MOVE_UNAVAILABLE, }; @@ -35167,6 +35167,9 @@ static const u16 sIronHandsTeachableLearnset[] = { #if P_FAMILY_IRON_JUGULIS static const u16 sIronJugulisTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, @@ -35177,18 +35180,16 @@ static const u16 sIronJugulisTeachableLearnset[] = { MOVE_REST, MOVE_ROAR, MOVE_ROCK_TOMB, + MOVE_SLEEP_TALK, MOVE_SUNNY_DAY, MOVE_TAUNT, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_SLEEP_TALK, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_IRON_JUGULIS #if P_FAMILY_IRON_MOTH static const u16 sIronMothTeachableLearnset[] = { + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, @@ -35198,12 +35199,11 @@ static const u16 sIronMothTeachableLearnset[] = { MOVE_PROTECT, MOVE_PSYCHIC, MOVE_REST, + MOVE_SLEEP_TALK, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_ENDURE, - MOVE_SLEEP_TALK, MOVE_SWIFT, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_IRON_MOTH @@ -35211,32 +35211,32 @@ static const u16 sIronMothTeachableLearnset[] = { #if P_FAMILY_IRON_THORNS static const u16 sIronThornsTeachableLearnset[] = { MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DRAGON_CLAW, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, + MOVE_FIRE_PUNCH, MOVE_FLAMETHROWER, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICE_PUNCH, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_TOMB, MOVE_SANDSTORM, + MOVE_SLEEP_TALK, MOVE_SUNNY_DAY, + MOVE_SWORDS_DANCE, MOVE_TAUNT, MOVE_THUNDER, MOVE_THUNDERBOLT, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_ICE_PUNCH, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SWORDS_DANCE, MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, @@ -35246,16 +35246,16 @@ static const u16 sIronThornsTeachableLearnset[] = { #if P_FAMILY_FRIGIBAX static const u16 sFrigibaxTeachableLearnset[] = { MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_DIG, MOVE_DRAGON_CLAW, + MOVE_ENDURE, MOVE_FACADE, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_ICY_WIND, MOVE_SLEEP_TALK, MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, @@ -35264,17 +35264,17 @@ static const u16 sFrigibaxTeachableLearnset[] = { static const u16 sArctibaxTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_DIG, MOVE_DRAGON_CLAW, + MOVE_ENDURE, MOVE_FACADE, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_ICY_WIND, MOVE_SLEEP_TALK, MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, @@ -35283,20 +35283,20 @@ static const u16 sArctibaxTeachableLearnset[] = { static const u16 sBaxcaliburTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_BLIZZARD, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DRAGON_CLAW, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, + MOVE_ICY_WIND, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ICY_WIND, MOVE_SLEEP_TALK, MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, @@ -35305,18 +35305,19 @@ static const u16 sBaxcaliburTeachableLearnset[] = { #if P_FAMILY_GIMMIGHOUL static const u16 sGimmighoulTeachableLearnset[] = { + MOVE_ENDURE, MOVE_LIGHT_SCREEN, MOVE_PROTECT, MOVE_REFLECT, MOVE_REST, MOVE_SHADOW_BALL, - MOVE_THIEF, - MOVE_ENDURE, MOVE_SLEEP_TALK, + MOVE_THIEF, MOVE_UNAVAILABLE, }; static const u16 sGholdengoTeachableLearnset[] = { + MOVE_ENDURE, MOVE_FOCUS_PUNCH, MOVE_HYPER_BEAM, MOVE_LIGHT_SCREEN, @@ -35326,11 +35327,10 @@ static const u16 sGholdengoTeachableLearnset[] = { MOVE_REST, MOVE_SANDSTORM, MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, MOVE_THIEF, MOVE_THUNDER, MOVE_THUNDERBOLT, - MOVE_ENDURE, - MOVE_SLEEP_TALK, MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, @@ -35339,22 +35339,22 @@ static const u16 sGholdengoTeachableLearnset[] = { #if P_FAMILY_WO_CHIEN static const u16 sWoChienTeachableLearnset[] = { + MOVE_BODY_SLAM, MOVE_BULLET_SEED, + MOVE_ENDURE, MOVE_FACADE, MOVE_GIGA_DRAIN, MOVE_HYPER_BEAM, MOVE_LIGHT_SCREEN, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REFLECT, MOVE_REST, + MOVE_SLEEP_TALK, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, MOVE_TAUNT, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_SLEEP_TALK, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_WO_CHIEN @@ -35364,44 +35364,45 @@ static const u16 sChienPaoTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_BLIZZARD, MOVE_BRICK_BREAK, + MOVE_ENDURE, MOVE_FACADE, MOVE_HYPER_BEAM, + MOVE_ICY_WIND, MOVE_PROTECT, MOVE_RAIN_DANCE, MOVE_REST, - MOVE_TAUNT, - MOVE_ENDURE, - MOVE_ICY_WIND, MOVE_SLEEP_TALK, MOVE_SWORDS_DANCE, + MOVE_TAUNT, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_CHIEN_PAO #if P_FAMILY_TING_LU static const u16 sTingLuTeachableLearnset[] = { + MOVE_BODY_SLAM, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_HYPER_BEAM, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_REST, + MOVE_ROCK_SLIDE, MOVE_ROCK_TOMB, MOVE_SANDSTORM, + MOVE_SLEEP_TALK, MOVE_SUNNY_DAY, MOVE_TAUNT, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_TING_LU #if P_FAMILY_CHI_YU static const u16 sChiYuTeachableLearnset[] = { + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, @@ -35412,11 +35413,10 @@ static const u16 sChiYuTeachableLearnset[] = { MOVE_PSYCHIC, MOVE_REFLECT, MOVE_REST, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_ENDURE, MOVE_SLEEP_TALK, + MOVE_SUNNY_DAY, MOVE_SWAGGER, + MOVE_TAUNT, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_CHI_YU @@ -35424,10 +35424,13 @@ static const u16 sChiYuTeachableLearnset[] = { #if P_FAMILY_ROARING_MOON static const u16 sRoaringMoonTeachableLearnset[] = { MOVE_AERIAL_ACE, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DRAGON_CLAW, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, @@ -35436,13 +35439,10 @@ static const u16 sRoaringMoonTeachableLearnset[] = { MOVE_PROTECT, MOVE_REST, MOVE_ROAR, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, MOVE_ROCK_SLIDE, MOVE_SLEEP_TALK, + MOVE_SUNNY_DAY, + MOVE_TAUNT, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_ROARING_MOON @@ -35453,26 +35453,26 @@ static const u16 sIronValiantTeachableLearnset[] = { MOVE_BRICK_BREAK, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_FURY_CUTTER, MOVE_HYPER_BEAM, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, MOVE_LIGHT_SCREEN, + MOVE_METRONOME, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_REFLECT, MOVE_REST, MOVE_SHADOW_BALL, MOVE_SKILL_SWAP, - MOVE_TAUNT, - MOVE_THUNDERBOLT, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_FURY_CUTTER, - MOVE_ICE_PUNCH, - MOVE_ICY_WIND, - MOVE_METRONOME, - MOVE_PSYCH_UP, MOVE_SLEEP_TALK, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_TAUNT, + MOVE_THUNDERBOLT, MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, @@ -35481,38 +35481,40 @@ static const u16 sIronValiantTeachableLearnset[] = { #if P_FAMILY_KORAIDON static const u16 sKoraidonTeachableLearnset[] = { + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULK_UP, + MOVE_COUNTER, MOVE_DIG, + MOVE_DOUBLE_EDGE, MOVE_DRAGON_CLAW, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, MOVE_FOCUS_PUNCH, MOVE_HYPER_BEAM, + MOVE_MUD_SLAP, MOVE_OVERHEAT, MOVE_PROTECT, MOVE_REST, MOVE_ROAR, MOVE_ROCK_SMASH, + MOVE_SLEEP_TALK, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_SLEEP_TALK, MOVE_SWORDS_DANCE, + MOVE_TAUNT, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_KORAIDON #if P_FAMILY_MIRAIDON static const u16 sMiraidonTeachableLearnset[] = { + MOVE_BODY_SLAM, MOVE_CALM_MIND, MOVE_DRAGON_CLAW, + MOVE_ENDURE, MOVE_FACADE, MOVE_HYPER_BEAM, MOVE_LIGHT_SCREEN, @@ -35521,14 +35523,12 @@ static const u16 sMiraidonTeachableLearnset[] = { MOVE_REFLECT, MOVE_REST, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, MOVE_SOLAR_BEAM, + MOVE_SWORDS_DANCE, MOVE_TAUNT, MOVE_THUNDER, MOVE_THUNDERBOLT, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_SLEEP_TALK, - MOVE_SWORDS_DANCE, MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; @@ -35536,7 +35536,10 @@ static const u16 sMiraidonTeachableLearnset[] = { #if P_FAMILY_WALKING_WAKE static const u16 sWalkingWakeTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, MOVE_DRAGON_CLAW, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLAMETHROWER, MOVE_HYPER_BEAM, @@ -35544,15 +35547,12 @@ static const u16 sWalkingWakeTeachableLearnset[] = { MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROAR, + MOVE_SLEEP_TALK, MOVE_SUNNY_DAY, MOVE_SURF, + MOVE_SWIFT, MOVE_WATERFALL, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_SLEEP_TALK, - MOVE_SWIFT, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_WALKING_WAKE @@ -35562,18 +35562,18 @@ static const u16 sIronLeavesTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_BRICK_BREAK, MOVE_CALM_MIND, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, MOVE_FACADE, MOVE_GIGA_DRAIN, MOVE_HYPER_BEAM, MOVE_PROTECT, MOVE_REST, - MOVE_SOLAR_BEAM, - MOVE_TAUNT, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, MOVE_SLEEP_TALK, + MOVE_SOLAR_BEAM, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_TAUNT, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_IRON_LEAVES @@ -35581,58 +35581,58 @@ static const u16 sIronLeavesTeachableLearnset[] = { #if P_FAMILY_POLTCHAGEIST static const u16 sPoltchageistTeachableLearnset[] = { MOVE_CALM_MIND, + MOVE_ENDURE, MOVE_GIGA_DRAIN, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_REFLECT, MOVE_REST, MOVE_SHADOW_BALL, - MOVE_SOLAR_BEAM, - MOVE_ENDURE, - MOVE_PSYCH_UP, MOVE_SLEEP_TALK, + MOVE_SOLAR_BEAM, MOVE_UNAVAILABLE, }; static const u16 sSinistchaTeachableLearnset[] = { MOVE_CALM_MIND, + MOVE_ENDURE, MOVE_GIGA_DRAIN, MOVE_HYPER_BEAM, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_REFLECT, MOVE_REST, MOVE_SHADOW_BALL, - MOVE_SOLAR_BEAM, - MOVE_ENDURE, - MOVE_PSYCH_UP, MOVE_SLEEP_TALK, + MOVE_SOLAR_BEAM, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_POLTCHAGEIST #if P_FAMILY_OKIDOGI static const u16 sOkidogiTeachableLearnset[] = { + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_BULK_UP, + MOVE_COUNTER, MOVE_DIG, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, MOVE_FACADE, + MOVE_FIRE_PUNCH, MOVE_FOCUS_PUNCH, MOVE_HYPER_BEAM, + MOVE_ICE_PUNCH, MOVE_PROTECT, MOVE_REST, MOVE_ROAR, MOVE_ROCK_TOMB, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, MOVE_TAUNT, MOVE_THIEF, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_ICE_PUNCH, - MOVE_SLEEP_TALK, MOVE_THUNDER_PUNCH, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_OKIDOGI @@ -35640,23 +35640,23 @@ static const u16 sOkidogiTeachableLearnset[] = { #if P_FAMILY_MUNKIDORI static const u16 sMunkidoriTeachableLearnset[] = { MOVE_CALM_MIND, + MOVE_ENDURE, MOVE_FACADE, MOVE_HYPER_BEAM, MOVE_LIGHT_SCREEN, + MOVE_METRONOME, + MOVE_MUD_SLAP, MOVE_PROTECT, MOVE_PSYCHIC, + MOVE_PSYCH_UP, MOVE_REST, MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, MOVE_SLUDGE_BOMB, + MOVE_SWIFT, MOVE_TAUNT, MOVE_THIEF, MOVE_TOXIC, - MOVE_ENDURE, - MOVE_METRONOME, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SWIFT, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_MUNKIDORI @@ -35666,24 +35666,24 @@ static const u16 sFezandipitiTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_CALM_MIND, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLY, MOVE_HYPER_BEAM, + MOVE_ICY_WIND, MOVE_LIGHT_SCREEN, MOVE_PROTECT, + MOVE_PSYCH_UP, MOVE_REST, MOVE_SHADOW_BALL, - MOVE_SLUDGE_BOMB, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_PSYCH_UP, MOVE_SLEEP_TALK, + MOVE_SLUDGE_BOMB, MOVE_SWAGGER, MOVE_SWIFT, MOVE_SWORDS_DANCE, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_FEZANDIPITI @@ -35692,6 +35692,8 @@ static const u16 sFezandipitiTeachableLearnset[] = { static const u16 sOgerponTeachableLearnset[] = { MOVE_BRICK_BREAK, MOVE_BULLET_SEED, + MOVE_COUNTER, + MOVE_ENDURE, MOVE_FACADE, MOVE_GIGA_DRAIN, MOVE_PROTECT, @@ -35699,21 +35701,22 @@ static const u16 sOgerponTeachableLearnset[] = { MOVE_REST, MOVE_ROCK_TOMB, MOVE_SANDSTORM, + MOVE_SLEEP_TALK, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_COUNTER, - MOVE_ENDURE, - MOVE_SLEEP_TALK, MOVE_SWORDS_DANCE, + MOVE_TAUNT, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_OGERPON #if P_FAMILY_GOUGING_FIRE static const u16 sGougingFireTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, MOVE_DRAGON_CLAW, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FIRE_BLAST, MOVE_FLAMETHROWER, @@ -35722,34 +35725,31 @@ static const u16 sGougingFireTeachableLearnset[] = { MOVE_PROTECT, MOVE_REST, MOVE_ROAR, - MOVE_SUNNY_DAY, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, MOVE_SLEEP_TALK, + MOVE_SUNNY_DAY, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_GOUGING_FIRE #if P_FAMILY_RAGING_BOLT static const u16 sRagingBoltTeachableLearnset[] = { + MOVE_BODY_SLAM, MOVE_CALM_MIND, + MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_HYPER_BEAM, MOVE_PROTECT, MOVE_REST, MOVE_ROAR, MOVE_SHOCK_WAVE, + MOVE_SLEEP_TALK, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, MOVE_TAUNT, MOVE_THUNDER, MOVE_THUNDERBOLT, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_SLEEP_TALK, MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; @@ -35758,8 +35758,12 @@ static const u16 sRagingBoltTeachableLearnset[] = { #if P_FAMILY_IRON_BOULDER static const u16 sIronBoulderTeachableLearnset[] = { MOVE_AERIAL_ACE, + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_HYPER_BEAM, MOVE_PROTECT, @@ -35767,29 +35771,25 @@ static const u16 sIronBoulderTeachableLearnset[] = { MOVE_REST, MOVE_ROCK_TOMB, MOVE_SANDSTORM, - MOVE_TAUNT, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, MOVE_SLEEP_TALK, MOVE_SWORDS_DANCE, + MOVE_TAUNT, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_IRON_BOULDER #if P_FAMILY_IRON_CROWN static const u16 sIronCrownTeachableLearnset[] = { + MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_CALM_MIND, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, MOVE_FACADE, MOVE_HYPER_BEAM, MOVE_PROTECT, MOVE_PSYCHIC, MOVE_REST, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, MOVE_SLEEP_TALK, MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, @@ -35798,8 +35798,11 @@ static const u16 sIronCrownTeachableLearnset[] = { #if P_FAMILY_TERAPAGOS static const u16 sTerapagosTeachableLearnset[] = { + MOVE_BODY_SLAM, MOVE_CALM_MIND, + MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, + MOVE_ENDURE, MOVE_FACADE, MOVE_FLAMETHROWER, MOVE_HYPER_BEAM, @@ -35808,6 +35811,8 @@ static const u16 sTerapagosTeachableLearnset[] = { MOVE_RAIN_DANCE, MOVE_REST, MOVE_ROAR, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, MOVE_SURF, @@ -35815,26 +35820,21 @@ static const u16 sTerapagosTeachableLearnset[] = { MOVE_THUNDERBOLT, MOVE_TOXIC, MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_TERAPAGOS #if P_FAMILY_PECHARUNT static const u16 sPecharuntTeachableLearnset[] = { - MOVE_PROTECT, - MOVE_REST, - MOVE_SHADOW_BALL, - MOVE_SLUDGE_BOMB, - MOVE_TOXIC, MOVE_DEFENSE_CURL, MOVE_ENDURE, + MOVE_PROTECT, + MOVE_REST, MOVE_ROLLOUT, + MOVE_SHADOW_BALL, MOVE_SLEEP_TALK, + MOVE_SLUDGE_BOMB, + MOVE_TOXIC, MOVE_UNAVAILABLE, }; #endif //P_FAMILY_PECHARUNT diff --git a/src/data/pokemon/trainer_class_lookups.h b/src/data/pokemon/trainer_class_lookups.h index 909d3d7dcb..963537520c 100644 --- a/src/data/pokemon/trainer_class_lookups.h +++ b/src/data/pokemon/trainer_class_lookups.h @@ -1,4 +1,4 @@ -const u8 gFacilityClassToPicIndex[] = +const u16 gFacilityClassToPicIndex[] = { [FACILITY_CLASS_HIKER] = TRAINER_PIC_HIKER, [FACILITY_CLASS_AQUA_GRUNT_M] = TRAINER_PIC_AQUA_GRUNT_M, @@ -84,7 +84,19 @@ const u8 gFacilityClassToPicIndex[] = [FACILITY_CLASS_RS_MAY] = TRAINER_PIC_RS_MAY, }; -const u8 gFacilityClassToTrainerClass[] = +const u16 gTrainerPicToTrainerBackPic[] = +{ + [TRAINER_BACK_PIC_BRENDAN] = TRAINER_PIC_BRENDAN, + [TRAINER_BACK_PIC_MAY] = TRAINER_PIC_MAY, + [TRAINER_BACK_PIC_RED] = TRAINER_PIC_RED, + [TRAINER_BACK_PIC_LEAF] = TRAINER_PIC_LEAF, + [TRAINER_BACK_PIC_RUBY_SAPPHIRE_BRENDAN] = TRAINER_PIC_RS_BRENDAN, + [TRAINER_BACK_PIC_RUBY_SAPPHIRE_MAY] = TRAINER_PIC_RS_MAY, + [TRAINER_BACK_PIC_WALLY] = TRAINER_PIC_WALLY, + [TRAINER_BACK_PIC_STEVEN] = TRAINER_PIC_STEVEN, +}; + +const u16 gFacilityClassToTrainerClass[] = { [FACILITY_CLASS_HIKER] = TRAINER_CLASS_HIKER, [FACILITY_CLASS_AQUA_GRUNT_M] = TRAINER_CLASS_TEAM_AQUA, diff --git a/src/data/tilesets/headers.h b/src/data/tilesets/headers.h index f6cac20c05..fb763892f5 100644 --- a/src/data/tilesets/headers.h +++ b/src/data/tilesets/headers.h @@ -1,3 +1,8 @@ +#include "fieldmap.h" + +// Whether a palette has a night version, located at ((x + 9) % 16).pal +#define SWAP_PAL(x) ((x) < NUM_PALS_IN_PRIMARY ? 1 << (x) : 1 << ((x) - NUM_PALS_IN_PRIMARY)) + const struct Tileset gTileset_General = { .isCompressed = TRUE, diff --git a/src/data/trainers.h b/src/data/trainers.h index af19c90ae2..44cb25be75 100644 --- a/src/data/trainers.h +++ b/src/data/trainers.h @@ -19,7 +19,7 @@ #line 81 TRAINER_ENCOUNTER_MUSIC_MALE, #line 82 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, .partySize = 0, .party = (const struct TrainerMon[]) { @@ -38,7 +38,7 @@ #line 89 TRAINER_ENCOUNTER_MUSIC_HIKER, #line 90 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 91 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 1, @@ -70,7 +70,7 @@ #line 102 TRAINER_ENCOUNTER_MUSIC_AQUA, #line 103 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 104 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -102,7 +102,7 @@ #line 115 TRAINER_ENCOUNTER_MUSIC_AQUA, #line 116 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 117 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -145,7 +145,7 @@ #line 132 TRAINER_ENCOUNTER_MUSIC_AQUA, #line 133 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 134 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -177,7 +177,7 @@ #line 145 TRAINER_ENCOUNTER_MUSIC_AQUA, #line 146 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 147 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -209,7 +209,7 @@ #line 158 TRAINER_ENCOUNTER_MUSIC_AQUA, #line 159 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 160 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -241,7 +241,7 @@ #line 171 TRAINER_ENCOUNTER_MUSIC_AQUA, #line 172 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 173 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -273,7 +273,7 @@ #line 184 TRAINER_ENCOUNTER_MUSIC_AQUA, #line 185 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 186 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -307,7 +307,7 @@ F_TRAINER_FEMALE | #line 197 TRAINER_ENCOUNTER_MUSIC_FEMALE, #line 198 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 199 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 6, @@ -394,7 +394,7 @@ F_TRAINER_FEMALE | #line 230 TRAINER_ENCOUNTER_MUSIC_AQUA, #line 231 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 232 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -428,7 +428,7 @@ F_TRAINER_FEMALE | #line 244 .items = { ITEM_HYPER_POTION }, #line 245 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 246 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 2, @@ -471,7 +471,7 @@ F_TRAINER_FEMALE | #line 261 TRAINER_ENCOUNTER_MUSIC_COOL, #line 262 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 263 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -514,7 +514,7 @@ F_TRAINER_FEMALE | #line 278 TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, #line 279 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 280 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -559,7 +559,7 @@ F_TRAINER_FEMALE | #line 295 TRAINER_ENCOUNTER_MUSIC_AQUA, #line 296 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 297 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -591,7 +591,7 @@ F_TRAINER_FEMALE | #line 308 TRAINER_ENCOUNTER_MUSIC_SWIMMER, #line 309 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 310 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -623,7 +623,7 @@ F_TRAINER_FEMALE | #line 321 TRAINER_ENCOUNTER_MUSIC_AQUA, #line 322 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 323 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -655,7 +655,7 @@ F_TRAINER_FEMALE | #line 334 TRAINER_ENCOUNTER_MUSIC_AQUA, #line 335 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 336 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -698,7 +698,7 @@ F_TRAINER_FEMALE | #line 351 TRAINER_ENCOUNTER_MUSIC_AQUA, #line 352 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 353 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -741,7 +741,7 @@ F_TRAINER_FEMALE | #line 368 TRAINER_ENCOUNTER_MUSIC_AQUA, #line 369 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 370 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 3, @@ -795,7 +795,7 @@ F_TRAINER_FEMALE | #line 389 TRAINER_ENCOUNTER_MUSIC_AQUA, #line 390 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 391 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -827,7 +827,7 @@ F_TRAINER_FEMALE | #line 402 TRAINER_ENCOUNTER_MUSIC_AQUA, #line 403 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 404 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -870,7 +870,7 @@ F_TRAINER_FEMALE | #line 419 TRAINER_ENCOUNTER_MUSIC_MAGMA, #line 420 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 421 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -902,7 +902,7 @@ F_TRAINER_FEMALE | #line 432 TRAINER_ENCOUNTER_MUSIC_AQUA, #line 433 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 434 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -934,7 +934,7 @@ F_TRAINER_FEMALE | #line 445 TRAINER_ENCOUNTER_MUSIC_AQUA, #line 446 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 447 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -966,7 +966,7 @@ F_TRAINER_FEMALE | #line 458 TRAINER_ENCOUNTER_MUSIC_AQUA, #line 459 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 460 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -1011,7 +1011,7 @@ F_TRAINER_FEMALE | #line 475 TRAINER_ENCOUNTER_MUSIC_AQUA, #line 476 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 477 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -1045,7 +1045,7 @@ F_TRAINER_FEMALE | #line 488 TRAINER_ENCOUNTER_MUSIC_AQUA, #line 489 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 490 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -1079,7 +1079,7 @@ F_TRAINER_FEMALE | #line 501 TRAINER_ENCOUNTER_MUSIC_AQUA, #line 502 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 503 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -1111,7 +1111,7 @@ F_TRAINER_FEMALE | #line 514 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 515 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 516 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 2, @@ -1156,7 +1156,7 @@ F_TRAINER_FEMALE | #line 532 .items = { ITEM_SUPER_POTION }, #line 533 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 534 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 2, @@ -1199,7 +1199,7 @@ F_TRAINER_FEMALE | #line 549 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 550 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 551 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -1233,7 +1233,7 @@ F_TRAINER_FEMALE | #line 562 TRAINER_ENCOUNTER_MUSIC_AQUA, #line 563 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 564 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 2, @@ -1278,7 +1278,7 @@ F_TRAINER_FEMALE | #line 579 TRAINER_ENCOUNTER_MUSIC_AQUA, #line 580 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 581 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 2, @@ -1323,7 +1323,7 @@ F_TRAINER_FEMALE | #line 597 .items = { ITEM_SUPER_POTION, ITEM_SUPER_POTION }, #line 598 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 599 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 3, @@ -1379,7 +1379,7 @@ F_TRAINER_FEMALE | #line 618 TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, #line 619 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 620 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -1413,7 +1413,7 @@ F_TRAINER_FEMALE | #line 631 TRAINER_ENCOUNTER_MUSIC_FEMALE, #line 632 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 633 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -1458,7 +1458,7 @@ F_TRAINER_FEMALE | #line 648 TRAINER_ENCOUNTER_MUSIC_FEMALE, #line 649 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 650 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 3, @@ -1514,7 +1514,7 @@ F_TRAINER_FEMALE | #line 670 .items = { ITEM_FULL_RESTORE }, #line 671 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 672 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 2, @@ -1568,7 +1568,7 @@ F_TRAINER_FEMALE | #line 690 TRAINER_ENCOUNTER_MUSIC_FEMALE, #line 691 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 692 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -1613,7 +1613,7 @@ F_TRAINER_FEMALE | #line 707 TRAINER_ENCOUNTER_MUSIC_FEMALE, #line 708 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 709 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -1658,7 +1658,7 @@ F_TRAINER_FEMALE | #line 724 TRAINER_ENCOUNTER_MUSIC_FEMALE, #line 725 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 726 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 3, @@ -1714,7 +1714,7 @@ F_TRAINER_FEMALE | #line 745 TRAINER_ENCOUNTER_MUSIC_FEMALE, #line 746 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 747 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 3, @@ -1770,7 +1770,7 @@ F_TRAINER_FEMALE | #line 766 TRAINER_ENCOUNTER_MUSIC_FEMALE, #line 767 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 768 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 3, @@ -1824,7 +1824,7 @@ F_TRAINER_FEMALE | #line 787 TRAINER_ENCOUNTER_MUSIC_HIKER, #line 788 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 789 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -1863,7 +1863,7 @@ F_TRAINER_FEMALE | #line 804 TRAINER_ENCOUNTER_MUSIC_HIKER, #line 805 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 806 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 3, @@ -1938,7 +1938,7 @@ F_TRAINER_FEMALE | #line 837 TRAINER_ENCOUNTER_MUSIC_HIKER, #line 838 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 839 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -1995,7 +1995,7 @@ F_TRAINER_FEMALE | #line 862 TRAINER_ENCOUNTER_MUSIC_HIKER, #line 863 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 864 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -2034,7 +2034,7 @@ F_TRAINER_FEMALE | #line 879 TRAINER_ENCOUNTER_MUSIC_HIKER, #line 880 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 881 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -2073,7 +2073,7 @@ F_TRAINER_FEMALE | #line 896 TRAINER_ENCOUNTER_MUSIC_HIKER, #line 897 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 898 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -2112,7 +2112,7 @@ F_TRAINER_FEMALE | #line 913 TRAINER_ENCOUNTER_MUSIC_HIKER, #line 914 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 915 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -2151,7 +2151,7 @@ F_TRAINER_FEMALE | #line 930 TRAINER_ENCOUNTER_MUSIC_INTERVIEWER, #line 931 - .doubleBattle = TRUE, + .battleType = TRAINER_BATTLE_TYPE_DOUBLES, #line 932 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -2194,7 +2194,7 @@ F_TRAINER_FEMALE | #line 947 TRAINER_ENCOUNTER_MUSIC_INTERVIEWER, #line 948 - .doubleBattle = TRUE, + .battleType = TRAINER_BATTLE_TYPE_DOUBLES, #line 949 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -2237,7 +2237,7 @@ F_TRAINER_FEMALE | #line 964 TRAINER_ENCOUNTER_MUSIC_INTERVIEWER, #line 965 - .doubleBattle = TRUE, + .battleType = TRAINER_BATTLE_TYPE_DOUBLES, #line 966 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -2280,7 +2280,7 @@ F_TRAINER_FEMALE | #line 981 TRAINER_ENCOUNTER_MUSIC_INTERVIEWER, #line 982 - .doubleBattle = TRUE, + .battleType = TRAINER_BATTLE_TYPE_DOUBLES, #line 983 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -2323,7 +2323,7 @@ F_TRAINER_FEMALE | #line 998 TRAINER_ENCOUNTER_MUSIC_INTERVIEWER, #line 999 - .doubleBattle = TRUE, + .battleType = TRAINER_BATTLE_TYPE_DOUBLES, #line 1000 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -2366,7 +2366,7 @@ F_TRAINER_FEMALE | #line 1015 TRAINER_ENCOUNTER_MUSIC_INTERVIEWER, #line 1016 - .doubleBattle = TRUE, + .battleType = TRAINER_BATTLE_TYPE_DOUBLES, #line 1017 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -2425,7 +2425,7 @@ F_TRAINER_FEMALE | #line 1040 TRAINER_ENCOUNTER_MUSIC_GIRL, #line 1041 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 1042 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -2470,7 +2470,7 @@ F_TRAINER_FEMALE | #line 1057 TRAINER_ENCOUNTER_MUSIC_GIRL, #line 1058 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 1059 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -2504,7 +2504,7 @@ F_TRAINER_FEMALE | #line 1070 TRAINER_ENCOUNTER_MUSIC_GIRL, #line 1071 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 1072 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -2538,7 +2538,7 @@ F_TRAINER_FEMALE | #line 1083 TRAINER_ENCOUNTER_MUSIC_GIRL, #line 1084 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 1085 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -2583,7 +2583,7 @@ F_TRAINER_FEMALE | #line 1100 TRAINER_ENCOUNTER_MUSIC_GIRL, #line 1101 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 1102 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -2628,7 +2628,7 @@ F_TRAINER_FEMALE | #line 1117 TRAINER_ENCOUNTER_MUSIC_GIRL, #line 1118 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 1119 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -2673,7 +2673,7 @@ F_TRAINER_FEMALE | #line 1134 TRAINER_ENCOUNTER_MUSIC_GIRL, #line 1135 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 1136 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -2716,7 +2716,7 @@ F_TRAINER_FEMALE | #line 1151 TRAINER_ENCOUNTER_MUSIC_GIRL, #line 1152 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 1153 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -2755,7 +2755,7 @@ F_TRAINER_FEMALE | #line 1168 TRAINER_ENCOUNTER_MUSIC_GIRL, #line 1169 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 1170 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -2798,7 +2798,7 @@ F_TRAINER_FEMALE | #line 1185 TRAINER_ENCOUNTER_MUSIC_GIRL, #line 1186 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 1187 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -2830,7 +2830,7 @@ F_TRAINER_FEMALE | #line 1198 TRAINER_ENCOUNTER_MUSIC_GIRL, #line 1199 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 1200 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -2869,7 +2869,7 @@ F_TRAINER_FEMALE | #line 1215 TRAINER_ENCOUNTER_MUSIC_GIRL, #line 1216 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 1217 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -2908,7 +2908,7 @@ F_TRAINER_FEMALE | #line 1232 TRAINER_ENCOUNTER_MUSIC_GIRL, #line 1233 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 1234 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -2947,7 +2947,7 @@ F_TRAINER_FEMALE | #line 1249 TRAINER_ENCOUNTER_MUSIC_GIRL, #line 1250 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 1251 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -2988,7 +2988,7 @@ F_TRAINER_FEMALE | #line 1267 .items = { ITEM_HYPER_POTION }, #line 1268 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 1269 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 1, @@ -3028,7 +3028,7 @@ F_TRAINER_FEMALE | #line 1284 .items = { ITEM_HYPER_POTION }, #line 1285 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 1286 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 1, @@ -3068,7 +3068,7 @@ F_TRAINER_FEMALE | #line 1301 .items = { ITEM_HYPER_POTION }, #line 1302 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 1303 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 1, @@ -3110,7 +3110,7 @@ F_TRAINER_FEMALE | #line 1318 .items = { ITEM_HYPER_POTION }, #line 1319 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 1320 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 1, @@ -3149,7 +3149,7 @@ F_TRAINER_FEMALE | #line 1334 .items = { ITEM_HYPER_POTION }, #line 1335 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 1336 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 5, @@ -3262,7 +3262,7 @@ F_TRAINER_FEMALE | #line 1384 .items = { ITEM_FULL_RESTORE }, #line 1385 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 1386 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 3, @@ -3318,7 +3318,7 @@ F_TRAINER_FEMALE | #line 1406 .items = { ITEM_FULL_RESTORE }, #line 1407 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 1408 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 2, @@ -3363,7 +3363,7 @@ F_TRAINER_FEMALE | #line 1424 .items = { ITEM_SUPER_POTION }, #line 1425 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 1426 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 3, @@ -3419,7 +3419,7 @@ F_TRAINER_FEMALE | #line 1446 .items = { ITEM_FULL_RESTORE }, #line 1447 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 1448 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 2, @@ -3464,7 +3464,7 @@ F_TRAINER_FEMALE | #line 1464 .items = { ITEM_FULL_RESTORE }, #line 1465 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 1466 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 2, @@ -3509,7 +3509,7 @@ F_TRAINER_FEMALE | #line 1482 .items = { ITEM_FULL_RESTORE }, #line 1483 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 1484 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 3, @@ -3565,7 +3565,7 @@ F_TRAINER_FEMALE | #line 1504 .items = { ITEM_FULL_RESTORE }, #line 1505 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 1506 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 4, @@ -3632,7 +3632,7 @@ F_TRAINER_FEMALE | #line 1530 .items = { ITEM_FULL_RESTORE }, #line 1531 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 1532 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 3, @@ -3688,7 +3688,7 @@ F_TRAINER_FEMALE | #line 1552 .items = { ITEM_HYPER_POTION }, #line 1553 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 1554 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 3, @@ -3744,7 +3744,7 @@ F_TRAINER_FEMALE | #line 1574 .items = { ITEM_HYPER_POTION }, #line 1575 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 1576 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 3, @@ -3800,7 +3800,7 @@ F_TRAINER_FEMALE | #line 1596 .items = { ITEM_FULL_RESTORE }, #line 1597 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 1598 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 3, @@ -3856,7 +3856,7 @@ F_TRAINER_FEMALE | #line 1618 .items = { ITEM_FULL_RESTORE }, #line 1619 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 1620 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 3, @@ -3912,7 +3912,7 @@ F_TRAINER_FEMALE | #line 1640 .items = { ITEM_FULL_RESTORE }, #line 1641 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 1642 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 2, @@ -3959,7 +3959,7 @@ F_TRAINER_FEMALE | #line 1658 .items = { ITEM_HYPER_POTION }, #line 1659 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 1660 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 1, @@ -4000,7 +4000,7 @@ F_TRAINER_FEMALE | #line 1674 .items = { ITEM_HYPER_POTION }, #line 1675 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 1676 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 1, @@ -4042,7 +4042,7 @@ F_TRAINER_FEMALE | #line 1691 .items = { ITEM_HYPER_POTION }, #line 1692 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 1693 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_FORCE_SETUP_FIRST_TURN, .partySize = 1, @@ -4083,7 +4083,7 @@ F_TRAINER_FEMALE | #line 1707 .items = { ITEM_FULL_RESTORE }, #line 1708 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 1709 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_FORCE_SETUP_FIRST_TURN, .partySize = 3, @@ -4162,7 +4162,7 @@ F_TRAINER_FEMALE | #line 1741 .items = { ITEM_FULL_RESTORE }, #line 1742 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 1743 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_FORCE_SETUP_FIRST_TURN, .partySize = 2, @@ -4209,7 +4209,7 @@ F_TRAINER_FEMALE | #line 1759 .items = { ITEM_SUPER_POTION }, #line 1760 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 1761 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 3, @@ -4267,7 +4267,7 @@ F_TRAINER_FEMALE | #line 1781 .items = { ITEM_FULL_RESTORE }, #line 1782 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 1783 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 1, @@ -4303,7 +4303,7 @@ F_TRAINER_FEMALE | #line 1795 .items = { ITEM_FULL_RESTORE }, #line 1796 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 1797 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 1, @@ -4339,7 +4339,7 @@ F_TRAINER_FEMALE | #line 1809 .items = { ITEM_FULL_RESTORE }, #line 1810 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 1811 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 1, @@ -4375,7 +4375,7 @@ F_TRAINER_FEMALE | #line 1823 .items = { ITEM_FULL_RESTORE }, #line 1824 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 1825 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 3, @@ -4433,7 +4433,7 @@ F_TRAINER_FEMALE | #line 1845 .items = { ITEM_FULL_RESTORE }, #line 1846 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 1847 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 2, @@ -4480,7 +4480,7 @@ F_TRAINER_FEMALE | #line 1863 .items = { ITEM_FULL_RESTORE }, #line 1864 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 1865 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 3, @@ -4538,7 +4538,7 @@ F_TRAINER_FEMALE | #line 1885 .items = { ITEM_HYPER_POTION }, #line 1886 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 1887 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 3, @@ -4596,7 +4596,7 @@ F_TRAINER_FEMALE | #line 1907 .items = { ITEM_HYPER_POTION }, #line 1908 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 1909 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 3, @@ -4654,7 +4654,7 @@ F_TRAINER_FEMALE | #line 1929 .items = { ITEM_FULL_RESTORE }, #line 1930 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 1931 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 3, @@ -4712,7 +4712,7 @@ F_TRAINER_FEMALE | #line 1951 .items = { ITEM_FULL_RESTORE }, #line 1952 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 1953 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 3, @@ -4768,7 +4768,7 @@ F_TRAINER_FEMALE | #line 1972 TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, #line 1973 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 1974 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -4813,7 +4813,7 @@ F_TRAINER_FEMALE | #line 1989 TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, #line 1990 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 1991 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -4858,7 +4858,7 @@ F_TRAINER_FEMALE | #line 2006 TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, #line 2007 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 2008 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -4903,7 +4903,7 @@ F_TRAINER_FEMALE | #line 2023 TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, #line 2024 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 2025 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -4937,7 +4937,7 @@ F_TRAINER_FEMALE | #line 2036 TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, #line 2037 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 2038 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -4971,7 +4971,7 @@ F_TRAINER_FEMALE | #line 2049 TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, #line 2050 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 2051 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -5016,7 +5016,7 @@ F_TRAINER_FEMALE | #line 2066 TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, #line 2067 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 2068 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -5061,7 +5061,7 @@ F_TRAINER_FEMALE | #line 2083 TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, #line 2084 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 2085 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -5106,7 +5106,7 @@ F_TRAINER_FEMALE | #line 2100 TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, #line 2101 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 2102 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 3, @@ -5164,7 +5164,7 @@ F_TRAINER_FEMALE | #line 2122 .items = { ITEM_FULL_RESTORE }, #line 2123 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 2124 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -5202,7 +5202,7 @@ F_TRAINER_FEMALE | #line 2136 .items = { ITEM_FULL_RESTORE }, #line 2137 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 2138 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -5263,7 +5263,7 @@ F_TRAINER_FEMALE | #line 2161 TRAINER_ENCOUNTER_MUSIC_MAGMA, #line 2162 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 2163 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 3, @@ -5321,7 +5321,7 @@ F_TRAINER_FEMALE | #line 2183 .items = { ITEM_FULL_RESTORE }, #line 2184 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 2185 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -5364,7 +5364,7 @@ F_TRAINER_FEMALE | #line 2199 .items = { ITEM_FULL_RESTORE }, #line 2200 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 2201 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -5402,7 +5402,7 @@ F_TRAINER_FEMALE | #line 2213 .items = { ITEM_FULL_RESTORE }, #line 2214 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 2215 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -5440,7 +5440,7 @@ F_TRAINER_FEMALE | #line 2227 .items = { ITEM_FULL_RESTORE }, #line 2228 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 2229 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -5478,7 +5478,7 @@ F_TRAINER_FEMALE | #line 2241 .items = { ITEM_FULL_RESTORE }, #line 2242 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 2243 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -5516,7 +5516,7 @@ F_TRAINER_FEMALE | #line 2255 .items = { ITEM_FULL_RESTORE }, #line 2256 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 2257 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -5554,7 +5554,7 @@ F_TRAINER_FEMALE | #line 2269 .items = { ITEM_FULL_RESTORE }, #line 2270 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 2271 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -5597,7 +5597,7 @@ F_TRAINER_FEMALE | #line 2286 TRAINER_ENCOUNTER_MUSIC_FEMALE, #line 2287 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 2288 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -5631,7 +5631,7 @@ F_TRAINER_FEMALE | #line 2299 TRAINER_ENCOUNTER_MUSIC_FEMALE, #line 2300 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 2301 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -5665,7 +5665,7 @@ F_TRAINER_FEMALE | #line 2312 TRAINER_ENCOUNTER_MUSIC_FEMALE, #line 2313 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 2314 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -5699,7 +5699,7 @@ F_TRAINER_FEMALE | #line 2325 TRAINER_ENCOUNTER_MUSIC_FEMALE, #line 2326 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 2327 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -5758,7 +5758,7 @@ F_TRAINER_FEMALE | #line 2350 TRAINER_ENCOUNTER_MUSIC_FEMALE, #line 2351 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 2352 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -5792,7 +5792,7 @@ F_TRAINER_FEMALE | #line 2363 TRAINER_ENCOUNTER_MUSIC_FEMALE, #line 2364 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 2365 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -5826,7 +5826,7 @@ F_TRAINER_FEMALE | #line 2376 TRAINER_ENCOUNTER_MUSIC_FEMALE, #line 2377 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 2378 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 3, @@ -5902,7 +5902,7 @@ F_TRAINER_FEMALE | #line 2408 TRAINER_ENCOUNTER_MUSIC_FEMALE, #line 2409 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 2410 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -5947,7 +5947,7 @@ F_TRAINER_FEMALE | #line 2425 TRAINER_ENCOUNTER_MUSIC_FEMALE, #line 2426 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 2427 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -6006,7 +6006,7 @@ F_TRAINER_FEMALE | #line 2450 TRAINER_ENCOUNTER_MUSIC_FEMALE, #line 2451 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 2452 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -6065,7 +6065,7 @@ F_TRAINER_FEMALE | #line 2475 TRAINER_ENCOUNTER_MUSIC_FEMALE, #line 2476 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 2477 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -6124,7 +6124,7 @@ F_TRAINER_FEMALE | #line 2500 TRAINER_ENCOUNTER_MUSIC_FEMALE, #line 2501 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 2502 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -6183,7 +6183,7 @@ F_TRAINER_FEMALE | #line 2526 .items = { ITEM_FULL_RESTORE }, #line 2527 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 2528 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -6219,7 +6219,7 @@ F_TRAINER_FEMALE | #line 2539 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 2540 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 2541 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -6264,7 +6264,7 @@ F_TRAINER_FEMALE | #line 2557 .items = { ITEM_FULL_RESTORE }, #line 2558 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 2559 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -6300,7 +6300,7 @@ F_TRAINER_FEMALE | #line 2571 .items = { ITEM_FULL_RESTORE }, #line 2572 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 2573 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -6336,7 +6336,7 @@ F_TRAINER_FEMALE | #line 2585 .items = { ITEM_FULL_RESTORE }, #line 2586 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 2587 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -6372,7 +6372,7 @@ F_TRAINER_FEMALE | #line 2599 .items = { ITEM_FULL_RESTORE }, #line 2600 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 2601 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -6408,7 +6408,7 @@ F_TRAINER_FEMALE | #line 2613 .items = { ITEM_FULL_RESTORE }, #line 2614 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 2615 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -6449,7 +6449,7 @@ F_TRAINER_FEMALE | #line 2630 TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, #line 2631 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 2632 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -6483,7 +6483,7 @@ F_TRAINER_FEMALE | #line 2643 TRAINER_ENCOUNTER_MUSIC_FEMALE, #line 2644 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 2645 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -6526,7 +6526,7 @@ F_TRAINER_FEMALE | #line 2660 TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, #line 2661 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 2662 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -6560,7 +6560,7 @@ F_TRAINER_FEMALE | #line 2673 TRAINER_ENCOUNTER_MUSIC_MAGMA, #line 2674 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 2675 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -6592,7 +6592,7 @@ F_TRAINER_FEMALE | #line 2686 TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, #line 2687 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 2688 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -6624,7 +6624,7 @@ F_TRAINER_FEMALE | #line 2699 TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, #line 2700 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 2701 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -6667,7 +6667,7 @@ F_TRAINER_FEMALE | #line 2716 TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, #line 2717 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 2718 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -6710,7 +6710,7 @@ F_TRAINER_FEMALE | #line 2733 TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, #line 2734 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 2735 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -6753,7 +6753,7 @@ F_TRAINER_FEMALE | #line 2750 TRAINER_ENCOUNTER_MUSIC_SWIMMER, #line 2751 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 2752 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -6785,7 +6785,7 @@ F_TRAINER_FEMALE | #line 2763 TRAINER_ENCOUNTER_MUSIC_SWIMMER, #line 2764 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 2765 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -6817,7 +6817,7 @@ F_TRAINER_FEMALE | #line 2776 TRAINER_ENCOUNTER_MUSIC_SWIMMER, #line 2777 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 2778 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -6860,7 +6860,7 @@ F_TRAINER_FEMALE | #line 2793 TRAINER_ENCOUNTER_MUSIC_SWIMMER, #line 2794 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 2795 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 3, @@ -6914,7 +6914,7 @@ F_TRAINER_FEMALE | #line 2814 TRAINER_ENCOUNTER_MUSIC_SWIMMER, #line 2815 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 2816 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -6946,7 +6946,7 @@ F_TRAINER_FEMALE | #line 2827 TRAINER_ENCOUNTER_MUSIC_SWIMMER, #line 2828 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 2829 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -6978,7 +6978,7 @@ F_TRAINER_FEMALE | #line 2840 TRAINER_ENCOUNTER_MUSIC_SWIMMER, #line 2841 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 2842 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -7010,7 +7010,7 @@ F_TRAINER_FEMALE | #line 2853 TRAINER_ENCOUNTER_MUSIC_SWIMMER, #line 2854 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 2855 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -7053,7 +7053,7 @@ F_TRAINER_FEMALE | #line 2870 TRAINER_ENCOUNTER_MUSIC_SWIMMER, #line 2871 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 2872 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -7096,7 +7096,7 @@ F_TRAINER_FEMALE | #line 2887 TRAINER_ENCOUNTER_MUSIC_SWIMMER, #line 2888 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 2889 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -7128,7 +7128,7 @@ F_TRAINER_FEMALE | #line 2900 TRAINER_ENCOUNTER_MUSIC_SWIMMER, #line 2901 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 2902 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -7160,7 +7160,7 @@ F_TRAINER_FEMALE | #line 2913 TRAINER_ENCOUNTER_MUSIC_SWIMMER, #line 2914 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 2915 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -7192,7 +7192,7 @@ F_TRAINER_FEMALE | #line 2926 TRAINER_ENCOUNTER_MUSIC_SWIMMER, #line 2927 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 2928 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -7224,7 +7224,7 @@ F_TRAINER_FEMALE | #line 2939 TRAINER_ENCOUNTER_MUSIC_SWIMMER, #line 2940 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 2941 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 3, @@ -7278,7 +7278,7 @@ F_TRAINER_FEMALE | #line 2960 TRAINER_ENCOUNTER_MUSIC_SWIMMER, #line 2961 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 2962 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -7310,7 +7310,7 @@ F_TRAINER_FEMALE | #line 2973 TRAINER_ENCOUNTER_MUSIC_SWIMMER, #line 2974 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 2975 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -7342,7 +7342,7 @@ F_TRAINER_FEMALE | #line 2986 TRAINER_ENCOUNTER_MUSIC_SWIMMER, #line 2987 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 2988 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -7385,7 +7385,7 @@ F_TRAINER_FEMALE | #line 3003 TRAINER_ENCOUNTER_MUSIC_SWIMMER, #line 3004 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 3005 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -7428,7 +7428,7 @@ F_TRAINER_FEMALE | #line 3020 TRAINER_ENCOUNTER_MUSIC_SWIMMER, #line 3021 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 3022 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -7460,7 +7460,7 @@ F_TRAINER_FEMALE | #line 3033 TRAINER_ENCOUNTER_MUSIC_SWIMMER, #line 3034 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 3035 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -7492,7 +7492,7 @@ F_TRAINER_FEMALE | #line 3046 TRAINER_ENCOUNTER_MUSIC_SWIMMER, #line 3047 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 3048 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -7524,7 +7524,7 @@ F_TRAINER_FEMALE | #line 3059 TRAINER_ENCOUNTER_MUSIC_SWIMMER, #line 3060 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 3061 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -7556,7 +7556,7 @@ F_TRAINER_FEMALE | #line 3072 TRAINER_ENCOUNTER_MUSIC_SWIMMER, #line 3073 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 3074 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 3, @@ -7610,7 +7610,7 @@ F_TRAINER_FEMALE | #line 3093 TRAINER_ENCOUNTER_MUSIC_SWIMMER, #line 3094 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 3095 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -7653,7 +7653,7 @@ F_TRAINER_FEMALE | #line 3110 TRAINER_ENCOUNTER_MUSIC_SWIMMER, #line 3111 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 3112 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -7685,7 +7685,7 @@ F_TRAINER_FEMALE | #line 3123 TRAINER_ENCOUNTER_MUSIC_SWIMMER, #line 3124 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 3125 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -7717,7 +7717,7 @@ F_TRAINER_FEMALE | #line 3136 TRAINER_ENCOUNTER_MUSIC_SWIMMER, #line 3137 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 3138 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -7760,7 +7760,7 @@ F_TRAINER_FEMALE | #line 3153 TRAINER_ENCOUNTER_MUSIC_SWIMMER, #line 3154 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 3155 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -7803,7 +7803,7 @@ F_TRAINER_FEMALE | #line 3170 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 3171 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 3172 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -7835,7 +7835,7 @@ F_TRAINER_FEMALE | #line 3183 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 3184 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 3185 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -7878,7 +7878,7 @@ F_TRAINER_FEMALE | #line 3200 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 3201 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 3202 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -7910,7 +7910,7 @@ F_TRAINER_FEMALE | #line 3213 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 3214 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 3215 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -7953,7 +7953,7 @@ F_TRAINER_FEMALE | #line 3230 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 3231 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 3232 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -7985,7 +7985,7 @@ F_TRAINER_FEMALE | #line 3243 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 3244 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 3245 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -8017,7 +8017,7 @@ F_TRAINER_FEMALE | #line 3256 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 3257 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 3258 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -8060,7 +8060,7 @@ F_TRAINER_FEMALE | #line 3273 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 3274 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 3275 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 3, @@ -8114,7 +8114,7 @@ F_TRAINER_FEMALE | #line 3294 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 3295 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 3296 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 4, @@ -8181,7 +8181,7 @@ F_TRAINER_FEMALE | #line 3319 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 3320 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 3321 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -8224,7 +8224,7 @@ F_TRAINER_FEMALE | #line 3336 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 3337 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 3338 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -8256,7 +8256,7 @@ F_TRAINER_FEMALE | #line 3349 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 3350 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 3351 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -8288,7 +8288,7 @@ F_TRAINER_FEMALE | #line 3362 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 3363 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 3364 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -8346,7 +8346,7 @@ F_TRAINER_FEMALE | #line 3386 TRAINER_ENCOUNTER_MUSIC_AQUA, #line 3387 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 3388 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -8389,7 +8389,7 @@ F_TRAINER_FEMALE | #line 3403 TRAINER_ENCOUNTER_MUSIC_AQUA, #line 3404 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 3405 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -8421,7 +8421,7 @@ F_TRAINER_FEMALE | #line 3416 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 3417 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 3418 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -8464,7 +8464,7 @@ F_TRAINER_FEMALE | #line 3433 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 3434 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 3435 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -8507,7 +8507,7 @@ F_TRAINER_FEMALE | #line 3450 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 3451 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 3452 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -8550,7 +8550,7 @@ F_TRAINER_FEMALE | #line 3467 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 3468 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 3469 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 3, @@ -8604,7 +8604,7 @@ F_TRAINER_FEMALE | #line 3488 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 3489 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 3490 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 3, @@ -8658,7 +8658,7 @@ F_TRAINER_FEMALE | #line 3509 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 3510 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 3511 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 3, @@ -8712,7 +8712,7 @@ F_TRAINER_FEMALE | #line 3530 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 3531 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 3532 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 3, @@ -8766,7 +8766,7 @@ F_TRAINER_FEMALE | #line 3551 TRAINER_ENCOUNTER_MUSIC_HIKER, #line 3552 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 3553 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -8798,7 +8798,7 @@ F_TRAINER_FEMALE | #line 3564 TRAINER_ENCOUNTER_MUSIC_HIKER, #line 3565 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 3566 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -8841,7 +8841,7 @@ F_TRAINER_FEMALE | #line 3581 TRAINER_ENCOUNTER_MUSIC_HIKER, #line 3582 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 3583 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -8873,7 +8873,7 @@ F_TRAINER_FEMALE | #line 3594 TRAINER_ENCOUNTER_MUSIC_HIKER, #line 3595 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 3596 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -8905,7 +8905,7 @@ F_TRAINER_FEMALE | #line 3607 TRAINER_ENCOUNTER_MUSIC_HIKER, #line 3608 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 3609 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -8937,7 +8937,7 @@ F_TRAINER_FEMALE | #line 3620 TRAINER_ENCOUNTER_MUSIC_HIKER, #line 3621 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 3622 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -8980,7 +8980,7 @@ F_TRAINER_FEMALE | #line 3637 TRAINER_ENCOUNTER_MUSIC_HIKER, #line 3638 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 3639 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -9023,7 +9023,7 @@ F_TRAINER_FEMALE | #line 3654 TRAINER_ENCOUNTER_MUSIC_HIKER, #line 3655 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 3656 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -9066,7 +9066,7 @@ F_TRAINER_FEMALE | #line 3671 TRAINER_ENCOUNTER_MUSIC_HIKER, #line 3672 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 3673 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -9109,7 +9109,7 @@ F_TRAINER_FEMALE | #line 3688 TRAINER_ENCOUNTER_MUSIC_HIKER, #line 3689 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 3690 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -9152,7 +9152,7 @@ F_TRAINER_FEMALE | #line 3705 TRAINER_ENCOUNTER_MUSIC_MALE, #line 3706 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 3707 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -9191,7 +9191,7 @@ F_TRAINER_FEMALE | #line 3722 TRAINER_ENCOUNTER_MUSIC_MALE, #line 3723 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 3724 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 3, @@ -9266,7 +9266,7 @@ F_TRAINER_FEMALE | #line 3755 TRAINER_ENCOUNTER_MUSIC_MALE, #line 3756 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 3757 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -9298,7 +9298,7 @@ F_TRAINER_FEMALE | #line 3768 TRAINER_ENCOUNTER_MUSIC_MALE, #line 3769 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 3770 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -9341,7 +9341,7 @@ F_TRAINER_FEMALE | #line 3785 TRAINER_ENCOUNTER_MUSIC_MALE, #line 3786 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 3787 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -9373,7 +9373,7 @@ F_TRAINER_FEMALE | #line 3798 TRAINER_ENCOUNTER_MUSIC_MALE, #line 3799 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 3800 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -9418,7 +9418,7 @@ F_TRAINER_FEMALE | #line 3815 TRAINER_ENCOUNTER_MUSIC_GIRL, #line 3816 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 3817 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -9450,7 +9450,7 @@ F_TRAINER_FEMALE | #line 3828 TRAINER_ENCOUNTER_MUSIC_MALE, #line 3829 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 3830 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -9482,7 +9482,7 @@ F_TRAINER_FEMALE | #line 3841 TRAINER_ENCOUNTER_MUSIC_MALE, #line 3842 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 3843 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -9525,7 +9525,7 @@ F_TRAINER_FEMALE | #line 3858 TRAINER_ENCOUNTER_MUSIC_MALE, #line 3859 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 3860 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -9568,7 +9568,7 @@ F_TRAINER_FEMALE | #line 3875 TRAINER_ENCOUNTER_MUSIC_MALE, #line 3876 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 3877 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 3, @@ -9622,7 +9622,7 @@ F_TRAINER_FEMALE | #line 3896 TRAINER_ENCOUNTER_MUSIC_MALE, #line 3897 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 3898 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 3, @@ -9676,7 +9676,7 @@ F_TRAINER_FEMALE | #line 3917 TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, #line 3918 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 3919 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -9708,7 +9708,7 @@ F_TRAINER_FEMALE | #line 3930 TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, #line 3931 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 3932 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 3, @@ -9762,7 +9762,7 @@ F_TRAINER_FEMALE | #line 3951 TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, #line 3952 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 3953 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 3, @@ -9816,7 +9816,7 @@ F_TRAINER_FEMALE | #line 3972 TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, #line 3973 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 3974 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 3, @@ -9870,7 +9870,7 @@ F_TRAINER_FEMALE | #line 3993 TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, #line 3994 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 3995 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -9913,7 +9913,7 @@ F_TRAINER_FEMALE | #line 4010 TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, #line 4011 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 4012 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 3, @@ -9967,7 +9967,7 @@ F_TRAINER_FEMALE | #line 4031 TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, #line 4032 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 4033 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 3, @@ -10021,7 +10021,7 @@ F_TRAINER_FEMALE | #line 4052 TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, #line 4053 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 4054 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 4, @@ -10086,7 +10086,7 @@ F_TRAINER_FEMALE | #line 4077 TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, #line 4078 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 4079 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 5, @@ -10164,7 +10164,7 @@ F_TRAINER_FEMALE | #line 4106 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 4107 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 4108 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -10200,7 +10200,7 @@ F_TRAINER_FEMALE | #line 4120 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 4121 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 4122 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -10232,7 +10232,7 @@ F_TRAINER_FEMALE | #line 4133 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 4134 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 4135 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -10264,7 +10264,7 @@ F_TRAINER_FEMALE | #line 4146 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 4147 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 4148 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -10296,7 +10296,7 @@ F_TRAINER_FEMALE | #line 4159 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 4160 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 4161 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 3, @@ -10350,7 +10350,7 @@ F_TRAINER_FEMALE | #line 4180 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 4181 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 4182 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -10393,7 +10393,7 @@ F_TRAINER_FEMALE | #line 4197 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 4198 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 4199 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -10425,7 +10425,7 @@ F_TRAINER_FEMALE | #line 4210 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 4211 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 4212 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -10468,7 +10468,7 @@ F_TRAINER_FEMALE | #line 4227 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 4228 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 4229 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -10511,7 +10511,7 @@ F_TRAINER_FEMALE | #line 4244 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 4245 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 4246 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -10554,7 +10554,7 @@ F_TRAINER_FEMALE | #line 4261 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 4262 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 4263 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -10599,7 +10599,7 @@ F_TRAINER_FEMALE | #line 4278 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 4279 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 4280 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -10637,7 +10637,7 @@ F_TRAINER_FEMALE | #line 4292 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 4293 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 4294 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -10671,7 +10671,7 @@ F_TRAINER_FEMALE | #line 4305 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 4306 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 4307 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -10705,7 +10705,7 @@ F_TRAINER_FEMALE | #line 4318 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 4319 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 4320 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -10739,7 +10739,7 @@ F_TRAINER_FEMALE | #line 4331 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 4332 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 4333 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 3, @@ -10795,7 +10795,7 @@ F_TRAINER_FEMALE | #line 4352 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 4353 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 4354 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -10840,7 +10840,7 @@ F_TRAINER_FEMALE | #line 4369 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 4370 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 4371 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -10885,7 +10885,7 @@ F_TRAINER_FEMALE | #line 4386 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 4387 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 4388 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -10930,7 +10930,7 @@ F_TRAINER_FEMALE | #line 4403 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 4404 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 4405 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -10975,7 +10975,7 @@ F_TRAINER_FEMALE | #line 4420 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 4421 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 4422 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -11020,7 +11020,7 @@ F_TRAINER_FEMALE | #line 4437 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 4438 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 4439 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -11063,7 +11063,7 @@ F_TRAINER_FEMALE | #line 4454 TRAINER_ENCOUNTER_MUSIC_RICH, #line 4455 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 4456 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -11095,7 +11095,7 @@ F_TRAINER_FEMALE | #line 4467 TRAINER_ENCOUNTER_MUSIC_RICH, #line 4468 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 4469 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -11138,7 +11138,7 @@ F_TRAINER_FEMALE | #line 4484 TRAINER_ENCOUNTER_MUSIC_RICH, #line 4485 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 4486 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -11170,7 +11170,7 @@ F_TRAINER_FEMALE | #line 4497 TRAINER_ENCOUNTER_MUSIC_RICH, #line 4498 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 4499 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -11202,7 +11202,7 @@ F_TRAINER_FEMALE | #line 4510 TRAINER_ENCOUNTER_MUSIC_RICH, #line 4511 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 4512 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -11259,7 +11259,7 @@ F_TRAINER_FEMALE | #line 4535 TRAINER_ENCOUNTER_MUSIC_RICH, #line 4536 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 4537 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -11315,7 +11315,7 @@ F_TRAINER_FEMALE | #line 4559 TRAINER_ENCOUNTER_MUSIC_RICH, #line 4560 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 4561 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 3, @@ -11392,7 +11392,7 @@ F_TRAINER_FEMALE | #line 4593 .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, #line 4594 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 4595 .aiFlags = AI_FLAG_BASIC_TRAINER | AI_FLAG_FORCE_SETUP_FIRST_TURN, #line 4596 @@ -11511,7 +11511,7 @@ F_TRAINER_FEMALE | #line 4644 .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, #line 4645 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 4646 .aiFlags = AI_FLAG_BASIC_TRAINER, #line 4647 @@ -11630,7 +11630,7 @@ F_TRAINER_FEMALE | #line 4695 .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, #line 4696 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 4697 .aiFlags = AI_FLAG_BASIC_TRAINER, #line 4698 @@ -11747,7 +11747,7 @@ F_TRAINER_FEMALE | #line 4746 .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, #line 4747 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 4748 .aiFlags = AI_FLAG_BASIC_TRAINER, #line 4749 @@ -11866,7 +11866,7 @@ F_TRAINER_FEMALE | #line 4797 .items = { ITEM_POTION, ITEM_POTION }, #line 4798 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 4799 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 3, @@ -11945,7 +11945,7 @@ F_TRAINER_FEMALE | #line 4831 .items = { ITEM_SUPER_POTION, ITEM_SUPER_POTION }, #line 4832 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 4833 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 3, @@ -12024,7 +12024,7 @@ F_TRAINER_FEMALE | #line 4865 .items = { ITEM_SUPER_POTION, ITEM_SUPER_POTION }, #line 4866 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 4867 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 4, @@ -12123,7 +12123,7 @@ F_TRAINER_FEMALE | #line 4907 .items = { ITEM_HYPER_POTION, ITEM_HYPER_POTION }, #line 4908 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 4909 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 4, @@ -12220,7 +12220,7 @@ F_TRAINER_FEMALE | #line 4949 .items = { ITEM_HYPER_POTION, ITEM_HYPER_POTION }, #line 4950 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 4951 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 4, @@ -12319,7 +12319,7 @@ F_TRAINER_FEMALE | #line 4991 .items = { ITEM_HYPER_POTION, ITEM_HYPER_POTION }, #line 4992 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 4993 .aiFlags = AI_FLAG_BASIC_TRAINER | AI_FLAG_RISKY, .partySize = 5, @@ -12434,7 +12434,7 @@ F_TRAINER_FEMALE | #line 5041 .items = { ITEM_HYPER_POTION, ITEM_HYPER_POTION, ITEM_HYPER_POTION, ITEM_HYPER_POTION }, #line 5042 - .doubleBattle = TRUE, + .battleType = TRAINER_BATTLE_TYPE_DOUBLES, #line 5043 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 4, @@ -12533,7 +12533,7 @@ F_TRAINER_FEMALE | #line 5083 .items = { ITEM_HYPER_POTION, ITEM_HYPER_POTION }, #line 5084 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 5085 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 5, @@ -12646,7 +12646,7 @@ F_TRAINER_FEMALE | #line 5132 TRAINER_ENCOUNTER_MUSIC_MALE, #line 5133 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 5134 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -12678,7 +12678,7 @@ F_TRAINER_FEMALE | #line 5145 TRAINER_ENCOUNTER_MUSIC_MALE, #line 5146 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 5147 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -12710,7 +12710,7 @@ F_TRAINER_FEMALE | #line 5158 TRAINER_ENCOUNTER_MUSIC_MALE, #line 5159 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 5160 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 3, @@ -12764,7 +12764,7 @@ F_TRAINER_FEMALE | #line 5179 TRAINER_ENCOUNTER_MUSIC_MALE, #line 5180 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 5181 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -12807,7 +12807,7 @@ F_TRAINER_FEMALE | #line 5196 TRAINER_ENCOUNTER_MUSIC_MALE, #line 5197 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 5198 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -12850,7 +12850,7 @@ F_TRAINER_FEMALE | #line 5213 TRAINER_ENCOUNTER_MUSIC_MALE, #line 5214 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 5215 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -12893,7 +12893,7 @@ F_TRAINER_FEMALE | #line 5230 TRAINER_ENCOUNTER_MUSIC_MALE, #line 5231 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 5232 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 3, @@ -12949,7 +12949,7 @@ F_TRAINER_FEMALE | #line 5251 TRAINER_ENCOUNTER_MUSIC_GIRL, #line 5252 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 5253 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -12983,7 +12983,7 @@ F_TRAINER_FEMALE | #line 5264 TRAINER_ENCOUNTER_MUSIC_GIRL, #line 5265 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 5266 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -13028,7 +13028,7 @@ F_TRAINER_FEMALE | #line 5281 TRAINER_ENCOUNTER_MUSIC_GIRL, #line 5282 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 5283 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -13073,7 +13073,7 @@ F_TRAINER_FEMALE | #line 5298 TRAINER_ENCOUNTER_MUSIC_GIRL, #line 5299 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 5300 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -13118,7 +13118,7 @@ F_TRAINER_FEMALE | #line 5315 TRAINER_ENCOUNTER_MUSIC_GIRL, #line 5316 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 5317 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -13163,7 +13163,7 @@ F_TRAINER_FEMALE | #line 5332 TRAINER_ENCOUNTER_MUSIC_GIRL, #line 5333 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 5334 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -13206,7 +13206,7 @@ F_TRAINER_FEMALE | #line 5349 TRAINER_ENCOUNTER_MUSIC_TWINS, #line 5350 - .doubleBattle = TRUE, + .battleType = TRAINER_BATTLE_TYPE_DOUBLES, #line 5351 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -13263,7 +13263,7 @@ F_TRAINER_FEMALE | #line 5374 TRAINER_ENCOUNTER_MUSIC_TWINS, #line 5375 - .doubleBattle = TRUE, + .battleType = TRAINER_BATTLE_TYPE_DOUBLES, #line 5376 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -13319,7 +13319,7 @@ F_TRAINER_FEMALE | #line 5398 TRAINER_ENCOUNTER_MUSIC_TWINS, #line 5399 - .doubleBattle = TRUE, + .battleType = TRAINER_BATTLE_TYPE_DOUBLES, #line 5400 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -13375,7 +13375,7 @@ F_TRAINER_FEMALE | #line 5422 TRAINER_ENCOUNTER_MUSIC_TWINS, #line 5423 - .doubleBattle = TRUE, + .battleType = TRAINER_BATTLE_TYPE_DOUBLES, #line 5424 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -13431,7 +13431,7 @@ F_TRAINER_FEMALE | #line 5446 TRAINER_ENCOUNTER_MUSIC_TWINS, #line 5447 - .doubleBattle = TRUE, + .battleType = TRAINER_BATTLE_TYPE_DOUBLES, #line 5448 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -13487,7 +13487,7 @@ F_TRAINER_FEMALE | #line 5470 TRAINER_ENCOUNTER_MUSIC_TWINS, #line 5471 - .doubleBattle = TRUE, + .battleType = TRAINER_BATTLE_TYPE_DOUBLES, #line 5472 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -13543,7 +13543,7 @@ F_TRAINER_FEMALE | #line 5494 TRAINER_ENCOUNTER_MUSIC_TWINS, #line 5495 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 5496 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -13590,7 +13590,7 @@ F_TRAINER_FEMALE | #line 5511 TRAINER_ENCOUNTER_MUSIC_TWINS, #line 5512 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 5513 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -13624,7 +13624,7 @@ F_TRAINER_FEMALE | #line 5524 TRAINER_ENCOUNTER_MUSIC_TWINS, #line 5525 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 5526 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 6, @@ -13765,7 +13765,7 @@ F_TRAINER_FEMALE | #line 5581 TRAINER_ENCOUNTER_MUSIC_TWINS, #line 5582 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 5583 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -13799,7 +13799,7 @@ F_TRAINER_FEMALE | #line 5594 TRAINER_ENCOUNTER_MUSIC_TWINS, #line 5595 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 5596 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -13833,7 +13833,7 @@ F_TRAINER_FEMALE | #line 5607 TRAINER_ENCOUNTER_MUSIC_TWINS, #line 5608 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 5609 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -13867,7 +13867,7 @@ F_TRAINER_FEMALE | #line 5620 TRAINER_ENCOUNTER_MUSIC_TWINS, #line 5621 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 5622 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -13903,7 +13903,7 @@ F_TRAINER_FEMALE | #line 5633 TRAINER_ENCOUNTER_MUSIC_TWINS, #line 5634 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 5635 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT, .partySize = 1, @@ -13939,7 +13939,7 @@ F_TRAINER_FEMALE | #line 5646 TRAINER_ENCOUNTER_MUSIC_TWINS, #line 5647 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 5648 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -13975,7 +13975,7 @@ F_TRAINER_FEMALE | #line 5659 TRAINER_ENCOUNTER_MUSIC_TWINS, #line 5660 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 5661 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 3, @@ -14037,7 +14037,7 @@ F_TRAINER_FEMALE | #line 5680 TRAINER_ENCOUNTER_MUSIC_TWINS, #line 5681 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 5682 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -14086,7 +14086,7 @@ F_TRAINER_FEMALE | #line 5697 TRAINER_ENCOUNTER_MUSIC_TWINS, #line 5698 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 5699 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -14135,7 +14135,7 @@ F_TRAINER_FEMALE | #line 5714 TRAINER_ENCOUNTER_MUSIC_TWINS, #line 5715 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 5716 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -14184,7 +14184,7 @@ F_TRAINER_FEMALE | #line 5731 TRAINER_ENCOUNTER_MUSIC_TWINS, #line 5732 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 5733 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -14233,7 +14233,7 @@ F_TRAINER_FEMALE | #line 5748 TRAINER_ENCOUNTER_MUSIC_TWINS, #line 5749 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 5750 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -14280,7 +14280,7 @@ F_TRAINER_FEMALE | #line 5765 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 5766 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 5767 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 1, @@ -14312,7 +14312,7 @@ F_TRAINER_FEMALE | #line 5778 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 5779 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 5780 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 1, @@ -14351,7 +14351,7 @@ F_TRAINER_FEMALE | #line 5795 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 5796 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 5797 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 1, @@ -14390,7 +14390,7 @@ F_TRAINER_FEMALE | #line 5812 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 5813 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 5814 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 1, @@ -14429,7 +14429,7 @@ F_TRAINER_FEMALE | #line 5829 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 5830 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 5831 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 1, @@ -14470,7 +14470,7 @@ F_TRAINER_FEMALE | #line 5846 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 5847 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 5848 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 1, @@ -14511,7 +14511,7 @@ F_TRAINER_FEMALE | #line 5863 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 5864 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 5865 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 2, @@ -14556,7 +14556,7 @@ F_TRAINER_FEMALE | #line 5880 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 5881 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 5882 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 2, @@ -14601,7 +14601,7 @@ F_TRAINER_FEMALE | #line 5897 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 5898 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 5899 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 2, @@ -14646,7 +14646,7 @@ F_TRAINER_FEMALE | #line 5914 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 5915 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 5916 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 2, @@ -14691,7 +14691,7 @@ F_TRAINER_FEMALE | #line 5931 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 5932 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 5933 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 2, @@ -14734,7 +14734,7 @@ F_TRAINER_FEMALE | #line 5948 TRAINER_ENCOUNTER_MUSIC_MALE, #line 5949 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 5950 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -14766,7 +14766,7 @@ F_TRAINER_FEMALE | #line 5961 TRAINER_ENCOUNTER_MUSIC_MALE, #line 5962 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 5963 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -14809,7 +14809,7 @@ F_TRAINER_FEMALE | #line 5978 TRAINER_ENCOUNTER_MUSIC_MALE, #line 5979 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 5980 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -14845,7 +14845,7 @@ F_TRAINER_FEMALE | #line 5992 TRAINER_ENCOUNTER_MUSIC_MALE, #line 5993 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 5994 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -14888,7 +14888,7 @@ F_TRAINER_FEMALE | #line 6009 TRAINER_ENCOUNTER_MUSIC_MALE, #line 6010 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 6011 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -14920,7 +14920,7 @@ F_TRAINER_FEMALE | #line 6022 TRAINER_ENCOUNTER_MUSIC_MALE, #line 6023 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 6024 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -14979,7 +14979,7 @@ F_TRAINER_FEMALE | #line 6048 .items = { ITEM_FULL_RESTORE }, #line 6049 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 6050 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 2, @@ -15040,7 +15040,7 @@ F_TRAINER_FEMALE | #line 6074 .items = { ITEM_FULL_RESTORE }, #line 6075 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 6076 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 2, @@ -15097,7 +15097,7 @@ F_TRAINER_FEMALE | #line 6099 TRAINER_ENCOUNTER_MUSIC_MALE, #line 6100 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 6101 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -15129,7 +15129,7 @@ F_TRAINER_FEMALE | #line 6112 TRAINER_ENCOUNTER_MUSIC_MALE, #line 6113 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 6114 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -15161,7 +15161,7 @@ F_TRAINER_FEMALE | #line 6125 TRAINER_ENCOUNTER_MUSIC_MALE, #line 6126 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 6127 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -15193,7 +15193,7 @@ F_TRAINER_FEMALE | #line 6138 TRAINER_ENCOUNTER_MUSIC_MALE, #line 6139 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 6140 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -15236,7 +15236,7 @@ F_TRAINER_FEMALE | #line 6155 TRAINER_ENCOUNTER_MUSIC_MALE, #line 6156 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 6157 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 3, @@ -15290,7 +15290,7 @@ F_TRAINER_FEMALE | #line 6176 TRAINER_ENCOUNTER_MUSIC_MALE, #line 6177 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 6178 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 3, @@ -15344,7 +15344,7 @@ F_TRAINER_FEMALE | #line 6197 TRAINER_ENCOUNTER_MUSIC_MALE, #line 6198 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 6199 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -15387,7 +15387,7 @@ F_TRAINER_FEMALE | #line 6214 TRAINER_ENCOUNTER_MUSIC_MALE, #line 6215 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 6216 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -15430,7 +15430,7 @@ F_TRAINER_FEMALE | #line 6231 TRAINER_ENCOUNTER_MUSIC_MALE, #line 6232 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 6233 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -15475,7 +15475,7 @@ F_TRAINER_FEMALE | #line 6249 .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, #line 6250 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 6251 .aiFlags = AI_FLAG_BASIC_TRAINER, #line 6252 @@ -15608,7 +15608,7 @@ F_TRAINER_FEMALE | #line 6307 TRAINER_ENCOUNTER_MUSIC_HIKER, #line 6308 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 6309 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 3, @@ -15662,7 +15662,7 @@ F_TRAINER_FEMALE | #line 6328 TRAINER_ENCOUNTER_MUSIC_HIKER, #line 6329 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 6330 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 3, @@ -15716,7 +15716,7 @@ F_TRAINER_FEMALE | #line 6349 TRAINER_ENCOUNTER_MUSIC_HIKER, #line 6350 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 6351 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 3, @@ -15770,7 +15770,7 @@ F_TRAINER_FEMALE | #line 6370 TRAINER_ENCOUNTER_MUSIC_HIKER, #line 6371 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 6372 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 3, @@ -15824,7 +15824,7 @@ F_TRAINER_FEMALE | #line 6391 TRAINER_ENCOUNTER_MUSIC_HIKER, #line 6392 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 6393 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -15856,7 +15856,7 @@ F_TRAINER_FEMALE | #line 6404 TRAINER_ENCOUNTER_MUSIC_HIKER, #line 6405 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 6406 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 4, @@ -15921,7 +15921,7 @@ F_TRAINER_FEMALE | #line 6429 TRAINER_ENCOUNTER_MUSIC_HIKER, #line 6430 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 6431 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -15953,7 +15953,7 @@ F_TRAINER_FEMALE | #line 6442 TRAINER_ENCOUNTER_MUSIC_HIKER, #line 6443 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 6444 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -15996,7 +15996,7 @@ F_TRAINER_FEMALE | #line 6459 TRAINER_ENCOUNTER_MUSIC_HIKER, #line 6460 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 6461 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -16028,7 +16028,7 @@ F_TRAINER_FEMALE | #line 6472 TRAINER_ENCOUNTER_MUSIC_HIKER, #line 6473 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 6474 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -16071,7 +16071,7 @@ F_TRAINER_FEMALE | #line 6489 TRAINER_ENCOUNTER_MUSIC_HIKER, #line 6490 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 6491 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 3, @@ -16125,7 +16125,7 @@ F_TRAINER_FEMALE | #line 6510 TRAINER_ENCOUNTER_MUSIC_HIKER, #line 6511 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 6512 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 4, @@ -16190,7 +16190,7 @@ F_TRAINER_FEMALE | #line 6535 TRAINER_ENCOUNTER_MUSIC_HIKER, #line 6536 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 6537 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 4, @@ -16255,7 +16255,7 @@ F_TRAINER_FEMALE | #line 6560 TRAINER_ENCOUNTER_MUSIC_HIKER, #line 6561 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 6562 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT, .partySize = 4, @@ -16320,7 +16320,7 @@ F_TRAINER_FEMALE | #line 6585 TRAINER_ENCOUNTER_MUSIC_HIKER, #line 6586 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 6587 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 6, @@ -16407,7 +16407,7 @@ F_TRAINER_FEMALE | #line 6618 TRAINER_ENCOUNTER_MUSIC_MALE, #line 6619 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 6620 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 3, @@ -16461,7 +16461,7 @@ F_TRAINER_FEMALE | #line 6639 TRAINER_ENCOUNTER_MUSIC_MALE, #line 6640 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 6641 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -16504,7 +16504,7 @@ F_TRAINER_FEMALE | #line 6656 TRAINER_ENCOUNTER_MUSIC_MALE, #line 6657 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 6658 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -16536,7 +16536,7 @@ F_TRAINER_FEMALE | #line 6669 TRAINER_ENCOUNTER_MUSIC_MALE, #line 6670 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 6671 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -16568,7 +16568,7 @@ F_TRAINER_FEMALE | #line 6682 TRAINER_ENCOUNTER_MUSIC_MALE, #line 6683 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 6684 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -16600,7 +16600,7 @@ F_TRAINER_FEMALE | #line 6695 TRAINER_ENCOUNTER_MUSIC_MALE, #line 6696 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 6697 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -16632,7 +16632,7 @@ F_TRAINER_FEMALE | #line 6708 TRAINER_ENCOUNTER_MUSIC_MALE, #line 6709 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 6710 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -16666,7 +16666,7 @@ F_TRAINER_FEMALE | #line 6721 TRAINER_ENCOUNTER_MUSIC_FEMALE, #line 6722 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 6723 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -16700,7 +16700,7 @@ F_TRAINER_FEMALE | #line 6734 TRAINER_ENCOUNTER_MUSIC_FEMALE, #line 6735 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 6736 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 3, @@ -16756,7 +16756,7 @@ F_TRAINER_FEMALE | #line 6755 TRAINER_ENCOUNTER_MUSIC_FEMALE, #line 6756 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 6757 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -16790,7 +16790,7 @@ F_TRAINER_FEMALE | #line 6768 TRAINER_ENCOUNTER_MUSIC_FEMALE, #line 6769 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 6770 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -16824,7 +16824,7 @@ F_TRAINER_FEMALE | #line 6781 TRAINER_ENCOUNTER_MUSIC_FEMALE, #line 6782 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 6783 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -16858,7 +16858,7 @@ F_TRAINER_FEMALE | #line 6794 TRAINER_ENCOUNTER_MUSIC_FEMALE, #line 6795 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 6796 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -16890,7 +16890,7 @@ F_TRAINER_FEMALE | #line 6807 TRAINER_ENCOUNTER_MUSIC_MALE, #line 6808 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 6809 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -16922,7 +16922,7 @@ F_TRAINER_FEMALE | #line 6820 TRAINER_ENCOUNTER_MUSIC_MALE, #line 6821 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 6822 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -16954,7 +16954,7 @@ F_TRAINER_FEMALE | #line 6833 TRAINER_ENCOUNTER_MUSIC_MALE, #line 6834 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 6835 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -16986,7 +16986,7 @@ F_TRAINER_FEMALE | #line 6846 TRAINER_ENCOUNTER_MUSIC_MALE, #line 6847 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 6848 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -17018,7 +17018,7 @@ F_TRAINER_FEMALE | #line 6859 TRAINER_ENCOUNTER_MUSIC_MALE, #line 6860 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 6861 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -17052,7 +17052,7 @@ F_TRAINER_FEMALE | #line 6872 TRAINER_ENCOUNTER_MUSIC_FEMALE, #line 6873 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 6874 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -17086,7 +17086,7 @@ F_TRAINER_FEMALE | #line 6885 TRAINER_ENCOUNTER_MUSIC_FEMALE, #line 6886 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 6887 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -17120,7 +17120,7 @@ F_TRAINER_FEMALE | #line 6898 TRAINER_ENCOUNTER_MUSIC_FEMALE, #line 6899 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 6900 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -17154,7 +17154,7 @@ F_TRAINER_FEMALE | #line 6911 TRAINER_ENCOUNTER_MUSIC_FEMALE, #line 6912 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 6913 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -17188,7 +17188,7 @@ F_TRAINER_FEMALE | #line 6924 TRAINER_ENCOUNTER_MUSIC_FEMALE, #line 6925 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 6926 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -17220,7 +17220,7 @@ F_TRAINER_FEMALE | #line 6937 TRAINER_ENCOUNTER_MUSIC_SWIMMER, #line 6938 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 6939 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -17263,7 +17263,7 @@ F_TRAINER_FEMALE | #line 6954 TRAINER_ENCOUNTER_MUSIC_MALE, #line 6955 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 6956 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -17306,7 +17306,7 @@ F_TRAINER_FEMALE | #line 6971 TRAINER_ENCOUNTER_MUSIC_SWIMMER, #line 6972 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 6973 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -17338,7 +17338,7 @@ F_TRAINER_FEMALE | #line 6984 TRAINER_ENCOUNTER_MUSIC_SWIMMER, #line 6985 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 6986 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -17381,7 +17381,7 @@ F_TRAINER_FEMALE | #line 7001 TRAINER_ENCOUNTER_MUSIC_SWIMMER, #line 7002 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 7003 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -17424,7 +17424,7 @@ F_TRAINER_FEMALE | #line 7018 TRAINER_ENCOUNTER_MUSIC_SWIMMER, #line 7019 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 7020 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -17456,7 +17456,7 @@ F_TRAINER_FEMALE | #line 7031 TRAINER_ENCOUNTER_MUSIC_SWIMMER, #line 7032 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 7033 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -17488,7 +17488,7 @@ F_TRAINER_FEMALE | #line 7044 TRAINER_ENCOUNTER_MUSIC_SWIMMER, #line 7045 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 7046 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -17520,7 +17520,7 @@ F_TRAINER_FEMALE | #line 7057 TRAINER_ENCOUNTER_MUSIC_SWIMMER, #line 7058 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 7059 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -17554,7 +17554,7 @@ F_TRAINER_FEMALE | #line 7070 TRAINER_ENCOUNTER_MUSIC_SWIMMER, #line 7071 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 7072 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -17588,7 +17588,7 @@ F_TRAINER_FEMALE | #line 7083 TRAINER_ENCOUNTER_MUSIC_SWIMMER, #line 7084 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 7085 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -17633,7 +17633,7 @@ F_TRAINER_FEMALE | #line 7100 TRAINER_ENCOUNTER_MUSIC_SWIMMER, #line 7101 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 7102 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -17667,7 +17667,7 @@ F_TRAINER_FEMALE | #line 7113 TRAINER_ENCOUNTER_MUSIC_SWIMMER, #line 7114 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 7115 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -17701,7 +17701,7 @@ F_TRAINER_FEMALE | #line 7126 TRAINER_ENCOUNTER_MUSIC_SWIMMER, #line 7127 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 7128 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -17746,7 +17746,7 @@ F_TRAINER_FEMALE | #line 7143 TRAINER_ENCOUNTER_MUSIC_SWIMMER, #line 7144 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 7145 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -17780,7 +17780,7 @@ F_TRAINER_FEMALE | #line 7156 TRAINER_ENCOUNTER_MUSIC_SWIMMER, #line 7157 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 7158 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -17814,7 +17814,7 @@ F_TRAINER_FEMALE | #line 7169 TRAINER_ENCOUNTER_MUSIC_SWIMMER, #line 7170 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 7171 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -17848,7 +17848,7 @@ F_TRAINER_FEMALE | #line 7182 TRAINER_ENCOUNTER_MUSIC_SWIMMER, #line 7183 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 7184 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -17880,7 +17880,7 @@ F_TRAINER_FEMALE | #line 7195 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 7196 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 7197 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -17923,7 +17923,7 @@ F_TRAINER_FEMALE | #line 7212 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 7213 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 7214 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -17966,7 +17966,7 @@ F_TRAINER_FEMALE | #line 7229 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 7230 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 7231 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -18009,7 +18009,7 @@ F_TRAINER_FEMALE | #line 7246 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 7247 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 7248 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 3, @@ -18063,7 +18063,7 @@ F_TRAINER_FEMALE | #line 7267 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 7268 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 7269 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 3, @@ -18119,7 +18119,7 @@ F_TRAINER_FEMALE | #line 7288 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 7289 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 7290 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -18158,7 +18158,7 @@ F_TRAINER_FEMALE | #line 7305 TRAINER_ENCOUNTER_MUSIC_COOL, #line 7306 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 7307 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -18190,7 +18190,7 @@ F_TRAINER_FEMALE | #line 7318 TRAINER_ENCOUNTER_MUSIC_COOL, #line 7319 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 7320 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -18233,7 +18233,7 @@ F_TRAINER_FEMALE | #line 7335 TRAINER_ENCOUNTER_MUSIC_COOL, #line 7336 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 7337 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -18265,7 +18265,7 @@ F_TRAINER_FEMALE | #line 7348 TRAINER_ENCOUNTER_MUSIC_COOL, #line 7349 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 7350 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 3, @@ -18319,7 +18319,7 @@ F_TRAINER_FEMALE | #line 7369 TRAINER_ENCOUNTER_MUSIC_COOL, #line 7370 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 7371 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -18351,7 +18351,7 @@ F_TRAINER_FEMALE | #line 7382 TRAINER_ENCOUNTER_MUSIC_COOL, #line 7383 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 7384 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -18394,7 +18394,7 @@ F_TRAINER_FEMALE | #line 7399 TRAINER_ENCOUNTER_MUSIC_COOL, #line 7400 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 7401 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -18437,7 +18437,7 @@ F_TRAINER_FEMALE | #line 7416 TRAINER_ENCOUNTER_MUSIC_COOL, #line 7417 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 7418 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -18480,7 +18480,7 @@ F_TRAINER_FEMALE | #line 7433 TRAINER_ENCOUNTER_MUSIC_COOL, #line 7434 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 7435 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -18512,7 +18512,7 @@ F_TRAINER_FEMALE | #line 7446 TRAINER_ENCOUNTER_MUSIC_COOL, #line 7447 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 7448 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 3, @@ -18566,7 +18566,7 @@ F_TRAINER_FEMALE | #line 7467 TRAINER_ENCOUNTER_MUSIC_COOL, #line 7468 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 7469 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -18609,7 +18609,7 @@ F_TRAINER_FEMALE | #line 7484 TRAINER_ENCOUNTER_MUSIC_COOL, #line 7485 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 7486 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -18652,7 +18652,7 @@ F_TRAINER_FEMALE | #line 7501 TRAINER_ENCOUNTER_MUSIC_COOL, #line 7502 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 7503 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -18695,7 +18695,7 @@ F_TRAINER_FEMALE | #line 7518 TRAINER_ENCOUNTER_MUSIC_COOL, #line 7519 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 7520 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -18738,7 +18738,7 @@ F_TRAINER_FEMALE | #line 7535 TRAINER_ENCOUNTER_MUSIC_COOL, #line 7536 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 7537 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -18781,7 +18781,7 @@ F_TRAINER_FEMALE | #line 7552 TRAINER_ENCOUNTER_MUSIC_COOL, #line 7553 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 7554 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -18824,7 +18824,7 @@ F_TRAINER_FEMALE | #line 7569 TRAINER_ENCOUNTER_MUSIC_COOL, #line 7570 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 7571 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -18856,7 +18856,7 @@ F_TRAINER_FEMALE | #line 7582 TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, #line 7583 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 7584 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT, .partySize = 1, @@ -18888,7 +18888,7 @@ F_TRAINER_FEMALE | #line 7595 TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, #line 7596 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 7597 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT, .partySize = 2, @@ -18935,7 +18935,7 @@ F_TRAINER_FEMALE | #line 7613 .items = { ITEM_FULL_RESTORE }, #line 7614 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, .partySize = 2, .party = (const struct TrainerMon[]) { @@ -18988,7 +18988,7 @@ F_TRAINER_FEMALE | #line 7633 TRAINER_ENCOUNTER_MUSIC_GIRL, #line 7634 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, .partySize = 1, .party = (const struct TrainerMon[]) { @@ -19018,7 +19018,7 @@ F_TRAINER_FEMALE | #line 7645 TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, #line 7646 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, .partySize = 3, .party = (const struct TrainerMon[]) { @@ -19091,7 +19091,7 @@ F_TRAINER_FEMALE | #line 7677 TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, #line 7678 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, .partySize = 2, .party = (const struct TrainerMon[]) { @@ -19132,7 +19132,7 @@ F_TRAINER_FEMALE | #line 7693 TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, #line 7694 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, .partySize = 4, .party = (const struct TrainerMon[]) { @@ -19220,7 +19220,7 @@ F_TRAINER_FEMALE | #line 7730 TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, #line 7731 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, .partySize = 4, .party = (const struct TrainerMon[]) { @@ -19308,7 +19308,7 @@ F_TRAINER_FEMALE | #line 7767 TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, #line 7768 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, .partySize = 4, .party = (const struct TrainerMon[]) { @@ -19394,7 +19394,7 @@ F_TRAINER_FEMALE | #line 7802 TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, #line 7803 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, .partySize = 4, .party = (const struct TrainerMon[]) { @@ -19486,7 +19486,7 @@ F_TRAINER_FEMALE | #line 7839 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 7840 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 7841 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -19520,7 +19520,7 @@ F_TRAINER_FEMALE | #line 7852 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 7853 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 7854 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -19554,7 +19554,7 @@ F_TRAINER_FEMALE | #line 7865 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 7866 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 7867 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -19599,7 +19599,7 @@ F_TRAINER_FEMALE | #line 7882 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 7883 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 7884 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -19633,7 +19633,7 @@ F_TRAINER_FEMALE | #line 7895 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 7896 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 7897 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -19667,7 +19667,7 @@ F_TRAINER_FEMALE | #line 7908 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 7909 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 7910 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -19712,7 +19712,7 @@ F_TRAINER_FEMALE | #line 7925 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 7926 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 7927 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -19757,7 +19757,7 @@ F_TRAINER_FEMALE | #line 7942 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 7943 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 7944 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -19802,7 +19802,7 @@ F_TRAINER_FEMALE | #line 7959 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 7960 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 7961 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -19847,7 +19847,7 @@ F_TRAINER_FEMALE | #line 7976 TRAINER_ENCOUNTER_MUSIC_FEMALE, #line 7977 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 7978 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -19888,7 +19888,7 @@ F_TRAINER_FEMALE | #line 7993 TRAINER_ENCOUNTER_MUSIC_FEMALE, #line 7994 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 7995 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -19933,7 +19933,7 @@ F_TRAINER_FEMALE | #line 8010 TRAINER_ENCOUNTER_MUSIC_FEMALE, #line 8011 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 8012 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -19974,7 +19974,7 @@ F_TRAINER_FEMALE | #line 8027 TRAINER_ENCOUNTER_MUSIC_FEMALE, #line 8028 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 8029 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -20015,7 +20015,7 @@ F_TRAINER_FEMALE | #line 8044 TRAINER_ENCOUNTER_MUSIC_FEMALE, #line 8045 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 8046 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -20056,7 +20056,7 @@ F_TRAINER_FEMALE | #line 8061 TRAINER_ENCOUNTER_MUSIC_FEMALE, #line 8062 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 8063 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -20115,7 +20115,7 @@ F_TRAINER_FEMALE | #line 8086 TRAINER_ENCOUNTER_MUSIC_FEMALE, #line 8087 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 8088 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -20174,7 +20174,7 @@ F_TRAINER_FEMALE | #line 8111 TRAINER_ENCOUNTER_MUSIC_SWIMMER, #line 8112 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 8113 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -20219,7 +20219,7 @@ F_TRAINER_FEMALE | #line 8128 TRAINER_ENCOUNTER_MUSIC_SWIMMER, #line 8129 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 8130 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -20253,7 +20253,7 @@ F_TRAINER_FEMALE | #line 8141 TRAINER_ENCOUNTER_MUSIC_SWIMMER, #line 8142 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 8143 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -20287,7 +20287,7 @@ F_TRAINER_FEMALE | #line 8154 TRAINER_ENCOUNTER_MUSIC_SWIMMER, #line 8155 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 8156 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -20332,7 +20332,7 @@ F_TRAINER_FEMALE | #line 8171 TRAINER_ENCOUNTER_MUSIC_SWIMMER, #line 8172 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 8173 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -20366,7 +20366,7 @@ F_TRAINER_FEMALE | #line 8184 TRAINER_ENCOUNTER_MUSIC_SWIMMER, #line 8185 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 8186 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -20411,7 +20411,7 @@ F_TRAINER_FEMALE | #line 8201 TRAINER_ENCOUNTER_MUSIC_SWIMMER, #line 8202 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 8203 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -20445,7 +20445,7 @@ F_TRAINER_FEMALE | #line 8214 TRAINER_ENCOUNTER_MUSIC_SWIMMER, #line 8215 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 8216 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 3, @@ -20501,7 +20501,7 @@ F_TRAINER_FEMALE | #line 8235 TRAINER_ENCOUNTER_MUSIC_SWIMMER, #line 8236 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 8237 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -20535,7 +20535,7 @@ F_TRAINER_FEMALE | #line 8248 TRAINER_ENCOUNTER_MUSIC_SWIMMER, #line 8249 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 8250 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -20569,7 +20569,7 @@ F_TRAINER_FEMALE | #line 8261 TRAINER_ENCOUNTER_MUSIC_SWIMMER, #line 8262 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 8263 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -20603,7 +20603,7 @@ F_TRAINER_FEMALE | #line 8274 TRAINER_ENCOUNTER_MUSIC_SWIMMER, #line 8275 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 8276 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -20637,7 +20637,7 @@ F_TRAINER_FEMALE | #line 8287 TRAINER_ENCOUNTER_MUSIC_SWIMMER, #line 8288 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 8289 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -20682,7 +20682,7 @@ F_TRAINER_FEMALE | #line 8304 TRAINER_ENCOUNTER_MUSIC_SWIMMER, #line 8305 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 8306 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -20716,7 +20716,7 @@ F_TRAINER_FEMALE | #line 8317 TRAINER_ENCOUNTER_MUSIC_SWIMMER, #line 8318 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 8319 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -20761,7 +20761,7 @@ F_TRAINER_FEMALE | #line 8334 TRAINER_ENCOUNTER_MUSIC_SWIMMER, #line 8335 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 8336 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -20795,7 +20795,7 @@ F_TRAINER_FEMALE | #line 8347 TRAINER_ENCOUNTER_MUSIC_SWIMMER, #line 8348 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 8349 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -20829,7 +20829,7 @@ F_TRAINER_FEMALE | #line 8360 TRAINER_ENCOUNTER_MUSIC_SWIMMER, #line 8361 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 8362 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -20863,7 +20863,7 @@ F_TRAINER_FEMALE | #line 8373 TRAINER_ENCOUNTER_MUSIC_SWIMMER, #line 8374 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 8375 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -20908,7 +20908,7 @@ F_TRAINER_FEMALE | #line 8390 TRAINER_ENCOUNTER_MUSIC_SWIMMER, #line 8391 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 8392 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -20942,7 +20942,7 @@ F_TRAINER_FEMALE | #line 8403 TRAINER_ENCOUNTER_MUSIC_SWIMMER, #line 8404 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 8405 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -20987,7 +20987,7 @@ F_TRAINER_FEMALE | #line 8420 TRAINER_ENCOUNTER_MUSIC_SWIMMER, #line 8421 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 8422 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -21032,7 +21032,7 @@ F_TRAINER_FEMALE | #line 8437 TRAINER_ENCOUNTER_MUSIC_SWIMMER, #line 8438 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 8439 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -21077,7 +21077,7 @@ F_TRAINER_FEMALE | #line 8454 TRAINER_ENCOUNTER_MUSIC_SWIMMER, #line 8455 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 8456 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -21111,7 +21111,7 @@ F_TRAINER_FEMALE | #line 8467 TRAINER_ENCOUNTER_MUSIC_SWIMMER, #line 8468 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 8469 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -21145,7 +21145,7 @@ F_TRAINER_FEMALE | #line 8480 TRAINER_ENCOUNTER_MUSIC_SWIMMER, #line 8481 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 8482 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -21179,7 +21179,7 @@ F_TRAINER_FEMALE | #line 8493 TRAINER_ENCOUNTER_MUSIC_SWIMMER, #line 8494 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 8495 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -21224,7 +21224,7 @@ F_TRAINER_FEMALE | #line 8510 TRAINER_ENCOUNTER_MUSIC_SWIMMER, #line 8511 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 8512 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 3, @@ -21280,7 +21280,7 @@ F_TRAINER_FEMALE | #line 8531 TRAINER_ENCOUNTER_MUSIC_GIRL, #line 8532 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 8533 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -21339,7 +21339,7 @@ F_TRAINER_FEMALE | #line 8556 TRAINER_ENCOUNTER_MUSIC_GIRL, #line 8557 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 8558 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -21398,7 +21398,7 @@ F_TRAINER_FEMALE | #line 8581 TRAINER_ENCOUNTER_MUSIC_GIRL, #line 8582 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 8583 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -21443,7 +21443,7 @@ F_TRAINER_FEMALE | #line 8598 TRAINER_ENCOUNTER_MUSIC_GIRL, #line 8599 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 8600 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -21488,7 +21488,7 @@ F_TRAINER_FEMALE | #line 8615 TRAINER_ENCOUNTER_MUSIC_GIRL, #line 8616 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 8617 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -21533,7 +21533,7 @@ F_TRAINER_FEMALE | #line 8632 TRAINER_ENCOUNTER_MUSIC_GIRL, #line 8633 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 8634 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 3, @@ -21587,7 +21587,7 @@ F_TRAINER_FEMALE | #line 8653 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 8654 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 8655 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -21628,7 +21628,7 @@ F_TRAINER_FEMALE | #line 8670 TRAINER_ENCOUNTER_MUSIC_GIRL, #line 8671 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 8672 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -21673,7 +21673,7 @@ F_TRAINER_FEMALE | #line 8687 TRAINER_ENCOUNTER_MUSIC_GIRL, #line 8688 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 8689 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 3, @@ -21729,7 +21729,7 @@ F_TRAINER_FEMALE | #line 8708 TRAINER_ENCOUNTER_MUSIC_GIRL, #line 8709 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 8710 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 3, @@ -21785,7 +21785,7 @@ F_TRAINER_FEMALE | #line 8729 TRAINER_ENCOUNTER_MUSIC_GIRL, #line 8730 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 8731 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 3, @@ -21841,7 +21841,7 @@ F_TRAINER_FEMALE | #line 8750 TRAINER_ENCOUNTER_MUSIC_GIRL, #line 8751 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 8752 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 3, @@ -21895,7 +21895,7 @@ F_TRAINER_FEMALE | #line 8771 TRAINER_ENCOUNTER_MUSIC_TWINS, #line 8772 - .doubleBattle = TRUE, + .battleType = TRAINER_BATTLE_TYPE_DOUBLES, #line 8773 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -21938,7 +21938,7 @@ F_TRAINER_FEMALE | #line 8788 TRAINER_ENCOUNTER_MUSIC_TWINS, #line 8789 - .doubleBattle = TRUE, + .battleType = TRAINER_BATTLE_TYPE_DOUBLES, #line 8790 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -21981,7 +21981,7 @@ F_TRAINER_FEMALE | #line 8805 TRAINER_ENCOUNTER_MUSIC_TWINS, #line 8806 - .doubleBattle = TRUE, + .battleType = TRAINER_BATTLE_TYPE_DOUBLES, #line 8807 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -22024,7 +22024,7 @@ F_TRAINER_FEMALE | #line 8822 TRAINER_ENCOUNTER_MUSIC_TWINS, #line 8823 - .doubleBattle = TRUE, + .battleType = TRAINER_BATTLE_TYPE_DOUBLES, #line 8824 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -22067,7 +22067,7 @@ F_TRAINER_FEMALE | #line 8839 TRAINER_ENCOUNTER_MUSIC_TWINS, #line 8840 - .doubleBattle = TRUE, + .battleType = TRAINER_BATTLE_TYPE_DOUBLES, #line 8841 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -22110,7 +22110,7 @@ F_TRAINER_FEMALE | #line 8856 TRAINER_ENCOUNTER_MUSIC_TWINS, #line 8857 - .doubleBattle = TRUE, + .battleType = TRAINER_BATTLE_TYPE_DOUBLES, #line 8858 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -22163,7 +22163,7 @@ F_TRAINER_FEMALE | #line 8877 TRAINER_ENCOUNTER_MUSIC_TWINS, #line 8878 - .doubleBattle = TRUE, + .battleType = TRAINER_BATTLE_TYPE_DOUBLES, #line 8879 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -22206,7 +22206,7 @@ F_TRAINER_FEMALE | #line 8894 TRAINER_ENCOUNTER_MUSIC_TWINS, #line 8895 - .doubleBattle = TRUE, + .battleType = TRAINER_BATTLE_TYPE_DOUBLES, #line 8896 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -22263,7 +22263,7 @@ F_TRAINER_FEMALE | #line 8919 TRAINER_ENCOUNTER_MUSIC_TWINS, #line 8920 - .doubleBattle = TRUE, + .battleType = TRAINER_BATTLE_TYPE_DOUBLES, #line 8921 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -22320,7 +22320,7 @@ F_TRAINER_FEMALE | #line 8944 TRAINER_ENCOUNTER_MUSIC_MALE, #line 8945 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 8946 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -22363,7 +22363,7 @@ F_TRAINER_FEMALE | #line 8961 TRAINER_ENCOUNTER_MUSIC_MALE, #line 8962 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 8963 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -22395,7 +22395,7 @@ F_TRAINER_FEMALE | #line 8974 TRAINER_ENCOUNTER_MUSIC_MALE, #line 8975 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 8976 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -22438,7 +22438,7 @@ F_TRAINER_FEMALE | #line 8991 TRAINER_ENCOUNTER_MUSIC_MALE, #line 8992 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 8993 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 3, @@ -22492,7 +22492,7 @@ F_TRAINER_FEMALE | #line 9012 TRAINER_ENCOUNTER_MUSIC_MALE, #line 9013 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 9014 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -22535,7 +22535,7 @@ F_TRAINER_FEMALE | #line 9029 TRAINER_ENCOUNTER_MUSIC_MALE, #line 9030 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 9031 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 3, @@ -22589,7 +22589,7 @@ F_TRAINER_FEMALE | #line 9050 TRAINER_ENCOUNTER_MUSIC_MALE, #line 9051 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 9052 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -22632,7 +22632,7 @@ F_TRAINER_FEMALE | #line 9067 TRAINER_ENCOUNTER_MUSIC_MALE, #line 9068 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 9069 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 3, @@ -22686,7 +22686,7 @@ F_TRAINER_FEMALE | #line 9088 TRAINER_ENCOUNTER_MUSIC_MALE, #line 9089 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 9090 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 3, @@ -22740,7 +22740,7 @@ F_TRAINER_FEMALE | #line 9109 TRAINER_ENCOUNTER_MUSIC_MALE, #line 9110 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 9111 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 3, @@ -22794,7 +22794,7 @@ F_TRAINER_FEMALE | #line 9130 TRAINER_ENCOUNTER_MUSIC_MALE, #line 9131 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 9132 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 3, @@ -22848,7 +22848,7 @@ F_TRAINER_FEMALE | #line 9151 TRAINER_ENCOUNTER_MUSIC_HIKER, #line 9152 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 9153 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -22882,7 +22882,7 @@ F_TRAINER_FEMALE | #line 9164 TRAINER_ENCOUNTER_MUSIC_TWINS, #line 9165 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 9166 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -22947,7 +22947,7 @@ F_TRAINER_FEMALE | #line 9190 .items = { ITEM_HYPER_POTION }, #line 9191 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 9192 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 1, @@ -22979,7 +22979,7 @@ F_TRAINER_FEMALE | #line 9203 TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, #line 9204 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 9205 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 1, @@ -23020,7 +23020,7 @@ F_TRAINER_FEMALE | #line 9220 TRAINER_ENCOUNTER_MUSIC_FEMALE, #line 9221 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 9222 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -23059,7 +23059,7 @@ F_TRAINER_FEMALE | #line 9237 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 9238 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 9239 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -23102,7 +23102,7 @@ F_TRAINER_FEMALE | #line 9254 TRAINER_ENCOUNTER_MUSIC_MALE, #line 9255 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 9256 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -23149,7 +23149,7 @@ F_TRAINER_FEMALE | #line 9272 .items = { ITEM_HYPER_POTION }, #line 9273 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 9274 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 1, @@ -23190,7 +23190,7 @@ F_TRAINER_FEMALE | #line 9289 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 9290 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 9291 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -23233,7 +23233,7 @@ F_TRAINER_FEMALE | #line 9306 TRAINER_ENCOUNTER_MUSIC_MALE, #line 9307 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 9308 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -23265,7 +23265,7 @@ F_TRAINER_FEMALE | #line 9319 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 9320 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 9321 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -23308,7 +23308,7 @@ F_TRAINER_FEMALE | #line 9336 TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, #line 9337 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 9338 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -23351,7 +23351,7 @@ F_TRAINER_FEMALE | #line 9353 TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, #line 9354 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 9355 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -23394,7 +23394,7 @@ F_TRAINER_FEMALE | #line 9370 TRAINER_ENCOUNTER_MUSIC_MAGMA, #line 9371 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 9372 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 3, @@ -23448,7 +23448,7 @@ F_TRAINER_FEMALE | #line 9391 TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, #line 9392 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 9393 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -23491,7 +23491,7 @@ F_TRAINER_FEMALE | #line 9408 TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, #line 9409 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 9410 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -23534,7 +23534,7 @@ F_TRAINER_FEMALE | #line 9425 TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, #line 9426 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 9427 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -23577,7 +23577,7 @@ F_TRAINER_FEMALE | #line 9442 TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, #line 9443 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 9444 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -23622,7 +23622,7 @@ F_TRAINER_FEMALE | #line 9460 .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, #line 9461 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 9462 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 5, @@ -23733,7 +23733,7 @@ F_TRAINER_FEMALE | #line 9509 TRAINER_ENCOUNTER_MUSIC_MALE, #line 9510 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 9511 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 1, @@ -23765,7 +23765,7 @@ F_TRAINER_FEMALE | #line 9522 TRAINER_ENCOUNTER_MUSIC_MALE, #line 9523 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 9524 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 3, @@ -23819,7 +23819,7 @@ F_TRAINER_FEMALE | #line 9543 TRAINER_ENCOUNTER_MUSIC_MALE, #line 9544 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 9545 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 3, @@ -23873,7 +23873,7 @@ F_TRAINER_FEMALE | #line 9564 TRAINER_ENCOUNTER_MUSIC_MALE, #line 9565 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 9566 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_FORCE_SETUP_FIRST_TURN, .partySize = 1, @@ -23905,7 +23905,7 @@ F_TRAINER_FEMALE | #line 9577 TRAINER_ENCOUNTER_MUSIC_MALE, #line 9578 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 9579 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 3, @@ -23959,7 +23959,7 @@ F_TRAINER_FEMALE | #line 9598 TRAINER_ENCOUNTER_MUSIC_MALE, #line 9599 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 9600 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 3, @@ -24013,7 +24013,7 @@ F_TRAINER_FEMALE | #line 9619 TRAINER_ENCOUNTER_MUSIC_MALE, #line 9620 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 9621 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 1, @@ -24045,7 +24045,7 @@ F_TRAINER_FEMALE | #line 9632 TRAINER_ENCOUNTER_MUSIC_MALE, #line 9633 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 9634 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 3, @@ -24099,7 +24099,7 @@ F_TRAINER_FEMALE | #line 9653 TRAINER_ENCOUNTER_MUSIC_MALE, #line 9654 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 9655 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 3, @@ -24155,7 +24155,7 @@ F_TRAINER_FEMALE | #line 9674 TRAINER_ENCOUNTER_MUSIC_FEMALE, #line 9675 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 9676 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 1, @@ -24189,7 +24189,7 @@ F_TRAINER_FEMALE | #line 9687 TRAINER_ENCOUNTER_MUSIC_FEMALE, #line 9688 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 9689 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 3, @@ -24245,7 +24245,7 @@ F_TRAINER_FEMALE | #line 9708 TRAINER_ENCOUNTER_MUSIC_FEMALE, #line 9709 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 9710 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 3, @@ -24301,7 +24301,7 @@ F_TRAINER_FEMALE | #line 9729 TRAINER_ENCOUNTER_MUSIC_FEMALE, #line 9730 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 9731 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 1, @@ -24335,7 +24335,7 @@ F_TRAINER_FEMALE | #line 9742 TRAINER_ENCOUNTER_MUSIC_FEMALE, #line 9743 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 9744 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 3, @@ -24391,7 +24391,7 @@ F_TRAINER_FEMALE | #line 9763 TRAINER_ENCOUNTER_MUSIC_FEMALE, #line 9764 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 9765 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 3, @@ -24447,7 +24447,7 @@ F_TRAINER_FEMALE | #line 9784 TRAINER_ENCOUNTER_MUSIC_FEMALE, #line 9785 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 9786 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 1, @@ -24481,7 +24481,7 @@ F_TRAINER_FEMALE | #line 9797 TRAINER_ENCOUNTER_MUSIC_FEMALE, #line 9798 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 9799 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 3, @@ -24537,7 +24537,7 @@ F_TRAINER_FEMALE | #line 9818 TRAINER_ENCOUNTER_MUSIC_FEMALE, #line 9819 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 9820 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 3, @@ -24591,7 +24591,7 @@ F_TRAINER_FEMALE | #line 9839 TRAINER_ENCOUNTER_MUSIC_MALE, #line 9840 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 9841 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 6, @@ -24678,7 +24678,7 @@ F_TRAINER_FEMALE | #line 9872 TRAINER_ENCOUNTER_MUSIC_MALE, #line 9873 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 9874 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -24710,7 +24710,7 @@ F_TRAINER_FEMALE | #line 9885 TRAINER_ENCOUNTER_MUSIC_COOL, #line 9886 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 9887 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 2, @@ -24767,7 +24767,7 @@ F_TRAINER_FEMALE | #line 9910 TRAINER_ENCOUNTER_MUSIC_MALE, #line 9911 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 9912 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 6, @@ -24854,7 +24854,7 @@ F_TRAINER_FEMALE | #line 9943 TRAINER_ENCOUNTER_MUSIC_MALE, #line 9944 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 9945 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 6, @@ -24941,7 +24941,7 @@ F_TRAINER_FEMALE | #line 9976 TRAINER_ENCOUNTER_MUSIC_MALE, #line 9977 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 9978 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 6, @@ -25028,7 +25028,7 @@ F_TRAINER_FEMALE | #line 10009 TRAINER_ENCOUNTER_MUSIC_MALE, #line 10010 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 10011 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 6, @@ -25117,7 +25117,7 @@ F_TRAINER_FEMALE | #line 10042 TRAINER_ENCOUNTER_MUSIC_FEMALE, #line 10043 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 10044 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 6, @@ -25208,7 +25208,7 @@ F_TRAINER_FEMALE | #line 10076 .items = { ITEM_FULL_RESTORE }, #line 10077 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 10078 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 2, @@ -25251,7 +25251,7 @@ F_TRAINER_FEMALE | #line 10093 TRAINER_ENCOUNTER_MUSIC_HIKER, #line 10094 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 10095 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -25285,7 +25285,7 @@ F_TRAINER_FEMALE | #line 10106 TRAINER_ENCOUNTER_MUSIC_FEMALE, #line 10107 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 10108 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 6, @@ -25374,7 +25374,7 @@ F_TRAINER_FEMALE | #line 10139 TRAINER_ENCOUNTER_MUSIC_FEMALE, #line 10140 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 10141 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 6, @@ -25463,7 +25463,7 @@ F_TRAINER_FEMALE | #line 10172 TRAINER_ENCOUNTER_MUSIC_FEMALE, #line 10173 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 10174 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 6, @@ -25552,7 +25552,7 @@ F_TRAINER_FEMALE | #line 10205 TRAINER_ENCOUNTER_MUSIC_FEMALE, #line 10206 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 10207 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 6, @@ -25641,7 +25641,7 @@ F_TRAINER_FEMALE | #line 10239 .items = { ITEM_FULL_RESTORE }, #line 10240 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 10241 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 1, @@ -25675,7 +25675,7 @@ F_TRAINER_FEMALE | #line 10253 .items = { ITEM_FULL_RESTORE }, #line 10254 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 10255 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 3, @@ -25731,7 +25731,7 @@ F_TRAINER_FEMALE | #line 10275 .items = { ITEM_FULL_RESTORE }, #line 10276 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 10277 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 1, @@ -25765,7 +25765,7 @@ F_TRAINER_FEMALE | #line 10289 .items = { ITEM_FULL_RESTORE }, #line 10290 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 10291 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_FORCE_SETUP_FIRST_TURN, .partySize = 1, @@ -25799,7 +25799,7 @@ F_TRAINER_FEMALE | #line 10303 .items = { ITEM_FULL_RESTORE }, #line 10304 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 10305 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 1, @@ -25833,7 +25833,7 @@ F_TRAINER_FEMALE | #line 10317 .items = { ITEM_FULL_RESTORE }, #line 10318 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 10319 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_FORCE_SETUP_FIRST_TURN, .partySize = 1, @@ -25867,7 +25867,7 @@ F_TRAINER_FEMALE | #line 10331 .items = { ITEM_FULL_RESTORE }, #line 10332 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 10333 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 2, @@ -25914,7 +25914,7 @@ F_TRAINER_FEMALE | #line 10349 .items = { ITEM_FULL_RESTORE }, #line 10350 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 10351 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_FORCE_SETUP_FIRST_TURN, .partySize = 2, @@ -25961,7 +25961,7 @@ F_TRAINER_FEMALE | #line 10367 .items = { ITEM_FULL_RESTORE }, #line 10368 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 10369 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_FORCE_SETUP_FIRST_TURN, .partySize = 3, @@ -26019,7 +26019,7 @@ F_TRAINER_FEMALE | #line 10389 .items = { ITEM_FULL_RESTORE }, #line 10390 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 10391 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 2, @@ -26066,7 +26066,7 @@ F_TRAINER_FEMALE | #line 10407 .items = { ITEM_FULL_RESTORE }, #line 10408 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 10409 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_FORCE_SETUP_FIRST_TURN, .partySize = 2, @@ -26113,7 +26113,7 @@ F_TRAINER_FEMALE | #line 10425 .items = { ITEM_FULL_RESTORE }, #line 10426 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 10427 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 2, @@ -26160,7 +26160,7 @@ F_TRAINER_FEMALE | #line 10443 .items = { ITEM_FULL_RESTORE }, #line 10444 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 10445 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_FORCE_SETUP_FIRST_TURN, .partySize = 2, @@ -26207,7 +26207,7 @@ F_TRAINER_FEMALE | #line 10461 .items = { ITEM_FULL_RESTORE }, #line 10462 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 10463 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 2, @@ -26250,7 +26250,7 @@ F_TRAINER_FEMALE | #line 10478 TRAINER_ENCOUNTER_MUSIC_MALE, #line 10479 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 10480 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -26282,7 +26282,7 @@ F_TRAINER_FEMALE | #line 10491 TRAINER_ENCOUNTER_MUSIC_AQUA, #line 10492 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 10493 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -26327,7 +26327,7 @@ F_TRAINER_FEMALE | #line 10508 TRAINER_ENCOUNTER_MUSIC_AQUA, #line 10509 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 10510 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -26372,7 +26372,7 @@ F_TRAINER_FEMALE | #line 10525 TRAINER_ENCOUNTER_MUSIC_AQUA, #line 10526 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 10527 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -26415,7 +26415,7 @@ F_TRAINER_FEMALE | #line 10542 TRAINER_ENCOUNTER_MUSIC_MAGMA, #line 10543 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 10544 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -26458,7 +26458,7 @@ F_TRAINER_FEMALE | #line 10559 TRAINER_ENCOUNTER_MUSIC_HIKER, #line 10560 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 10561 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -26501,7 +26501,7 @@ F_TRAINER_FEMALE | #line 10576 TRAINER_ENCOUNTER_MUSIC_MALE, #line 10577 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 10578 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -26535,7 +26535,7 @@ F_TRAINER_FEMALE | #line 10589 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 10590 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 10591 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -26567,7 +26567,7 @@ F_TRAINER_FEMALE | #line 10602 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 10603 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 10604 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -26601,7 +26601,7 @@ F_TRAINER_FEMALE | #line 10615 TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, #line 10616 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 10617 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -26633,7 +26633,7 @@ F_TRAINER_FEMALE | #line 10628 TRAINER_ENCOUNTER_MUSIC_SWIMMER, #line 10629 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 10630 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -26669,7 +26669,7 @@ F_TRAINER_FEMALE | #line 10642 .items = { ITEM_HYPER_POTION }, #line 10643 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 10644 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 2, @@ -26723,7 +26723,7 @@ F_TRAINER_FEMALE | #line 10664 TRAINER_ENCOUNTER_MUSIC_SWIMMER, #line 10665 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 10666 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -26755,7 +26755,7 @@ F_TRAINER_FEMALE | #line 10677 TRAINER_ENCOUNTER_MUSIC_MAGMA, #line 10678 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 10679 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -26787,7 +26787,7 @@ F_TRAINER_FEMALE | #line 10690 TRAINER_ENCOUNTER_MUSIC_SWIMMER, #line 10691 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 10692 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -26821,7 +26821,7 @@ F_TRAINER_FEMALE | #line 10703 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 10704 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 10705 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -26853,7 +26853,7 @@ F_TRAINER_FEMALE | #line 10716 TRAINER_ENCOUNTER_MUSIC_RICH, #line 10717 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 10718 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -26887,7 +26887,7 @@ F_TRAINER_FEMALE | #line 10729 TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, #line 10730 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 10731 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -26919,7 +26919,7 @@ F_TRAINER_FEMALE | #line 10742 TRAINER_ENCOUNTER_MUSIC_RICH, #line 10743 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 10744 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -26951,7 +26951,7 @@ F_TRAINER_FEMALE | #line 10755 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 10756 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 10757 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -26985,7 +26985,7 @@ F_TRAINER_FEMALE | #line 10768 TRAINER_ENCOUNTER_MUSIC_MAGMA, #line 10769 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 10770 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -27028,7 +27028,7 @@ F_TRAINER_FEMALE | #line 10785 TRAINER_ENCOUNTER_MUSIC_MAGMA, #line 10786 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 10787 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -27060,7 +27060,7 @@ F_TRAINER_FEMALE | #line 10798 TRAINER_ENCOUNTER_MUSIC_MAGMA, #line 10799 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 10800 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -27092,7 +27092,7 @@ F_TRAINER_FEMALE | #line 10811 TRAINER_ENCOUNTER_MUSIC_MAGMA, #line 10812 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 10813 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -27124,7 +27124,7 @@ F_TRAINER_FEMALE | #line 10824 TRAINER_ENCOUNTER_MUSIC_MAGMA, #line 10825 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 10826 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -27158,7 +27158,7 @@ F_TRAINER_FEMALE | #line 10837 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 10838 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 10839 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -27190,7 +27190,7 @@ F_TRAINER_FEMALE | #line 10850 TRAINER_ENCOUNTER_MUSIC_MALE, #line 10851 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 10852 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -27233,7 +27233,7 @@ F_TRAINER_FEMALE | #line 10867 TRAINER_ENCOUNTER_MUSIC_MALE, #line 10868 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 10869 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -27276,7 +27276,7 @@ F_TRAINER_FEMALE | #line 10884 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 10885 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 10886 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 2, @@ -27321,7 +27321,7 @@ F_TRAINER_FEMALE | #line 10901 TRAINER_ENCOUNTER_MUSIC_SWIMMER, #line 10902 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 10903 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -27355,7 +27355,7 @@ F_TRAINER_FEMALE | #line 10914 TRAINER_ENCOUNTER_MUSIC_AQUA, #line 10915 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 10916 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -27398,7 +27398,7 @@ F_TRAINER_FEMALE | #line 10931 TRAINER_ENCOUNTER_MUSIC_MAGMA, #line 10932 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 10933 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 4, @@ -27465,7 +27465,7 @@ F_TRAINER_FEMALE | #line 10957 .items = { ITEM_HYPER_POTION }, #line 10958 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 10959 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_FORCE_SETUP_FIRST_TURN, .partySize = 2, @@ -27508,7 +27508,7 @@ F_TRAINER_FEMALE | #line 10974 TRAINER_ENCOUNTER_MUSIC_MALE, #line 10975 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 10976 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 2, @@ -27553,7 +27553,7 @@ F_TRAINER_FEMALE | #line 10991 TRAINER_ENCOUNTER_MUSIC_FEMALE, #line 10992 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 10993 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_FORCE_SETUP_FIRST_TURN, .partySize = 2, @@ -27598,7 +27598,7 @@ F_TRAINER_FEMALE | #line 11009 .items = { ITEM_SUPER_POTION, ITEM_SUPER_POTION }, #line 11010 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 11011 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 3, @@ -27654,7 +27654,7 @@ F_TRAINER_FEMALE | #line 11031 .items = { ITEM_SUPER_POTION, ITEM_SUPER_POTION }, #line 11032 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 11033 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 3, @@ -27710,7 +27710,7 @@ F_TRAINER_FEMALE | #line 11052 TRAINER_ENCOUNTER_MUSIC_FEMALE, #line 11053 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 11054 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -27755,7 +27755,7 @@ F_TRAINER_FEMALE | #line 11069 TRAINER_ENCOUNTER_MUSIC_FEMALE, #line 11070 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 11071 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -27800,7 +27800,7 @@ F_TRAINER_FEMALE | #line 11086 TRAINER_ENCOUNTER_MUSIC_FEMALE, #line 11087 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 11088 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -27834,7 +27834,7 @@ F_TRAINER_FEMALE | #line 11099 TRAINER_ENCOUNTER_MUSIC_FEMALE, #line 11100 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 11101 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 3, @@ -27890,7 +27890,7 @@ F_TRAINER_FEMALE | #line 11120 TRAINER_ENCOUNTER_MUSIC_FEMALE, #line 11121 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 11122 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -27935,7 +27935,7 @@ F_TRAINER_FEMALE | #line 11137 TRAINER_ENCOUNTER_MUSIC_FEMALE, #line 11138 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 11139 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -27980,7 +27980,7 @@ F_TRAINER_FEMALE | #line 11154 TRAINER_ENCOUNTER_MUSIC_FEMALE, #line 11155 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 11156 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -28025,7 +28025,7 @@ F_TRAINER_FEMALE | #line 11171 TRAINER_ENCOUNTER_MUSIC_FEMALE, #line 11172 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 11173 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 3, @@ -28081,7 +28081,7 @@ F_TRAINER_FEMALE | #line 11192 TRAINER_ENCOUNTER_MUSIC_FEMALE, #line 11193 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 11194 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -28115,7 +28115,7 @@ F_TRAINER_FEMALE | #line 11205 TRAINER_ENCOUNTER_MUSIC_FEMALE, #line 11206 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 11207 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 3, @@ -28171,7 +28171,7 @@ F_TRAINER_FEMALE | #line 11226 TRAINER_ENCOUNTER_MUSIC_FEMALE, #line 11227 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 11228 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -28205,7 +28205,7 @@ F_TRAINER_FEMALE | #line 11239 TRAINER_ENCOUNTER_MUSIC_FEMALE, #line 11240 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 11241 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -28248,7 +28248,7 @@ F_TRAINER_FEMALE | #line 11256 TRAINER_ENCOUNTER_MUSIC_MALE, #line 11257 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 11258 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -28291,7 +28291,7 @@ F_TRAINER_FEMALE | #line 11273 TRAINER_ENCOUNTER_MUSIC_MALE, #line 11274 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 11275 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 4, @@ -28356,7 +28356,7 @@ F_TRAINER_FEMALE | #line 11298 TRAINER_ENCOUNTER_MUSIC_MALE, #line 11299 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 11300 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -28399,7 +28399,7 @@ F_TRAINER_FEMALE | #line 11315 TRAINER_ENCOUNTER_MUSIC_MALE, #line 11316 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 11317 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -28442,7 +28442,7 @@ F_TRAINER_FEMALE | #line 11332 TRAINER_ENCOUNTER_MUSIC_MALE, #line 11333 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 11334 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -28485,7 +28485,7 @@ F_TRAINER_FEMALE | #line 11349 TRAINER_ENCOUNTER_MUSIC_MALE, #line 11350 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 11351 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -28517,7 +28517,7 @@ F_TRAINER_FEMALE | #line 11362 TRAINER_ENCOUNTER_MUSIC_MALE, #line 11363 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 11364 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -28560,7 +28560,7 @@ F_TRAINER_FEMALE | #line 11379 TRAINER_ENCOUNTER_MUSIC_MALE, #line 11380 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 11381 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -28592,7 +28592,7 @@ F_TRAINER_FEMALE | #line 11392 TRAINER_ENCOUNTER_MUSIC_MALE, #line 11393 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 11394 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -28635,7 +28635,7 @@ F_TRAINER_FEMALE | #line 11409 TRAINER_ENCOUNTER_MUSIC_MALE, #line 11410 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 11411 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 3, @@ -28689,7 +28689,7 @@ F_TRAINER_FEMALE | #line 11430 TRAINER_ENCOUNTER_MUSIC_MALE, #line 11431 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 11432 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 4, @@ -28754,7 +28754,7 @@ F_TRAINER_FEMALE | #line 11455 TRAINER_ENCOUNTER_MUSIC_HIKER, #line 11456 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 11457 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -28797,7 +28797,7 @@ F_TRAINER_FEMALE | #line 11472 TRAINER_ENCOUNTER_MUSIC_HIKER, #line 11473 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 11474 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 3, @@ -28851,7 +28851,7 @@ F_TRAINER_FEMALE | #line 11493 TRAINER_ENCOUNTER_MUSIC_HIKER, #line 11494 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 11495 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -28894,7 +28894,7 @@ F_TRAINER_FEMALE | #line 11510 TRAINER_ENCOUNTER_MUSIC_HIKER, #line 11511 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 11512 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -28937,7 +28937,7 @@ F_TRAINER_FEMALE | #line 11527 TRAINER_ENCOUNTER_MUSIC_HIKER, #line 11528 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 11529 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 3, @@ -28991,7 +28991,7 @@ F_TRAINER_FEMALE | #line 11548 TRAINER_ENCOUNTER_MUSIC_HIKER, #line 11549 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 11550 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -29023,7 +29023,7 @@ F_TRAINER_FEMALE | #line 11561 TRAINER_ENCOUNTER_MUSIC_HIKER, #line 11562 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 11563 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -29066,7 +29066,7 @@ F_TRAINER_FEMALE | #line 11578 TRAINER_ENCOUNTER_MUSIC_HIKER, #line 11579 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 11580 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -29103,7 +29103,7 @@ F_TRAINER_FEMALE | #line 11593 TRAINER_ENCOUNTER_MUSIC_HIKER, #line 11594 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 11595 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -29156,7 +29156,7 @@ F_TRAINER_FEMALE | #line 11614 TRAINER_ENCOUNTER_MUSIC_HIKER, #line 11615 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 11616 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 3, @@ -29210,7 +29210,7 @@ F_TRAINER_FEMALE | #line 11635 TRAINER_ENCOUNTER_MUSIC_HIKER, #line 11636 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 11637 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 4, @@ -29275,7 +29275,7 @@ F_TRAINER_FEMALE | #line 11660 TRAINER_ENCOUNTER_MUSIC_HIKER, #line 11661 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 11662 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 4, @@ -29340,7 +29340,7 @@ F_TRAINER_FEMALE | #line 11685 TRAINER_ENCOUNTER_MUSIC_HIKER, #line 11686 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 11687 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 4, @@ -29405,7 +29405,7 @@ F_TRAINER_FEMALE | #line 11710 TRAINER_ENCOUNTER_MUSIC_HIKER, #line 11711 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 11712 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 4, @@ -29470,7 +29470,7 @@ F_TRAINER_FEMALE | #line 11735 TRAINER_ENCOUNTER_MUSIC_GIRL, #line 11736 - .doubleBattle = TRUE, + .battleType = TRAINER_BATTLE_TYPE_DOUBLES, #line 11737 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -29513,7 +29513,7 @@ F_TRAINER_FEMALE | #line 11752 TRAINER_ENCOUNTER_MUSIC_GIRL, #line 11753 - .doubleBattle = TRUE, + .battleType = TRAINER_BATTLE_TYPE_DOUBLES, #line 11754 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -29556,7 +29556,7 @@ F_TRAINER_FEMALE | #line 11769 TRAINER_ENCOUNTER_MUSIC_GIRL, #line 11770 - .doubleBattle = TRUE, + .battleType = TRAINER_BATTLE_TYPE_DOUBLES, #line 11771 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -29599,7 +29599,7 @@ F_TRAINER_FEMALE | #line 11786 TRAINER_ENCOUNTER_MUSIC_GIRL, #line 11787 - .doubleBattle = TRUE, + .battleType = TRAINER_BATTLE_TYPE_DOUBLES, #line 11788 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -29642,7 +29642,7 @@ F_TRAINER_FEMALE | #line 11803 TRAINER_ENCOUNTER_MUSIC_GIRL, #line 11804 - .doubleBattle = TRUE, + .battleType = TRAINER_BATTLE_TYPE_DOUBLES, #line 11805 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -29685,7 +29685,7 @@ F_TRAINER_FEMALE | #line 11820 TRAINER_ENCOUNTER_MUSIC_GIRL, #line 11821 - .doubleBattle = TRUE, + .battleType = TRAINER_BATTLE_TYPE_DOUBLES, #line 11822 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -29728,7 +29728,7 @@ F_TRAINER_FEMALE | #line 11837 TRAINER_ENCOUNTER_MUSIC_GIRL, #line 11838 - .doubleBattle = TRUE, + .battleType = TRAINER_BATTLE_TYPE_DOUBLES, #line 11839 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -29773,7 +29773,7 @@ F_TRAINER_FEMALE | #line 11854 TRAINER_ENCOUNTER_MUSIC_FEMALE, #line 11855 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 11856 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -29807,7 +29807,7 @@ F_TRAINER_FEMALE | #line 11868 .items = { ITEM_HYPER_POTION }, #line 11869 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 11870 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 1, @@ -29848,7 +29848,7 @@ F_TRAINER_FEMALE | #line 11885 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 11886 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 11887 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -29907,7 +29907,7 @@ F_TRAINER_FEMALE | #line 11910 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 11911 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 11912 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -29946,7 +29946,7 @@ F_TRAINER_FEMALE | #line 11927 TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, #line 11928 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 11929 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT, .partySize = 2, @@ -30003,7 +30003,7 @@ F_TRAINER_FEMALE | #line 11952 TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, #line 11953 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 11954 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT, .partySize = 2, @@ -30060,7 +30060,7 @@ F_TRAINER_FEMALE | #line 11977 TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, #line 11978 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 11979 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT, .partySize = 2, @@ -30117,7 +30117,7 @@ F_TRAINER_FEMALE | #line 12002 TRAINER_ENCOUNTER_MUSIC_MALE, #line 12003 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 12004 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -30162,7 +30162,7 @@ F_TRAINER_FEMALE | #line 12019 TRAINER_ENCOUNTER_MUSIC_GIRL, #line 12020 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 12021 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 3, @@ -30216,7 +30216,7 @@ F_TRAINER_FEMALE | #line 12040 TRAINER_ENCOUNTER_MUSIC_MALE, #line 12041 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 12042 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 1, @@ -30250,7 +30250,7 @@ F_TRAINER_FEMALE | #line 12054 .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, #line 12055 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 12056 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 5, @@ -30363,7 +30363,7 @@ F_TRAINER_FEMALE | #line 12104 .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, #line 12105 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 12106 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 5, @@ -30476,7 +30476,7 @@ F_TRAINER_FEMALE | #line 12154 .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, #line 12155 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 12156 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 5, @@ -30589,7 +30589,7 @@ F_TRAINER_FEMALE | #line 12204 .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, #line 12205 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 12206 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 5, @@ -30700,7 +30700,7 @@ F_TRAINER_FEMALE | #line 12253 TRAINER_ENCOUNTER_MUSIC_MALE, #line 12254 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 12255 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 4, @@ -30765,7 +30765,7 @@ F_TRAINER_FEMALE | #line 12278 TRAINER_ENCOUNTER_MUSIC_MALE, #line 12279 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 12280 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 4, @@ -30830,7 +30830,7 @@ F_TRAINER_FEMALE | #line 12303 TRAINER_ENCOUNTER_MUSIC_MALE, #line 12304 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 12305 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 4, @@ -30897,7 +30897,7 @@ F_TRAINER_FEMALE | #line 12328 TRAINER_ENCOUNTER_MUSIC_FEMALE, #line 12329 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 12330 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 4, @@ -30964,7 +30964,7 @@ F_TRAINER_FEMALE | #line 12353 TRAINER_ENCOUNTER_MUSIC_FEMALE, #line 12354 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 12355 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 4, @@ -31031,7 +31031,7 @@ F_TRAINER_FEMALE | #line 12378 TRAINER_ENCOUNTER_MUSIC_FEMALE, #line 12379 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 12380 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 4, @@ -31096,7 +31096,7 @@ F_TRAINER_FEMALE | #line 12403 TRAINER_ENCOUNTER_MUSIC_HIKER, #line 12404 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 12405 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 3, @@ -31150,7 +31150,7 @@ F_TRAINER_FEMALE | #line 12424 TRAINER_ENCOUNTER_MUSIC_HIKER, #line 12425 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 12426 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -31193,7 +31193,7 @@ F_TRAINER_FEMALE | #line 12441 TRAINER_ENCOUNTER_MUSIC_HIKER, #line 12442 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 12443 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 3, @@ -31251,7 +31251,7 @@ F_TRAINER_FEMALE | #line 12463 .items = { ITEM_FULL_RESTORE }, #line 12464 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 12465 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 2, @@ -31296,7 +31296,7 @@ F_TRAINER_FEMALE | #line 12481 .items = { ITEM_HYPER_POTION }, #line 12482 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 12483 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 2, @@ -31339,7 +31339,7 @@ F_TRAINER_FEMALE | #line 12498 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 12499 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 12500 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -31371,7 +31371,7 @@ F_TRAINER_FEMALE | #line 12511 TRAINER_ENCOUNTER_MUSIC_HIKER, #line 12512 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 12513 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 3, @@ -31425,7 +31425,7 @@ F_TRAINER_FEMALE | #line 12532 TRAINER_ENCOUNTER_MUSIC_COOL, #line 12533 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 12534 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -31468,7 +31468,7 @@ F_TRAINER_FEMALE | #line 12549 TRAINER_ENCOUNTER_MUSIC_SWIMMER, #line 12550 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 12551 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -31513,7 +31513,7 @@ F_TRAINER_FEMALE | #line 12566 TRAINER_ENCOUNTER_MUSIC_SWIMMER, #line 12567 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 12568 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -31545,7 +31545,7 @@ F_TRAINER_FEMALE | #line 12579 TRAINER_ENCOUNTER_MUSIC_TWINS, #line 12580 - .doubleBattle = TRUE, + .battleType = TRAINER_BATTLE_TYPE_DOUBLES, #line 12581 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -31588,7 +31588,7 @@ F_TRAINER_FEMALE | #line 12596 TRAINER_ENCOUNTER_MUSIC_TWINS, #line 12597 - .doubleBattle = TRUE, + .battleType = TRAINER_BATTLE_TYPE_DOUBLES, #line 12598 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -31645,7 +31645,7 @@ F_TRAINER_FEMALE | #line 12621 TRAINER_ENCOUNTER_MUSIC_TWINS, #line 12622 - .doubleBattle = TRUE, + .battleType = TRAINER_BATTLE_TYPE_DOUBLES, #line 12623 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -31702,7 +31702,7 @@ F_TRAINER_FEMALE | #line 12646 TRAINER_ENCOUNTER_MUSIC_GIRL, #line 12647 - .doubleBattle = TRUE, + .battleType = TRAINER_BATTLE_TYPE_DOUBLES, #line 12648 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -31759,7 +31759,7 @@ F_TRAINER_FEMALE | #line 12671 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 12672 - .doubleBattle = TRUE, + .battleType = TRAINER_BATTLE_TYPE_DOUBLES, #line 12673 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 2, @@ -31816,7 +31816,7 @@ F_TRAINER_FEMALE | #line 12696 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 12697 - .doubleBattle = TRUE, + .battleType = TRAINER_BATTLE_TYPE_DOUBLES, #line 12698 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 2, @@ -31873,7 +31873,7 @@ F_TRAINER_FEMALE | #line 12721 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 12722 - .doubleBattle = TRUE, + .battleType = TRAINER_BATTLE_TYPE_DOUBLES, #line 12723 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 2, @@ -31930,7 +31930,7 @@ F_TRAINER_FEMALE | #line 12746 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 12747 - .doubleBattle = TRUE, + .battleType = TRAINER_BATTLE_TYPE_DOUBLES, #line 12748 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_FORCE_SETUP_FIRST_TURN, .partySize = 2, @@ -31987,7 +31987,7 @@ F_TRAINER_FEMALE | #line 12771 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 12772 - .doubleBattle = TRUE, + .battleType = TRAINER_BATTLE_TYPE_DOUBLES, #line 12773 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 2, @@ -32044,7 +32044,7 @@ F_TRAINER_FEMALE | #line 12796 TRAINER_ENCOUNTER_MUSIC_SWIMMER, #line 12797 - .doubleBattle = TRUE, + .battleType = TRAINER_BATTLE_TYPE_DOUBLES, #line 12798 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -32087,7 +32087,7 @@ F_TRAINER_FEMALE | #line 12813 TRAINER_ENCOUNTER_MUSIC_SWIMMER, #line 12814 - .doubleBattle = TRUE, + .battleType = TRAINER_BATTLE_TYPE_DOUBLES, #line 12815 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -32130,7 +32130,7 @@ F_TRAINER_FEMALE | #line 12830 TRAINER_ENCOUNTER_MUSIC_SWIMMER, #line 12831 - .doubleBattle = TRUE, + .battleType = TRAINER_BATTLE_TYPE_DOUBLES, #line 12832 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -32173,7 +32173,7 @@ F_TRAINER_FEMALE | #line 12847 TRAINER_ENCOUNTER_MUSIC_SWIMMER, #line 12848 - .doubleBattle = TRUE, + .battleType = TRAINER_BATTLE_TYPE_DOUBLES, #line 12849 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -32216,7 +32216,7 @@ F_TRAINER_FEMALE | #line 12864 TRAINER_ENCOUNTER_MUSIC_SWIMMER, #line 12865 - .doubleBattle = TRUE, + .battleType = TRAINER_BATTLE_TYPE_DOUBLES, #line 12866 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -32259,7 +32259,7 @@ F_TRAINER_FEMALE | #line 12881 TRAINER_ENCOUNTER_MUSIC_SWIMMER, #line 12882 - .doubleBattle = TRUE, + .battleType = TRAINER_BATTLE_TYPE_DOUBLES, #line 12883 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -32302,7 +32302,7 @@ F_TRAINER_FEMALE | #line 12898 TRAINER_ENCOUNTER_MUSIC_SWIMMER, #line 12899 - .doubleBattle = TRUE, + .battleType = TRAINER_BATTLE_TYPE_DOUBLES, #line 12900 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -32345,7 +32345,7 @@ F_TRAINER_FEMALE | #line 12915 TRAINER_ENCOUNTER_MUSIC_HIKER, #line 12916 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 12917 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 4, @@ -32410,7 +32410,7 @@ F_TRAINER_FEMALE | #line 12940 TRAINER_ENCOUNTER_MUSIC_RICH, #line 12941 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 12942 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -32459,7 +32459,7 @@ F_TRAINER_FEMALE | #line 12958 .items = { ITEM_FULL_RESTORE }, #line 12959 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 12960 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -32504,7 +32504,7 @@ F_TRAINER_FEMALE | #line 12975 TRAINER_ENCOUNTER_MUSIC_HIKER, #line 12976 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 12977 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -32538,7 +32538,7 @@ F_TRAINER_FEMALE | #line 12988 TRAINER_ENCOUNTER_MUSIC_GIRL, #line 12989 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 12990 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -32570,7 +32570,7 @@ F_TRAINER_FEMALE | #line 13001 TRAINER_ENCOUNTER_MUSIC_GIRL, #line 13002 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 13003 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -32613,7 +32613,7 @@ F_TRAINER_FEMALE | #line 13018 TRAINER_ENCOUNTER_MUSIC_TWINS, #line 13019 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 13020 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -32660,7 +32660,7 @@ F_TRAINER_FEMALE | #line 13035 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 13036 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 13037 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -32705,7 +32705,7 @@ F_TRAINER_FEMALE | #line 13052 TRAINER_ENCOUNTER_MUSIC_FEMALE, #line 13053 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 13054 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -32737,7 +32737,7 @@ F_TRAINER_FEMALE | #line 13065 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 13066 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 13067 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -32769,7 +32769,7 @@ F_TRAINER_FEMALE | #line 13078 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 13079 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 13080 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -32801,7 +32801,7 @@ F_TRAINER_FEMALE | #line 13091 TRAINER_ENCOUNTER_MUSIC_MALE, #line 13092 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 13093 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -32835,7 +32835,7 @@ F_TRAINER_FEMALE | #line 13104 TRAINER_ENCOUNTER_MUSIC_FEMALE, #line 13105 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 13106 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -32869,7 +32869,7 @@ F_TRAINER_FEMALE | #line 13117 TRAINER_ENCOUNTER_MUSIC_GIRL, #line 13118 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 13119 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -32901,7 +32901,7 @@ F_TRAINER_FEMALE | #line 13130 TRAINER_ENCOUNTER_MUSIC_HIKER, #line 13131 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 13132 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -32935,7 +32935,7 @@ F_TRAINER_FEMALE | #line 13143 TRAINER_ENCOUNTER_MUSIC_GIRL, #line 13144 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 13145 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -32978,7 +32978,7 @@ F_TRAINER_FEMALE | #line 13160 TRAINER_ENCOUNTER_MUSIC_COOL, #line 13161 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 13162 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -33021,7 +33021,7 @@ F_TRAINER_FEMALE | #line 13177 TRAINER_ENCOUNTER_MUSIC_MALE, #line 13178 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 13179 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -33064,7 +33064,7 @@ F_TRAINER_FEMALE | #line 13194 TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, #line 13195 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 13196 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -33109,7 +33109,7 @@ F_TRAINER_FEMALE | #line 13211 TRAINER_ENCOUNTER_MUSIC_GIRL, #line 13212 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 13213 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -33152,7 +33152,7 @@ F_TRAINER_FEMALE | #line 13228 TRAINER_ENCOUNTER_MUSIC_HIKER, #line 13229 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 13230 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -33186,7 +33186,7 @@ F_TRAINER_FEMALE | #line 13241 TRAINER_ENCOUNTER_MUSIC_GIRL, #line 13242 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 13243 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -33218,7 +33218,7 @@ F_TRAINER_FEMALE | #line 13254 TRAINER_ENCOUNTER_MUSIC_MALE, #line 13255 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 13256 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 3, @@ -33272,7 +33272,7 @@ F_TRAINER_FEMALE | #line 13275 TRAINER_ENCOUNTER_MUSIC_MAGMA, #line 13276 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 13277 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -33304,7 +33304,7 @@ F_TRAINER_FEMALE | #line 13288 TRAINER_ENCOUNTER_MUSIC_MAGMA, #line 13289 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 13290 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -33336,7 +33336,7 @@ F_TRAINER_FEMALE | #line 13301 TRAINER_ENCOUNTER_MUSIC_MAGMA, #line 13302 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 13303 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -33368,7 +33368,7 @@ F_TRAINER_FEMALE | #line 13314 TRAINER_ENCOUNTER_MUSIC_MAGMA, #line 13315 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 13316 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -33411,7 +33411,7 @@ F_TRAINER_FEMALE | #line 13331 TRAINER_ENCOUNTER_MUSIC_MAGMA, #line 13332 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 13333 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -33454,7 +33454,7 @@ F_TRAINER_FEMALE | #line 13348 TRAINER_ENCOUNTER_MUSIC_MAGMA, #line 13349 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 13350 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -33486,7 +33486,7 @@ F_TRAINER_FEMALE | #line 13361 TRAINER_ENCOUNTER_MUSIC_MAGMA, #line 13362 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 13363 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -33518,7 +33518,7 @@ F_TRAINER_FEMALE | #line 13374 TRAINER_ENCOUNTER_MUSIC_MAGMA, #line 13375 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 13376 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -33550,7 +33550,7 @@ F_TRAINER_FEMALE | #line 13387 TRAINER_ENCOUNTER_MUSIC_MAGMA, #line 13388 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 13389 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -33582,7 +33582,7 @@ F_TRAINER_FEMALE | #line 13400 TRAINER_ENCOUNTER_MUSIC_MAGMA, #line 13401 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 13402 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -33614,7 +33614,7 @@ F_TRAINER_FEMALE | #line 13413 TRAINER_ENCOUNTER_MUSIC_MAGMA, #line 13414 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 13415 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -33646,7 +33646,7 @@ F_TRAINER_FEMALE | #line 13426 TRAINER_ENCOUNTER_MUSIC_MAGMA, #line 13427 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 13428 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -33678,7 +33678,7 @@ F_TRAINER_FEMALE | #line 13439 TRAINER_ENCOUNTER_MUSIC_MAGMA, #line 13440 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 13441 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -33712,7 +33712,7 @@ F_TRAINER_FEMALE | #line 13452 TRAINER_ENCOUNTER_MUSIC_MAGMA, #line 13453 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 13454 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -33746,7 +33746,7 @@ F_TRAINER_FEMALE | #line 13465 TRAINER_ENCOUNTER_MUSIC_MAGMA, #line 13466 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 13467 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -33780,7 +33780,7 @@ F_TRAINER_FEMALE | #line 13478 TRAINER_ENCOUNTER_MUSIC_MAGMA, #line 13479 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 13480 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -33812,7 +33812,7 @@ F_TRAINER_FEMALE | #line 13491 TRAINER_ENCOUNTER_MUSIC_MAGMA, #line 13492 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 13493 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 4, @@ -33881,7 +33881,7 @@ F_TRAINER_FEMALE | #line 13517 .items = { ITEM_HYPER_POTION }, #line 13518 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 13519 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 2, @@ -33924,7 +33924,7 @@ F_TRAINER_FEMALE | #line 13534 TRAINER_ENCOUNTER_MUSIC_MAGMA, #line 13535 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 13536 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 3, @@ -33978,7 +33978,7 @@ F_TRAINER_FEMALE | #line 13555 TRAINER_ENCOUNTER_MUSIC_SWIMMER, #line 13556 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 13557 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -34012,7 +34012,7 @@ F_TRAINER_FEMALE | #line 13568 TRAINER_ENCOUNTER_MUSIC_SWIMMER, #line 13569 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 13570 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -34044,7 +34044,7 @@ F_TRAINER_FEMALE | #line 13581 TRAINER_ENCOUNTER_MUSIC_HIKER, #line 13582 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 13583 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -34087,7 +34087,7 @@ F_TRAINER_FEMALE | #line 13598 TRAINER_ENCOUNTER_MUSIC_COOL, #line 13599 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 13600 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -34130,7 +34130,7 @@ F_TRAINER_FEMALE | #line 13615 TRAINER_ENCOUNTER_MUSIC_SWIMMER, #line 13616 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 13617 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -34162,7 +34162,7 @@ F_TRAINER_FEMALE | #line 13628 TRAINER_ENCOUNTER_MUSIC_MALE, #line 13629 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 13630 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 3, @@ -34220,7 +34220,7 @@ F_TRAINER_FEMALE | #line 13650 .items = { ITEM_HYPER_POTION }, #line 13651 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 13652 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 3, @@ -34274,7 +34274,7 @@ F_TRAINER_FEMALE | #line 13671 TRAINER_ENCOUNTER_MUSIC_COOL, #line 13672 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 13673 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -34319,7 +34319,7 @@ F_TRAINER_FEMALE | #line 13688 TRAINER_ENCOUNTER_MUSIC_GIRL, #line 13689 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 13690 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -34362,7 +34362,7 @@ F_TRAINER_FEMALE | #line 13705 TRAINER_ENCOUNTER_MUSIC_HIKER, #line 13706 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 13707 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -34405,7 +34405,7 @@ F_TRAINER_FEMALE | #line 13722 TRAINER_ENCOUNTER_MUSIC_MALE, #line 13723 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 13724 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -34448,7 +34448,7 @@ F_TRAINER_FEMALE | #line 13739 TRAINER_ENCOUNTER_MUSIC_HIKER, #line 13740 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 13741 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -34493,7 +34493,7 @@ F_TRAINER_FEMALE | #line 13756 TRAINER_ENCOUNTER_MUSIC_FEMALE, #line 13757 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 13758 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -34538,7 +34538,7 @@ F_TRAINER_FEMALE | #line 13773 TRAINER_ENCOUNTER_MUSIC_FEMALE, #line 13774 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 13775 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -34581,7 +34581,7 @@ F_TRAINER_FEMALE | #line 13790 TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, #line 13791 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 13792 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -34626,7 +34626,7 @@ F_TRAINER_FEMALE | #line 13807 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 13808 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 13809 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -34671,7 +34671,7 @@ F_TRAINER_FEMALE | #line 13824 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 13825 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 13826 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -34716,7 +34716,7 @@ F_TRAINER_FEMALE | #line 13841 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 13842 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 13843 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -34759,7 +34759,7 @@ F_TRAINER_FEMALE | #line 13858 TRAINER_ENCOUNTER_MUSIC_HIKER, #line 13859 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 13860 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -34802,7 +34802,7 @@ F_TRAINER_FEMALE | #line 13875 TRAINER_ENCOUNTER_MUSIC_MALE, #line 13876 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 13877 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -34847,7 +34847,7 @@ F_TRAINER_FEMALE | #line 13892 TRAINER_ENCOUNTER_MUSIC_FEMALE, #line 13893 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 13894 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -34881,7 +34881,7 @@ F_TRAINER_FEMALE | #line 13905 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 13906 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 13907 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -34915,7 +34915,7 @@ F_TRAINER_FEMALE | #line 13918 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 13919 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 13920 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -34951,7 +34951,7 @@ F_TRAINER_FEMALE | #line 13932 .items = { ITEM_HYPER_POTION }, #line 13933 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 13934 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 2, @@ -34994,7 +34994,7 @@ F_TRAINER_FEMALE | #line 13949 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 13950 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 13951 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -35026,7 +35026,7 @@ F_TRAINER_FEMALE | #line 13962 TRAINER_ENCOUNTER_MUSIC_HIKER, #line 13963 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 13964 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -35071,7 +35071,7 @@ F_TRAINER_FEMALE | #line 13979 TRAINER_ENCOUNTER_MUSIC_FEMALE, #line 13980 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 13981 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 1, @@ -35105,7 +35105,7 @@ F_TRAINER_FEMALE | #line 13993 .items = { ITEM_HYPER_POTION }, #line 13994 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 13995 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 1, @@ -35145,7 +35145,7 @@ F_TRAINER_FEMALE | #line 14009 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 14010 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 14011 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -35188,7 +35188,7 @@ F_TRAINER_FEMALE | #line 14026 TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, #line 14027 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 14028 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -35231,7 +35231,7 @@ F_TRAINER_FEMALE | #line 14043 TRAINER_ENCOUNTER_MUSIC_MALE, #line 14044 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 14045 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 6, @@ -35320,7 +35320,7 @@ F_TRAINER_FEMALE | #line 14076 TRAINER_ENCOUNTER_MUSIC_FEMALE, #line 14077 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 14078 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 6, @@ -35411,7 +35411,7 @@ F_TRAINER_FEMALE | #line 14110 .items = { ITEM_HYPER_POTION }, #line 14111 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 14112 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 2, @@ -35456,7 +35456,7 @@ F_TRAINER_FEMALE | #line 14127 TRAINER_ENCOUNTER_MUSIC_FEMALE, #line 14128 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 14129 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 2, @@ -35501,7 +35501,7 @@ F_TRAINER_FEMALE | #line 14144 TRAINER_ENCOUNTER_MUSIC_FEMALE, #line 14145 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 14146 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 2, @@ -35548,7 +35548,7 @@ F_TRAINER_FEMALE | #line 14162 .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, #line 14163 - .doubleBattle = TRUE, + .battleType = TRAINER_BATTLE_TYPE_DOUBLES, #line 14164 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 4, @@ -35649,7 +35649,7 @@ F_TRAINER_FEMALE | #line 14204 .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, #line 14205 - .doubleBattle = TRUE, + .battleType = TRAINER_BATTLE_TYPE_DOUBLES, #line 14206 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 5, @@ -35768,7 +35768,7 @@ F_TRAINER_FEMALE | #line 14254 .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, #line 14255 - .doubleBattle = TRUE, + .battleType = TRAINER_BATTLE_TYPE_DOUBLES, #line 14256 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 5, @@ -35887,7 +35887,7 @@ F_TRAINER_FEMALE | #line 14304 .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, #line 14305 - .doubleBattle = TRUE, + .battleType = TRAINER_BATTLE_TYPE_DOUBLES, #line 14306 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 6, @@ -36022,7 +36022,7 @@ F_TRAINER_FEMALE | #line 14362 .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, #line 14363 - .doubleBattle = TRUE, + .battleType = TRAINER_BATTLE_TYPE_DOUBLES, #line 14364 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 4, @@ -36121,7 +36121,7 @@ F_TRAINER_FEMALE | #line 14404 .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, #line 14405 - .doubleBattle = TRUE, + .battleType = TRAINER_BATTLE_TYPE_DOUBLES, #line 14406 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 4, @@ -36220,7 +36220,7 @@ F_TRAINER_FEMALE | #line 14446 .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, #line 14447 - .doubleBattle = TRUE, + .battleType = TRAINER_BATTLE_TYPE_DOUBLES, #line 14448 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 5, @@ -36337,7 +36337,7 @@ F_TRAINER_FEMALE | #line 14496 .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, #line 14497 - .doubleBattle = TRUE, + .battleType = TRAINER_BATTLE_TYPE_DOUBLES, #line 14498 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 6, @@ -36472,7 +36472,7 @@ F_TRAINER_FEMALE | #line 14554 .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, #line 14555 - .doubleBattle = TRUE, + .battleType = TRAINER_BATTLE_TYPE_DOUBLES, #line 14556 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 4, @@ -36571,7 +36571,7 @@ F_TRAINER_FEMALE | #line 14596 .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, #line 14597 - .doubleBattle = TRUE, + .battleType = TRAINER_BATTLE_TYPE_DOUBLES, #line 14598 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 5, @@ -36688,7 +36688,7 @@ F_TRAINER_FEMALE | #line 14646 .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, #line 14647 - .doubleBattle = TRUE, + .battleType = TRAINER_BATTLE_TYPE_DOUBLES, #line 14648 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 5, @@ -36805,7 +36805,7 @@ F_TRAINER_FEMALE | #line 14696 .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, #line 14697 - .doubleBattle = TRUE, + .battleType = TRAINER_BATTLE_TYPE_DOUBLES, #line 14698 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 6, @@ -36942,7 +36942,7 @@ F_TRAINER_FEMALE | #line 14754 .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, #line 14755 - .doubleBattle = TRUE, + .battleType = TRAINER_BATTLE_TYPE_DOUBLES, #line 14756 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 4, @@ -37045,7 +37045,7 @@ F_TRAINER_FEMALE | #line 14796 .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, #line 14797 - .doubleBattle = TRUE, + .battleType = TRAINER_BATTLE_TYPE_DOUBLES, #line 14798 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 5, @@ -37166,7 +37166,7 @@ F_TRAINER_FEMALE | #line 14846 .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, #line 14847 - .doubleBattle = TRUE, + .battleType = TRAINER_BATTLE_TYPE_DOUBLES, #line 14848 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 6, @@ -37305,7 +37305,7 @@ F_TRAINER_FEMALE | #line 14904 .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, #line 14905 - .doubleBattle = TRUE, + .battleType = TRAINER_BATTLE_TYPE_DOUBLES, #line 14906 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 6, @@ -37442,7 +37442,7 @@ F_TRAINER_FEMALE | #line 14962 .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, #line 14963 - .doubleBattle = TRUE, + .battleType = TRAINER_BATTLE_TYPE_DOUBLES, #line 14964 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 4, @@ -37541,7 +37541,7 @@ F_TRAINER_FEMALE | #line 15004 .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, #line 15005 - .doubleBattle = TRUE, + .battleType = TRAINER_BATTLE_TYPE_DOUBLES, #line 15006 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 5, @@ -37658,7 +37658,7 @@ F_TRAINER_FEMALE | #line 15054 .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, #line 15055 - .doubleBattle = TRUE, + .battleType = TRAINER_BATTLE_TYPE_DOUBLES, #line 15056 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 5, @@ -37775,7 +37775,7 @@ F_TRAINER_FEMALE | #line 15104 .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, #line 15105 - .doubleBattle = TRUE, + .battleType = TRAINER_BATTLE_TYPE_DOUBLES, #line 15106 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 6, @@ -37912,7 +37912,7 @@ F_TRAINER_FEMALE | #line 15162 .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, #line 15163 - .doubleBattle = TRUE, + .battleType = TRAINER_BATTLE_TYPE_DOUBLES, #line 15164 .aiFlags = AI_FLAG_BASIC_TRAINER | AI_FLAG_RISKY, .partySize = 5, @@ -38031,7 +38031,7 @@ F_TRAINER_FEMALE | #line 15212 .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, #line 15213 - .doubleBattle = TRUE, + .battleType = TRAINER_BATTLE_TYPE_DOUBLES, #line 15214 .aiFlags = AI_FLAG_BASIC_TRAINER | AI_FLAG_RISKY, .partySize = 6, @@ -38168,7 +38168,7 @@ F_TRAINER_FEMALE | #line 15270 .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, #line 15271 - .doubleBattle = TRUE, + .battleType = TRAINER_BATTLE_TYPE_DOUBLES, #line 15272 .aiFlags = AI_FLAG_BASIC_TRAINER | AI_FLAG_RISKY, .partySize = 6, @@ -38305,7 +38305,7 @@ F_TRAINER_FEMALE | #line 15328 .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, #line 15329 - .doubleBattle = TRUE, + .battleType = TRAINER_BATTLE_TYPE_DOUBLES, #line 15330 .aiFlags = AI_FLAG_BASIC_TRAINER | AI_FLAG_RISKY, .partySize = 6, @@ -38440,7 +38440,7 @@ F_TRAINER_FEMALE | #line 15386 .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, #line 15387 - .doubleBattle = TRUE, + .battleType = TRAINER_BATTLE_TYPE_DOUBLES, #line 15388 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 5, @@ -38559,7 +38559,7 @@ F_TRAINER_FEMALE | #line 15436 .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, #line 15437 - .doubleBattle = TRUE, + .battleType = TRAINER_BATTLE_TYPE_DOUBLES, #line 15438 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 6, @@ -38696,7 +38696,7 @@ F_TRAINER_FEMALE | #line 15494 .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, #line 15495 - .doubleBattle = TRUE, + .battleType = TRAINER_BATTLE_TYPE_DOUBLES, #line 15496 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 6, @@ -38833,7 +38833,7 @@ F_TRAINER_FEMALE | #line 15552 .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, #line 15553 - .doubleBattle = TRUE, + .battleType = TRAINER_BATTLE_TYPE_DOUBLES, #line 15554 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 6, @@ -38970,7 +38970,7 @@ F_TRAINER_FEMALE | #line 15610 .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, #line 15611 - .doubleBattle = TRUE, + .battleType = TRAINER_BATTLE_TYPE_DOUBLES, #line 15612 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 5, @@ -39087,7 +39087,7 @@ F_TRAINER_FEMALE | #line 15660 .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, #line 15661 - .doubleBattle = TRUE, + .battleType = TRAINER_BATTLE_TYPE_DOUBLES, #line 15662 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 5, @@ -39204,7 +39204,7 @@ F_TRAINER_FEMALE | #line 15710 .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, #line 15711 - .doubleBattle = TRUE, + .battleType = TRAINER_BATTLE_TYPE_DOUBLES, #line 15712 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 6, @@ -39339,7 +39339,7 @@ F_TRAINER_FEMALE | #line 15768 .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, #line 15769 - .doubleBattle = TRUE, + .battleType = TRAINER_BATTLE_TYPE_DOUBLES, #line 15770 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 6, @@ -39472,7 +39472,7 @@ F_TRAINER_FEMALE | #line 15825 TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, #line 15826 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 15827 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 2, @@ -39527,7 +39527,7 @@ F_TRAINER_FEMALE | #line 15848 TRAINER_ENCOUNTER_MUSIC_COOL, #line 15849 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 15850 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 1, @@ -39561,7 +39561,7 @@ F_TRAINER_FEMALE | #line 15862 .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, #line 15863 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 15864 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 6, @@ -39694,7 +39694,7 @@ F_TRAINER_FEMALE | #line 15919 TRAINER_ENCOUNTER_MUSIC_MALE, #line 15920 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 15921 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 1, @@ -39726,7 +39726,7 @@ F_TRAINER_FEMALE | #line 15932 TRAINER_ENCOUNTER_MUSIC_MALE, #line 15933 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 15934 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 1, @@ -39758,7 +39758,7 @@ F_TRAINER_FEMALE | #line 15945 TRAINER_ENCOUNTER_MUSIC_MALE, #line 15946 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 15947 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 1, @@ -39792,7 +39792,7 @@ F_TRAINER_FEMALE | #line 15958 TRAINER_ENCOUNTER_MUSIC_MALE, #line 15959 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 15960 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 1, @@ -39824,7 +39824,7 @@ F_TRAINER_FEMALE | #line 15971 TRAINER_ENCOUNTER_MUSIC_MALE, #line 15972 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 15973 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 1, @@ -39858,7 +39858,7 @@ F_TRAINER_FEMALE | #line 15984 TRAINER_ENCOUNTER_MUSIC_MALE, #line 15985 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 15986 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 1, @@ -39890,7 +39890,7 @@ F_TRAINER_FEMALE | #line 15997 TRAINER_ENCOUNTER_MUSIC_MALE, #line 15998 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 15999 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 1, @@ -39922,7 +39922,7 @@ F_TRAINER_FEMALE | #line 16010 TRAINER_ENCOUNTER_MUSIC_HIKER, #line 16011 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 16012 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -39965,7 +39965,7 @@ F_TRAINER_FEMALE | #line 16027 TRAINER_ENCOUNTER_MUSIC_HIKER, #line 16028 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 16029 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 3, @@ -40019,7 +40019,7 @@ F_TRAINER_FEMALE | #line 16048 TRAINER_ENCOUNTER_MUSIC_HIKER, #line 16049 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 16050 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 3, @@ -40073,7 +40073,7 @@ F_TRAINER_FEMALE | #line 16069 TRAINER_ENCOUNTER_MUSIC_HIKER, #line 16070 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 16071 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 3, @@ -40127,7 +40127,7 @@ F_TRAINER_FEMALE | #line 16090 TRAINER_ENCOUNTER_MUSIC_MALE, #line 16091 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 16092 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 3, @@ -40181,7 +40181,7 @@ F_TRAINER_FEMALE | #line 16111 TRAINER_ENCOUNTER_MUSIC_MALE, #line 16112 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 16113 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 3, @@ -40235,7 +40235,7 @@ F_TRAINER_FEMALE | #line 16132 TRAINER_ENCOUNTER_MUSIC_MALE, #line 16133 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 16134 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 3, @@ -40289,7 +40289,7 @@ F_TRAINER_FEMALE | #line 16153 TRAINER_ENCOUNTER_MUSIC_MALE, #line 16154 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 16155 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 3, @@ -40343,7 +40343,7 @@ F_TRAINER_FEMALE | #line 16174 TRAINER_ENCOUNTER_MUSIC_SWIMMER, #line 16175 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 16176 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -40386,7 +40386,7 @@ F_TRAINER_FEMALE | #line 16191 TRAINER_ENCOUNTER_MUSIC_SWIMMER, #line 16192 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 16193 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 3, @@ -40440,7 +40440,7 @@ F_TRAINER_FEMALE | #line 16212 TRAINER_ENCOUNTER_MUSIC_SWIMMER, #line 16213 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 16214 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 3, @@ -40494,7 +40494,7 @@ F_TRAINER_FEMALE | #line 16233 TRAINER_ENCOUNTER_MUSIC_SWIMMER, #line 16234 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 16235 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 3, @@ -40548,7 +40548,7 @@ F_TRAINER_FEMALE | #line 16254 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 16255 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 16256 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -40591,7 +40591,7 @@ F_TRAINER_FEMALE | #line 16271 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 16272 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 16273 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 3, @@ -40645,7 +40645,7 @@ F_TRAINER_FEMALE | #line 16292 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 16293 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 16294 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 3, @@ -40699,7 +40699,7 @@ F_TRAINER_FEMALE | #line 16313 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 16314 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 16315 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 3, @@ -40757,7 +40757,7 @@ F_TRAINER_FEMALE | #line 16335 .items = { ITEM_HYPER_POTION }, #line 16336 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 16337 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 2, @@ -40804,7 +40804,7 @@ F_TRAINER_FEMALE | #line 16353 .items = { ITEM_HYPER_POTION }, #line 16354 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 16355 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 3, @@ -40862,7 +40862,7 @@ F_TRAINER_FEMALE | #line 16375 .items = { ITEM_HYPER_POTION }, #line 16376 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 16377 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 3, @@ -40920,7 +40920,7 @@ F_TRAINER_FEMALE | #line 16397 .items = { ITEM_HYPER_POTION }, #line 16398 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 16399 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 3, @@ -40974,7 +40974,7 @@ F_TRAINER_FEMALE | #line 16418 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 16419 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 16420 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 3, @@ -41028,7 +41028,7 @@ F_TRAINER_FEMALE | #line 16439 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 16440 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 16441 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 3, @@ -41082,7 +41082,7 @@ F_TRAINER_FEMALE | #line 16460 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 16461 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 16462 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 3, @@ -41136,7 +41136,7 @@ F_TRAINER_FEMALE | #line 16481 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 16482 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 16483 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 3, @@ -41190,7 +41190,7 @@ F_TRAINER_FEMALE | #line 16502 TRAINER_ENCOUNTER_MUSIC_HIKER, #line 16503 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 16504 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 2, @@ -41233,7 +41233,7 @@ F_TRAINER_FEMALE | #line 16519 TRAINER_ENCOUNTER_MUSIC_HIKER, #line 16520 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 16521 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 3, @@ -41287,7 +41287,7 @@ F_TRAINER_FEMALE | #line 16540 TRAINER_ENCOUNTER_MUSIC_HIKER, #line 16541 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 16542 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 3, @@ -41341,7 +41341,7 @@ F_TRAINER_FEMALE | #line 16561 TRAINER_ENCOUNTER_MUSIC_HIKER, #line 16562 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 16563 .aiFlags = AI_FLAG_BASIC_TRAINER, .partySize = 3, @@ -41397,7 +41397,7 @@ F_TRAINER_FEMALE | #line 16582 TRAINER_ENCOUNTER_MUSIC_FEMALE, #line 16583 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 16584 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 6, @@ -41486,7 +41486,7 @@ F_TRAINER_FEMALE | #line 16615 TRAINER_ENCOUNTER_MUSIC_FEMALE, #line 16616 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 16617 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 6, @@ -41575,7 +41575,7 @@ F_TRAINER_FEMALE | #line 16648 TRAINER_ENCOUNTER_MUSIC_FEMALE, #line 16649 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 16650 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 6, @@ -41664,7 +41664,7 @@ F_TRAINER_FEMALE | #line 16681 TRAINER_ENCOUNTER_MUSIC_FEMALE, #line 16682 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 16683 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 6, @@ -41753,7 +41753,7 @@ F_TRAINER_FEMALE | #line 16714 TRAINER_ENCOUNTER_MUSIC_FEMALE, #line 16715 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 16716 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 2, @@ -41798,7 +41798,7 @@ F_TRAINER_FEMALE | #line 16731 TRAINER_ENCOUNTER_MUSIC_FEMALE, #line 16732 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 16733 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 3, @@ -41854,7 +41854,7 @@ F_TRAINER_FEMALE | #line 16752 TRAINER_ENCOUNTER_MUSIC_FEMALE, #line 16753 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 16754 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 3, @@ -41910,7 +41910,7 @@ F_TRAINER_FEMALE | #line 16773 TRAINER_ENCOUNTER_MUSIC_FEMALE, #line 16774 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 16775 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, .partySize = 3, @@ -41966,7 +41966,7 @@ F_TRAINER_FEMALE | #line 16794 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 16795 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, .partySize = 1, .party = (const struct TrainerMon[]) { @@ -41996,7 +41996,7 @@ F_TRAINER_FEMALE | #line 16806 TRAINER_ENCOUNTER_MUSIC_INTENSE, #line 16807 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, .partySize = 2, .party = (const struct TrainerMon[]) { @@ -42037,7 +42037,7 @@ F_TRAINER_FEMALE | #line 16822 TRAINER_ENCOUNTER_MUSIC_RICH, #line 16823 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, .partySize = 1, .party = (const struct TrainerMon[]) { @@ -42067,7 +42067,7 @@ F_TRAINER_FEMALE | #line 16834 TRAINER_ENCOUNTER_MUSIC_MALE, #line 16835 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, .partySize = 1, .party = (const struct TrainerMon[]) { @@ -42099,7 +42099,7 @@ F_TRAINER_FEMALE | #line 16846 TRAINER_ENCOUNTER_MUSIC_MALE, #line 16847 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, .partySize = 1, .party = (const struct TrainerMon[]) { @@ -42129,7 +42129,7 @@ F_TRAINER_FEMALE | #line 16858 TRAINER_ENCOUNTER_MUSIC_MALE, #line 16859 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, .partySize = 1, .party = (const struct TrainerMon[]) { @@ -42161,7 +42161,7 @@ F_TRAINER_FEMALE | #line 16870 TRAINER_ENCOUNTER_MUSIC_MALE, #line 16871 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, .partySize = 1, .party = (const struct TrainerMon[]) { diff --git a/src/data/trainers.party b/src/data/trainers.party index f1a8f3e84e..5b0e7e8c97 100644 --- a/src/data/trainers.party +++ b/src/data/trainers.party @@ -20,7 +20,7 @@ Optional (but still recommended) fields for trainers: - Music - Items (Some Item / Another Item / Third Item) (Can also be specified with ITEM_SOME_ITEM) - - Double Battle (Yes/No, defaults to No) + - Battle Type (Singles / Doubles, defaults to Singles) - AI (Ai Flag / Another Flag / Third Flag / ... see "constants/battle_ai.h" for all flags) - Mugshot (enable Mugshots during battle transition diff --git a/src/datetime.c b/src/datetime.c new file mode 100644 index 0000000000..fbbb3ea6b7 --- /dev/null +++ b/src/datetime.c @@ -0,0 +1,115 @@ +#include "global.h" +#include "datetime.h" +#include "rtc.h" + + +const struct DateTime gGen3Epoch = +{ + .year = 2000, + .month = MONTH_JAN, + .day = 1, + .dayOfWeek = WEEKDAY_SAT, + .hour = 0, + .minute = 0, + .second = 0, +}; + +void DateTime_AddDays(struct DateTime *dateTime, u32 days) +{ + while (days > 0) + { + u32 remainingDaysInMonth = (sNumDaysInMonths[dateTime->month - 1] + (dateTime->month == MONTH_FEB && IsLeapYear(dateTime->year)) - dateTime->day); + + if (days > remainingDaysInMonth) + { + dateTime->day = 1; + dateTime->month++; + if (dateTime->month > MONTH_DEC) + { + dateTime->month = MONTH_JAN; + dateTime->year++; + } + days -= (remainingDaysInMonth + 1); + dateTime->dayOfWeek = (dateTime->dayOfWeek + remainingDaysInMonth + 1) % WEEKDAY_COUNT; + } + else + { + dateTime->day += days; + dateTime->dayOfWeek = (dateTime->dayOfWeek + days) % WEEKDAY_COUNT; + days = 0; + } + } +} + +void DateTime_AddHours(struct DateTime *dateTime, u32 hours) +{ + u32 days = 0; + + dateTime->hour += hours; + while (dateTime->hour >= HOURS_PER_DAY) + { + days++; + dateTime->hour -= HOURS_PER_DAY; + } + + DateTime_AddDays(dateTime, days); +} + +void DateTime_AddMinutes(struct DateTime *dateTime, u32 minutes) +{ + u32 hours = 0; + + dateTime->minute += minutes; + while(dateTime->minute >= MINUTES_PER_HOUR) + { + hours++; + dateTime->minute -= MINUTES_PER_HOUR; + } + + DateTime_AddHours(dateTime, hours); +} + +void DateTime_AddSeconds(struct DateTime *dateTime, u32 seconds) +{ + u32 minutes = 0; + + dateTime->second += seconds; + while(dateTime->second >= SECONDS_PER_MINUTE) + { + minutes++; + dateTime->second -= SECONDS_PER_MINUTE; + } + + DateTime_AddMinutes(dateTime, minutes); +} + +void ConvertDateTimeToRtc(struct SiiRtcInfo *result, struct DateTime *dateTime) +{ + result->second = dateTime->second; + result->minute = dateTime->minute; + result->hour = dateTime->hour; + result->day = dateTime->day; + result->dayOfWeek = dateTime->dayOfWeek; + result->month = dateTime->month; + result->year = dateTime->year - gGen3Epoch.year; +} + +void ConvertRtcToDateTime(struct DateTime *result, struct SiiRtcInfo *rtc) +{ + result->second = rtc->second; + result->minute = rtc->minute; + result->hour = rtc->hour; + result->day = rtc->day; + result->dayOfWeek = rtc->dayOfWeek; + result->month = rtc->month; + result->year = gGen3Epoch.year + rtc->year; +} + +void ConvertTimeToDateTime(struct DateTime *result, struct Time *timeSinceEpoch) +{ + result = memcpy(result, &gGen3Epoch, sizeof(struct DateTime)); + DateTime_AddSeconds(result, timeSinceEpoch->seconds); + DateTime_AddMinutes(result, timeSinceEpoch->minutes); + DateTime_AddHours(result, timeSinceEpoch->hours); + DateTime_AddDays(result, timeSinceEpoch->days); +} diff --git a/src/debug.c b/src/debug.c index 1b004a8e02..5a585ef62d 100644 --- a/src/debug.c +++ b/src/debug.c @@ -66,6 +66,9 @@ #include "constants/songs.h" #include "constants/species.h" #include "constants/weather.h" +#include "siirtc.h" +#include "rtc.h" +#include "fake_rtc.h" #include "save.h" // ******************************* @@ -75,10 +78,12 @@ enum DebugMenu DEBUG_MENU_ITEM_PCBAG, DEBUG_MENU_ITEM_PARTY, DEBUG_MENU_ITEM_GIVE, + DEBUG_MENU_ITEM_PLAYER, DEBUG_MENU_ITEM_SCRIPTS, DEBUG_MENU_ITEM_FLAGVAR, //DEBUG_MENU_ITEM_BATTLE, DEBUG_MENU_ITEM_SOUND, + DEBUG_MENU_ITEM_ROMINFO, DEBUG_MENU_ITEM_CANCEL, }; @@ -86,21 +91,43 @@ enum UtilDebugMenu { DEBUG_UTIL_MENU_ITEM_FLY, DEBUG_UTIL_MENU_ITEM_WARP, - DEBUG_UTIL_MENU_ITEM_SAVEBLOCK, - DEBUG_UTIL_MENU_ITEM_ROM_SPACE, DEBUG_UTIL_MENU_ITEM_WEATHER, DEBUG_UTIL_MENU_ITEM_FONT_TEST, - DEBUG_UTIL_MENU_ITEM_CHECKWALLCLOCK, - DEBUG_UTIL_MENU_ITEM_SETWALLCLOCK, + DEBUG_UTIL_MENU_ITEM_TIME_MENU, DEBUG_UTIL_MENU_ITEM_WATCHCREDITS, - DEBUG_UTIL_MENU_ITEM_PLAYER_NAME, - DEBUG_UTIL_MENU_ITEM_PLAYER_GENDER, - DEBUG_UTIL_MENU_ITEM_PLAYER_ID, DEBUG_UTIL_MENU_ITEM_CHEAT, - DEBUG_UTIL_MENU_ITEM_EXPANSION_VER, DEBUG_UTIL_MENU_ITEM_BERRY_FUNCTIONS, DEBUG_UTIL_MENU_ITEM_EWRAM_COUNTERS, - DEBUG_UTIL_MENU_ITEM_STEVEN_MULTI, + DEBUG_UTIL_MENU_ITEM_STEVEN_MULTI // Please keep this at the bottom <3 +}; + +enum TimeMenuDebugMenu +{ + DEBUG_TIME_MENU_ITEM_PRINTTIME, + DEBUG_TIME_MENU_ITEM_PRINTTIMEOFDAY, + DEBUG_TIME_MENU_ITEM_TIMESOFDAY, + DEBUG_TIME_MENU_ITEM_WEEKDAYS, + DEBUG_TIME_MENU_ITEM_CHECKWALLCLOCK, + DEBUG_TIME_MENU_ITEM_SETWALLCLOCK, +}; + +enum TimeMenuTimeOfDay +{ + DEBUG_TIME_MENU_ITEM_MORNING, + DEBUG_TIME_MENU_ITEM_DAY, + DEBUG_TIME_MENU_ITEM_EVENING, + DEBUG_TIME_MENU_ITEM_NIGHT, +}; + +enum TimeMenuWeekdays +{ + DEBUG_TIME_MENU_ITEM_SUNDAY, + DEBUG_TIME_MENU_ITEM_MONDAY, + DEBUG_TIME_MENU_ITEM_TUESDAY, + DEBUG_TIME_MENU_ITEM_WEDNESDAY, + DEBUG_TIME_MENU_ITEM_THURSDAY, + DEBUG_TIME_MENU_ITEM_FRIDAY, + DEBUG_TIME_MENU_ITEM_SATURDAY, }; enum GivePCBagDebugMenu @@ -240,6 +267,20 @@ enum BerryFunctionsMenu DEBUG_BERRY_FUNCTIONS_MENU_PESTS, }; +enum PlayerDebugMenu +{ + DEBUG_PLAYER_MENU_ITEM_PLAYER_NAME, + DEBUG_PLAYER_MENU_ITEM_PLAYER_GENDER, + DEBUG_PLAYER_MENU_ITEM_PLAYER_ID, +}; + +enum ROMInfoDebugMenu +{ + DEBUG_ROM_INFO_MENU_ITEM_SAVEBLOCK, + DEBUG_ROM_INFO_MENU_ITEM_ROM_SPACE, + DEBUG_ROM_INFO_MENU_ITEM_EXPANSION_VER, +}; + // ******************************* // Constants #define DEBUG_MENU_FONT FONT_NORMAL @@ -306,7 +347,7 @@ static EWRAM_DATA struct DebugMonData *sDebugMonData = NULL; static EWRAM_DATA struct DebugMenuListData *sDebugMenuListData = NULL; static EWRAM_DATA struct DebugBattleData *sDebugBattleData = NULL; EWRAM_DATA bool8 gIsDebugBattle = FALSE; -EWRAM_DATA u32 gDebugAIFlags = 0; +EWRAM_DATA u64 gDebugAIFlags = 0; // ******************************* // Define functions @@ -336,6 +377,8 @@ static void DebugAction_OpenScriptsMenu(u8 taskId); static void DebugAction_OpenFlagsVarsMenu(u8 taskId); static void DebugAction_OpenGiveMenu(u8 taskId); static void DebugAction_OpenSoundMenu(u8 taskId); +static void DebugAction_OpenPlayerMenu(u8 taskId); +static void DebugAction_OpenROMInfoMenu(u8 taskId); static void DebugTask_HandleMenuInput_Main(u8 taskId); static void DebugTask_HandleMenuInput_Utilities(u8 taskId); @@ -354,22 +397,25 @@ static void DebugAction_Util_Warp_Warp(u8 taskId); static void DebugAction_Util_Warp_SelectMapGroup(u8 taskId); static void DebugAction_Util_Warp_SelectMap(u8 taskId); static void DebugAction_Util_Warp_SelectWarp(u8 taskId); -static void DebugAction_Util_CheckSaveBlock(u8 taskId); -static void DebugAction_Util_CheckROMSpace(u8 taskId); static void DebugAction_Util_Weather(u8 taskId); static void DebugAction_Util_Weather_SelectId(u8 taskId); static void DebugAction_Util_FontTest(u8 taskId); -static void DebugAction_Util_CheckWallClock(u8 taskId); -static void DebugAction_Util_SetWallClock(u8 taskId); +static void DebugAction_TimeMenu_CheckWallClock(u8 taskId); +static void DebugAction_TimeMenu_SetWallClock(u8 taskId); static void DebugAction_Util_WatchCredits(u8 taskId); -static void DebugAction_Util_Player_Name(u8 taskId); -static void DebugAction_Util_Player_Gender(u8 taskId); -static void DebugAction_Util_Player_Id(u8 taskId); static void DebugAction_Util_CheatStart(u8 taskId); -static void DebugAction_Util_ExpansionVersion(u8 taskId); static void DebugAction_Util_BerryFunctions(u8 taskId); static void DebugAction_Util_CheckEWRAMCounters(u8 taskId); static void DebugAction_Util_Steven_Multi(u8 taskId); +static void DebugAction_Util_OpenTimeMenu(u8 taskId); + +static void DebugAction_TimeMenu_PrintTime(u8 taskId); +static void DebugAction_TimeMenu_PrintTimeOfDay(u8 taskId); +static void DebugAction_TimeMenu_TimesOfDay(u8 taskId); +static void DebugAction_TimeMenu_Weekdays(u8 taskId); + +static void DebugAction_TimeMenu_ChangeTimeOfDay(u8 taskId); +static void DebugAction_TimeMenu_ChangeWeekdays(u8 taskId); static void DebugAction_OpenPCBagFillMenu(u8 taskId); static void DebugAction_PCBag_Fill_PCBoxes_Fast(u8 taskId); @@ -449,6 +495,14 @@ static void DebugAction_BerryFunctions_NextStage(u8 taskId); static void DebugAction_BerryFunctions_Pests(u8 taskId); static void DebugAction_BerryFunctions_Weeds(u8 taskId); +static void DebugAction_Player_Name(u8 taskId); +static void DebugAction_Player_Gender(u8 taskId); +static void DebugAction_Player_Id(u8 taskId); + +static void DebugAction_ROMInfo_CheckSaveBlock(u8 taskId); +static void DebugAction_ROMInfo_CheckROMSpace(u8 taskId); +static void DebugAction_ROMInfo_ExpansionVersion(u8 taskId); + extern const u8 Debug_FlagsNotSetOverworldConfigMessage[]; extern const u8 Debug_FlagsNotSetBattleConfigMessage[]; extern const u8 Debug_FlagsAndVarNotSetBattleConfigMessage[]; @@ -479,6 +533,9 @@ extern const u8 Debug_BoxFilledMessage[]; extern const u8 Debug_ShowExpansionVersion[]; extern const u8 Debug_EventScript_EWRAMCounters[]; extern const u8 Debug_EventScript_Steven_Multi[]; +extern const u8 Debug_EventScript_PrintTimeOfDay[]; +extern const u8 Debug_EventScript_TellTheTime[]; +extern const u8 Debug_EventScript_FakeRTCNotEnabled[]; extern const u8 Debug_BerryPestsDisabled[]; extern const u8 Debug_BerryWeedsDisabled[]; @@ -502,6 +559,26 @@ static const u8 sDebugText_Util_WarpToMap_SelectMap[] = _("Map: {STR_VAR_1} static const u8 sDebugText_Util_WarpToMap_SelectWarp[] = _("Warp:{CLEAR_TO 90}\n{STR_VAR_1}{CLEAR_TO 90}\n{CLEAR_TO 90}\n{STR_VAR_3}{CLEAR_TO 90}"); static const u8 sDebugText_Util_WarpToMap_SelMax[] = _("{STR_VAR_1} / {STR_VAR_2}"); static const u8 sDebugText_Util_Weather_ID[] = _("Weather ID: {STR_VAR_3}\n{STR_VAR_1}\n{STR_VAR_2}"); + +//Time Menu + +static const u8 *const gDayNameStringsTable[WEEKDAY_COUNT] = { + COMPOUND_STRING("Sunday"), + COMPOUND_STRING("Monday"), + COMPOUND_STRING("Tuesday"), + COMPOUND_STRING("Wednesday"), + COMPOUND_STRING("Thursday"), + COMPOUND_STRING("Friday"), + COMPOUND_STRING("Saturday"), +}; + +static const u8 *const gTimeOfDayStringsTable[TIMES_OF_DAY_COUNT] = { + COMPOUND_STRING("Morning"), + COMPOUND_STRING("Day"), + COMPOUND_STRING("Evening"), + COMPOUND_STRING("Night"), +}; + // Flags/Vars Menu static const u8 sDebugText_FlagsVars_Flag[] = _("Flag: {STR_VAR_1}{CLEAR_TO 90}\n{STR_VAR_2}{CLEAR_TO 90}\n{STR_VAR_3}"); static const u8 sDebugText_FlagsVars_VariableHex[] = _("{STR_VAR_1}{CLEAR_TO 90}\n0x{STR_VAR_2}{CLEAR_TO 90}"); @@ -513,7 +590,6 @@ static const u8 sDebugText_ItemID[] = _("Item ID: {STR_VAR_3}\ static const u8 sDebugText_PokemonID[] = _("Species: {STR_VAR_3}\n{STR_VAR_1}{CLEAR_TO 90}\n\n{STR_VAR_2}{CLEAR_TO 90}"); static const u8 sDebugText_PokemonLevel[] = _("Level:{CLEAR_TO 90}\n{STR_VAR_1}{CLEAR_TO 90}\n{CLEAR_TO 90}\n{STR_VAR_2}{CLEAR_TO 90}"); static const u8 sDebugText_PokemonShiny[] = _("Shiny:{CLEAR_TO 90}\n {STR_VAR_2}{CLEAR_TO 90}\n{CLEAR_TO 90}\n{CLEAR_TO 90}"); -static const u8 sDebugText_PokemonNature[] = _("Nature ID: {STR_VAR_3}{CLEAR_TO 90}\n{STR_VAR_1}{CLEAR_TO 90}\n{CLEAR_TO 90}\n{STR_VAR_2}{CLEAR_TO 90}"); static const u8 sDebugText_PokemonAbility[] = _("Ability Num: {STR_VAR_3}{CLEAR_TO 90}\n{STR_VAR_1}{CLEAR_TO 90}\n{CLEAR_TO 90}\n{STR_VAR_2}{CLEAR_TO 90}"); static const u8 sDebugText_PokemonTeraType[] = _("Tera Type: {STR_VAR_3}{CLEAR_TO 90}\n{STR_VAR_1}{CLEAR_TO 90}\n{CLEAR_TO 90}\n{STR_VAR_2}{CLEAR_TO 90}"); static const u8 sDebugText_PokemonDynamaxLevel[] = _("Dmax Lvl:{CLEAR_TO 90}\n{STR_VAR_1}{CLEAR_TO 90}\n{CLEAR_TO 90}\n{STR_VAR_2}{CLEAR_TO 90}"); @@ -558,10 +634,12 @@ static const struct ListMenuItem sDebugMenu_Items_Main[] = [DEBUG_MENU_ITEM_PCBAG] = {COMPOUND_STRING("PC/Bag…{CLEAR_TO 110}{RIGHT_ARROW}"), DEBUG_MENU_ITEM_PCBAG}, [DEBUG_MENU_ITEM_PARTY] = {COMPOUND_STRING("Party…{CLEAR_TO 110}{RIGHT_ARROW}"), DEBUG_MENU_ITEM_PARTY}, [DEBUG_MENU_ITEM_GIVE] = {COMPOUND_STRING("Give X…{CLEAR_TO 110}{RIGHT_ARROW}"), DEBUG_MENU_ITEM_GIVE}, + [DEBUG_MENU_ITEM_PLAYER] = {COMPOUND_STRING("Player…{CLEAR_TO 110}{RIGHT_ARROW}"), DEBUG_MENU_ITEM_PLAYER}, [DEBUG_MENU_ITEM_SCRIPTS] = {COMPOUND_STRING("Scripts…{CLEAR_TO 110}{RIGHT_ARROW}"), DEBUG_MENU_ITEM_SCRIPTS}, [DEBUG_MENU_ITEM_FLAGVAR] = {COMPOUND_STRING("Flags & Vars…{CLEAR_TO 110}{RIGHT_ARROW}"), DEBUG_MENU_ITEM_FLAGVAR}, //[DEBUG_MENU_ITEM_BATTLE] = {COMPOUND_STRING("Battle Test{CLEAR_TO 110}{RIGHT_ARROW}"), DEBUG_MENU_ITEM_BATTLE}, [DEBUG_MENU_ITEM_SOUND] = {COMPOUND_STRING("Sound…{CLEAR_TO 110}{RIGHT_ARROW}"), DEBUG_MENU_ITEM_SOUND}, + [DEBUG_MENU_ITEM_ROMINFO] = {COMPOUND_STRING("ROM Info…{CLEAR_TO 110}{RIGHT_ARROW}"), DEBUG_MENU_ITEM_ROMINFO}, [DEBUG_MENU_ITEM_CANCEL] = {COMPOUND_STRING("Cancel"), DEBUG_MENU_ITEM_CANCEL}, }; @@ -569,23 +647,45 @@ static const struct ListMenuItem sDebugMenu_Items_Utilities[] = { [DEBUG_UTIL_MENU_ITEM_FLY] = {COMPOUND_STRING("Fly to map…{CLEAR_TO 110}{RIGHT_ARROW}"), DEBUG_UTIL_MENU_ITEM_FLY}, [DEBUG_UTIL_MENU_ITEM_WARP] = {COMPOUND_STRING("Warp to map warp…{CLEAR_TO 110}{RIGHT_ARROW}"), DEBUG_UTIL_MENU_ITEM_WARP}, - [DEBUG_UTIL_MENU_ITEM_SAVEBLOCK] = {COMPOUND_STRING("Save Block space…{CLEAR_TO 110}{RIGHT_ARROW}"), DEBUG_UTIL_MENU_ITEM_SAVEBLOCK}, - [DEBUG_UTIL_MENU_ITEM_ROM_SPACE] = {COMPOUND_STRING("ROM space…{CLEAR_TO 110}{RIGHT_ARROW}"), DEBUG_UTIL_MENU_ITEM_ROM_SPACE}, [DEBUG_UTIL_MENU_ITEM_WEATHER] = {COMPOUND_STRING("Set weather…{CLEAR_TO 110}{RIGHT_ARROW}"), DEBUG_UTIL_MENU_ITEM_WEATHER}, [DEBUG_UTIL_MENU_ITEM_FONT_TEST] = {COMPOUND_STRING("Font Test…{CLEAR_TO 110}{RIGHT_ARROW}"), DEBUG_UTIL_MENU_ITEM_FONT_TEST}, - [DEBUG_UTIL_MENU_ITEM_CHECKWALLCLOCK] = {COMPOUND_STRING("Check wall clock…{CLEAR_TO 110}{RIGHT_ARROW}"), DEBUG_UTIL_MENU_ITEM_CHECKWALLCLOCK}, - [DEBUG_UTIL_MENU_ITEM_SETWALLCLOCK] = {COMPOUND_STRING("Set wall clock…{CLEAR_TO 110}{RIGHT_ARROW}"), DEBUG_UTIL_MENU_ITEM_SETWALLCLOCK}, + [DEBUG_UTIL_MENU_ITEM_TIME_MENU] = {COMPOUND_STRING("Time Functions…{CLEAR_TO 110}{RIGHT_ARROW}"), DEBUG_UTIL_MENU_ITEM_TIME_MENU}, [DEBUG_UTIL_MENU_ITEM_WATCHCREDITS] = {COMPOUND_STRING("Watch credits…{CLEAR_TO 110}{RIGHT_ARROW}"), DEBUG_UTIL_MENU_ITEM_WATCHCREDITS}, - [DEBUG_UTIL_MENU_ITEM_PLAYER_NAME] = {COMPOUND_STRING("Player name"), DEBUG_UTIL_MENU_ITEM_PLAYER_NAME}, - [DEBUG_UTIL_MENU_ITEM_PLAYER_GENDER] = {COMPOUND_STRING("Toggle gender"), DEBUG_UTIL_MENU_ITEM_PLAYER_GENDER}, - [DEBUG_UTIL_MENU_ITEM_PLAYER_ID] = {COMPOUND_STRING("New Trainer ID"), DEBUG_UTIL_MENU_ITEM_PLAYER_ID}, [DEBUG_UTIL_MENU_ITEM_CHEAT] = {COMPOUND_STRING("Cheat start"), DEBUG_UTIL_MENU_ITEM_CHEAT}, - [DEBUG_UTIL_MENU_ITEM_EXPANSION_VER] = {COMPOUND_STRING("Expansion Version"), DEBUG_UTIL_MENU_ITEM_EXPANSION_VER}, [DEBUG_UTIL_MENU_ITEM_BERRY_FUNCTIONS] = {COMPOUND_STRING("Berry Functions…{CLEAR_TO 110}{RIGHT_ARROW}"), DEBUG_UTIL_MENU_ITEM_BERRY_FUNCTIONS}, [DEBUG_UTIL_MENU_ITEM_EWRAM_COUNTERS] = {COMPOUND_STRING("EWRAM Counters…{CLEAR_TO 110}{RIGHT_ARROW}"), DEBUG_UTIL_MENU_ITEM_EWRAM_COUNTERS}, [DEBUG_UTIL_MENU_ITEM_STEVEN_MULTI] = {COMPOUND_STRING("Steven Multi"), DEBUG_UTIL_MENU_ITEM_STEVEN_MULTI}, }; +static const struct ListMenuItem sDebugMenu_Items_TimeMenu[] = +{ + [DEBUG_TIME_MENU_ITEM_PRINTTIME] = {COMPOUND_STRING("Print current time…"), DEBUG_TIME_MENU_ITEM_PRINTTIME}, + [DEBUG_TIME_MENU_ITEM_PRINTTIMEOFDAY] = {COMPOUND_STRING("{FONT_NARROW}Print current time of day…"), DEBUG_TIME_MENU_ITEM_PRINTTIMEOFDAY}, + [DEBUG_TIME_MENU_ITEM_TIMESOFDAY] = {COMPOUND_STRING("{FONT_NARROW}Change current time of day…"), DEBUG_TIME_MENU_ITEM_TIMESOFDAY}, + [DEBUG_TIME_MENU_ITEM_WEEKDAYS] = {COMPOUND_STRING("Change current weekday…"), DEBUG_TIME_MENU_ITEM_WEEKDAYS}, + [DEBUG_TIME_MENU_ITEM_CHECKWALLCLOCK] = {COMPOUND_STRING("Check wall clock…"), DEBUG_TIME_MENU_ITEM_CHECKWALLCLOCK}, + [DEBUG_TIME_MENU_ITEM_SETWALLCLOCK] = {COMPOUND_STRING("Set wall clock…"), DEBUG_TIME_MENU_ITEM_SETWALLCLOCK}, +}; + +static const struct ListMenuItem sDebugMenu_Items_TimeMenu_TimesOfDay[] = +{ + [DEBUG_TIME_MENU_ITEM_MORNING] = {gTimeOfDayStringsTable[TIME_MORNING], DEBUG_TIME_MENU_ITEM_MORNING}, + [DEBUG_TIME_MENU_ITEM_DAY] = {gTimeOfDayStringsTable[TIME_DAY], DEBUG_TIME_MENU_ITEM_DAY}, + [DEBUG_TIME_MENU_ITEM_EVENING] = {gTimeOfDayStringsTable[TIME_EVENING], DEBUG_TIME_MENU_ITEM_EVENING}, + [DEBUG_TIME_MENU_ITEM_NIGHT] = {gTimeOfDayStringsTable[TIME_NIGHT], DEBUG_TIME_MENU_ITEM_NIGHT}, +}; + +static const struct ListMenuItem sDebugMenu_Items_TimeMenu_Weekdays[] = +{ + [DEBUG_TIME_MENU_ITEM_SUNDAY] = {gDayNameStringsTable[WEEKDAY_SUN], DEBUG_TIME_MENU_ITEM_SUNDAY}, + [DEBUG_TIME_MENU_ITEM_MONDAY] = {gDayNameStringsTable[WEEKDAY_MON], DEBUG_TIME_MENU_ITEM_MONDAY}, + [DEBUG_TIME_MENU_ITEM_TUESDAY] = {gDayNameStringsTable[WEEKDAY_TUE], DEBUG_TIME_MENU_ITEM_TUESDAY}, + [DEBUG_TIME_MENU_ITEM_WEDNESDAY] = {gDayNameStringsTable[WEEKDAY_WED], DEBUG_TIME_MENU_ITEM_WEDNESDAY}, + [DEBUG_TIME_MENU_ITEM_THURSDAY] = {gDayNameStringsTable[WEEKDAY_THU], DEBUG_TIME_MENU_ITEM_THURSDAY}, + [DEBUG_TIME_MENU_ITEM_FRIDAY] = {gDayNameStringsTable[WEEKDAY_FRI], DEBUG_TIME_MENU_ITEM_FRIDAY}, + [DEBUG_TIME_MENU_ITEM_SATURDAY] = {gDayNameStringsTable[WEEKDAY_SAT], DEBUG_TIME_MENU_ITEM_SATURDAY}, +}; + static const struct ListMenuItem sDebugMenu_Items_PCBag[] = { [DEBUG_PCBAG_MENU_ITEM_ACCESS_PC] = {COMPOUND_STRING("Access PC"), DEBUG_PCBAG_MENU_ITEM_ACCESS_PC}, @@ -723,6 +823,20 @@ static const struct ListMenuItem sDebugMenu_Items_BerryFunctions[] = [DEBUG_BERRY_FUNCTIONS_MENU_WEEDS] = {COMPOUND_STRING("Give map trees weeds"), DEBUG_BERRY_FUNCTIONS_MENU_WEEDS}, }; +static const struct ListMenuItem sDebugMenu_Items_Player[] = +{ + [DEBUG_PLAYER_MENU_ITEM_PLAYER_NAME] = {COMPOUND_STRING("Player name"), DEBUG_PLAYER_MENU_ITEM_PLAYER_NAME}, + [DEBUG_PLAYER_MENU_ITEM_PLAYER_GENDER] = {COMPOUND_STRING("Toggle gender"), DEBUG_PLAYER_MENU_ITEM_PLAYER_GENDER}, + [DEBUG_PLAYER_MENU_ITEM_PLAYER_ID] = {COMPOUND_STRING("New Trainer ID"), DEBUG_PLAYER_MENU_ITEM_PLAYER_ID}, +}; + +static const struct ListMenuItem sDebugMenu_Items_ROMInfo[] = +{ + [DEBUG_ROM_INFO_MENU_ITEM_SAVEBLOCK] = {COMPOUND_STRING("Save Block space"), DEBUG_ROM_INFO_MENU_ITEM_SAVEBLOCK}, + [DEBUG_ROM_INFO_MENU_ITEM_ROM_SPACE] = {COMPOUND_STRING("ROM space"), DEBUG_ROM_INFO_MENU_ITEM_ROM_SPACE}, + [DEBUG_ROM_INFO_MENU_ITEM_EXPANSION_VER] = {COMPOUND_STRING("Expansion Version"), DEBUG_ROM_INFO_MENU_ITEM_EXPANSION_VER}, +}; + // ******************************* // Menu Actions static void (*const sDebugMenu_Actions_Main[])(u8) = @@ -731,10 +845,12 @@ static void (*const sDebugMenu_Actions_Main[])(u8) = [DEBUG_MENU_ITEM_PCBAG] = DebugAction_OpenPCBagMenu, [DEBUG_MENU_ITEM_PARTY] = DebugAction_OpenPartyMenu, [DEBUG_MENU_ITEM_GIVE] = DebugAction_OpenGiveMenu, + [DEBUG_MENU_ITEM_PLAYER] = DebugAction_OpenPlayerMenu, [DEBUG_MENU_ITEM_SCRIPTS] = DebugAction_OpenScriptsMenu, [DEBUG_MENU_ITEM_FLAGVAR] = DebugAction_OpenFlagsVarsMenu, //[DEBUG_MENU_ITEM_BATTLE] = DebugAction_OpenBattleMenu, [DEBUG_MENU_ITEM_SOUND] = DebugAction_OpenSoundMenu, + [DEBUG_MENU_ITEM_ROMINFO] = DebugAction_OpenROMInfoMenu, [DEBUG_MENU_ITEM_CANCEL] = DebugAction_Cancel }; @@ -742,18 +858,11 @@ static void (*const sDebugMenu_Actions_Utilities[])(u8) = { [DEBUG_UTIL_MENU_ITEM_FLY] = DebugAction_Util_Fly, [DEBUG_UTIL_MENU_ITEM_WARP] = DebugAction_Util_Warp_Warp, - [DEBUG_UTIL_MENU_ITEM_SAVEBLOCK] = DebugAction_Util_CheckSaveBlock, - [DEBUG_UTIL_MENU_ITEM_ROM_SPACE] = DebugAction_Util_CheckROMSpace, [DEBUG_UTIL_MENU_ITEM_WEATHER] = DebugAction_Util_Weather, [DEBUG_UTIL_MENU_ITEM_FONT_TEST] = DebugAction_Util_FontTest, - [DEBUG_UTIL_MENU_ITEM_CHECKWALLCLOCK] = DebugAction_Util_CheckWallClock, - [DEBUG_UTIL_MENU_ITEM_SETWALLCLOCK] = DebugAction_Util_SetWallClock, + [DEBUG_UTIL_MENU_ITEM_TIME_MENU] = DebugAction_Util_OpenTimeMenu, [DEBUG_UTIL_MENU_ITEM_WATCHCREDITS] = DebugAction_Util_WatchCredits, - [DEBUG_UTIL_MENU_ITEM_PLAYER_NAME] = DebugAction_Util_Player_Name, - [DEBUG_UTIL_MENU_ITEM_PLAYER_GENDER] = DebugAction_Util_Player_Gender, - [DEBUG_UTIL_MENU_ITEM_PLAYER_ID] = DebugAction_Util_Player_Id, [DEBUG_UTIL_MENU_ITEM_CHEAT] = DebugAction_Util_CheatStart, - [DEBUG_UTIL_MENU_ITEM_EXPANSION_VER] = DebugAction_Util_ExpansionVersion, [DEBUG_UTIL_MENU_ITEM_BERRY_FUNCTIONS] = DebugAction_Util_BerryFunctions, [DEBUG_UTIL_MENU_ITEM_EWRAM_COUNTERS] = DebugAction_Util_CheckEWRAMCounters, [DEBUG_UTIL_MENU_ITEM_STEVEN_MULTI] = DebugAction_Util_Steven_Multi, @@ -849,6 +958,49 @@ static void (*const sDebugMenu_Actions_BerryFunctions[])(u8) = [DEBUG_BERRY_FUNCTIONS_MENU_WEEDS] = DebugAction_BerryFunctions_Weeds, }; +static void (*const sDebugMenu_Actions_TimeMenu[])(u8) = +{ + [DEBUG_TIME_MENU_ITEM_PRINTTIME] = DebugAction_TimeMenu_PrintTime, + [DEBUG_TIME_MENU_ITEM_PRINTTIMEOFDAY] = DebugAction_TimeMenu_PrintTimeOfDay, + [DEBUG_TIME_MENU_ITEM_TIMESOFDAY] = DebugAction_TimeMenu_TimesOfDay, + [DEBUG_TIME_MENU_ITEM_WEEKDAYS] = DebugAction_TimeMenu_Weekdays, + [DEBUG_TIME_MENU_ITEM_CHECKWALLCLOCK] = DebugAction_TimeMenu_CheckWallClock, + [DEBUG_TIME_MENU_ITEM_SETWALLCLOCK] = DebugAction_TimeMenu_SetWallClock, +}; + +static void (*const sDebugMenu_Actions_TimeMenu_TimesOfDay[])(u8) = +{ + [DEBUG_TIME_MENU_ITEM_MORNING] = DebugAction_TimeMenu_ChangeTimeOfDay, + [DEBUG_TIME_MENU_ITEM_DAY] = DebugAction_TimeMenu_ChangeTimeOfDay, + [DEBUG_TIME_MENU_ITEM_EVENING] = DebugAction_TimeMenu_ChangeTimeOfDay, + [DEBUG_TIME_MENU_ITEM_NIGHT] = DebugAction_TimeMenu_ChangeTimeOfDay, +}; + +static void (*const sDebugMenu_Actions_TimeMenu_Weekdays[])(u8) = +{ + [DEBUG_TIME_MENU_ITEM_SUNDAY] = DebugAction_TimeMenu_ChangeWeekdays, + [DEBUG_TIME_MENU_ITEM_MONDAY] = DebugAction_TimeMenu_ChangeWeekdays, + [DEBUG_TIME_MENU_ITEM_TUESDAY] = DebugAction_TimeMenu_ChangeWeekdays, + [DEBUG_TIME_MENU_ITEM_WEDNESDAY] = DebugAction_TimeMenu_ChangeWeekdays, + [DEBUG_TIME_MENU_ITEM_THURSDAY] = DebugAction_TimeMenu_ChangeWeekdays, + [DEBUG_TIME_MENU_ITEM_FRIDAY] = DebugAction_TimeMenu_ChangeWeekdays, + [DEBUG_TIME_MENU_ITEM_SATURDAY] = DebugAction_TimeMenu_ChangeWeekdays, +}; + +static void (*const sDebugMenu_Actions_Player[])(u8) = +{ + [DEBUG_PLAYER_MENU_ITEM_PLAYER_NAME] = DebugAction_Player_Name, + [DEBUG_PLAYER_MENU_ITEM_PLAYER_GENDER] = DebugAction_Player_Gender, + [DEBUG_PLAYER_MENU_ITEM_PLAYER_ID] = DebugAction_Player_Id, +}; + +static void (*const sDebugMenu_Actions_ROMInfo[])(u8) = +{ + [DEBUG_ROM_INFO_MENU_ITEM_SAVEBLOCK] = DebugAction_ROMInfo_CheckSaveBlock, + [DEBUG_ROM_INFO_MENU_ITEM_ROM_SPACE] = DebugAction_ROMInfo_CheckROMSpace, + [DEBUG_ROM_INFO_MENU_ITEM_EXPANSION_VER] = DebugAction_ROMInfo_ExpansionVersion, +}; + // ******************************* // Windows static const struct WindowTemplate sDebugMenuWindowTemplateMain = @@ -999,6 +1151,41 @@ static const struct ListMenuTemplate sDebugMenu_ListTemplate_BerryFunctions = .totalItems = ARRAY_COUNT(sDebugMenu_Items_BerryFunctions), }; +static const struct ListMenuTemplate sDebugMenu_ListTemplate_TimeMenu = +{ + .items = sDebugMenu_Items_TimeMenu, + .moveCursorFunc = ListMenuDefaultCursorMoveFunc, + .totalItems = ARRAY_COUNT(sDebugMenu_Items_TimeMenu), +}; + +static const struct ListMenuTemplate sDebugMenu_ListTemplate_TimeMenu_TimesOfDay = +{ + .items = sDebugMenu_Items_TimeMenu_TimesOfDay, + .moveCursorFunc = ListMenuDefaultCursorMoveFunc, + .totalItems = ARRAY_COUNT(sDebugMenu_Items_TimeMenu_TimesOfDay), +}; + +static const struct ListMenuTemplate sDebugMenu_ListTemplate_TimeMenu_Weekdays = +{ + .items = sDebugMenu_Items_TimeMenu_Weekdays, + .moveCursorFunc = ListMenuDefaultCursorMoveFunc, + .totalItems = ARRAY_COUNT(sDebugMenu_Items_TimeMenu_Weekdays), +}; + +static const struct ListMenuTemplate sDebugMenu_ListTemplate_Player = +{ + .items = sDebugMenu_Items_Player, + .moveCursorFunc = ListMenuDefaultCursorMoveFunc, + .totalItems = ARRAY_COUNT(sDebugMenu_Items_Player), +}; + +static const struct ListMenuTemplate sDebugMenu_ListTemplate_ROMInfo = +{ + .items = sDebugMenu_Items_ROMInfo, + .moveCursorFunc = ListMenuDefaultCursorMoveFunc, + .totalItems = ARRAY_COUNT(sDebugMenu_Items_ROMInfo), +}; + // ******************************* // Functions universal void Debug_ShowMainMenu(void) @@ -1444,6 +1631,21 @@ static void DebugTask_HandleMenuInput_Scripts(u8 taskId) DebugTask_HandleMenuInput_General(taskId, sDebugMenu_Actions_Scripts, DebugTask_HandleMenuInput_Main, sDebugMenu_ListTemplate_Main); } +static void DebugTask_HandleMenuInput_TimeMenu(u8 taskId) +{ + DebugTask_HandleMenuInput_General(taskId, sDebugMenu_Actions_TimeMenu, DebugTask_HandleMenuInput_Utilities, sDebugMenu_ListTemplate_Utilities); +} + +static void DebugTask_HandleMenuInput_TimeMenu_TimesOfDay(u8 taskId) +{ + DebugTask_HandleMenuInput_General(taskId, sDebugMenu_Actions_TimeMenu_TimesOfDay, DebugTask_HandleMenuInput_Main, sDebugMenu_ListTemplate_Main); +} + +static void DebugTask_HandleMenuInput_TimeMenu_Weekdays(u8 taskId) +{ + DebugTask_HandleMenuInput_General(taskId, sDebugMenu_Actions_TimeMenu_Weekdays, DebugTask_HandleMenuInput_Main, sDebugMenu_ListTemplate_Main); +} + static void DebugTask_HandleMenuInput_FlagsVars(u8 taskId) { void (*func)(u8); @@ -1651,6 +1853,16 @@ static void DebugTask_HandleMenuInput_BerryFunctions(u8 taskId) DebugTask_HandleMenuInput_General(taskId, sDebugMenu_Actions_BerryFunctions, DebugTask_HandleMenuInput_Main, sDebugMenu_ListTemplate_Main); } +static void DebugTask_HandleMenuInput_Player(u8 taskId) +{ + DebugTask_HandleMenuInput_General(taskId, sDebugMenu_Actions_Player, DebugTask_HandleMenuInput_Main, sDebugMenu_ListTemplate_Main); +} + +static void DebugTask_HandleMenuInput_ROMInfo(u8 taskId) +{ + DebugTask_HandleMenuInput_General(taskId, sDebugMenu_Actions_ROMInfo, DebugTask_HandleMenuInput_Main, sDebugMenu_ListTemplate_Main); +} + // ******************************* // Open sub-menus static void DebugAction_OpenUtilitiesMenu(u8 taskId) @@ -1702,6 +1914,50 @@ static void DebugAction_Util_BerryFunctions(u8 taskId) Debug_ShowMenu(DebugTask_HandleMenuInput_BerryFunctions, sDebugMenu_ListTemplate_BerryFunctions); } +static void DebugAction_Util_OpenTimeMenu(u8 taskId) +{ + Debug_DestroyMenu(taskId); + Debug_ShowMenu(DebugTask_HandleMenuInput_TimeMenu, sDebugMenu_ListTemplate_TimeMenu); +} + +static void DebugAction_TimeMenu_TimesOfDay(u8 taskId) +{ + if (!OW_USE_FAKE_RTC) + { + Debug_DestroyMenu_Full_Script(taskId, Debug_EventScript_FakeRTCNotEnabled); + } + else + { + Debug_DestroyMenu_Full(taskId); + Debug_ShowMenu(DebugTask_HandleMenuInput_TimeMenu_TimesOfDay, sDebugMenu_ListTemplate_TimeMenu_TimesOfDay); + } +} + +static void DebugAction_TimeMenu_Weekdays(u8 taskId) +{ + if (!OW_USE_FAKE_RTC) + { + Debug_DestroyMenu_Full_Script(taskId, Debug_EventScript_FakeRTCNotEnabled); + } + else + { + Debug_DestroyMenu_Full(taskId); + Debug_ShowMenu(DebugTask_HandleMenuInput_TimeMenu_Weekdays, sDebugMenu_ListTemplate_TimeMenu_Weekdays); + } +} + +static void DebugAction_OpenPlayerMenu(u8 taskId) +{ + Debug_DestroyMenu(taskId); + Debug_ShowMenu(DebugTask_HandleMenuInput_Player, sDebugMenu_ListTemplate_Player); +} + +static void DebugAction_OpenROMInfoMenu(u8 taskId) +{ + Debug_DestroyMenu(taskId); + Debug_ShowMenu(DebugTask_HandleMenuInput_ROMInfo, sDebugMenu_ListTemplate_ROMInfo); +} + // ******************************* // Actions Utilities @@ -1903,7 +2159,7 @@ void CheckPokemonStorageSize(struct ScriptContext *ctx) ConvertIntToDecimalStringN(gStringVar3, maxPkmnStorageSize - currPkmnStorageSize, STR_CONV_MODE_LEFT_ALIGN, 6); } -static void DebugAction_Util_CheckSaveBlock(u8 taskId) +static void DebugAction_ROMInfo_CheckSaveBlock(u8 taskId) { Debug_DestroyMenu_Full_Script(taskId, Debug_CheckSaveBlock); } @@ -1956,7 +2212,7 @@ void CheckROMSize(struct ScriptContext *ctx) ConvertQ22_10ToDecimalString(gStringVar2, currROMFreeKB, 2, ROUND_FLOOR); } -static void DebugAction_Util_CheckROMSpace(u8 taskId) +static void DebugAction_ROMInfo_CheckROMSpace(u8 taskId) { Debug_DestroyMenu_Full(taskId); LockPlayerFieldControls(); @@ -1982,7 +2238,14 @@ static const u8 sWeatherNames[WEATHER_COUNT][24] = { [WEATHER_ABNORMAL] = _("ABNORMAL(NOT WORKING)"), [WEATHER_ROUTE119_CYCLE] = _("ROUTE119 CYCLE"), [WEATHER_ROUTE123_CYCLE] = _("ROUTE123 CYCLE"), + [WEATHER_FOG] = _("FOG"), }; + +const u8 *GetWeatherName(u32 weatherId) +{ + return sWeatherNames[weatherId]; +} + static const u8 sDebugText_WeatherNotDefined[] = _("NOT DEFINED!!!"); static void DebugAction_Util_Weather(u8 taskId) { @@ -2050,12 +2313,12 @@ static void DebugAction_Util_FontTest(u8 taskId) Debug_DestroyMenu_Full_Script(taskId, Debug_EventScript_FontTest); } -static void DebugAction_Util_CheckWallClock(u8 taskId) +static void DebugAction_TimeMenu_CheckWallClock(u8 taskId) { Debug_DestroyMenu_Full_Script(taskId, PlayersHouse_2F_EventScript_CheckWallClock); } -static void DebugAction_Util_SetWallClock(u8 taskId) +static void DebugAction_TimeMenu_SetWallClock(u8 taskId) { Debug_DestroyMenu_Full_Script(taskId, PlayersHouse_2F_EventScript_SetWallClock); } @@ -2066,12 +2329,12 @@ static void DebugAction_Util_WatchCredits(u8 taskId) SetMainCallback2(CB2_StartCreditsSequence); } -static void DebugAction_Util_Player_Name(u8 taskId) +static void DebugAction_Player_Name(u8 taskId) { DoNamingScreen(NAMING_SCREEN_PLAYER, gSaveBlock2Ptr->playerName, gSaveBlock2Ptr->playerGender, 0, 0, CB2_ReturnToFieldContinueScript); } -static void DebugAction_Util_Player_Gender(u8 taskId) +static void DebugAction_Player_Gender(u8 taskId) { if (gSaveBlock2Ptr->playerGender == MALE) gSaveBlock2Ptr->playerGender = FEMALE; @@ -2081,7 +2344,7 @@ static void DebugAction_Util_Player_Gender(u8 taskId) ScriptContext_Enable(); } -static void DebugAction_Util_Player_Id(u8 taskId) +static void DebugAction_Player_Id(u8 taskId) { u32 trainerId = Random32(); SetTrainerId(trainerId, gSaveBlock2Ptr->playerTrainerId); @@ -2098,7 +2361,7 @@ static void DebugAction_Util_CheatStart(u8 taskId) Debug_DestroyMenu_Full_Script(taskId, Debug_CheatStart); } -static void DebugAction_Util_ExpansionVersion(u8 taskId) +static void DebugAction_ROMInfo_ExpansionVersion(u8 taskId) { Debug_DestroyMenu_Full(taskId); LockPlayerFieldControls(); @@ -2127,6 +2390,58 @@ void BufferExpansionVersion(struct ScriptContext *ctx) string = StringCopy(string, sText_Unreleased); } +static void DebugAction_TimeMenu_PrintTime(u8 taskId) +{ + LockPlayerFieldControls(); + Debug_DestroyMenu_Full_Script(taskId, Debug_EventScript_TellTheTime); +} + +void DebugMenu_CalculateTime(struct ScriptContext *ctx) +{ + if (OW_USE_FAKE_RTC) + { + struct SiiRtcInfo *rtc = FakeRtc_GetCurrentTime(); + StringExpandPlaceholders(gStringVar1, gDayNameStringsTable[rtc->dayOfWeek]); + ConvertIntToDecimalStringN(gStringVar2, rtc->hour, STR_CONV_MODE_LEFT_ALIGN, 3); + ConvertIntToDecimalStringN(gStringVar3, rtc->minute, STR_CONV_MODE_LEADING_ZEROS, 2); + } + else + { + u32 day = ((gLocalTime.days - 1) + 6) % 7 ; + RtcCalcLocalTime(); + StringExpandPlaceholders(gStringVar1, gDayNameStringsTable[day]); + ConvertIntToDecimalStringN(gStringVar2, gLocalTime.hours, STR_CONV_MODE_LEFT_ALIGN, 3); + ConvertIntToDecimalStringN(gStringVar3, gLocalTime.minutes, STR_CONV_MODE_LEADING_ZEROS, 2); + } +} + +static void DebugAction_TimeMenu_PrintTimeOfDay(u8 taskId) +{ + LockPlayerFieldControls(); + Debug_DestroyMenu_Full_Script(taskId, Debug_EventScript_PrintTimeOfDay); +} + +void DebugMenu_CalculateTimeOfDay(struct ScriptContext *ctx) +{ + switch (GetTimeOfDay()) + { + case TIME_MORNING: + StringExpandPlaceholders(gStringVar1, gTimeOfDayStringsTable[TIME_MORNING]); + break; + case TIME_DAY: + StringExpandPlaceholders(gStringVar1, gTimeOfDayStringsTable[TIME_DAY]); + break; + case TIME_EVENING: + StringExpandPlaceholders(gStringVar1, gTimeOfDayStringsTable[TIME_EVENING]); + break; + case TIME_NIGHT: + StringExpandPlaceholders(gStringVar1, gTimeOfDayStringsTable[TIME_NIGHT]); + break; + default: + break; + } +} + // ******************************* // Actions Scripts static void DebugAction_Util_Script_1(u8 taskId) @@ -2826,6 +3141,15 @@ static void DebugAction_Give_PokemonComplex(u8 taskId) gTasks[taskId].tIterator = 0; } +static void Debug_Display_Level(u32 level, u32 digit, u8 windowId) +{ + StringCopy(gStringVar2, gText_DigitIndicator[digit]); + ConvertIntToDecimalStringN(gStringVar1, level, STR_CONV_MODE_LEADING_ZEROS, 3); + StringCopyPadded(gStringVar1, gStringVar1, CHAR_SPACE, 15); + StringExpandPlaceholders(gStringVar4, sDebugText_PokemonLevel); + AddTextPrinterParameterized(windowId, DEBUG_MENU_FONT, gStringVar4, 0, 0, 0, NULL); +} + static void DebugAction_Give_Pokemon_SelectId(u8 taskId) { if (JOY_NEW(DPAD_ANY)) @@ -2846,11 +3170,7 @@ static void DebugAction_Give_Pokemon_SelectId(u8 taskId) gTasks[taskId].tInput = 1; gTasks[taskId].tDigit = 0; - StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].tDigit]); - ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].tInput, STR_CONV_MODE_LEADING_ZEROS, 3); - StringCopyPadded(gStringVar1, gStringVar1, CHAR_SPACE, 15); - StringExpandPlaceholders(gStringVar4, sDebugText_PokemonLevel); - AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 0, 0, 0, NULL); + Debug_Display_Level(gTasks[taskId].tInput, gTasks[taskId].tDigit, gTasks[taskId].tSubWindowId); gTasks[taskId].func = DebugAction_Give_Pokemon_SelectLevel; } @@ -2864,18 +3184,24 @@ static void DebugAction_Give_Pokemon_SelectId(u8 taskId) } } +static void Debug_Display_TrueFalse(bool32 value, u8 windowId, const u8 *titleStr) +{ + static const u8 *txtStr; + txtStr = value ? sDebugText_True : sDebugText_False; + StringCopyPadded(gStringVar2, txtStr, CHAR_SPACE, 15); + ConvertIntToDecimalStringN(gStringVar3, value, STR_CONV_MODE_LEADING_ZEROS, 0); + StringCopyPadded(gStringVar3, gStringVar3, CHAR_SPACE, 15); + StringExpandPlaceholders(gStringVar4, titleStr); + AddTextPrinterParameterized(windowId, DEBUG_MENU_FONT, gStringVar4, 0, 0, 0, NULL); +} + static void DebugAction_Give_Pokemon_SelectLevel(u8 taskId) { if (JOY_NEW(DPAD_ANY)) { PlaySE(SE_SELECT); Debug_HandleInput_Numeric(taskId, 1, MAX_LEVEL, 3); - - StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].tDigit]); - ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].tInput, STR_CONV_MODE_LEADING_ZEROS, 3); - StringCopyPadded(gStringVar1, gStringVar1, CHAR_SPACE, 15); - StringExpandPlaceholders(gStringVar4, sDebugText_PokemonLevel); - AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 0, 0, 0, NULL); + Debug_Display_Level(gTasks[taskId].tInput, gTasks[taskId].tDigit, gTasks[taskId].tSubWindowId); } if (JOY_NEW(A_BUTTON)) @@ -2896,13 +3222,7 @@ static void DebugAction_Give_Pokemon_SelectLevel(u8 taskId) sDebugMonData->level = gTasks[taskId].tInput; gTasks[taskId].tInput = 0; gTasks[taskId].tDigit = 0; - - ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].tInput, STR_CONV_MODE_LEADING_ZEROS, 0); - StringCopyPadded(gStringVar3, gStringVar3, CHAR_SPACE, 15); - StringCopyPadded(gStringVar2, sDebugText_False, CHAR_SPACE, 15); - StringExpandPlaceholders(gStringVar4, sDebugText_PokemonShiny); - AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 0, 0, 0, NULL); - + Debug_Display_TrueFalse(gTasks[taskId].tInput, gTasks[taskId].tSubWindowId, sDebugText_PokemonShiny); gTasks[taskId].func = DebugAction_Give_Pokemon_SelectShiny; } } @@ -2916,20 +3236,23 @@ static void DebugAction_Give_Pokemon_SelectLevel(u8 taskId) } } +static void Debug_Display_Nature(u32 natureId, u32 digit, u8 windowId) +{ + StringCopy(gStringVar2, gText_DigitIndicator[digit]); + ConvertIntToDecimalStringN(gStringVar3, natureId, STR_CONV_MODE_LEADING_ZEROS, 2); + StringCopyPadded(gStringVar3, gStringVar3, CHAR_SPACE, 15); + StringCopy(gStringVar1, gNaturesInfo[natureId].name); + StringExpandPlaceholders(gStringVar4, COMPOUND_STRING("Nature ID: {STR_VAR_3}{CLEAR_TO 90}\n{STR_VAR_1}{CLEAR_TO 90}\n{CLEAR_TO 90}\n{STR_VAR_2}{CLEAR_TO 90}")); + AddTextPrinterParameterized(windowId, DEBUG_MENU_FONT, gStringVar4, 0, 0, 0, NULL); +} + static void DebugAction_Give_Pokemon_SelectShiny(u8 taskId) { - static const u8 *txtStr; - if (JOY_NEW(DPAD_ANY)) { PlaySE(SE_SELECT); gTasks[taskId].tInput ^= JOY_NEW(DPAD_UP | DPAD_DOWN) > 0; - txtStr = (gTasks[taskId].tInput == TRUE) ? sDebugText_True : sDebugText_False; - StringCopyPadded(gStringVar2, txtStr, CHAR_SPACE, 15); - ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].tInput, STR_CONV_MODE_LEADING_ZEROS, 0); - StringCopyPadded(gStringVar3, gStringVar3, CHAR_SPACE, 15); - StringExpandPlaceholders(gStringVar4, sDebugText_PokemonShiny); - AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 0, 0, 0, NULL); + Debug_Display_TrueFalse(gTasks[taskId].tInput, gTasks[taskId].tSubWindowId, sDebugText_PokemonShiny); } if (JOY_NEW(A_BUTTON)) @@ -2937,14 +3260,7 @@ static void DebugAction_Give_Pokemon_SelectShiny(u8 taskId) sDebugMonData->isShiny = gTasks[taskId].tInput; gTasks[taskId].tInput = 0; gTasks[taskId].tDigit = 0; - - 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, gNaturesInfo[0].name); - StringExpandPlaceholders(gStringVar4, sDebugText_PokemonNature); - AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 0, 0, 0, NULL); - + Debug_Display_Nature(gTasks[taskId].tInput, gTasks[taskId].tDigit, gTasks[taskId].tSubWindowId); gTasks[taskId].func = DebugAction_Give_Pokemon_SelectNature; } else if (JOY_NEW(B_BUTTON)) @@ -2955,6 +3271,17 @@ static void DebugAction_Give_Pokemon_SelectShiny(u8 taskId) } } +static void Debug_Display_Ability(u32 abilityId, u32 digit, u8 windowId)//(u32 natureId, u32 digit, u8 windowId) +{ + StringCopy(gStringVar2, gText_DigitIndicator[digit]); + ConvertIntToDecimalStringN(gStringVar3, abilityId, STR_CONV_MODE_LEADING_ZEROS, 2); + StringCopyPadded(gStringVar3, gStringVar3, CHAR_SPACE, 15); + u8 *end = StringCopy(gStringVar1, gAbilitiesInfo[abilityId].name); + WrapFontIdToFit(gStringVar1, end, DEBUG_MENU_FONT, WindowWidthPx(windowId)); + StringExpandPlaceholders(gStringVar4, sDebugText_PokemonAbility); + AddTextPrinterParameterized(windowId, DEBUG_MENU_FONT, gStringVar4, 0, 0, 0, NULL); +} + static void DebugAction_Give_Pokemon_SelectNature(u8 taskId) { if (JOY_NEW(DPAD_ANY)) @@ -2974,29 +3301,17 @@ static void DebugAction_Give_Pokemon_SelectNature(u8 taskId) gTasks[taskId].tInput = 0; } - 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, gNaturesInfo[gTasks[taskId].tInput].name); - StringExpandPlaceholders(gStringVar4, sDebugText_PokemonNature); - AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 0, 0, 0, NULL); + Debug_Display_Nature(gTasks[taskId].tInput, gTasks[taskId].tDigit, gTasks[taskId].tSubWindowId); } if (JOY_NEW(A_BUTTON)) { - u16 abilityId; sDebugMonData->nature = gTasks[taskId].tInput; gTasks[taskId].tInput = 0; gTasks[taskId].tDigit = 0; - StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].tDigit]); - ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].tInput, STR_CONV_MODE_LEADING_ZEROS, 2); - StringCopyPadded(gStringVar3, gStringVar3, CHAR_SPACE, 15); - abilityId = GetAbilityBySpecies(sDebugMonData->species, 0); - u8 *end = StringCopy(gStringVar1, gAbilitiesInfo[abilityId].name); - WrapFontIdToFit(gStringVar1, end, DEBUG_MENU_FONT, WindowWidthPx(gTasks[taskId].tSubWindowId)); - StringExpandPlaceholders(gStringVar4, sDebugText_PokemonAbility); - AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 0, 0, 0, NULL); + u32 abilityId = GetAbilityBySpecies(sDebugMonData->species, 0); + Debug_Display_Ability(abilityId, gTasks[taskId].tDigit, gTasks[taskId].tSubWindowId); gTasks[taskId].func = DebugAction_Give_Pokemon_SelectAbility; } @@ -3010,7 +3325,6 @@ static void DebugAction_Give_Pokemon_SelectNature(u8 taskId) static void DebugAction_Give_Pokemon_SelectAbility(u8 taskId) { - u16 abilityId; u8 abilityCount = NUM_ABILITY_SLOTS - 1; //-1 for proper iteration u8 i = 0; @@ -3035,14 +3349,8 @@ static void DebugAction_Give_Pokemon_SelectAbility(u8 taskId) { i++; } - abilityId = GetAbilityBySpecies(sDebugMonData->species, gTasks[taskId].tInput - i); - StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].tDigit]); - ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].tInput, STR_CONV_MODE_LEADING_ZEROS, 2); - StringCopyPadded(gStringVar3, gStringVar3, CHAR_SPACE, 15); - u8 *end = StringCopy(gStringVar1, gAbilitiesInfo[abilityId].name); - WrapFontIdToFit(gStringVar1, end, DEBUG_MENU_FONT, WindowWidthPx(gTasks[taskId].tSubWindowId)); - StringExpandPlaceholders(gStringVar4, sDebugText_PokemonAbility); - AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 0, 0, 0, NULL); + u32 abilityId = GetAbilityBySpecies(sDebugMonData->species, gTasks[taskId].tInput - i); + Debug_Display_Ability(abilityId, gTasks[taskId].tDigit, gTasks[taskId].tSubWindowId); } if (JOY_NEW(A_BUTTON)) @@ -3136,13 +3444,7 @@ static void DebugAction_Give_Pokemon_SelectDynamaxLevel(u8 taskId) sDebugMonData->dynamaxLevel = gTasks[taskId].tInput; gTasks[taskId].tInput = 0; gTasks[taskId].tDigit = 0; - - ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].tInput, STR_CONV_MODE_LEADING_ZEROS, 0); - StringCopyPadded(gStringVar3, gStringVar3, CHAR_SPACE, 15); - StringCopyPadded(gStringVar2, sDebugText_False, CHAR_SPACE, 15); - StringExpandPlaceholders(gStringVar4, sDebugText_PokemonGmaxFactor); - AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 0, 0, 0, NULL); - + Debug_Display_TrueFalse(gTasks[taskId].tInput, gTasks[taskId].tSubWindowId, sDebugText_PokemonGmaxFactor); gTasks[taskId].func = DebugAction_Give_Pokemon_SelectGigantamaxFactor; } else if (JOY_NEW(B_BUTTON)) @@ -3167,18 +3469,11 @@ static void Debug_Display_StatInfo(const u8* text, u32 stat, u32 value, u32 digi static void DebugAction_Give_Pokemon_SelectGigantamaxFactor(u8 taskId) { - static const u8 *txtStr; - if (JOY_NEW(DPAD_ANY)) { PlaySE(SE_SELECT); gTasks[taskId].tInput ^= JOY_NEW(DPAD_UP | DPAD_DOWN) > 0; - txtStr = (gTasks[taskId].tInput == TRUE) ? sDebugText_True : sDebugText_False; - StringCopyPadded(gStringVar2, txtStr, CHAR_SPACE, 15); - ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].tInput, STR_CONV_MODE_LEADING_ZEROS, 0); - StringCopyPadded(gStringVar3, gStringVar3, CHAR_SPACE, 15); - StringExpandPlaceholders(gStringVar4, sDebugText_PokemonGmaxFactor); - AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 0, 0, 0, NULL); + Debug_Display_TrueFalse(gTasks[taskId].tInput, gTasks[taskId].tSubWindowId, sDebugText_PokemonGmaxFactor); } if (JOY_NEW(A_BUTTON)) @@ -3530,6 +3825,75 @@ static void DebugAction_Give_DayCareEgg(u8 taskId) TriggerPendingDaycareEgg(); } +// ******************************* +// Actions TimeMenu + +static void DebugAction_TimeMenu_ChangeTimeOfDay(u8 taskId) +{ + u32 input = ListMenu_ProcessInput(gTasks[taskId].tMenuTaskId); + + DebugAction_DestroyExtraWindow(taskId); + switch (input) + { + case DEBUG_TIME_MENU_ITEM_MORNING: + FakeRtc_ForwardTimeTo(MORNING_HOUR_BEGIN, 0, 0); + break; + case DEBUG_TIME_MENU_ITEM_DAY: + FakeRtc_ForwardTimeTo(DAY_HOUR_BEGIN, 0, 0); + break; + case DEBUG_TIME_MENU_ITEM_EVENING: + FakeRtc_ForwardTimeTo(EVENING_HOUR_BEGIN, 0, 0); + break; + case DEBUG_TIME_MENU_ITEM_NIGHT: + FakeRtc_ForwardTimeTo(NIGHT_HOUR_BEGIN, 0, 0); + break; + } + Debug_DestroyMenu_Full(taskId); + SetMainCallback2(CB2_LoadMap); +} + +static void DebugAction_TimeMenu_ChangeWeekdays(u8 taskId) +{ + u32 input = ListMenu_ProcessInput(gTasks[taskId].tMenuTaskId); + struct SiiRtcInfo *rtc = FakeRtc_GetCurrentTime(); + u32 daysToAdd = 0; + + DebugAction_DestroyExtraWindow(taskId); + switch(input) + { + case DEBUG_TIME_MENU_ITEM_SUNDAY: + daysToAdd = ((WEEKDAY_SUN - rtc->dayOfWeek) + WEEKDAY_COUNT) % WEEKDAY_COUNT; + FakeRtc_AdvanceTimeBy(daysToAdd, 0, 0, 0); + break; + case DEBUG_TIME_MENU_ITEM_MONDAY: + daysToAdd = ((WEEKDAY_MON - rtc->dayOfWeek) + WEEKDAY_COUNT) % WEEKDAY_COUNT; + FakeRtc_AdvanceTimeBy(daysToAdd, 0, 0, 0); + break; + case DEBUG_TIME_MENU_ITEM_TUESDAY: + daysToAdd = ((WEEKDAY_TUE - rtc->dayOfWeek) + WEEKDAY_COUNT) % WEEKDAY_COUNT; + FakeRtc_AdvanceTimeBy(daysToAdd, 0, 0, 0); + break; + case DEBUG_TIME_MENU_ITEM_WEDNESDAY: + daysToAdd = ((WEEKDAY_WED - rtc->dayOfWeek) + WEEKDAY_COUNT) % WEEKDAY_COUNT; + FakeRtc_AdvanceTimeBy(daysToAdd, 0, 0, 0); + break; + case DEBUG_TIME_MENU_ITEM_THURSDAY: + daysToAdd = ((WEEKDAY_THU - rtc->dayOfWeek) + WEEKDAY_COUNT) % WEEKDAY_COUNT; + FakeRtc_AdvanceTimeBy(daysToAdd, 0, 0, 0); + break; + case DEBUG_TIME_MENU_ITEM_FRIDAY: + daysToAdd = ((WEEKDAY_FRI - rtc->dayOfWeek) + WEEKDAY_COUNT) % WEEKDAY_COUNT; + FakeRtc_AdvanceTimeBy(daysToAdd, 0, 0, 0); + break; + case DEBUG_TIME_MENU_ITEM_SATURDAY: + daysToAdd = ((WEEKDAY_SAT - rtc->dayOfWeek) + WEEKDAY_COUNT) % WEEKDAY_COUNT; + FakeRtc_AdvanceTimeBy(daysToAdd, 0, 0, 0); + break; + } + Debug_DestroyMenu_Full(taskId); + SetMainCallback2(CB2_LoadMap); +} + // ******************************* // Actions PCBag diff --git a/src/decompress.c b/src/decompress.c index 8c2f335614..ed935eae16 100644 --- a/src/decompress.c +++ b/src/decompress.c @@ -86,34 +86,6 @@ u32 LoadCompressedSpriteSheetByTemplate(const struct SpriteTemplate *template, s return ret; } -u32 LoadCompressedSpritePalette(const struct CompressedSpritePalette *src) -{ - return LoadCompressedSpritePaletteWithTag(src->data, src->tag); -} - -u32 LoadCompressedSpritePaletteWithTag(const u32 *pal, u16 tag) -{ - u32 index; - struct SpritePalette dest; - void *buffer = malloc_and_decompress(pal, NULL); - - dest.data = buffer; - dest.tag = tag; - index = LoadSpritePalette(&dest); - Free(buffer); - return index; -} - -void LoadCompressedSpritePaletteOverrideBuffer(const struct CompressedSpritePalette *src, void *buffer) -{ - struct SpritePalette dest; - - LZ77UnCompWram(src->data, buffer); - dest.data = buffer; - dest.tag = src->tag; - LoadSpritePalette(&dest); -} - void DecompressPicFromTable(const struct CompressedSpriteSheet *src, void *buffer) { LZ77UnCompWram(src->data, buffer); @@ -338,18 +310,3 @@ bool8 LoadCompressedSpriteSheetUsingHeap(const struct CompressedSpriteSheet *src Free(buffer); return FALSE; } - -bool8 LoadCompressedSpritePaletteUsingHeap(const struct CompressedSpritePalette *src) -{ - struct SpritePalette dest; - void *buffer; - - buffer = AllocZeroed(src->data[0] >> 8); - LZ77UnCompWram(src->data, buffer); - dest.data = buffer; - dest.tag = src->tag; - - LoadSpritePalette(&dest); - Free(buffer); - return FALSE; -} diff --git a/src/decoration.c b/src/decoration.c index c07bf30573..1608061255 100644 --- a/src/decoration.c +++ b/src/decoration.c @@ -95,6 +95,12 @@ struct DecorationPCContext u8 isPlayerRoom; }; +struct DecorItem +{ + const u32 *pic; + const u16 *pal; +}; + enum Windows { WINDOW_MAIN_MENU, @@ -180,7 +186,8 @@ static void CantPlaceDecorationPrompt(u8 taskId); static void InitializePuttingAwayCursorSprite(struct Sprite *sprite); static void InitializePuttingAwayCursorSprite2(struct Sprite *sprite); static u8 gpu_pal_decompress_alloc_tag_and_upload(struct PlaceDecorationGraphicsDataBuffer *data, u8 decor); -static const u32 *GetDecorationIconPicOrPalette(u16 decor, u8 mode); +static const u32 *GetDecorationIconPic(u16 decor); +static const u16 *GetDecorationIconPalette(u16 decor); static bool8 HasDecorationsInUse(u8 taskId); static void Task_ContinuePuttingAwayDecorations(u8 taskId); static void ContinuePuttingAwayDecorations(u8 taskId); @@ -2066,22 +2073,22 @@ static u8 gpu_pal_decompress_alloc_tag_and_upload(struct PlaceDecorationGraphics static u8 AddDecorationIconObjectFromIconTable(u16 tilesTag, u16 paletteTag, u8 decor) { struct SpriteSheet sheet; - struct CompressedSpritePalette palette; + struct SpritePalette palette; struct SpriteTemplate *template; u8 spriteId; if (!AllocItemIconTemporaryBuffers()) return MAX_SPRITES; - LZDecompressWram(GetDecorationIconPicOrPalette(decor, 0), gItemIconDecompressionBuffer); + LZDecompressWram(GetDecorationIconPic(decor), gItemIconDecompressionBuffer); CopyItemIconPicTo4x4Buffer(gItemIconDecompressionBuffer, gItemIcon4x4Buffer); sheet.data = gItemIcon4x4Buffer; sheet.size = 0x200; sheet.tag = tilesTag; LoadSpriteSheet(&sheet); - palette.data = GetDecorationIconPicOrPalette(decor, 1); + palette.data = GetDecorationIconPalette(decor); palette.tag = paletteTag; - LoadCompressedSpritePalette(&palette); + LoadSpritePalette(&palette); template = Alloc(sizeof(struct SpriteTemplate)); *template = gItemIconSpriteTemplate; template->tileTag = tilesTag; @@ -2092,12 +2099,20 @@ static u8 AddDecorationIconObjectFromIconTable(u16 tilesTag, u16 paletteTag, u8 return spriteId; } -static const u32 *GetDecorationIconPicOrPalette(u16 decor, u8 mode) +static const u32 *GetDecorationIconPic(u16 decor) { if (decor > NUM_DECORATIONS) decor = DECOR_NONE; - return gDecorIconTable[decor][mode]; + return gDecorIconTable[decor].pic; +} + +static const u16 *GetDecorationIconPalette(u16 decor) +{ + if (decor > NUM_DECORATIONS) + decor = DECOR_NONE; + + return gDecorIconTable[decor].pal; } static u8 AddDecorationIconObjectFromObjectEvent(u16 tilesTag, u16 paletteTag, u8 decor) @@ -2131,7 +2146,7 @@ static u8 AddDecorationIconObjectFromObjectEvent(u16 tilesTag, u16 paletteTag, u } else { - spriteId = CreateObjectGraphicsSprite(sPlaceDecorationGraphicsDataBuffer.decoration->tiles[0], SpriteCallbackDummy, 0, 0, 1); + spriteId = CreateObjectGraphicsSpriteWithTag(sPlaceDecorationGraphicsDataBuffer.decoration->tiles[0], SpriteCallbackDummy, 0, 0, 1, paletteTag); } return spriteId; } @@ -2149,7 +2164,7 @@ u8 AddDecorationIconObject(u8 decor, s16 x, s16 y, u8 priority, u16 tilesTag, u1 gSprites[spriteId].x2 = x + 4; gSprites[spriteId].y2 = y + 4; } - else if (gDecorIconTable[decor][0] == NULL) + else if (gDecorIconTable[decor].pic == NULL) { spriteId = AddDecorationIconObjectFromObjectEvent(tilesTag, paletteTag, decor); if (spriteId == MAX_SPRITES) diff --git a/src/dexnav.c b/src/dexnav.c index 1e3db82d4b..48dd75829b 100644 --- a/src/dexnav.c +++ b/src/dexnav.c @@ -36,6 +36,7 @@ #include "pokemon_summary_screen.h" #include "random.h" #include "region_map.h" +#include "rtc.h" #include "scanline_effect.h" #include "script.h" #include "script_pokemon_util.h" @@ -142,16 +143,16 @@ static void Task_DexNavWaitFadeIn(u8 taskId); static void Task_DexNavMain(u8 taskId); static void PrintCurrentSpeciesInfo(void); // SEARCH -static bool8 TryStartHiddenMonFieldEffect(u8 environment, u8 xSize, u8 ySize, bool8 smallScan); -static void DexNavGenerateMoveset(u16 species, u8 searchLevel, u8 encounterLevel, u16* moveDst); +static bool8 TryStartHiddenMonFieldEffect(enum EncounterType environment, u8 xSize, u8 ySize, bool8 smallScan); +static void DexNavGenerateMoveset(u16 species, u8 searchLevel, u8 encounterLevel, u16 *moveDst); static u16 DexNavGenerateHeldItem(u16 species, u8 searchLevel); static u8 DexNavGetAbilityNum(u16 species, u8 searchLevel); static u8 DexNavGeneratePotential(u8 searchLevel); -static u8 DexNavTryGenerateMonLevel(u16 species, u8 environment); -static u8 GetEncounterLevelFromMapData(u16 species, u8 environment); -static void CreateDexNavWildMon(u16 species, u8 potential, u8 level, u8 abilityNum, u16 item, u16* moves); +static u8 DexNavTryGenerateMonLevel(u16 species, enum EncounterType environment); +static u8 GetEncounterLevelFromMapData(u16 species, enum EncounterType environment); +static void CreateDexNavWildMon(u16 species, u8 potential, u8 level, u8 abilityNum, u16 item, u16 *moves); static u8 GetPlayerDistance(s16 x, s16 y); -static u8 DexNavPickTile(u8 environment, u8 xSize, u8 ySize, bool8 smallScan); +static u8 DexNavPickTile(enum EncounterType environment, u8 xSize, u8 ySize, bool8 smallScan); static void DexNavProximityUpdate(void); static void DexNavDrawIcons(void); static void DexNavUpdateSearchWindow(u8 proximity, u8 searchLevel); @@ -602,7 +603,7 @@ static void DexNavProximityUpdate(void) } //Pick a specific tile based on environment -static bool8 DexNavPickTile(u8 environment, u8 areaX, u8 areaY, bool8 smallScan) +static bool8 DexNavPickTile(enum EncounterType environment, u8 areaX, u8 areaY, bool8 smallScan) { // area of map to cover starting from camera position {-7, -7} s16 topX = gSaveBlock1Ptr->pos.x - SCANSTART_X + (smallScan * 5); @@ -723,7 +724,7 @@ static bool8 DexNavPickTile(u8 environment, u8 areaX, u8 areaY, bool8 smallScan) } -static bool8 TryStartHiddenMonFieldEffect(u8 environment, u8 xSize, u8 ySize, bool8 smallScan) +static bool8 TryStartHiddenMonFieldEffect(enum EncounterType environment, u8 xSize, u8 ySize, bool8 smallScan) { u8 currMapType = GetCurrentMapType(); u8 fldEffId = 0; @@ -789,7 +790,7 @@ static bool8 TryStartHiddenMonFieldEffect(u8 environment, u8 xSize, u8 ySize, bo return FALSE; } -static void DrawDexNavSearchHeldItem(u8* dst) +static void DrawDexNavSearchHeldItem(u8 *dst) { *dst = CreateSprite(&sHeldItemTemplate, SPECIES_ICON_X + 6, GetSearchWindowY() + 18, 0); if (*dst != MAX_SPRITES) @@ -911,7 +912,7 @@ static void Task_InitDexNavSearch(u8 taskId) task->func = Task_SetUpDexNavSearch; } -static void DexNavDrawPotentialStars(u8 potential, u8* dst) +static void DexNavDrawPotentialStars(u8 potential, u8 *dst) { u8 spriteId; u32 i; @@ -1212,9 +1213,9 @@ static void DexNavUpdateSearchWindow(u8 proximity, u8 searchLevel) ////////////////////////////// //// DEXNAV MON GENERATOR //// ////////////////////////////// -static void CreateDexNavWildMon(u16 species, u8 potential, u8 level, u8 abilityNum, u16 item, u16* moves) +static void CreateDexNavWildMon(u16 species, u8 potential, u8 level, u8 abilityNum, u16 item, u16 *moves) { - struct Pokemon* mon = &gEnemyParty[0]; + struct Pokemon *mon = &gEnemyParty[0]; u8 iv[3] = {NUM_STATS}; u8 i; u8 perfectIv = 31; @@ -1252,7 +1253,7 @@ static void CreateDexNavWildMon(u16 species, u8 potential, u8 level, u8 abilityN // gets a random level of the species based on map data. //if it was a hidden encounter, updates the environment it is to be found from the wildheader encounterRate -static u8 DexNavTryGenerateMonLevel(u16 species, u8 environment) +static u8 DexNavTryGenerateMonLevel(u16 species, enum EncounterType environment) { u8 levelBase = GetEncounterLevelFromMapData(species, environment); u8 levelBonus = gSaveBlock3Ptr->dexNavChain / 5; @@ -1269,7 +1270,7 @@ static u8 DexNavTryGenerateMonLevel(u16 species, u8 environment) return levelBase + levelBonus; } -static void DexNavGenerateMoveset(u16 species, u8 searchLevel, u8 encounterLevel, u16* moveDst) +static void DexNavGenerateMoveset(u16 species, u8 searchLevel, u8 encounterLevel, u16 *moveDst) { bool8 genMove = FALSE; u16 randVal = Random() % 100; @@ -1513,12 +1514,10 @@ static u8 DexNavGeneratePotential(u8 searchLevel) return 0; // No potential } -static u8 GetEncounterLevelFromMapData(u16 species, u8 environment) +static u8 GetEncounterLevelFromMapData(u16 species, enum EncounterType environment) { - u16 headerId = GetCurrentMapWildMonHeaderId(); - const struct WildPokemonInfo *landMonsInfo = gWildMonHeaders[headerId].landMonsInfo; - const struct WildPokemonInfo *waterMonsInfo = gWildMonHeaders[headerId].waterMonsInfo; - const struct WildPokemonInfo *hiddenMonsInfo = gWildMonHeaders[headerId].hiddenMonsInfo; + u32 headerId = GetCurrentMapWildMonHeaderId(); + enum TimeOfDay timeOfDay; u8 min = 100; u8 max = 0; u8 i; @@ -1526,6 +1525,9 @@ static u8 GetEncounterLevelFromMapData(u16 species, u8 environment) switch (environment) { case ENCOUNTER_TYPE_LAND: // grass + timeOfDay = GetTimeOfDayForEncounters(headerId, WILD_AREA_LAND); + const struct WildPokemonInfo *landMonsInfo = gWildMonHeaders[headerId].encounterTypes[timeOfDay].landMonsInfo; + if (landMonsInfo == NULL) return MON_LEVEL_NONEXISTENT; //Hidden pokemon should only appear on walkable tiles or surf tiles @@ -1539,6 +1541,9 @@ static u8 GetEncounterLevelFromMapData(u16 species, u8 environment) } break; case ENCOUNTER_TYPE_WATER: //water + timeOfDay = GetTimeOfDayForEncounters(headerId, WILD_AREA_WATER); + const struct WildPokemonInfo *waterMonsInfo = gWildMonHeaders[headerId].encounterTypes[timeOfDay].waterMonsInfo; + if (waterMonsInfo == NULL) return MON_LEVEL_NONEXISTENT; //Hidden pokemon should only appear on walkable tiles or surf tiles @@ -1552,6 +1557,9 @@ static u8 GetEncounterLevelFromMapData(u16 species, u8 environment) } break; case ENCOUNTER_TYPE_HIDDEN: + timeOfDay = GetTimeOfDayForEncounters(headerId, WILD_AREA_HIDDEN); + const struct WildPokemonInfo *hiddenMonsInfo = gWildMonHeaders[headerId].encounterTypes[timeOfDay].hiddenMonsInfo; + if (hiddenMonsInfo == NULL) return MON_LEVEL_NONEXISTENT; @@ -1724,11 +1732,13 @@ static void CreateNoDataIcon(s16 x, s16 y) CreateSprite(&sNoDataIconTemplate, x, y, 0); } -static bool8 CapturedAllLandMons(u16 headerId) +static bool8 CapturedAllLandMons(u32 headerId) { u16 i, species; int count = 0; - const struct WildPokemonInfo* landMonsInfo = gWildMonHeaders[headerId].landMonsInfo; + enum TimeOfDay timeOfDay = GetTimeOfDayForEncounters(headerId, WILD_AREA_LAND); + + const struct WildPokemonInfo *landMonsInfo = gWildMonHeaders[headerId].encounterTypes[timeOfDay].landMonsInfo; if (landMonsInfo != NULL) { @@ -1756,12 +1766,14 @@ static bool8 CapturedAllLandMons(u16 headerId) } //Checks if all Pokemon that can be encountered while surfing have been capture -static bool8 CapturedAllWaterMons(u16 headerId) +static bool8 CapturedAllWaterMons(u32 headerId) { u32 i; u16 species; u8 count = 0; - const struct WildPokemonInfo* waterMonsInfo = gWildMonHeaders[headerId].waterMonsInfo; + enum TimeOfDay timeOfDay = GetTimeOfDayForEncounters(headerId, WILD_AREA_WATER); + + const struct WildPokemonInfo *waterMonsInfo = gWildMonHeaders[headerId].encounterTypes[timeOfDay].waterMonsInfo; if (waterMonsInfo != NULL) { @@ -1787,12 +1799,14 @@ static bool8 CapturedAllWaterMons(u16 headerId) return FALSE; } -static bool8 CapturedAllHiddenMons(u16 headerId) +static bool8 CapturedAllHiddenMons(u32 headerId) { u32 i; u16 species; u8 count = 0; - const struct WildPokemonInfo* hiddenMonsInfo = gWildMonHeaders[headerId].hiddenMonsInfo; + enum TimeOfDay timeOfDay = GetTimeOfDayForEncounters(headerId, WILD_AREA_HIDDEN); + + const struct WildPokemonInfo *hiddenMonsInfo = gWildMonHeaders[headerId].encounterTypes[timeOfDay].hiddenMonsInfo; if (hiddenMonsInfo != NULL) { @@ -1820,7 +1834,7 @@ static bool8 CapturedAllHiddenMons(u16 headerId) static void DexNavLoadCapturedAllSymbols(void) { - u16 headerId = GetCurrentMapWildMonHeaderId(); + u32 headerId = GetCurrentMapWildMonHeaderId(); LoadCompressedSpriteSheetUsingHeap(&sCapturedAllPokemonSpriteSheet); @@ -1936,10 +1950,15 @@ static void DexNavLoadEncounterData(void) u8 hiddenIndex = 0; u16 species; u32 i; - u16 headerId = GetCurrentMapWildMonHeaderId(); - const struct WildPokemonInfo* landMonsInfo = gWildMonHeaders[headerId].landMonsInfo; - const struct WildPokemonInfo* waterMonsInfo = gWildMonHeaders[headerId].waterMonsInfo; - const struct WildPokemonInfo* hiddenMonsInfo = gWildMonHeaders[headerId].hiddenMonsInfo; + u32 headerId = GetCurrentMapWildMonHeaderId(); + enum TimeOfDay timeOfDay; + + timeOfDay = GetTimeOfDayForEncounters(headerId, WILD_AREA_LAND); + const struct WildPokemonInfo *landMonsInfo = gWildMonHeaders[headerId].encounterTypes[timeOfDay].landMonsInfo; + timeOfDay = GetTimeOfDayForEncounters(headerId, WILD_AREA_WATER); + const struct WildPokemonInfo *waterMonsInfo = gWildMonHeaders[headerId].encounterTypes[timeOfDay].waterMonsInfo; + timeOfDay = GetTimeOfDayForEncounters(headerId, WILD_AREA_HIDDEN); + const struct WildPokemonInfo *hiddenMonsInfo = gWildMonHeaders[headerId].encounterTypes[timeOfDay].hiddenMonsInfo; // nop struct data memset(sDexNavUiDataPtr->landSpecies, 0, sizeof(sDexNavUiDataPtr->landSpecies)); @@ -2204,7 +2223,7 @@ static void CreateTypeIconSprites(void) u8 i; LoadCompressedSpriteSheet(&gSpriteSheet_MoveTypes); - LoadCompressedPalette(gMoveTypes_Pal, 0x1D0, 0x60); + LoadPalette(gMoveTypes_Pal, 0x1D0, 0x60); for (i = 0; i < 2; i++) { if (sDexNavUiDataPtr->typeIconSpriteIds[i] == 0xFF) @@ -2509,12 +2528,14 @@ bool8 TryFindHiddenPokemon(void) if ((*stepPtr) == 0 && (Random() % 100 < HIDDEN_MON_SEARCH_RATE)) { // hidden pokemon - u16 headerId = GetCurrentMapWildMonHeaderId(); + u32 headerId = GetCurrentMapWildMonHeaderId(); u8 index; u16 species; - u8 environment; + enum EncounterType environment; u8 taskId; - const struct WildPokemonInfo* hiddenMonsInfo = gWildMonHeaders[headerId].hiddenMonsInfo; + enum TimeOfDay timeOfDay = GetTimeOfDayForEncounters(headerId, WILD_AREA_HIDDEN); + + const struct WildPokemonInfo *hiddenMonsInfo = gWildMonHeaders[headerId].encounterTypes[timeOfDay].hiddenMonsInfo; bool8 isHiddenMon = FALSE; // while you can still technically find hidden pokemon if there are not hidden-only pokemon on a map, @@ -2539,7 +2560,7 @@ bool8 TryFindHiddenPokemon(void) } else { - species = gWildMonHeaders[headerId].landMonsInfo->wildPokemon[ChooseWildMonIndex_Land()].species; + species = gWildMonHeaders[headerId].encounterTypes[timeOfDay].landMonsInfo->wildPokemon[ChooseWildMonIndex_Land()].species; environment = ENCOUNTER_TYPE_LAND; } break; @@ -2557,7 +2578,7 @@ bool8 TryFindHiddenPokemon(void) } else { - species = gWildMonHeaders[headerId].waterMonsInfo->wildPokemon[ChooseWildMonIndex_WaterRock()].species; + species = gWildMonHeaders[headerId].encounterTypes[timeOfDay].waterMonsInfo->wildPokemon[ChooseWildMonIndex_WaterRock()].species; environment = ENCOUNTER_TYPE_WATER; } diff --git a/src/egg_hatch.c b/src/egg_hatch.c index ee45635ce7..f65ee674d8 100644 --- a/src/egg_hatch.c +++ b/src/egg_hatch.c @@ -448,7 +448,7 @@ static u8 EggHatchCreateMonSprite(u8 useAlt, u8 state, u8 partyId, u16 *speciesL HandleLoadSpecialPokePic(TRUE, gMonSpritesGfxPtr->spritesGfx[(useAlt * 2) + B_POSITION_OPPONENT_LEFT], species, pid); - LoadCompressedSpritePaletteWithTag(GetMonFrontSpritePal(mon), species); + LoadSpritePaletteWithTag(GetMonFrontSpritePal(mon), species); *speciesLoc = species; } break; @@ -533,7 +533,7 @@ static void CB2_LoadEggHatch(void) case 2: DecompressAndLoadBgGfxUsingHeap(0, gBattleTextboxTiles, 0, 0, 0); CopyToBgTilemapBuffer(0, gBattleTextboxTilemap, 0, 0); - LoadCompressedPalette(gBattleTextboxPalette, BG_PLTT_ID(0), PLTT_SIZE_4BPP); + LoadPalette(gBattleTextboxPalette, BG_PLTT_ID(0), PLTT_SIZE_4BPP); gMain.state++; break; case 3: diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 1ad36e807b..361111ac4e 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -18,6 +18,7 @@ #include "field_player_avatar.h" #include "field_weather.h" #include "fieldmap.h" +#include "follower_npc.h" #include "follower_helper.h" #include "gpu_regs.h" #include "graphics.h" @@ -30,6 +31,7 @@ #include "pokeball.h" #include "random.h" #include "region_map.h" +#include "rtc.h" #include "script.h" #include "sound.h" #include "sprite.h" @@ -46,6 +48,7 @@ #include "constants/items.h" #include "constants/map_types.h" #include "constants/mauville_old_man.h" +#include "constants/metatile_behaviors.h" #include "constants/rgb.h" #include "constants/region_map_sections.h" #include "constants/songs.h" @@ -179,7 +182,7 @@ static u16 GetObjectEventFlagIdByObjectEventId(u8); 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); +const struct ObjectEventTemplate *GetObjectEventTemplateByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup); static void RemoveObjectEventIfOutsideView(struct ObjectEvent *); static void SpawnObjectEventOnReturnToField(u8, s16, s16); static void SetPlayerAvatarObjectEventIdAndObjectId(u8, u8); @@ -197,7 +200,7 @@ 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 * objectEvent, u32 species, bool32 shiny, bool32 female); +static void FollowerSetGraphics(struct ObjectEvent *objEvent, u32 species, bool32 shiny, bool32 female); static void ObjectEventSetGraphics(struct ObjectEvent *, const struct ObjectEventGraphicsInfo *); static void SpriteCB_VirtualObject(struct Sprite *); static void DoShadowFieldEffect(struct ObjectEvent *); @@ -209,9 +212,8 @@ static u8 DoJumpSpriteMovement(struct Sprite *); static u8 DoJumpSpecialSpriteMovement(struct Sprite *); static void CreateLevitateMovementTask(struct ObjectEvent *); static void DestroyLevitateMovementTask(u8); -static bool8 GetFollowerInfo(u32 *species, bool32 *shiny, bool32 *female); static u32 LoadDynamicFollowerPalette(u32 species, bool32 shiny, bool32 female); -static const struct ObjectEventGraphicsInfo *SpeciesToGraphicsInfo(u32 species, bool32 shiny, bool32 female); +const struct ObjectEventGraphicsInfo *SpeciesToGraphicsInfo(u32 species, bool32 shiny, bool32 female); static bool8 NpcTakeStep(struct Sprite *); static bool8 AreElevationsCompatible(u8, u8); static void CopyObjectGraphicsInfoToSpriteTemplate_WithMovementType(u16 graphicsId, u16 movementType, struct SpriteTemplate *spriteTemplate, const struct SubspriteTable **subspriteTables); @@ -556,7 +558,10 @@ static const struct SpritePalette sObjectEventSpritePalettes[] = { #endif //ITEM_STRANGE_BALL #endif //OW_FOLLOWERS_POKEBALLS {gObjectEventPal_Substitute, OBJ_EVENT_PAL_TAG_SUBSTITUTE}, + {gObjectEventPaletteLight, OBJ_EVENT_PAL_TAG_LIGHT}, + {gObjectEventPaletteLight2, OBJ_EVENT_PAL_TAG_LIGHT_2}, {gObjectEventPaletteEmotes, OBJ_EVENT_PAL_TAG_EMOTES}, + {gObjectEventPaletteNeonLight, OBJ_EVENT_PAL_TAG_NEON_LIGHT}, #ifdef BUGFIX {NULL, OBJ_EVENT_PAL_TAG_NONE}, #else @@ -1359,8 +1364,13 @@ u8 GetFirstInactiveObjectEventId(void) u8 GetObjectEventIdByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroupId) { - if (localId < OBJ_EVENT_ID_FOLLOWER) - return GetObjectEventIdByLocalIdAndMapInternal(localId, mapNum, mapGroupId); + if (localId < OBJ_EVENT_ID_DYNAMIC_BASE) + { + if (PlayerHasFollowerNPC() && localId == OBJ_EVENT_ID_NPC_FOLLOWER) + return GetFollowerNPCObjectId(); + else + return GetObjectEventIdByLocalIdAndMapInternal(localId, mapNum, mapGroupId); + } return GetObjectEventIdByLocalId(localId); } @@ -1513,7 +1523,7 @@ static bool8 GetAvailableObjectEventId(u16 localId, u8 mapNum, u8 mapGroup, u8 * return FALSE; } -static void RemoveObjectEvent(struct ObjectEvent *objectEvent) +void RemoveObjectEvent(struct ObjectEvent *objectEvent) { objectEvent->active = FALSE; RemoveObjectEventInternal(objectEvent); @@ -1734,7 +1744,7 @@ static u8 TrySetupObjectEventSprite(const struct ObjectEventTemplate *objectEven return objectEventId; } -static u8 TrySpawnObjectEventTemplate(const struct ObjectEventTemplate *objectEventTemplate, u8 mapNum, u8 mapGroup, s16 cameraX, s16 cameraY) +u8 TrySpawnObjectEventTemplate(const struct ObjectEventTemplate *objectEventTemplate, u8 mapNum, u8 mapGroup, s16 cameraX, s16 cameraY) { u8 objectEventId; u16 graphicsId = objectEventTemplate->graphicsId; @@ -1844,7 +1854,7 @@ static u32 LoadDynamicFollowerPaletteFromGraphicsId(u16 graphicsId, struct Sprit } // 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) +u8 CreateObjectGraphicsSpriteWithTag(u16 graphicsId, void (*callback)(struct Sprite *), s16 x, s16 y, u8 subpriority, u16 paletteTag) { struct SpriteTemplate *spriteTemplate; const struct SubspriteTable *subspriteTables; @@ -1888,6 +1898,11 @@ u8 CreateObjectGraphicsSprite(u16 graphicsId, void (*callback)(struct Sprite *), return spriteId; } +u8 CreateObjectGraphicsSprite(u16 graphicsId, void (*callback)(struct Sprite *), s16 x, s16 y, u8 subpriority) +{ + return CreateObjectGraphicsSpriteWithTag(graphicsId, callback, x, y, subpriority, TAG_NONE); +} + #define sVirtualObjId data[0] #define sVirtualObjElev data[1] @@ -1943,12 +1958,10 @@ struct Pokemon *GetFirstLiveMon(void) for (i = 0; i < PARTY_SIZE; i++) { struct Pokemon *mon = &gPlayerParty[i]; - if ((OW_MON_ALLOWED_SPECIES && GetMonData(mon, MON_DATA_SPECIES_OR_EGG) != VarGet(OW_MON_ALLOWED_SPECIES)) - || (OW_MON_ALLOWED_MET_LVL && GetMonData(mon, MON_DATA_MET_LEVEL) != VarGet(OW_MON_ALLOWED_MET_LVL)) - || (OW_MON_ALLOWED_MET_LOC && GetMonData(mon, MON_DATA_MET_LOCATION) != VarGet(OW_MON_ALLOWED_MET_LOC))) - { + if ((OW_FOLLOWERS_ALLOWED_SPECIES && GetMonData(mon, MON_DATA_SPECIES_OR_EGG) != VarGet(OW_FOLLOWERS_ALLOWED_SPECIES)) + || (OW_FOLLOWERS_ALLOWED_MET_LVL && GetMonData(mon, MON_DATA_MET_LEVEL) != VarGet(OW_FOLLOWERS_ALLOWED_MET_LVL)) + || (OW_FOLLOWERS_ALLOWED_MET_LOC && GetMonData(mon, MON_DATA_MET_LOCATION) != VarGet(OW_FOLLOWERS_ALLOWED_MET_LOC))) continue; - } if (gPlayerParty[i].hp > 0 && !(gPlayerParty[i].box.isEgg || gPlayerParty[i].box.isBadEgg)) return &gPlayerParty[i]; @@ -1969,7 +1982,7 @@ struct ObjectEvent *GetFollowerObject(void) } // Return graphicsInfo for a pokemon species & form -static const struct ObjectEventGraphicsInfo *SpeciesToGraphicsInfo(u32 species, bool32 shiny, bool32 female) +const struct ObjectEventGraphicsInfo *SpeciesToGraphicsInfo(u32 species, bool32 shiny, bool32 female) { const struct ObjectEventGraphicsInfo *graphicsInfo = NULL; #if OW_POKEMON_OBJECT_EVENTS @@ -2042,11 +2055,11 @@ static u32 LoadDynamicFollowerPalette(u32 species, bool32 shiny, bool32 female) // Check if pal data must be decompressed if (IsLZ77Data(spritePalette.data, PLTT_SIZE_4BPP, PLTT_SIZE_4BPP)) { - struct CompressedSpritePalette compSpritePalette; + struct SpritePalette compSpritePalette; compSpritePalette.data = (const void *) spritePalette.data; compSpritePalette.tag = spritePalette.tag; - paletteNum = LoadCompressedSpritePalette(&compSpritePalette); + paletteNum = LoadSpritePalette(&compSpritePalette); } else { @@ -2058,18 +2071,18 @@ static u32 LoadDynamicFollowerPalette(u32 species, bool32 shiny, bool32 female) { // 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, female); //ETODO + const u16 *palette = GetMonSpritePalFromSpecies(species, shiny, female); //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); + LoadSpritePaletteWithTag(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); + UpdateSpritePaletteWithWeather(paletteNum, FALSE); return paletteNum; } @@ -2088,10 +2101,6 @@ static void FollowerSetGraphics(struct ObjectEvent *objEvent, u32 species, bool3 sprite->inUse = TRUE; sprite->oam.paletteNum = LoadDynamicFollowerPalette(species, shiny, female); } - 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 @@ -2136,7 +2145,7 @@ static void RefreshFollowerGraphics(struct ObjectEvent *objEvent) { UpdateSpritePalette(&sObjectEventSpritePalettes[i], sprite); if (gWeatherPtr->currWeather != WEATHER_FOG_HORIZONTAL) // don't want to weather blend in fog - UpdateSpritePaletteWithWeather(sprite->oam.paletteNum); + UpdateSpritePaletteWithWeather(sprite->oam.paletteNum, FALSE); } } @@ -2185,7 +2194,7 @@ static bool8 GetMonInfo(struct Pokemon *mon, u32 *species, bool32 *shiny, bool32 } // Retrieve graphic information about the following pokemon, if any -static bool8 GetFollowerInfo(u32 *species, bool32 *shiny, bool32 *female) +bool8 GetFollowerInfo(u32 *species, bool32 *shiny, bool32 *female) { return GetMonInfo(GetFirstLiveMon(), species, shiny, female); } @@ -2202,13 +2211,16 @@ void UpdateFollowingPokemon(void) // 1. GetFollowerInfo returns FALSE // 2. Map is indoors and gfx is larger than 32x32 // 3. flag is set + // 4. a follower NPC is present if (OW_POKEMON_OBJECT_EVENTS == FALSE || OW_FOLLOWERS_ENABLED == FALSE || FlagGet(B_FLAG_FOLLOWERS_DISABLED) || !GetFollowerInfo(&species, &shiny, &female) || SpeciesToGraphicsInfo(species, shiny, female) == NULL || (gMapHeader.mapType == MAP_TYPE_INDOOR && SpeciesToGraphicsInfo(species, shiny, female)->oam->size > ST_OAM_SIZE_2) - || FlagGet(FLAG_TEMP_HIDE_FOLLOWER)) + || FlagGet(FLAG_TEMP_HIDE_FOLLOWER) + || PlayerHasFollowerNPC() + ) { RemoveFollowingPokemon(); return; @@ -2349,9 +2361,15 @@ bool32 CheckMsgCondition(const struct MsgCondition *cond, struct Pokemon *mon, u 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_TIME_OF_DAY: + { + // Must match time of day, have natural light on the map, + // and not have weather that obscures the sky + u32 weather = GetCurrentWeather(); + return (cond->data.raw == gTimeOfDay + && MapHasNaturalLight(gMapHeader.mapType) + && (weather == WEATHER_NONE || weather == WEATHER_SUNNY_CLOUDS || weather == WEATHER_SUNNY)); + } case MSG_COND_NEAR_MB: multi = FindMetatileBehaviorWithinRange(obj->currentCoords.x, obj->currentCoords.y, @@ -2571,6 +2589,156 @@ void GetFollowerAction(struct ScriptContext *ctx) // Essentially a big switch fo gFollowerBasicMessages[emotion].script); } +#define sLightType data[5] +#define sLightXPos data[6] +#define sLightYPos data[7] + +// Sprite callback for light sprites +void UpdateLightSprite(struct Sprite *sprite) +{ + s16 left = gSaveBlock1Ptr->pos.x - 2; + s16 right = gSaveBlock1Ptr->pos.x + 17; + s16 top = gSaveBlock1Ptr->pos.y; + s16 bottom = gSaveBlock1Ptr->pos.y + 15; + s16 x = sprite->sLightXPos; + s16 y = sprite->sLightYPos; + u16 sheetTileStart; + u32 paletteNum; + if (!(x >= left && x <= right && y >= top && y <= bottom)) + { + sheetTileStart = sprite->sheetTileStart; + paletteNum = sprite->oam.paletteNum; + DestroySprite(sprite); + FieldEffectFreeTilesIfUnused(sheetTileStart); + FieldEffectFreePaletteIfUnused(paletteNum); + Weather_SetBlendCoeffs(7, BASE_SHADOW_INTENSITY); // TODO: Restore original blend coeffs at dawn + return; + } + + if (gTimeOfDay != TIME_NIGHT) + { + sprite->invisible = TRUE; + return; + } + + // Note: Don't set window registers during hardware fade! + switch (sprite->sLightType) + { + default: + case LIGHT_TYPE_BALL: + if (gPaletteFade.active) // if palette fade is active, don't flicker since the timer won't be updated + { + Weather_SetBlendCoeffs(7, BASE_SHADOW_INTENSITY); + sprite->invisible = FALSE; + } + else if (gPlayerAvatar.tileTransitionState) + { + Weather_SetBlendCoeffs(7, BASE_SHADOW_INTENSITY); // As long as the second coefficient stays 12, shadows will not change + sprite->invisible = FALSE; + if (GetSpritePaletteTagByPaletteNum(sprite->oam.paletteNum) == OBJ_EVENT_PAL_TAG_LIGHT_2) + LoadSpritePaletteInSlot(&sObjectEventSpritePalettes[FindObjectEventPaletteIndexByTag(OBJ_EVENT_PAL_TAG_LIGHT)], sprite->oam.paletteNum); + } + else if ((sprite->invisible = gTimeUpdateCounter & 1)) + { + Weather_SetBlendCoeffs(7, BASE_SHADOW_INTENSITY); + sprite->invisible = FALSE; + if (GetSpritePaletteTagByPaletteNum(sprite->oam.paletteNum) == OBJ_EVENT_PAL_TAG_LIGHT_2) + LoadSpritePaletteInSlot(&sObjectEventSpritePalettes[FindObjectEventPaletteIndexByTag(OBJ_EVENT_PAL_TAG_LIGHT)], sprite->oam.paletteNum); + } + break; + case LIGHT_TYPE_PKMN_CENTER_SIGN: + case LIGHT_TYPE_POKE_MART_SIGN: + Weather_SetBlendCoeffs(12, BASE_SHADOW_INTENSITY); + sprite->invisible = FALSE; + break; + } +} + +// Spawn a light at a map coordinate +static void SpawnLightSprite(s16 x, s16 y, s16 camX, s16 camY, u32 lightType) +{ + struct Sprite *sprite; + const struct SpriteTemplate *template; + u32 i; + for (i = 0; i < MAX_SPRITES; i++) + { + sprite = &gSprites[i]; + if (sprite->inUse && sprite->callback == UpdateLightSprite && sprite->sLightXPos == x && sprite->sLightYPos == y) + return; + } + lightType = min(lightType, ARRAY_COUNT(gFieldEffectLightTemplates) - 1); // bounds checking + template = gFieldEffectLightTemplates[lightType]; + LoadSpriteSheetByTemplate(template, 0, 0); + sprite = &gSprites[CreateSprite(template, 0, 0, 0)]; + if (lightType == 0 && (i = IndexOfSpritePaletteTag(template->paletteTag + 1)) < 16) + sprite->oam.paletteNum = i; + else + UpdateSpritePaletteByTemplate(template, sprite); + GetMapCoordsFromSpritePos(x + camX, y + camY, &sprite->x, &sprite->y); + sprite->sLightType = lightType; + sprite->sLightXPos = x; + sprite->sLightYPos = y; + sprite->affineAnims = gDummySpriteAffineAnimTable; + sprite->affineAnimBeginning = TRUE; + sprite->coordOffsetEnabled = TRUE; + switch (lightType) + { + default: + case LIGHT_TYPE_BALL: + sprite->centerToCornerVecX = -(32 >> 1); + sprite->centerToCornerVecY = -(32 >> 1); + sprite->oam.priority = 1; + sprite->oam.objMode = ST_OAM_OBJ_BLEND; + sprite->oam.affineMode = ST_OAM_AFFINE_NORMAL; + sprite->x += 8; + sprite->y += 22 + sprite->centerToCornerVecY; + break; + case LIGHT_TYPE_PKMN_CENTER_SIGN: + case LIGHT_TYPE_POKE_MART_SIGN: + sprite->centerToCornerVecX = -(16 >> 1); + sprite->centerToCornerVecY = -(16 >> 1); + sprite->oam.priority = 2; + sprite->subpriority = 0xFF; + sprite->oam.objMode = ST_OAM_OBJ_BLEND; + break; + } +} + +#undef sLightType +#undef sLightXPos +#undef sLightYPos + +void TrySpawnLightSprites(s16 camX, s16 camY) +{ + u32 i; + u8 objectCount; + s16 left = gSaveBlock1Ptr->pos.x - 2; + s16 right = gSaveBlock1Ptr->pos.x + MAP_OFFSET_W + 2; + s16 top = gSaveBlock1Ptr->pos.y; + s16 bottom = gSaveBlock1Ptr->pos.y + MAP_OFFSET_H + 2; + if (gMapHeader.events == NULL) + return; + + if (InBattlePyramid()) + objectCount = GetNumBattlePyramidObjectEvents(); + else if (InTrainerHill()) + objectCount = 2; + else + objectCount = gMapHeader.events->objectEventCount; + + for (i = 0; i < objectCount; i++) + { + struct ObjectEventTemplate *template = &gSaveBlock1Ptr->objectEventTemplates[i]; + s16 npcX = template->x + MAP_OFFSET; + s16 npcY = template->y + MAP_OFFSET; + if (top <= npcY && bottom >= npcY + && left <= npcX && right >= npcX + && !FlagGet(template->flagId) + && template->graphicsId == OBJ_EVENT_GFX_LIGHT_SPRITE) // event is light sprite instead + SpawnLightSprite(npcX, npcY, camX, camY, template->trainerRange_berryTreeId); + } +} + void TrySpawnObjectEvents(s16 cameraX, s16 cameraY) { u8 i; @@ -2596,9 +2764,13 @@ void TrySpawnObjectEvents(s16 cameraX, s16 cameraY) s16 npcX = template->x + MAP_OFFSET; s16 npcY = template->y + MAP_OFFSET; - if (top <= npcY && bottom >= npcY && left <= npcX && right >= npcX - && !FlagGet(template->flagId)) - TrySpawnObjectEventTemplate(template, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, cameraX, cameraY); + if (top <= npcY && bottom >= npcY && left <= npcX && right >= npcX && !FlagGet(template->flagId)) + { + if (template->graphicsId == OBJ_EVENT_GFX_LIGHT_SPRITE) + SpawnLightSprite(npcX, npcY, cameraX, cameraY, template->trainerRange_berryTreeId); // light sprite instead + else + TrySpawnObjectEventTemplate(template, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, cameraX, cameraY); + } } } } @@ -2621,7 +2793,8 @@ void RemoveObjectEventsOutsideView(void) // 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) + if (objectEvent->active && !objectEvent->isPlayer && objectEvent->localId != OBJ_EVENT_ID_FOLLOWER + && objectEvent->localId != OBJ_EVENT_ID_NPC_FOLLOWER) RemoveObjectEventIfOutsideView(objectEvent); } } @@ -2654,6 +2827,7 @@ void SpawnObjectEventsOnReturnToField(s16 x, s16 y) SpawnObjectEventOnReturnToField(i, x, y); } CreateReflectionEffectSprites(); + TrySpawnLightSprites(x, y); } static void SpawnObjectEventOnReturnToField(u8 objectEventId, s16 x, s16 y) @@ -2728,7 +2902,7 @@ static void ResetObjectEventFldEffData(struct ObjectEvent *objectEvent) { objectEvent->singleMovementActive = FALSE; objectEvent->triggerGroundEffectsOnMove = TRUE; - objectEvent->hasShadow = FALSE; + objectEvent->noShadow = FALSE; objectEvent->hasReflection = FALSE; objectEvent->inShortGrass = FALSE; objectEvent->inShallowFlowingWater = FALSE; @@ -2752,7 +2926,17 @@ static u8 UpdateSpritePalette(const struct SpritePalette *spritePalette, struct sprite->inUse = FALSE; FieldEffectFreePaletteIfUnused(sprite->oam.paletteNum); sprite->inUse = TRUE; - return sprite->oam.paletteNum = LoadSpritePalette(spritePalette); + if (IndexOfSpritePaletteTag(spritePalette->tag) == 0xFF) + { + sprite->oam.paletteNum = LoadSpritePalette(spritePalette); + UpdateSpritePaletteWithWeather(sprite->oam.paletteNum, FALSE); + } + else + { + sprite->oam.paletteNum = LoadSpritePalette(spritePalette); + } + + return sprite->oam.paletteNum; } // Find and update based on template's paletteTag @@ -3007,12 +3191,15 @@ static void UNUSED LoadObjectEventPaletteSet(u16 *paletteTags) LoadObjectEventPalette(paletteTags[i]); } +// Really just loads the palette and applies weather fade static u8 LoadSpritePaletteIfTagExists(const struct SpritePalette *spritePalette) { u8 paletteNum = IndexOfSpritePaletteTag(spritePalette->tag); if (paletteNum != 0xFF) // don't load twice; return return paletteNum; paletteNum = LoadSpritePalette(spritePalette); + if (paletteNum != 0xFF) + UpdateSpritePaletteWithWeather(paletteNum, FALSE); return paletteNum; } @@ -3353,7 +3540,7 @@ const u8 *GetObjectEventScriptPointerByObjectEventId(u8 objectEventId) return GetObjectEventScriptPointerByLocalIdAndMap(gObjectEvents[objectEventId].localId, gObjectEvents[objectEventId].mapNum, gObjectEvents[objectEventId].mapGroup); } -static u16 GetObjectEventFlagIdByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup) +u16 GetObjectEventFlagIdByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup) { const struct ObjectEventTemplate *obj = GetObjectEventTemplateByLocalIdAndMap(localId, mapNum, mapGroup); #ifdef UBFIX @@ -3400,7 +3587,7 @@ u8 GetObjectEventBerryTreeId(u8 objectEventId) return gObjectEvents[objectEventId].trainerRange_berryTreeId; } -static const struct ObjectEventTemplate *GetObjectEventTemplateByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup) +const struct ObjectEventTemplate *GetObjectEventTemplateByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup) { const struct ObjectEventTemplate *templates; const struct MapHeader *mapHeader; @@ -5550,7 +5737,7 @@ bool8 FollowablePlayerMovement_Step(struct ObjectEvent *objectEvent, struct Spri direction = gObjectEvents[gPlayerAvatar.objectEventId].movementDirection; objectEvent->facingDirectionLocked = TRUE; } - + MoveCoords(direction, &x, &y); GetCollisionAtCoords(objectEvent, x, y, direction); // Sets directionOverwrite for stairs if (GetLedgeJumpDirection(x, y, direction) != DIR_NONE) @@ -6260,7 +6447,9 @@ u32 GetObjectObjectCollidesWith(struct ObjectEvent *objectEvent, s16 x, s16 y, b for (i = 0; i < OBJECT_EVENTS_COUNT; i++) { curObject = &gObjectEvents[i]; - if (curObject->active && (curObject->movementType != MOVEMENT_TYPE_FOLLOW_PLAYER || objectEvent != &gObjectEvents[gPlayerAvatar.objectEventId]) && curObject != objectEvent) + if (curObject->active && (curObject->movementType != MOVEMENT_TYPE_FOLLOW_PLAYER || objectEvent != &gObjectEvents[gPlayerAvatar.objectEventId]) && curObject != objectEvent + && !FollowerNPC_IsCollisionExempt(curObject, objectEvent) + ) { // check for collision if curObject is active, not the object in question, and not exempt from collisions if ((curObject->currentCoords.x == x && curObject->currentCoords.y == y) || (curObject->previousCoords.x == x && curObject->previousCoords.y == y)) @@ -6452,6 +6641,7 @@ bool8 ObjectEventSetHeldMovement(struct ObjectEvent *objectEvent, u8 movementAct objectEvent->heldMovementActive = TRUE; objectEvent->heldMovementFinished = FALSE; gSprites[objectEvent->spriteId].sActionFuncId = 0; + NPCFollow(objectEvent, movementActionId, FALSE); // When player is moved via script, set copyable movement // for any followers via a lookup table @@ -7058,6 +7248,8 @@ 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) { + if (OW_OBJECT_VANILLA_SHADOWS) + SetUpShadow(objectEvent); // 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 @@ -7096,6 +7288,10 @@ static u8 UpdateJumpAnim(struct ObjectEvent *objectEvent, struct Sprite *sprite, objectEvent->triggerGroundEffectsOnStop = TRUE; objectEvent->landingJump = TRUE; sprite->animPaused = TRUE; + if (OW_OBJECT_VANILLA_SHADOWS) + // Somewhat ugly workaround, the shadow is disabled in UpdateShadowFieldEffect, + // but due to code changes from DNS, it needs new signaling + objectEvent->jumpDone = TRUE; } return result; } @@ -7152,7 +7348,7 @@ bool8 MovementAction_Jump2Down_Step1(struct ObjectEvent *objectEvent, struct Spr { if (DoJumpAnim(objectEvent, sprite)) { - objectEvent->hasShadow = FALSE; + objectEvent->noShadow = FALSE; sprite->sActionFuncId = 2; return TRUE; } @@ -7169,7 +7365,7 @@ bool8 MovementAction_Jump2Up_Step1(struct ObjectEvent *objectEvent, struct Sprit { if (DoJumpAnim(objectEvent, sprite)) { - objectEvent->hasShadow = FALSE; + objectEvent->noShadow = FALSE; sprite->sActionFuncId = 2; return TRUE; } @@ -7186,7 +7382,7 @@ bool8 MovementAction_Jump2Left_Step1(struct ObjectEvent *objectEvent, struct Spr { if (DoJumpAnim(objectEvent, sprite)) { - objectEvent->hasShadow = FALSE; + objectEvent->noShadow = FALSE; sprite->sActionFuncId = 2; return TRUE; } @@ -7203,7 +7399,7 @@ bool8 MovementAction_Jump2Right_Step1(struct ObjectEvent *objectEvent, struct Sp { if (DoJumpAnim(objectEvent, sprite)) { - objectEvent->hasShadow = FALSE; + objectEvent->noShadow = FALSE; sprite->sActionFuncId = 2; return TRUE; } @@ -8089,7 +8285,7 @@ bool8 MovementAction_JumpDown_Step1(struct ObjectEvent *objectEvent, struct Spri { if (DoJumpAnim(objectEvent, sprite)) { - objectEvent->hasShadow = 0; + objectEvent->noShadow = FALSE; sprite->sActionFuncId = 2; return TRUE; } @@ -8106,7 +8302,7 @@ bool8 MovementAction_JumpUp_Step1(struct ObjectEvent *objectEvent, struct Sprite { if (DoJumpAnim(objectEvent, sprite)) { - objectEvent->hasShadow = 0; + objectEvent->noShadow = FALSE; sprite->sActionFuncId = 2; return TRUE; } @@ -8123,7 +8319,7 @@ bool8 MovementAction_JumpLeft_Step1(struct ObjectEvent *objectEvent, struct Spri { if (DoJumpAnim(objectEvent, sprite)) { - objectEvent->hasShadow = 0; + objectEvent->noShadow = FALSE; sprite->sActionFuncId = 2; return TRUE; } @@ -8140,7 +8336,7 @@ bool8 MovementAction_JumpRight_Step1(struct ObjectEvent *objectEvent, struct Spr { if (DoJumpAnim(objectEvent, sprite)) { - objectEvent->hasShadow = 0; + objectEvent->noShadow = FALSE; sprite->sActionFuncId = 2; return TRUE; } @@ -8157,7 +8353,7 @@ bool8 MovementAction_JumpInPlaceDown_Step1(struct ObjectEvent *objectEvent, stru { if (DoJumpAnim(objectEvent, sprite)) { - objectEvent->hasShadow = 0; + objectEvent->noShadow = FALSE; sprite->sActionFuncId = 2; return TRUE; } @@ -8174,7 +8370,7 @@ bool8 MovementAction_JumpInPlaceUp_Step1(struct ObjectEvent *objectEvent, struct { if (DoJumpAnim(objectEvent, sprite)) { - objectEvent->hasShadow = 0; + objectEvent->noShadow = FALSE; sprite->sActionFuncId = 2; return TRUE; } @@ -8191,7 +8387,7 @@ bool8 MovementAction_JumpInPlaceLeft_Step1(struct ObjectEvent *objectEvent, stru { if (DoJumpAnim(objectEvent, sprite)) { - objectEvent->hasShadow = 0; + objectEvent->noShadow = FALSE; sprite->sActionFuncId = 2; return TRUE; } @@ -8208,7 +8404,7 @@ bool8 MovementAction_JumpInPlaceRight_Step1(struct ObjectEvent *objectEvent, str { if (DoJumpAnim(objectEvent, sprite)) { - objectEvent->hasShadow = 0; + objectEvent->noShadow = FALSE; sprite->sActionFuncId = 2; return TRUE; } @@ -8225,7 +8421,7 @@ bool8 MovementAction_JumpInPlaceDownUp_Step1(struct ObjectEvent *objectEvent, st { if (DoJumpInPlaceAnim(objectEvent, sprite)) { - objectEvent->hasShadow = 0; + objectEvent->noShadow = FALSE; sprite->sActionFuncId = 2; return TRUE; } @@ -8242,7 +8438,7 @@ bool8 MovementAction_JumpInPlaceUpDown_Step1(struct ObjectEvent *objectEvent, st { if (DoJumpInPlaceAnim(objectEvent, sprite)) { - objectEvent->hasShadow = 0; + objectEvent->noShadow = FALSE; sprite->sActionFuncId = 2; return TRUE; } @@ -8259,7 +8455,7 @@ bool8 MovementAction_JumpInPlaceLeftRight_Step1(struct ObjectEvent *objectEvent, { if (DoJumpInPlaceAnim(objectEvent, sprite)) { - objectEvent->hasShadow = 0; + objectEvent->noShadow = FALSE; sprite->sActionFuncId = 2; return TRUE; } @@ -8276,7 +8472,7 @@ bool8 MovementAction_JumpInPlaceRightLeft_Step1(struct ObjectEvent *objectEvent, { if (DoJumpInPlaceAnim(objectEvent, sprite)) { - objectEvent->hasShadow = 0; + objectEvent->noShadow = FALSE; sprite->sActionFuncId = 2; return TRUE; } @@ -8721,7 +8917,7 @@ bool8 MovementAction_AcroWheelieHopFaceDown_Step1(struct ObjectEvent *objectEven { if (DoJumpAnim(objectEvent, sprite)) { - objectEvent->hasShadow = FALSE; + objectEvent->noShadow = FALSE; sprite->sActionFuncId = 2; return TRUE; } @@ -8738,7 +8934,7 @@ bool8 MovementAction_AcroWheelieHopFaceUp_Step1(struct ObjectEvent *objectEvent, { if (DoJumpAnim(objectEvent, sprite)) { - objectEvent->hasShadow = FALSE; + objectEvent->noShadow = FALSE; sprite->sActionFuncId = 2; return TRUE; } @@ -8755,7 +8951,7 @@ bool8 MovementAction_AcroWheelieHopFaceLeft_Step1(struct ObjectEvent *objectEven { if (DoJumpAnim(objectEvent, sprite)) { - objectEvent->hasShadow = FALSE; + objectEvent->noShadow = FALSE; sprite->sActionFuncId = 2; return TRUE; } @@ -8772,7 +8968,7 @@ bool8 MovementAction_AcroWheelieHopFaceRight_Step1(struct ObjectEvent *objectEve { if (DoJumpAnim(objectEvent, sprite)) { - objectEvent->hasShadow = FALSE; + objectEvent->noShadow = FALSE; sprite->sActionFuncId = 2; return TRUE; } @@ -8789,7 +8985,7 @@ bool8 MovementAction_AcroWheelieHopDown_Step1(struct ObjectEvent *objectEvent, s { if (DoJumpAnim(objectEvent, sprite)) { - objectEvent->hasShadow = FALSE; + objectEvent->noShadow = FALSE; sprite->sActionFuncId = 2; return TRUE; } @@ -8806,7 +9002,7 @@ bool8 MovementAction_AcroWheelieHopUp_Step1(struct ObjectEvent *objectEvent, str { if (DoJumpAnim(objectEvent, sprite)) { - objectEvent->hasShadow = FALSE; + objectEvent->noShadow = FALSE; sprite->sActionFuncId = 2; return TRUE; } @@ -8826,7 +9022,7 @@ bool8 MovementAction_AcroWheelieHopLeft_Step1(struct ObjectEvent *objectEvent, s { if (DoJumpAnim(objectEvent, sprite)) { - objectEvent->hasShadow = FALSE; + objectEvent->noShadow = FALSE; sprite->sActionFuncId = 2; return TRUE; } @@ -8846,7 +9042,7 @@ bool8 MovementAction_AcroWheelieHopRight_Step1(struct ObjectEvent *objectEvent, { if (DoJumpAnim(objectEvent, sprite)) { - objectEvent->hasShadow = FALSE; + objectEvent->noShadow = FALSE; sprite->sActionFuncId = 2; return TRUE; } @@ -8863,7 +9059,7 @@ bool8 MovementAction_AcroWheelieJumpDown_Step1(struct ObjectEvent *objectEvent, { if (DoJumpAnim(objectEvent, sprite)) { - objectEvent->hasShadow = FALSE; + objectEvent->noShadow = FALSE; sprite->sActionFuncId = 2; return TRUE; } @@ -8880,7 +9076,7 @@ bool8 MovementAction_AcroWheelieJumpUp_Step1(struct ObjectEvent *objectEvent, st { if (DoJumpAnim(objectEvent, sprite)) { - objectEvent->hasShadow = FALSE; + objectEvent->noShadow = FALSE; sprite->sActionFuncId = 2; return TRUE; } @@ -8900,7 +9096,7 @@ bool8 MovementAction_AcroWheelieJumpLeft_Step1(struct ObjectEvent *objectEvent, { if (DoJumpAnim(objectEvent, sprite)) { - objectEvent->hasShadow = FALSE; + objectEvent->noShadow = FALSE; sprite->sActionFuncId = 2; return TRUE; } @@ -8920,7 +9116,7 @@ bool8 MovementAction_AcroWheelieJumpRight_Step1(struct ObjectEvent *objectEvent, { if (DoJumpAnim(objectEvent, sprite)) { - objectEvent->hasShadow = FALSE; + objectEvent->noShadow = FALSE; sprite->sActionFuncId = 2; return TRUE; } @@ -9641,11 +9837,11 @@ static void UpdateObjectEventElevationAndPriority(struct ObjectEvent *objEvent, return; ObjectEventUpdateElevation(objEvent, sprite); - if (objEvent->localId == OBJ_EVENT_ID_FOLLOWER) + if (objEvent->localId == OBJ_EVENT_ID_FOLLOWER || objEvent->localId == OBJ_EVENT_ID_NPC_FOLLOWER) { // keep subspriteMode synced with player's // so that it disappears under bridges when they do - if (OW_LARGE_OW_SUPPORT) + if (OW_LARGE_OW_SUPPORT && objEvent->localId == OBJ_EVENT_ID_FOLLOWER) sprite->subspriteMode |= gSprites[gPlayerAvatar.spriteId].subspriteMode & SUBSPRITES_IGNORE_PRIORITY; // if transitioning between elevations, use the player's elevation if (!objEvent->currentElevation) @@ -9704,7 +9900,7 @@ static void ObjectEventUpdateSubpriority(struct ObjectEvent *objEvent, struct Sp return; // If transitioning between elevations, use the player's elevation - if (!objEvent->currentElevation && objEvent->localId == OBJ_EVENT_ID_FOLLOWER) + if (!objEvent->currentElevation && (objEvent->localId == OBJ_EVENT_ID_FOLLOWER || objEvent->localId == OBJ_EVENT_ID_NPC_FOLLOWER)) objEvent = &gObjectEvents[gPlayerAvatar.objectEventId]; SetObjectSubpriorityByElevation(objEvent->previousElevation, sprite, 1); @@ -10033,14 +10229,17 @@ static void (*const sGroundEffectFuncs[])(struct ObjectEvent *objEvent, struct S static void DoFlaggedGroundEffects(struct ObjectEvent *objEvent, struct Sprite *sprite, u32 flags) { - u8 i; - + u32 i; if (ObjectEventIsFarawayIslandMew(objEvent) == TRUE && !ShouldMewShakeGrass(objEvent)) return; for (i = 0; i < ARRAY_COUNT(sGroundEffectFuncs); i++, flags >>= 1) if (flags & 1) sGroundEffectFuncs[i](objEvent, sprite); + if (!OW_OBJECT_VANILLA_SHADOWS && CurrentMapHasShadows() && !(gWeatherPtr->noShadows || objEvent->inHotSprings || objEvent->inSandPile || MetatileBehavior_IsPuddle(objEvent->currentMetatileBehavior))) + { + SetUpShadow(objEvent); + } } void filters_out_some_ground_effects(struct ObjectEvent *objEvent, u32 *flags) @@ -10799,9 +10998,9 @@ u32 StartFieldEffectForObjectEvent(u8 fieldEffectId, struct ObjectEvent *objectE static void DoShadowFieldEffect(struct ObjectEvent *objectEvent) { - if (!objectEvent->hasShadow) + if (objectEvent->noShadow) { - objectEvent->hasShadow = TRUE; + objectEvent->noShadow = FALSE; StartFieldEffectForObjectEvent(FLDEFF_SHADOW, objectEvent); } } @@ -11028,6 +11227,20 @@ bool8 MovementAction_EmoteDoubleExclamationMark_Step0(struct ObjectEvent *object return TRUE; } +bool8 PlayerIsUnderWaterfall(struct ObjectEvent *objectEvent) +{ + s16 x; + s16 y; + + x = objectEvent->currentCoords.x; + y = objectEvent->currentCoords.y; + MoveCoordsInDirection(DIR_NORTH, &x, &y, 0, 1); + if (MetatileBehavior_IsWaterfall(MapGridGetMetatileBehaviorAt(x, y))) + return TRUE; + + return FALSE; +} + // Get gfx data from daycare pokemon and store it in vars void GetDaycareGraphics(struct ScriptContext *ctx) { @@ -11207,3 +11420,86 @@ static u16 GetUnownSpecies(struct Pokemon *mon) return SPECIES_UNOWN; return SPECIES_UNOWN_B + form - 1; } + +static void InitMovementSurfStill(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction, u8 speed) +{ + u8 (*functions[ARRAY_COUNT(sDirectionAnimFuncsBySpeed)])(u8); + + memcpy(functions, sDirectionAnimFuncsBySpeed, sizeof sDirectionAnimFuncsBySpeed); + InitNpcForMovement(objectEvent, sprite, direction, speed); + ObjectEventTurn(objectEvent, direction); +} + +bool8 MovementAction_SurfStillDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + InitMovementSurfStill(objectEvent, sprite, DIR_SOUTH, MOVE_SPEED_FAST_1); + sprite->animPaused = TRUE; + return MovementAction_SurfStillDown_Step1(objectEvent, sprite); +} + +bool8 MovementAction_SurfStillDown_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (UpdateMovementNormal(objectEvent, sprite)) + { + sprite->sActionFuncId = 2; + return TRUE; + } + return FALSE; +} + +bool8 MovementAction_SurfStillUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + InitMovementSurfStill(objectEvent, sprite, DIR_NORTH, MOVE_SPEED_FAST_1); + sprite->animPaused = TRUE; + return MovementAction_SurfStillUp_Step1(objectEvent, sprite); +} + +bool8 MovementAction_SurfStillUp_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (UpdateMovementNormal(objectEvent, sprite)) + { + sprite->sActionFuncId = 2; + return TRUE; + } + return FALSE; +} + +bool8 MovementAction_SurfStillLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (objectEvent->directionOverwrite) + InitMovementSurfStill(objectEvent, sprite, objectEvent->directionOverwrite, MOVE_SPEED_FAST_1); + else + InitMovementSurfStill(objectEvent, sprite, DIR_WEST, MOVE_SPEED_FAST_1); + sprite->animPaused = TRUE; + return MovementAction_SurfStillLeft_Step1(objectEvent, sprite); +} + +bool8 MovementAction_SurfStillLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (UpdateMovementNormal(objectEvent, sprite)) + { + sprite->sActionFuncId = 2; + return TRUE; + } + return FALSE; +} + +bool8 MovementAction_SurfStillRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (objectEvent->directionOverwrite) + InitMovementSurfStill(objectEvent, sprite, objectEvent->directionOverwrite, MOVE_SPEED_FAST_1); + else + InitMovementSurfStill(objectEvent, sprite, DIR_EAST, MOVE_SPEED_FAST_1); + sprite->animPaused = TRUE; + return MovementAction_SurfStillRight_Step1(objectEvent, sprite); +} + +bool8 MovementAction_SurfStillRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (UpdateMovementNormal(objectEvent, sprite)) + { + sprite->sActionFuncId = 2; + return TRUE; + } + return FALSE; +} diff --git a/src/evolution_scene.c b/src/evolution_scene.c index 39a1efafc8..d0dbb688fa 100644 --- a/src/evolution_scene.c +++ b/src/evolution_scene.c @@ -262,7 +262,7 @@ void EvolutionScene(struct Pokemon *mon, u16 postEvoSpecies, bool8 canStopEvo, u currSpecies, personality, TRUE); - LoadCompressedPalette(GetMonSpritePalFromSpeciesAndPersonality(currSpecies, isShiny, personality), OBJ_PLTT_ID(1), PLTT_SIZE_4BPP); + LoadPalette(GetMonSpritePalFromSpeciesAndPersonality(currSpecies, isShiny, personality), OBJ_PLTT_ID(1), PLTT_SIZE_4BPP); SetMultiuseSpriteTemplateToPokemon(currSpecies, B_POSITION_OPPONENT_LEFT); gMultiuseSpriteTemplate.affineAnims = gDummySpriteAffineAnimTable; @@ -277,7 +277,7 @@ void EvolutionScene(struct Pokemon *mon, u16 postEvoSpecies, bool8 canStopEvo, u postEvoSpecies, personality, TRUE); - LoadCompressedPalette(GetMonSpritePalFromSpeciesAndPersonality(postEvoSpecies, isShiny, personality), OBJ_PLTT_ID(2), PLTT_SIZE_4BPP); + LoadPalette(GetMonSpritePalFromSpeciesAndPersonality(postEvoSpecies, isShiny, personality), OBJ_PLTT_ID(2), PLTT_SIZE_4BPP); SetMultiuseSpriteTemplateToPokemon(postEvoSpecies, B_POSITION_OPPONENT_RIGHT); gMultiuseSpriteTemplate.affineAnims = gDummySpriteAffineAnimTable; @@ -354,7 +354,7 @@ static void CB2_EvolutionSceneLoadGraphics(void) postEvoSpecies, personality, TRUE); - LoadCompressedPalette(GetMonSpritePalFromSpeciesAndPersonality(postEvoSpecies, isShiny, personality), OBJ_PLTT_ID(2), PLTT_SIZE_4BPP); + LoadPalette(GetMonSpritePalFromSpeciesAndPersonality(postEvoSpecies, isShiny, personality), OBJ_PLTT_ID(2), PLTT_SIZE_4BPP); SetMultiuseSpriteTemplateToPokemon(postEvoSpecies, B_POSITION_OPPONENT_RIGHT); gMultiuseSpriteTemplate.affineAnims = gDummySpriteAffineAnimTable; @@ -424,7 +424,7 @@ static void CB2_TradeEvolutionSceneLoadGraphics(void) postEvoSpecies, personality, TRUE); - LoadCompressedPalette(GetMonSpritePalFromSpeciesAndPersonality(postEvoSpecies, isShiny, personality), OBJ_PLTT_ID(2), PLTT_SIZE_4BPP); + LoadPalette(GetMonSpritePalFromSpeciesAndPersonality(postEvoSpecies, isShiny, personality), OBJ_PLTT_ID(2), PLTT_SIZE_4BPP); gMain.state++; } break; @@ -489,7 +489,7 @@ void TradeEvolutionScene(struct Pokemon *mon, u16 postEvoSpecies, u8 preEvoSprit personality, TRUE); - LoadCompressedPalette(GetMonSpritePalFromSpeciesAndPersonality(postEvoSpecies, isShiny, personality), OBJ_PLTT_ID(2), PLTT_SIZE_4BPP); + LoadPalette(GetMonSpritePalFromSpeciesAndPersonality(postEvoSpecies, isShiny, personality), OBJ_PLTT_ID(2), PLTT_SIZE_4BPP); SetMultiuseSpriteTemplateToPokemon(postEvoSpecies, B_POSITION_OPPONENT_LEFT); gMultiuseSpriteTemplate.affineAnims = gDummySpriteAffineAnimTable; @@ -542,7 +542,7 @@ static void CB2_TradeEvolutionSceneUpdate(void) RunTasks(); } -static void CreateShedinja(u16 preEvoSpecies, struct Pokemon *mon) +static void CreateShedinja(u32 preEvoSpecies, u32 postEvoSpecies, struct Pokemon *mon) { u32 data = 0; u16 ball = ITEM_POKE_BALL; @@ -551,41 +551,48 @@ static void CreateShedinja(u16 preEvoSpecies, struct Pokemon *mon) if (evolutions == NULL) return; - if (evolutions[0].method == EVO_LEVEL_NINJASK && gPlayerPartyCount < PARTY_SIZE && (P_SHEDINJA_BALL < GEN_4 || CheckBagHasItem(ball, 1))) + for (u32 i = 0; evolutions[i].method != EVOLUTIONS_END; i++) { - s32 i; - struct Pokemon *shedinja = &gPlayerParty[gPlayerPartyCount]; - - CopyMon(&gPlayerParty[gPlayerPartyCount], mon, sizeof(struct Pokemon)); - SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_SPECIES, &evolutions[1].targetSpecies); - SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_NICKNAME, GetSpeciesName(evolutions[1].targetSpecies)); - SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_HELD_ITEM, &data); - SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_MARKINGS, &data); - if (P_SHEDINJA_BALL >= GEN_4) + if (evolutions[i].method == EVO_SPLIT_FROM_EVO + && evolutions[i].param == postEvoSpecies + && gPlayerPartyCount < PARTY_SIZE + && DoesMonMeetAdditionalConditions(mon, evolutions[i].params, NULL, PARTY_SIZE, NULL, CHECK_EVO)) { - SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_POKEBALL, &ball); - RemoveBagItem(ball, 1); + s32 j; + struct Pokemon *shedinja = &gPlayerParty[gPlayerPartyCount]; + + CopyMon(&gPlayerParty[gPlayerPartyCount], mon, sizeof(struct Pokemon)); + SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_SPECIES, &evolutions[i].targetSpecies); + SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_NICKNAME, GetSpeciesName(evolutions[i].targetSpecies)); + SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_HELD_ITEM, &data); + SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_MARKINGS, &data); + if (P_SHEDINJA_BALL >= GEN_4) + { + SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_POKEBALL, &ball); + RemoveBagItem(ball, 1); + } + + for (j = MON_DATA_COOL_RIBBON; j < MON_DATA_COOL_RIBBON + CONTEST_CATEGORIES_COUNT; j++) + SetMonData(&gPlayerParty[gPlayerPartyCount], j, &data); + for (j = MON_DATA_CHAMPION_RIBBON; j <= MON_DATA_WORLD_RIBBON; j++) + SetMonData(&gPlayerParty[gPlayerPartyCount], j, &data); + + SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_STATUS, &data); + data = MAIL_NONE; + SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_MAIL, &data); + + CalculateMonStats(&gPlayerParty[gPlayerPartyCount]); + CalculatePlayerPartyCount(); + + GetSetPokedexFlag(SpeciesToNationalPokedexNum(evolutions[i].targetSpecies), FLAG_SET_SEEN); + GetSetPokedexFlag(SpeciesToNationalPokedexNum(evolutions[i].targetSpecies), FLAG_SET_CAUGHT); + + if (GetMonData(shedinja, MON_DATA_SPECIES) == SPECIES_SHEDINJA + && GetMonData(shedinja, MON_DATA_LANGUAGE) == LANGUAGE_JAPANESE + && GetMonData(mon, MON_DATA_SPECIES) == SPECIES_NINJASK) + SetMonData(shedinja, MON_DATA_NICKNAME, sText_ShedinjaJapaneseName); + } - - for (i = MON_DATA_COOL_RIBBON; i < MON_DATA_COOL_RIBBON + CONTEST_CATEGORIES_COUNT; i++) - SetMonData(&gPlayerParty[gPlayerPartyCount], i, &data); - for (i = MON_DATA_CHAMPION_RIBBON; i <= MON_DATA_WORLD_RIBBON; i++) - SetMonData(&gPlayerParty[gPlayerPartyCount], i, &data); - - SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_STATUS, &data); - data = MAIL_NONE; - SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_MAIL, &data); - - CalculateMonStats(&gPlayerParty[gPlayerPartyCount]); - CalculatePlayerPartyCount(); - - GetSetPokedexFlag(SpeciesToNationalPokedexNum(evolutions[1].targetSpecies), FLAG_SET_SEEN); - GetSetPokedexFlag(SpeciesToNationalPokedexNum(evolutions[1].targetSpecies), FLAG_SET_CAUGHT); - - if (GetMonData(shedinja, MON_DATA_SPECIES) == SPECIES_SHEDINJA - && GetMonData(shedinja, MON_DATA_LANGUAGE) == LANGUAGE_JAPANESE - && GetMonData(mon, MON_DATA_SPECIES) == SPECIES_NINJASK) - SetMonData(shedinja, MON_DATA_NICKNAME, sText_ShedinjaJapaneseName); } } @@ -818,9 +825,11 @@ static void Task_EvolutionScene(u8 taskId) { StopMapMusic(); Overworld_PlaySpecialMapMusic(); + } + if (!gTasks[taskId].tEvoWasStopped) - CreateShedinja(gTasks[taskId].tPreEvoSpecies, mon); + CreateShedinja(gTasks[taskId].tPreEvoSpecies, gTasks[taskId].tPostEvoSpecies, mon); DestroyTask(taskId); FreeMonSpritesGfx(); diff --git a/src/expansion_intro.c b/src/expansion_intro.c index e37ea4b2e6..f656c4ff5e 100644 --- a/src/expansion_intro.c +++ b/src/expansion_intro.c @@ -56,7 +56,7 @@ static const u32 sBgTiles_PoweredBy[] = INCBIN_U32("graphics/expansion_intro/pow static const u32 sBgTiles_RhhCredits[] = INCBIN_U32("graphics/expansion_intro/rhh_credits.8bpp.lz"); static const u32 sBgMap_PoweredBy[] = INCBIN_U32("graphics/expansion_intro/powered_by.bin.lz"); static const u32 sBgMap_RhhCredits[] = INCBIN_U32("graphics/expansion_intro/rhh_credits.bin.lz"); -static const u32 sBgPal_Credits[] = INCBIN_U32("graphics/expansion_intro/credits.gbapal.lz"); +static const u16 sBgPal_Credits[] = INCBIN_U16("graphics/expansion_intro/credits.gbapal"); static const u32 sSpriteTiles_DizzyEgg[] = INCBIN_U32("graphics/expansion_intro/sprites/dizzy_egg.4bpp.lz"); static const u32 sSpriteTiles_Porygon[] = INCBIN_U32("graphics/expansion_intro/sprites/porygon.4bpp.lz"); static const u16 sSpritePal_DizzyEgg[] = INCBIN_U16("graphics/expansion_intro/sprites/dizzy_egg.gbapal"); @@ -312,7 +312,7 @@ static void ExpansionIntro_LoadGraphics(void) LZ77UnCompVram(sBgMap_PoweredBy, (u16*) BG_SCREEN_ADDR(sBgTemplates_RhhCopyrightScreen[EXPANSION_INTRO_BG3].mapBaseIndex)); LZ77UnCompVram(sBgTiles_RhhCredits, (void*) BG_CHAR_ADDR(sBgTemplates_RhhCopyrightScreen[EXPANSION_INTRO_BG2].charBaseIndex)); LZ77UnCompVram(sBgMap_RhhCredits, (u16*) BG_SCREEN_ADDR(sBgTemplates_RhhCopyrightScreen[EXPANSION_INTRO_BG2].mapBaseIndex)); - LoadCompressedPalette(sBgPal_Credits, 0x00, 0x60); + LoadPalette(sBgPal_Credits, 0x00, 0x60); LoadCompressedSpriteSheet(&sSpriteSheet_DizzyEgg); LoadCompressedSpriteSheet(&sSpriteSheet_Porygon); diff --git a/src/fake_rtc.c b/src/fake_rtc.c index 4dbf7837ba..2024065b7d 100644 --- a/src/fake_rtc.c +++ b/src/fake_rtc.c @@ -2,12 +2,26 @@ #include "string_util.h" #include "strings.h" #include "text.h" +#include "datetime.h" #include "rtc.h" #include "fake_rtc.h" #include "event_data.h" #include "script.h" -struct Time *FakeRtc_GetCurrentTime(void) +static void FakeRtc_CalcTimeDifference(struct Time *result, struct SiiRtcInfo *t1, struct Time *t2); + +void FakeRtc_Reset(void) +{ +#if OW_USE_FAKE_RTC + memset(&gSaveBlock3Ptr->fakeRTC, 0, sizeof(gSaveBlock3Ptr->fakeRTC)); + gSaveBlock3Ptr->fakeRTC.year = 0; // offset by gGen3Epoch.year + gSaveBlock3Ptr->fakeRTC.month = gGen3Epoch.month; + gSaveBlock3Ptr->fakeRTC.day = gGen3Epoch.day; + gSaveBlock3Ptr->fakeRTC.dayOfWeek = gGen3Epoch.dayOfWeek; +#endif +} + +struct SiiRtcInfo *FakeRtc_GetCurrentTime(void) { #if OW_USE_FAKE_RTC return &gSaveBlock3Ptr->fakeRTC; @@ -18,11 +32,9 @@ struct Time *FakeRtc_GetCurrentTime(void) 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; + struct SiiRtcInfo *fakeRtc = FakeRtc_GetCurrentTime(); + if (fakeRtc != NULL) + memcpy(rtc, fakeRtc, sizeof(struct SiiRtcInfo)); } void FakeRtc_TickTimeForward(void) @@ -33,58 +45,75 @@ void FakeRtc_TickTimeForward(void) if (FlagGet(OW_FLAG_PAUSE_TIME)) return; - FakeRtc_AdvanceTimeBy(0, 0, FakeRtc_GetSecondsRatio()); + FakeRtc_AdvanceTimeBy(0, 0, 0, FakeRtc_GetSecondsRatio()); } -void FakeRtc_AdvanceTimeBy(u32 hours, u32 minutes, u32 seconds) +void FakeRtc_AdvanceTimeBy(u32 days, u32 hours, u32 minutes, u32 seconds) { - struct Time* time = FakeRtc_GetCurrentTime(); - seconds += time->seconds; - minutes += time->minutes; - hours += time->hours; + struct DateTime dateTime; + struct SiiRtcInfo *rtc = FakeRtc_GetCurrentTime(); - 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; + ConvertRtcToDateTime(&dateTime, rtc); + DateTime_AddSeconds(&dateTime, seconds); + DateTime_AddMinutes(&dateTime, minutes); + DateTime_AddHours(&dateTime, hours); + DateTime_AddDays(&dateTime, days); + ConvertDateTimeToRtc(rtc, &dateTime); } -void FakeRtc_ManuallySetTime(u32 hour, u32 minute, u32 second) +void FakeRtc_ForwardTimeTo(u32 hour, u32 minute, u32 second) { + Script_PauseFakeRtc(); struct Time diff, target; - RtcCalcLocalTime(); + struct SiiRtcInfo *fakeRtc = FakeRtc_GetCurrentTime(); 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); + FakeRtc_CalcTimeDifference(&diff, fakeRtc, &target); + FakeRtc_AdvanceTimeBy(0, diff.hours, diff.minutes, diff.seconds); + Script_ResumeFakeRtc(); +} + +static void FakeRtc_CalcTimeDifference(struct Time *result, struct SiiRtcInfo *t1, struct Time *t2) +{ + result->seconds = t2->seconds - t1->second; + result->minutes = t2->minutes - t1->minute; + result->hours = t2->hours - t1->hour; + result->days = t2->days - t1->day; + + if (result->seconds < 0) + { + result->seconds += SECONDS_PER_MINUTE; + --result->minutes; + } + + if (result->minutes < 0) + { + result->minutes += MINUTES_PER_HOUR; + --result->hours; + } + + if (result->hours < 0) + { + result->hours += HOURS_PER_DAY; + --result->days; + } +} + +void FakeRtc_ManuallySetTime(u32 day, u32 hour, u32 minute, u32 second) +{ + FakeRtc_Reset(); + FakeRtc_AdvanceTimeBy(day, hour, minute, second); } u32 FakeRtc_GetSecondsRatio(void) { - return (OW_ALTERED_TIME_RATIO == GEN_8_PLA) ? 60 : - (OW_ALTERED_TIME_RATIO == GEN_9) ? 20 : - 1; + return (OW_ALTERED_TIME_RATIO == GEN_8_PLA) ? 60 : + (OW_ALTERED_TIME_RATIO == GEN_9) ? 20 : + (OW_ALTERED_TIME_RATIO == TIME_DEBUG) ? 1 : + 1; } STATIC_ASSERT((OW_FLAG_PAUSE_TIME == 0 || OW_USE_FAKE_RTC == TRUE), FakeRtcMustBeTrueToPauseTime); diff --git a/src/faraway_island.c b/src/faraway_island.c index fc3a714e5f..e275bcfa37 100755 --- a/src/faraway_island.c +++ b/src/faraway_island.c @@ -392,7 +392,7 @@ void SetMewAboveGrass(void) gSprites[mew->spriteId].subpriority = 1; LoadSpritePalette(&gSpritePalette_GeneralFieldEffect1); - UpdateSpritePaletteWithWeather(IndexOfSpritePaletteTag(gSpritePalette_GeneralFieldEffect1.tag)); + UpdateSpritePaletteWithWeather(IndexOfSpritePaletteTag(gSpritePalette_GeneralFieldEffect1.tag), FALSE); x = mew->currentCoords.x; y = mew->currentCoords.y; diff --git a/src/field_control_avatar.c b/src/field_control_avatar.c index efc01e1bd1..a83990cc58 100644 --- a/src/field_control_avatar.c +++ b/src/field_control_avatar.c @@ -17,6 +17,7 @@ #include "field_screen_effect.h" #include "field_specials.h" #include "fldeff_misc.h" +#include "follower_npc.h" #include "item_menu.h" #include "link.h" #include "match_call.h" @@ -225,13 +226,13 @@ int ProcessPlayerFieldInput(struct FieldInput *input) ShowStartMenu(); return TRUE; } - + if (input->tookStep && TryFindHiddenPokemon()) return TRUE; - + if (input->pressedSelectButton && UseRegisteredKeyItemOnField() == TRUE) return TRUE; - + if (input->pressedRButton && TryStartDexNavSearch()) return TRUE; @@ -243,6 +244,13 @@ int ProcessPlayerFieldInput(struct FieldInput *input) return TRUE; } + if (CanTriggerSpinEvolution()) + { + ResetSpinTimer(); + TrySpecialOverworldEvo(); // Special vars set in CanTriggerSpinEvolution. + return TRUE; + } + return FALSE; } @@ -392,6 +400,8 @@ static const u8 *GetInteractedObjectEventScript(struct MapPosition *position, u8 if (InTrainerHill() == TRUE) script = GetTrainerHillTrainerScript(); + else if (PlayerHasFollowerNPC() && objectEventId == GetFollowerNPCObjectId()) + script = GetFollowerNPCScriptPointer(); else script = GetObjectEventScriptPointerByObjectEventId(objectEventId); @@ -550,10 +560,14 @@ static const u8 *GetInteractedMetatileScript(struct MapPosition *position, u8 me static const u8 *GetInteractedWaterScript(struct MapPosition *unused1, u8 metatileBehavior, u8 direction) { - if (FlagGet(FLAG_BADGE05_GET) == TRUE && PartyHasMonWithSurf() == TRUE && IsPlayerFacingSurfableFishableWater() == TRUE) + if (FlagGet(FLAG_BADGE05_GET) == TRUE && PartyHasMonWithSurf() == TRUE && IsPlayerFacingSurfableFishableWater() == TRUE + && CheckFollowerNPCFlag(FOLLOWER_NPC_FLAG_CAN_SURF) + ) return EventScript_UseSurf; - if (MetatileBehavior_IsWaterfall(metatileBehavior) == TRUE) + if (MetatileBehavior_IsWaterfall(metatileBehavior) == TRUE + && CheckFollowerNPCFlag(FOLLOWER_NPC_FLAG_CAN_WATERFALL) + ) { if (FlagGet(FLAG_BADGE08_GET) == TRUE && IsPlayerSurfingNorth() == TRUE) return EventScript_UseWaterfall; @@ -565,6 +579,9 @@ static const u8 *GetInteractedWaterScript(struct MapPosition *unused1, u8 metati static bool32 TrySetupDiveDownScript(void) { + if (!CheckFollowerNPCFlag(FOLLOWER_NPC_FLAG_CAN_DIVE)) + return FALSE; + if (FlagGet(FLAG_BADGE07_GET) && TrySetDiveWarp() == 2) { ScriptContext_SetupScript(EventScript_UseDive); @@ -575,6 +592,9 @@ static bool32 TrySetupDiveDownScript(void) static bool32 TrySetupDiveEmergeScript(void) { + if (!CheckFollowerNPCFlag(FOLLOWER_NPC_FLAG_CAN_DIVE)) + return FALSE; + if (FlagGet(FLAG_BADGE07_GET) && gMapHeader.mapType == MAP_TYPE_UNDERWATER && TrySetDiveWarp() == 1) { ScriptContext_SetupScript(EventScript_UseDiveUnderwater); diff --git a/src/field_effect.c b/src/field_effect.c index 3d6e6e67cb..1f2feaba8f 100644 --- a/src/field_effect.c +++ b/src/field_effect.c @@ -12,6 +12,7 @@ #include "field_weather.h" #include "fieldmap.h" #include "fldeff.h" +#include "follower_npc.h" #include "gpu_regs.h" #include "main.h" #include "malloc.h" @@ -145,6 +146,7 @@ static bool8 LavaridgeGym1FWarpEffect_Warp(struct Task *, struct ObjectEvent *, static void Task_EscapeRopeWarpOut(u8); static void EscapeRopeWarpOutEffect_Init(struct Task *); +static void EscapeRopeWarpOutEffect_HideFollowerNPC(struct Task *); static void EscapeRopeWarpOutEffect_Spin(struct Task *); static void FieldCallback_EscapeRopeWarpIn(void); @@ -696,6 +698,7 @@ static bool8 (*const sLavaridgeGym1FWarpEffectFuncs[])(struct Task *, struct Obj static void (*const sEscapeRopeWarpOutEffectFuncs[])(struct Task *) = { EscapeRopeWarpOutEffect_Init, + EscapeRopeWarpOutEffect_HideFollowerNPC, EscapeRopeWarpOutEffect_Spin, }; @@ -791,9 +794,11 @@ void FieldEffectScript_LoadTiles(u8 **script) void FieldEffectScript_LoadFadedPalette(u8 **script) { struct SpritePalette *palette = (struct SpritePalette *)FieldEffectScript_ReadWord(script); - LoadSpritePalette(palette); - UpdateSpritePaletteWithWeather(IndexOfSpritePaletteTag(palette->tag)); + u32 paletteSlot = LoadSpritePalette(palette); (*script) += 4; + SetPaletteColorMapType(paletteSlot + 16, T1_READ_8(*script)); + UpdateSpritePaletteWithWeather(paletteSlot, TRUE); + (*script)++; } void FieldEffectScript_LoadPalette(u8 **script) @@ -849,6 +854,7 @@ void FieldEffectFreePaletteIfUnused(u8 paletteNum) for (i = 0; i < MAX_SPRITES; i++) if (gSprites[i].inUse && gSprites[i].oam.paletteNum == paletteNum) return; + ResetPaletteColorMapType(paletteNum + 16); FreeSpritePaletteByTag(tag); } } @@ -903,11 +909,11 @@ u8 CreateTrainerSprite(u8 trainerSpriteID, s16 x, s16 y, u8 subpriority, u8 *buf // Allocate memory for buffer if (buffer == NULL) { - buffer = Alloc(TRAINER_PIC_SIZE + PLTT_SIZEOF(16)); + buffer = Alloc(TRAINER_PIC_SIZE); alloced = TRUE; } - LoadCompressedSpritePaletteOverrideBuffer(&gTrainerSprites[trainerSpriteID].palette, buffer); + LoadSpritePalette(&gTrainerSprites[trainerSpriteID].palette); LoadCompressedSpriteSheetOverrideBuffer(&gTrainerSprites[trainerSpriteID].frontPic, buffer); if (alloced) Free(buffer); @@ -925,7 +931,7 @@ u8 CreateTrainerSprite(u8 trainerSpriteID, s16 x, s16 y, u8 subpriority, u8 *buf static void UNUSED LoadTrainerGfx_TrainerCard(u8 gender, u16 palOffset, u8 *dest) { LZDecompressVram(gTrainerSprites[gender].frontPic.data, dest); - LoadCompressedPalette(gTrainerSprites[gender].palette.data, palOffset, PLTT_SIZE_4BPP); + LoadPalette(gTrainerSprites[gender].palette.data, palOffset, PLTT_SIZE_4BPP); } u8 AddNewGameBirchObject(s16 x, s16 y, u8 subpriority) @@ -1374,32 +1380,61 @@ void FieldCallback_UseFly(void) gFieldCallback = NULL; } +#define taskState task->data[3] +#define fieldEffectStarted task->data[0] + static void Task_UseFly(u8 taskId) { + struct ObjectEvent *follower = &gObjectEvents[GetFollowerNPCObjectId()]; struct Task *task; task = &gTasks[taskId]; - if (!task->data[0]) + if (taskState == 0) { - if (!IsWeatherNotFadingIn()) - return; - - gFieldEffectArguments[0] = GetCursorSelectionMonId(); - if ((int)gFieldEffectArguments[0] > PARTY_SIZE - 1) - gFieldEffectArguments[0] = 0; - - FieldEffectStart(FLDEFF_USE_FLY); - task->data[0]++; + if (!PlayerHasFollowerNPC()) + { + taskState = 2; + } + else + { + FollowerNPCWalkIntoPlayerForLeaveMap(); + taskState++; + } } - if (!FieldEffectActiveListContains(FLDEFF_USE_FLY)) + if (taskState == 1) { - Overworld_ResetStateAfterFly(); - WarpIntoMap(); - SetMainCallback2(CB2_LoadMap); - gFieldCallback = FieldCallback_FlyIntoMap; - DestroyTask(taskId); + if (ObjectEventClearHeldMovementIfFinished(follower)) + { + FollowerNPCHideForLeaveMap(follower); + taskState++; + } + } + if (taskState == 2) + { + if (!fieldEffectStarted) + { + if (!IsWeatherNotFadingIn()) + return; + + gFieldEffectArguments[0] = GetCursorSelectionMonId(); + if ((int)gFieldEffectArguments[0] > PARTY_SIZE - 1) + gFieldEffectArguments[0] = 0; + + FieldEffectStart(FLDEFF_USE_FLY); + fieldEffectStarted = TRUE; + } + if (!FieldEffectActiveListContains(FLDEFF_USE_FLY)) + { + Overworld_ResetStateAfterFly(); + WarpIntoMap(); + SetMainCallback2(CB2_LoadMap); + gFieldCallback = FieldCallback_FlyIntoMap; + DestroyTask(taskId); + } } } +#undef taskState + static void FieldCallback_FlyIntoMap(void) { Overworld_PlaySpecialMapMusic(); @@ -1415,20 +1450,51 @@ static void FieldCallback_FlyIntoMap(void) gFieldCallback = NULL; } +#define taskState task->data[0] +#define tWaitPaletteFadeIn 0 +#define tWaitFieldEffectEnd 1 +#define tNPCFollowerFacePlayer 2 +#define tTaskEnd 3 + static void Task_FlyIntoMap(u8 taskId) { + struct ObjectEvent *player = &gObjectEvents[gPlayerAvatar.objectEventId]; + struct ObjectEvent *follower = &gObjectEvents[GetFollowerNPCObjectId()]; struct Task *task; task = &gTasks[taskId]; - if (task->data[0] == 0) + if (taskState == tWaitPaletteFadeIn) { if (gPaletteFade.active) { return; } FieldEffectStart(FLDEFF_FLY_IN); - task->data[0]++; + taskState++; } - if (!FieldEffectActiveListContains(FLDEFF_FLY_IN)) + if (taskState == tWaitFieldEffectEnd) + { + if (!FieldEffectActiveListContains(FLDEFF_FLY_IN)) + { + if (FNPC_NPC_FOLLOWER_SHOW_AFTER_LEAVE_ROUTE) + FollowerNPCReappearAfterLeaveMap(follower, player); + + taskState++; + } + } + if (taskState == tNPCFollowerFacePlayer) + { + if (PlayerHasFollowerNPC() && ObjectEventClearHeldMovementIfFinished(follower)) + { + if (FNPC_NPC_FOLLOWER_SHOW_AFTER_LEAVE_ROUTE) + FollowerNPCFaceAfterLeaveMap(); + taskState++; + } + else if (!PlayerHasFollowerNPC()) + { + taskState++; + } + } + if (taskState == tTaskEnd) { UnlockPlayerFieldControls(); UnfreezeObjectEvents(); @@ -1568,6 +1634,8 @@ static bool8 FallWarpEffect_End(struct Task *task) UnfreezeObjectEvents(); InstallCameraPanAheadCallback(); DestroyTask(FindTaskIdByFunc(Task_FallWarpFieldEffect)); + FollowerNPC_WarpSetEnd(); + return FALSE; } @@ -1626,10 +1694,13 @@ static bool8 EscalatorWarpOut_WaitForPlayer(struct Task *task) if (!ObjectEventIsMovementOverridden(objectEvent) || ObjectEventClearHeldMovementIfFinished(objectEvent)) { ObjectEventSetHeldMovement(objectEvent, GetFaceDirectionMovementAction(GetPlayerFacingDirection())); + objectEvent->noShadow = TRUE; // hide shadow for cleaner movement task->tState++; task->data[2] = 0; task->data[3] = 0; - if ((u8)task->tGoingUp == FALSE) + EscalatorMoveFollowerNPC(task->data[1]); + + if ((u8)task->data[1] == FALSE) { task->tState = 4; // jump to EscalatorWarpOut_Down_Ride } @@ -1747,9 +1818,11 @@ static bool8 EscalatorWarpIn_Init(struct Task *task) u8 behavior; CameraObjectFreeze(); objectEvent = &gObjectEvents[gPlayerAvatar.objectEventId]; + objectEvent->noShadow = TRUE; ObjectEventSetHeldMovement(objectEvent, GetFaceDirectionMovementAction(DIR_EAST)); PlayerGetDestCoords(&x, &y); behavior = MapGridGetMetatileBehaviorAt(x, y); + EscalatorMoveFollowerNPCFinish(); task->tState++; task->data[1] = 16; @@ -1843,6 +1916,7 @@ static bool8 EscalatorWarpIn_End(struct Task *task) { struct ObjectEvent *objectEvent; objectEvent = &gObjectEvents[gPlayerAvatar.objectEventId]; + objectEvent->noShadow = FALSE; if (ObjectEventClearHeldMovementIfFinished(objectEvent)) { CameraObjectReset(); @@ -1995,15 +2069,26 @@ static bool8 LavaridgeGymB1FWarpEffect_Init(struct Task *task, struct ObjectEven SetCameraPanningCallback(NULL); gPlayerAvatar.preventStep = TRUE; objectEvent->fixedPriority = 1; + objectEvent->noShadow = TRUE; task->data[1] = 1; task->data[0]++; if (objectEvent->localId == OBJ_EVENT_ID_PLAYER) // Hide follower before warping + { HideFollowerForFieldEffect(); + if (PlayerHasFollowerNPC() && gObjectEvents[GetFollowerNPCObjectId()].invisible == FALSE) + { + FollowerNPCWalkIntoPlayerForLeaveMap(); + CreateTask(Task_HideNPCFollowerAfterMovementFinish, 2); + } + } return TRUE; } static bool8 LavaridgeGymB1FWarpEffect_CameraShake(struct Task *task, struct ObjectEvent *objectEvent, struct Sprite *sprite) { + if (FindTaskIdByFunc(Task_HideNPCFollowerAfterMovementFinish) != TASK_NONE) + return FALSE; + SetCameraPanning(0, task->data[1]); task->data[1] = -task->data[1]; task->data[2]++; @@ -2191,14 +2276,25 @@ static bool8 LavaridgeGym1FWarpEffect_Init(struct Task *task, struct ObjectEvent CameraObjectFreeze(); gPlayerAvatar.preventStep = TRUE; objectEvent->fixedPriority = 1; + objectEvent->noShadow = TRUE; task->data[0]++; if (objectEvent->localId == OBJ_EVENT_ID_PLAYER) // Hide follower before warping + { HideFollowerForFieldEffect(); + if (PlayerHasFollowerNPC() && gObjectEvents[GetFollowerNPCObjectId()].invisible == FALSE) + { + FollowerNPCWalkIntoPlayerForLeaveMap(); + CreateTask(Task_HideNPCFollowerAfterMovementFinish, 2); + } + } return FALSE; } static bool8 LavaridgeGym1FWarpEffect_AshPuff(struct Task *task, struct ObjectEvent *objectEvent, struct Sprite *sprite) { + if (FindTaskIdByFunc(Task_HideNPCFollowerAfterMovementFinish) != TASK_NONE) + return FALSE; + if (ObjectEventClearHeldMovementIfFinished(objectEvent)) { if (task->data[1] > 3) @@ -2270,11 +2366,18 @@ void SpriteCB_AshPuff(struct Sprite *sprite) FieldEffectStop(sprite, FLDEFF_ASH_PUFF); } -#define tState data[0] -#define tSpinDelay data[1] -#define tNumTurns data[2] -#define tTimer data[14] -#define tStartDir data[15] +#define tState data[0] +#define tSpinDelay data[1] +#define tNumTurns data[2] +#define tHideFollower data[3] +#define tTimer data[14] +#define tStartDir data[15] + +enum +{ + START_MOVEMENT, + WAIT_MOVEMENT_END +}; void StartEscapeRopeFieldEffect(void) { @@ -2291,11 +2394,40 @@ static void Task_EscapeRopeWarpOut(u8 taskId) static void EscapeRopeWarpOutEffect_Init(struct Task *task) { - task->tState++; + if (PlayerHasFollowerNPC()) + task->tState++; + else + task->tState += 2; + task->tTimer = 64; task->tStartDir = GetPlayerFacingDirection(); } +static void EscapeRopeWarpOutEffect_HideFollowerNPC(struct Task *task) +{ + struct ObjectEvent *follower = &gObjectEvents[GetFollowerNPCObjectId()]; + if (task->tHideFollower == START_MOVEMENT) + { + if (!PlayerHasFollowerNPC()) + { + task->tState++; + } + else + { + FollowerNPCWalkIntoPlayerForLeaveMap(); + task->tHideFollower = WAIT_MOVEMENT_END; + } + } + if (task->tHideFollower == WAIT_MOVEMENT_END) + { + if (ObjectEventClearHeldMovementIfFinished(follower)) + { + FollowerNPCHideForLeaveMap(follower); + task->tState++; + } + } +} + static void EscapeRopeWarpOutEffect_Spin(struct Task *task) { struct ObjectEvent *objectEvent; @@ -2354,33 +2486,66 @@ static void EscapeRopeWarpInEffect_Init(struct Task *task) { task->tState++; task->tStartDir = GetPlayerFacingDirection(); + task->data[3] = 0; } } static void EscapeRopeWarpInEffect_Spin(struct Task *task) { u8 spinDirections[5] = {DIR_SOUTH, DIR_WEST, DIR_EAST, DIR_NORTH, DIR_SOUTH}; - struct ObjectEvent *objectEvent = &gObjectEvents[gPlayerAvatar.objectEventId]; - if (task->tSpinDelay == 0 || (--task->tSpinDelay) == 0) + struct ObjectEvent *player = &gObjectEvents[gPlayerAvatar.objectEventId]; + struct ObjectEvent *follower = &gObjectEvents[GetFollowerNPCObjectId()]; + + if ((task->tSpinDelay == 0 || (--task->tSpinDelay) == 0) && task->data[3] == 0) { - if (ObjectEventIsMovementOverridden(objectEvent) && !ObjectEventClearHeldMovementIfFinished(objectEvent)) + if (ObjectEventIsMovementOverridden(player) && !ObjectEventClearHeldMovementIfFinished(player)) { return; } if (task->tNumTurns >= 32 && task->tStartDir == GetPlayerFacingDirection()) { - objectEvent->invisible = FALSE; - UnlockPlayerFieldControls(); - UnfreezeObjectEvents(); - DestroyTask(FindTaskIdByFunc(Task_EscapeRopeWarpIn)); - return; + task->data[3]++; } - ObjectEventSetHeldMovement(objectEvent, GetFaceDirectionMovementAction(spinDirections[objectEvent->facingDirection])); + if (task->data[3] == 0) + ObjectEventSetHeldMovement(player, GetFaceDirectionMovementAction(spinDirections[player->facingDirection])); + if (task->tNumTurns < 32) task->tNumTurns++; + task->tSpinDelay = task->tNumTurns >> 2; } - objectEvent->invisible ^= 1; + if (task->data[3] == 0) + player->invisible ^= 1; + + if (task->data[3] == 1) + { + if (FNPC_NPC_FOLLOWER_SHOW_AFTER_LEAVE_ROUTE) + FollowerNPCReappearAfterLeaveMap(follower, player); + + task->data[3]++; + } + if (task->data[3] == 2) + { + if (PlayerHasFollowerNPC() && ObjectEventClearHeldMovementIfFinished(follower)) + { + if (FNPC_NPC_FOLLOWER_SHOW_AFTER_LEAVE_ROUTE) + FollowerNPCFaceAfterLeaveMap(); + + task->data[3]++; + } + else if (!PlayerHasFollowerNPC()) + { + task->data[3]++; + } + } + if (task->data[3] == 3) + { + player->invisible = FALSE; + UnlockPlayerFieldControls(); + UnfreezeObjectEvents(); + DestroyTask(FindTaskIdByFunc(Task_EscapeRopeWarpIn)); + return; + } } #undef tState @@ -2565,25 +2730,49 @@ static void TeleportWarpInFieldEffect_SpinEnter(struct Task *task) task->data[0]++; task->data[1] = 1; task->data[2] = 0; + task->data[3] = 0; } } static void TeleportWarpInFieldEffect_SpinGround(struct Task *task) { + struct ObjectEvent *player = &gObjectEvents[gPlayerAvatar.objectEventId]; + struct ObjectEvent *follower = &gObjectEvents[GetFollowerNPCObjectId()]; + u8 spinDirections[5] = {DIR_SOUTH, DIR_WEST, DIR_EAST, DIR_NORTH, DIR_SOUTH}; - struct ObjectEvent *objectEvent = &gObjectEvents[gPlayerAvatar.objectEventId]; - if ((--task->data[1]) == 0) + if ((--task->data[1]) == 0 && task->data[3] == 0) { - ObjectEventTurn(objectEvent, spinDirections[objectEvent->facingDirection]); + ObjectEventTurn(player, spinDirections[player->facingDirection]); task->data[1] = 8; - if ((++task->data[2]) > 4 && task->data[14] == objectEvent->facingDirection) + if ((++task->data[2]) > 4 && task->data[14] == player->facingDirection) { - UnlockPlayerFieldControls(); - CameraObjectReset(); - UnfreezeObjectEvents(); - DestroyTask(FindTaskIdByFunc(Task_TeleportWarpIn)); + if (FNPC_NPC_FOLLOWER_SHOW_AFTER_LEAVE_ROUTE) + FollowerNPCReappearAfterLeaveMap(follower, player); + + task->data[3] = 1; } } + if (task->data[3] == 1) + { + if (PlayerHasFollowerNPC() && ObjectEventClearHeldMovementIfFinished(follower)) + { + if (FNPC_NPC_FOLLOWER_SHOW_AFTER_LEAVE_ROUTE) + FollowerNPCFaceAfterLeaveMap(); + + task->data[3]++; + } + else if (!PlayerHasFollowerNPC()) + { + task->data[3]++; + } + } + if (task->data[3] == 2) + { + UnlockPlayerFieldControls(); + CameraObjectReset(); + UnfreezeObjectEvents(); + DestroyTask(FindTaskIdByFunc(Task_TeleportWarpIn)); + } } // Task data for Task_FieldMoveShowMonOutDoors @@ -3088,6 +3277,8 @@ static void SurfFieldEffect_JumpOnSurfBlob(struct Task *task) ObjectEventSetGraphicsId(objectEvent, GetPlayerAvatarGraphicsIdByStateId(PLAYER_AVATAR_STATE_SURFING)); ObjectEventClearHeldMovementIfFinished(objectEvent); ObjectEventSetHeldMovement(objectEvent, GetJumpSpecialMovementAction(objectEvent->movementDirection)); + FollowerNPC_FollowerToWater(); + gFieldEffectArguments[0] = task->tDestX; gFieldEffectArguments[1] = task->tDestY; gFieldEffectArguments[2] = gPlayerAvatar.objectEventId; @@ -3314,7 +3505,7 @@ static void FlyOutFieldEffect_FlyOffWithBird(struct Task *task) struct ObjectEvent *objectEvent = &gObjectEvents[gPlayerAvatar.objectEventId]; ObjectEventClearHeldMovementIfActive(objectEvent); objectEvent->inanimate = FALSE; - objectEvent->hasShadow = FALSE; + objectEvent->noShadow = TRUE; SetFlyBirdPlayerSpriteId(task->tBirdSpriteId, objectEvent->spriteId); CameraObjectFreeze(); task->tState++; @@ -3536,6 +3727,7 @@ static void FlyInFieldEffect_BirdSwoopDown(struct Task *task) ObjectEventTurn(objectEvent, DIR_WEST); StartSpriteAnim(&gSprites[objectEvent->spriteId], ANIM_GET_ON_OFF_POKEMON_WEST); objectEvent->invisible = FALSE; + objectEvent->noShadow = TRUE; task->tBirdSpriteId = CreateFlyBirdSprite(); StartFlyBirdSwoopDown(task->tBirdSpriteId); SetFlyBirdPlayerSpriteId(task->tBirdSpriteId, objectEvent->spriteId); diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index c17803d0f2..f7a6531ec2 100755 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -54,11 +54,11 @@ u32 FldEff_Shadow(void); #define sReflectionVerticalOffset data[2] #define sIsStillReflection data[7] -void SetUpShadow(struct ObjectEvent *objectEvent, struct Sprite *sprite) +void SetUpShadow(struct ObjectEvent *objectEvent) { gFieldEffectArguments[0] = objectEvent->localId; - gFieldEffectArguments[1] = gSaveBlock1Ptr->location.mapNum; - gFieldEffectArguments[2] = gSaveBlock1Ptr->location.mapGroup; + gFieldEffectArguments[1] = objectEvent->mapNum; + gFieldEffectArguments[2] = objectEvent->mapGroup; FldEff_Shadow(); } @@ -114,15 +114,16 @@ static void LoadObjectReflectionPalette(struct ObjectEvent *objectEvent, struct // Apply a blue tint effect to a palette static void ApplyPondFilter(u8 paletteNum, u16 *dest) { - u32 i, r, g, b; - // CpuCopy16(gPlttBufferUnfaded + 0x100 + paletteNum * 16, dest, 32); + u32 i; + s32 r, g, b; u16 *src = gPlttBufferUnfaded + OBJ_PLTT_ID(paletteNum); *dest++ = *src++; // copy transparency for (i = 0; i < 16 - 1; i++) { - r = GET_R(src[i]); - g = GET_G(src[i]); - b = GET_B(src[i]); + u32 color = *src++; + r = (color << 27) >> 27; + g = (color << 22) >> 27; + b = (color << 17) >> 27; b += 10; if (b > 31) b = 31; @@ -133,21 +134,22 @@ static void ApplyPondFilter(u8 paletteNum, u16 *dest) // Apply a ice tint effect to a palette static void ApplyIceFilter(u8 paletteNum, u16 *dest) { - u32 i, r, g, b; - // CpuCopy16(gPlttBufferUnfaded + 0x100 + paletteNum * 16, dest, 32); + u32 i; + s32 r, g, b; u16 *src = gPlttBufferUnfaded + OBJ_PLTT_ID(paletteNum); *dest++ = *src++; // copy transparency for (i = 0; i < 16 - 1; i++) { - r = GET_R(src[i]); + u32 color = *src++; + r = (color << 27) >> 27; + g = (color << 22) >> 27; + b = (color << 17) >> 27; r -= 5; - if (r > 31) + if (r < 0) 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; @@ -171,7 +173,7 @@ static void LoadObjectRegularReflectionPalette(struct ObjectEvent *objectEvent, else ApplyIceFilter(mainSprite->oam.paletteNum, filteredData); paletteNum = LoadSpritePalette(&filteredPal); - UpdateSpritePaletteWithWeather(paletteNum); + UpdateSpritePaletteWithWeather(paletteNum, TRUE); } sprite->oam.paletteNum = paletteNum; sprite->oam.objMode = ST_OAM_OBJ_BLEND; @@ -185,7 +187,7 @@ static void LoadObjectHighBridgeReflectionPalette(struct ObjectEvent *objectEven 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); + UpdateSpritePaletteWithWeather(sprite->oam.paletteNum, TRUE); } static void UpdateObjectReflectionSprite(struct Sprite *reflectionSprite) @@ -221,7 +223,7 @@ static void UpdateObjectReflectionSprite(struct Sprite *reflectionSprite) else ApplyIceFilter(mainSprite->oam.paletteNum, filteredData); paletteNum = LoadSpritePalette(&filteredPal); - UpdateSpritePaletteWithWeather(paletteNum); + UpdateSpritePaletteWithWeather(paletteNum, TRUE); } reflectionSprite->oam.paletteNum = paletteNum; } @@ -333,22 +335,26 @@ u32 FldEff_Shadow(void) u8 objectEventId; const struct ObjectEventGraphicsInfo *graphicsInfo; u8 spriteId; - u8 i; - for (i = 0; i < MAX_SPRITES; i++) + s32 i; + for (i = MAX_SPRITES - 1; i > -1; i--) // Search backwards, because of CreateSpriteAtEnd { // Return early if a shadow sprite already exists - if (gSprites[i].data[0] == gFieldEffectArguments[0] && gSprites[i].callback == UpdateShadowFieldEffect) + if (gSprites[i].callback == UpdateShadowFieldEffect + && gSprites[i].sLocalId == gFieldEffectArguments[0] + && gSprites[i].sMapNum == gFieldEffectArguments[1] + && gSprites[i].sMapGroup == gFieldEffectArguments[2]) 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); + LoadSpriteSheetByTemplate(gFieldEffectObjectTemplatePointers[sShadowEffectTemplateIds[graphicsInfo->shadowSize]], 0, 0); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[sShadowEffectTemplateIds[graphicsInfo->shadowSize]], 0, 0, OW_OBJECT_SUBPRIORITY + 1); if (spriteId != MAX_SPRITES) { // SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(8, 12)); - gSprites[spriteId].oam.objMode = 1; // BLEND + gSprites[spriteId].oam.objMode = ST_OAM_OBJ_BLEND; gSprites[spriteId].coordOffsetEnabled = TRUE; gSprites[spriteId].sLocalId = gFieldEffectArguments[0]; gSprites[spriteId].sMapNum = gFieldEffectArguments[1]; @@ -383,8 +389,19 @@ void UpdateShadowFieldEffect(struct Sprite *sprite) sprite->y = linkedSprite->y + sprite->sYOffset; #endif sprite->invisible = linkedSprite->invisible; - if (!objectEvent->active || !objectEvent->hasShadow + if (objectEvent->jumpDone) + { + // Ugly signaling to disable shadows after a jump + objectEvent->noShadow = TRUE; + objectEvent->jumpDone = FALSE; + } + if (!objectEvent->active + || objectEvent->noShadow + || objectEvent->inHotSprings + || objectEvent->inSandPile + || gWeatherPtr->noShadows || MetatileBehavior_IsPokeGrass(objectEvent->currentMetatileBehavior) + || MetatileBehavior_IsPuddle(objectEvent->currentMetatileBehavior) || MetatileBehavior_IsSurfableWaterOrUnderwater(objectEvent->currentMetatileBehavior) || MetatileBehavior_IsSurfableWaterOrUnderwater(objectEvent->previousMetatileBehavior)) { @@ -1028,7 +1045,7 @@ u32 FldEff_ShakingGrass(void) sprite->oam.priority = gFieldEffectArguments[3]; sprite->sWaitFldEff = FLDEFF_SHAKING_GRASS; } - + return spriteId; } @@ -1045,7 +1062,7 @@ u32 FldEff_ShakingGrass2(void) sprite->oam.priority = gFieldEffectArguments[3]; sprite->sWaitFldEff = FLDEFF_SHAKING_LONG_GRASS; } - + return spriteId; } @@ -1078,7 +1095,7 @@ u32 FldEff_WaterSurfacing(void) sprite->oam.priority = gFieldEffectArguments[3]; sprite->sWaitFldEff = FLDEFF_WATER_SURFACING; } - + return spriteId; } @@ -1516,7 +1533,7 @@ static u32 ShowDisguiseFieldEffect(u8 fldEff, u8 fldEffObj, u8 paletteNum) if (spriteId != MAX_SPRITES) { struct Sprite *sprite = &gSprites[spriteId]; - UpdateSpritePaletteByTemplate(gFieldEffectObjectTemplatePointers[fldEffObj], sprite); + sprite->oam.paletteNum = LoadObjectEventPalette(gFieldEffectObjectTemplatePointers[fldEffObj]->paletteTag); sprite->coordOffsetEnabled ++; sprite->sFldEff = fldEff; sprite->sLocalId = gFieldEffectArguments[0]; diff --git a/src/field_player_avatar.c b/src/field_player_avatar.c index 91fd764b50..07f4b74e08 100644 --- a/src/field_player_avatar.c +++ b/src/field_player_avatar.c @@ -9,12 +9,14 @@ #include "field_screen_effect.h" #include "field_player_avatar.h" #include "fieldmap.h" +#include "follower_npc.h" #include "menu.h" #include "metatile_behavior.h" #include "overworld.h" #include "party_menu.h" #include "random.h" #include "rotating_gate.h" +#include "rtc.h" #include "script.h" #include "sound.h" #include "sprite.h" @@ -27,6 +29,7 @@ #include "constants/event_object_movement.h" #include "constants/field_effects.h" #include "constants/items.h" +#include "constants/metatile_behaviors.h" #include "constants/moves.h" #include "constants/songs.h" #include "constants/trainer_types.h" @@ -34,9 +37,29 @@ #define NUM_FORCED_MOVEMENTS 18 #define NUM_ACRO_BIKE_COLLISIONS 5 +enum SpinDirection +{ + SPIN_DIRECTION_NONE, + SPIN_DIRECTION_CLOCKWISE, + SPIN_DIRECTION_COUNTER_CLOCKWISE, +}; + +struct SpinData +{ + u32 triggerEvo:1; + u32 spinDirection:2; + u32 spinTimeout:6; + u32 spinHistory0:3; + u32 spinHistory1:3; + u32 spinHistory2:3; + u32 spinHistory3:3; + u32 VBlanksSpinning:11; //34,1 seconds +}; + static EWRAM_DATA u8 sSpinStartFacingDir = 0; EWRAM_DATA struct ObjectEvent gObjectEvents[OBJECT_EVENTS_COUNT] = {}; EWRAM_DATA struct PlayerAvatar gPlayerAvatar = {}; +EWRAM_DATA struct SpinData gPlayerSpinData = {}; // static declarations static u8 ObjectEventCB2_NoMovement2(void); @@ -44,7 +67,6 @@ static bool8 TryInterruptObjectEventSpecialAnim(struct ObjectEvent *, u8); static void npc_clear_strange_bits(struct ObjectEvent *); static void MovePlayerAvatarUsingKeypadInput(u8, u16, u16); static void PlayerAllowForcedMovementIfMovingSameDirection(void); -static bool8 TryDoMetatileBehaviorForcedMovement(void); static u8 GetForcedMovementByMetatileBehavior(void); static bool8 ForcedMovement_None(void); @@ -421,7 +443,7 @@ static void PlayerAllowForcedMovementIfMovingSameDirection(void) gPlayerAvatar.flags &= ~PLAYER_AVATAR_FLAG_CONTROLLABLE; } -static bool8 TryDoMetatileBehaviorForcedMovement(void) +bool8 TryDoMetatileBehaviorForcedMovement(void) { return sForcedMovementFuncs[GetForcedMovementByMetatileBehavior()](); } @@ -498,6 +520,10 @@ static bool8 DoForcedMovement(u8 direction, void (*moveFunc)(u8)) { playerAvatar->runningState = MOVING; moveFunc(direction); + if (PlayerHasFollowerNPC() + && gObjectEvents[GetFollowerNPCObjectId()].invisible == FALSE + && FindTaskIdByFunc(Task_MoveNPCFollowerAfterForcedMovement) == TASK_NONE) + CreateTask(Task_MoveNPCFollowerAfterForcedMovement, 3); return TRUE; } } @@ -632,8 +658,128 @@ static void PlayerNotOnBikeNotMoving(u8 direction, u16 heldKeys) PlayerFaceDirection(GetPlayerFacingDirection()); } +void UpdateSpinData(void) +{ + if (gPlayerSpinData.spinTimeout != 0) + { + gPlayerSpinData.spinTimeout--; + if (gPlayerSpinData.VBlanksSpinning < 2048) + gPlayerSpinData.VBlanksSpinning++; + if (gPlayerSpinData.spinTimeout == 0 && gPlayerSpinData.spinDirection != SPIN_DIRECTION_NONE) + gPlayerSpinData.triggerEvo = TRUE; + } +} + +void ResetSpinTimer(void) +{ + gPlayerSpinData.spinTimeout = 0; + gPlayerSpinData.VBlanksSpinning = 0; + gPlayerSpinData.spinDirection = SPIN_DIRECTION_NONE; + gPlayerSpinData.spinHistory0 = DIR_NONE; + gPlayerSpinData.spinHistory1 = DIR_NONE; + gPlayerSpinData.spinHistory2 = DIR_NONE; + gPlayerSpinData.spinHistory3 = DIR_NONE; +} + +static const u8 sClockwiseDirections[4][4] = +{ + { DIR_NORTH, DIR_EAST, DIR_SOUTH, DIR_WEST, }, + { DIR_EAST, DIR_SOUTH, DIR_WEST, DIR_NORTH, }, + { DIR_SOUTH, DIR_WEST, DIR_NORTH, DIR_EAST, }, + { DIR_WEST, DIR_NORTH, DIR_EAST, DIR_SOUTH, }, +}; + +static const u8 sCounterClockwiseDirections[4][4] = +{ + { DIR_NORTH, DIR_WEST, DIR_SOUTH, DIR_EAST, }, + { DIR_WEST, DIR_SOUTH, DIR_EAST, DIR_NORTH, }, + { DIR_SOUTH, DIR_EAST, DIR_NORTH, DIR_WEST, }, + { DIR_EAST, DIR_NORTH, DIR_WEST, DIR_SOUTH, }, +}; + +static void WindUpSpinTimer(u32 direction) +{ + gPlayerSpinData.spinTimeout = 60; + gPlayerSpinData.spinHistory0 = gPlayerSpinData.spinHistory1; + gPlayerSpinData.spinHistory1 = gPlayerSpinData.spinHistory2; + gPlayerSpinData.spinHistory2 = gPlayerSpinData.spinHistory3; + gPlayerSpinData.spinHistory3 = direction; + + for (int i = 0; i < ARRAY_COUNT(sClockwiseDirections); i++) + { + if (gPlayerSpinData.spinHistory0 == sClockwiseDirections[i][0] + && gPlayerSpinData.spinHistory1 == sClockwiseDirections[i][1] + && gPlayerSpinData.spinHistory2 == sClockwiseDirections[i][2] + && gPlayerSpinData.spinHistory3 == sClockwiseDirections[i][3]) + { + gPlayerSpinData.spinDirection = SPIN_DIRECTION_CLOCKWISE; + return; + } + } + for (int i = 0; i < ARRAY_COUNT(sCounterClockwiseDirections); i++) + { + if (gPlayerSpinData.spinHistory0 == sCounterClockwiseDirections[i][0] + && gPlayerSpinData.spinHistory1 == sCounterClockwiseDirections[i][1] + && gPlayerSpinData.spinHistory2 == sCounterClockwiseDirections[i][2] + && gPlayerSpinData.spinHistory3 == sCounterClockwiseDirections[i][3]) + { + gPlayerSpinData.spinDirection = SPIN_DIRECTION_COUNTER_CLOCKWISE; + return; + } + } + gPlayerSpinData.spinDirection = SPIN_DIRECTION_NONE; +} + +bool32 CanTriggerSpinEvolution() +{ + gSpecialVar_0x8000 = EVO_NONE; + bool32 canStopEvo = TRUE; + if (gPlayerSpinData.triggerEvo) + { + u32 seconds = gPlayerSpinData.VBlanksSpinning / 60; + u32 direction = gPlayerSpinData.spinDirection; + if (seconds >= 10) + { + gSpecialVar_0x8000 = SPIN_EITHER; + } + + else if (seconds >= 5 && seconds < 10) + { + if (direction == SPIN_DIRECTION_CLOCKWISE) + gSpecialVar_0x8000 = SPIN_CW_LONG; + else if (direction == SPIN_DIRECTION_COUNTER_CLOCKWISE) + gSpecialVar_0x8000 = SPIN_CCW_LONG; + } + else if (seconds < 5) + { + if (direction == SPIN_DIRECTION_CLOCKWISE) + gSpecialVar_0x8000 = SPIN_CW_SHORT; + else if (direction == SPIN_DIRECTION_COUNTER_CLOCKWISE) + gSpecialVar_0x8000 = SPIN_CCW_SHORT; + } + gSpecialVar_0x8001 = FALSE; //canStopEvo + canStopEvo = FALSE; + gSpecialVar_0x8002 = TRUE; //tryMultiple + gPlayerSpinData.triggerEvo = FALSE; + } + if (gSpecialVar_0x8000 != EVO_NONE) + { + for (u32 i = 0; i < PARTY_SIZE; i++) + { + u16 species = GetEvolutionTargetSpecies(&gPlayerParty[i], EVO_MODE_OVERWORLD_SPECIAL, 0, NULL, &canStopEvo, CHECK_EVO); + if (species != SPECIES_NONE) + { + return TRUE; + } + } + } + + return FALSE; +} + static void PlayerNotOnBikeTurningInPlace(u8 direction, u16 heldKeys) { + WindUpSpinTimer(direction); PlayerTurnInPlace(direction); } @@ -665,7 +811,8 @@ static void PlayerNotOnBikeMoving(u8 direction, u16 heldKeys) return; } } - + + ResetSpinTimer(); // Everything below will move the player a space, reset the timer. gPlayerAvatar.creeping = FALSE; if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_SURFING) { @@ -683,7 +830,7 @@ static void PlayerNotOnBikeMoving(u8 direction, u16 heldKeys) } if (!(gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_UNDERWATER) && (heldKeys & B_BUTTON) && FlagGet(FLAG_SYS_B_DASH) - && IsRunningDisallowed(gObjectEvents[gPlayerAvatar.objectEventId].currentMetatileBehavior) == 0) + && IsRunningDisallowed(gObjectEvents[gPlayerAvatar.objectEventId].currentMetatileBehavior) == 0 && !FollowerNPCComingThroughDoor()) { if (ObjectMovingOnRockStairs(&gObjectEvents[gPlayerAvatar.objectEventId], direction)) PlayerRunSlow(direction); @@ -774,7 +921,9 @@ static bool8 CanStopSurfing(s16 x, s16 y, u8 direction) { if ((gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_SURFING) && MapGridGetElevationAt(x, y) == 3 - && GetObjectEventIdByPosition(x, y, 3) == OBJECT_EVENTS_COUNT) + && (GetObjectEventIdByPosition(x, y, 3) == OBJECT_EVENTS_COUNT + || GetObjectEventIdByPosition(x, y, 3) == GetFollowerNPCObjectId() + )) { CreateStopSurfingTask(direction); return TRUE; @@ -1062,6 +1211,22 @@ void PlayerOnBikeCollide(u8 direction) { PlayCollisionSoundIfNotFacingWarp(direction); PlayerSetAnimId(GetWalkInPlaceNormalMovementAction(direction), COPY_MOVE_WALK); + // Edge case: If the player stops at the top of a mud slide, but the NPC follower is still on a mud slide tile, + // move the follower into the player and hide them. + if (PlayerHasFollowerNPC()) + { + struct ObjectEvent *npcFollower = &gObjectEvents[GetFollowerNPCObjectId()]; + struct ObjectEvent *player = &gObjectEvents[gPlayerAvatar.objectEventId]; + + if (npcFollower->invisible == FALSE + && player->currentMetatileBehavior != MB_MUDDY_SLOPE + && npcFollower->currentMetatileBehavior == MB_MUDDY_SLOPE) + { + gPlayerAvatar.preventStep = TRUE; + ObjectEventSetHeldMovement(npcFollower, MOVEMENT_ACTION_WALK_FAST_UP); + CreateTask(Task_HideNPCFollowerAfterMovementFinish, 2); + } + } } void PlayerOnBikeCollideWithFarawayIslandMew(u8 direction) @@ -1453,6 +1618,7 @@ void InitPlayerAvatar(s16 x, s16 y, u8 direction, u8 gender) gPlayerAvatar.spriteId = objectEvent->spriteId; gPlayerAvatar.gender = gender; SetPlayerAvatarStateMask(PLAYER_AVATAR_FLAG_CONTROLLABLE | PLAYER_AVATAR_FLAG_ON_FOOT); + CreateFollowerNPCAvatar(); } void SetPlayerInvisibility(bool8 invisible) @@ -1702,6 +1868,7 @@ static void CreateStopSurfingTask(u8 direction) taskId = CreateTask(Task_StopSurfingInit, 0xFF); gTasks[taskId].data[0] = direction; Task_StopSurfingInit(taskId); + PrepareFollowerNPCDismountSurf(); } static void Task_StopSurfingInit(u8 taskId) @@ -2604,4 +2771,3 @@ bool8 ObjectMovingOnRockStairs(struct ObjectEvent *objectEvent, u8 direction) return FALSE; #endif } - diff --git a/src/field_screen_effect.c b/src/field_screen_effect.c index b31624adb0..9ac99465ca 100644 --- a/src/field_screen_effect.c +++ b/src/field_screen_effect.c @@ -12,6 +12,7 @@ #include "field_screen_effect.h" #include "field_special_scene.h" #include "field_weather.h" +#include "follower_npc.h" #include "gpu_regs.h" #include "heal_location.h" #include "io_reg.h" @@ -39,6 +40,7 @@ #include "constants/rgb.h" #include "trainer_hill.h" #include "fldeff.h" +#include "battle.h" static void Task_ExitNonAnimDoor(u8); static void Task_ExitNonDoor(u8); @@ -47,8 +49,6 @@ static void FillPalBufferWhite(void); static void Task_ExitDoor(u8); static bool32 WaitForWeatherFadeIn(void); static void Task_SpinEnterWarp(u8 taskId); -static void Task_WarpAndLoadMap(u8 taskId); -static void Task_DoDoorWarp(u8 taskId); static void Task_EnableScriptAfterMusicFade(u8 taskId); static void ExitStairsMovement(s16*, s16*, s16*, s16*, s16*); @@ -124,7 +124,7 @@ void WarpFadeOutScreen(void) } } -static void SetPlayerVisibility(bool8 visible) +void SetPlayerVisibility(bool8 visible) { SetPlayerInvisibility(!visible); } @@ -292,6 +292,7 @@ void FieldCB_DefaultWarpExit(void) Overworld_PlaySpecialMapMusic(); WarpFadeInScreen(); SetUpWarpExitTask(); + FollowerNPC_WarpSetEnd(); LockPlayerFieldControls(); } @@ -340,6 +341,7 @@ static void Task_ExitDoor(u8 taskId) switch (task->tState) { case 0: + HideNPCFollower(); SetPlayerVisibility(FALSE); FreezeObjectEvents(); PlayerGetDestCoords(x, y); @@ -369,6 +371,8 @@ static void Task_ExitDoor(u8 taskId) case 3: if (task->data[1] < 0 || gTasks[task->data[1]].isActive != TRUE) { + FollowerNPC_SetIndicatorToComeOutDoor(); + FollowerNPC_WarpSetEnd(); UnfreezeObjectEvents(); task->tState = 4; } @@ -389,6 +393,7 @@ static void Task_ExitNonAnimDoor(u8 taskId) switch (task->tState) { case 0: + HideNPCFollower(); SetPlayerVisibility(FALSE); FreezeObjectEvents(); PlayerGetDestCoords(x, y); @@ -407,6 +412,14 @@ static void Task_ExitNonAnimDoor(u8 taskId) case 2: if (IsPlayerStandingStill()) { + s16 x, y; + + PlayerGetDestCoords(&x, &y); + if (!MetatileBehavior_IsDeepSouthWarp(MapGridGetMetatileBehaviorAt(x, y + 1))) + FollowerNPC_SetIndicatorToComeOutDoor(); + // TODO: Add specific follower door warp behavior for MB_DEEP_SOUTH_WARP. + + FollowerNPC_WarpSetEnd(); UnfreezeObjectEvents(); task->tState = 3; } @@ -580,6 +593,7 @@ void DoMossdeepGymWarp(void) SaveObjectEvents(); TryFadeOutOldMapMusic(); WarpFadeOutScreen(); + SetFollowerNPCData(FNPC_DATA_WARP_END, FNPC_WARP_REAPPEAR); PlaySE(SE_WARP_IN); CreateTask(Task_WarpAndLoadMap, 10); gFieldCallback = FieldCB_MossdeepGymWarpExit; @@ -660,7 +674,7 @@ void ReturnFromLinkRoom(void) CreateTask(Task_ReturnToWorldFromLinkRoom, 10); } -static void Task_WarpAndLoadMap(u8 taskId) +void Task_WarpAndLoadMap(u8 taskId) { struct Task *task = &gTasks[taskId]; @@ -691,16 +705,35 @@ static void Task_WarpAndLoadMap(u8 taskId) } } -static void Task_DoDoorWarp(u8 taskId) +#define tDoorTask data[1] + +enum +{ + DOORWARP_OPEN_DOOR, + DOORWARP_START_WALK_UP, + DOORWARP_HIDE_PLAYER, + DOORWARP_WAIT_DOOR_ANIM_TASK, + DOORWARP_DO_WARP +}; + +void Task_DoDoorWarp(u8 taskId) { struct Task *task = &gTasks[taskId]; s16 *x = &task->data[2]; s16 *y = &task->data[3]; + u8 playerObjId = gPlayerAvatar.objectEventId; + u8 followerObjId = GetFollowerNPCObjectId(); struct ObjectEvent *followerObject = GetFollowerObject(); switch (task->tState) { - case 0: + case DOORWARP_OPEN_DOOR: + // Stop running. + if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_DASH)) + SetPlayerAvatarTransitionFlags(PLAYER_AVATAR_FLAG_ON_FOOT); + + // Just in case came out and went right back in, reset follower NPC door state. + SetFollowerNPCData(FNPC_DATA_COME_OUT_DOOR, FNPC_DOOR_NONE); FreezeObjectEvents(); PlayerGetDestCoords(x, y); PlaySE(GetDoorSoundEffect(*x, *y - 1)); @@ -710,38 +743,49 @@ static void Task_DoDoorWarp(u8 taskId) ClearObjectEventMovement(followerObject, &gSprites[followerObject->spriteId]); ObjectEventSetHeldMovement(followerObject, MOVEMENT_ACTION_ENTER_POKEBALL); } - task->data[1] = FieldAnimateDoorOpen(*x, *y - 1); - task->tState = 1; + task->tDoorTask = FieldAnimateDoorOpen(*x, *y - 1); + task->tState = DOORWARP_START_WALK_UP; break; - case 1: - if (task->data[1] < 0 || gTasks[task->data[1]].isActive != TRUE) + case DOORWARP_START_WALK_UP: + if (task->tDoorTask < 0 || gTasks[task->tDoorTask].isActive != TRUE) { - u8 objEventId; - objEventId = GetObjectEventIdByLocalIdAndMap(LOCALID_PLAYER, 0, 0); - ObjectEventClearHeldMovementIfActive(&gObjectEvents[objEventId]); - objEventId = GetObjectEventIdByLocalIdAndMap(LOCALID_PLAYER, 0, 0); - ObjectEventSetHeldMovement(&gObjectEvents[objEventId], MOVEMENT_ACTION_WALK_NORMAL_UP); - task->tState = 2; + ObjectEventClearHeldMovementIfActive(&gObjectEvents[playerObjId]); + ObjectEventSetHeldMovement(&gObjectEvents[playerObjId], MOVEMENT_ACTION_WALK_NORMAL_UP); + + if (PlayerHasFollowerNPC() && !gObjectEvents[followerObjId].invisible) + { + u8 newState = DetermineFollowerNPCState(&gObjectEvents[followerObjId], MOVEMENT_ACTION_WALK_NORMAL_UP, + DetermineFollowerNPCDirection(&gObjectEvents[playerObjId], &gObjectEvents[followerObjId])); + ObjectEventClearHeldMovementIfActive(&gObjectEvents[followerObjId]); + ObjectEventSetHeldMovement(&gObjectEvents[followerObjId], newState); + } + + task->tState = DOORWARP_HIDE_PLAYER; } break; - case 2: + case DOORWARP_HIDE_PLAYER: if (IsPlayerStandingStill()) { - u8 objEventId; - task->data[1] = FieldAnimateDoorClose(*x, *y - 1); - objEventId = GetObjectEventIdByLocalIdAndMap(LOCALID_PLAYER, 0, 0); - ObjectEventClearHeldMovementIfFinished(&gObjectEvents[objEventId]); + // Don't close door on NPC follower. + if (!PlayerHasFollowerNPC() || gObjectEvents[followerObjId].invisible) + task->tDoorTask = FieldAnimateDoorClose(*x, *y - 1); + + ObjectEventClearHeldMovementIfFinished(&gObjectEvents[playerObjId]); SetPlayerVisibility(FALSE); - task->tState = 3; + task->tState = DOORWARP_WAIT_DOOR_ANIM_TASK; } break; - case 3: - if (task->data[1] < 0 || gTasks[task->data[1]].isActive != TRUE) + case DOORWARP_WAIT_DOOR_ANIM_TASK: + if (task->tDoorTask < 0 || gTasks[task->tDoorTask].isActive != TRUE) + task->tState = DOORWARP_DO_WARP; + break; + case DOORWARP_DO_WARP: + if (PlayerHasFollowerNPC()) { - task->tState = 4; + ObjectEventClearHeldMovementIfActive(&gObjectEvents[followerObjId]); + ObjectEventSetHeldMovement(&gObjectEvents[followerObjId], MOVEMENT_ACTION_WALK_NORMAL_UP); } - break; - case 4: + TryFadeOutOldMapMusic(); WarpFadeOutScreen(); PlayRainStoppingSoundEffect(); @@ -1034,6 +1078,7 @@ static void Task_SpinEnterWarp(u8 taskId) case 1: if (WaitForWeatherFadeIn() && IsPlayerSpinEntranceActive() != TRUE) { + FollowerNPC_WarpSetEnd(); UnfreezeObjectEvents(); UnlockPlayerFieldControls(); DestroyTask(taskId); @@ -1156,6 +1201,7 @@ static void Task_OrbEffect(u8 taskId) ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN1_ON); SetGpuRegBits(REG_OFFSET_BLDCNT, gOrbEffectBackgroundLayerFlags[0]); SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(12, 7)); + UpdateShadowColor(RGB(9, 8, 8)); SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR); SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG1 | WINOUT_WIN01_BG2 | WINOUT_WIN01_BG3 | WINOUT_WIN01_OBJ); SetBgTilemapPalette(0, 0, 0, DISPLAY_TILE_WIDTH, DISPLAY_TILE_HEIGHT, 0xF); @@ -1223,6 +1269,7 @@ static void Task_OrbEffect(u8 taskId) SetGpuReg(REG_OFFSET_DISPCNT, tDispCnt); SetGpuReg(REG_OFFSET_BLDCNT, tBldCnt); SetGpuReg(REG_OFFSET_BLDALPHA, tBldAlpha); + UpdateShadowColor(RGB_BLACK); SetGpuReg(REG_OFFSET_WININ, tWinIn); SetGpuReg(REG_OFFSET_WINOUT, tWinOut); ScriptContext_Enable(); @@ -1342,6 +1389,21 @@ enum { FRLG_WHITEOUT_HEAL_SCRIPT, }; +static const u8 *GenerateRecoveryMessage(u8 taskId) +{ + bool32 forfeitTrainer = DidPlayerForfeitNormalTrainerBattle(); + bool32 destinationIsPlayersHouse = (gTasks[taskId].tIsPlayerHouse == TRUE); + + if (forfeitTrainer && destinationIsPlayersHouse) + return gText_PlayerRegroupHome; + else if (forfeitTrainer && !destinationIsPlayersHouse) + return gText_PlayerRegroupCenter; + else if (!forfeitTrainer && destinationIsPlayersHouse) + return gText_PlayerScurriedBackHome; + else + return gText_PlayerScurriedToCenter; +} + static void Task_RushInjuredPokemonToCenter(u8 taskId) { u32 windowId; @@ -1361,7 +1423,8 @@ static void Task_RushInjuredPokemonToCenter(u8 taskId) break; case FRLG_WHITEOUT_PRINT_MSG: { - const u8 *recoveryMessage = gTasks[taskId].tIsPlayerHouse == TRUE ? gText_PlayerScurriedBackHome : gText_PlayerScurriedToCenter; + const u8 *recoveryMessage = GenerateRecoveryMessage(taskId); + if (PrintWhiteOutRecoveryMessage(taskId, recoveryMessage, 2, 8)) { ObjectEventTurn(&gObjectEvents[gPlayerAvatar.objectEventId], DIR_NORTH); diff --git a/src/field_specials.c b/src/field_specials.c index a7ea4a89eb..971847888a 100644 --- a/src/field_specials.c +++ b/src/field_specials.c @@ -68,6 +68,7 @@ #include "constants/battle_frontier.h" #include "constants/weather.h" #include "constants/metatile_labels.h" +#include "constants/rgb.h" #include "palette.h" #include "battle_util.h" #include "naming_screen.h" @@ -3281,6 +3282,7 @@ static void ChangeDeoxysRockLevel(u8 rockLevel) { u8 paletteNum = IndexOfSpritePaletteTag(OBJ_EVENT_PAL_TAG_BIRTH_ISLAND_STONE); LoadPalette(&sDeoxysRockPalettes[rockLevel], OBJ_PLTT_ID(paletteNum), PLTT_SIZEOF(4)); + UpdateSpritePaletteWithWeather(paletteNum, FALSE); if (rockLevel == 0) PlaySE(SE_M_CONFUSE_RAY); // Failure sound @@ -3332,7 +3334,7 @@ void SetDeoxysRockPalette(void) 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); + CpuFill16(RGB_BLACK, &gPlttBufferFaded[OBJ_PLTT_ID(paletteNum)], PLTT_SIZE_4BPP); } void SetPCBoxToSendMon(u8 boxId) diff --git a/src/field_weather.c b/src/field_weather.c index ae69289d8a..7e8d83b2a5 100644 --- a/src/field_weather.c +++ b/src/field_weather.c @@ -3,6 +3,7 @@ #include "constants/weather.h" #include "constants/rgb.h" #include "util.h" +#include "decompress.h" #include "event_object_movement.h" #include "field_weather.h" #include "fieldmap.h" @@ -18,16 +19,10 @@ #include "trig.h" #include "gpu_regs.h" #include "field_camera.h" +#include "overworld.h" #define DROUGHT_COLOR_INDEX(color) ((((color) >> 1) & 0xF) | (((color) >> 2) & 0xF0) | (((color) >> 3) & 0xF00)) -enum -{ - COLOR_MAP_NONE, - COLOR_MAP_DARK_CONTRAST, - COLOR_MAP_CONTRAST, -}; - struct RGBColor { u16 r:5; @@ -208,7 +203,7 @@ void StartWeather(void) sPaletteColorMapTypes = sBasePaletteColorMapTypes; gWeatherPtr->contrastColorMapSpritePalIndex = index; - gWeatherPtr->weatherPicSpritePalIndex = AllocSpritePalette(PALTAG_WEATHER_2); + gWeatherPtr->weatherPicSpritePalIndex = 0xFF; // defer allocation until needed gWeatherPtr->rainSpriteCount = 0; gWeatherPtr->curRainSpriteIndex = 0; gWeatherPtr->cloudSpritesCreated = 0; @@ -318,7 +313,8 @@ static void Task_WeatherMain(u8 taskId) static void None_Init(void) { - Weather_SetBlendCoeffs(8, 12); // Indoor shadows + Weather_SetBlendCoeffs(8, BASE_SHADOW_INTENSITY); // Indoor shadows + gWeatherPtr->noShadows = FALSE; gWeatherPtr->targetColorMapIndex = 0; gWeatherPtr->colorMapStepDelay = 0; } @@ -458,18 +454,31 @@ static void ApplyColorMap(u8 startPalIndex, u8 numPalettes, s8 colorMapIndex) if (colorMapIndex > 0) { + // Create the palette mask + u32 palettes = PALETTES_ALL; + numPalettes += startPalIndex; + palettes = (palettes >> startPalIndex) << startPalIndex; + palettes = (palettes << (32 - numPalettes)) >> (32 - numPalettes); + numPalettes -= startPalIndex; colorMapIndex--; palOffset = PLTT_ID(startPalIndex); + UpdateAltBgPalettes(palettes & PALETTES_BG); + // Thunder gamma-shift looks bad on night-blended palettes, so ignore time blending in some situations + if (colorMapIndex <= 3 && MapHasNaturalLight(gMapHeader.mapType)) + UpdatePalettesWithTime(palettes); + else + CpuFastCopy(gPlttBufferUnfaded + palOffset, gPlttBufferFaded + palOffset, PLTT_SIZE_4BPP * numPalettes); numPalettes += startPalIndex; curPalIndex = startPalIndex; // Loop through the specified palette range and apply necessary color maps. while (curPalIndex < numPalettes) { - if (sPaletteColorMapTypes[curPalIndex] == COLOR_MAP_NONE) + // don't blend special palettes immune to blending + if (sPaletteColorMapTypes[curPalIndex] == COLOR_MAP_NONE || + (curPalIndex >= 16 && IS_BLEND_IMMUNE_TAG(GetSpritePaletteTagByPaletteNum(curPalIndex - 16)))) { // No palette change. - CpuFastCopy(&gPlttBufferUnfaded[palOffset], &gPlttBufferFaded[palOffset], PLTT_SIZE_4BPP); palOffset += 16; } else @@ -484,7 +493,7 @@ static void ApplyColorMap(u8 startPalIndex, u8 numPalettes, s8 colorMapIndex) for (i = 0; i < 16; i++) { // Apply color map to the original color. - struct RGBColor baseColor = *(struct RGBColor *)&gPlttBufferUnfaded[palOffset]; + struct RGBColor baseColor = *(struct RGBColor *)&gPlttBufferFaded[palOffset]; r = colorMap[baseColor.r]; g = colorMap[baseColor.g]; b = colorMap[baseColor.b]; @@ -525,8 +534,17 @@ static void ApplyColorMap(u8 startPalIndex, u8 numPalettes, s8 colorMapIndex) } else { - // No palette blending. - CpuFastCopy(&gPlttBufferUnfaded[PLTT_ID(startPalIndex)], &gPlttBufferFaded[PLTT_ID(startPalIndex)], numPalettes * PLTT_SIZE_4BPP); + if (MapHasNaturalLight(gMapHeader.mapType)) + { + // Time-blend + u32 palettes = ((1 << numPalettes) - 1) << startPalIndex; + UpdateAltBgPalettes(palettes & PALETTES_BG); + UpdatePalettesWithTime(palettes); + } + else + { + CpuFastCopy(&gPlttBufferUnfaded[PLTT_ID(startPalIndex)], &gPlttBufferFaded[PLTT_ID(startPalIndex)], numPalettes * PLTT_SIZE_4BPP); + } } } @@ -547,10 +565,13 @@ static void ApplyColorMapWithBlend(u8 startPalIndex, u8 numPalettes, s8 colorMap while (curPalIndex < numPalettes) { + UpdateAltBgPalettes((1 << (palOffset >> 4)) & PALETTES_BG); + CpuFastCopy(gPlttBufferUnfaded + palOffset, gPlttBufferFaded + palOffset, 16 * sizeof(u16)); + UpdatePalettesWithTime(1 << (palOffset >> 4)); // Apply TOD blend if (sPaletteColorMapTypes[curPalIndex] == COLOR_MAP_NONE) { // No color map. Simply blend the colors. - BlendPalette(palOffset, 16, blendCoeff, blendColor); + BlendPalettesFine(1, gPlttBufferFaded + palOffset, gPlttBufferFaded + palOffset, blendCoeff, blendColor); palOffset += 16; } else @@ -564,7 +585,7 @@ static void ApplyColorMapWithBlend(u8 startPalIndex, u8 numPalettes, s8 colorMap for (i = 0; i < 16; i++) { - struct RGBColor baseColor = *(struct RGBColor *)&gPlttBufferUnfaded[palOffset]; + struct RGBColor baseColor = *(struct RGBColor *)&gPlttBufferFaded[palOffset]; u8 r = colorMap[baseColor.r]; u8 g = colorMap[baseColor.g]; u8 b = colorMap[baseColor.b]; @@ -636,51 +657,28 @@ static void ApplyDroughtColorMapWithBlend(s8 colorMapIndex, u8 blendCoeff, u32 b } } +// This is only called during fade-in/fade-out in fog +// blendCoeff & blendColor are the *fade* colors, not fog colors static void ApplyFogBlend(u8 blendCoeff, u32 blendColor) { - struct RGBColor color; - u8 rBlend; - u8 gBlend; - u8 bBlend; - u16 curPalIndex; + u32 curPalIndex; + u16 fogCoeff = min((gTimeOfDay + 1) * 4, 12); - BlendPalette(BG_PLTT_ID(0), 16 * 16, blendCoeff, blendColor); - color = *(struct RGBColor *)&blendColor; - rBlend = color.r; - gBlend = color.g; - bBlend = color.b; + // First blend all palettes with time + UpdateAltBgPalettes(PALETTES_BG); + CpuFastCopy(gPlttBufferUnfaded, gPlttBufferFaded, PLTT_BUFFER_SIZE * 2); + UpdatePalettesWithTime(PALETTES_ALL); + // Then blend tile palettes [0, 12] faded->faded with fadeIn color + BlendPalettesFine(PALETTES_MAP, gPlttBufferFaded, gPlttBufferFaded, blendCoeff, blendColor); + // Do fog blending on marked sprite palettes for (curPalIndex = 16; curPalIndex < 32; curPalIndex++) { if (LightenSpritePaletteInFog(curPalIndex)) - { - u16 palEnd = PLTT_ID(curPalIndex + 1); - u16 palOffset = PLTT_ID(curPalIndex); - - while (palOffset < palEnd) - { - struct RGBColor color = *(struct RGBColor *)&gPlttBufferUnfaded[palOffset]; - u8 r = color.r; - u8 g = color.g; - u8 b = color.b; - - r += ((28 - r) * 3) >> 2; - g += ((31 - g) * 3) >> 2; - b += ((28 - b) * 3) >> 2; - - r += ((rBlend - r) * blendCoeff) >> 4; - g += ((gBlend - g) * blendCoeff) >> 4; - b += ((bBlend - b) * blendCoeff) >> 4; - - gPlttBufferFaded[palOffset] = RGB2(r, g, b); - palOffset++; - } - } - else - { - BlendPalette(PLTT_ID(curPalIndex), 16, blendCoeff, blendColor); - } + BlendPalettesFine(1, gPlttBufferFaded + PLTT_ID(curPalIndex), gPlttBufferFaded + PLTT_ID(curPalIndex), fogCoeff, RGB(28, 31, 28)); } + // Finally blend all sprite palettes faded->faded with fadeIn color + BlendPalettesFine(PALETTES_OBJECTS, gPlttBufferFaded, gPlttBufferFaded, blendCoeff, blendColor); } static void MarkFogSpritePalToLighten(u8 paletteIndex) @@ -694,7 +692,10 @@ static void MarkFogSpritePalToLighten(u8 paletteIndex) static bool8 LightenSpritePaletteInFog(u8 paletteIndex) { - u16 i; + u32 i; + + if (paletteIndex >= 16 && IS_BLEND_IMMUNE_TAG(GetSpritePaletteTagByPaletteNum(paletteIndex - 16))) + return FALSE; for (i = 0; i < gWeatherPtr->lightenedFogSpritePalsCount; i++) { @@ -772,8 +773,10 @@ void FadeScreen(u8 mode, s8 delay) if (fadeOut) { - if (useWeatherPal) - CpuFastCopy(gPlttBufferFaded, gPlttBufferUnfaded, PLTT_SIZE); + // Note: Copying faded -> unfaded like this works fine, except if the screen is faded back in + // without transitioning to a different screen + // For cases like that, use fadescreenswapbuffers + CpuFastCopy(gPlttBufferFaded, gPlttBufferUnfaded, PLTT_BUFFER_SIZE * 2); BeginNormalPaletteFade(PALETTES_ALL, delay, 0, 16, fadeColor); gWeatherPtr->palProcessingState = WEATHER_PAL_STATE_SCREEN_FADING_OUT; @@ -781,10 +784,20 @@ void FadeScreen(u8 mode, s8 delay) else { gWeatherPtr->fadeDestColor = fadeColor; + UpdateTimeOfDay(); if (useWeatherPal) - gWeatherPtr->fadeScreenCounter = 0; + { + gWeatherPtr->fadeScreenCounter = 0; // Triggers gamma-shift-based fade-in + } + else if (MapHasNaturalLight(gMapHeader.mapType)) + { + UpdateAltBgPalettes(PALETTES_BG); + BeginTimeOfDayPaletteFade(PALETTES_ALL, delay, 16, 0, &gTimeBlend.startBlend, &gTimeBlend.endBlend, gTimeBlend.weight, fadeColor); + } else + { BeginNormalPaletteFade(PALETTES_ALL, delay, 16, 0, fadeColor); + } gWeatherPtr->palProcessingState = WEATHER_PAL_STATE_SCREEN_FADING_IN; gWeatherPtr->fadeInFirstFrame = TRUE; @@ -794,12 +807,41 @@ void FadeScreen(u8 mode, s8 delay) } } +// fades screen using BLDY +// Note: This enables blending in all windows; +// These bits may need to be disabled later +// (i.e if blending lighting effects using WINOBJ) +void FadeScreenHardware(u32 mode, s32 delay) +{ + u32 bldCnt = GetGpuReg(REG_OFFSET_BLDCNT) & BLDCNT_TGT2_ALL; + bldCnt |= BLDCNT_TGT1_ALL; + // enable blend in all windows + SetGpuRegBits(REG_OFFSET_WININ, WININ_WIN0_CLR | WININ_WIN1_CLR); + SetGpuRegBits(REG_OFFSET_WINOUT, WINOUT_WIN01_CLR); + + switch (mode) + { + case FADE_FROM_BLACK: + BeginHardwarePaletteFade(bldCnt | BLDCNT_EFFECT_DARKEN, delay, 16, 0, TRUE); + break; + case FADE_TO_BLACK: + BeginHardwarePaletteFade(bldCnt | BLDCNT_EFFECT_DARKEN, delay, 0, 16, FALSE); + break; + case FADE_FROM_WHITE: + BeginHardwarePaletteFade(bldCnt | BLDCNT_EFFECT_LIGHTEN, delay, 16, 0, TRUE); + break; + case FADE_TO_WHITE: + BeginHardwarePaletteFade(bldCnt | BLDCNT_EFFECT_LIGHTEN, delay, 0, 16, FALSE); + break; + } +} + bool8 IsWeatherNotFadingIn(void) { return (gWeatherPtr->palProcessingState != WEATHER_PAL_STATE_SCREEN_FADING_IN); } -void UpdateSpritePaletteWithWeather(u8 spritePaletteIndex) +void UpdateSpritePaletteWithWeather(u8 spritePaletteIndex, bool8 allowFog) { u16 paletteIndex = 16 + spritePaletteIndex; u16 i; @@ -826,20 +868,37 @@ void UpdateSpritePaletteWithWeather(u8 spritePaletteIndex) default: if (gWeatherPtr->currWeather != WEATHER_FOG_HORIZONTAL) { - ApplyColorMap(paletteIndex, 1, gWeatherPtr->colorMapIndex); + if (gWeatherPtr->colorMapIndex) + ApplyColorMap(paletteIndex, 1, gWeatherPtr->colorMapIndex); + else + UpdateSpritePaletteWithTime(spritePaletteIndex); } else { - paletteIndex = PLTT_ID(paletteIndex); - BlendPalette(paletteIndex, 16, 12, RGB(28, 31, 28)); + // In horizontal fog, only specific palettes should be fog-blended + if (allowFog) + { + i = min((gTimeOfDay + 1) * 4, 12); // fog coeff, highest in day and lowest at night + paletteIndex = PLTT_ID(paletteIndex); + // First blend with time + CpuFastCopy(gPlttBufferUnfaded + paletteIndex, gPlttBufferFaded + paletteIndex, PLTT_SIZE_4BPP); + UpdateSpritePaletteWithTime(spritePaletteIndex); + // Then blend faded->faded with fog coeff + BlendPalettesFine(1, gPlttBufferFaded + paletteIndex, gPlttBufferFaded + paletteIndex, i, RGB(28, 31, 28)); + } + else + { + // Otherwise, just time-blend the palette + UpdateSpritePaletteWithTime(spritePaletteIndex); + } } break; } } -void ApplyWeatherColorMapToPal(u8 paletteIndex) +void ApplyWeatherColorMapToPals(u8 startPalIndex, u8 numPalettes) { - ApplyColorMap(paletteIndex, 1, gWeatherPtr->colorMapIndex); + ApplyColorMap(startPalIndex, numPalettes, gWeatherPtr->colorMapIndex); } static bool8 UNUSED IsFirstFrameOfWeatherFadeIn(void) @@ -852,8 +911,11 @@ static bool8 UNUSED IsFirstFrameOfWeatherFadeIn(void) void LoadCustomWeatherSpritePalette(const u16 *palette) { + if (gWeatherPtr->weatherPicSpritePalIndex > 16 // haven't allocated palette yet + && (gWeatherPtr->weatherPicSpritePalIndex = AllocSpritePalette(PALTAG_WEATHER_2)) > 16) + return; LoadPalette(palette, OBJ_PLTT_ID(gWeatherPtr->weatherPicSpritePalIndex), PLTT_SIZE_4BPP); - UpdateSpritePaletteWithWeather(gWeatherPtr->weatherPicSpritePalIndex); + UpdateSpritePaletteWithWeather(gWeatherPtr->weatherPicSpritePalIndex, TRUE); } static void LoadDroughtWeatherPalette(u8 *palsIndex, u8 *palsOffset) @@ -934,7 +996,10 @@ void Weather_SetBlendCoeffs(u8 eva, u8 evb) gWeatherPtr->currBlendEVB = evb; gWeatherPtr->targetBlendEVA = eva; gWeatherPtr->targetBlendEVB = evb; - SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(eva, evb)); + + // don't update BLDALPHA if a hardware fade is on-screen + if ((GetGpuReg(REG_OFFSET_BLDCNT) & BLDCNT_EFFECT_EFF_MASK) < BLDCNT_EFFECT_LIGHTEN) + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(eva, evb)); } void Weather_SetTargetBlendCoeffs(u8 eva, u8 evb, int delay) @@ -1084,11 +1149,29 @@ void SetWeatherPalStateIdle(void) gWeatherPtr->palProcessingState = WEATHER_PAL_STATE_IDLE; } +const u8 *SetPaletteColorMapType(u8 paletteIndex, enum ColorMapType colorMapType) +{ + if (sPaletteColorMapTypes[paletteIndex] == colorMapType) + return sPaletteColorMapTypes; + // setup field effect color map + if (sPaletteColorMapTypes != sFieldEffectPaletteColorMapTypes) + { + CpuCopy16(sBasePaletteColorMapTypes, sFieldEffectPaletteColorMapTypes, 32); + sPaletteColorMapTypes = sFieldEffectPaletteColorMapTypes; + } + sFieldEffectPaletteColorMapTypes[paletteIndex] = colorMapType; + return sPaletteColorMapTypes; +} + void PreservePaletteInWeather(u8 preservedPalIndex) { - CpuCopy16(sBasePaletteColorMapTypes, sFieldEffectPaletteColorMapTypes, 32); - sFieldEffectPaletteColorMapTypes[preservedPalIndex] = COLOR_MAP_NONE; - sPaletteColorMapTypes = sFieldEffectPaletteColorMapTypes; + SetPaletteColorMapType(preservedPalIndex, COLOR_MAP_NONE); +} + +void ResetPaletteColorMapType(u8 paletteIndex) +{ + if (sPaletteColorMapTypes != sBasePaletteColorMapTypes) + sFieldEffectPaletteColorMapTypes[paletteIndex] = sBasePaletteColorMapTypes[paletteIndex]; } void ResetPreservedPalettesInWeather(void) diff --git a/src/field_weather_effect.c b/src/field_weather_effect.c index 234c9c56d3..8b41fca458 100644 --- a/src/field_weather_effect.c +++ b/src/field_weather_effect.c @@ -8,11 +8,13 @@ #include "script.h" #include "constants/weather.h" #include "constants/songs.h" +#include "constants/rgb.h" #include "sound.h" #include "sprite.h" #include "task.h" #include "trig.h" #include "gpu_regs.h" +#include "palette.h" EWRAM_DATA static u8 sCurrentAbnormalWeather = 0; @@ -93,6 +95,7 @@ static const struct SpriteTemplate sCloudSpriteTemplate = void Clouds_InitVars(void) { + gWeatherPtr->noShadows = FALSE; gWeatherPtr->targetColorMapIndex = 0; gWeatherPtr->colorMapStepDelay = 20; gWeatherPtr->weatherGfxLoaded = FALSE; @@ -149,11 +152,14 @@ bool8 Clouds_Finish(void) return FALSE; } +STATIC_ASSERT(OW_SHADOW_INTENSITY >= 0 && OW_SHADOW_INTENSITY <= 16, ObjEventShadowTransparencyNotInRange) + void Sunny_InitVars(void) { gWeatherPtr->targetColorMapIndex = 0; gWeatherPtr->colorMapStepDelay = 20; - Weather_SetBlendCoeffs(8, 12); + Weather_SetBlendCoeffs(8, BASE_SHADOW_INTENSITY); // preserve shadow darkness + gWeatherPtr->noShadows = FALSE; } void Sunny_InitAll(void) @@ -237,6 +243,7 @@ void Drought_InitVars(void) gWeatherPtr->weatherGfxLoaded = FALSE; gWeatherPtr->targetColorMapIndex = 0; gWeatherPtr->colorMapStepDelay = 0; + gWeatherPtr->noShadows = FALSE; } void Drought_InitAll(void) @@ -479,6 +486,8 @@ void Rain_InitVars(void) gWeatherPtr->targetColorMapIndex = 3; gWeatherPtr->colorMapStepDelay = 20; SetRainStrengthFromSoundEffect(SE_RAIN); + Weather_SetBlendCoeffs(8, BASE_SHADOW_INTENSITY); // preserve shadow darkness + gWeatherPtr->noShadows = FALSE; } void Rain_InitAll(void) @@ -772,6 +781,8 @@ void Snow_InitVars(void) gWeatherPtr->colorMapStepDelay = 20; gWeatherPtr->targetSnowflakeSpriteCount = NUM_SNOWFLAKE_SPRITES; gWeatherPtr->snowflakeVisibleCounter = 0; + Weather_SetBlendCoeffs(8, BASE_SHADOW_INTENSITY); // preserve shadow darkness + gWeatherPtr->noShadows = FALSE; } void Snow_InitAll(void) @@ -1019,6 +1030,8 @@ void Thunderstorm_InitVars(void) gWeatherPtr->weatherGfxLoaded = FALSE; // duplicate assignment gWeatherPtr->thunderEnqueued = FALSE; SetRainStrengthFromSoundEffect(SE_THUNDERSTORM); + Weather_SetBlendCoeffs(8, BASE_SHADOW_INTENSITY); // preserve shadow darkness + gWeatherPtr->noShadows = FALSE; } void Thunderstorm_InitAll(void) @@ -1047,6 +1060,8 @@ void Downpour_InitVars(void) gWeatherPtr->colorMapStepDelay = 20; gWeatherPtr->weatherGfxLoaded = FALSE; // duplicate assignment SetRainStrengthFromSoundEffect(SE_DOWNPOUR); + Weather_SetBlendCoeffs(8, BASE_SHADOW_INTENSITY); // preserve shadow darkness + gWeatherPtr->noShadows = FALSE; } void Downpour_InitAll(void) @@ -1339,6 +1354,26 @@ void FogHorizontal_Main(void); static void CreateFogHorizontalSprites(void); static void DestroyFogHorizontalSprites(void); +// Updates just the color of shadows to match special weather blending +u8 UpdateShadowColor(u16 color) +{ + u8 paletteNum = IndexOfSpritePaletteTag(TAG_WEATHER_START); + u16 ALIGNED(4) tempBuffer[16]; + u16 blendedColor; + if (paletteNum < 16) + { + u16 index = OBJ_PLTT_ID(paletteNum) + SHADOW_COLOR_INDEX; + gPlttBufferUnfaded[index] = gPlttBufferFaded[index] = color; + // Copy to temporary buffer, blend, and keep just the shadow color index + CpuFastCopy(&gPlttBufferFaded[index - SHADOW_COLOR_INDEX], tempBuffer, PLTT_SIZE_4BPP); + UpdateSpritePaletteWithTime(paletteNum); + blendedColor = gPlttBufferFaded[index]; + CpuFastCopy(tempBuffer, &gPlttBufferFaded[index - SHADOW_COLOR_INDEX], PLTT_SIZE_4BPP); + gPlttBufferFaded[index] = blendedColor; + } + return paletteNum; +} + void FogHorizontal_InitVars(void) { gWeatherPtr->initStep = 0; @@ -1352,6 +1387,7 @@ void FogHorizontal_InitVars(void) gWeatherPtr->fogHScrollPosX = 0; Weather_SetBlendCoeffs(0, 16); } + gWeatherPtr->noShadows = FALSE; } void FogHorizontal_InitAll(void) @@ -1374,9 +1410,14 @@ void FogHorizontal_Main(void) case 0: CreateFogHorizontalSprites(); if (gWeatherPtr->currWeather == WEATHER_FOG_HORIZONTAL) + { Weather_SetTargetBlendCoeffs(12, 8, 3); + UpdateShadowColor(RGB_GRAY); + } else + { Weather_SetTargetBlendCoeffs(4, 16, 0); + } gWeatherPtr->initStep++; break; case 1: @@ -1413,6 +1454,7 @@ bool8 FogHorizontal_Finish(void) gWeatherPtr->finishStep++; break; default: + UpdateShadowColor(RGB_BLACK); return FALSE; } return TRUE; @@ -1503,9 +1545,9 @@ void Ash_InitVars(void) gWeatherPtr->ashUnused = 20; // Never read if (!gWeatherPtr->ashSpritesCreated) { - Weather_SetBlendCoeffs(0, 16); - SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(64, 63)); // These aren't valid blend coefficients! + Weather_SetBlendCoeffs(0, BASE_SHADOW_INTENSITY); } + gWeatherPtr->noShadows = FALSE; } void Ash_InitAll(void) @@ -1531,7 +1573,7 @@ void Ash_Main(void) if (!gWeatherPtr->ashSpritesCreated) CreateAshSprites(); - Weather_SetTargetBlendCoeffs(16, 0, 1); + Weather_SetTargetBlendCoeffs(10, 12, 1); gWeatherPtr->initStep++; break; case 2: @@ -1552,7 +1594,7 @@ bool8 Ash_Finish(void) switch (gWeatherPtr->finishStep) { case 0: - Weather_SetTargetBlendCoeffs(0, 16, 1); + Weather_SetTargetBlendCoeffs(0, 12, 1); gWeatherPtr->finishStep++; break; case 1: @@ -1722,6 +1764,7 @@ void FogDiagonal_InitVars(void) gWeatherPtr->fogDPosY = 0; Weather_SetBlendCoeffs(0, 16); } + gWeatherPtr->noShadows = TRUE; } void FogDiagonal_InitAll(void) @@ -1935,6 +1978,7 @@ void Sandstorm_InitVars(void) Weather_SetBlendCoeffs(0, 16); } + gWeatherPtr->noShadows = FALSE; } void Sandstorm_InitAll(void) @@ -1959,7 +2003,8 @@ void Sandstorm_Main(void) gWeatherPtr->initStep++; break; case 1: - Weather_SetTargetBlendCoeffs(16, 0, 0); + Weather_SetTargetBlendCoeffs(16, 2, 0); + UpdateShadowColor(RGB_GRAY); gWeatherPtr->initStep++; break; case 2: @@ -1985,9 +2030,12 @@ bool8 Sandstorm_Finish(void) case 1: if (Weather_UpdateBlend()) gWeatherPtr->finishStep++; + if (gWeatherPtr->currBlendEVB == 12) + UpdateShadowColor(RGB_BLACK); break; case 2: DestroySandstormSprites(); + UpdateShadowColor(RGB_BLACK); gWeatherPtr->finishStep++; break; default: @@ -2221,6 +2269,8 @@ void Shade_InitVars(void) gWeatherPtr->initStep = 0; gWeatherPtr->targetColorMapIndex = 3; gWeatherPtr->colorMapStepDelay = 20; + Weather_SetBlendCoeffs(8, BASE_SHADOW_INTENSITY); // preserve shadow darkness + gWeatherPtr->noShadows = FALSE; } void Shade_InitAll(void) @@ -2282,6 +2332,7 @@ void Bubbles_InitVars(void) gWeatherPtr->bubblesCoordsIndex = 0; gWeatherPtr->bubblesSpriteCount = 0; } + gWeatherPtr->noShadows = TRUE; } void Bubbles_InitAll(void) diff --git a/src/fieldmap.c b/src/fieldmap.c index 84e3c564fc..255e1b8904 100644 --- a/src/fieldmap.c +++ b/src/fieldmap.c @@ -877,26 +877,31 @@ static void UNUSED ApplyGlobalTintToPaletteSlot(u8 slot, u8 count) } -static void LoadTilesetPalette(struct Tileset const *tileset, u16 destOffset, u16 size) +static void LoadTilesetPalette(struct Tileset const *tileset, u16 destOffset, u16 size, bool8 skipFaded) { - u16 black = RGB_BLACK; - if (tileset) { if (tileset->isSecondary == FALSE) { - LoadPalette(&black, destOffset, PLTT_SIZEOF(1)); - LoadPalette(tileset->palettes[0] + 1, destOffset + 1, size - PLTT_SIZEOF(1)); - ApplyGlobalTintToPaletteEntries(destOffset + 1, (size - PLTT_SIZEOF(1)) >> 1); + if (skipFaded) + CpuFastCopy(tileset->palettes, &gPlttBufferUnfaded[destOffset], size); // always word-aligned + else + LoadPaletteFast(tileset->palettes, destOffset, size); + gPlttBufferFaded[destOffset] = gPlttBufferUnfaded[destOffset] = RGB_BLACK; + ApplyGlobalTintToPaletteEntries(destOffset + 1, (size - 2) >> 1); } else if (tileset->isSecondary == TRUE) { - LoadPalette(tileset->palettes[NUM_PALS_IN_PRIMARY], destOffset, size); - ApplyGlobalTintToPaletteEntries(destOffset, size >> 1); + // All 'gTilesetPalettes_' arrays should have ALIGNED(4) in them, + // but we use SmartCopy here just in case they don't + if (skipFaded) + CpuCopy16(tileset->palettes[NUM_PALS_IN_PRIMARY], &gPlttBufferUnfaded[destOffset], size); + else + LoadPaletteFast(tileset->palettes[NUM_PALS_IN_PRIMARY], destOffset, size); } else { - LoadCompressedPalette((const u32 *)tileset->palettes, destOffset, size); + LoadPalette((const u16 *)tileset->palettes, destOffset, size); ApplyGlobalTintToPaletteEntries(destOffset, size >> 1); } } @@ -919,12 +924,12 @@ void CopySecondaryTilesetToVramUsingHeap(struct MapLayout const *mapLayout) static void LoadPrimaryTilesetPalette(struct MapLayout const *mapLayout) { - LoadTilesetPalette(mapLayout->primaryTileset, BG_PLTT_ID(0), NUM_PALS_IN_PRIMARY * PLTT_SIZE_4BPP); + LoadTilesetPalette(mapLayout->primaryTileset, 0, NUM_PALS_IN_PRIMARY * PLTT_SIZE_4BPP, FALSE); } -void LoadSecondaryTilesetPalette(struct MapLayout const *mapLayout) +void LoadSecondaryTilesetPalette(struct MapLayout const *mapLayout, bool8 skipFaded) { - LoadTilesetPalette(mapLayout->secondaryTileset, BG_PLTT_ID(NUM_PALS_IN_PRIMARY), (NUM_PALS_TOTAL - NUM_PALS_IN_PRIMARY) * PLTT_SIZE_4BPP); + LoadTilesetPalette(mapLayout->secondaryTileset, NUM_PALS_IN_PRIMARY * 16, (NUM_PALS_TOTAL - NUM_PALS_IN_PRIMARY) * PLTT_SIZE_4BPP, skipFaded); } void CopyMapTilesetsToVram(struct MapLayout const *mapLayout) @@ -941,6 +946,6 @@ void LoadMapTilesetPalettes(struct MapLayout const *mapLayout) if (mapLayout) { LoadPrimaryTilesetPalette(mapLayout); - LoadSecondaryTilesetPalette(mapLayout); + LoadSecondaryTilesetPalette(mapLayout, FALSE); } } diff --git a/src/fldeff_defog.c b/src/fldeff_defog.c new file mode 100644 index 0000000000..bccf0d65f7 --- /dev/null +++ b/src/fldeff_defog.c @@ -0,0 +1,74 @@ +#include "global.h" +#include "event_data.h" +#include "event_scripts.h" +#include "field_effect.h" +#include "field_weather.h" +#include "fldeff.h" +#include "palette.h" +#include "party_menu.h" +#include "script.h" +#include "sound.h" +#include "task.h" +#include "util.h" +#include "constants/battle_anim.h" +#include "constants/field_effects.h" +#include "constants/songs.h" +#include "constants/weather.h" + +static void FieldCallback_Defog(void); +static void FieldMove_Defog(void); +static void EndDefogTask(u8 taskId); + +bool8 SetUpFieldMove_Defog(void) +{ + if (gWeather.currWeather != WEATHER_FOG_HORIZONTAL && gWeather.currWeather != WEATHER_FOG_DIAGONAL) + return FALSE; + + gFieldCallback2 = FieldCallback_PrepareFadeInFromMenu; + gPostMenuFieldCallback = FieldCallback_Defog; + return TRUE; +} + +static void FieldCallback_Defog(void) +{ + gFieldEffectArguments[0] = GetCursorSelectionMonId(); + ScriptContext_SetupScript(EventScript_UseDefog); +} + +bool8 FldEff_Defog(void) +{ + u8 taskId = CreateFieldMoveTask(); + + gTasks[taskId].data[8] = (uintptr_t)FieldMove_Defog>> 16; + gTasks[taskId].data[9] = (uintptr_t)FieldMove_Defog; + return FALSE; +} + +#define tFrameCount data[0] + +static void FieldMove_Defog(void) +{ + PlaySE12WithPanning(SE_M_SOLAR_BEAM, SOUND_PAN_ATTACKER); + SetWeatherScreenFadeOut(); + FieldEffectActiveListRemove(FLDEFF_DEFOG); + SetWeather(WEATHER_NONE); + u32 taskId = CreateTask(EndDefogTask, 0); + gTasks[taskId].tFrameCount = 0; +}; + +static void EndDefogTask(u8 taskId) +{ + if (gPaletteFade.active) + return; + + gTasks[taskId].tFrameCount++; + + if (gTasks[taskId].tFrameCount != 120) + return; + + gWeatherPtr->currWeather = WEATHER_NONE; + DestroyTask(taskId); + ScriptContext_Enable(); +} + +#undef tFrameCount diff --git a/src/fldeff_teleport.c b/src/fldeff_teleport.c index c17dc9360b..83028c3949 100644 --- a/src/fldeff_teleport.c +++ b/src/fldeff_teleport.c @@ -2,6 +2,7 @@ #include "field_effect.h" #include "field_player_avatar.h" #include "fldeff.h" +#include "follower_npc.h" #include "party_menu.h" #include "overworld.h" #include "task.h" @@ -12,6 +13,9 @@ static void StartTeleportFieldEffect(void); bool8 SetUpFieldMove_Teleport(void) { + if (!CheckFollowerNPCFlag(FOLLOWER_NPC_FLAG_CAN_LEAVE_ROUTE)) + return FALSE; + if (Overworld_MapTypeAllowsTeleportAndFly(gMapHeader.mapType) == TRUE) { gFieldCallback2 = FieldCallback_PrepareFadeInForTeleport; diff --git a/src/follower_helper.c b/src/follower_helper.c index 74bd637608..e85289d1f7 100644 --- a/src/follower_helper.c +++ b/src/follower_helper.c @@ -2,6 +2,8 @@ #include "data.h" #include "event_scripts.h" #include "follower_helper.h" +#include "overworld.h" +#include "rtc.h" #include "constants/battle.h" #include "constants/followers.h" #include "constants/metatile_behaviors.h" @@ -66,6 +68,12 @@ 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!"); +static const u8 sCondMsg43[] = _("{STR_VAR_1} is happy to see what's\noutdoors!"); +static const u8 sCondMsg44[] = _("{STR_VAR_1} is looking up at the\nsky."); +static const u8* const sDayTexts[] = {sCondMsg43, sCondMsg44, NULL}; +static const u8 sCondMsg45[] = _("Your POKéMON is staring spellbound\nat the night sky!"); +static const u8 sCondMsg46[] = _("Your POKéMON is happily gazing at\nthe beautiful, starry sky!"); +static const u8* const sNightTexts[] = {sCondMsg45, sCondMsg46, NULL}; // See the struct definition in follower_helper.h for more info const struct FollowerMsgInfoExtended gFollowerConditionalMessages[COND_MSG_COUNT] = @@ -350,6 +358,26 @@ const struct FollowerMsgInfoExtended gFollowerConditionalMessages[COND_MSG_COUNT MATCH_STATUS(STATUS1_BURN), }, }, + [COND_MSG_DAY] = + { + .text = (u8*)sDayTexts, + .textSpread = 1, + .emotion = FOLLOWER_EMOTION_MUSIC, + .conditions = + { + MATCH_TIME_OF_DAY(TIME_DAY), + }, + }, + [COND_MSG_NIGHT] = + { + .text = (u8*)sNightTexts, + .textSpread = 1, + .emotion = FOLLOWER_EMOTION_MUSIC, + .conditions = + { + MATCH_TIME_OF_DAY(TIME_NIGHT), + }, + }, }; // Pool of "unconditional" follower messages diff --git a/src/follower_npc.c b/src/follower_npc.c new file mode 100644 index 0000000000..40b08cb365 --- /dev/null +++ b/src/follower_npc.c @@ -0,0 +1,1723 @@ +#include "global.h" +#include "follower_npc.h" +#include "follower_npc_alternate_sprites.h" +#include "battle.h" +#include "battle_setup.h" +#include "battle_tower.h" +#include "event_data.h" +#include "event_object_movement.h" +#include "event_scripts.h" +#include "field_door.h" +#include "field_effect.h" +#include "field_effect_helpers.h" +#include "field_player_avatar.h" +#include "field_control_avatar.h" +#include "field_screen_effect.h" +#include "field_weather.h" +#include "fieldmap.h" +#include "fldeff_misc.h" +#include "frontier_util.h" +#include "item.h" +#include "load_save.h" +#include "metatile_behavior.h" +#include "overworld.h" +#include "party_menu.h" +#include "script.h" +#include "script_movement.h" +#include "script_pokemon_util.h" +#include "sound.h" +#include "task.h" +#include "trig.h" +#include "constants/event_object_movement.h" +#include "constants/field_effects.h" +#include "constants/frontier_util.h" +#include "constants/map_types.h" +#include "constants/metatile_behaviors.h" +#include "constants/songs.h" + +/* + * Known Issues: + * -follower gets messed up if you go into a map with a maximum number of event objects + * -inherits incorrect palette, may get directionally confused + */ + +// Task data +#define tState data[0] +#define tDoorX data[2] +#define tDoorY data[3] + +static void SetFollowerNPCScriptPointer(const u8 *script); +static void PlayerLogCoordinates(struct ObjectEvent *player); +static void TurnNPCIntoFollower(u32 localId, u32 followerFlags, u32 setScript, const u8 *script); +static u32 GetFollowerNPCSprite(void); +static bool32 IsStateMovement(u32 state); +static u32 GetPlayerFaceToDoorDirection(struct ObjectEvent *player, struct ObjectEvent *follower); +static u32 ReturnFollowerNPCDelayedState(u32 direction); +static void TryUpdateFollowerNPCSpriteUnderwater(void); +static void SetSurfJump(void); +static void SetUpSurfBlobFieldEffect(struct ObjectEvent *npc); +static void SetSurfDismount(void); +static void Task_BindSurfBlobToFollowerNPC(u8 taskId); +static void Task_FinishSurfDismount(u8 taskId); +static void Task_ReallowPlayerMovement(u8 taskId); +static void Task_FollowerNPCOutOfDoor(u8 taskId); +static void Task_FollowerNPCHandleEscalator(u8 taskId); +static void Task_FollowerNPCHandleEscalatorFinish(u8 taskId); +static void CalculateFollowerNPCEscalatorTrajectoryUp(struct Task *task); +static void CalculateFollowerNPCEscalatorTrajectoryDown(struct Task *task); + +void SetFollowerNPCData(enum FollowerNPCDataTypes type, u32 value) +{ +#if FNPC_ENABLE_NPC_FOLLOWERS + switch (type) + { + case FNPC_DATA_IN_PROGRESS: + gSaveBlock3Ptr->NPCfollower.inProgress = value; + break; + case FNPC_DATA_WARP_END: + gSaveBlock3Ptr->NPCfollower.warpEnd = value; + break; + case FNPC_DATA_SURF_BLOB: + gSaveBlock3Ptr->NPCfollower.createSurfBlob = value; + break; + case FNPC_DATA_COME_OUT_DOOR: + gSaveBlock3Ptr->NPCfollower.comeOutDoorStairs = value; + break; + case FNPC_DATA_OBJ_ID: + gSaveBlock3Ptr->NPCfollower.objId = value; + break; + case FNPC_DATA_CURRENT_SPRITE: + gSaveBlock3Ptr->NPCfollower.currentSprite = value; + break; + case FNPC_DATA_DELAYED_STATE: + gSaveBlock3Ptr->NPCfollower.delayedState = value; + break; + case FNPC_DATA_MAP_ID: + gSaveBlock3Ptr->NPCfollower.map.id = value; + break; + case FNPC_DATA_MAP_NUM: + gSaveBlock3Ptr->NPCfollower.map.number = value; + break; + case FNPC_DATA_MAP_GROUP: + gSaveBlock3Ptr->NPCfollower.map.group = value; + break; + case FNPC_DATA_EVENT_FLAG: + gSaveBlock3Ptr->NPCfollower.flag = value; + break; + case FNPC_DATA_GFX_ID: + gSaveBlock3Ptr->NPCfollower.graphicsId = value; + break; + case FNPC_DATA_FOLLOWER_FLAGS: + gSaveBlock3Ptr->NPCfollower.flags = value; + break; + case FNPC_DATA_BATTLE_PARTNER: + gSaveBlock3Ptr->NPCfollower.battlePartner = value; + break; + } +#endif +} + +static void SetFollowerNPCScriptPointer(const u8 *script) +{ +#if FNPC_ENABLE_NPC_FOLLOWERS + gSaveBlock3Ptr->NPCfollower.script = script; +#endif +} + +static void PlayerLogCoordinates(struct ObjectEvent *player) +{ +#if FNPC_ENABLE_NPC_FOLLOWERS + gSaveBlock3Ptr->NPCfollower.log.x = player->currentCoords.x; + gSaveBlock3Ptr->NPCfollower.log.y = player->currentCoords.y; +#endif +} + +const u8 *GetFollowerNPCScriptPointer(void) +{ +#if FNPC_ENABLE_NPC_FOLLOWERS + if (PlayerHasFollowerNPC()) + return gSaveBlock3Ptr->NPCfollower.script; + +#endif + return NULL; +} + +u32 GetFollowerNPCData(enum FollowerNPCDataTypes type) +{ +#if FNPC_ENABLE_NPC_FOLLOWERS + switch (type) + { + case FNPC_DATA_IN_PROGRESS: + return gSaveBlock3Ptr->NPCfollower.inProgress; + case FNPC_DATA_WARP_END: + return gSaveBlock3Ptr->NPCfollower.warpEnd; + case FNPC_DATA_SURF_BLOB: + return gSaveBlock3Ptr->NPCfollower.createSurfBlob; + case FNPC_DATA_COME_OUT_DOOR: + return gSaveBlock3Ptr->NPCfollower.comeOutDoorStairs; + case FNPC_DATA_OBJ_ID: + return gSaveBlock3Ptr->NPCfollower.objId; + case FNPC_DATA_CURRENT_SPRITE: + return gSaveBlock3Ptr->NPCfollower.currentSprite; + case FNPC_DATA_DELAYED_STATE: + return gSaveBlock3Ptr->NPCfollower.delayedState; + case FNPC_DATA_MAP_ID: + return gSaveBlock3Ptr->NPCfollower.map.id; + case FNPC_DATA_MAP_NUM: + return gSaveBlock3Ptr->NPCfollower.map.number; + case FNPC_DATA_MAP_GROUP: + return gSaveBlock3Ptr->NPCfollower.map.group; + case FNPC_DATA_EVENT_FLAG: + return gSaveBlock3Ptr->NPCfollower.flag; + case FNPC_DATA_GFX_ID: + return gSaveBlock3Ptr->NPCfollower.graphicsId; + case FNPC_DATA_FOLLOWER_FLAGS: + return gSaveBlock3Ptr->NPCfollower.flags; + case FNPC_DATA_BATTLE_PARTNER: + return gSaveBlock3Ptr->NPCfollower.battlePartner; + } +#endif + return 0; +} + +void ClearFollowerNPCData(void) +{ +#if FNPC_ENABLE_NPC_FOLLOWERS + memset(&gSaveBlock3Ptr->NPCfollower, 0, sizeof(gSaveBlock3Ptr->NPCfollower)); +#endif +} + +static void TurnNPCIntoFollower(u32 localId, u32 followerFlags, u32 setScript, const u8 *ptr) +{ + struct ObjectEventTemplate npc; + struct ObjectEvent *follower; + u32 npcX, npcY; + u32 faceDirection; + u32 eventObjId; + const u8 *script; + u32 flag; + + // Only allow 1 follower NPC at a time. + if (PlayerHasFollowerNPC()) + return; + + for (eventObjId = 0; eventObjId < OBJECT_EVENTS_COUNT; eventObjId++) + { + if (!gObjectEvents[eventObjId].active || gObjectEvents[eventObjId].isPlayer) + continue; + + if (gObjectEvents[eventObjId].localId == localId) + { + flag = GetObjectEventFlagIdByLocalIdAndMap(localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup); + // If the object does not have an event flag, don't create follower. + if (flag == 0) + return; + + if (setScript == TRUE) + // Set the custom script. + script = ptr; + else + // Use the object's original script. + script = GetObjectEventScriptPointerByObjectEventId(eventObjId); + + npcX = gObjectEvents[eventObjId].currentCoords.x; + npcY = gObjectEvents[eventObjId].currentCoords.y; + faceDirection = gObjectEvents[eventObjId].facingDirection; + SetFollowerNPCData(FNPC_DATA_MAP_ID, gObjectEvents[eventObjId].localId); + RemoveObjectEvent(&gObjectEvents[eventObjId]); + FlagSet(flag); + + npc = *GetObjectEventTemplateByLocalIdAndMap(GetFollowerNPCData(FNPC_DATA_MAP_ID), gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup); + npc.movementType = 0; + npc.script = script; + npc.localId = OBJ_EVENT_ID_NPC_FOLLOWER; + SetFollowerNPCData(FNPC_DATA_OBJ_ID, TrySpawnObjectEventTemplate(&npc, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, npcX, npcY)); + follower = &gObjectEvents[GetFollowerNPCData(FNPC_DATA_OBJ_ID)]; + MoveObjectEventToMapCoords(follower, npcX, npcY); + ObjectEventTurn(follower, faceDirection); + follower->movementType = MOVEMENT_TYPE_NONE; + gSprites[follower->spriteId].callback = MovementType_None; + + SetFollowerNPCData(FNPC_DATA_IN_PROGRESS, TRUE); + SetFollowerNPCData(FNPC_DATA_GFX_ID, follower->graphicsId); + SetFollowerNPCData(FNPC_DATA_MAP_NUM, gSaveBlock1Ptr->location.mapNum); + SetFollowerNPCData(FNPC_DATA_MAP_GROUP, gSaveBlock1Ptr->location.mapGroup); + SetFollowerNPCScriptPointer(script); + SetFollowerNPCData(FNPC_DATA_EVENT_FLAG, flag); + SetFollowerNPCData(FNPC_DATA_FOLLOWER_FLAGS, followerFlags); + SetFollowerNPCData(FNPC_DATA_SURF_BLOB, FNPC_SURF_BLOB_NONE); + SetFollowerNPCData(FNPC_DATA_COME_OUT_DOOR, FNPC_DOOR_NONE); + + // If the player is biking and the follower flags prohibit biking, force the player to dismount the bike. + if (!CheckFollowerNPCFlag(FOLLOWER_NPC_FLAG_CAN_BIKE) + && TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_BIKE)) + SetPlayerAvatarTransitionFlags(PLAYER_AVATAR_FLAG_ON_FOOT); + + // Set the follower sprite to match the player state. + if (!TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_ON_FOOT)) + FollowerNPC_HandleSprite(); + } + } +} + +static u32 GetFollowerNPCSprite(void) +{ + u32 i; + + switch (GetFollowerNPCData(FNPC_DATA_CURRENT_SPRITE)) + { + case FOLLOWER_NPC_SPRITE_INDEX_MACH_BIKE: + for (i = 0; i < NELEMS(gFollowerNPCAlternateSprites); i++) + if (gFollowerNPCAlternateSprites[i].normalId == GetFollowerNPCData(FNPC_DATA_GFX_ID)) + return gFollowerNPCAlternateSprites[i].machBikeId; + break; + case FOLLOWER_NPC_SPRITE_INDEX_ACRO_BIKE: + for (i = 0; i < NELEMS(gFollowerNPCAlternateSprites); i++) + if (gFollowerNPCAlternateSprites[i].normalId == GetFollowerNPCData(FNPC_DATA_GFX_ID)) + return gFollowerNPCAlternateSprites[i].acroBikeId; + break; + case FOLLOWER_NPC_SPRITE_INDEX_SURF: + for (i = 0; i < NELEMS(gFollowerNPCAlternateSprites); i++) + if (gFollowerNPCAlternateSprites[i].normalId == GetFollowerNPCData(FNPC_DATA_GFX_ID)) + return gFollowerNPCAlternateSprites[i].surfId; + break; + case FOLLOWER_NPC_SPRITE_INDEX_UNDERWATER: + for (i = 0; i < NELEMS(gFollowerNPCAlternateSprites); i++) + if (gFollowerNPCAlternateSprites[i].normalId == GetFollowerNPCData(FNPC_DATA_GFX_ID)) + return gFollowerNPCAlternateSprites[i].underwaterId; + break; + } + + return GetFollowerNPCData(FNPC_DATA_GFX_ID); +} + +static bool32 IsStateMovement(u32 state) +{ + switch (state) + { + case MOVEMENT_ACTION_FACE_DOWN: + case MOVEMENT_ACTION_FACE_UP: + case MOVEMENT_ACTION_FACE_LEFT: + case MOVEMENT_ACTION_FACE_RIGHT: + case MOVEMENT_ACTION_DELAY_1: + case MOVEMENT_ACTION_DELAY_2: + case MOVEMENT_ACTION_DELAY_4: + case MOVEMENT_ACTION_DELAY_8: + case MOVEMENT_ACTION_DELAY_16: + case MOVEMENT_ACTION_FACE_PLAYER: + case MOVEMENT_ACTION_FACE_AWAY_PLAYER: + case MOVEMENT_ACTION_LOCK_FACING_DIRECTION: + case MOVEMENT_ACTION_UNLOCK_FACING_DIRECTION: + case MOVEMENT_ACTION_SET_INVISIBLE: + case MOVEMENT_ACTION_SET_VISIBLE: + case MOVEMENT_ACTION_EMOTE_EXCLAMATION_MARK: + case MOVEMENT_ACTION_EMOTE_QUESTION_MARK: + case MOVEMENT_ACTION_EMOTE_HEART: + case MOVEMENT_ACTION_WALK_IN_PLACE_SLOW_DOWN: + case MOVEMENT_ACTION_WALK_IN_PLACE_SLOW_UP: + case MOVEMENT_ACTION_WALK_IN_PLACE_SLOW_LEFT: + case MOVEMENT_ACTION_WALK_IN_PLACE_SLOW_RIGHT: + case MOVEMENT_ACTION_WALK_IN_PLACE_NORMAL_DOWN: + case MOVEMENT_ACTION_WALK_IN_PLACE_NORMAL_UP: + case MOVEMENT_ACTION_WALK_IN_PLACE_NORMAL_LEFT: + case MOVEMENT_ACTION_WALK_IN_PLACE_NORMAL_RIGHT: + case MOVEMENT_ACTION_WALK_IN_PLACE_FAST_DOWN: + case MOVEMENT_ACTION_WALK_IN_PLACE_FAST_UP: + case MOVEMENT_ACTION_WALK_IN_PLACE_FAST_LEFT: + case MOVEMENT_ACTION_WALK_IN_PLACE_FAST_RIGHT: + case MOVEMENT_ACTION_WALK_IN_PLACE_FASTER_DOWN: + case MOVEMENT_ACTION_WALK_IN_PLACE_FASTER_UP: + case MOVEMENT_ACTION_WALK_IN_PLACE_FASTER_LEFT: + case MOVEMENT_ACTION_WALK_IN_PLACE_FASTER_RIGHT: + case MOVEMENT_ACTION_JUMP_IN_PLACE_DOWN: + case MOVEMENT_ACTION_JUMP_IN_PLACE_UP: + case MOVEMENT_ACTION_JUMP_IN_PLACE_LEFT: + case MOVEMENT_ACTION_JUMP_IN_PLACE_RIGHT: + case MOVEMENT_ACTION_JUMP_IN_PLACE_DOWN_UP: + case MOVEMENT_ACTION_JUMP_IN_PLACE_UP_DOWN: + case MOVEMENT_ACTION_JUMP_IN_PLACE_LEFT_RIGHT: + case MOVEMENT_ACTION_JUMP_IN_PLACE_RIGHT_LEFT: + case MOVEMENT_ACTION_ACRO_WHEELIE_FACE_DOWN: + case MOVEMENT_ACTION_ACRO_WHEELIE_FACE_UP: + case MOVEMENT_ACTION_ACRO_WHEELIE_FACE_RIGHT: + case MOVEMENT_ACTION_ACRO_WHEELIE_FACE_LEFT: + case MOVEMENT_ACTION_ACRO_POP_WHEELIE_DOWN: + case MOVEMENT_ACTION_ACRO_POP_WHEELIE_UP: + case MOVEMENT_ACTION_ACRO_POP_WHEELIE_RIGHT: + case MOVEMENT_ACTION_ACRO_POP_WHEELIE_LEFT: + case MOVEMENT_ACTION_ACRO_END_WHEELIE_FACE_DOWN: + case MOVEMENT_ACTION_ACRO_END_WHEELIE_FACE_UP: + case MOVEMENT_ACTION_ACRO_END_WHEELIE_FACE_RIGHT: + case MOVEMENT_ACTION_ACRO_END_WHEELIE_FACE_LEFT: + case MOVEMENT_ACTION_ACRO_WHEELIE_HOP_FACE_DOWN: + case MOVEMENT_ACTION_ACRO_WHEELIE_HOP_FACE_UP: + case MOVEMENT_ACTION_ACRO_WHEELIE_HOP_FACE_RIGHT: + case MOVEMENT_ACTION_ACRO_WHEELIE_HOP_FACE_LEFT: + case MOVEMENT_ACTION_ACRO_WHEELIE_IN_PLACE_DOWN: + case MOVEMENT_ACTION_ACRO_WHEELIE_IN_PLACE_UP: + case MOVEMENT_ACTION_ACRO_WHEELIE_IN_PLACE_RIGHT: + case MOVEMENT_ACTION_ACRO_WHEELIE_IN_PLACE_LEFT: + return FALSE; + } + + return TRUE; +} + +static u32 GetPlayerFaceToDoorDirection(struct ObjectEvent *player, struct ObjectEvent *follower) +{ + s32 delta_x = player->currentCoords.x - follower->currentCoords.x; + + if (delta_x < 0) + return DIR_EAST; + else if (delta_x > 0) + return DIR_WEST; + + return DIR_NORTH; +} + +static u32 ReturnFollowerNPCDelayedState(u32 direction) +{ + u32 newState = GetFollowerNPCData(FNPC_DATA_DELAYED_STATE); + SetFollowerNPCData(FNPC_DATA_DELAYED_STATE, 0); + + return newState + direction; +} + +static void TryUpdateFollowerNPCSpriteUnderwater(void) +{ + if (gMapHeader.mapType == MAP_TYPE_UNDERWATER) + { + struct ObjectEvent *follower = &gObjectEvents[GetFollowerNPCObjectId()]; + SetFollowerNPCSprite(FOLLOWER_NPC_SPRITE_INDEX_UNDERWATER); + + follower = &gObjectEvents[GetFollowerNPCObjectId()]; + follower->fieldEffectSpriteId = StartUnderwaterSurfBlobBobbing(follower->spriteId); + } +} + +static void SetSurfJump(void) +{ + struct ObjectEvent *follower = &gObjectEvents[GetFollowerNPCObjectId()]; + u32 direction; + u32 jumpState; + + ObjectEventClearHeldMovement(follower); + + // Jump animation according to direction. + direction = DetermineFollowerNPCDirection(&gObjectEvents[gPlayerAvatar.objectEventId], follower); + jumpState = GetJumpMovementAction(direction); + SetUpSurfBlobFieldEffect(follower); + + // Adjust surf head spawn location infront of follower. + switch (direction) + { + case DIR_SOUTH: + gFieldEffectArguments[1]++; // effect_y + break; + case DIR_NORTH: + gFieldEffectArguments[1]--; + break; + case DIR_WEST: + gFieldEffectArguments[0]--; // effect_x + break; + default: // DIR_EAST + gFieldEffectArguments[0]++; + }; + + // Execute, store sprite ID in fieldEffectSpriteId and bind surf blob. + follower->fieldEffectSpriteId = FieldEffectStart(FLDEFF_SURF_BLOB); + CreateTask(Task_BindSurfBlobToFollowerNPC, 0x1); + SetFollowerNPCSprite(FOLLOWER_NPC_SPRITE_INDEX_SURF); + + follower = &gObjectEvents[GetFollowerNPCObjectId()]; + ObjectEventSetHeldMovement(follower, jumpState); +} + +static void SetUpSurfBlobFieldEffect(struct ObjectEvent *npc) +{ + // Set up gFieldEffectArguments for execution. + gFieldEffectArguments[0] = npc->currentCoords.x; // effect_x + gFieldEffectArguments[1] = npc->currentCoords.y; // effect_y + gFieldEffectArguments[2] = GetFollowerNPCData(FNPC_DATA_OBJ_ID); // objId +} + +#define tSpriteId data[0] + +static void SetSurfDismount(void) +{ + struct ObjectEvent *follower = &gObjectEvents[GetFollowerNPCObjectId()]; + u32 direction; + u32 jumpState; + u32 task; + + ObjectEventClearHeldMovement(follower); + + // Jump animation according to direction + direction = DetermineFollowerNPCDirection(&gObjectEvents[gPlayerAvatar.objectEventId], follower); + jumpState = GetJumpMovementAction(direction); + + // Unbind and destroy Surf Blob + task = CreateTask(Task_FinishSurfDismount, 1); + gTasks[task].tSpriteId = follower->fieldEffectSpriteId; + SetSurfBlob_BobState(follower->fieldEffectSpriteId, 2); + follower->fieldEffectSpriteId = 0; + FollowerNPC_HandleSprite(); + + follower = &gObjectEvents[GetFollowerNPCObjectId()]; + ObjectEventSetHeldMovement(follower, jumpState); +} + +static void Task_BindSurfBlobToFollowerNPC(u8 taskId) +{ + struct ObjectEvent *npc = &gObjectEvents[GetFollowerNPCObjectId()]; + // Wait for the jump animation. + bool32 animStatus = ObjectEventClearHeldMovementIfFinished(npc); + if (animStatus == 0) + return; + + // Bind the blob to the follower. + SetSurfBlob_BobState(npc->fieldEffectSpriteId, 0x1); + UnfreezeObjectEvents(); + DestroyTask(taskId); + gPlayerAvatar.preventStep = FALSE; + return; +} + +static void Task_FinishSurfDismount(u8 taskId) +{ + struct ObjectEvent *npc = &gObjectEvents[GetFollowerNPCObjectId()]; + // Wait for the animation to finish. + bool32 animStatus = ObjectEventClearHeldMovementIfFinished(npc); + + if (animStatus == 0) + { + // Temporarily stop running. + if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_DASH) && ObjectEventClearHeldMovementIfFinished(&gObjectEvents[gPlayerAvatar.objectEventId])) + SetPlayerAvatarTransitionFlags(PLAYER_AVATAR_FLAG_ON_FOOT); + + return; + } + + SetFollowerNPCSprite(FOLLOWER_NPC_SPRITE_INDEX_NORMAL); + DestroySprite(&gSprites[gTasks[taskId].tSpriteId]); + UnfreezeObjectEvents(); + DestroyTask(taskId); + gPlayerAvatar.preventStep = FALSE; +} + +#undef tSpriteId + +static void Task_ReallowPlayerMovement(u8 taskId) +{ + bool32 animStatus = ObjectEventClearHeldMovementIfFinished(&gObjectEvents[GetFollowerNPCObjectId()]); + if (animStatus == 0) + { + // Temporarily stop running. + if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_DASH) + && ObjectEventClearHeldMovementIfFinished(&gObjectEvents[gPlayerAvatar.objectEventId])) + SetPlayerAvatarTransitionFlags(PLAYER_AVATAR_FLAG_ON_FOOT); + + return; + } + + gPlayerAvatar.preventStep = FALSE; + DestroyTask(taskId); +} + +// Task data. +#define tDoorTask data[1] + +static void Task_FollowerNPCOutOfDoor(u8 taskId) +{ + struct ObjectEvent *follower = &gObjectEvents[GetFollowerNPCObjectId()]; + struct ObjectEvent *player = &gObjectEvents[gPlayerAvatar.objectEventId]; + struct Task *task = &gTasks[taskId]; + s16 *x = &task->tDoorX; + s16 *y = &task->tDoorY; + + // The player faces follower as they exit the door. + if (FNPC_FACE_NPC_FOLLOWER_ON_DOOR_EXIT == TRUE && ObjectEventClearHeldMovementIfFinished(player)) + ObjectEventTurn(player, GetPlayerFaceToDoorDirection(player, follower)); + + switch (task->tState) + { + case OPEN_DOOR: + FreezeObjectEvents(); + task->tDoorTask = FieldAnimateDoorOpen(follower->currentCoords.x, follower->currentCoords.y); + // Only play SE for animated doors. + if (task->tDoorTask != -1) + PlaySE(GetDoorSoundEffect(*x, *y)); + task->tState = NPC_WALK_OUT; + break; + case NPC_WALK_OUT: + // If the door isn't still opening. + if (task->tDoorTask < 0 || gTasks[task->tDoorTask].isActive != TRUE) + { + follower->invisible = FALSE; + // If the follower should be surfing. + if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING)) + { + SetUpSurfBlobFieldEffect(follower); + follower->fieldEffectSpriteId = FieldEffectStart(FLDEFF_SURF_BLOB); + SetSurfBlob_BobState(follower->fieldEffectSpriteId, 1); + } + ObjectEventTurn(follower, DIR_SOUTH); + follower->singleMovementActive = FALSE; + follower->heldMovementActive = FALSE; + ObjectEventSetHeldMovement(follower, MOVEMENT_ACTION_WALK_NORMAL_DOWN); + task->tState = CLOSE_DOOR; + } + break; + case CLOSE_DOOR: + if (ObjectEventClearHeldMovementIfFinished(follower)) + { + task->tDoorTask = FieldAnimateDoorClose(*x, *y); + task->tState = UNFREEZE_OBJECTS; + } + break; + case UNFREEZE_OBJECTS: + // Wait for door to close. + if (task->tDoorTask < 0 || gTasks[task->tDoorTask].isActive != TRUE) + { + UnfreezeObjectEvents(); + task->tState = REALLOW_MOVEMENT; + } + break; + case REALLOW_MOVEMENT: + FollowerNPC_HandleSprite(); + SetFollowerNPCData(FNPC_DATA_COME_OUT_DOOR, FNPC_DOOR_NONE); + gPlayerAvatar.preventStep = FALSE; + DestroyTask(taskId); + break; + } +} + +#undef tDoorTask + +static void Task_FollowerNPCHandleEscalator(u8 taskId) +{ + struct ObjectEvent *follower = &gObjectEvents[GetFollowerNPCObjectId()]; + struct ObjectEvent *player = &gObjectEvents[gPlayerAvatar.objectEventId]; + + ObjectEventClearHeldMovementIfActive(follower); + ObjectEventSetHeldMovement(follower, DetermineFollowerNPCState(follower, MOVEMENT_ACTION_WALK_NORMAL_DOWN, DetermineFollowerNPCDirection(player, follower))); + DestroyTask(taskId); +} + +#define tCounter data[1] +#define tMetatileBehavior data[2] +#define tTimer data[7] + +static void Task_FollowerNPCHandleEscalatorFinish(u8 taskId) +{ + s16 x, y; + struct ObjectEvent *follower = &gObjectEvents[GetFollowerNPCObjectId()]; + struct ObjectEvent *player = &gObjectEvents[gPlayerAvatar.objectEventId]; + struct Sprite *sprite = &gSprites[follower->spriteId]; + struct Task *task = &gTasks[taskId]; + + switch (task->tState) + { + case MOVE_TO_PLAYER_POS: + MoveObjectEventToMapCoords(follower, player->currentCoords.x, player->currentCoords.y); + PlayerGetDestCoords(&x, &y); + task->tMetatileBehavior = MapGridGetMetatileBehaviorAt(x, y); + task->tTimer = 0; + task->tState = WAIT_FOR_PLAYER_MOVE; + break; + case WAIT_FOR_PLAYER_MOVE: + // Wait half a second before revealing the follower. + if (task->tTimer++ < 32) + break; + + task->tState = SHOW_FOLLOWER_DOWN; + task->tCounter = 16; + SetFollowerNPCData(FNPC_DATA_WARP_END, FNPC_WARP_NONE); + gPlayerAvatar.preventStep = TRUE; + ObjectEventClearHeldMovementIfActive(follower); + ObjectEventSetHeldMovement(follower, GetFaceDirectionMovementAction(DIR_EAST)); + if (task->tMetatileBehavior == 0x6b) + task->tState = SHOW_FOLLOWER_UP; + + break; + case SHOW_FOLLOWER_DOWN: + follower->invisible = FALSE; + CalculateFollowerNPCEscalatorTrajectoryDown(task); + task->tState = MOVE_FOLLOWER_DOWN; + break; + case MOVE_FOLLOWER_DOWN: + CalculateFollowerNPCEscalatorTrajectoryDown(task); + task->tMetatileBehavior++; + if (task->tMetatileBehavior & 1) + task->tCounter--; + + if (task->tCounter == 0) + { + sprite->x2 = 0; + sprite->y2 = 0; + task->tState = MOVEMENT_FINISH; + } + break; + case SHOW_FOLLOWER_UP: + follower->invisible = FALSE; + CalculateFollowerNPCEscalatorTrajectoryUp(task); + task->tState = MOVE_FOLLOWER_UP; + break; + case MOVE_FOLLOWER_UP: + CalculateFollowerNPCEscalatorTrajectoryUp(task); + task->tMetatileBehavior++; + if (task->tMetatileBehavior & 1) + task->tCounter--; + + if (task->tCounter == 0) + { + sprite->x2 = 0; + sprite->y2 = 0; + task->tState = MOVEMENT_FINISH; + } + break; + case MOVEMENT_FINISH: + if (ObjectEventClearHeldMovementIfFinished(follower)) + { + gPlayerAvatar.preventStep = FALSE; + DestroyTask(taskId); + } + } +} + +#undef tMetatileBehavior +#undef tTimer + +static void CalculateFollowerNPCEscalatorTrajectoryUp(struct Task *task) +{ + struct Sprite *sprite = &gSprites[gObjectEvents[GetFollowerNPCObjectId()].spriteId]; + + sprite->x2 = Cos(0x7c, task->tCounter); + sprite->y2 = Sin(0x76, task->tCounter); +} + +static void CalculateFollowerNPCEscalatorTrajectoryDown(struct Task *task) +{ + struct Sprite *sprite = &gSprites[gObjectEvents[GetFollowerNPCObjectId()].spriteId]; + + sprite->x2 = Cos(0x84, task->tCounter); + sprite->y2 = Sin(0x94, task->tCounter); +} + +#undef tCounter + +#define RETURN_STATE(state, dir) return newState == MOVEMENT_INVALID ? state + (dir - 1) : ReturnFollowerNPCDelayedState(dir - 1); +u32 DetermineFollowerNPCState(struct ObjectEvent *follower, u32 state, u32 direction) +{ + u32 newState = MOVEMENT_INVALID; + u32 collision = COLLISION_NONE; + s16 followerX = follower->currentCoords.x; + s16 followerY = follower->currentCoords.y; + u32 currentBehavior = MapGridGetMetatileBehaviorAt(followerX, followerY); + u32 nextBehavior; + u32 noSpecialAnimFrames = (GetFollowerNPCSprite() == GetFollowerNPCData(FNPC_DATA_GFX_ID)); + u32 delayedState = GetFollowerNPCData(FNPC_DATA_DELAYED_STATE); + + MoveCoords(direction, &followerX, &followerY); + nextBehavior = MapGridGetMetatileBehaviorAt(followerX, followerY); + + if (FindTaskIdByFunc(Task_MoveNPCFollowerAfterForcedMovement) == TASK_NONE) + follower->facingDirectionLocked = FALSE; + + // Follower won't do delayed movement until player does a movement. + if (!IsStateMovement(state) && delayedState) + return MOVEMENT_ACTION_NONE; + + if (IsStateMovement(state) && delayedState) + { + // Lock face direction for Acro side jump. + if (delayedState == MOVEMENT_ACTION_JUMP_DOWN && TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_ACRO_BIKE)) + follower->facingDirectionLocked = TRUE; + + newState = delayedState + (direction -1); + } + + // Clear ice tile stuff. + follower->disableAnim = FALSE; + + // Clear overwrite movement. + follower->directionOverwrite = DIR_NONE; + + // Sideways stairs checks. + collision = GetSidewaysStairsCollision(follower, direction, currentBehavior, nextBehavior, collision); + switch (collision) + { + case COLLISION_SIDEWAYS_STAIRS_TO_LEFT: + follower->directionOverwrite = GetLeftSideStairsDirection(direction); + break; + case COLLISION_SIDEWAYS_STAIRS_TO_RIGHT: + follower->directionOverwrite = GetRightSideStairsDirection(direction); + break; + } + + switch (state) + { + case MOVEMENT_ACTION_WALK_SLOW_DOWN ... MOVEMENT_ACTION_WALK_SLOW_RIGHT: + // Slow walk. + RETURN_STATE(MOVEMENT_ACTION_WALK_SLOW_DOWN, direction); + + case MOVEMENT_ACTION_WALK_NORMAL_DOWN ... MOVEMENT_ACTION_WALK_NORMAL_RIGHT: + // Normal walk. + RETURN_STATE(MOVEMENT_ACTION_WALK_NORMAL_DOWN, direction); + + case MOVEMENT_ACTION_JUMP_2_DOWN ... MOVEMENT_ACTION_JUMP_2_RIGHT: + // Ledge jump. + if (delayedState == MOVEMENT_ACTION_JUMP_2_DOWN) + return (MOVEMENT_ACTION_JUMP_2_DOWN + (direction - 1)); + + if (delayedState == MOVEMENT_ACTION_ACRO_WHEELIE_JUMP_DOWN) + return (MOVEMENT_ACTION_ACRO_WHEELIE_JUMP_DOWN + (direction - 1)); + + SetFollowerNPCData(FNPC_DATA_DELAYED_STATE, MOVEMENT_ACTION_JUMP_2_DOWN); + RETURN_STATE(MOVEMENT_ACTION_WALK_NORMAL_DOWN, direction); + + case MOVEMENT_ACTION_WALK_FAST_DOWN ... MOVEMENT_ACTION_WALK_FAST_RIGHT: + // Handle player on waterfall. + if (PlayerIsUnderWaterfall(&gObjectEvents[gPlayerAvatar.objectEventId]) && (state == MOVEMENT_ACTION_WALK_FAST_UP)) + return MOVEMENT_INVALID; + + // Handle ice tile (some walking animation). + if (MetatileBehavior_IsIce(follower->currentMetatileBehavior) || MetatileBehavior_IsTrickHouseSlipperyFloor(follower->currentMetatileBehavior)) + follower->disableAnim = TRUE; + + // Handle surfing. + if (GetFollowerNPCData(FNPC_DATA_CURRENT_SPRITE) == FOLLOWER_NPC_SPRITE_INDEX_SURF && GetFollowerNPCSprite() == GetFollowerNPCData(FNPC_DATA_GFX_ID)) + RETURN_STATE(MOVEMENT_ACTION_SURF_STILL_DOWN, direction); + + RETURN_STATE(MOVEMENT_ACTION_WALK_FAST_DOWN, direction); + + case MOVEMENT_ACTION_WALK_FASTER_DOWN ... MOVEMENT_ACTION_WALK_FASTER_RIGHT: + if (MetatileBehavior_IsIce(follower->currentMetatileBehavior) || MetatileBehavior_IsTrickHouseSlipperyFloor(follower->currentMetatileBehavior)) + follower->disableAnim = TRUE; + + RETURN_STATE(MOVEMENT_ACTION_WALK_FASTER_DOWN, direction); + + case MOVEMENT_ACTION_RIDE_WATER_CURRENT_DOWN ... MOVEMENT_ACTION_RIDE_WATER_CURRENT_RIGHT: + // Handle player on waterfall. + if (PlayerIsUnderWaterfall(&gObjectEvents[gPlayerAvatar.objectEventId]) && IsPlayerSurfingNorth()) + return MOVEMENT_INVALID; + + RETURN_STATE(MOVEMENT_ACTION_RIDE_WATER_CURRENT_DOWN, direction); + + // Acro bike. + case MOVEMENT_ACTION_ACRO_WHEELIE_FACE_DOWN ... MOVEMENT_ACTION_ACRO_WHEELIE_FACE_RIGHT: + if (noSpecialAnimFrames) + return MOVEMENT_ACTION_NONE; + + RETURN_STATE(MOVEMENT_ACTION_ACRO_WHEELIE_FACE_DOWN, direction); + + case MOVEMENT_ACTION_ACRO_POP_WHEELIE_DOWN ... MOVEMENT_ACTION_ACRO_POP_WHEELIE_RIGHT: + if (noSpecialAnimFrames) + return MOVEMENT_ACTION_NONE; + + RETURN_STATE(MOVEMENT_ACTION_ACRO_POP_WHEELIE_DOWN, direction); + + case MOVEMENT_ACTION_ACRO_END_WHEELIE_FACE_DOWN ... MOVEMENT_ACTION_ACRO_END_WHEELIE_FACE_RIGHT: + if (noSpecialAnimFrames) + return MOVEMENT_ACTION_NONE; + + RETURN_STATE(MOVEMENT_ACTION_ACRO_END_WHEELIE_FACE_DOWN, direction); + + case MOVEMENT_ACTION_ACRO_WHEELIE_HOP_FACE_DOWN ... MOVEMENT_ACTION_ACRO_WHEELIE_HOP_FACE_RIGHT: + if (noSpecialAnimFrames) + return MOVEMENT_ACTION_NONE; + + RETURN_STATE(MOVEMENT_ACTION_ACRO_WHEELIE_HOP_FACE_DOWN, direction); + + case MOVEMENT_ACTION_ACRO_WHEELIE_HOP_DOWN ... MOVEMENT_ACTION_ACRO_WHEELIE_HOP_RIGHT: + if (noSpecialAnimFrames) + RETURN_STATE(MOVEMENT_ACTION_JUMP_DOWN, direction); + + RETURN_STATE(MOVEMENT_ACTION_ACRO_WHEELIE_HOP_DOWN, direction); + + case MOVEMENT_ACTION_ACRO_WHEELIE_JUMP_DOWN ... MOVEMENT_ACTION_ACRO_WHEELIE_JUMP_RIGHT: + // Ledge jump. + if (noSpecialAnimFrames) + { + if (delayedState == MOVEMENT_ACTION_JUMP_2_DOWN) + return (MOVEMENT_ACTION_JUMP_2_DOWN + (direction - 1)); + + SetFollowerNPCData(FNPC_DATA_DELAYED_STATE, MOVEMENT_ACTION_JUMP_2_DOWN); + } + else + { + if (delayedState == MOVEMENT_ACTION_ACRO_WHEELIE_JUMP_DOWN) + return (MOVEMENT_ACTION_ACRO_WHEELIE_JUMP_DOWN + (direction - 1)); + + if (delayedState == MOVEMENT_ACTION_JUMP_2_DOWN) + return (MOVEMENT_ACTION_JUMP_2_DOWN + (direction - 1)); + + SetFollowerNPCData(FNPC_DATA_DELAYED_STATE, MOVEMENT_ACTION_ACRO_WHEELIE_JUMP_DOWN); + } + + RETURN_STATE(MOVEMENT_ACTION_WALK_FAST_DOWN, direction); + + case MOVEMENT_ACTION_ACRO_WHEELIE_IN_PLACE_DOWN ... MOVEMENT_ACTION_ACRO_WHEELIE_IN_PLACE_RIGHT: + if (noSpecialAnimFrames) + return MOVEMENT_ACTION_NONE; + + RETURN_STATE(MOVEMENT_ACTION_ACRO_WHEELIE_IN_PLACE_DOWN, direction); + + case MOVEMENT_ACTION_ACRO_POP_WHEELIE_MOVE_DOWN ... MOVEMENT_ACTION_ACRO_POP_WHEELIE_MOVE_RIGHT: + if (noSpecialAnimFrames) + RETURN_STATE(MOVEMENT_ACTION_WALK_FAST_DOWN, direction); + + RETURN_STATE(MOVEMENT_ACTION_ACRO_POP_WHEELIE_MOVE_DOWN, direction); + + case MOVEMENT_ACTION_ACRO_WHEELIE_MOVE_DOWN ... MOVEMENT_ACTION_ACRO_WHEELIE_MOVE_RIGHT: + if (noSpecialAnimFrames) + RETURN_STATE(MOVEMENT_ACTION_WALK_FAST_DOWN, direction); + + RETURN_STATE(MOVEMENT_ACTION_ACRO_WHEELIE_MOVE_DOWN, direction); + + case MOVEMENT_ACTION_ACRO_END_WHEELIE_MOVE_DOWN ... MOVEMENT_ACTION_ACRO_END_WHEELIE_MOVE_RIGHT: + if (noSpecialAnimFrames) + RETURN_STATE(MOVEMENT_ACTION_WALK_FAST_DOWN, direction); + + RETURN_STATE(MOVEMENT_ACTION_ACRO_END_WHEELIE_MOVE_DOWN, direction); + + // Sliding. + case MOVEMENT_ACTION_SLIDE_DOWN ... MOVEMENT_ACTION_SLIDE_RIGHT: + RETURN_STATE(MOVEMENT_ACTION_SLIDE_DOWN, direction); + + case MOVEMENT_ACTION_PLAYER_RUN_DOWN ... MOVEMENT_ACTION_PLAYER_RUN_RIGHT: + // Running frames. + if (CheckFollowerNPCFlag(FOLLOWER_NPC_FLAG_HAS_RUNNING_FRAMES)) + RETURN_STATE(MOVEMENT_ACTION_PLAYER_RUN_DOWN, direction); + + RETURN_STATE(MOVEMENT_ACTION_WALK_FAST_DOWN, direction); + + case MOVEMENT_ACTION_JUMP_SPECIAL_DOWN ... MOVEMENT_ACTION_JUMP_SPECIAL_RIGHT: + SetFollowerNPCData(FNPC_DATA_DELAYED_STATE, MOVEMENT_ACTION_JUMP_SPECIAL_DOWN); + RETURN_STATE(MOVEMENT_ACTION_WALK_NORMAL_DOWN, direction); + + case MOVEMENT_ACTION_JUMP_DOWN ... MOVEMENT_ACTION_JUMP_RIGHT: + // Acro side hop. + if (delayedState == MOVEMENT_ACTION_JUMP_DOWN) + { + if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_ACRO_BIKE)) + follower->facingDirectionLocked = TRUE; + + return newState; + } + else + { + SetFollowerNPCData(FNPC_DATA_DELAYED_STATE, MOVEMENT_ACTION_JUMP_DOWN); + RETURN_STATE(MOVEMENT_ACTION_WALK_NORMAL_DOWN, direction); + } + + // Run slow. + case MOVEMENT_ACTION_RUN_DOWN_SLOW ... MOVEMENT_ACTION_RUN_RIGHT_SLOW: + if (CheckFollowerNPCFlag(FOLLOWER_NPC_FLAG_HAS_RUNNING_FRAMES)) + RETURN_STATE(MOVEMENT_ACTION_RUN_DOWN_SLOW, direction); + + RETURN_STATE(MOVEMENT_ACTION_WALK_NORMAL_DOWN, direction); + + default: + return MOVEMENT_INVALID; + } + + return newState; +} + +/* + * Reload the entire event object. + * It would usually be enough just to change the sprite Id, but if the original + * sprite and the new sprite have different palettes, the palette would need to + * be reloaded. + */ +void SetFollowerNPCSprite(u32 spriteIndex) +{ + u32 oldSpriteId; + u32 newSpriteId; + u32 newGraphicsId; + struct ObjectEventTemplate clone; + struct ObjectEvent backupFollower; + struct ObjectEvent *follower; + + if (!PlayerHasFollowerNPC()) + return; + + if (GetFollowerNPCData(FNPC_DATA_CURRENT_SPRITE) == spriteIndex) + return; + + // Save the sprite. + follower = &gObjectEvents[GetFollowerNPCObjectId()]; + SetFollowerNPCData(FNPC_DATA_CURRENT_SPRITE, spriteIndex); + oldSpriteId = follower->spriteId; + newGraphicsId = GetFollowerNPCSprite(); + + backupFollower = *follower; + backupFollower.graphicsId = newGraphicsId; + DestroySprite(&gSprites[oldSpriteId]); + RemoveObjectEvent(&gObjectEvents[GetFollowerNPCObjectId()]); + + clone = *GetObjectEventTemplateByLocalIdAndMap(GetFollowerNPCData(FNPC_DATA_MAP_ID), GetFollowerNPCData(FNPC_DATA_MAP_NUM), GetFollowerNPCData(FNPC_DATA_MAP_GROUP)); + clone.graphicsId = newGraphicsId; + clone.movementType = 0; + clone.localId = OBJ_EVENT_ID_NPC_FOLLOWER; + SetFollowerNPCData(FNPC_DATA_OBJ_ID, TrySpawnObjectEventTemplate(&clone, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, clone.x, clone.y)); + if (GetFollowerNPCData(FNPC_DATA_OBJ_ID) != OBJECT_EVENTS_COUNT) + { + follower = &gObjectEvents[GetFollowerNPCObjectId()]; + newSpriteId = follower->spriteId; + *follower = backupFollower; + follower->spriteId = newSpriteId; + MoveObjectEventToMapCoords(follower, follower->currentCoords.x, follower->currentCoords.y); + ObjectEventTurn(follower, follower->facingDirection); + } + else + { + ClearFollowerNPCData(); + } +} + +static void ChooseFirstThreeEligibleMons(void) +{ + u32 i; + u32 count = 0; + + ClearSelectedPartyOrder(); + + for (i = 0; i < PARTY_SIZE; i++) + { + if (GetMonData(&gPlayerParty[i], MON_DATA_HP) != 0 + && GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG) == FALSE + && GetMonData(&gPlayerParty[i], MON_DATA_SPECIES) != SPECIES_NONE) + { + gSelectedOrderFromParty[count] = (i + 1); + count++; + } + + if (count == 3) + break; + } +} + +bool32 PlayerHasFollowerNPC(void) +{ + return GetFollowerNPCData(FNPC_DATA_IN_PROGRESS); +} + +void NPCFollow(struct ObjectEvent *npc, u32 state, bool32 ignoreScriptActive) +{ + struct ObjectEvent *player = &gObjectEvents[gPlayerAvatar.objectEventId]; + struct ObjectEvent *follower = &gObjectEvents[GetFollowerNPCObjectId()]; + u32 dir; + u32 newState; + u32 taskId; + + // Only when the player moves. + if (player != npc) + return; + // Only if a follower exists. + else if (!PlayerHasFollowerNPC()) + return; + // Don't follow during a script. + else if (ArePlayerFieldControlsLocked() && !ignoreScriptActive) + return; + + // If the follower's object has been removed, create a new one and set it to reappear. + if (!follower->active) + { + CreateFollowerNPCAvatar(); + SetFollowerNPCData(FNPC_DATA_WARP_END, FNPC_WARP_REAPPEAR); + } + + // Restore post warp behavior after setobjectxy. + if (GetFollowerNPCData(FNPC_DATA_COME_OUT_DOOR) == FNPC_DOOR_NO_POS_SET) + SetFollowerNPCData(FNPC_DATA_COME_OUT_DOOR, FNPC_DOOR_NONE); + + // Follower changes to normal sprite after getting off surf blob. + if (GetFollowerNPCData(FNPC_DATA_CURRENT_SPRITE) == FOLLOWER_NPC_SPRITE_INDEX_SURF && !CheckFollowerNPCFlag(PLAYER_AVATAR_FLAG_SURFING) && follower->fieldEffectSpriteId == 0) + { + SetFollowerNPCSprite(FOLLOWER_NPC_SPRITE_INDEX_NORMAL); + SetFollowerNPCData(FNPC_DATA_SURF_BLOB, FNPC_SURF_BLOB_NONE); + } + + // Check if the state would cause hidden follower to reappear. + if (IsStateMovement(state) && GetFollowerNPCData(FNPC_DATA_WARP_END) == FNPC_WARP_REAPPEAR) + { + SetFollowerNPCData(FNPC_DATA_WARP_END, FNPC_WARP_NONE); + + if (GetFollowerNPCData(FNPC_DATA_COME_OUT_DOOR) == FNPC_DOOR_NEEDS_TO_EXIT) + { + gPlayerAvatar.preventStep = TRUE; + taskId = CreateTask(Task_FollowerNPCOutOfDoor, 1); + gTasks[taskId].tState = 0; + gTasks[taskId].tDoorX = follower->currentCoords.x; + gTasks[taskId].tDoorY = follower->currentCoords.y; + TryUpdateFollowerNPCSpriteUnderwater(); + ObjectEventClearHeldMovementIfFinished(follower); + return; + } + + follower->invisible = FALSE; + MoveObjectEventToMapCoords(follower, player->currentCoords.x, player->currentCoords.y); + // The follower should be facing the same direction as the player when it comes out of hiding. + ObjectEventTurn(follower, player->facingDirection); + + // Recreate the surf blob if needed. + if (GetFollowerNPCData(FNPC_DATA_SURF_BLOB) == FNPC_SURF_BLOB_RECREATE) + { + SetUpSurfBlobFieldEffect(follower); + follower->fieldEffectSpriteId = FieldEffectStart(FLDEFF_SURF_BLOB); + SetSurfBlob_BobState(follower->fieldEffectSpriteId, 1); + } + else + { + TryUpdateFollowerNPCSpriteUnderwater(); + } + } + + dir = DetermineFollowerNPCDirection(player, follower); + + if (dir == DIR_NONE) + { + ObjectEventClearHeldMovementIfFinished(follower); + return; + } + + newState = DetermineFollowerNPCState(follower, state, dir); + if (newState == MOVEMENT_INVALID) + { + ObjectEventClearHeldMovementIfFinished(follower); + return; + } + + // Follower gets on surf blob. + if (GetFollowerNPCData(FNPC_DATA_SURF_BLOB) == FNPC_SURF_BLOB_NEW && IsStateMovement(state)) + { + SetFollowerNPCData(FNPC_DATA_SURF_BLOB, FNPC_SURF_BLOB_RECREATE); + gPlayerAvatar.preventStep = TRUE; + SetSurfJump(); + ObjectEventClearHeldMovementIfFinished(follower); + return; + } + // Follower gets off surf blob. + else if (GetFollowerNPCData(FNPC_DATA_SURF_BLOB) == FNPC_SURF_BLOB_DESTROY) + { + SetFollowerNPCData(FNPC_DATA_SURF_BLOB, FNPC_SURF_BLOB_NONE); + gPlayerAvatar.preventStep = TRUE; + SetSurfDismount(); + ObjectEventClearHeldMovementIfFinished(follower); + return; + } + + ObjectEventClearHeldMovementIfActive(follower); + ObjectEventSetHeldMovement(follower, newState); + PlayerLogCoordinates(player); + + switch (newState) + { + case MOVEMENT_ACTION_JUMP_2_DOWN ... MOVEMENT_ACTION_JUMP_2_RIGHT: + case MOVEMENT_ACTION_JUMP_DOWN ... MOVEMENT_ACTION_JUMP_RIGHT: + case MOVEMENT_ACTION_ACRO_WHEELIE_JUMP_DOWN ... MOVEMENT_ACTION_ACRO_WHEELIE_JUMP_RIGHT: + // Synchronize movements on stairs and ledges. + CreateTask(Task_ReallowPlayerMovement, 1); + gPlayerAvatar.preventStep = TRUE; + } + + ObjectEventClearHeldMovementIfFinished(follower); +} + +void CreateFollowerNPCAvatar(void) +{ + struct ObjectEvent *player; + struct ObjectEventTemplate clone; + + if (!PlayerHasFollowerNPC()) + return; + + player = &gObjectEvents[gPlayerAvatar.objectEventId]; + clone = *GetObjectEventTemplateByLocalIdAndMap(GetFollowerNPCData(FNPC_DATA_MAP_ID), GetFollowerNPCData(FNPC_DATA_MAP_NUM), GetFollowerNPCData(FNPC_DATA_MAP_GROUP)); + + clone.graphicsId = GetFollowerNPCSprite(); + clone.x = player->currentCoords.x - 7; + clone.y = player->currentCoords.y - 7; + clone.movementType = 0; + clone.localId = OBJ_EVENT_ID_NPC_FOLLOWER; + + switch (GetPlayerFacingDirection()) + { + case DIR_NORTH: + clone.movementType = MOVEMENT_TYPE_FACE_UP; + break; + case DIR_WEST: + clone.movementType = MOVEMENT_TYPE_FACE_LEFT; + break; + case DIR_EAST: + clone.movementType = MOVEMENT_TYPE_FACE_RIGHT; + break; + } + + // Create NPC and store ID. + SetFollowerNPCData(FNPC_DATA_OBJ_ID, TrySpawnObjectEventTemplate(&clone, GetFollowerNPCData(FNPC_DATA_MAP_NUM), GetFollowerNPCData(FNPC_DATA_MAP_GROUP), clone.x, clone.y)); + if (GetFollowerNPCData(FNPC_DATA_OBJ_ID) == OBJECT_EVENTS_COUNT) + { + ClearFollowerNPCData(); + return; + } + + if (gMapHeader.mapType == MAP_TYPE_UNDERWATER) + SetFollowerNPCData(FNPC_DATA_SURF_BLOB, FNPC_SURF_BLOB_NONE); + + gObjectEvents[GetFollowerNPCData(FNPC_DATA_OBJ_ID)].invisible = TRUE; +} + +void FollowerNPC_HandleSprite(void) +{ + if (CheckFollowerNPCFlag(FOLLOWER_NPC_FLAG_CAN_BIKE)) + { + if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_MACH_BIKE) + SetFollowerNPCSprite(FOLLOWER_NPC_SPRITE_INDEX_MACH_BIKE); + else if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_ACRO_BIKE) + SetFollowerNPCSprite(FOLLOWER_NPC_SPRITE_INDEX_ACRO_BIKE); + } + else if (gMapHeader.mapType == MAP_TYPE_UNDERWATER) + { + TryUpdateFollowerNPCSpriteUnderwater(); + } + else + { + SetFollowerNPCSprite(FOLLOWER_NPC_SPRITE_INDEX_NORMAL); + } +} + +u32 DetermineFollowerNPCDirection(struct ObjectEvent *player, struct ObjectEvent *follower) +{ + s32 delta_x = follower->currentCoords.x - player->currentCoords.x; + s32 delta_y = follower->currentCoords.y - player->currentCoords.y; + + if (delta_x < 0) + return DIR_EAST; + else if (delta_x > 0) + return DIR_WEST; + + if (delta_y < 0) + return DIR_SOUTH; + else if (delta_y > 0) + return DIR_NORTH; + + return DIR_NONE; +} + +u32 GetFollowerNPCObjectId(void) +{ + if (PlayerHasFollowerNPC()) + return GetFollowerNPCData(FNPC_DATA_OBJ_ID); + + return 0; +} + +bool32 CheckFollowerNPCFlag(u32 flag) +{ + if (!PlayerHasFollowerNPC()) + return TRUE; + + if (GetFollowerNPCData(FNPC_DATA_FOLLOWER_FLAGS) & flag) + return TRUE; + + return FALSE; +} + +bool32 FollowerNPC_IsCollisionExempt(struct ObjectEvent *obstacle, struct ObjectEvent *collider) +{ + struct ObjectEvent *follower = &gObjectEvents[GetFollowerNPCObjectId()]; + struct ObjectEvent *player = &gObjectEvents[gPlayerAvatar.objectEventId]; + + if (!PlayerHasFollowerNPC()) + return FALSE; + + if (obstacle == follower && collider == player) + return TRUE; + + return FALSE; +} + +void HideNPCFollower(void) +{ + if (!PlayerHasFollowerNPC() || gObjectEvents[GetFollowerNPCObjectId()].invisible) + return; + + if (GetFollowerNPCData(FNPC_DATA_SURF_BLOB) == FNPC_SURF_BLOB_RECREATE || GetFollowerNPCData(FNPC_DATA_SURF_BLOB) == FNPC_SURF_BLOB_DESTROY) + { + SetSurfBlob_BobState(gObjectEvents[GetFollowerNPCObjectId()].fieldEffectSpriteId, 2); + DestroySprite(&gSprites[gObjectEvents[GetFollowerNPCObjectId()].fieldEffectSpriteId]); + gObjectEvents[GetFollowerNPCObjectId()].fieldEffectSpriteId = 0; + } + + SetFollowerNPCData(FNPC_DATA_COME_OUT_DOOR, FNPC_DOOR_NONE); + + gObjectEvents[GetFollowerNPCObjectId()].invisible = TRUE; +} + +void FollowerNPC_WarpSetEnd(void) +{ + struct ObjectEvent *player; + struct ObjectEvent *follower; + + if (!PlayerHasFollowerNPC()) + return; + + player = &gObjectEvents[gPlayerAvatar.objectEventId]; + follower = &gObjectEvents[GetFollowerNPCObjectId()]; + + PlayerLogCoordinates(player); + + // Skip setting position if setobjectxy was used during ON_WARP_INTO_MAP_TABLE. + if (GetFollowerNPCData(FNPC_DATA_COME_OUT_DOOR) == FNPC_DOOR_NO_POS_SET) + { + SetFollowerNPCData(FNPC_DATA_WARP_END, FNPC_WARP_NONE); + SetFollowerNPCData(FNPC_DATA_COME_OUT_DOOR, FNPC_DOOR_NONE); + } + else + { + u32 toY = GetFollowerNPCData(FNPC_DATA_COME_OUT_DOOR) == FNPC_DOOR_NEEDS_TO_EXIT ? (player->currentCoords.y - 1) : player->currentCoords.y; + MoveObjectEventToMapCoords(follower, player->currentCoords.x, toY); + SetFollowerNPCData(FNPC_DATA_WARP_END, FNPC_WARP_REAPPEAR); + } + + if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_ON_FOOT) + { + SetFollowerNPCSprite(FOLLOWER_NPC_SPRITE_INDEX_NORMAL); + SetFollowerNPCData(FNPC_DATA_SURF_BLOB, FNPC_SURF_BLOB_NONE); + } + else if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_SURFING) + { + SetFollowerNPCSprite(FOLLOWER_NPC_SPRITE_INDEX_SURF); + SetFollowerNPCData(FNPC_DATA_SURF_BLOB, FNPC_SURF_BLOB_RECREATE); + } + + follower->facingDirection = player->facingDirection; + follower->movementDirection = player->movementDirection; +} + +bool32 FollowerNPCCanBike(void) +{ + if (!PlayerHasFollowerNPC()) + return TRUE; + else if (CheckFollowerNPCFlag(FOLLOWER_NPC_FLAG_CAN_BIKE)) + return TRUE; + else + return FALSE; +} + +void FollowerNPC_HandleBike(void) +{ + // Wait until after get off surf blob to start biking. + if (GetFollowerNPCData(FNPC_DATA_CURRENT_SPRITE) == FOLLOWER_NPC_SPRITE_INDEX_SURF) + return; + + if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_MACH_BIKE && FollowerNPCCanBike() && GetFollowerNPCData(FNPC_DATA_COME_OUT_DOOR) != FNPC_DOOR_NEEDS_TO_EXIT) //Coming out door + { + SetFollowerNPCSprite(FOLLOWER_NPC_SPRITE_INDEX_MACH_BIKE); + } + else if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_ACRO_BIKE && FollowerNPCCanBike() && GetFollowerNPCData(FNPC_DATA_COME_OUT_DOOR) != FNPC_DOOR_NEEDS_TO_EXIT) //Coming out door + { + SetFollowerNPCSprite(FOLLOWER_NPC_SPRITE_INDEX_ACRO_BIKE); + } + else + { + SetFollowerNPCSprite(FOLLOWER_NPC_SPRITE_INDEX_NORMAL); + // Disable saved Acro side jump. + if (GetFollowerNPCData(FNPC_DATA_DELAYED_STATE) == MOVEMENT_ACTION_JUMP_DOWN) + SetFollowerNPCData(FNPC_DATA_DELAYED_STATE, 0); + } +} + +void FollowerNPC_FollowerToWater(void) +{ + if (!PlayerHasFollowerNPC()) + return; + + // Prepare for making the follower do the jump and spawn the surf blob right in front of the follower's location. + NPCFollow(&gObjectEvents[gPlayerAvatar.objectEventId], MOVEMENT_ACTION_JUMP_DOWN, TRUE); + SetFollowerNPCData(FNPC_DATA_SURF_BLOB, FNPC_SURF_BLOB_NEW); +} + +void FollowerNPC_SetIndicatorToRecreateSurfBlob(void) +{ + if (PlayerHasFollowerNPC()) + SetFollowerNPCData(FNPC_DATA_SURF_BLOB, FNPC_SURF_BLOB_RECREATE); +} + +void FollowerNPC_BindToSurfBlobOnReloadScreen(void) +{ + struct ObjectEvent *follower; + + if (!PlayerHasFollowerNPC()) + return; + + follower = &gObjectEvents[GetFollowerNPCObjectId()]; + TryUpdateFollowerNPCSpriteUnderwater(); + + if (follower->invisible || (GetFollowerNPCData(FNPC_DATA_SURF_BLOB) != FNPC_SURF_BLOB_RECREATE && GetFollowerNPCData(FNPC_DATA_SURF_BLOB) != FNPC_SURF_BLOB_DESTROY)) + return; + + // Spawn the surf blob under the follower. + SetUpSurfBlobFieldEffect(follower); + follower->fieldEffectSpriteId = FieldEffectStart(FLDEFF_SURF_BLOB); + SetSurfBlob_BobState(follower->fieldEffectSpriteId, 1); +} + +void PrepareFollowerNPCDismountSurf(void) +{ + if (!PlayerHasFollowerNPC()) + return; + + NPCFollow(&gObjectEvents[gPlayerAvatar.objectEventId], MOVEMENT_ACTION_WALK_NORMAL_DOWN, TRUE); + SetFollowerNPCData(FNPC_DATA_SURF_BLOB, FNPC_SURF_BLOB_DESTROY); +} + +void SetFollowerNPCSurfSpriteAfterDive(void) +{ + SetFollowerNPCSprite(FOLLOWER_NPC_SPRITE_INDEX_SURF); + SetFollowerNPCData(FNPC_DATA_SURF_BLOB, FNPC_SURF_BLOB_RECREATE); +} + +bool32 FollowerNPCComingThroughDoor(void) +{ + if (!PlayerHasFollowerNPC()) + return FALSE; + + if (GetFollowerNPCData(FNPC_DATA_COME_OUT_DOOR)) + return TRUE; + + return FALSE; +} + +void FollowerNPC_SetIndicatorToComeOutDoor(void) +{ + if (PlayerHasFollowerNPC()) + SetFollowerNPCData(FNPC_DATA_COME_OUT_DOOR, FNPC_DOOR_NEEDS_TO_EXIT); +} + +void EscalatorMoveFollowerNPC(u32 movementType) +{ + u8 taskId; + + if (!PlayerHasFollowerNPC()) + return; + + taskId = CreateTask(Task_FollowerNPCHandleEscalator, 1); + gTasks[taskId].data[1] = movementType; +} + +void EscalatorMoveFollowerNPCFinish(void) +{ + if (!PlayerHasFollowerNPC()) + return; + + CreateTask(Task_FollowerNPCHandleEscalatorFinish, 1); +} + +void FollowerNPCWalkIntoPlayerForLeaveMap(void) +{ + u32 followerObjId = GetFollowerNPCObjectId(); + struct ObjectEvent *follower = &gObjectEvents[GetFollowerNPCObjectId()]; + + if (followerObjId == OBJECT_EVENTS_COUNT) + return; + + follower->singleMovementActive = FALSE; + follower->heldMovementActive = FALSE; + switch (DetermineFollowerNPCDirection(&gObjectEvents[gPlayerAvatar.objectEventId], &gObjectEvents[followerObjId])) + { + case DIR_NORTH: + ObjectEventSetHeldMovement(follower, MOVEMENT_ACTION_WALK_NORMAL_UP); + break; + case DIR_SOUTH: + ObjectEventSetHeldMovement(follower, MOVEMENT_ACTION_WALK_NORMAL_DOWN); + break; + case DIR_EAST: + ObjectEventSetHeldMovement(follower, MOVEMENT_ACTION_WALK_NORMAL_RIGHT); + break; + case DIR_WEST: + ObjectEventSetHeldMovement(follower, MOVEMENT_ACTION_WALK_NORMAL_LEFT); + break; + } +} + +void FollowerNPCHideForLeaveMap(struct ObjectEvent *follower) +{ + SetFollowerNPCSprite(FOLLOWER_NPC_SPRITE_INDEX_NORMAL); + follower->invisible = TRUE; + SetFollowerNPCData(FNPC_DATA_WARP_END, FNPC_WARP_REAPPEAR); + SetFollowerNPCData(FNPC_DATA_COME_OUT_DOOR, FNPC_DOOR_NONE); + SetFollowerNPCData(FNPC_DATA_SURF_BLOB, FNPC_SURF_BLOB_NONE); + SetFollowerNPCData(FNPC_DATA_DELAYED_STATE, 0); +} + +void FollowerNPCReappearAfterLeaveMap(struct ObjectEvent *follower, struct ObjectEvent *player) +{ + if (PlayerHasFollowerNPC()) + { + follower->invisible = FALSE; + MoveObjectEventToMapCoords(follower, player->currentCoords.x, player->currentCoords.y); + ObjectEventTurn(follower, DIR_SOUTH); + follower->singleMovementActive = FALSE; + follower->heldMovementActive = FALSE; + + // Follower only steps onto a tile without collision. + if (GetCollisionAtCoords(player, player->currentCoords.x, player->currentCoords.y + 1, DIR_SOUTH) == COLLISION_NONE) + ObjectEventSetHeldMovement(follower, MOVEMENT_ACTION_WALK_NORMAL_DOWN); + else if (GetCollisionAtCoords(player, player->currentCoords.x + 1, player->currentCoords.y, DIR_EAST) == COLLISION_NONE) + ObjectEventSetHeldMovement(follower, MOVEMENT_ACTION_WALK_NORMAL_RIGHT); + else if (GetCollisionAtCoords(player, player->currentCoords.x - 1, player->currentCoords.y, DIR_WEST) == COLLISION_NONE) + ObjectEventSetHeldMovement(follower, MOVEMENT_ACTION_WALK_NORMAL_LEFT); + else + HideNPCFollower(); + } +} + +void FollowerNPCFaceAfterLeaveMap(void) +{ + struct ObjectEvent *player = &gObjectEvents[gPlayerAvatar.objectEventId]; + struct ObjectEvent *follower = &gObjectEvents[GetFollowerNPCData(FNPC_DATA_OBJ_ID)]; + + if (follower->invisible) + return; + + ObjectEventTurn(follower, DetermineFollowerNPCDirection(player, follower)); + SetFollowerNPCData(FNPC_DATA_WARP_END, FNPC_WARP_NONE); +} + +bool32 FollowerNPCIsBattlePartner(void) +{ + if (PlayerHasFollowerNPC() && GetFollowerNPCData(FNPC_DATA_BATTLE_PARTNER)) + return TRUE; + + return FALSE; +} + +u32 GetFollowerNPCBattlePartner(void) +{ + return GetFollowerNPCData(FNPC_DATA_BATTLE_PARTNER); +} + +bool32 IsNPCFollowerWildBattle(void) +{ + if (FollowerNPCIsBattlePartner() && FNPC_FLAG_PARTNER_WILD_BATTLES != 0 + && (FNPC_FLAG_PARTNER_WILD_BATTLES == FNPC_ALWAYS || FlagGet(FNPC_FLAG_PARTNER_WILD_BATTLES))) + return TRUE; + + return FALSE; +} + +void PrepareForFollowerNPCBattle(void) +{ + // Load the partner party if the NPC follower should participate. + if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER && FollowerNPCIsBattlePartner()) + { + SavePlayerParty(); + ChooseFirstThreeEligibleMons(); + ReducePlayerPartyToSelectedMons(); + VarSet(VAR_0x8004, FRONTIER_UTIL_FUNC_SET_DATA); + VarSet(VAR_0x8005, FRONTIER_DATA_SELECTED_MON_ORDER); + CallFrontierUtilFunc(); + gPartnerTrainerId = TRAINER_PARTNER(GetFollowerNPCData(FNPC_DATA_BATTLE_PARTNER)); + FillPartnerParty(gPartnerTrainerId); + } +} + +void RestorePartyAfterFollowerNPCBattle(void) +{ + VarSet(VAR_0x8004, FRONTIER_UTIL_FUNC_SAVE_PARTY); + CallFrontierUtilFunc(); + LoadPlayerParty(); +} + +void FollowerNPC_TryRemoveFollowerOnWhiteOut(void) +{ + if (PlayerHasFollowerNPC()) + { + if (CheckFollowerNPCFlag(FOLLOWER_NPC_FLAG_CLEAR_ON_WHITE_OUT)) + ClearFollowerNPCData(); + else + FollowerNPC_WarpSetEnd(); + } +} + +#undef tDoorX +#undef tDoorY + +// Task data +#define PREVENT_PLAYER_STEP 0 +#define DO_ALL_FORCED_MOVEMENTS 1 +#define NPC_INTO_PLAYER 2 +#define ENABLE_PLAYER_STEP 3 + +void Task_MoveNPCFollowerAfterForcedMovement(u8 taskId) +{ + struct ObjectEvent *follower = &gObjectEvents[GetFollowerNPCObjectId()]; + struct ObjectEvent *player = &gObjectEvents[gPlayerAvatar.objectEventId]; + + // Prevent player input until all forced mmovements are done and the follower is hidden. + if (gTasks[taskId].tState == PREVENT_PLAYER_STEP) + { + gPlayerAvatar.preventStep = TRUE; + gTasks[taskId].tState = DO_ALL_FORCED_MOVEMENTS; + } + // The player will keep doing forced movments until they land on a non-forced-move metatile or hit collision. + else if (gTasks[taskId].tState == DO_ALL_FORCED_MOVEMENTS && ObjectEventClearHeldMovementIfFinished(player) != 0) + { + // Lock follower facing direction for muddy slope. + if (follower->currentMetatileBehavior == MB_MUDDY_SLOPE) + follower->facingDirectionLocked = TRUE; + + if (TryDoMetatileBehaviorForcedMovement() == 0) + gTasks[taskId].tState = NPC_INTO_PLAYER; + + return; + } + // The NPC will take an extra step and be on the same tile as the player. + else if (gTasks[taskId].tState == NPC_INTO_PLAYER && ObjectEventClearHeldMovementIfFinished(player) != 0 && ObjectEventClearHeldMovementIfFinished(follower) != 0) + { + ObjectEventSetHeldMovement(follower, GetWalkFastMovementAction(DetermineFollowerNPCDirection(player, follower))); + gTasks[taskId].tState = ENABLE_PLAYER_STEP; + return; + } + // Hide the NPC until the player takes a step. Reallow player input. + else if (gTasks[taskId].tState == ENABLE_PLAYER_STEP && ObjectEventClearHeldMovementIfFinished(follower) != 0) + { + follower->facingDirectionLocked = FALSE; + HideNPCFollower(); + SetFollowerNPCData(FNPC_DATA_WARP_END, FNPC_WARP_REAPPEAR); + gPlayerAvatar.preventStep = FALSE; + DestroyTask(taskId); + } +} + +#undef tState +#undef PREVENT_PLAYER_STEP +#undef DO_ALL_FORCED_MOVEMENTS +#undef NPC_INTO_PLAYER +#undef ENABLE_PLAYER_STEP + +void Task_HideNPCFollowerAfterMovementFinish(u8 taskId) +{ + struct ObjectEvent *npcFollower = &gObjectEvents[GetFollowerNPCObjectId()]; + + if (ObjectEventClearHeldMovementIfFinished(npcFollower) != 0) + { + HideNPCFollower(); + SetFollowerNPCData(FNPC_DATA_WARP_END, FNPC_WARP_REAPPEAR); + gPlayerAvatar.preventStep = FALSE; + DestroyTask(taskId); + } +} + +// Script commands. +void ScriptSetFollowerNPC(struct ScriptContext *ctx) +{ + u32 localId = ScriptReadByte(ctx); + u32 flags = ScriptReadHalfword(ctx); + u32 setScript = ScriptReadByte(ctx); + u32 battlePartner = ScriptReadHalfword(ctx); + const u8 *script = (const u8 *)ScriptReadWord(ctx); + + SetFollowerNPCData(FNPC_DATA_BATTLE_PARTNER, battlePartner); + TurnNPCIntoFollower(localId, flags, setScript, script); +} + +void ScriptDestroyFollowerNPC(struct ScriptContext *ctx) +{ + if (!PlayerHasFollowerNPC()) + return; + + RemoveObjectEvent(&gObjectEvents[GetFollowerNPCData(FNPC_DATA_OBJ_ID)]); + FlagSet(GetFollowerNPCData(FNPC_DATA_EVENT_FLAG)); + ClearFollowerNPCData(); + UpdateFollowingPokemon(); +} + +void ScriptFaceFollowerNPC(struct ScriptContext *ctx) +{ + if (!FNPC_ENABLE_NPC_FOLLOWERS || !PlayerHasFollowerNPC()) + return; + + u32 playerDirection, followerDirection; + struct ObjectEvent *player, *follower; + player = &gObjectEvents[gPlayerAvatar.objectEventId]; + follower = &gObjectEvents[GetFollowerNPCData(FNPC_DATA_OBJ_ID)]; + + if (follower->invisible == FALSE) + { + playerDirection = DetermineFollowerNPCDirection(player, follower); + followerDirection = playerDirection; + + //Flip direction. + switch (playerDirection) + { + case DIR_NORTH: + playerDirection = DIR_SOUTH; + break; + case DIR_SOUTH: + playerDirection = DIR_NORTH; + break; + case DIR_WEST: + playerDirection = DIR_EAST; + break; + case DIR_EAST: + playerDirection = DIR_WEST; + break; + } + + ObjectEventTurn(player, playerDirection); + ObjectEventTurn(follower, followerDirection); + } +} + +static const u8 *const FollowerNPCHideMovementsSpeedTable[][4] = +{ + [DIR_SOUTH] = {Common_Movement_WalkDownSlow, Common_Movement_WalkDown, Common_Movement_WalkDownFast, Common_Movement_WalkDownFaster}, + [DIR_NORTH] = {Common_Movement_WalkUpSlow, Common_Movement_WalkUp, Common_Movement_WalkUpFast, Common_Movement_WalkUpFaster}, + [DIR_WEST] = {Common_Movement_WalkLeftSlow, Common_Movement_WalkLeft, Common_Movement_WalkLeftFast, Common_Movement_WalkLeftFaster}, + [DIR_EAST] = {Common_Movement_WalkRightSlow, Common_Movement_WalkRight, Common_Movement_WalkRightFast, Common_Movement_WalkRightFaster} +}; + +void ScriptHideNPCFollower(struct ScriptContext *ctx) +{ + if (!FNPC_ENABLE_NPC_FOLLOWERS || !PlayerHasFollowerNPC()) + return; + + u32 walkSpeed = ScriptReadByte(ctx); + struct ObjectEvent *npc = &gObjectEvents[GetFollowerNPCObjectId()]; + + if (npc->invisible == FALSE) + { + u32 direction = DetermineFollowerNPCDirection(&gObjectEvents[gPlayerAvatar.objectEventId], npc); + + if (walkSpeed > 3) + walkSpeed = 3; + + ScriptMovement_StartObjectMovementScript(OBJ_EVENT_ID_NPC_FOLLOWER, npc->mapGroup, npc->mapNum, FollowerNPCHideMovementsSpeedTable[direction][walkSpeed]); + SetFollowerNPCData(FNPC_DATA_WARP_END, FNPC_WARP_REAPPEAR); + } +} + +void ScriptCheckFollowerNPC(struct ScriptContext *ctx) +{ + gSpecialVar_Result = PlayerHasFollowerNPC(); +} + +void ScriptUpdateFollowingMon(struct ScriptContext *ctx) +{ + UpdateFollowingPokemon(); +} + +void ScriptChangeFollowerNPCBattlePartner(struct ScriptContext *ctx) +{ + if (!FNPC_ENABLE_NPC_FOLLOWERS || !PlayerHasFollowerNPC()) + return; + + u32 newBattlePartner = ScriptReadHalfword(ctx); + + SetFollowerNPCData(FNPC_DATA_BATTLE_PARTNER, newBattlePartner); +} diff --git a/src/fonts.c b/src/fonts.c index 853f6fbde2..46f3a335c4 100644 --- a/src/fonts.c +++ b/src/fonts.c @@ -19,7 +19,7 @@ ALIGNED(4) const u8 gFontSmallNarrowLatinGlyphWidths[] = { 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 7, 3, 5, 5, 5, 5, 5, 5, 3, 3, 3, 3, 8, 3, 3, 3, 3, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 3, 3, 3, 3, 3, 3, 3, 3, + 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, @@ -55,7 +55,7 @@ ALIGNED(4) const u8 gFontSmallLatinGlyphWidths[] = { 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 8, 7, 5, 5, 5, 5, 5, 5, 9, 3, 3, 3, 8, 3, 3, 3, 3, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 3, 3, 3, 3, 3, 3, 3, 3, + 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, @@ -91,7 +91,7 @@ ALIGNED(4) const u8 gFontNarrowLatinGlyphWidths[] = { 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 8, 3, 5, 5, 5, 5, 5, 5, 3, 3, 3, 3, 8, 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, + 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, @@ -127,7 +127,7 @@ ALIGNED(4) const u8 gFontShortLatinGlyphWidths[] = { 5, 6, 5, 6, 6, 6, 5, 5, 5, 6, 6, 6, 6, 6, 6, 8, 5, 6, 6, 6, 6, 6, 6, 3, 3, 3, 3, 8, 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, + 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, @@ -163,7 +163,7 @@ ALIGNED(4) const u8 gFontNormalLatinGlyphWidths[] = { 4, 6, 6, 6, 6, 6, 5, 6, 6, 6, 6, 6, 6, 6, 6, 8, 3, 6, 6, 6, 6, 6, 6, 3, 3, 3, 3, 8, 3, 3, 3, 3, 10, 10, 10, 10, 8, 10, 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, + 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, @@ -199,7 +199,7 @@ ALIGNED(4) const u8 gFontNarrowerLatinGlyphWidths[] = { 2, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 8, 2, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 8, 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, + 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, @@ -235,7 +235,7 @@ ALIGNED(4) const u8 gFontSmallNarrowerLatinGlyphWidths[] = { 2, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 7, 2, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 8, 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, + 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, @@ -271,7 +271,7 @@ ALIGNED(4) const u8 gFontShortNarrowLatinGlyphWidths[] = { 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, 8, 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, + 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, @@ -307,7 +307,7 @@ ALIGNED(4) const u8 gFontShortNarrowerLatinGlyphWidths[] = { 2, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 8, 5, 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, + 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, diff --git a/src/graphics.c b/src/graphics.c index 2a8e0c668a..97acda7732 100644 --- a/src/graphics.c +++ b/src/graphics.c @@ -1,15 +1,15 @@ #include "global.h" const u32 gBattleTextboxTiles[] = INCBIN_U32("graphics/battle_interface/textbox.4bpp.lz"); -const u32 gBattleTextboxPalette[] = INCBIN_U32("graphics/battle_interface/textbox.gbapal.lz"); +const u16 gBattleTextboxPalette[] = INCBIN_U16("graphics/battle_interface/textbox.gbapal"); const u32 gBattleTextboxTilemap[] = INCBIN_U32("graphics/battle_interface/textbox_map.bin.lz"); const u32 gUnusedGfx_OldCharmap[] = INCBIN_U32("graphics/unused/old_charmap.4bpp.lz"); // japanese table and bunch of stuff const u32 gUnusedTimemap_OldCharmap[] = INCBIN_U32("graphics/unused/old_charmap.bin.lz"); -const u32 gUnusedPal_OldCharmap[] = INCBIN_U32("graphics/unused/old_charmap.gbapal.lz"); +const u16 gUnusedPal_OldCharmap[] = INCBIN_U16("graphics/unused/old_charmap.gbapal"); const u32 gSmokescreenImpactTiles[] = INCBIN_U32("graphics/battle_anims/sprites/smokescreen_impact.4bpp.lz"); -const u32 gSmokescreenImpactPalette[] = INCBIN_U32("graphics/battle_anims/sprites/smokescreen_impact.gbapal.lz"); +const u16 gSmokescreenImpactPalette[] = INCBIN_U16("graphics/battle_anims/sprites/smokescreen_impact.gbapal"); #include "data/graphics/pokeballs.h" @@ -17,293 +17,293 @@ const u32 gBlankGfxCompressed[] = INCBIN_U32("graphics/interface/blank.4bpp.lz") // New Battle anims Particles const u32 gBattleAnimSpriteGfx_WhiteStreak[] = INCBIN_U32("graphics/battle_anims/sprites/white_streak.4bpp.lz"); -const u32 gBattleAnimSpritePal_WhiteStreak[] = INCBIN_U32("graphics/battle_anims/sprites/white_streak.gbapal.lz"); +const u16 gBattleAnimSpritePal_WhiteStreak[] = INCBIN_U16("graphics/battle_anims/sprites/white_streak.gbapal"); const u32 gBattleAnimSpriteGfx_PurpleJab[] = INCBIN_U32("graphics/battle_anims/sprites/purple_jab.4bpp.lz"); -const u32 gBattleAnimSpritePal_PurpleJab[] = INCBIN_U32("graphics/battle_anims/sprites/purple_jab.gbapal.lz"); +const u16 gBattleAnimSpritePal_PurpleJab[] = INCBIN_U16("graphics/battle_anims/sprites/purple_jab.gbapal"); -const u32 gBattleAnimSpritePal_ToxicSpikes[] = INCBIN_U32("graphics/battle_anims/sprites/toxic_spikes.gbapal.lz"); +const u16 gBattleAnimSpritePal_ToxicSpikes[] = INCBIN_U16("graphics/battle_anims/sprites/toxic_spikes.gbapal"); const u32 gBattleAnimSpriteGfx_EnergyBall[] = INCBIN_U32("graphics/battle_anims/sprites/energy_ball.4bpp.lz"); -const u32 gBattleAnimSpritePal_EnergyBall[] = INCBIN_U32("graphics/battle_anims/sprites/energy_ball.gbapal.lz"); +const u16 gBattleAnimSpritePal_EnergyBall[] = INCBIN_U16("graphics/battle_anims/sprites/energy_ball.gbapal"); const u32 gBattleAnimSpriteGfx_MegaStone[] = INCBIN_U32("graphics/battle_anims/sprites/mega_stone.4bpp.lz"); -const u32 gBattleAnimSpritePal_MegaStone[] = INCBIN_U32("graphics/battle_anims/sprites/mega_stone.gbapal.lz"); +const u16 gBattleAnimSpritePal_MegaStone[] = INCBIN_U16("graphics/battle_anims/sprites/mega_stone.gbapal"); const u32 gBattleAnimSpriteGfx_MegaParticles[] = INCBIN_U32("graphics/battle_anims/sprites/mega_particles.4bpp.lz"); -const u32 gBattleAnimSpritePal_MegaParticles[] = INCBIN_U32("graphics/battle_anims/sprites/mega_particles.gbapal.lz"); +const u16 gBattleAnimSpritePal_MegaParticles[] = INCBIN_U16("graphics/battle_anims/sprites/mega_particles.gbapal"); const u32 gBattleAnimSpriteGfx_MegaSymbol[] = INCBIN_U32("graphics/battle_anims/sprites/mega_symbol.4bpp.lz"); -const u32 gBattleAnimSpritePal_MegaSymbol[] = INCBIN_U32("graphics/battle_anims/sprites/mega_symbol.gbapal.lz"); +const u16 gBattleAnimSpritePal_MegaSymbol[] = INCBIN_U16("graphics/battle_anims/sprites/mega_symbol.gbapal"); const u32 gBattleAnimSpriteGfx_AlphaSymbol[] = INCBIN_U32("graphics/battle_anims/sprites/alpha_symbol.4bpp.lz"); -const u32 gBattleAnimSpritePal_AlphaSymbol[] = INCBIN_U32("graphics/battle_anims/sprites/alpha_symbol.gbapal.lz"); +const u16 gBattleAnimSpritePal_AlphaSymbol[] = INCBIN_U16("graphics/battle_anims/sprites/alpha_symbol.gbapal"); const u32 gBattleAnimSpriteGfx_OmegaSymbol[] = INCBIN_U32("graphics/battle_anims/sprites/omega_symbol.4bpp.lz"); -const u32 gBattleAnimSpritePal_OmegaSymbol[] = INCBIN_U32("graphics/battle_anims/sprites/omega_symbol.gbapal.lz"); +const u16 gBattleAnimSpritePal_OmegaSymbol[] = INCBIN_U16("graphics/battle_anims/sprites/omega_symbol.gbapal"); const u32 gBattleAnimSpriteGfx_FlashCannonBall[] = INCBIN_U32("graphics/battle_anims/sprites/flash_cannon_ball.4bpp.lz"); -const u32 gBattleAnimSpritePal_FlashCannonBall[] = INCBIN_U32("graphics/battle_anims/sprites/flash_cannon_ball.gbapal.lz"); +const u16 gBattleAnimSpritePal_FlashCannonBall[] = INCBIN_U16("graphics/battle_anims/sprites/flash_cannon_ball.gbapal"); const u32 gBattleAnimSpriteGfx_WaterGun[] = INCBIN_U32("graphics/battle_anims/sprites/water_gun.4bpp.lz"); -const u32 gBattleAnimSpritePal_WaterGun[] = INCBIN_U32("graphics/battle_anims/sprites/water_gun.gbapal.lz"); +const u16 gBattleAnimSpritePal_WaterGun[] = INCBIN_U16("graphics/battle_anims/sprites/water_gun.gbapal"); const u32 gBattleAnimSpriteGfx_Punishment[] = INCBIN_U32("graphics/battle_anims/sprites/punishment.4bpp.lz"); -const u32 gBattleAnimSpritePal_Punishment[] = INCBIN_U32("graphics/battle_anims/sprites/punishment.gbapal.lz"); +const u16 gBattleAnimSpritePal_Punishment[] = INCBIN_U16("graphics/battle_anims/sprites/punishment.gbapal"); const u32 gBattleAnimSpriteGfx_QuickGuard[] = INCBIN_U32("graphics/battle_anims/sprites/quick_guard.4bpp.lz"); -const u32 gBattleAnimSpritePal_QuickGuard[] = INCBIN_U32("graphics/battle_anims/sprites/quick_guard.gbapal.lz"); +const u16 gBattleAnimSpritePal_QuickGuard[] = INCBIN_U16("graphics/battle_anims/sprites/quick_guard.gbapal"); 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 u16 gBattleAnimSpritePal_AlphaStone[] = INCBIN_U16("graphics/battle_anims/sprites/alpha_stone.gbapal"); 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 u16 gBattleAnimSpritePal_TeraCrystal[] = INCBIN_U16("graphics/battle_anims/sprites/tera_crystal.gbapal"); 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 u16 gBattleAnimSpritePal_TeraShatter[] = INCBIN_U16("graphics/battle_anims/sprites/tera_shatter.gbapal"); 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"); -const u32 gBattleAnimSpritePal_Apple[] = INCBIN_U32("graphics/battle_anims/sprites/apple.gbapal.lz"); +const u16 gBattleAnimSpritePal_Apple[] = INCBIN_U16("graphics/battle_anims/sprites/apple.gbapal"); const u32 gBattleAnimSpriteGfx_Arrows[] = INCBIN_U32("graphics/battle_anims/sprites/arrows.4bpp.lz"); const u32 gBattleAnimSpriteGfx_AssuranceHand[] = INCBIN_U32("graphics/battle_anims/sprites/assurance_hand.4bpp.lz"); -const u32 gBattleAnimSpritePal_AssuranceHand[] = INCBIN_U32("graphics/battle_anims/sprites/assurance_hand.gbapal.lz"); +const u16 gBattleAnimSpritePal_AssuranceHand[] = INCBIN_U16("graphics/battle_anims/sprites/assurance_hand.gbapal"); const u32 gBattleAnimSpriteGfx_AuraSphere[] = INCBIN_U32("graphics/battle_anims/sprites/aura_sphere.4bpp.lz"); -const u32 gBattleAnimSpritePal_AuraSphere[] = INCBIN_U32("graphics/battle_anims/sprites/aura_sphere.gbapal.lz"); +const u16 gBattleAnimSpritePal_AuraSphere[] = INCBIN_U16("graphics/battle_anims/sprites/aura_sphere.gbapal"); -const u32 gBattleAnimSpritePal_AvalancheRocks[] = INCBIN_U32("graphics/battle_anims/sprites/avalanche_rocks.gbapal.lz"); +const u16 gBattleAnimSpritePal_AvalancheRocks[] = INCBIN_U16("graphics/battle_anims/sprites/avalanche_rocks.gbapal"); const u32 gBattleAnimSpriteGfx_NewPokeball[] = INCBIN_U32("graphics/battle_anims/sprites/baton_pass_ball.4bpp.lz"); -const u32 gBattleAnimSpritePal_NewPokeball[] = INCBIN_U32("graphics/battle_anims/sprites/baton_pass_ball.gbapal.lz"); +const u16 gBattleAnimSpritePal_NewPokeball[] = INCBIN_U16("graphics/battle_anims/sprites/baton_pass_ball.gbapal"); const u32 gBattleAnimSpriteGfx_Beam[] = INCBIN_U32("graphics/battle_anims/sprites/beam.4bpp.lz"); -const u32 gBattleAnimSpritePal_Beam[] = INCBIN_U32("graphics/battle_anims/sprites/beam.gbapal.lz"); +const u16 gBattleAnimSpritePal_Beam[] = INCBIN_U16("graphics/battle_anims/sprites/beam.gbapal"); const u32 gBattleAnimSpriteGfx_BerryEaten[] = INCBIN_U32("graphics/battle_anims/sprites/berry_eaten.4bpp.lz"); -const u32 gBattleAnimSpritePal_BerryEaten[] = INCBIN_U32("graphics/battle_anims/sprites/berry_eaten.gbapal.lz"); +const u16 gBattleAnimSpritePal_BerryEaten[] = INCBIN_U16("graphics/battle_anims/sprites/berry_eaten.gbapal"); const u32 gBattleAnimSpriteGfx_BerryNormal[] = INCBIN_U32("graphics/battle_anims/sprites/berry_normal.4bpp.lz"); -const u32 gBattleAnimSpritePal_BerryNormal[] = INCBIN_U32("graphics/battle_anims/sprites/berry_normal.gbapal.lz"); +const u16 gBattleAnimSpritePal_BerryNormal[] = INCBIN_U16("graphics/battle_anims/sprites/berry_normal.gbapal"); const u32 gBattleAnimSpriteGfx_BigRock[] = INCBIN_U32("graphics/battle_anims/sprites/big_rock.4bpp.lz"); -const u32 gBattleAnimSpritePal_BigRock[] = INCBIN_U32("graphics/battle_anims/sprites/big_rock.gbapal.lz"); +const u16 gBattleAnimSpritePal_BigRock[] = INCBIN_U16("graphics/battle_anims/sprites/big_rock.gbapal"); const u32 gBattleAnimSpriteGfx_BlacephalonHead[] = INCBIN_U32("graphics/battle_anims/sprites/blacephalon_head.4bpp.lz"); -const u32 gBattleAnimSpritePal_BlacephalonHead[] = INCBIN_U32("graphics/battle_anims/sprites/blacephalon_head.gbapal.lz"); +const u16 gBattleAnimSpritePal_BlacephalonHead[] = INCBIN_U16("graphics/battle_anims/sprites/blacephalon_head.gbapal"); const u32 gBattleAnimSpriteGfx_BloodMoon[] = INCBIN_U32("graphics/battle_anims/sprites/blood_moon.4bpp.lz"); -const u32 gBattleAnimSpritePal_BloodMoon[] = INCBIN_U32("graphics/battle_anims/sprites/blood_moon.gbapal.lz"); +const u16 gBattleAnimSpritePal_BloodMoon[] = INCBIN_U16("graphics/battle_anims/sprites/blood_moon.gbapal"); -const u32 gBattleAnimSpritePal_BlueFlare[] = INCBIN_U32("graphics/battle_anims/sprites/blue_flare.gbapal.lz"); +const u16 gBattleAnimSpritePal_BlueFlare[] = INCBIN_U16("graphics/battle_anims/sprites/blue_flare.gbapal"); const u32 gBattleAnimSpriteGfx_Branch[] = INCBIN_U32("graphics/battle_anims/sprites/branch.4bpp.lz"); -const u32 gBattleAnimSpritePal_Branch[] = INCBIN_U32("graphics/battle_anims/sprites/branch.gbapal.lz"); +const u16 gBattleAnimSpritePal_Branch[] = INCBIN_U16("graphics/battle_anims/sprites/branch.gbapal"); const u32 gBattleAnimSpriteGfx_Brine[] = INCBIN_U32("graphics/battle_anims/sprites/brine.4bpp.lz"); -const u32 gBattleAnimSpritePal_Brine[] = INCBIN_U32("graphics/battle_anims/sprites/brine.gbapal.lz"); +const u16 gBattleAnimSpritePal_Brine[] = INCBIN_U16("graphics/battle_anims/sprites/brine.gbapal"); const u32 gBattleAnimSpriteGfx_ChainLink[] = INCBIN_U32("graphics/battle_anims/sprites/chain_link.4bpp.lz"); -const u32 gBattleAnimSpritePal_ChainLink[] = INCBIN_U32("graphics/battle_anims/sprites/chain_link.gbapal.lz"); +const u16 gBattleAnimSpritePal_ChainLink[] = INCBIN_U16("graphics/battle_anims/sprites/chain_link.gbapal"); const u32 gBattleAnimSpriteGfx_Chop[] = INCBIN_U32("graphics/battle_anims/sprites/chop.4bpp.lz"); -const u32 gBattleAnimSpritePal_Chop[] = INCBIN_U32("graphics/battle_anims/sprites/chop.gbapal.lz"); +const u16 gBattleAnimSpritePal_Chop[] = INCBIN_U16("graphics/battle_anims/sprites/chop.gbapal"); const u32 gBattleAnimSpriteGfx_Cacoon[] = INCBIN_U32("graphics/battle_anims/sprites/cacoon.4bpp.lz"); -const u32 gBattleAnimSpritePal_Cacoon[] = INCBIN_U32("graphics/battle_anims/sprites/cacoon.gbapal.lz"); +const u16 gBattleAnimSpritePal_Cacoon[] = INCBIN_U16("graphics/battle_anims/sprites/cacoon.gbapal"); const u32 gBattleAnimSpriteGfx_Confide[] = INCBIN_U32("graphics/battle_anims/sprites/confide.4bpp.lz"); -const u32 gBattleAnimSpritePal_Confide[] = INCBIN_U32("graphics/battle_anims/sprites/confide.gbapal.lz"); +const u16 gBattleAnimSpritePal_Confide[] = INCBIN_U16("graphics/battle_anims/sprites/confide.gbapal"); const u32 gBattleAnimSpriteGfx_CraftyShield[] = INCBIN_U32("graphics/battle_anims/sprites/crafty_shield.4bpp.lz"); -const u32 gBattleAnimSpritePal_CraftyShield[] = INCBIN_U32("graphics/battle_anims/sprites/crafty_shield.gbapal.lz"); +const u16 gBattleAnimSpritePal_CraftyShield[] = INCBIN_U16("graphics/battle_anims/sprites/crafty_shield.gbapal"); const u32 gBattleAnimSpriteGfx_NewNail[] = INCBIN_U32("graphics/battle_anims/sprites/curse_nail.4bpp.lz"); -const u32 gBattleAnimSpritePal_NewNail[] = INCBIN_U32("graphics/battle_anims/sprites/curse_nail.gbapal.lz"); +const u16 gBattleAnimSpritePal_NewNail[] = INCBIN_U16("graphics/battle_anims/sprites/curse_nail.gbapal"); -const u32 gBattleAnimSpritePal_DracoMeteor[] = INCBIN_U32("graphics/battle_anims/sprites/draco_meteor.gbapal.lz"); +const u16 gBattleAnimSpritePal_DracoMeteor[] = INCBIN_U16("graphics/battle_anims/sprites/draco_meteor.gbapal"); const u32 gBattleAnimSpriteGfx_DragonPulseRing[] = INCBIN_U32("graphics/battle_anims/sprites/dragon_pulse_ring.4bpp.lz"); -const u32 gBattleAnimSpritePal_DragonPulseRing[] = INCBIN_U32("graphics/battle_anims/sprites/dragon_pulse_ring.gbapal.lz"); +const u16 gBattleAnimSpritePal_DragonPulseRing[] = INCBIN_U16("graphics/battle_anims/sprites/dragon_pulse_ring.gbapal"); 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 u16 gBattleAnimSpritePal_DreepyMissile[] = INCBIN_U16("graphics/battle_anims/sprites/dreepy_missile.gbapal"); 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 u16 gBattleAnimSpritePal_DreepyMissileShiny[] = INCBIN_U16("graphics/battle_anims/sprites/dreepy_missile_shiny.gbapal"); 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"); +const u16 gBattleAnimSpritePal_Drill[] = INCBIN_U16("graphics/battle_anims/sprites/drill.gbapal"); const u32 gBattleAnimSpriteGfx_NewEmbers[] = INCBIN_U32("graphics/battle_anims/sprites/embers.4bpp.lz"); -const u32 gBattleAnimSpritePal_NewEmbers[] = INCBIN_U32("graphics/battle_anims/sprites/embers.gbapal.lz"); +const u16 gBattleAnimSpritePal_NewEmbers[] = INCBIN_U16("graphics/battle_anims/sprites/embers.gbapal"); const u32 gBattleAnimSpriteGfx_FairyLockChains[] = INCBIN_U32("graphics/battle_anims/sprites/fairy_lock_chains.4bpp.lz"); const u32 gBattleAnimSpriteGfx_Fishies[] = INCBIN_U32("graphics/battle_anims/sprites/fishies.4bpp.lz"); -const u32 gBattleAnimSpritePal_Fishies[] = INCBIN_U32("graphics/battle_anims/sprites/fishies.gbapal.lz"); +const u16 gBattleAnimSpritePal_Fishies[] = INCBIN_U16("graphics/battle_anims/sprites/fishies.gbapal"); const u32 gBattleAnimSpriteGfx_NewFly[] = INCBIN_U32("graphics/battle_anims/sprites/fly.4bpp.lz"); -const u32 gBattleAnimSpritePal_NewFly[] = INCBIN_U32("graphics/battle_anims/sprites/fly.gbapal.lz"); +const u16 gBattleAnimSpritePal_NewFly[] = INCBIN_U16("graphics/battle_anims/sprites/fly.gbapal"); -const u32 gBattleAnimSpritePal_FusionFlare[] = INCBIN_U32("graphics/battle_anims/sprites/fusion_flare.gbapal.lz"); +const u16 gBattleAnimSpritePal_FusionFlare[] = INCBIN_U16("graphics/battle_anims/sprites/fusion_flare.gbapal"); -const u32 gBattleAnimSpritePal_GarbagePoisonPillar[] = INCBIN_U32("graphics/battle_anims/sprites/garbage_poison_column.gbapal.lz"); +const u16 gBattleAnimSpritePal_GarbagePoisonPillar[] = INCBIN_U16("graphics/battle_anims/sprites/garbage_poison_column.gbapal"); const u32 gBattleAnimSpriteGfx_Gear[] = INCBIN_U32("graphics/battle_anims/sprites/gear.4bpp.lz"); -const u32 gBattleAnimSpritePal_Gear[] = INCBIN_U32("graphics/battle_anims/sprites/gear.gbapal.lz"); +const u16 gBattleAnimSpritePal_Gear[] = INCBIN_U16("graphics/battle_anims/sprites/gear.gbapal"); const u32 gBattleAnimSpriteGfx_GigavoltHavocSpear[] = INCBIN_U32("graphics/battle_anims/sprites/gigavolt_havoc_spear.4bpp.lz"); -const u32 gBattleAnimSpritePal_GigavoltHavocSpear[] = INCBIN_U32("graphics/battle_anims/sprites/gigavolt_havoc_spear.gbapal.lz"); +const u16 gBattleAnimSpritePal_GigavoltHavocSpear[] = INCBIN_U16("graphics/battle_anims/sprites/gigavolt_havoc_spear.gbapal"); const u32 gBattleAnimSpriteGfx_GoldenApple[] = INCBIN_U32("graphics/battle_anims/sprites/golden_apple.4bpp.lz"); -const u32 gBattleAnimSpritePal_GoldenApple[] = INCBIN_U32("graphics/battle_anims/sprites/golden_apple.gbapal.lz"); +const u16 gBattleAnimSpritePal_GoldenApple[] = INCBIN_U16("graphics/battle_anims/sprites/golden_apple.gbapal"); -const u32 gBattleAnimSpritePal_GreenDrake[] = INCBIN_U32("graphics/battle_anims/sprites/green_drake.gbapal.lz"); +const u16 gBattleAnimSpritePal_GreenDrake[] = INCBIN_U16("graphics/battle_anims/sprites/green_drake.gbapal"); const u32 gBattleAnimSpriteGfx_NewGreenStar[] = INCBIN_U32("graphics/battle_anims/sprites/green_star_new.4bpp.lz"); -const u32 gBattleAnimSpritePal_NewGreenStar[] = INCBIN_U32("graphics/battle_anims/sprites/green_star_new.gbapal.lz"); +const u16 gBattleAnimSpritePal_NewGreenStar[] = INCBIN_U16("graphics/battle_anims/sprites/green_star_new.gbapal"); const u32 gBattleAnimSpriteGfx_HeartStamp[] = INCBIN_U32("graphics/battle_anims/sprites/heart_stamp.4bpp.lz"); -const u32 gBattleAnimSpritePal_HeartStamp[] = INCBIN_U32("graphics/battle_anims/sprites/heart_stamp.gbapal.lz"); +const u16 gBattleAnimSpritePal_HeartStamp[] = INCBIN_U16("graphics/battle_anims/sprites/heart_stamp.gbapal"); const u32 gBattleAnimSpriteGfx_ZygardeHexes[] = INCBIN_U32("graphics/battle_anims/sprites/hexes.4bpp.lz"); -const u32 gBattleAnimSpritePal_ZygardeHexes[] = INCBIN_U32("graphics/battle_anims/sprites/hexes.gbapal.lz"); +const u16 gBattleAnimSpritePal_ZygardeHexes[] = INCBIN_U16("graphics/battle_anims/sprites/hexes.gbapal"); const u32 gBattleAnimSpriteGfx_HoopaHand[] = INCBIN_U32("graphics/battle_anims/sprites/hoopa_hand.4bpp.lz"); -const u32 gBattleAnimSpritePal_HoopaHand[] = INCBIN_U32("graphics/battle_anims/sprites/hoopa_hand.gbapal.lz"); +const u16 gBattleAnimSpritePal_HoopaHand[] = INCBIN_U16("graphics/battle_anims/sprites/hoopa_hand.gbapal"); const u32 gBattleAnimSpriteGfx_HoopaRing[] = INCBIN_U32("graphics/battle_anims/sprites/hoopa_ring.4bpp.lz"); -const u32 gBattleAnimSpritePal_HoopaRing[] = INCBIN_U32("graphics/battle_anims/sprites/hoopa_ring.gbapal.lz"); +const u16 gBattleAnimSpritePal_HoopaRing[] = INCBIN_U16("graphics/battle_anims/sprites/hoopa_ring.gbapal"); const u32 gBattleAnimSpriteGfx_NewHornHit[] = INCBIN_U32("graphics/battle_anims/sprites/horn_hit_new.4bpp.lz"); -const u32 gBattleAnimSpritePal_NewHornHit[] = INCBIN_U32("graphics/battle_anims/sprites/horn_hit_new.gbapal.lz"); +const u16 gBattleAnimSpritePal_NewHornHit[] = INCBIN_U16("graphics/battle_anims/sprites/horn_hit_new.gbapal"); const u32 gBattleAnimSpriteGfx_HornLeech[] = INCBIN_U32("graphics/battle_anims/sprites/horn_leech.4bpp.lz"); -const u32 gBattleAnimSpritePal_HornLeech[] = INCBIN_U32("graphics/battle_anims/sprites/horn_leech.gbapal.lz"); +const u16 gBattleAnimSpritePal_HornLeech[] = INCBIN_U16("graphics/battle_anims/sprites/horn_leech.gbapal"); const u32 gBattleAnimSpriteGfx_HorseshoeFist[] = INCBIN_U32("graphics/battle_anims/sprites/horseshoe_fist.4bpp.lz"); -const u32 gBattleAnimSpritePal_HorseshoeFist[] = INCBIN_U32("graphics/battle_anims/sprites/horseshoe_fist.gbapal.lz"); +const u16 gBattleAnimSpritePal_HorseshoeFist[] = INCBIN_U16("graphics/battle_anims/sprites/horseshoe_fist.gbapal"); const u32 gBattleAnimSpriteGfx_HydroPump[] = INCBIN_U32("graphics/battle_anims/sprites/hydro_pump.4bpp.lz"); -const u32 gBattleAnimSpritePal_HydroPump[] = INCBIN_U32("graphics/battle_anims/sprites/hydro_pump.gbapal.lz"); +const u16 gBattleAnimSpritePal_HydroPump[] = INCBIN_U16("graphics/battle_anims/sprites/hydro_pump.gbapal"); const u32 gBattleAnimSpriteGfx_IceRock[] = INCBIN_U32("graphics/battle_anims/sprites/ice_rock.4bpp.lz"); -const u32 gBattleAnimSpritePal_IceRock[] = INCBIN_U32("graphics/battle_anims/sprites/ice_rock.gbapal.lz"); +const u16 gBattleAnimSpritePal_IceRock[] = INCBIN_U16("graphics/battle_anims/sprites/ice_rock.gbapal"); const u32 gBattleAnimSpriteGfx_LargeSpike[] = INCBIN_U32("graphics/battle_anims/sprites/large_spike.4bpp.lz"); -const u32 gBattleAnimSpritePal_LargeSpike[] = INCBIN_U32("graphics/battle_anims/sprites/large_spike.gbapal.lz"); +const u16 gBattleAnimSpritePal_LargeSpike[] = INCBIN_U16("graphics/battle_anims/sprites/large_spike.gbapal"); const u32 gBattleAnimSpriteGfx_NewLeaf[] = INCBIN_U32("graphics/battle_anims/sprites/leaves.4bpp.lz"); -const u32 gBattleAnimSpritePal_NewLeaf[] = INCBIN_U32("graphics/battle_anims/sprites/leaves.gbapal.lz"); +const u16 gBattleAnimSpritePal_NewLeaf[] = INCBIN_U16("graphics/battle_anims/sprites/leaves.gbapal"); const u32 gBattleAnimSpriteGfx_NewLeechSeed[] = INCBIN_U32("graphics/battle_anims/sprites/leech_seed.4bpp.lz"); -const u32 gBattleAnimSpritePal_NewLeechSeed[] = INCBIN_U32("graphics/battle_anims/sprites/leech_seed.gbapal.lz"); +const u16 gBattleAnimSpritePal_NewLeechSeed[] = INCBIN_U16("graphics/battle_anims/sprites/leech_seed.gbapal"); const u32 gBattleAnimSpriteGfx_LightningRain[] = INCBIN_U32("graphics/battle_anims/sprites/lightning_rain.4bpp.lz"); -const u32 gBattleAnimSpritePal_LightningRain[] = INCBIN_U32("graphics/battle_anims/sprites/lightning_rain.gbapal.lz"); +const u16 gBattleAnimSpritePal_LightningRain[] = INCBIN_U16("graphics/battle_anims/sprites/lightning_rain.gbapal"); const u32 gBattleAnimSpriteGfx_NewEye[] = INCBIN_U32("graphics/battle_anims/sprites/mean_look.4bpp.lz"); -const u32 gBattleAnimSpritePal_NewEye[] = INCBIN_U32("graphics/battle_anims/sprites/mean_look.gbapal.lz"); +const u16 gBattleAnimSpritePal_NewEye[] = INCBIN_U16("graphics/battle_anims/sprites/mean_look.gbapal"); const u32 gBattleAnimSpriteGfx_MetalBits[] = INCBIN_U32("graphics/battle_anims/sprites/metal_bits.4bpp.lz"); const u32 gBattleAnimSpriteGfx_MudBomb[] = INCBIN_U32("graphics/battle_anims/sprites/mud_bomb.4bpp.lz"); -const u32 gBattleAnimSpritePal_MudBomb[] = INCBIN_U32("graphics/battle_anims/sprites/mud_bomb.gbapal.lz"); +const u16 gBattleAnimSpritePal_MudBomb[] = INCBIN_U16("graphics/battle_anims/sprites/mud_bomb.gbapal"); const u32 gBattleAnimSpriteGfx_Mushroom[] = INCBIN_U32("graphics/battle_anims/sprites/mushroom.4bpp.lz"); -const u32 gBattleAnimSpritePal_Mushroom[] = INCBIN_U32("graphics/battle_anims/sprites/mushroom.gbapal.lz"); +const u16 gBattleAnimSpritePal_Mushroom[] = INCBIN_U16("graphics/battle_anims/sprites/mushroom.gbapal"); -const u32 gBattleAnimSpritePal_NaturalGiftRing[] = INCBIN_U32("graphics/battle_anims/sprites/natural_gift_ring.gbapal.lz"); +const u16 gBattleAnimSpritePal_NaturalGiftRing[] = INCBIN_U16("graphics/battle_anims/sprites/natural_gift_ring.gbapal"); const u32 gBattleAnimSpriteGfx_NecrozmaStar[] = INCBIN_U32("graphics/battle_anims/sprites/necrozma_star.4bpp.lz"); -const u32 gBattleAnimSpritePal_NecrozmaStar[] = INCBIN_U32("graphics/battle_anims/sprites/necrozma_star.gbapal.lz"); +const u16 gBattleAnimSpritePal_NecrozmaStar[] = INCBIN_U16("graphics/battle_anims/sprites/necrozma_star.gbapal"); -const u32 gBattleAnimSpritePal_NewImpact[] = INCBIN_U32("graphics/battle_anims/sprites/impact_new.gbapal.lz"); +const u16 gBattleAnimSpritePal_NewImpact[] = INCBIN_U16("graphics/battle_anims/sprites/impact_new.gbapal"); const u32 gBattleAnimSpriteGfx_Obstruct[] = INCBIN_U32("graphics/battle_anims/sprites/obstruct.4bpp.lz"); -const u32 gBattleAnimSpritePal_Obstruct[] = INCBIN_U32("graphics/battle_anims/sprites/obstruct.gbapal.lz"); +const u16 gBattleAnimSpritePal_Obstruct[] = INCBIN_U16("graphics/battle_anims/sprites/obstruct.gbapal"); const u32 gBattleAnimSpriteGfx_OmegaStone[] = INCBIN_U32("graphics/battle_anims/sprites/omega_stone.4bpp.lz"); -const u32 gBattleAnimSpritePal_OmegaStone[] = INCBIN_U32("graphics/battle_anims/sprites/omega_stone.gbapal.lz"); +const u16 gBattleAnimSpritePal_OmegaStone[] = INCBIN_U16("graphics/battle_anims/sprites/omega_stone.gbapal"); const u32 gBattleAnimSpriteGfx_PinkDiamond[] = INCBIN_U32("graphics/battle_anims/sprites/pink_diamond.4bpp.lz"); -const u32 gBattleAnimSpritePal_PinkDiamond[] = INCBIN_U32("graphics/battle_anims/sprites/pink_diamond.gbapal.lz"); +const u16 gBattleAnimSpritePal_PinkDiamond[] = INCBIN_U16("graphics/battle_anims/sprites/pink_diamond.gbapal"); const u32 gBattleAnimSpriteGfx_PoisonColumn[] = INCBIN_U32("graphics/battle_anims/sprites/poison_column.4bpp.lz"); -const u32 gBattleAnimSpritePal_PoisonColumn[] = INCBIN_U32("graphics/battle_anims/sprites/poison_column.gbapal.lz"); +const u16 gBattleAnimSpritePal_PoisonColumn[] = INCBIN_U16("graphics/battle_anims/sprites/poison_column.gbapal"); const u32 gBattleAnimSpriteGfx_PowerTrick[] = INCBIN_U32("graphics/battle_anims/sprites/power_trick.4bpp.lz"); -const u32 gBattleAnimSpritePal_PowerTrick[] = INCBIN_U32("graphics/battle_anims/sprites/power_trick.gbapal.lz"); +const u16 gBattleAnimSpritePal_PowerTrick[] = INCBIN_U16("graphics/battle_anims/sprites/power_trick.gbapal"); const u32 gBattleAnimSpriteGfx_PurpleChain[] = INCBIN_U32("graphics/battle_anims/sprites/purple_chain.4bpp.lz"); -const u32 gBattleAnimSpritePal_PurpleChain[] = INCBIN_U32("graphics/battle_anims/sprites/purple_chain.gbapal.lz"); +const u16 gBattleAnimSpritePal_PurpleChain[] = INCBIN_U16("graphics/battle_anims/sprites/purple_chain.gbapal"); const u32 gBattleAnimSpriteGfx_PurpleDrake[] = INCBIN_U32("graphics/battle_anims/sprites/purple_drake.4bpp.lz"); -const u32 gBattleAnimSpritePal_PurpleDrake[] = INCBIN_U32("graphics/battle_anims/sprites/purple_drake.gbapal.lz"); +const u16 gBattleAnimSpritePal_PurpleDrake[] = INCBIN_U16("graphics/battle_anims/sprites/purple_drake.gbapal"); const u32 gBattleAnimSpriteGfx_RazorShell[] = INCBIN_U32("graphics/battle_anims/sprites/razor_shell.4bpp.lz"); -const u32 gBattleAnimSpritePal_RazorShell[] = INCBIN_U32("graphics/battle_anims/sprites/razor_shell.gbapal.lz"); +const u16 gBattleAnimSpritePal_RazorShell[] = INCBIN_U16("graphics/battle_anims/sprites/razor_shell.gbapal"); const u32 gBattleAnimSpriteGfx_RedExplosion[] = INCBIN_U32("graphics/battle_anims/sprites/red_explosion.4bpp.lz"); -const u32 gBattleAnimSpritePal_RedExplosion[] = INCBIN_U32("graphics/battle_anims/sprites/red_explosion.gbapal.lz"); +const u16 gBattleAnimSpritePal_RedExplosion[] = INCBIN_U16("graphics/battle_anims/sprites/red_explosion.gbapal"); const u32 gBattleAnimSpriteGfx_RocksSmall[] = INCBIN_U32("graphics/battle_anims/sprites/rock_small.4bpp.lz"); const u32 gBattleAnimSpriteGfx_NewRocks[] = INCBIN_U32("graphics/battle_anims/sprites/rocks_new.4bpp.lz"); -const u32 gBattleAnimSpritePal_NewRocks[] = INCBIN_U32("graphics/battle_anims/sprites/rocks_new.gbapal.lz"); +const u16 gBattleAnimSpritePal_NewRocks[] = INCBIN_U16("graphics/battle_anims/sprites/rocks_new.gbapal"); const u32 gBattleAnimSpriteGfx_ShellLeft[] = INCBIN_U32("graphics/battle_anims/sprites/shell_left.4bpp.lz"); -const u32 gBattleAnimSpritePal_ShellLeft[] = INCBIN_U32("graphics/battle_anims/sprites/shell_left.gbapal.lz"); +const u16 gBattleAnimSpritePal_ShellLeft[] = INCBIN_U16("graphics/battle_anims/sprites/shell_left.gbapal"); const u32 gBattleAnimSpriteGfx_ShellRight[] = INCBIN_U32("graphics/battle_anims/sprites/shell_right.4bpp.lz"); -const u32 gBattleAnimSpritePal_SpacialRendSlices[] = INCBIN_U32("graphics/battle_anims/sprites/spacial_rend_slices.gbapal.lz"); +const u16 gBattleAnimSpritePal_SpacialRendSlices[] = INCBIN_U16("graphics/battle_anims/sprites/spacial_rend_slices.gbapal"); const u32 gBattleAnimSpriteGfx_NewSpikes[] = INCBIN_U32("graphics/battle_anims/sprites/spikes_new.4bpp.lz"); -const u32 gBattleAnimSpritePal_NewSpikes[] = INCBIN_U32("graphics/battle_anims/sprites/spikes_new.gbapal.lz"); +const u16 gBattleAnimSpritePal_NewSpikes[] = INCBIN_U16("graphics/battle_anims/sprites/spikes_new.gbapal"); const u32 gBattleAnimSpriteGfx_SpiritShackleArrow[] = INCBIN_U32("graphics/battle_anims/sprites/spirit_shackle_arrow.4bpp.lz"); -const u32 gBattleAnimSpritePal_SpiritShackleArrow[] = INCBIN_U32("graphics/battle_anims/sprites/spirit_shackle_arrow.gbapal.lz"); +const u16 gBattleAnimSpritePal_SpiritShackleArrow[] = INCBIN_U16("graphics/battle_anims/sprites/spirit_shackle_arrow.gbapal"); const u32 gBattleAnimSpriteGfx_SteamEruption[] = INCBIN_U32("graphics/battle_anims/sprites/steam_eruption.4bpp.lz"); -const u32 gBattleAnimSpritePal_SteamEruption[] = INCBIN_U32("graphics/battle_anims/sprites/steam_eruption.gbapal.lz"); +const u16 gBattleAnimSpritePal_SteamEruption[] = INCBIN_U16("graphics/battle_anims/sprites/steam_eruption.gbapal"); const u32 gBattleAnimSpriteGfx_Steamroller[] = INCBIN_U32("graphics/battle_anims/sprites/steamroller.4bpp.lz"); -const u32 gBattleAnimSpritePal_Steamroller[] = INCBIN_U32("graphics/battle_anims/sprites/steamroller.gbapal.lz"); +const u16 gBattleAnimSpritePal_Steamroller[] = INCBIN_U16("graphics/battle_anims/sprites/steamroller.gbapal"); const u32 gBattleAnimSpriteGfx_StonePillar[] = INCBIN_U32("graphics/battle_anims/sprites/stone_pillar.4bpp.lz"); -const u32 gBattleAnimSpritePal_StonePillar[] = INCBIN_U32("graphics/battle_anims/sprites/stone_pillar.gbapal.lz"); +const u16 gBattleAnimSpritePal_StonePillar[] = INCBIN_U16("graphics/battle_anims/sprites/stone_pillar.gbapal"); -const u32 gBattleAnimSpritePal_Poltergeist[] = INCBIN_U32("graphics/battle_anims/sprites/poltergeist.gbapal.lz"); +const u16 gBattleAnimSpritePal_Poltergeist[] = INCBIN_U16("graphics/battle_anims/sprites/poltergeist.gbapal"); -const u32 gBattleAnimSpritePal_SteelBeam[] = INCBIN_U32("graphics/battle_anims/sprites/steel_beam.gbapal.lz"); +const u16 gBattleAnimSpritePal_SteelBeam[] = INCBIN_U16("graphics/battle_anims/sprites/steel_beam.gbapal"); const u32 gBattleAnimSpriteGfx_StraightBeam[] = INCBIN_U32("graphics/battle_anims/sprites/straight_beam.4bpp.lz"); -const u32 gBattleAnimSpritePal_StraightBeam[] = INCBIN_U32("graphics/battle_anims/sprites/straight_beam.gbapal.lz"); +const u16 gBattleAnimSpritePal_StraightBeam[] = INCBIN_U16("graphics/battle_anims/sprites/straight_beam.gbapal"); -const u32 gBattleAnimSpritePal_NewSurf[] = INCBIN_U32("graphics/battle_anims/sprites/surf_new.gbapal.lz"); +const u16 gBattleAnimSpritePal_NewSurf[] = INCBIN_U16("graphics/battle_anims/sprites/surf_new.gbapal"); const u32 gBattleAnimSpriteGfx_NewSword[] = INCBIN_U32("graphics/battle_anims/sprites/sword_new.4bpp.lz"); -const u32 gBattleAnimSpritePal_NewSword[] = INCBIN_U32("graphics/battle_anims/sprites/sword_new.gbapal.lz"); +const u16 gBattleAnimSpritePal_NewSword[] = INCBIN_U16("graphics/battle_anims/sprites/sword_new.gbapal"); const u32 gBattleAnimSpriteGfx_NewTeeth[] = INCBIN_U32("graphics/battle_anims/sprites/teeth_new.4bpp.lz"); -const u32 gBattleAnimSpritePal_NewTeeth[] = INCBIN_U32("graphics/battle_anims/sprites/teeth_new.gbapal.lz"); +const u16 gBattleAnimSpritePal_NewTeeth[] = INCBIN_U16("graphics/battle_anims/sprites/teeth_new.gbapal"); const u32 gBattleAnimSpriteGfx_NewHandsAndFeet[] = INCBIN_U32("graphics/battle_anims/sprites/hands_and_feet_new.4bpp.lz"); -const u32 gBattleAnimSpritePal_NewHandsAndFeet[] = INCBIN_U32("graphics/battle_anims/sprites/hands_and_feet_new.gbapal.lz"); +const u16 gBattleAnimSpritePal_NewHandsAndFeet[] = INCBIN_U16("graphics/battle_anims/sprites/hands_and_feet_new.gbapal"); const u32 gBattleAnimSpriteGfx_Tornado[] = INCBIN_U32("graphics/battle_anims/sprites/tornado.4bpp.lz"); -const u32 gBattleAnimSpritePal_Tornado[] = INCBIN_U32("graphics/battle_anims/sprites/tornado.gbapal.lz"); +const u16 gBattleAnimSpritePal_Tornado[] = INCBIN_U16("graphics/battle_anims/sprites/tornado.gbapal"); const u32 gBattleAnimSpriteGfx_ZMoveSymbol[] = INCBIN_U32("graphics/battle_anims/sprites/z_move_symbol.4bpp.lz"); -const u32 gBattleAnimSpritePal_ZMoveSymbol[] = INCBIN_U32("graphics/battle_anims/sprites/z_move_symbol.gbapal.lz"); +const u16 gBattleAnimSpritePal_ZMoveSymbol[] = INCBIN_U16("graphics/battle_anims/sprites/z_move_symbol.gbapal"); const u32 gBattleAnimSpriteGfx_Teapot[] = INCBIN_U32("graphics/battle_anims/sprites/new/teapot.4bpp.lz"); -const u32 gBattleAnimSpritePal_Teapot[] = INCBIN_U32("graphics/battle_anims/sprites/new/teapot.gbapal.lz"); +const u16 gBattleAnimSpritePal_Teapot[] = INCBIN_U16("graphics/battle_anims/sprites/new/teapot.gbapal"); // Battle anims const u32 gBattleAnimSpriteGfx_Bubble[] = INCBIN_U32("graphics/battle_anims/sprites/bubble.4bpp.lz"); @@ -314,186 +314,186 @@ const u32 gBattleAnimSpriteGfx_Sword[] = INCBIN_U32("graphics/battle_anims/sprit const u32 gBattleAnimSpriteGfx_Seed[] = INCBIN_U32("graphics/battle_anims/sprites/seed.4bpp.lz"); const u32 gBattleAnimSpriteGfx_SeedBrown[] = INCBIN_U32("graphics/battle_anims/sprites/seed_new.4bpp.lz"); -const u32 gBattleAnimSpritePal_RainDrops[] = INCBIN_U32("graphics/battle_anims/sprites/rain_drops.gbapal.lz"); -const u32 gBattleAnimSpritePal_Bone[] = INCBIN_U32("graphics/battle_anims/sprites/bone.gbapal.lz"); -const u32 gBattleAnimSpritePal_AirWave[] = INCBIN_U32("graphics/battle_anims/sprites/air_wave.gbapal.lz"); -const u32 gBattleAnimSpritePal_Orb[] = INCBIN_U32("graphics/battle_anims/sprites/orb.gbapal.lz"); -const u32 gBattleAnimSpritePal_Sword[] = INCBIN_U32("graphics/battle_anims/sprites/sword.gbapal.lz"); -const u32 gBattleAnimSpritePal_Seed[] = INCBIN_U32("graphics/battle_anims/sprites/seed.gbapal.lz"); -const u32 gBattleAnimSpritePal_SeedBrown[] = INCBIN_U32("graphics/battle_anims/sprites/seed_new.gbapal.lz"); +const u16 gBattleAnimSpritePal_RainDrops[] = INCBIN_U16("graphics/battle_anims/sprites/rain_drops.gbapal"); +const u16 gBattleAnimSpritePal_Bone[] = INCBIN_U16("graphics/battle_anims/sprites/bone.gbapal"); +const u16 gBattleAnimSpritePal_AirWave[] = INCBIN_U16("graphics/battle_anims/sprites/air_wave.gbapal"); +const u16 gBattleAnimSpritePal_Orb[] = INCBIN_U16("graphics/battle_anims/sprites/orb.gbapal"); +const u16 gBattleAnimSpritePal_Sword[] = INCBIN_U16("graphics/battle_anims/sprites/sword.gbapal"); +const u16 gBattleAnimSpritePal_Seed[] = INCBIN_U16("graphics/battle_anims/sprites/seed.gbapal"); +const u16 gBattleAnimSpritePal_SeedBrown[] = INCBIN_U16("graphics/battle_anims/sprites/seed_new.gbapal"); const u32 gBattleAnimSpriteGfx_Needle[] = INCBIN_U32("graphics/battle_anims/sprites/needle.4bpp.lz"); -const u32 gBattleAnimSpritePal_Needle[] = INCBIN_U32("graphics/battle_anims/sprites/needle.gbapal.lz"); +const u16 gBattleAnimSpritePal_Needle[] = INCBIN_U16("graphics/battle_anims/sprites/needle.gbapal"); const u32 gBattleAnimSpriteGfx_Explosion6[] = INCBIN_U32("graphics/battle_anims/sprites/explosion_6.4bpp.lz"); -const u32 gBattleAnimSpritePal_Explosion6[] = INCBIN_U32("graphics/battle_anims/sprites/explosion_6.gbapal.lz"); +const u16 gBattleAnimSpritePal_Explosion6[] = INCBIN_U16("graphics/battle_anims/sprites/explosion_6.gbapal"); const u32 gBattleAnimSpriteGfx_PinkOrb[] = INCBIN_U32("graphics/battle_anims/sprites/pink_orb.4bpp.lz"); -const u32 gBattleAnimSpritePal_PinkOrb[] = INCBIN_U32("graphics/battle_anims/sprites/pink_orb.gbapal.lz"); +const u16 gBattleAnimSpritePal_PinkOrb[] = INCBIN_U16("graphics/battle_anims/sprites/pink_orb.gbapal"); -const u32 gBattleAnimSpritePal_IceCube[] = INCBIN_U32("graphics/battle_anims/sprites/ice_cube.gbapal.lz"); +const u16 gBattleAnimSpritePal_IceCube[] = INCBIN_U16("graphics/battle_anims/sprites/ice_cube.gbapal"); const u32 gBattleAnimSpriteGfx_IceCube[] = INCBIN_U32("graphics/battle_anims/sprites/ice_cube.4bpp.lz"); const u32 gBattleAnimSpriteGfx_Gust[] = INCBIN_U32("graphics/battle_anims/sprites/gust.4bpp.lz"); -const u32 gBattleAnimSpritePal_Gust[] = INCBIN_U32("graphics/battle_anims/sprites/gust.gbapal.lz"); +const u16 gBattleAnimSpritePal_Gust[] = INCBIN_U16("graphics/battle_anims/sprites/gust.gbapal"); const u32 gBattleAnimSpriteGfx_Spark2[] = INCBIN_U32("graphics/battle_anims/sprites/spark_2.4bpp.lz"); -const u32 gBattleAnimSpritePal_Spark2[] = INCBIN_U32("graphics/battle_anims/sprites/spark_2.gbapal.lz"); +const u16 gBattleAnimSpritePal_Spark2[] = INCBIN_U16("graphics/battle_anims/sprites/spark_2.gbapal"); const u32 gBattleAnimSpriteGfx_Orange[] = INCBIN_U32("graphics/battle_anims/sprites/orange.4bpp.lz"); -const u32 gBattleAnimSpritePal_Orange[] = INCBIN_U32("graphics/battle_anims/sprites/orange.gbapal.lz"); +const u16 gBattleAnimSpritePal_Orange[] = INCBIN_U16("graphics/battle_anims/sprites/orange.gbapal"); const u32 gBattleAnimSpriteGfx_Spikes[] = INCBIN_U32("graphics/battle_anims/sprites/spikes.4bpp.lz"); -const u32 gBattleAnimSpritePal_Spikes[] = INCBIN_U32("graphics/battle_anims/sprites/spikes.gbapal.lz"); +const u16 gBattleAnimSpritePal_Spikes[] = INCBIN_U16("graphics/battle_anims/sprites/spikes.gbapal"); const u32 gBattleAnimSpriteGfx_YellowBall[] = INCBIN_U32("graphics/battle_anims/sprites/yellow_ball.4bpp.lz"); -const u32 gBattleAnimSpritePal_YellowBall[] = INCBIN_U32("graphics/battle_anims/sprites/yellow_ball.gbapal.lz"); +const u16 gBattleAnimSpritePal_YellowBall[] = INCBIN_U16("graphics/battle_anims/sprites/yellow_ball.gbapal"); const u32 gBattleAnimSpriteGfx_TiedBag[] = INCBIN_U32("graphics/battle_anims/sprites/tied_bag.4bpp.lz"); -const u32 gBattleAnimSpritePal_TiedBag[] = INCBIN_U32("graphics/battle_anims/sprites/tied_bag.gbapal.lz"); +const u16 gBattleAnimSpritePal_TiedBag[] = INCBIN_U16("graphics/battle_anims/sprites/tied_bag.gbapal"); const u32 gBattleAnimSpriteGfx_BlackSmoke[] = INCBIN_U32("graphics/battle_anims/sprites/black_smoke.4bpp.lz"); -const u32 gBattleAnimSpritePal_BlackSmoke[] = INCBIN_U32("graphics/battle_anims/sprites/black_smoke.gbapal.lz"); +const u16 gBattleAnimSpritePal_BlackSmoke[] = INCBIN_U16("graphics/battle_anims/sprites/black_smoke.gbapal"); const u32 gBattleAnimSpriteGfx_BlackBall[] = INCBIN_U32("graphics/battle_anims/sprites/black_ball.4bpp.lz"); -const u32 gBattleAnimSpritePal_BlackBall[] = INCBIN_U32("graphics/battle_anims/sprites/black_ball.gbapal.lz"); +const u16 gBattleAnimSpritePal_BlackBall[] = INCBIN_U16("graphics/battle_anims/sprites/black_ball.gbapal"); -const u32 gBattleAnimSpritePal_Glass[] = INCBIN_U32("graphics/battle_anims/sprites/glass.gbapal.lz"); +const u16 gBattleAnimSpritePal_Glass[] = INCBIN_U16("graphics/battle_anims/sprites/glass.gbapal"); const u32 gBattleAnimSpriteGfx_Glass[] = INCBIN_U32("graphics/battle_anims/sprites/glass.4bpp.lz"); const u32 gBattleAnimSpriteGfx_HornHit[] = INCBIN_U32("graphics/battle_anims/sprites/horn_hit.4bpp.lz"); -const u32 gBattleAnimSpritePal_HornHit[] = INCBIN_U32("graphics/battle_anims/sprites/horn_hit.gbapal.lz"); +const u16 gBattleAnimSpritePal_HornHit[] = INCBIN_U16("graphics/battle_anims/sprites/horn_hit.gbapal"); -const u32 gBattleAnimSpritePal_BlueShards[] = INCBIN_U32("graphics/battle_anims/sprites/blue_shards.gbapal.lz"); +const u16 gBattleAnimSpritePal_BlueShards[] = INCBIN_U16("graphics/battle_anims/sprites/blue_shards.gbapal"); const u32 gBattleAnimSpriteGfx_BlueShards[] = INCBIN_U32("graphics/battle_anims/sprites/blue_shards.4bpp.lz"); -const u32 gBattleAnimUnusedPal_MusicNotes[] = INCBIN_U32("graphics/battle_anims/unused/music_notes.gbapal.lz"); +const u16 gBattleAnimUnusedPal_MusicNotes[] = INCBIN_U16("graphics/battle_anims/unused/music_notes.gbapal"); const u32 gBattleAnimUnusedGfx_MusicNotes[] = INCBIN_U32("graphics/battle_anims/unused/music_notes.4bpp.lz"); -const u32 gBattleAnimSpritePal_Hit[] = INCBIN_U32("graphics/battle_anims/sprites/hit.gbapal.lz"); +const u16 gBattleAnimSpritePal_Hit[] = INCBIN_U16("graphics/battle_anims/sprites/hit.gbapal"); const u32 gBattleAnimSpriteGfx_Hit[] = INCBIN_U32("graphics/battle_anims/sprites/hit.4bpp.lz"); -const u32 gBattleAnimSpritePal_Hit2[] = INCBIN_U32("graphics/battle_anims/sprites/hit_2.gbapal.lz"); +const u16 gBattleAnimSpritePal_Hit2[] = INCBIN_U16("graphics/battle_anims/sprites/hit_2.gbapal"); -const u32 gBattleAnimSpritePal_WavingHand[] = INCBIN_U32("graphics/battle_anims/sprites/waving_hand.gbapal.lz"); +const u16 gBattleAnimSpritePal_WavingHand[] = INCBIN_U16("graphics/battle_anims/sprites/waving_hand.gbapal"); const u32 gBattleAnimSpriteGfx_WavingHand[] = INCBIN_U32("graphics/battle_anims/sprites/waving_hand.4bpp.lz"); const u32 gBattleAnimSpriteGfx_Feint[] = INCBIN_U32("graphics/battle_anims/sprites/feint_punch.4bpp.lz"); -const u32 gBattleAnimSpritePal_Feint[] = INCBIN_U32("graphics/battle_anims/sprites/feint_punch.gbapal.lz"); +const u16 gBattleAnimSpritePal_Feint[] = INCBIN_U16("graphics/battle_anims/sprites/feint_punch.gbapal"); const u32 gBattleAnimSpriteGfx_TrumpCard[] = INCBIN_U32("graphics/battle_anims/sprites/trump_cards.4bpp.lz"); -const u32 gBattleAnimSpritePal_TrumpCard[] = INCBIN_U32("graphics/battle_anims/sprites/trump_cards.gbapal.lz"); +const u16 gBattleAnimSpritePal_TrumpCard[] = INCBIN_U16("graphics/battle_anims/sprites/trump_cards.gbapal"); const u32 gBattleAnimSpriteGfx_TrumpCardParticles[] = INCBIN_U32("graphics/battle_anims/sprites/trump_card_particles.4bpp.lz"); -const u32 gBattleAnimSpritePal_TrumpCardParticles[] = INCBIN_U32("graphics/battle_anims/sprites/trump_card_particles.gbapal.lz"); +const u16 gBattleAnimSpritePal_TrumpCardParticles[] = INCBIN_U16("graphics/battle_anims/sprites/trump_card_particles.gbapal"); const u32 gBattleAnimSpriteGfx_Acupressure[] = INCBIN_U32("graphics/battle_anims/sprites/acupressure.4bpp.lz"); -const u32 gBattleAnimSpritePal_Acupressure[] = INCBIN_U32("graphics/battle_anims/sprites/acupressure.gbapal.lz"); +const u16 gBattleAnimSpritePal_Acupressure[] = INCBIN_U16("graphics/battle_anims/sprites/acupressure.gbapal"); const u32 gBattleAnimSpriteGfx_WringOut[] = INCBIN_U32("graphics/battle_anims/sprites/wring_out.4bpp.lz"); -const u32 gBattleAnimSpritePal_WringOut[] = INCBIN_U32("graphics/battle_anims/sprites/wring_out.gbapal.lz"); +const u16 gBattleAnimSpritePal_WringOut[] = INCBIN_U16("graphics/battle_anims/sprites/wring_out.gbapal"); const u32 gBattleAnimSpriteGfx_ClosingEye[] = INCBIN_U32("graphics/battle_anims/sprites/closing_eye.4bpp.lz"); -const u32 gBattleAnimSpritePal_ClosingEye[] = INCBIN_U32("graphics/battle_anims/sprites/closing_eye.gbapal.lz"); +const u16 gBattleAnimSpritePal_ClosingEye[] = INCBIN_U16("graphics/battle_anims/sprites/closing_eye.gbapal"); const u32 gBattleAnimSpriteGfx_BlueStar[] = INCBIN_U32("graphics/battle_anims/sprites/blue_star.4bpp.lz"); -const u32 gBattleAnimSpritePal_BlueStar[] = INCBIN_U32("graphics/battle_anims/sprites/blue_star.gbapal.lz"); +const u16 gBattleAnimSpritePal_BlueStar[] = INCBIN_U16("graphics/battle_anims/sprites/blue_star.gbapal"); -const u32 gBattleAnimSpritePal_BubbleBurst[] = INCBIN_U32("graphics/battle_anims/sprites/bubble_burst.gbapal.lz"); +const u16 gBattleAnimSpritePal_BubbleBurst[] = INCBIN_U16("graphics/battle_anims/sprites/bubble_burst.gbapal"); const u32 gBattleAnimSpriteGfx_BubbleBurst[] = INCBIN_U32("graphics/battle_anims/sprites/bubble_burst.4bpp.lz"); const u32 gBattleAnimSpriteGfx_HitDuplicate[] = INCBIN_U32("graphics/battle_anims/sprites/hit_duplicate.4bpp.lz"); -const u32 gBattleAnimSpritePal_HitDuplicate[] = INCBIN_U32("graphics/battle_anims/sprites/hit_duplicate.gbapal.lz"); +const u16 gBattleAnimSpritePal_HitDuplicate[] = INCBIN_U16("graphics/battle_anims/sprites/hit_duplicate.gbapal"); -const u32 gBattleAnimSpritePal_Leer[] = INCBIN_U32("graphics/battle_anims/sprites/leer.gbapal.lz"); +const u16 gBattleAnimSpritePal_Leer[] = INCBIN_U16("graphics/battle_anims/sprites/leer.gbapal"); const u32 gBattleAnimSpriteGfx_Leer[] = INCBIN_U32("graphics/battle_anims/sprites/leer.4bpp.lz"); -const u32 gBattleAnimSpritePal_BlueBurst[] = INCBIN_U32("graphics/battle_anims/sprites/blue_burst.gbapal.lz"); +const u16 gBattleAnimSpritePal_BlueBurst[] = INCBIN_U16("graphics/battle_anims/sprites/blue_burst.gbapal"); const u32 gBattleAnimSpriteGfx_BlueBurst[] = INCBIN_U32("graphics/battle_anims/sprites/blue_burst.4bpp.lz"); const u32 gBattleAnimSpriteGfx_SmallEmber[] = INCBIN_U32("graphics/battle_anims/sprites/small_ember.4bpp.lz"); -const u32 gBattleAnimSpritePal_SmallEmber[] = INCBIN_U32("graphics/battle_anims/sprites/small_ember.gbapal.lz"); +const u16 gBattleAnimSpritePal_SmallEmber[] = INCBIN_U16("graphics/battle_anims/sprites/small_ember.gbapal"); const u32 gBattleAnimSpriteGfx_GraySmoke[] = INCBIN_U32("graphics/battle_anims/sprites/gray_smoke.4bpp.lz"); -const u32 gBattleAnimSpritePal_GraySmoke[] = INCBIN_U32("graphics/battle_anims/sprites/gray_smoke.gbapal.lz"); +const u16 gBattleAnimSpritePal_GraySmoke[] = INCBIN_U16("graphics/battle_anims/sprites/gray_smoke.gbapal"); -const u32 gBattleAnimSpritePal_Fire[] = INCBIN_U32("graphics/battle_anims/sprites/fire.gbapal.lz"); +const u16 gBattleAnimSpritePal_Fire[] = INCBIN_U16("graphics/battle_anims/sprites/fire.gbapal"); const u32 gBattleAnimSpriteGfx_Fire[] = INCBIN_U32("graphics/battle_anims/sprites/fire.4bpp.lz"); const u32 gBattleAnimSpriteGfx_SpinningFire[] = INCBIN_U32("graphics/battle_anims/sprites/spinning_fire.4bpp.lz"); const u32 gBattleAnimSpriteGfx_FirePlume[] = INCBIN_U32("graphics/battle_anims/sprites/fire_plume.4bpp.lz"); -const u32 gBattleAnimSpritePal_Lightning2[] = INCBIN_U32("graphics/battle_anims/sprites/lightning_2.gbapal.lz"); +const u16 gBattleAnimSpritePal_Lightning2[] = INCBIN_U16("graphics/battle_anims/sprites/lightning_2.gbapal"); const u32 gBattleAnimSpriteGfx_Lightning2[] = INCBIN_U32("graphics/battle_anims/sprites/lightning_2.4bpp.lz"); const u32 gBattleAnimSpriteGfx_Lightning[] = INCBIN_U32("graphics/battle_anims/sprites/lightning.4bpp.lz"); const u32 gBattleAnimSpriteGfx_ColoredOrbs[] = INCBIN_U32("graphics/battle_anims/sprites/colored_orbs.4bpp.lz"); -const u32 gBattleAnimSpritePal_ColoredOrbs[] = INCBIN_U32("graphics/battle_anims/sprites/colored_orbs.gbapal.lz"); +const u16 gBattleAnimSpritePal_ColoredOrbs[] = INCBIN_U16("graphics/battle_anims/sprites/colored_orbs.gbapal"); const u32 gBattleAnimSpriteGfx_WorrySeed[] = INCBIN_U32("graphics/battle_anims/sprites/worry_seed.4bpp.lz"); -const u32 gBattleAnimSpritePal_WorrySeed[] = INCBIN_U32("graphics/battle_anims/sprites/worry_seed.gbapal.lz"); +const u16 gBattleAnimSpritePal_WorrySeed[] = INCBIN_U16("graphics/battle_anims/sprites/worry_seed.gbapal"); const u32 gBattleAnimSpriteGfx_SmallCloud[] = INCBIN_U32("graphics/battle_anims/sprites/small_cloud.4bpp.lz"); -const u32 gBattleAnimSpritePal_SmallCloud[] = INCBIN_U32("graphics/battle_anims/sprites/small_cloud.gbapal.lz"); +const u16 gBattleAnimSpritePal_SmallCloud[] = INCBIN_U16("graphics/battle_anims/sprites/small_cloud.gbapal"); const u32 gBattleAnimSpriteGfx_AttackOrder[] = INCBIN_U32("graphics/battle_anims/sprites/attack_order.4bpp.lz"); -const u32 gBattleAnimSpritePal_AttackOrder[] = INCBIN_U32("graphics/battle_anims/sprites/attack_order.gbapal.lz"); +const u16 gBattleAnimSpritePal_AttackOrder[] = INCBIN_U16("graphics/battle_anims/sprites/attack_order.gbapal"); const u32 gBattleAnimSpriteGfx_DragonPulse[] = INCBIN_U32("graphics/battle_anims/sprites/dragon_pulse.4bpp.lz"); -const u32 gBattleAnimSpritePal_DragonPulse[] = INCBIN_U32("graphics/battle_anims/sprites/dragon_pulse.gbapal.lz"); +const u16 gBattleAnimSpritePal_DragonPulse[] = INCBIN_U16("graphics/battle_anims/sprites/dragon_pulse.gbapal"); const u32 gBattleAnimSpriteGfx_WoodHammer[] = INCBIN_U32("graphics/battle_anims/sprites/wood_hammer.4bpp.lz"); -const u32 gBattleAnimSpritePal_WoodHammer[] = INCBIN_U32("graphics/battle_anims/sprites/wood_hammer.gbapal.lz"); +const u16 gBattleAnimSpritePal_WoodHammer[] = INCBIN_U16("graphics/battle_anims/sprites/wood_hammer.gbapal"); const u32 gBattleAnimSpriteGfx_PsychoCut[] = INCBIN_U32("graphics/battle_anims/sprites/psycho_cut.4bpp.lz"); -const u32 gBattleAnimSpritePal_PsychoCut[] = INCBIN_U32("graphics/battle_anims/sprites/psycho_cut.gbapal.lz"); +const u16 gBattleAnimSpritePal_PsychoCut[] = INCBIN_U16("graphics/battle_anims/sprites/psycho_cut.gbapal"); const u32 gBattleAnimSpriteGfx_PowerGem[] = INCBIN_U32("graphics/battle_anims/sprites/power_gem.4bpp.lz"); -const u32 gBattleAnimSpritePal_PowerGem[] = INCBIN_U32("graphics/battle_anims/sprites/power_gem.gbapal.lz"); +const u16 gBattleAnimSpritePal_PowerGem[] = INCBIN_U16("graphics/battle_anims/sprites/power_gem.gbapal"); const u32 gBattleAnimSpriteGfx_StoneEdge[] = INCBIN_U32("graphics/battle_anims/sprites/stone_edge.4bpp.lz"); -const u32 gBattleAnimSpritePal_StoneEdge[] = INCBIN_U32("graphics/battle_anims/sprites/stone_edge.gbapal.lz"); +const u16 gBattleAnimSpritePal_StoneEdge[] = INCBIN_U16("graphics/battle_anims/sprites/stone_edge.gbapal"); const u32 gBattleAnimSpriteGfx_StealthRock[] = INCBIN_U32("graphics/battle_anims/sprites/stealth_rock.4bpp.lz"); -const u32 gBattleAnimSpritePal_StealthRock[] = INCBIN_U32("graphics/battle_anims/sprites/stealth_rock.gbapal.lz"); +const u16 gBattleAnimSpritePal_StealthRock[] = INCBIN_U16("graphics/battle_anims/sprites/stealth_rock.gbapal"); const u32 gBattleAnimSpriteGfx_PoisonJab[] = INCBIN_U32("graphics/battle_anims/sprites/poison_jab.4bpp.lz"); -const u32 gBattleAnimSpritePal_PoisonJab[] = INCBIN_U32("graphics/battle_anims/sprites/poison_jab.gbapal.lz"); +const u16 gBattleAnimSpritePal_PoisonJab[] = INCBIN_U16("graphics/battle_anims/sprites/poison_jab.gbapal"); const u32 gBattleAnimSpriteGfx_SpinningBall[] = INCBIN_U32("graphics/battle_anims/unused/spinning_ball.4bpp.lz"); -const u32 gBattleAnimSpritePal_SpinningBall[] = INCBIN_U32("graphics/battle_anims/unused/spinning_ball.gbapal.lz"); -const u32 gBattleAnimSpritePal_SpinningBall2[] = INCBIN_U32("graphics/battle_anims/unused/spinning_ball_2.gbapal.lz"); +const u16 gBattleAnimSpritePal_SpinningBall[] = INCBIN_U16("graphics/battle_anims/unused/spinning_ball.gbapal"); +const u16 gBattleAnimSpritePal_SpinningBall2[] = INCBIN_U16("graphics/battle_anims/unused/spinning_ball_2.gbapal"); const u32 gBattleAnimSpriteGfx_WoodHammerHammer[] = INCBIN_U32("graphics/battle_anims/sprites/wood_hammer_hammer.4bpp.lz"); -const u32 gBattleAnimSpritePal_WoodHammerHammer[] = INCBIN_U32("graphics/battle_anims/sprites/wood_hammer_hammer.gbapal.lz"); +const u16 gBattleAnimSpritePal_WoodHammerHammer[] = INCBIN_U16("graphics/battle_anims/sprites/wood_hammer_hammer.gbapal"); const u32 gBattleAnimSpriteGfx_Snowflakes[] = INCBIN_U32("graphics/battle_anims/sprites/snowflakes.4bpp.lz"); -const u32 gBattleAnimSpritePal_Snowflakes[] = INCBIN_U32("graphics/battle_anims/sprites/snowflakes.gbapal.lz"); +const u16 gBattleAnimSpritePal_Snowflakes[] = INCBIN_U16("graphics/battle_anims/sprites/snowflakes.gbapal"); const u32 gBattleAnimSpriteGfx_SyrupBlob[] = INCBIN_U32("graphics/battle_anims/sprites/syrup_bomb_blob.4bpp.lz"); const u32 gBattleAnimSpriteGfx_SyrupShell[] = INCBIN_U32("graphics/battle_anims/sprites/syrup_bomb_shell.4bpp.lz"); const u32 gBattleAnimSpriteGfx_SyrupSplat[] = INCBIN_U32("graphics/battle_anims/sprites/syrup_bomb_splat.4bpp.lz"); -const u32 gBattleAnimSpritePal_SyrupRed[] = INCBIN_U32("graphics/battle_anims/sprites/syrup_red.gbapal.lz"); -const u32 gBattleAnimSpritePal_SyrupYellow[] = INCBIN_U32("graphics/battle_anims/sprites/syrup_yellow.gbapal.lz"); +const u16 gBattleAnimSpritePal_SyrupRed[] = INCBIN_U16("graphics/battle_anims/sprites/syrup_red.gbapal"); +const u16 gBattleAnimSpritePal_SyrupYellow[] = INCBIN_U16("graphics/battle_anims/sprites/syrup_yellow.gbapal"); const u32 gBattleAnimSpriteGfx_IvyCudgel[] = INCBIN_U32("graphics/battle_anims/sprites/cudgel.4bpp.lz"); -const u32 gBattleAnimSpritePal_IvyCudgelGrass[] = INCBIN_U32("graphics/pokemon/ogerpon/normal.gbapal.lz"); -const u32 gBattleAnimSpritePal_IvyCudgelFire[] = INCBIN_U32("graphics/pokemon/ogerpon/hearthflame/normal.gbapal.lz"); -const u32 gBattleAnimSpritePal_IvyCudgelRock[] = INCBIN_U32("graphics/pokemon/ogerpon/cornerstone/normal.gbapal.lz"); -const u32 gBattleAnimSpritePal_IvyCudgelWater[] = INCBIN_U32("graphics/pokemon/ogerpon/wellspring/normal.gbapal.lz"); +const u16 gBattleAnimSpritePal_IvyCudgelGrass[] = INCBIN_U16("graphics/pokemon/ogerpon/normal.gbapal"); +const u16 gBattleAnimSpritePal_IvyCudgelFire[] = INCBIN_U16("graphics/pokemon/ogerpon/hearthflame/normal.gbapal"); +const u16 gBattleAnimSpritePal_IvyCudgelRock[] = INCBIN_U16("graphics/pokemon/ogerpon/cornerstone/normal.gbapal"); +const u16 gBattleAnimSpritePal_IvyCudgelWater[] = INCBIN_U16("graphics/pokemon/ogerpon/wellspring/normal.gbapal"); // old battle interface data, unused const u32 gOldBattleInterfaceGfx[] = INCBIN_U32("graphics/unused/obi1.4bpp.lz"); -const u32 gOldBattleInterfacePal_1_2_3[] = INCBIN_U32("graphics/unused/obi_palpak1.gbapal.lz"); // palettes 1-3 -const u32 gOldBattleInterfacePal4[] = INCBIN_U32("graphics/unused/old_pal4.gbapal.lz"); // 4 is by itself -const u32 gOldBattleInterfacePal_5_6_7[] = INCBIN_U32("graphics/unused/obi_palpak3.gbapal.lz"); // palettes 5-7 +const u16 gOldBattleInterfacePal_1_2_3[] = INCBIN_U16("graphics/unused/obi_palpak1.gbapal"); // palettes 1-3 +const u16 gOldBattleInterfacePal4[] = INCBIN_U16("graphics/unused/old_pal4.gbapal"); // 4 is by itself +const u16 gOldBattleInterfacePal_5_6_7[] = INCBIN_U16("graphics/unused/obi_palpak3.gbapal"); // palettes 5-7 const u32 gOldBattleInterfaceGfx2[] = INCBIN_U32("graphics/unused/obi2.4bpp.lz"); const u32 gOldBattleInterfaceTilemap[] = INCBIN_U32("graphics/unused/old_battle_interface_tilemap.bin.lz"); -const u32 gBattleAnimSpritePal_ClawSlash2[] = INCBIN_U32("graphics/battle_anims/sprites/claw_slash_2.gbapal.lz"); -const u32 gBattleAnimSpritePal_ClawSlash[] = INCBIN_U32("graphics/battle_anims/sprites/claw_slash.gbapal.lz"); +const u16 gBattleAnimSpritePal_ClawSlash2[] = INCBIN_U16("graphics/battle_anims/sprites/claw_slash_2.gbapal"); +const u16 gBattleAnimSpritePal_ClawSlash[] = INCBIN_U16("graphics/battle_anims/sprites/claw_slash.gbapal"); const u32 gBattleAnimSpriteGfx_ClawSlash2[] = INCBIN_U32("graphics/battle_anims/sprites/claw_slash_2.4bpp.lz"); const u32 gBattleAnimSpriteGfx_ClawSlash[] = INCBIN_U32("graphics/battle_anims/sprites/claw_slash.4bpp.lz"); @@ -504,137 +504,137 @@ const u32 gUnusedHpBar_Gfx[] = INCBIN_U32("graphics/battle_interface/hpbar_unuse const u32 gBattleAnimSpriteGfx_BubbleBurst2[] = INCBIN_U32("graphics/battle_anims/sprites/bubble_burst_2.4bpp.lz"); -const u32 gBattleAnimSpritePal_BubbleBurst2[] = INCBIN_U32("graphics/battle_anims/sprites/bubble_burst_2.gbapal.lz"); +const u16 gBattleAnimSpritePal_BubbleBurst2[] = INCBIN_U16("graphics/battle_anims/sprites/bubble_burst_2.gbapal"); const u32 gBattleAnimSpriteGfx_IceChunk[] = INCBIN_U32("graphics/battle_anims/sprites/ice_chunk.4bpp.lz"); -const u32 gBattleAnimSpritePal_IceChunk[] = INCBIN_U32("graphics/battle_anims/sprites/ice_chunk.gbapal.lz"); +const u16 gBattleAnimSpritePal_IceChunk[] = INCBIN_U16("graphics/battle_anims/sprites/ice_chunk.gbapal"); -const u32 gBattleAnimSpritePal_Glass2[] = INCBIN_U32("graphics/battle_anims/sprites/glass_2.gbapal.lz"); +const u16 gBattleAnimSpritePal_Glass2[] = INCBIN_U16("graphics/battle_anims/sprites/glass_2.gbapal"); const u32 gBattleAnimSpriteGfx_Glass2[] = INCBIN_U32("graphics/battle_anims/sprites/glass_2.4bpp.lz"); -const u32 gBattleAnimSpritePal_PinkHeart2[] = INCBIN_U32("graphics/battle_anims/sprites/pink_heart_2.gbapal.lz"); +const u16 gBattleAnimSpritePal_PinkHeart2[] = INCBIN_U16("graphics/battle_anims/sprites/pink_heart_2.gbapal"); const u32 gBattleAnimSpriteGfx_PinkHeart2[] = INCBIN_U32("graphics/battle_anims/sprites/pink_heart_2.4bpp.lz"); const u32 gBattleInterfaceGfx_UnusedWindow1[] = INCBIN_U32("graphics/battle_interface/unused_window.4bpp.lz"); -const u32 gBattleInterfacePal_UnusedWindow1[] = INCBIN_U32("graphics/battle_interface/unused_window.gbapal.lz"); +const u16 gBattleInterfacePal_UnusedWindow1[] = INCBIN_U16("graphics/battle_interface/unused_window.gbapal"); const u32 gBattleInterfaceGfx_BattleBar[] = INCBIN_U32("graphics/battle_interface/battle_bar.4bpp.lz"); const u32 gBattleAnimSpriteGfx_SapDrip[] = INCBIN_U32("graphics/battle_anims/sprites/sap_drip.4bpp.lz"); -const u32 gBattleAnimSpritePal_SapDrip[] = INCBIN_U32("graphics/battle_anims/sprites/sap_drip.gbapal.lz"); +const u16 gBattleAnimSpritePal_SapDrip[] = INCBIN_U16("graphics/battle_anims/sprites/sap_drip.gbapal"); -const u32 gBattleAnimSpritePal_SapDrip2[] = INCBIN_U32("graphics/battle_anims/sprites/sap_drip_2.gbapal.lz"); +const u16 gBattleAnimSpritePal_SapDrip2[] = INCBIN_U16("graphics/battle_anims/sprites/sap_drip_2.gbapal"); const u32 gBattleInterfaceGfx_UnusedWindow2[] = INCBIN_U32("graphics/battle_interface/unused_window2.4bpp.lz"); const u32 gBattleInterfaceGfx_UnusedWindow2Bar[] = INCBIN_U32("graphics/battle_interface/unused_window2bar.4bpp.lz"); const u32 gBattleAnimSpriteGfx_Sparkle1[] = INCBIN_U32("graphics/battle_anims/sprites/sparkle_1.4bpp.lz"); -const u32 gBattleAnimSpritePal_Sparkle1[] = INCBIN_U32("graphics/battle_anims/sprites/sparkle_1.gbapal.lz"); +const u16 gBattleAnimSpritePal_Sparkle1[] = INCBIN_U16("graphics/battle_anims/sprites/sparkle_1.gbapal"); -const u32 gBattleAnimSpritePal_Sparkle2[] = INCBIN_U32("graphics/battle_anims/sprites/sparkle_2.gbapal.lz"); -const u32 gBattleAnimSpritePal_HumanoidFoot[] = INCBIN_U32("graphics/battle_anims/sprites/humanoid_foot.gbapal.lz"); +const u16 gBattleAnimSpritePal_Sparkle2[] = INCBIN_U16("graphics/battle_anims/sprites/sparkle_2.gbapal"); +const u16 gBattleAnimSpritePal_HumanoidFoot[] = INCBIN_U16("graphics/battle_anims/sprites/humanoid_foot.gbapal"); const u32 gBattleAnimSpriteGfx_HumanoidFoot[] = INCBIN_U32("graphics/battle_anims/sprites/humanoid_foot.4bpp.lz"); const u32 gBattleAnimSpriteGfx_MonsterFoot[] = INCBIN_U32("graphics/battle_anims/sprites/monster_foot.4bpp.lz"); const u32 gBattleAnimSpriteGfx_HumanoidHand[] = INCBIN_U32("graphics/battle_anims/sprites/humanoid_hand.4bpp.lz"); const u32 gBattleAnimSpriteGfx_LineSketch[] = INCBIN_U32("graphics/battle_anims/unused/line_sketch.4bpp.lz"); -const u32 gBattleAnimSpritePal_LineSketch[] = INCBIN_U32("graphics/battle_anims/unused/line_sketch.gbapal.lz"); +const u16 gBattleAnimSpritePal_LineSketch[] = INCBIN_U16("graphics/battle_anims/unused/line_sketch.gbapal"); const u32 gBattleAnimSpriteGfx_YellowUnk[] = INCBIN_U32("graphics/battle_anims/sprites/yellow_unk.4bpp.lz"); -const u32 gBattleAnimSpritePal_YellowUnk[] = INCBIN_U32("graphics/battle_anims/sprites/yellow_unk.gbapal.lz"); +const u16 gBattleAnimSpritePal_YellowUnk[] = INCBIN_U16("graphics/battle_anims/sprites/yellow_unk.gbapal"); const u32 gBattleAnimSpriteGfx_SlamHit[] = INCBIN_U32("graphics/battle_anims/sprites/slam_hit.4bpp.lz"); -const u32 gBattleAnimSpritePal_SlamHit[] = INCBIN_U32("graphics/battle_anims/sprites/slam_hit.gbapal.lz"); +const u16 gBattleAnimSpritePal_SlamHit[] = INCBIN_U16("graphics/battle_anims/sprites/slam_hit.gbapal"); const u32 gBattleAnimSpriteGfx_RedFist[] = INCBIN_U32("graphics/battle_anims/sprites/red_fist.4bpp.lz"); const u32 gBattleAnimSpriteGfx_Ring[] = INCBIN_U32("graphics/battle_anims/sprites/ring.4bpp.lz"); -const u32 gBattleAnimSpritePal_Ring[] = INCBIN_U32("graphics/battle_anims/sprites/ring.gbapal.lz"); +const u16 gBattleAnimSpritePal_Ring[] = INCBIN_U16("graphics/battle_anims/sprites/ring.gbapal"); const u32 gBattleAnimSpriteGfx_Rocks[] = INCBIN_U32("graphics/battle_anims/sprites/rocks.4bpp.lz"); -const u32 gBattleAnimSpritePal_Rocks[] = INCBIN_U32("graphics/battle_anims/sprites/rocks.gbapal.lz"); +const u16 gBattleAnimSpritePal_Rocks[] = INCBIN_U16("graphics/battle_anims/sprites/rocks.gbapal"); const u32 gBattleAnimSpriteGfx_Z[] = INCBIN_U32("graphics/battle_anims/sprites/z.4bpp.lz"); -const u32 gBattleAnimSpritePal_Z[] = INCBIN_U32("graphics/battle_anims/sprites/z.gbapal.lz"); +const u16 gBattleAnimSpritePal_Z[] = INCBIN_U16("graphics/battle_anims/sprites/z.gbapal"); const u32 gBattleAnimSpriteGfx_YellowUnk2[] = INCBIN_U32("graphics/battle_anims/sprites/yellow_unk_2.4bpp.lz"); -const u32 gBattleAnimSpritePal_YellowUnk2[] = INCBIN_U32("graphics/battle_anims/sprites/yellow_unk_2.gbapal.lz"); +const u16 gBattleAnimSpritePal_YellowUnk2[] = INCBIN_U16("graphics/battle_anims/sprites/yellow_unk_2.gbapal"); const u32 gBattleAnimSpriteGfx_AirSlash[] = INCBIN_U32("graphics/battle_anims/sprites/air_slash.4bpp.lz"); -const u32 gBattleAnimSpritePal_AirSlash[] = INCBIN_U32("graphics/battle_anims/sprites/air_slash.gbapal.lz"); +const u16 gBattleAnimSpritePal_AirSlash[] = INCBIN_U16("graphics/battle_anims/sprites/air_slash.gbapal"); const u32 gBattleAnimSpriteGfx_SpinningGreenOrbs[] = INCBIN_U32("graphics/battle_anims/sprites/spinning_green_orbs.4bpp.lz"); -const u32 gBattleAnimSpritePal_SpinningGreenOrbs[] = INCBIN_U32("graphics/battle_anims/sprites/spinning_green_orbs.gbapal.lz"); +const u16 gBattleAnimSpritePal_SpinningGreenOrbs[] = INCBIN_U16("graphics/battle_anims/sprites/spinning_green_orbs.gbapal"); const u32 gBattleAnimSpriteGfx_Leaf[] = INCBIN_U32("graphics/battle_anims/sprites/leaf.4bpp.lz"); -const u32 gBattleAnimSpritePal_Leaf[] = INCBIN_U32("graphics/battle_anims/sprites/leaf.gbapal.lz"); +const u16 gBattleAnimSpritePal_Leaf[] = INCBIN_U16("graphics/battle_anims/sprites/leaf.gbapal"); const u32 gBattleAnimSpriteGfx_MetronomeSmallHand[] = INCBIN_U32("graphics/battle_anims/unused/metronome_hand_small.4bpp.lz"); // unused, was for metronome at one point -const u32 gBattleAnimSpritePal_Clapping[] = INCBIN_U32("graphics/battle_anims/sprites/clapping.gbapal.lz"); +const u16 gBattleAnimSpritePal_Clapping[] = INCBIN_U16("graphics/battle_anims/sprites/clapping.gbapal"); const u32 gBattleAnimSpriteGfx_PoisonPowder[] = INCBIN_U32("graphics/battle_anims/sprites/poison_powder.4bpp.lz"); -const u32 gBattleAnimSpritePal_PoisonPowder[] = INCBIN_U32("graphics/battle_anims/sprites/poison_powder.gbapal.lz"); +const u16 gBattleAnimSpritePal_PoisonPowder[] = INCBIN_U16("graphics/battle_anims/sprites/poison_powder.gbapal"); const u32 gBattleAnimSpriteGfx_BrownTriangle[] = INCBIN_U32("graphics/battle_anims/sprites/brown_triangle.4bpp.lz"); -const u32 gBattleAnimSpritePal_BrownTriangle[] = INCBIN_U32("graphics/battle_anims/sprites/brown_triangle.gbapal.lz"); +const u16 gBattleAnimSpritePal_BrownTriangle[] = INCBIN_U16("graphics/battle_anims/sprites/brown_triangle.gbapal"); const u32 gBattleAnimSpriteGfx_Sparkle3[] = INCBIN_U32("graphics/battle_anims/sprites/sparkle_3.4bpp.lz"); -const u32 gBattleAnimSpritePal_Sparkle3[] = INCBIN_U32("graphics/battle_anims/sprites/sparkle_3.gbapal.lz"); +const u16 gBattleAnimSpritePal_Sparkle3[] = INCBIN_U16("graphics/battle_anims/sprites/sparkle_3.gbapal"); const u32 gBattleAnimSpriteGfx_Sparkle4[] = INCBIN_U32("graphics/battle_anims/sprites/sparkle_4.4bpp.lz"); const u32 gBattleAnimSpriteGfx_MusicNotes[] = INCBIN_U32("graphics/battle_anims/sprites/music_notes.4bpp.lz"); -const u32 gBattleAnimSpritePal_MusicNotes[] = INCBIN_U32("graphics/battle_anims/sprites/music_notes.gbapal.lz"); +const u16 gBattleAnimSpritePal_MusicNotes[] = INCBIN_U16("graphics/battle_anims/sprites/music_notes.gbapal"); const u32 gBattleAnimSpriteGfx_Duck[] = INCBIN_U32("graphics/battle_anims/sprites/duck.4bpp.lz"); -const u32 gBattleAnimSpritePal_Duck[] = INCBIN_U32("graphics/battle_anims/sprites/duck.gbapal.lz"); +const u16 gBattleAnimSpritePal_Duck[] = INCBIN_U16("graphics/battle_anims/sprites/duck.gbapal"); const u32 gBattleAnimSpriteGfx_Alert[] = INCBIN_U32("graphics/battle_anims/sprites/alert.4bpp.lz"); -const u32 gBattleAnimSpritePal_Alert[] = INCBIN_U32("graphics/battle_anims/sprites/alert.gbapal.lz"); +const u16 gBattleAnimSpritePal_Alert[] = INCBIN_U16("graphics/battle_anims/sprites/alert.gbapal"); const u32 gBattleAnimSpriteGfx_Shock4[] = INCBIN_U32("graphics/battle_anims/sprites/shock_4.4bpp.lz"); -const u32 gBattleAnimSpritePal_Shock4[] = INCBIN_U32("graphics/battle_anims/sprites/shock_4.gbapal.lz"); +const u16 gBattleAnimSpritePal_Shock4[] = INCBIN_U16("graphics/battle_anims/sprites/shock_4.gbapal"); const u32 gBattleAnimSpriteGfx_Shock[] = INCBIN_U32("graphics/battle_anims/sprites/shock.4bpp.lz"); const u32 gBattleAnimSpriteGfx_Bell2[] = INCBIN_U32("graphics/battle_anims/sprites/bell_2.4bpp.lz"); -const u32 gBattleAnimSpritePal_Bell2[] = INCBIN_U32("graphics/battle_anims/sprites/bell_2.gbapal.lz"); +const u16 gBattleAnimSpritePal_Bell2[] = INCBIN_U16("graphics/battle_anims/sprites/bell_2.gbapal"); const u32 gBattleAnimSpriteGfx_PinkGlove[] = INCBIN_U32("graphics/battle_anims/sprites/pink_glove.4bpp.lz"); -const u32 gBattleAnimSpritePal_PinkGlove[] = INCBIN_U32("graphics/battle_anims/sprites/pink_glove.gbapal.lz"); +const u16 gBattleAnimSpritePal_PinkGlove[] = INCBIN_U16("graphics/battle_anims/sprites/pink_glove.gbapal"); const u16 gBattleAnimUnused_Unknown1[] = INCBIN_U16("graphics/battle_anims/unused/unknown_1.bin"); const u16 gBattleAnimUnused_Unknown2[] = INCBIN_U16("graphics/battle_anims/unused/unknown_2.bin"); const u16 gBattleAnimUnused_Unknown3[] = INCBIN_U16("graphics/battle_anims/unused/unknown_3.bin"); const u32 gBattleAnimUnusedGfx_LineSketch2[] = INCBIN_U32("graphics/battle_anims/unused/line_sketch_2.8bpp.lz"); -const u32 gBattleAnimUnusedPal_LineSketch2[] = INCBIN_U32("graphics/battle_anims/unused/line_sketch_2.gbapal.lz"); +const u16 gBattleAnimUnusedPal_LineSketch2[] = INCBIN_U16("graphics/battle_anims/unused/line_sketch_2.gbapal"); const u32 gBattleAnimUnusedTilemap_LineSketch2[] = INCBIN_U32("graphics/battle_anims/unused/line_sketch_2.bin.lz"); const u32 gBattleAnimSpriteGfx_BlueLines[] = INCBIN_U32("graphics/battle_anims/sprites/blue_lines.4bpp.lz"); -const u32 gBattleAnimSpritePal_BlueLines[] = INCBIN_U32("graphics/battle_anims/sprites/blue_lines.gbapal.lz"); +const u16 gBattleAnimSpritePal_BlueLines[] = INCBIN_U16("graphics/battle_anims/sprites/blue_lines.gbapal"); -const u32 gBattleAnimSpritePal_Impact3[] = INCBIN_U32("graphics/battle_anims/sprites/impact_3.gbapal.lz"); -const u32 gBattleAnimSpritePal_Impact2[] = INCBIN_U32("graphics/battle_anims/sprites/impact_2.gbapal.lz"); -const u32 gBattleAnimSpritePal_Reticle[] = INCBIN_U32("graphics/battle_anims/sprites/reticle.gbapal.lz"); -const u32 gBattleAnimSpritePal_Breath[] = INCBIN_U32("graphics/battle_anims/sprites/breath.gbapal.lz"); -const u32 gBattleAnimSpritePal_Snowball[] = INCBIN_U32("graphics/battle_anims/sprites/snowball.gbapal.lz"); -const u32 gBattleAnimSpritePal_Vine[] = INCBIN_U32("graphics/battle_anims/sprites/vine.gbapal.lz"); -const u32 gBattleAnimSpritePal_Sword2[] = INCBIN_U32("graphics/battle_anims/sprites/sword_2.gbapal.lz"); -const u32 gBattleAnimSpritePal_RedTube[] = INCBIN_U32("graphics/battle_anims/sprites/red_tube.gbapal.lz"); -const u32 gBattleAnimSpritePal_Amnesia[] = INCBIN_U32("graphics/battle_anims/sprites/amnesia.gbapal.lz"); -const u32 gBattleAnimSpritePal_String2[] = INCBIN_U32("graphics/battle_anims/sprites/string_2.gbapal.lz"); +const u16 gBattleAnimSpritePal_Impact3[] = INCBIN_U16("graphics/battle_anims/sprites/impact_3.gbapal"); +const u16 gBattleAnimSpritePal_Impact2[] = INCBIN_U16("graphics/battle_anims/sprites/impact_2.gbapal"); +const u16 gBattleAnimSpritePal_Reticle[] = INCBIN_U16("graphics/battle_anims/sprites/reticle.gbapal"); +const u16 gBattleAnimSpritePal_Breath[] = INCBIN_U16("graphics/battle_anims/sprites/breath.gbapal"); +const u16 gBattleAnimSpritePal_Snowball[] = INCBIN_U16("graphics/battle_anims/sprites/snowball.gbapal"); +const u16 gBattleAnimSpritePal_Vine[] = INCBIN_U16("graphics/battle_anims/sprites/vine.gbapal"); +const u16 gBattleAnimSpritePal_Sword2[] = INCBIN_U16("graphics/battle_anims/sprites/sword_2.gbapal"); +const u16 gBattleAnimSpritePal_RedTube[] = INCBIN_U16("graphics/battle_anims/sprites/red_tube.gbapal"); +const u16 gBattleAnimSpritePal_Amnesia[] = INCBIN_U16("graphics/battle_anims/sprites/amnesia.gbapal"); +const u16 gBattleAnimSpritePal_String2[] = INCBIN_U16("graphics/battle_anims/sprites/string_2.gbapal"); const u32 gBattleAnimUnused_Unknown4[] = INCBIN_U32("graphics/battle_anims/unused/unknown_4.bin.lz"); -const u32 gBattleAnimSpritePal_Pencil2[] = INCBIN_U32("graphics/battle_anims/sprites/pencil_2.gbapal.lz"); -const u32 gBattleAnimSpritePal_Petal[] = INCBIN_U32("graphics/battle_anims/sprites/petal.gbapal.lz"); -const u32 gBattleAnimSpritePal_BentSpoon[] = INCBIN_U32("graphics/battle_anims/sprites/bent_spoon.gbapal.lz"); -const u32 gBattleAnimSpritePal_Coin[] = INCBIN_U32("graphics/battle_anims/sprites/coin.gbapal.lz"); -const u32 gBattleAnimSpritePal_CrackedEgg[] = INCBIN_U32("graphics/battle_anims/sprites/cracked_egg.gbapal.lz"); -const u32 gBattleAnimSpritePal_FreshEgg[] = INCBIN_U32("graphics/battle_anims/sprites/fresh_egg.gbapal.lz"); +const u16 gBattleAnimSpritePal_Pencil2[] = INCBIN_U16("graphics/battle_anims/sprites/pencil_2.gbapal"); +const u16 gBattleAnimSpritePal_Petal[] = INCBIN_U16("graphics/battle_anims/sprites/petal.gbapal"); +const u16 gBattleAnimSpritePal_BentSpoon[] = INCBIN_U16("graphics/battle_anims/sprites/bent_spoon.gbapal"); +const u16 gBattleAnimSpritePal_Coin[] = INCBIN_U16("graphics/battle_anims/sprites/coin.gbapal"); +const u16 gBattleAnimSpritePal_CrackedEgg[] = INCBIN_U16("graphics/battle_anims/sprites/cracked_egg.gbapal"); +const u16 gBattleAnimSpritePal_FreshEgg[] = INCBIN_U16("graphics/battle_anims/sprites/fresh_egg.gbapal"); const u32 gBattleAnimSpriteGfx_Impact3[] = INCBIN_U32("graphics/battle_anims/sprites/impact_3.4bpp.lz"); const u32 gBattleAnimSpriteGfx_Impact2[] = INCBIN_U32("graphics/battle_anims/sprites/impact_2.4bpp.lz"); @@ -657,48 +657,48 @@ const u32 gBattleAnimSpriteGfx_HatchedEgg[] = INCBIN_U32("graphics/battle_anims/ const u32 gBattleAnimSpriteGfx_FreshEgg[] = INCBIN_U32("graphics/battle_anims/sprites/fresh_egg.4bpp.lz"); const u32 gBattleAnimSpriteGfx_Fangs[] = INCBIN_U32("graphics/battle_anims/sprites/fangs.4bpp.lz"); -const u32 gBattleAnimSpritePal_Fangs[] = INCBIN_U32("graphics/battle_anims/sprites/fangs.gbapal.lz"); +const u16 gBattleAnimSpritePal_Fangs[] = INCBIN_U16("graphics/battle_anims/sprites/fangs.gbapal"); const u32 gBattleAnimSpriteGfx_Explosion2[] = INCBIN_U32("graphics/battle_anims/sprites/explosion_2.4bpp.lz"); -const u32 gBattleAnimSpritePal_Explosion2[] = INCBIN_U32("graphics/battle_anims/sprites/explosion_2.gbapal.lz"); +const u16 gBattleAnimSpritePal_Explosion2[] = INCBIN_U16("graphics/battle_anims/sprites/explosion_2.gbapal"); const u32 gBattleAnimSpriteGfx_Explosion3[] = INCBIN_U32("graphics/battle_anims/sprites/explosion_3.4bpp.lz"); const u32 gBattleAnimSpriteGfx_WaterDroplet[] = INCBIN_U32("graphics/battle_anims/sprites/water_droplet.4bpp.lz"); -const u32 gBattleAnimSpritePal_WaterDroplet[] = INCBIN_U32("graphics/battle_anims/sprites/water_droplet.gbapal.lz"); +const u16 gBattleAnimSpritePal_WaterDroplet[] = INCBIN_U16("graphics/battle_anims/sprites/water_droplet.gbapal"); const u32 gBattleAnimSpriteGfx_WaterDroplet2[] = INCBIN_U32("graphics/battle_anims/sprites/water_droplet_2.4bpp.lz"); const u32 gBattleAnimSpriteGfx_Seed2[] = INCBIN_U32("graphics/battle_anims/sprites/seed_2.4bpp.lz"); -const u32 gBattleAnimSpritePal_Seed2[] = INCBIN_U32("graphics/battle_anims/sprites/seed_2.gbapal.lz"); +const u16 gBattleAnimSpritePal_Seed2[] = INCBIN_U16("graphics/battle_anims/sprites/seed_2.gbapal"); const u32 gBattleAnimSpriteGfx_Sprout[] = INCBIN_U32("graphics/battle_anims/sprites/sprout.4bpp.lz"); const u32 gBattleAnimSpriteGfx_RedWand[] = INCBIN_U32("graphics/battle_anims/sprites/red_wand.4bpp.lz"); -const u32 gBattleAnimSpritePal_RedWand[] = INCBIN_U32("graphics/battle_anims/sprites/red_wand.gbapal.lz"); +const u16 gBattleAnimSpritePal_RedWand[] = INCBIN_U16("graphics/battle_anims/sprites/red_wand.gbapal"); const u32 gBattleAnimSpriteGfx_PurpleGreenUnk[] = INCBIN_U32("graphics/battle_anims/sprites/purple_green_unk.4bpp.lz"); -const u32 gBattleAnimSpritePal_PurpleGreenUnk[] = INCBIN_U32("graphics/battle_anims/sprites/purple_green_unk.gbapal.lz"); +const u16 gBattleAnimSpritePal_PurpleGreenUnk[] = INCBIN_U16("graphics/battle_anims/sprites/purple_green_unk.gbapal"); const u32 gBattleAnimSpriteGfx_WaterColumn[] = INCBIN_U32("graphics/battle_anims/sprites/water_column.4bpp.lz"); -const u32 gBattleAnimSpritePal_WaterColumn[] = INCBIN_U32("graphics/battle_anims/sprites/water_column.gbapal.lz"); +const u16 gBattleAnimSpritePal_WaterColumn[] = INCBIN_U16("graphics/battle_anims/sprites/water_column.gbapal"); const u32 gBattleAnimSpriteGfx_MudUnk[] = INCBIN_U32("graphics/battle_anims/sprites/mud_unk.4bpp.lz"); -const u32 gBattleAnimSpritePal_MudUnk[] = INCBIN_U32("graphics/battle_anims/sprites/mud_unk.gbapal.lz"); +const u16 gBattleAnimSpritePal_MudUnk[] = INCBIN_U16("graphics/battle_anims/sprites/mud_unk.gbapal"); const u32 gUnusedTilemap_BlueFrame[] = INCBIN_U32("graphics/unused/blue_frame.bin.lz"); // P1, P2, P3 and P4 tilemaps? const u32 gUnusedTilemap_RedYellowGreenFrame[] = INCBIN_U32("graphics/unused/redyellowgreen_frame.bin.lz"); const u32 gUnusedGfx_ColorFrames[] = INCBIN_U32("graphics/unused/color_frames.4bpp.lz"); -const u32 gUnusedPal_ColorFrames[] = INCBIN_U32("graphics/unused/color_frames.gbapal.lz"); +const u16 gUnusedPal_ColorFrames[] = INCBIN_U16("graphics/unused/color_frames.gbapal"); const u32 gBattleAnimSpriteGfx_RainDrops[] = INCBIN_U32("graphics/battle_anims/sprites/rain_drops.4bpp.lz"); const u32 gBattleAnimUnusedGfx_WaterSplash[] = INCBIN_U32("graphics/battle_anims/unused/water_splash.8bpp.lz"); const u32 gBattleAnimUnusedTilemap_WaterSplash[] = INCBIN_U32("graphics/battle_anims/unused/water_splash.bin.lz"); -const u32 gBattleAnimUnusedPal_WaterSplash[] = INCBIN_U32("graphics/battle_anims/unused/water_splash.gbapal.lz"); +const u16 gBattleAnimUnusedPal_WaterSplash[] = INCBIN_U16("graphics/battle_anims/unused/water_splash.gbapal"); const u32 gUnusedGfx_BasicFrame[] = INCBIN_U32("graphics/unused/basic_frame.4bpp.lz"); -const u32 gUnusedPal_BasicFrame[] = INCBIN_U32("graphics/unused/basic_frame.gbapal.lz"); +const u16 gUnusedPal_BasicFrame[] = INCBIN_U16("graphics/unused/basic_frame.gbapal"); const u32 gUnusedTilemap_BasicFrame[] = INCBIN_U32("graphics/unused/basic_frame.bin.lz"); // Battle Interface @@ -724,71 +724,71 @@ const u32 gBattleInterfaceGfx_UnusedWindow3[] = INCBIN_U32("graphics/battle_inte const u32 gBattleInterfaceGfx_UnusedWindow4[] = INCBIN_U32("graphics/battle_interface/unused_window4.4bpp.lz"); const u32 gBattleAnimSpriteGfx_FurySwipes[] = INCBIN_U32("graphics/battle_anims/sprites/fury_swipes.4bpp.lz"); -const u32 gBattleAnimSpritePal_FurySwipes[] = INCBIN_U32("graphics/battle_anims/sprites/fury_swipes.gbapal.lz"); +const u16 gBattleAnimSpritePal_FurySwipes[] = INCBIN_U16("graphics/battle_anims/sprites/fury_swipes.gbapal"); const u32 gBattleAnimSpriteGfx_Vine2[] = INCBIN_U32("graphics/battle_anims/sprites/vine_2.4bpp.lz"); -const u32 gBattleAnimSpritePal_Vine2[] = INCBIN_U32("graphics/battle_anims/sprites/vine_2.gbapal.lz"); +const u16 gBattleAnimSpritePal_Vine2[] = INCBIN_U16("graphics/battle_anims/sprites/vine_2.gbapal"); const u32 gBattleAnimSpriteGfx_Teeth[] = INCBIN_U32("graphics/battle_anims/sprites/teeth.4bpp.lz"); -const u32 gBattleAnimSpritePal_Teeth[] = INCBIN_U32("graphics/battle_anims/sprites/teeth.gbapal.lz"); +const u16 gBattleAnimSpritePal_Teeth[] = INCBIN_U16("graphics/battle_anims/sprites/teeth.gbapal"); const u32 gBattleAnimSpriteGfx_Bone2[] = INCBIN_U32("graphics/battle_anims/sprites/bone_2.4bpp.lz"); -const u32 gBattleAnimSpritePal_Bone2[] = INCBIN_U32("graphics/battle_anims/sprites/bone_2.gbapal.lz"); +const u16 gBattleAnimSpritePal_Bone2[] = INCBIN_U16("graphics/battle_anims/sprites/bone_2.gbapal"); const u32 gBattleAnimSpriteGfx_WhiteBag[] = INCBIN_U32("graphics/battle_anims/sprites/white_bag.4bpp.lz"); -const u32 gBattleAnimSpritePal_WhiteBag[] = INCBIN_U32("graphics/battle_anims/sprites/white_bag.gbapal.lz"); +const u16 gBattleAnimSpritePal_WhiteBag[] = INCBIN_U16("graphics/battle_anims/sprites/white_bag.gbapal"); const u32 gBattleAnimSpriteGfx_Unknown[] = INCBIN_U32("graphics/battle_anims/sprites/unknown.4bpp.lz"); -const u32 gBattleAnimSpritePal_Unknown[] = INCBIN_U32("graphics/battle_anims/sprites/unknown.gbapal.lz"); +const u16 gBattleAnimSpritePal_Unknown[] = INCBIN_U16("graphics/battle_anims/sprites/unknown.gbapal"); const u32 gBattleAnimSpriteGfx_PurpleCoral[] = INCBIN_U32("graphics/battle_anims/sprites/purple_coral.4bpp.lz"); -const u32 gBattleAnimSpritePal_PurpleCoral[] = INCBIN_U32("graphics/battle_anims/sprites/purple_coral.gbapal.lz"); +const u16 gBattleAnimSpritePal_PurpleCoral[] = INCBIN_U16("graphics/battle_anims/sprites/purple_coral.gbapal"); const u32 gBattleAnimSpriteGfx_PurpleDroplet[] = INCBIN_U32("graphics/battle_anims/sprites/purple_droplet.4bpp.lz"); const u32 gBattleAnimSpriteGfx_Shock2[] = INCBIN_U32("graphics/battle_anims/sprites/shock_2.4bpp.lz"); -const u32 gBattleAnimSpritePal_Shock2[] = INCBIN_U32("graphics/battle_anims/sprites/shock_2.gbapal.lz"); +const u16 gBattleAnimSpritePal_Shock2[] = INCBIN_U16("graphics/battle_anims/sprites/shock_2.gbapal"); const u32 gBattleAnimSpriteGfx_ClosingEye2[] = INCBIN_U32("graphics/battle_anims/sprites/closing_eye_2.4bpp.lz"); -const u32 gBattleAnimSpritePal_ClosingEye2[] = INCBIN_U32("graphics/battle_anims/sprites/closing_eye_2.gbapal.lz"); +const u16 gBattleAnimSpritePal_ClosingEye2[] = INCBIN_U16("graphics/battle_anims/sprites/closing_eye_2.gbapal"); const u32 gBattleAnimSpriteGfx_MetalBall[] = INCBIN_U32("graphics/battle_anims/sprites/metal_ball.4bpp.lz"); -const u32 gBattleAnimSpritePal_MetalBall[] = INCBIN_U32("graphics/battle_anims/sprites/metal_ball.gbapal.lz"); +const u16 gBattleAnimSpritePal_MetalBall[] = INCBIN_U16("graphics/battle_anims/sprites/metal_ball.gbapal"); const u32 gBattleAnimSpriteGfx_MonsterDoll[] = INCBIN_U32("graphics/battle_anims/sprites/monster_doll.4bpp.lz"); -const u32 gBattleAnimSpritePal_MonsterDoll[] = INCBIN_U32("graphics/battle_anims/sprites/monster_doll.gbapal.lz"); +const u16 gBattleAnimSpritePal_MonsterDoll[] = INCBIN_U16("graphics/battle_anims/sprites/monster_doll.gbapal"); const u32 gBattleAnimSpriteGfx_Whirlwind[] = INCBIN_U32("graphics/battle_anims/sprites/whirlwind.4bpp.lz"); -const u32 gBattleAnimSpritePal_Whirlwind[] = INCBIN_U32("graphics/battle_anims/sprites/whirlwind.gbapal.lz"); +const u16 gBattleAnimSpritePal_Whirlwind[] = INCBIN_U16("graphics/battle_anims/sprites/whirlwind.gbapal"); const u32 gBattleAnimSpriteGfx_Whirlwind2[] = INCBIN_U32("graphics/battle_anims/sprites/whirlwind_2.4bpp.lz"); const u32 gBattleAnimSpriteGfx_Explosion4[] = INCBIN_U32("graphics/battle_anims/sprites/explosion_4.4bpp.lz"); -const u32 gBattleAnimSpritePal_Explosion4[] = INCBIN_U32("graphics/battle_anims/sprites/explosion_4.gbapal.lz"); +const u16 gBattleAnimSpritePal_Explosion4[] = INCBIN_U16("graphics/battle_anims/sprites/explosion_4.gbapal"); const u32 gBattleAnimSpriteGfx_Explosion5[] = INCBIN_U32("graphics/battle_anims/sprites/explosion_5.4bpp.lz"); const u32 gBattleAnimSpriteGfx_Tongue[] = INCBIN_U32("graphics/battle_anims/sprites/tongue.4bpp.lz"); -const u32 gBattleAnimSpritePal_Tongue[] = INCBIN_U32("graphics/battle_anims/sprites/tongue.gbapal.lz"); +const u16 gBattleAnimSpritePal_Tongue[] = INCBIN_U16("graphics/battle_anims/sprites/tongue.gbapal"); const u32 gBattleAnimSpriteGfx_Smoke[] = INCBIN_U32("graphics/battle_anims/sprites/smoke.4bpp.lz"); -const u32 gBattleAnimSpritePal_Smoke[] = INCBIN_U32("graphics/battle_anims/sprites/smoke.gbapal.lz"); +const u16 gBattleAnimSpritePal_Smoke[] = INCBIN_U16("graphics/battle_anims/sprites/smoke.gbapal"); const u32 gBattleAnimSpriteGfx_Smoke2[] = INCBIN_U32("graphics/battle_anims/sprites/smoke_2.4bpp.lz"); const u32 gBattleAnimSpriteGfx_BlueFlames[] = INCBIN_U32("graphics/battle_anims/sprites/blue_flames.4bpp.lz"); -const u32 gBattleAnimSpritePal_BlueFlames[] = INCBIN_U32("graphics/battle_anims/sprites/blue_flames.gbapal.lz"); +const u16 gBattleAnimSpritePal_BlueFlames[] = INCBIN_U16("graphics/battle_anims/sprites/blue_flames.gbapal"); const u32 gBattleAnimSpriteGfx_BlueFlames2[] = INCBIN_U32("graphics/battle_anims/sprites/blue_flames_2.4bpp.lz"); // Contest const u32 gJPContestGfx1[] = INCBIN_U32("graphics/contest/japanese/composite_1.4bpp.lz"); -const u32 gJPContestPal[] = INCBIN_U32("graphics/contest/japanese/palette.gbapal.lz"); +const u16 gJPContestPal[] = INCBIN_U16("graphics/contest/japanese/palette.gbapal"); const u32 gJPContestBgTilemap[] = INCBIN_U32("graphics/contest/japanese/bg.bin.lz"); const u32 gJPContestWindowsTilemap[] = INCBIN_U32("graphics/contest/japanese/windows.bin.lz"); const u32 gJPContestGfx2[] = INCBIN_U32("graphics/contest/japanese/composite_2.4bpp.lz"); -const u32 gContestInterfaceAudiencePalette[] = INCBIN_U32("graphics/contest/interface.gbapal.lz"); +const u16 gContestInterfaceAudiencePalette[] = INCBIN_U16("graphics/contest/interface.gbapal"); const u32 gContestAudienceTilemap[] = INCBIN_U32("graphics/contest/audience.bin.lz"); const u32 gContestInterfaceTilemap[] = INCBIN_U32("graphics/contest/interface.bin.lz"); const u32 gJPContestInterfaceTilemap[] = INCBIN_U32("graphics/contest/japanese/interface.bin.lz"); @@ -799,186 +799,186 @@ const u32 gContestInterfaceGfx[] = INCBIN_U32("graphics/contest/interface.4bpp.l const u32 gContestAudienceGfx[] = INCBIN_U32("graphics/contest/audience.4bpp.lz"); const u32 gContestFaces_Gfx[] = INCBIN_U32("graphics/contest/faces.4bpp.lz"); const u32 gContestJudgeSymbolsGfx[] = INCBIN_U32("graphics/contest/judge_symbols.4bpp.lz"); -const u32 gContestJudgeSymbolsPal[] = INCBIN_U32("graphics/contest/judge_symbols.gbapal.lz"); +const u16 gContestJudgeSymbolsPal[] = INCBIN_U16("graphics/contest/judge_symbols.gbapal"); const u8 gContestSliderHeart_Gfx[] = INCBIN_U8("graphics/contest/slider_heart.4bpp"); // JP equivalent of the Applause meter const u32 gJPContestVoltageGfx[] = INCBIN_U32("graphics/contest/japanese/voltage.4bpp.lz"); -const u32 gJPContestVoltagePal[] = INCBIN_U32("graphics/contest/japanese/voltage.gbapal.lz"); +const u16 gJPContestVoltagePal[] = INCBIN_U16("graphics/contest/japanese/voltage.gbapal"); // Contest results const u32 gContestResults_Gfx[] = INCBIN_U32("graphics/contest/results_screen/tiles.4bpp.lz"); const u32 gContestResults_WinnerBanner_Tilemap[] = INCBIN_U32("graphics/contest/results_screen/winner_banner.bin.lz"); const u32 gContestResults_Interface_Tilemap[] = INCBIN_U32("graphics/contest/results_screen/interface.bin.lz"); const u32 gContestResults_Bg_Tilemap[] = INCBIN_U32("graphics/contest/results_screen/bg.bin.lz"); -const u32 gContestResults_Pal[] = INCBIN_U32("graphics/contest/results_screen/tiles.gbapal.lz"); +const u16 gContestResults_Pal[] = INCBIN_U16("graphics/contest/results_screen/tiles.gbapal"); const u32 gBattleAnimSpriteGfx_Impact[] = INCBIN_U32("graphics/battle_anims/sprites/impact.4bpp.lz"); -const u32 gBattleAnimSpritePal_Impact[] = INCBIN_U32("graphics/battle_anims/sprites/impact.gbapal.lz"); +const u16 gBattleAnimSpritePal_Impact[] = INCBIN_U16("graphics/battle_anims/sprites/impact.gbapal"); const u32 gBattleAnimSpriteGfx_Particles[] = INCBIN_U32("graphics/battle_anims/sprites/particles.4bpp.lz"); const u32 gBattleAnimSpriteGfx_Particles2[] = INCBIN_U32("graphics/battle_anims/sprites/particles2.4bpp.lz"); -const u32 gBattleAnimSpritePal_Particles2[] = INCBIN_U32("graphics/battle_anims/sprites/particles2.gbapal.lz"); +const u16 gBattleAnimSpritePal_Particles2[] = INCBIN_U16("graphics/battle_anims/sprites/particles2.gbapal"); const u32 gBattleAnimSpriteGfx_CircleImpact[] = INCBIN_U32("graphics/battle_anims/sprites/circle_impact.4bpp.lz"); -const u32 gBattleAnimSpritePal_CircleImpact[] = INCBIN_U32("graphics/battle_anims/sprites/circle_impact.gbapal.lz"); +const u16 gBattleAnimSpritePal_CircleImpact[] = INCBIN_U16("graphics/battle_anims/sprites/circle_impact.gbapal"); const u32 gBattleAnimSpriteGfx_Scratch[] = INCBIN_U32("graphics/battle_anims/sprites/scratch.4bpp.lz"); const u32 gBattleAnimSpriteGfx_SharpTeeth[] = INCBIN_U32("graphics/battle_anims/sprites/sharp_teeth.4bpp.lz"); -const u32 gBattleAnimSpritePal_SharpTeeth[] = INCBIN_U32("graphics/battle_anims/sprites/sharp_teeth.gbapal.lz"); +const u16 gBattleAnimSpritePal_SharpTeeth[] = INCBIN_U16("graphics/battle_anims/sprites/sharp_teeth.gbapal"); const u32 gBattleAnimSpriteGfx_Clamp[] = INCBIN_U32("graphics/battle_anims/sprites/clamp.4bpp.lz"); const u32 gBattleAnimSpriteGfx_Cut[] = INCBIN_U32("graphics/battle_anims/sprites/cut.4bpp.lz"); const u32 gBattleAnimSpriteGfx_RainbowRings[] = INCBIN_U32("graphics/battle_anims/sprites/rainbow_rings.4bpp.lz"); -const u32 gBattleAnimSpritePal_RainbowRings[] = INCBIN_U32("graphics/battle_anims/sprites/rainbow_rings.gbapal.lz"); +const u16 gBattleAnimSpritePal_RainbowRings[] = INCBIN_U16("graphics/battle_anims/sprites/rainbow_rings.gbapal"); const u32 gBattleAnimSpriteGfx_IceCrystals[] = INCBIN_U32("graphics/battle_anims/sprites/ice_crystals.4bpp.lz"); -const u32 gBattleAnimSpritePal_IceCrystals[] = INCBIN_U32("graphics/battle_anims/sprites/ice_crystals.gbapal.lz"); +const u16 gBattleAnimSpritePal_IceCrystals[] = INCBIN_U16("graphics/battle_anims/sprites/ice_crystals.gbapal"); const u32 gBattleAnimSpriteGfx_IceSpikes[] = INCBIN_U32("graphics/battle_anims/sprites/ice_spikes.4bpp.lz"); const u32 gBattleAnimSpriteGfx_OldBeatUp[] = INCBIN_U32("graphics/battle_anims/unused/old_beatup.4bpp.lz"); -const u32 gBattleAnimSpritePal_OldBeatUp[] = INCBIN_U32("graphics/battle_anims/unused/old_beatup.gbapal.lz"); +const u16 gBattleAnimSpritePal_OldBeatUp[] = INCBIN_U16("graphics/battle_anims/unused/old_beatup.gbapal"); const u32 gBattleAnimSpriteGfx_Orbs[] = INCBIN_U32("graphics/battle_anims/sprites/orbs.4bpp.lz"); -const u32 gBattleAnimSpritePal_Orbs[] = INCBIN_U32("graphics/battle_anims/sprites/orbs.gbapal.lz"); +const u16 gBattleAnimSpritePal_Orbs[] = INCBIN_U16("graphics/battle_anims/sprites/orbs.gbapal"); const u32 gBattleAnimSpriteGfx_WaterOrb[] = INCBIN_U32("graphics/battle_anims/sprites/water_orb.4bpp.lz"); const u32 gBattleAnimSpriteGfx_WaterImpact[] = INCBIN_U32("graphics/battle_anims/sprites/water_impact.4bpp.lz"); -const u32 gBattleAnimSpritePal_WaterImpact[] = INCBIN_U32("graphics/battle_anims/sprites/water_impact.gbapal.lz"); +const u16 gBattleAnimSpritePal_WaterImpact[] = INCBIN_U16("graphics/battle_anims/sprites/water_impact.gbapal"); -const u32 gBattleAnimSpritePal_BrownOrb[] = INCBIN_U32("graphics/battle_anims/sprites/brown_orb.gbapal.lz"); +const u16 gBattleAnimSpritePal_BrownOrb[] = INCBIN_U16("graphics/battle_anims/sprites/brown_orb.gbapal"); const u32 gBattleAnimSpriteGfx_MudSand[] = INCBIN_U32("graphics/battle_anims/sprites/mud_sand.4bpp.lz"); -const u32 gBattleAnimSpritePal_MudSand[] = INCBIN_U32("graphics/battle_anims/sprites/mud_sand.gbapal.lz"); +const u16 gBattleAnimSpritePal_MudSand[] = INCBIN_U16("graphics/battle_anims/sprites/mud_sand.gbapal"); const u32 gBattleAnimSpriteGfx_PoisonBubble[] = INCBIN_U32("graphics/battle_anims/sprites/poison_bubble.4bpp.lz"); -const u32 gBattleAnimSpritePal_PoisonBubble[] = INCBIN_U32("graphics/battle_anims/sprites/poison_bubble.gbapal.lz"); +const u16 gBattleAnimSpritePal_PoisonBubble[] = INCBIN_U16("graphics/battle_anims/sprites/poison_bubble.gbapal"); const u32 gBattleAnimSpriteGfx_ToxicBubble[] = INCBIN_U32("graphics/battle_anims/sprites/toxic_bubble.4bpp.lz"); const u32 gBattleAnimSpriteGfx_HornHit2[] = INCBIN_U32("graphics/battle_anims/sprites/horn_hit_2.4bpp.lz"); -const u32 gBattleAnimSpritePal_HornHit2[] = INCBIN_U32("graphics/battle_anims/sprites/horn_hit_2.gbapal.lz"); +const u16 gBattleAnimSpritePal_HornHit2[] = INCBIN_U16("graphics/battle_anims/sprites/horn_hit_2.gbapal"); const u32 gBattleAnimSpriteGfx_AirWave2[] = INCBIN_U32("graphics/battle_anims/sprites/air_wave_2.4bpp.lz"); -const u32 gBattleAnimSpritePal_AirWave2[] = INCBIN_U32("graphics/battle_anims/sprites/air_wave_2.gbapal.lz"); +const u16 gBattleAnimSpritePal_AirWave2[] = INCBIN_U16("graphics/battle_anims/sprites/air_wave_2.gbapal"); const u32 gBattleAnimSpriteGfx_SmallBubbles[] = INCBIN_U32("graphics/battle_anims/sprites/small_bubbles.4bpp.lz"); -const u32 gBattleAnimSpritePal_SmallBubbles[] = INCBIN_U32("graphics/battle_anims/sprites/small_bubbles.gbapal.lz"); +const u16 gBattleAnimSpritePal_SmallBubbles[] = INCBIN_U16("graphics/battle_anims/sprites/small_bubbles.gbapal"); const u32 gBattleAnimSpriteGfx_RoundShadow[] = INCBIN_U32("graphics/battle_anims/sprites/round_shadow.4bpp.lz"); -const u32 gBattleAnimSpritePal_RoundShadow[] = INCBIN_U32("graphics/battle_anims/sprites/round_shadow.gbapal.lz"); +const u16 gBattleAnimSpritePal_RoundShadow[] = INCBIN_U16("graphics/battle_anims/sprites/round_shadow.gbapal"); const u32 gBattleAnimSpriteGfx_Sunlight[] = INCBIN_U32("graphics/battle_anims/sprites/sunlight.4bpp.lz"); -const u32 gBattleAnimSpritePal_Sunlight[] = INCBIN_U32("graphics/battle_anims/sprites/sunlight.gbapal.lz"); +const u16 gBattleAnimSpritePal_Sunlight[] = INCBIN_U16("graphics/battle_anims/sprites/sunlight.gbapal"); const u32 gBattleAnimSpriteGfx_Spore[] = INCBIN_U32("graphics/battle_anims/sprites/spore.4bpp.lz"); -const u32 gBattleAnimSpritePal_Spore[] = INCBIN_U32("graphics/battle_anims/sprites/spore.gbapal.lz"); +const u16 gBattleAnimSpritePal_Spore[] = INCBIN_U16("graphics/battle_anims/sprites/spore.gbapal"); const u32 gBattleAnimSpriteGfx_Flower[] = INCBIN_U32("graphics/battle_anims/sprites/flower.4bpp.lz"); -const u32 gBattleAnimSpritePal_Flower[] = INCBIN_U32("graphics/battle_anims/sprites/flower.gbapal.lz"); +const u16 gBattleAnimSpritePal_Flower[] = INCBIN_U16("graphics/battle_anims/sprites/flower.gbapal"); const u32 gBattleAnimSpriteGfx_RazorLeaf[] = INCBIN_U32("graphics/battle_anims/sprites/razor_leaf.4bpp.lz"); -const u32 gBattleAnimSpritePal_RazorLeaf[] = INCBIN_U32("graphics/battle_anims/sprites/razor_leaf.gbapal.lz"); +const u16 gBattleAnimSpritePal_RazorLeaf[] = INCBIN_U16("graphics/battle_anims/sprites/razor_leaf.gbapal"); const u32 gBattleAnimSpriteGfx_MistCloud[] = INCBIN_U32("graphics/battle_anims/sprites/mist_cloud.4bpp.lz"); -const u32 gBattleAnimSpritePal_MistCloud[] = INCBIN_U32("graphics/battle_anims/sprites/mist_cloud.gbapal.lz"); +const u16 gBattleAnimSpritePal_MistCloud[] = INCBIN_U16("graphics/battle_anims/sprites/mist_cloud.gbapal"); const u32 gBattleAnimUnusedGfx_Lights[] = INCBIN_U32("graphics/battle_anims/unused/lights.4bpp.lz"); -const u32 gBattleAnimUnusedPal_Lights[] = INCBIN_U32("graphics/battle_anims/unused/lights.gbapal.lz"); +const u16 gBattleAnimUnusedPal_Lights[] = INCBIN_U16("graphics/battle_anims/unused/lights.gbapal"); const u32 gBattleAnimUnusedTilemap_Lights[] = INCBIN_U32("graphics/battle_anims/unused/lights.bin.lz"); const u32 gBattleAnimSpriteGfx_WhirlwindLines[] = INCBIN_U32("graphics/battle_anims/sprites/whirlwind_lines.4bpp.lz"); -const u32 gBattleAnimSpritePal_WhirlwindLines[] = INCBIN_U32("graphics/battle_anims/sprites/whirlwind_lines.gbapal.lz"); +const u16 gBattleAnimSpritePal_WhirlwindLines[] = INCBIN_U16("graphics/battle_anims/sprites/whirlwind_lines.gbapal"); const u32 gBattleAnimSpriteGfx_GoldRing[] = INCBIN_U32("graphics/battle_anims/sprites/gold_ring.4bpp.lz"); -const u32 gBattleAnimSpritePal_GoldRing[] = INCBIN_U32("graphics/battle_anims/sprites/gold_ring.gbapal.lz"); +const u16 gBattleAnimSpritePal_GoldRing[] = INCBIN_U16("graphics/battle_anims/sprites/gold_ring.gbapal"); -const u32 gBattleAnimSpritePal_BlueRing2[] = INCBIN_U32("graphics/battle_anims/sprites/blue_ring_2.gbapal.lz"); -const u32 gBattleAnimSpritePal_PurpleRing[] = INCBIN_U32("graphics/battle_anims/sprites/purple_ring.gbapal.lz"); -const u32 gBattleAnimSpritePal_BlueRing[] = INCBIN_U32("graphics/battle_anims/sprites/blue_ring.gbapal.lz"); +const u16 gBattleAnimSpritePal_BlueRing2[] = INCBIN_U16("graphics/battle_anims/sprites/blue_ring_2.gbapal"); +const u16 gBattleAnimSpritePal_PurpleRing[] = INCBIN_U16("graphics/battle_anims/sprites/purple_ring.gbapal"); +const u16 gBattleAnimSpritePal_BlueRing[] = INCBIN_U16("graphics/battle_anims/sprites/blue_ring.gbapal"); const u32 gBattleAnimSpriteGfx_GreenLightWall[] = INCBIN_U32("graphics/battle_anims/sprites/green_light_wall.4bpp.lz"); -const u32 gBattleAnimSpritePal_GreenLightWall[] = INCBIN_U32("graphics/battle_anims/sprites/green_light_wall.gbapal.lz"); +const u16 gBattleAnimSpritePal_GreenLightWall[] = INCBIN_U16("graphics/battle_anims/sprites/green_light_wall.gbapal"); -const u32 gBattleAnimSpritePal_BlueLightWall[] = INCBIN_U32("graphics/battle_anims/sprites/blue_light_wall.gbapal.lz"); -const u32 gBattleAnimSpritePal_RedLightWall[] = INCBIN_U32("graphics/battle_anims/sprites/red_light_wall.gbapal.lz"); -const u32 gBattleAnimSpritePal_GrayLightWall[] = INCBIN_U32("graphics/battle_anims/sprites/gray_light_wall.gbapal.lz"); -const u32 gBattleAnimSpritePal_OrangeLightWall[] = INCBIN_U32("graphics/battle_anims/sprites/orange_light_wall.gbapal.lz"); +const u16 gBattleAnimSpritePal_BlueLightWall[] = INCBIN_U16("graphics/battle_anims/sprites/blue_light_wall.gbapal"); +const u16 gBattleAnimSpritePal_RedLightWall[] = INCBIN_U16("graphics/battle_anims/sprites/red_light_wall.gbapal"); +const u16 gBattleAnimSpritePal_GrayLightWall[] = INCBIN_U16("graphics/battle_anims/sprites/gray_light_wall.gbapal"); +const u16 gBattleAnimSpritePal_OrangeLightWall[] = INCBIN_U16("graphics/battle_anims/sprites/orange_light_wall.gbapal"); const u32 gBattleAnimSpriteGfx_BlackBall2[] = INCBIN_U32("graphics/battle_anims/sprites/black_ball_2.4bpp.lz"); -const u32 gBattleAnimSpritePal_BlackBall2[] = INCBIN_U32("graphics/battle_anims/sprites/black_ball_2.gbapal.lz"); +const u16 gBattleAnimSpritePal_BlackBall2[] = INCBIN_U16("graphics/battle_anims/sprites/black_ball_2.gbapal"); -const u32 gBattleAnimSpritePal_PurpleGasCloud[] = INCBIN_U32("graphics/battle_anims/sprites/purple_gas_cloud.gbapal.lz"); +const u16 gBattleAnimSpritePal_PurpleGasCloud[] = INCBIN_U16("graphics/battle_anims/sprites/purple_gas_cloud.gbapal"); const u32 gContestJudgeGfx[] = INCBIN_U32("graphics/contest/judge.4bpp.lz"); -const u32 gContest2Pal[] = INCBIN_U32("graphics/contest/judge.gbapal.lz"); +const u16 gContest2Pal[] = INCBIN_U16("graphics/contest/judge.gbapal"); const u32 gBattleAnimSpriteGfx_Spark[] = INCBIN_U32("graphics/battle_anims/sprites/spark.4bpp.lz"); -const u32 gBattleAnimSpritePal_Spark[] = INCBIN_U32("graphics/battle_anims/sprites/spark.gbapal.lz"); +const u16 gBattleAnimSpritePal_Spark[] = INCBIN_U16("graphics/battle_anims/sprites/spark.gbapal"); const u32 gBattleAnimSpriteGfx_SparkH[] = INCBIN_U32("graphics/battle_anims/sprites/spark_h.4bpp.lz"); const u32 gBattleAnimBgImage_Dark[] = INCBIN_U32("graphics/battle_anims/backgrounds/dark.4bpp.lz"); -const u32 gBattleAnimBgPalette_Dark[] = INCBIN_U32("graphics/battle_anims/backgrounds/dark.gbapal.lz"); +const u16 gBattleAnimBgPalette_Dark[] = INCBIN_U16("graphics/battle_anims/backgrounds/dark.gbapal"); const u32 gBattleAnimBgTilemap_Dark[] = INCBIN_U32("graphics/battle_anims/backgrounds/dark.bin.lz"); const u32 gMetalShineGfx[] = INCBIN_U32("graphics/battle_anims/masks/metal_shine.4bpp.lz"); -const u32 gMetalShinePalette[] = INCBIN_U32("graphics/battle_anims/masks/metal_shine.gbapal.lz"); +const u16 gMetalShinePalette[] = INCBIN_U16("graphics/battle_anims/masks/metal_shine.gbapal"); const u32 gMetalShineTilemap[] = INCBIN_U32("graphics/battle_anims/masks/metal_shine.bin.lz"); const u32 gUnusedGfx_Goosuto[] = INCBIN_U32("graphics/battle_anims/unused/goosuto.4bpp.lz"); // ghost -const u32 gUnusedPal_Goosuto[] = INCBIN_U32("graphics/battle_anims/unused/goosuto.gbapal.lz"); +const u16 gUnusedPal_Goosuto[] = INCBIN_U16("graphics/battle_anims/unused/goosuto.gbapal"); const u32 gUnusedTilemap_Goosuto[] = INCBIN_U32("graphics/battle_anims/unused/goosuto.bin.lz"); const u32 gBattleAnimSpriteGfx_YellowStar[] = INCBIN_U32("graphics/battle_anims/sprites/yellow_star.4bpp.lz"); -const u32 gBattleAnimSpritePal_YellowStar[] = INCBIN_U32("graphics/battle_anims/sprites/yellow_star.gbapal.lz"); +const u16 gBattleAnimSpritePal_YellowStar[] = INCBIN_U16("graphics/battle_anims/sprites/yellow_star.gbapal"); const u32 gBattleAnimSpriteGfx_LargeFreshEgg[] = INCBIN_U32("graphics/battle_anims/sprites/large_fresh_egg.4bpp.lz"); -const u32 gBattleAnimSpritePal_LargeFreshEgg[] = INCBIN_U32("graphics/battle_anims/sprites/large_fresh_egg.gbapal.lz"); +const u16 gBattleAnimSpritePal_LargeFreshEgg[] = INCBIN_U16("graphics/battle_anims/sprites/large_fresh_egg.gbapal"); const u32 gBattleAnimSpriteGfx_ShadowBall[] = INCBIN_U32("graphics/battle_anims/sprites/shadow_ball.4bpp.lz"); -const u32 gBattleAnimSpritePal_ShadowBall[] = INCBIN_U32("graphics/battle_anims/sprites/shadow_ball.gbapal.lz"); +const u16 gBattleAnimSpritePal_ShadowBall[] = INCBIN_U16("graphics/battle_anims/sprites/shadow_ball.gbapal"); const u32 gBattleAnimSpriteGfx_Lick[] = INCBIN_U32("graphics/battle_anims/sprites/lick.4bpp.lz"); -const u32 gBattleAnimSpritePal_Lick[] = INCBIN_U32("graphics/battle_anims/sprites/lick.gbapal.lz"); +const u16 gBattleAnimSpritePal_Lick[] = INCBIN_U16("graphics/battle_anims/sprites/lick.gbapal"); const u32 gBattleAnimSpriteGfx_VoidLines[] = INCBIN_U32("graphics/battle_anims/sprites/void_lines.4bpp.lz"); -const u32 gBattleAnimSpritePal_VoidLines[] = INCBIN_U32("graphics/battle_anims/sprites/void_lines.gbapal.lz"); +const u16 gBattleAnimSpritePal_VoidLines[] = INCBIN_U16("graphics/battle_anims/sprites/void_lines.gbapal"); -const u32 gBattleAnimSpritePal_String[] = INCBIN_U32("graphics/battle_anims/sprites/string.gbapal.lz"); +const u16 gBattleAnimSpritePal_String[] = INCBIN_U16("graphics/battle_anims/sprites/string.gbapal"); const u32 gBattleAnimSpriteGfx_String[] = INCBIN_U32("graphics/battle_anims/sprites/string.4bpp.lz"); const u32 gBattleAnimSpriteGfx_WebThread[] = INCBIN_U32("graphics/battle_anims/sprites/web_thread.4bpp.lz"); const u32 gBattleAnimSpriteGfx_SpiderWeb[] = INCBIN_U32("graphics/battle_anims/sprites/spider_web.4bpp.lz"); const u32 gBattleAnimSpriteGfx_Lightbulb[] = INCBIN_U32("graphics/battle_anims/sprites/lightbulb.4bpp.lz"); -const u32 gBattleAnimSpritePal_Lightbulb[] = INCBIN_U32("graphics/battle_anims/sprites/lightbulb.gbapal.lz"); +const u16 gBattleAnimSpritePal_Lightbulb[] = INCBIN_U16("graphics/battle_anims/sprites/lightbulb.gbapal"); const u32 gBattleAnimSpriteGfx_Slash[] = INCBIN_U32("graphics/battle_anims/sprites/slash.4bpp.lz"); -const u32 gBattleAnimSpritePal_Slash[] = INCBIN_U32("graphics/battle_anims/sprites/slash.gbapal.lz"); +const u16 gBattleAnimSpritePal_Slash[] = INCBIN_U16("graphics/battle_anims/sprites/slash.gbapal"); const u32 gBattleAnimSpriteGfx_FocusEnergy[] = INCBIN_U32("graphics/battle_anims/sprites/focus_energy.4bpp.lz"); -const u32 gBattleAnimSpritePal_FocusEnergy[] = INCBIN_U32("graphics/battle_anims/sprites/focus_energy.gbapal.lz"); +const u16 gBattleAnimSpritePal_FocusEnergy[] = INCBIN_U16("graphics/battle_anims/sprites/focus_energy.gbapal"); const u32 gBattleAnimSpriteGfx_SphereToCube[] = INCBIN_U32("graphics/battle_anims/sprites/sphere_to_cube.4bpp.lz"); -const u32 gBattleAnimSpritePal_SphereToCube[] = INCBIN_U32("graphics/battle_anims/sprites/sphere_to_cube.gbapal.lz"); +const u16 gBattleAnimSpritePal_SphereToCube[] = INCBIN_U16("graphics/battle_anims/sprites/sphere_to_cube.gbapal"); const u32 gBattleAnimBgImage_Psychic[] = INCBIN_U32("graphics/battle_anims/backgrounds/psychic.4bpp.lz"); -const u32 gBattleAnimBgPalette_Psychic[] = INCBIN_U32("graphics/battle_anims/backgrounds/psychic.gbapal.lz"); +const u16 gBattleAnimBgPalette_Psychic[] = INCBIN_U16("graphics/battle_anims/backgrounds/psychic.gbapal"); const u32 gBattleAnimBgTilemap_Psychic[] = INCBIN_U32("graphics/battle_anims/backgrounds/psychic.bin.lz"); const u32 gBattleAnimSpriteGfx_Eye[] = INCBIN_U32("graphics/battle_anims/sprites/eye.4bpp.lz"); -const u32 gBattleAnimSpritePal_Eye[] = INCBIN_U32("graphics/battle_anims/sprites/eye.gbapal.lz"); +const u16 gBattleAnimSpritePal_Eye[] = INCBIN_U16("graphics/battle_anims/sprites/eye.gbapal"); const u32 gBattleAnimSpriteGfx_Tendrils[] = INCBIN_U32("graphics/battle_anims/sprites/tendrils.4bpp.lz"); -const u32 gBattleAnimSpritePal_Tendrils[] = INCBIN_U32("graphics/battle_anims/sprites/tendrils.gbapal.lz"); +const u16 gBattleAnimSpritePal_Tendrils[] = INCBIN_U16("graphics/battle_anims/sprites/tendrils.gbapal"); const u32 gHealthboxSinglesPlayerGfx[] = INCBIN_U32("graphics/battle_interface/healthbox_singles_player.4bpp.lz"); const u32 gHealthboxSinglesOpponentGfx[] = INCBIN_U32("graphics/battle_interface/healthbox_singles_opponent.4bpp.lz"); @@ -987,140 +987,140 @@ const u32 gHealthboxDoublesOpponentGfx[] = INCBIN_U32("graphics/battle_interface const u32 gHealthboxSafariGfx[] = INCBIN_U32("graphics/battle_interface/healthbox_safari.4bpp.lz"); const u32 gUnusedGfx_Shadow[] = INCBIN_U32("graphics/unused/shadow.4bpp.lz"); -const u32 gUnusedPal_Shadow[] = INCBIN_U32("graphics/unused/shadow.gbapal.lz"); +const u16 gUnusedPal_Shadow[] = INCBIN_U16("graphics/unused/shadow.gbapal"); const u32 gBattleAnimSpriteGfx_LockOn[] = INCBIN_U32("graphics/battle_anims/sprites/lock_on.4bpp.lz"); -const u32 gBattleAnimSpritePal_LockOn[] = INCBIN_U32("graphics/battle_anims/sprites/lock_on.gbapal.lz"); +const u16 gBattleAnimSpritePal_LockOn[] = INCBIN_U16("graphics/battle_anims/sprites/lock_on.gbapal"); const u32 gBattleAnimSpriteGfx_OpeningEye[] = INCBIN_U32("graphics/battle_anims/sprites/opening_eye.4bpp.lz"); -const u32 gBattleAnimSpritePal_OpeningEye[] = INCBIN_U32("graphics/battle_anims/sprites/opening_eye.gbapal.lz"); +const u16 gBattleAnimSpritePal_OpeningEye[] = INCBIN_U16("graphics/battle_anims/sprites/opening_eye.gbapal"); const u32 gBattleAnimSpriteGfx_RoundWhiteHalo[] = INCBIN_U32("graphics/battle_anims/sprites/round_white_halo.4bpp.lz"); -const u32 gBattleAnimSpritePal_RoundWhiteHalo[] = INCBIN_U32("graphics/battle_anims/sprites/round_white_halo.gbapal.lz"); +const u16 gBattleAnimSpritePal_RoundWhiteHalo[] = INCBIN_U16("graphics/battle_anims/sprites/round_white_halo.gbapal"); const u32 gBattleAnimSpriteGfx_TealAlert[] = INCBIN_U32("graphics/battle_anims/sprites/teal_alert.4bpp.lz"); -const u32 gBattleAnimSpritePal_TealAlert[] = INCBIN_U32("graphics/battle_anims/sprites/teal_alert.gbapal.lz"); +const u16 gBattleAnimSpritePal_TealAlert[] = INCBIN_U16("graphics/battle_anims/sprites/teal_alert.gbapal"); const u32 gBattleAnimSpriteGfx_FangAttack[] = INCBIN_U32("graphics/battle_anims/sprites/fang_attack.4bpp.lz"); -const u32 gBattleAnimSpritePal_FangAttack[] = INCBIN_U32("graphics/battle_anims/sprites/fang_attack.gbapal.lz"); +const u16 gBattleAnimSpritePal_FangAttack[] = INCBIN_U16("graphics/battle_anims/sprites/fang_attack.gbapal"); const u32 gBattleAnimSpriteGfx_PurpleHandOutline[] = INCBIN_U32("graphics/battle_anims/sprites/purple_hand_outline.4bpp.lz"); -const u32 gBattleAnimSpritePal_PurpleHandOutline[] = INCBIN_U32("graphics/battle_anims/sprites/purple_hand_outline.gbapal.lz"); +const u16 gBattleAnimSpritePal_PurpleHandOutline[] = INCBIN_U16("graphics/battle_anims/sprites/purple_hand_outline.gbapal"); const u32 gBattleAnimMaskImage_Curse[] = INCBIN_U32("graphics/battle_anims/masks/curse.4bpp.lz"); const u32 gBattleAnimMaskTilemap_Curse[] = INCBIN_U32("graphics/battle_anims/masks/curse.bin.lz"); const u32 gBattleAnimSpriteGfx_Pencil[] = INCBIN_U32("graphics/battle_anims/sprites/pencil.4bpp.lz"); -const u32 gBattleAnimSpritePal_Pencil[] = INCBIN_U32("graphics/battle_anims/sprites/pencil.gbapal.lz"); +const u16 gBattleAnimSpritePal_Pencil[] = INCBIN_U16("graphics/battle_anims/sprites/pencil.gbapal"); const u32 gBattleAnimSpriteGfx_Spiral[] = INCBIN_U32("graphics/battle_anims/sprites/spiral.4bpp.lz"); -const u32 gBattleAnimSpritePal_Spiral[] = INCBIN_U32("graphics/battle_anims/sprites/spiral.gbapal.lz"); +const u16 gBattleAnimSpritePal_Spiral[] = INCBIN_U16("graphics/battle_anims/sprites/spiral.gbapal"); const u32 gBattleAnimSpriteGfx_Moon[] = INCBIN_U32("graphics/battle_anims/sprites/moon.4bpp.lz"); -const u32 gBattleAnimSpritePal_Moon[] = INCBIN_U32("graphics/battle_anims/sprites/moon.gbapal.lz"); +const u16 gBattleAnimSpritePal_Moon[] = INCBIN_U16("graphics/battle_anims/sprites/moon.gbapal"); const u32 gBattleAnimSpriteGfx_GreenSparkle[] = INCBIN_U32("graphics/battle_anims/sprites/green_sparkle.4bpp.lz"); -const u32 gBattleAnimSpritePal_GreenSparkle[] = INCBIN_U32("graphics/battle_anims/sprites/green_sparkle.gbapal.lz"); +const u16 gBattleAnimSpritePal_GreenSparkle[] = INCBIN_U16("graphics/battle_anims/sprites/green_sparkle.gbapal"); const u32 gBattleAnimSpriteGfx_SnoreZ[] = INCBIN_U32("graphics/battle_anims/sprites/snore_z.4bpp.lz"); -const u32 gBattleAnimSpritePal_SnoreZ[] = INCBIN_U32("graphics/battle_anims/sprites/snore_z.gbapal.lz"); +const u16 gBattleAnimSpritePal_SnoreZ[] = INCBIN_U16("graphics/battle_anims/sprites/snore_z.gbapal"); const u32 gBattleAnimSpriteGfx_Explosion[] = INCBIN_U32("graphics/battle_anims/sprites/explosion.4bpp.lz"); -const u32 gBattleAnimSpritePal_Explosion[] = INCBIN_U32("graphics/battle_anims/sprites/explosion.gbapal.lz"); +const u16 gBattleAnimSpritePal_Explosion[] = INCBIN_U16("graphics/battle_anims/sprites/explosion.gbapal"); const u32 gBattleAnimSpriteGfx_Nail[] = INCBIN_U32("graphics/battle_anims/sprites/nail.4bpp.lz"); -const u32 gBattleAnimSpritePal_Nail[] = INCBIN_U32("graphics/battle_anims/sprites/nail.gbapal.lz"); +const u16 gBattleAnimSpritePal_Nail[] = INCBIN_U16("graphics/battle_anims/sprites/nail.gbapal"); const u32 gBattleAnimSpriteGfx_GhostlySpirit[] = INCBIN_U32("graphics/battle_anims/sprites/ghostly_spirit.4bpp.lz"); -const u32 gBattleAnimSpritePal_GhostlySpirit[] = INCBIN_U32("graphics/battle_anims/sprites/ghostly_spirit.gbapal.lz"); +const u16 gBattleAnimSpritePal_GhostlySpirit[] = INCBIN_U16("graphics/battle_anims/sprites/ghostly_spirit.gbapal"); const u32 gBattleAnimSpriteGfx_WarmRock[] = INCBIN_U32("graphics/battle_anims/sprites/warm_rock.4bpp.lz"); -const u32 gBattleAnimSpritePal_WarmRock[] = INCBIN_U32("graphics/battle_anims/sprites/warm_rock.gbapal.lz"); +const u16 gBattleAnimSpritePal_WarmRock[] = INCBIN_U16("graphics/battle_anims/sprites/warm_rock.gbapal"); const u32 gBattleAnimSpriteGfx_PunchImpact[] = INCBIN_U32("graphics/battle_anims/sprites/punch_impact.4bpp.lz"); -const u32 gBattleAnimSpritePal_PunchImpact[] = INCBIN_U32("graphics/battle_anims/sprites/punch_impact.gbapal.lz"); +const u16 gBattleAnimSpritePal_PunchImpact[] = INCBIN_U16("graphics/battle_anims/sprites/punch_impact.gbapal"); const u32 gBattleAnimSpriteGfx_BreakingEgg[] = INCBIN_U32("graphics/battle_anims/sprites/breaking_egg.4bpp.lz"); -const u32 gBattleAnimSpritePal_BreakingEgg[] = INCBIN_U32("graphics/battle_anims/sprites/breaking_egg.gbapal.lz"); +const u16 gBattleAnimSpritePal_BreakingEgg[] = INCBIN_U16("graphics/battle_anims/sprites/breaking_egg.gbapal"); const u32 gBattleAnimSpriteGfx_ThinRing[] = INCBIN_U32("graphics/battle_anims/sprites/thin_ring.4bpp.lz"); -const u32 gBattleAnimSpritePal_ThinRing[] = INCBIN_U32("graphics/battle_anims/sprites/thin_ring.gbapal.lz"); +const u16 gBattleAnimSpritePal_ThinRing[] = INCBIN_U16("graphics/battle_anims/sprites/thin_ring.gbapal"); const u32 gBattleAnimSpriteGfx_MusicNotes2[] = INCBIN_U32("graphics/battle_anims/sprites/music_notes_2.4bpp.lz"); -const u32 gBattleAnimSpritePal_MusicNotes2[] = INCBIN_U32("graphics/battle_anims/sprites/music_notes_2.gbapal.lz"); +const u16 gBattleAnimSpritePal_MusicNotes2[] = INCBIN_U16("graphics/battle_anims/sprites/music_notes_2.gbapal"); const u32 gBattleAnimSpriteGfx_Bell[] = INCBIN_U32("graphics/battle_anims/sprites/bell.4bpp.lz"); -const u32 gBattleAnimSpritePal_Bell[] = INCBIN_U32("graphics/battle_anims/sprites/bell.gbapal.lz"); +const u16 gBattleAnimSpritePal_Bell[] = INCBIN_U16("graphics/battle_anims/sprites/bell.gbapal"); const u32 gBattleAnimSpriteGfx_SpeedDust[] = INCBIN_U32("graphics/battle_anims/sprites/speed_dust.4bpp.lz"); -const u32 gBattleAnimSpritePal_SpeedDust[] = INCBIN_U32("graphics/battle_anims/sprites/speed_dust.gbapal.lz"); +const u16 gBattleAnimSpritePal_SpeedDust[] = INCBIN_U16("graphics/battle_anims/sprites/speed_dust.gbapal"); const u32 gBattleAnimSpriteGfx_TornMetal[] = INCBIN_U32("graphics/battle_anims/sprites/torn_metal.4bpp.lz"); const u32 gBattleAnimSpriteGfx_ThoughtBubble[] = INCBIN_U32("graphics/battle_anims/sprites/thought_bubble.4bpp.lz"); -const u32 gBattleAnimSpritePal_ThoughtBubble[] = INCBIN_U32("graphics/battle_anims/sprites/thought_bubble.gbapal.lz"); +const u16 gBattleAnimSpritePal_ThoughtBubble[] = INCBIN_U16("graphics/battle_anims/sprites/thought_bubble.gbapal"); const u32 gBattleAnimSpriteGfx_Finger[] = INCBIN_U32("graphics/battle_anims/sprites/finger.4bpp.lz"); -const u32 gBattleAnimSpritePal_Finger[] = INCBIN_U32("graphics/battle_anims/sprites/finger.gbapal.lz"); +const u16 gBattleAnimSpritePal_Finger[] = INCBIN_U16("graphics/battle_anims/sprites/finger.gbapal"); const u32 gBattleAnimSpriteGfx_MagentaHeart[] = INCBIN_U32("graphics/battle_anims/sprites/magenta_heart.4bpp.lz"); -const u32 gBattleAnimSpritePal_PinkHeart[] = INCBIN_U32("graphics/battle_anims/sprites/pink_heart.gbapal.lz"); -const u32 gBattleAnimSpritePal_MagentaHeart[] = INCBIN_U32("graphics/battle_anims/sprites/magenta_heart.gbapal.lz"); -const u32 gBattleAnimSpritePal_RedHeart[] = INCBIN_U32("graphics/battle_anims/sprites/red_heart.gbapal.lz"); +const u16 gBattleAnimSpritePal_PinkHeart[] = INCBIN_U16("graphics/battle_anims/sprites/pink_heart.gbapal"); +const u16 gBattleAnimSpritePal_MagentaHeart[] = INCBIN_U16("graphics/battle_anims/sprites/magenta_heart.gbapal"); +const u16 gBattleAnimSpritePal_RedHeart[] = INCBIN_U16("graphics/battle_anims/sprites/red_heart.gbapal"); const u32 gBattleAnimBgImage_Attract[] = INCBIN_U32("graphics/battle_anims/backgrounds/attract.4bpp.lz"); -const u32 gBattleAnimBgPalette_Attract[] = INCBIN_U32("graphics/battle_anims/backgrounds/attract.gbapal.lz"); +const u16 gBattleAnimBgPalette_Attract[] = INCBIN_U16("graphics/battle_anims/backgrounds/attract.gbapal"); const u32 gBattleAnimBgTilemap_Attract[] = INCBIN_U32("graphics/battle_anims/backgrounds/attract.bin.lz"); const u32 gBattleAnimSpriteGfx_RedOrb[] = INCBIN_U32("graphics/battle_anims/sprites/red_orb.4bpp.lz"); -const u32 gBattleAnimSpritePal_RedOrb[] = INCBIN_U32("graphics/battle_anims/sprites/red_orb.gbapal.lz"); +const u16 gBattleAnimSpritePal_RedOrb[] = INCBIN_U16("graphics/battle_anims/sprites/red_orb.gbapal"); const u32 gBattleAnimSpriteGfx_CircleOfLight[] = INCBIN_U32("graphics/battle_anims/sprites/circle_of_light.4bpp.lz"); const u32 gBattleAnimSpriteGfx_ElectricOrbs[] = INCBIN_U32("graphics/battle_anims/sprites/electric_orbs.4bpp.lz"); const u32 gBattleAnimSpriteGfx_Electricity[] = INCBIN_U32("graphics/battle_anims/sprites/electricity.4bpp.lz"); -const u32 gBattleAnimSpritePal_ElectricOrbs[] = INCBIN_U32("graphics/battle_anims/sprites/electric_orbs.gbapal.lz"); +const u16 gBattleAnimSpritePal_ElectricOrbs[] = INCBIN_U16("graphics/battle_anims/sprites/electric_orbs.gbapal"); const u32 gBattleAnimSpriteGfx_Finger2[] = INCBIN_U32("graphics/battle_anims/sprites/finger_2.4bpp.lz"); const u32 gBattleAnimSpriteGfx_MovementWaves[] = INCBIN_U32("graphics/battle_anims/sprites/movement_waves.4bpp.lz"); -const u32 gBattleAnimSpritePal_MovementWaves[] = INCBIN_U32("graphics/battle_anims/sprites/movement_waves.gbapal.lz"); +const u16 gBattleAnimSpritePal_MovementWaves[] = INCBIN_U16("graphics/battle_anims/sprites/movement_waves.gbapal"); -const u32 gBattleAnimBgPalette_ScaryFace[] = INCBIN_U32("graphics/battle_anims/backgrounds/scary_face.gbapal.lz"); +const u16 gBattleAnimBgPalette_ScaryFace[] = INCBIN_U16("graphics/battle_anims/backgrounds/scary_face.gbapal"); const u32 gBattleAnimBgImage_ScaryFace[] = INCBIN_U32("graphics/battle_anims/backgrounds/scary_face.4bpp.lz"); -const u32 gBattleAnimSpritePal_EyeSparkle[] = INCBIN_U32("graphics/battle_anims/sprites/eye_sparkle.gbapal.lz"); +const u16 gBattleAnimSpritePal_EyeSparkle[] = INCBIN_U16("graphics/battle_anims/sprites/eye_sparkle.gbapal"); const u32 gBattleAnimSpriteGfx_EyeSparkle[] = INCBIN_U32("graphics/battle_anims/sprites/eye_sparkle.4bpp.lz"); const u32 gBattleAnimSpriteGfx_Anger[] = INCBIN_U32("graphics/battle_anims/sprites/anger.4bpp.lz"); -const u32 gBattleAnimSpritePal_Anger[] = INCBIN_U32("graphics/battle_anims/sprites/anger.gbapal.lz"); +const u16 gBattleAnimSpritePal_Anger[] = INCBIN_U16("graphics/battle_anims/sprites/anger.gbapal"); const u32 gBattleAnimSpriteGfx_Conversion[] = INCBIN_U32("graphics/battle_anims/sprites/conversion.4bpp.lz"); -const u32 gBattleAnimSpritePal_Conversion[] = INCBIN_U32("graphics/battle_anims/sprites/conversion.gbapal.lz"); +const u16 gBattleAnimSpritePal_Conversion[] = INCBIN_U16("graphics/battle_anims/sprites/conversion.gbapal"); -const u32 gBattleAnimSpritePal_Angel[] = INCBIN_U32("graphics/battle_anims/sprites/angel.gbapal.lz"); +const u16 gBattleAnimSpritePal_Angel[] = INCBIN_U16("graphics/battle_anims/sprites/angel.gbapal"); const u32 gBattleAnimSpriteGfx_Angel[] = INCBIN_U32("graphics/battle_anims/sprites/angel.4bpp.lz"); -const u32 gBattleAnimSpritePal_Devil[] = INCBIN_U32("graphics/battle_anims/sprites/devil.gbapal.lz"); +const u16 gBattleAnimSpritePal_Devil[] = INCBIN_U16("graphics/battle_anims/sprites/devil.gbapal"); const u32 gBattleAnimSpriteGfx_Devil[] = INCBIN_U32("graphics/battle_anims/sprites/devil.4bpp.lz"); const u32 gBattleAnimSpriteGfx_Swipe[] = INCBIN_U32("graphics/battle_anims/sprites/swipe.4bpp.lz"); -const u32 gBattleAnimSpritePal_Swipe[] = INCBIN_U32("graphics/battle_anims/sprites/swipe.gbapal.lz"); +const u16 gBattleAnimSpritePal_Swipe[] = INCBIN_U16("graphics/battle_anims/sprites/swipe.gbapal"); -const u32 gBattleAnimSpritePal_Roots[] = INCBIN_U32("graphics/battle_anims/sprites/roots.gbapal.lz"); +const u16 gBattleAnimSpritePal_Roots[] = INCBIN_U16("graphics/battle_anims/sprites/roots.gbapal"); const u32 gBattleAnimSpriteGfx_Roots[] = INCBIN_U32("graphics/battle_anims/sprites/roots.4bpp.lz"); -const u32 gBattleAnimSpritePal_ItemBag[] = INCBIN_U32("graphics/battle_anims/sprites/item_bag.gbapal.lz"); +const u16 gBattleAnimSpritePal_ItemBag[] = INCBIN_U16("graphics/battle_anims/sprites/item_bag.gbapal"); const u32 gBattleAnimSpriteGfx_ItemBag[] = INCBIN_U32("graphics/battle_anims/sprites/item_bag.4bpp.lz"); -const u32 gBattleAnimSpritePal_TriAttackTriangle[] = INCBIN_U32("graphics/battle_anims/sprites/tri_attack_triangle.gbapal.lz"); +const u16 gBattleAnimSpritePal_TriAttackTriangle[] = INCBIN_U16("graphics/battle_anims/sprites/tri_attack_triangle.gbapal"); const u32 gBattleAnimSpriteGfx_TriAttackTriangle[] = INCBIN_U32("graphics/battle_anims/sprites/tri_attack_triangle.4bpp.lz"); -const u32 gBattleAnimSpritePal_LetterZ[] = INCBIN_U32("graphics/battle_anims/sprites/letter_z.gbapal.lz"); +const u16 gBattleAnimSpritePal_LetterZ[] = INCBIN_U16("graphics/battle_anims/sprites/letter_z.gbapal"); const u32 gBattleAnimSpriteGfx_LetterZ[] = INCBIN_U32("graphics/battle_anims/sprites/letter_z.4bpp.lz"); -const u32 gBattleAnimBgPalette_Impact[] = INCBIN_U32("graphics/battle_anims/backgrounds/impact.gbapal.lz"); +const u16 gBattleAnimBgPalette_Impact[] = INCBIN_U16("graphics/battle_anims/backgrounds/impact.gbapal"); const u32 gBattleAnimBgImage_Impact[] = INCBIN_U32("graphics/battle_anims/backgrounds/impact.4bpp.lz"); const u32 gBattleAnimBgTilemap_ImpactOpponent[] = INCBIN_U32("graphics/battle_anims/backgrounds/impact_opponent.bin.lz"); @@ -1128,61 +1128,61 @@ const u32 gBattleAnimBgTilemap_ImpactPlayer[] = INCBIN_U32("graphics/battle_anim const u32 gBattleAnimBgTilemap_ImpactContests[] = INCBIN_U32("graphics/battle_anims/backgrounds/impact_contests.bin.lz"); const u32 gBattleAnimSpriteGfx_JaggedMusicNote[] = INCBIN_U32("graphics/battle_anims/sprites/jagged_music_note.4bpp.lz"); -const u32 gBattleAnimSpritePal_JaggedMusicNote[] = INCBIN_U32("graphics/battle_anims/sprites/jagged_music_note.gbapal.lz"); +const u16 gBattleAnimSpritePal_JaggedMusicNote[] = INCBIN_U16("graphics/battle_anims/sprites/jagged_music_note.gbapal"); const u32 gBattleAnimSpriteGfx_Spotlight[] = INCBIN_U32("graphics/battle_anims/sprites/spotlight.4bpp.lz"); const u32 gBattleAnimSpriteGfx_Pokeball[] = INCBIN_U32("graphics/battle_anims/sprites/pokeball.4bpp.lz"); -const u32 gBattleAnimSpritePal_Pokeball[] = INCBIN_U32("graphics/battle_anims/sprites/pokeball.gbapal.lz"); +const u16 gBattleAnimSpritePal_Pokeball[] = INCBIN_U16("graphics/battle_anims/sprites/pokeball.gbapal"); const u32 gBattleAnimSpriteGfx_RapidSpin[] = INCBIN_U32("graphics/battle_anims/sprites/rapid_spin.4bpp.lz"); -const u32 gBattleAnimSpritePal_RapidSpin[] = INCBIN_U32("graphics/battle_anims/sprites/rapid_spin.gbapal.lz"); +const u16 gBattleAnimSpritePal_RapidSpin[] = INCBIN_U16("graphics/battle_anims/sprites/rapid_spin.gbapal"); const u32 gBattleAnimSpriteGfx_MilkBottle[] = INCBIN_U32("graphics/battle_anims/sprites/milk_bottle.4bpp.lz"); -const u32 gBattleAnimSpritePal_MilkBottle[] = INCBIN_U32("graphics/battle_anims/sprites/milk_bottle.gbapal.lz"); +const u16 gBattleAnimSpritePal_MilkBottle[] = INCBIN_U16("graphics/battle_anims/sprites/milk_bottle.gbapal"); const u32 gBattleAnimSpriteGfx_WispFire[] = INCBIN_U32("graphics/battle_anims/sprites/wisp_fire.4bpp.lz"); -const u32 gBattleAnimSpritePal_WispOrb[] = INCBIN_U32("graphics/battle_anims/sprites/wisp_orb.gbapal.lz"); +const u16 gBattleAnimSpritePal_WispOrb[] = INCBIN_U16("graphics/battle_anims/sprites/wisp_orb.gbapal"); const u32 gBattleAnimSpriteGfx_WispOrb[] = INCBIN_U32("graphics/battle_anims/sprites/wisp_orb.4bpp.lz"); const u32 gBattleAnimSpriteGfx_GoldStars[] = INCBIN_U32("graphics/battle_anims/sprites/gold_stars.4bpp.lz"); -const u32 gBattleAnimSpritePal_GoldStars[] = INCBIN_U32("graphics/battle_anims/sprites/gold_stars.gbapal.lz"); +const u16 gBattleAnimSpritePal_GoldStars[] = INCBIN_U16("graphics/battle_anims/sprites/gold_stars.gbapal"); const u32 gBattleAnimSpriteGfx_EclipsingOrb[] = INCBIN_U32("graphics/battle_anims/sprites/eclipsing_orb.4bpp.lz"); -const u32 gBattleAnimSpritePal_EclipsingOrb[] = INCBIN_U32("graphics/battle_anims/sprites/eclipsing_orb.gbapal.lz"); +const u16 gBattleAnimSpritePal_EclipsingOrb[] = INCBIN_U16("graphics/battle_anims/sprites/eclipsing_orb.gbapal"); const u32 gBattleAnimSpriteGfx_PinkPetal[] = INCBIN_U32("graphics/battle_anims/sprites/pink_petal.4bpp.lz"); -const u32 gBattleAnimSpritePal_PinkPetal[] = INCBIN_U32("graphics/battle_anims/sprites/pink_petal.gbapal.lz"); +const u16 gBattleAnimSpritePal_PinkPetal[] = INCBIN_U16("graphics/battle_anims/sprites/pink_petal.gbapal"); const u32 gBattleAnimSpriteGfx_GrayOrb[] = INCBIN_U32("graphics/battle_anims/sprites/gray_orb.4bpp.lz"); -const u32 gBattleAnimSpritePal_GrayOrb[] = INCBIN_U32("graphics/battle_anims/sprites/gray_orb.gbapal.lz"); +const u16 gBattleAnimSpritePal_GrayOrb[] = INCBIN_U16("graphics/battle_anims/sprites/gray_orb.gbapal"); -const u32 gBattleAnimSpritePal_BlueOrb[] = INCBIN_U32("graphics/battle_anims/sprites/blue_orb.gbapal.lz"); -const u32 gBattleAnimSpritePal_RedOrb2[] = INCBIN_U32("graphics/battle_anims/sprites/red_orb_2.gbapal.lz"); +const u16 gBattleAnimSpritePal_BlueOrb[] = INCBIN_U16("graphics/battle_anims/sprites/blue_orb.gbapal"); +const u16 gBattleAnimSpritePal_RedOrb2[] = INCBIN_U16("graphics/battle_anims/sprites/red_orb_2.gbapal"); const u32 gBattleAnimBgImage_Drill[] = INCBIN_U32("graphics/battle_anims/backgrounds/drill.4bpp.lz"); -const u32 gBattleAnimBgPalette_Drill[] = INCBIN_U32("graphics/battle_anims/backgrounds/drill.gbapal.lz"); +const u16 gBattleAnimBgPalette_Drill[] = INCBIN_U16("graphics/battle_anims/backgrounds/drill.gbapal"); -const u32 gBattleAnimBgPalette_Sky[] = INCBIN_U32("graphics/battle_anims/backgrounds/sky.gbapal.lz"); +const u16 gBattleAnimBgPalette_Sky[] = INCBIN_U16("graphics/battle_anims/backgrounds/sky.gbapal"); const u32 gBattleAnimBgTilemap_Drill[] = INCBIN_U32("graphics/battle_anims/backgrounds/drill.bin.lz"); const u32 gBattleAnimBgTilemap_DrillContests[] = INCBIN_U32("graphics/battle_anims/backgrounds/drill_contests.bin.lz"); const u32 gBattleAnimBgImage_Aurora[] = INCBIN_U32("graphics/battle_anims/backgrounds/aurora.4bpp.lz"); -const u32 gBattleAnimBgPalette_Aurora[] = INCBIN_U32("graphics/battle_anims/backgrounds/aurora.gbapal.lz"); +const u16 gBattleAnimBgPalette_Aurora[] = INCBIN_U16("graphics/battle_anims/backgrounds/aurora.gbapal"); const u32 gBattleAnimBgTilemap_Aurora[] = INCBIN_U32("graphics/battle_anims/backgrounds/aurora.bin.lz"); const u32 gBattleAnimBgTilemap_HighspeedOpponent[] = INCBIN_U32("graphics/battle_anims/backgrounds/highspeed_opponent.bin.lz"); -const u32 gBattleAnimBgPalette_Highspeed[] = INCBIN_U32("graphics/battle_anims/backgrounds/highspeed.gbapal.lz"); +const u16 gBattleAnimBgPalette_Highspeed[] = INCBIN_U16("graphics/battle_anims/backgrounds/highspeed.gbapal"); -const u32 gBattleAnimBgPalette_Bug[] = INCBIN_U32("graphics/battle_anims/backgrounds/bug.gbapal.lz"); +const u16 gBattleAnimBgPalette_Bug[] = INCBIN_U16("graphics/battle_anims/backgrounds/bug.gbapal"); const u32 gBattleAnimBgImage_Highspeed[] = INCBIN_U32("graphics/battle_anims/backgrounds/highspeed.4bpp.lz"); const u32 gBattleAnimBgTilemap_HighspeedPlayer[] = INCBIN_U32("graphics/battle_anims/backgrounds/highspeed_player.bin.lz"); const u32 gBattleAnimMaskImage_LightBeam[] = INCBIN_U32("graphics/battle_anims/masks/light_beam.4bpp.lz"); -const u32 gBattleAnimMaskPalette_LightBeam[] = INCBIN_U32("graphics/battle_anims/masks/light_beam.gbapal.lz"); +const u16 gBattleAnimMaskPalette_LightBeam[] = INCBIN_U16("graphics/battle_anims/masks/light_beam.gbapal"); const u32 gBattleAnimMaskTilemap_LightBeam[] = INCBIN_U32("graphics/battle_anims/masks/light_beam.bin.lz"); const u32 gBattleAnimBgTilemap_GuillotineOpponent[] = INCBIN_U32("graphics/battle_anims/backgrounds/guillotine_opponent.bin.lz"); @@ -1190,60 +1190,60 @@ const u32 gBattleAnimBgTilemap_GuillotinePlayer[] = INCBIN_U32("graphics/battle_ const u32 gBattleAnimBgTilemap_GuillotineContests[] = INCBIN_U32("graphics/battle_anims/backgrounds/guillotine_contests.bin.lz"); const u32 gBattleAnimBgImage_Guillotine[] = INCBIN_U32("graphics/battle_anims/backgrounds/guillotine.4bpp.lz"); -const u32 gBattleAnimBgPalette_Guillotine[] = INCBIN_U32("graphics/battle_anims/backgrounds/guillotine.gbapal.lz"); +const u16 gBattleAnimBgPalette_Guillotine[] = INCBIN_U16("graphics/battle_anims/backgrounds/guillotine.gbapal"); const u32 gBattleAnimBgImage_Thunder[] = INCBIN_U32("graphics/battle_anims/backgrounds/thunder.4bpp.lz"); -const u32 gBattleAnimBgPalette_Thunder[] = INCBIN_U32("graphics/battle_anims/backgrounds/thunder.gbapal.lz"); +const u16 gBattleAnimBgPalette_Thunder[] = INCBIN_U16("graphics/battle_anims/backgrounds/thunder.gbapal"); const u32 gBattleAnimBgTilemap_Thunder[] = INCBIN_U32("graphics/battle_anims/backgrounds/thunder.bin.lz"); const u32 gBattleAnimSpriteGfx_PainSplit[] = INCBIN_U32("graphics/battle_anims/sprites/pain_split.4bpp.lz"); -const u32 gBattleAnimSpritePal_PainSplit[] = INCBIN_U32("graphics/battle_anims/sprites/pain_split.gbapal.lz"); +const u16 gBattleAnimSpritePal_PainSplit[] = INCBIN_U16("graphics/battle_anims/sprites/pain_split.gbapal"); const u32 gBattleAnimSpriteGfx_HandsAndFeet[] = INCBIN_U32("graphics/battle_anims/sprites/hands_and_feet.4bpp.lz"); -const u32 gBattleAnimSpritePal_HandsAndFeet[] = INCBIN_U32("graphics/battle_anims/sprites/hands_and_feet.gbapal.lz"); +const u16 gBattleAnimSpritePal_HandsAndFeet[] = INCBIN_U16("graphics/battle_anims/sprites/hands_and_feet.gbapal"); const u32 gBattleAnimSpriteGfx_Confetti[] = INCBIN_U32("graphics/battle_anims/sprites/confetti.4bpp.lz"); -const u32 gBattleAnimSpritePal_Confetti[] = INCBIN_U32("graphics/battle_anims/sprites/confetti.gbapal.lz"); +const u16 gBattleAnimSpritePal_Confetti[] = INCBIN_U16("graphics/battle_anims/sprites/confetti.gbapal"); const u32 gBattleAnimSpriteGfx_Substitute[] = INCBIN_U32("graphics/battle_anims/sprites/substitute.4bpp.lz"); const u32 gBattleAnimSpriteGfx_SubstituteBack[] = INCBIN_U32("graphics/battle_anims/sprites/substitute_back.4bpp.lz"); -const u32 gBattleAnimSpritePal_Substitute[] = INCBIN_U32("graphics/battle_anims/sprites/substitute.gbapal.lz"); +const u16 gBattleAnimSpritePal_Substitute[] = INCBIN_U16("graphics/battle_anims/sprites/substitute.gbapal"); const u32 gBattleAnimSpriteGfx_GreenStar[] = INCBIN_U32("graphics/battle_anims/sprites/green_star.4bpp.lz"); -const u32 gBattleAnimSpritePal_GreenStar[] = INCBIN_U32("graphics/battle_anims/sprites/green_star.gbapal.lz"); +const u16 gBattleAnimSpritePal_GreenStar[] = INCBIN_U16("graphics/battle_anims/sprites/green_star.gbapal"); const u32 gConfetti_Gfx[] = INCBIN_U32("graphics/misc/confetti.4bpp.lz"); -const u32 gConfetti_Pal[] = INCBIN_U32("graphics/misc/confetti.gbapal.lz"); +const u16 gConfetti_Pal[] = INCBIN_U16("graphics/misc/confetti.gbapal"); const u32 gBattleAnimSpriteGfx_PinkCloud[] = INCBIN_U32("graphics/battle_anims/sprites/pink_cloud.4bpp.lz"); -const u32 gBattleAnimSpritePal_PinkCloud[] = INCBIN_U32("graphics/battle_anims/sprites/pink_cloud.gbapal.lz"); +const u16 gBattleAnimSpritePal_PinkCloud[] = INCBIN_U16("graphics/battle_anims/sprites/pink_cloud.gbapal"); const u32 gBattleAnimSpriteGfx_SweatDrop[] = INCBIN_U32("graphics/battle_anims/sprites/sweat_drop.4bpp.lz"); -const u32 gBattleAnimSpritePal_SweatDrop[] = INCBIN_U32("graphics/battle_anims/sprites/sweat_drop.gbapal.lz"); +const u16 gBattleAnimSpritePal_SweatDrop[] = INCBIN_U16("graphics/battle_anims/sprites/sweat_drop.gbapal"); const u32 gStatAnim_Gfx[] = INCBIN_U32("graphics/battle_anims/stat_change/tiles.4bpp.lz"); const u32 gStatAnim_Increase_Tilemap[] = INCBIN_U32("graphics/battle_anims/stat_change/increase.bin.lz"); const u32 gStatAnim_Decrease_Tilemap[] = INCBIN_U32("graphics/battle_anims/stat_change/decrease.bin.lz"); -const u32 gStatAnim_Defense_Pal[] = INCBIN_U32("graphics/battle_anims/stat_change/defense.gbapal.lz"); -const u32 gStatAnim_Attack_Pal[] = INCBIN_U32("graphics/battle_anims/stat_change/attack.gbapal.lz"); -const u32 gStatAnim_Accuracy_Pal[] = INCBIN_U32("graphics/battle_anims/stat_change/accuracy.gbapal.lz"); -const u32 gStatAnim_Speed_Pal[] = INCBIN_U32("graphics/battle_anims/stat_change/speed.gbapal.lz"); -const u32 gStatAnim_Multiple_Pal[] = INCBIN_U32("graphics/battle_anims/stat_change/multiple.gbapal.lz"); -const u32 gStatAnim_Evasion_Pal[] = INCBIN_U32("graphics/battle_anims/stat_change/evasion.gbapal.lz"); -const u32 gStatAnim_SpAttack_Pal[] = INCBIN_U32("graphics/battle_anims/stat_change/sp_attack.gbapal.lz"); -const u32 gStatAnim_SpDefense_Pal[] = INCBIN_U32("graphics/battle_anims/stat_change/sp_defense.gbapal.lz"); +const u16 gStatAnim_Defense_Pal[] = INCBIN_U16("graphics/battle_anims/stat_change/defense.gbapal"); +const u16 gStatAnim_Attack_Pal[] = INCBIN_U16("graphics/battle_anims/stat_change/attack.gbapal"); +const u16 gStatAnim_Accuracy_Pal[] = INCBIN_U16("graphics/battle_anims/stat_change/accuracy.gbapal"); +const u16 gStatAnim_Speed_Pal[] = INCBIN_U16("graphics/battle_anims/stat_change/speed.gbapal"); +const u16 gStatAnim_Multiple_Pal[] = INCBIN_U16("graphics/battle_anims/stat_change/multiple.gbapal"); +const u16 gStatAnim_Evasion_Pal[] = INCBIN_U16("graphics/battle_anims/stat_change/evasion.gbapal"); +const u16 gStatAnim_SpAttack_Pal[] = INCBIN_U16("graphics/battle_anims/stat_change/sp_attack.gbapal"); +const u16 gStatAnim_SpDefense_Pal[] = INCBIN_U16("graphics/battle_anims/stat_change/sp_defense.gbapal"); const u32 gCureBubblesGfx[] = INCBIN_U32("graphics/battle_anims/masks/cure_bubbles.4bpp.lz"); -const u32 gCureBubblesPal[] = INCBIN_U32("graphics/battle_anims/masks/cure_bubbles.gbapal.lz"); +const u16 gCureBubblesPal[] = INCBIN_U16("graphics/battle_anims/masks/cure_bubbles.gbapal"); const u32 gCureBubblesTilemap[] = INCBIN_U32("graphics/battle_anims/masks/cure_bubbles.bin.lz"); -const u32 gBattleAnimSpritePal_PurpleScratch[] = INCBIN_U32("graphics/battle_anims/sprites/purple_scratch.gbapal.lz"); +const u16 gBattleAnimSpritePal_PurpleScratch[] = INCBIN_U16("graphics/battle_anims/sprites/purple_scratch.gbapal"); const u32 gBattleAnimSpriteGfx_PurpleScratch[] = INCBIN_U32("graphics/battle_anims/sprites/purple_scratch.4bpp.lz"); const u32 gBattleAnimSpriteGfx_PurpleSwipe[] = INCBIN_U32("graphics/battle_anims/sprites/purple_swipe.4bpp.lz"); const u32 gBattleAnimSpriteGfx_GuardRing[] = INCBIN_U32("graphics/battle_anims/sprites/guard_ring.4bpp.lz"); -const u32 gBattleAnimSpritePal_GuardRing[] = INCBIN_U32("graphics/battle_anims/sprites/guard_ring.gbapal.lz"); +const u16 gBattleAnimSpritePal_GuardRing[] = INCBIN_U16("graphics/battle_anims/sprites/guard_ring.gbapal"); const u32 gBattleAnimSpriteGfx_TagHand[] = INCBIN_U32("graphics/battle_anims/sprites/tag_hand.4bpp.lz"); @@ -1253,53 +1253,53 @@ const u32 UnusedLevelupAnimationGfx[] = INCBIN_U32("graphics/battle_anims/masks/ const u32 UnusedLevelupAnimationTilemap[] = INCBIN_U32("graphics/battle_anims/masks/unused_level_up.bin.lz"); const u32 gBattleAnimSpriteGfx_SmallRedEye[] = INCBIN_U32("graphics/battle_anims/sprites/small_red_eye.4bpp.lz"); -const u32 gBattleAnimSpritePal_SmallRedEye[] = INCBIN_U32("graphics/battle_anims/sprites/small_red_eye.gbapal.lz"); +const u16 gBattleAnimSpritePal_SmallRedEye[] = INCBIN_U16("graphics/battle_anims/sprites/small_red_eye.gbapal"); const u32 gBattleAnimSpriteGfx_HollowOrb[] = INCBIN_U32("graphics/battle_anims/sprites/hollow_orb.4bpp.lz"); -const u32 gBattleAnimSpritePal_HollowOrb[] = INCBIN_U32("graphics/battle_anims/sprites/hollow_orb.gbapal.lz"); +const u16 gBattleAnimSpritePal_HollowOrb[] = INCBIN_U16("graphics/battle_anims/sprites/hollow_orb.gbapal"); const u32 gBattleAnimSpriteGfx_XSign[] = INCBIN_U32("graphics/battle_anims/sprites/x_sign.4bpp.lz"); const u32 gBattleAnimSpriteGfx_BluegreenOrb[] = INCBIN_U32("graphics/battle_anims/sprites/bluegreen_orb.4bpp.lz"); -const u32 gBattleAnimSpritePal_BluegreenOrb[] = INCBIN_U32("graphics/battle_anims/sprites/bluegreen_orb.gbapal.lz"); +const u16 gBattleAnimSpritePal_BluegreenOrb[] = INCBIN_U16("graphics/battle_anims/sprites/bluegreen_orb.gbapal"); const u32 gBattleAnimSpriteGfx_PinkVioletOrb[] = INCBIN_U32("graphics/battle_anims/sprites/pinkvio_orb.4bpp.lz"); -const u32 gBattleAnimSpritePal_PinkVioletOrb[] = INCBIN_U32("graphics/battle_anims/sprites/pinkvio_orb.gbapal.lz"); +const u16 gBattleAnimSpritePal_PinkVioletOrb[] = INCBIN_U16("graphics/battle_anims/sprites/pinkvio_orb.gbapal"); const u32 gBattleAnimSpriteGfx_PawPrint[] = INCBIN_U32("graphics/battle_anims/sprites/paw_print.4bpp.lz"); -const u32 gBattleAnimSpritePal_PawPrint[] = INCBIN_U32("graphics/battle_anims/sprites/paw_print.gbapal.lz"); +const u16 gBattleAnimSpritePal_PawPrint[] = INCBIN_U16("graphics/battle_anims/sprites/paw_print.gbapal"); const u32 gBattleAnimSpriteGfx_PurpleFlame[] = INCBIN_U32("graphics/battle_anims/sprites/purple_flame.4bpp.lz"); -const u32 gBattleAnimSpritePal_PurpleFlame[] = INCBIN_U32("graphics/battle_anims/sprites/purple_flame.gbapal.lz"); +const u16 gBattleAnimSpritePal_PurpleFlame[] = INCBIN_U16("graphics/battle_anims/sprites/purple_flame.gbapal"); const u32 gBattleAnimSpriteGfx_RedBall[] = INCBIN_U32("graphics/battle_anims/sprites/red_ball.4bpp.lz"); -const u32 gBattleAnimSpritePal_RedBall[] = INCBIN_U32("graphics/battle_anims/sprites/red_ball.gbapal.lz"); +const u16 gBattleAnimSpritePal_RedBall[] = INCBIN_U16("graphics/battle_anims/sprites/red_ball.gbapal"); const u32 gBattleAnimSpriteGfx_SmellingsaltEffect[] = INCBIN_U32("graphics/battle_anims/sprites/smellingsalt_effect.4bpp.lz"); -const u32 gBattleAnimSpritePal_SmellingsaltEffect[] = INCBIN_U32("graphics/battle_anims/sprites/smellingsalt_effect.gbapal.lz"); +const u16 gBattleAnimSpritePal_SmellingsaltEffect[] = INCBIN_U16("graphics/battle_anims/sprites/smellingsalt_effect.gbapal"); const u32 gBattleAnimSpriteGfx_MagnifyingGlass[] = INCBIN_U32("graphics/battle_anims/sprites/magnifying_glass.4bpp.lz"); -const u32 gBattleAnimSpritePal_MagnifyingGlass[] = INCBIN_U32("graphics/battle_anims/sprites/magnifying_glass.gbapal.lz"); +const u16 gBattleAnimSpritePal_MagnifyingGlass[] = INCBIN_U16("graphics/battle_anims/sprites/magnifying_glass.gbapal"); const u32 gBattleAnimSpriteGfx_Meteor[] = INCBIN_U32("graphics/battle_anims/sprites/meteor.4bpp.lz"); -const u32 gBattleAnimSpritePal_Meteor[] = INCBIN_U32("graphics/battle_anims/sprites/meteor.gbapal.lz"); +const u16 gBattleAnimSpritePal_Meteor[] = INCBIN_U16("graphics/battle_anims/sprites/meteor.gbapal"); const u32 gBattleAnimSpriteGfx_FlatRock[] = INCBIN_U32("graphics/battle_anims/sprites/flat_rock.4bpp.lz"); -const u32 gBattleAnimSpritePal_FlatRock[] = INCBIN_U32("graphics/battle_anims/sprites/flat_rock.gbapal.lz"); +const u16 gBattleAnimSpritePal_FlatRock[] = INCBIN_U16("graphics/battle_anims/sprites/flat_rock.gbapal"); const u32 gBattleAnimSpriteGfx_TeraStarstormBeam[] = INCBIN_U32("graphics/battle_anims/sprites/starstorm_beam.4bpp.lz"); -const u32 gBattleAnimSpritePal_TeraStarstormBeam[] = INCBIN_U32("graphics/battle_anims/sprites/starstorm_beam.gbapal.lz"); +const u16 gBattleAnimSpritePal_TeraStarstormBeam[] = INCBIN_U16("graphics/battle_anims/sprites/starstorm_beam.gbapal"); const u32 gBattleAnimSpriteGfx_SaltParticle[] = INCBIN_U32("graphics/battle_anims/sprites/salt_particle.4bpp.lz"); -const u32 gBattleAnimSpritePal_SaltParticle[] = INCBIN_U32("graphics/battle_anims/sprites/salt_particle.gbapal.lz"); +const u16 gBattleAnimSpritePal_SaltParticle[] = INCBIN_U16("graphics/battle_anims/sprites/salt_particle.gbapal"); -const u32 gBattleAnimUnusedPal_Unknown2[] = INCBIN_U32("graphics/battle_anims/unused/unknown_2.gbapal.lz"); +const u16 gBattleAnimUnusedPal_Unknown2[] = INCBIN_U16("graphics/battle_anims/unused/unknown_2.gbapal"); #include "data/graphics/trainers.h" const u32 gBattleVSFrame_Gfx[] = INCBIN_U32("graphics/battle_transitions/vs_frame.4bpp.lz"); const u32 gBattleVSFrame_Tilemap[] = INCBIN_U32("graphics/battle_transitions/vs_frame.bin.lz"); -const u32 gBattleVSFrame_Pal[] = INCBIN_U32("graphics/battle_transitions/vs_frame.gbapal.lz"); +const u16 gBattleVSFrame_Pal[] = INCBIN_U16("graphics/battle_transitions/vs_frame.gbapal"); const u32 gVsLettersGfx[] = INCBIN_U32("graphics/battle_transitions/vs.4bpp.lz"); @@ -1315,14 +1315,14 @@ const u32 gDomeTourneyInfoCard_Gfx[] = INCBIN_U32("graphics/battle_frontier/tour const u32 gDomeTourneyInfoCard_Tilemap[] = INCBIN_U32("graphics/battle_frontier/tourney_info_card_tilemap.bin.lz"); const u32 gDomeTourneyInfoCardBg_Tilemap[] = INCBIN_U32("graphics/battle_frontier/tourney_info_card_bg.bin.lz"); const u32 gDomeTourneyTreeButtons_Gfx[] = INCBIN_U32("graphics/battle_frontier/tourney_buttons.4bpp.lz"); // exit/cancel and Poké Ball buttons -const u32 gDomeTourneyTree_Pal[] = INCBIN_U32("graphics/battle_frontier/tourney_tree.gbapal.lz"); -const u32 gDomeTourneyTreeButtons_Pal[] = INCBIN_U32("graphics/battle_frontier/tourney_buttons.gbapal.lz"); -const u32 gDomeTourneyMatchCardBg_Pal[] = INCBIN_U32("graphics/battle_frontier/tourney_match_card_bg.gbapal.lz"); +const u16 gDomeTourneyTree_Pal[] = INCBIN_U16("graphics/battle_frontier/tourney_tree.gbapal"); +const u16 gDomeTourneyTreeButtons_Pal[] = INCBIN_U16("graphics/battle_frontier/tourney_buttons.gbapal"); +const u16 gDomeTourneyMatchCardBg_Pal[] = INCBIN_U16("graphics/battle_frontier/tourney_match_card_bg.gbapal"); const u32 gBattleArenaJudgmentSymbolsGfx[] = INCBIN_U32("graphics/battle_frontier/arena_judgment_symbols.4bpp.lz"); -const u32 gBattleArenaJudgmentSymbolsPalette[] = INCBIN_U32("graphics/battle_frontier/arena_judgment_symbols.gbapal.lz"); +const u16 gBattleArenaJudgmentSymbolsPalette[] = INCBIN_U16("graphics/battle_frontier/arena_judgment_symbols.gbapal"); -const u32 gBattleWindowTextPalette[] = INCBIN_U32("graphics/battle_interface/text.gbapal.lz"); +const u16 gBattleWindowTextPalette[] = INCBIN_U16("graphics/battle_interface/text.gbapal"); const u16 gPPTextPalette[] = INCBIN_U16("graphics/battle_interface/text_pp.gbapal"); const u16 gTilesetAnims_BattleDomePals0_0[] = INCBIN_U16("graphics/battle_frontier/dome_anim1.gbapal"); @@ -1340,32 +1340,32 @@ const u32 gMultiBattleIntroBg_Player_Tilemap[] = INCBIN_U32("graphics/battle_fro #include "data/graphics/intro_scene.h" const u32 gBattleAnimSpriteGfx_FlyingDirt[] = INCBIN_U32("graphics/battle_anims/sprites/flying_dirt.4bpp.lz"); -const u32 gBattleAnimSpritePal_FlyingDirt[] = INCBIN_U32("graphics/battle_anims/sprites/flying_dirt.gbapal.lz"); +const u16 gBattleAnimSpritePal_FlyingDirt[] = INCBIN_U16("graphics/battle_anims/sprites/flying_dirt.gbapal"); const u32 gBattleAnimBgTilemap_Sandstorm[] = INCBIN_U32("graphics/battle_anims/backgrounds/sandstorm_brew.bin.lz"); const u32 gBattleAnimBgImage_Sandstorm[] = INCBIN_U32("graphics/battle_anims/backgrounds/sandstorm_brew.4bpp.lz"); -const u32 gBattleAnimSpritePal_Windstorm[] = INCBIN_U32("graphics/battle_anims/backgrounds/windstorm_brew.gbapal.lz"); +const u16 gBattleAnimSpritePal_Windstorm[] = INCBIN_U16("graphics/battle_anims/backgrounds/windstorm_brew.gbapal"); const u32 gBattleAnimSpriteGfx_MetalSoundWaves[] = INCBIN_U32("graphics/battle_anims/sprites/metal_sound_waves.4bpp.lz"); -const u32 gBattleAnimSpritePal_MetalSoundWaves[] = INCBIN_U32("graphics/battle_anims/sprites/metal_sound_waves.gbapal.lz"); +const u16 gBattleAnimSpritePal_MetalSoundWaves[] = INCBIN_U16("graphics/battle_anims/sprites/metal_sound_waves.gbapal"); const u32 gBattleAnimBgImage_Ice[] = INCBIN_U32("graphics/battle_anims/backgrounds/ice.4bpp.lz"); -const u32 gBattleAnimBgPalette_Ice[] = INCBIN_U32("graphics/battle_anims/backgrounds/ice.gbapal.lz"); +const u16 gBattleAnimBgPalette_Ice[] = INCBIN_U16("graphics/battle_anims/backgrounds/ice.gbapal"); const u32 gBattleAnimBgTilemap_Ice[] = INCBIN_U32("graphics/battle_anims/backgrounds/ice.bin.lz"); const u32 gBattleAnimSpriteGfx_IcicleSpear[] = INCBIN_U32("graphics/battle_anims/sprites/icicle_spear.4bpp.lz"); -const u32 gBattleAnimSpritePal_IcicleSpear[] = INCBIN_U32("graphics/battle_anims/sprites/icicle_spear.gbapal.lz"); +const u16 gBattleAnimSpritePal_IcicleSpear[] = INCBIN_U16("graphics/battle_anims/sprites/icicle_spear.gbapal"); const u32 gContestNextTurnGfx[] = INCBIN_U32("graphics/contest/nextturn.4bpp.lz"); const u8 gContestNextTurnNumbersGfx[] = INCBIN_U8("graphics/contest/nextturn_numbers.4bpp"); const u8 gContestNextTurnRandomGfx[] = INCBIN_U8("graphics/contest/nextturn_random.4bpp"); const u32 gBattleAnimSpriteGfx_GlowyRedOrb[] = INCBIN_U32("graphics/battle_anims/sprites/glowy_red_orb.4bpp.lz"); -const u32 gBattleAnimSpritePal_GlowyRedOrb[] = INCBIN_U32("graphics/battle_anims/sprites/glowy_red_orb.gbapal.lz"); -const u32 gBattleAnimSpritePal_GlowyGreenOrb[] = INCBIN_U32("graphics/battle_anims/sprites/glowy_green_orb.gbapal.lz"); -const u32 gBattleAnimSpritePal_SleepPowder[] = INCBIN_U32("graphics/battle_anims/sprites/sleep_powder.gbapal.lz"); -const u32 gBattleAnimSpritePal_StunSpore[] = INCBIN_U32("graphics/battle_anims/sprites/stun_spore.gbapal.lz"); +const u16 gBattleAnimSpritePal_GlowyRedOrb[] = INCBIN_U16("graphics/battle_anims/sprites/glowy_red_orb.gbapal"); +const u16 gBattleAnimSpritePal_GlowyGreenOrb[] = INCBIN_U16("graphics/battle_anims/sprites/glowy_green_orb.gbapal"); +const u16 gBattleAnimSpritePal_SleepPowder[] = INCBIN_U16("graphics/battle_anims/sprites/sleep_powder.gbapal"); +const u16 gBattleAnimSpritePal_StunSpore[] = INCBIN_U16("graphics/battle_anims/sprites/stun_spore.gbapal"); const u32 gContestApplauseGfx[] = INCBIN_U32("graphics/contest/applause.4bpp.lz"); const u8 gContestApplauseMeterGfx[] = INCBIN_U8("graphics/contest/applause_meter.4bpp"); @@ -1373,27 +1373,27 @@ const u8 gContestApplauseMeterGfx[] = INCBIN_U8("graphics/contest/applause_meter const u16 gContestPal[] = INCBIN_U16("graphics/contest/nextturn.gbapal"); const u32 gBattleAnimSpriteGfx_Splash[] = INCBIN_U32("graphics/battle_anims/sprites/splash.4bpp.lz"); -const u32 gBattleAnimSpritePal_Splash[] = INCBIN_U32("graphics/battle_anims/sprites/splash.gbapal.lz"); +const u16 gBattleAnimSpritePal_Splash[] = INCBIN_U16("graphics/battle_anims/sprites/splash.gbapal"); const u32 gBattleAnimSpriteGfx_SweatBead[] = INCBIN_U32("graphics/battle_anims/sprites/sweat_bead.4bpp.lz"); const u32 gBattleAnimSpriteGfx_Pokeblock[] = INCBIN_U32("graphics/battle_anims/sprites/pokeblock.4bpp.lz"); -const u32 gBattleAnimSpritePal_Pokeblock[] = INCBIN_U32("graphics/battle_anims/sprites/pokeblock.gbapal.lz"); +const u16 gBattleAnimSpritePal_Pokeblock[] = INCBIN_U16("graphics/battle_anims/sprites/pokeblock.gbapal"); const u32 gBattleAnimSpriteGfx_Gem1[] = INCBIN_U32("graphics/battle_anims/sprites/gem_1.4bpp.lz"); const u32 gBattleAnimSpriteGfx_Gem2[] = INCBIN_U32("graphics/battle_anims/sprites/gem_2.4bpp.lz"); const u32 gBattleAnimSpriteGfx_Gem3[] = INCBIN_U32("graphics/battle_anims/sprites/gem_3.4bpp.lz"); -const u32 gBattleAnimSpritePal_Gem1[] = INCBIN_U32("graphics/battle_anims/sprites/gem_1.gbapal.lz"); +const u16 gBattleAnimSpritePal_Gem1[] = INCBIN_U16("graphics/battle_anims/sprites/gem_1.gbapal"); const u32 gBattleAnimBgImage_InAir[] = INCBIN_U32("graphics/battle_anims/backgrounds/in_air.4bpp.lz"); -const u32 gBattleAnimBgPalette_InAir[] = INCBIN_U32("graphics/battle_anims/backgrounds/in_air.gbapal.lz"); +const u16 gBattleAnimBgPalette_InAir[] = INCBIN_U16("graphics/battle_anims/backgrounds/in_air.gbapal"); const u32 gBattleAnimBgTilemap_InAir[] = INCBIN_U32("graphics/battle_anims/backgrounds/in_air.bin.lz"); const u32 gBattleAnimSpriteGfx_Protect[] = INCBIN_U32("graphics/battle_anims/sprites/protect.4bpp.lz"); -const u32 gBattleAnimSpritePal_Protect[] = INCBIN_U32("graphics/battle_anims/sprites/protect.gbapal.lz"); +const u16 gBattleAnimSpritePal_Protect[] = INCBIN_U16("graphics/battle_anims/sprites/protect.gbapal"); -const u32 gBattleAnimBackgroundImageMuddyWater_Pal[] = INCBIN_U32("graphics/battle_anims/backgrounds/water_muddy.gbapal.lz"); +const u16 gBattleAnimBackgroundImageMuddyWater_Pal[] = INCBIN_U16("graphics/battle_anims/backgrounds/water_muddy.gbapal"); const u32 gEnemyMonShadow_Gfx[] = INCBIN_U32("graphics/battle_interface/enemy_mon_shadow.4bpp.lz"); const u32 gEnemyMonShadowsSized_Gfx[] = INCBIN_U32("graphics/battle_interface/enemy_mon_shadows_sized.4bpp.lz"); @@ -1401,219 +1401,219 @@ const u32 gEnemyMonShadowsSized_Gfx[] = INCBIN_U32("graphics/battle_interface/en const u32 gBattleInterface_BallStatusBarGfx[] = INCBIN_U32("graphics/battle_interface/ball_status_bar.4bpp.lz"); const u32 gBattleAnimBgImage_Ghost[] = INCBIN_U32("graphics/battle_anims/backgrounds/ghost.4bpp.lz"); -const u32 gBattleAnimBgPalette_Ghost[] = INCBIN_U32("graphics/battle_anims/backgrounds/ghost.gbapal.lz"); +const u16 gBattleAnimBgPalette_Ghost[] = INCBIN_U16("graphics/battle_anims/backgrounds/ghost.gbapal"); const u32 gBattleAnimBgTilemap_Ghost[] = INCBIN_U32("graphics/battle_anims/backgrounds/ghost.bin.lz"); -const u32 gBattleAnimSpritePal_WhipHit[] = INCBIN_U32("graphics/battle_anims/sprites/whip_hit.gbapal.lz"); +const u16 gBattleAnimSpritePal_WhipHit[] = INCBIN_U16("graphics/battle_anims/sprites/whip_hit.gbapal"); -const u32 gBattleAnimBgPalette_SolarBeam[] = INCBIN_U32("graphics/battle_anims/backgrounds/solarbeam.gbapal.lz"); +const u16 gBattleAnimBgPalette_SolarBeam[] = INCBIN_U16("graphics/battle_anims/backgrounds/solarbeam.gbapal"); const u32 gBattleAnimBgTilemap_SolarBeam[] = INCBIN_U32("graphics/battle_anims/backgrounds/solarbeam.bin.lz"); // Unused -const u32 gBattleAnimBgPalette_MagmaStorm[] = INCBIN_U32("graphics/battle_anims/backgrounds/magma_storm.gbapal.lz"); +const u16 gBattleAnimBgPalette_MagmaStorm[] = INCBIN_U16("graphics/battle_anims/backgrounds/magma_storm.gbapal"); //new battle bgs const u32 gBattleAnimBgImage_Hurricane[] = INCBIN_U32("graphics/battle_anims/backgrounds/hurricane.4bpp.lz"); -const u32 gBattleAnimBgPalette_Hurricane[] = INCBIN_U32("graphics/battle_anims/backgrounds/hurricane.gbapal.lz"); +const u16 gBattleAnimBgPalette_Hurricane[] = INCBIN_U16("graphics/battle_anims/backgrounds/hurricane.gbapal"); const u32 gBattleAnimBgTilemap_Hurricane[] = INCBIN_U32("graphics/battle_anims/backgrounds/hurricane.bin.lz"); -const u32 gBattleAnimBgPalette_RockWrecker[] = INCBIN_U32("graphics/battle_anims/backgrounds/rock_wrecker.gbapal.lz"); +const u16 gBattleAnimBgPalette_RockWrecker[] = INCBIN_U16("graphics/battle_anims/backgrounds/rock_wrecker.gbapal"); const u32 gBattleAnimBgTilemap_GigaImpactPlayer[] = INCBIN_U32("graphics/battle_anims/backgrounds/giga_impact_player.bin.lz"); const u32 gBattleAnimBgTilemap_GigaImpactOpponent[] = INCBIN_U32("graphics/battle_anims/backgrounds/giga_impact_opponent.bin.lz"); const u32 gBattleAnimBgTilemap_GigaImpactContest[] = INCBIN_U32("graphics/battle_anims/backgrounds/giga_impact_contest.bin.lz"); const u32 gBattleAnimBgImage_GigaImpact[] = INCBIN_U32("graphics/battle_anims/backgrounds/giga_impact.4bpp.lz"); const u32 gBattleAnimBgImage_GigaImpactContest[] = INCBIN_U32("graphics/battle_anims/backgrounds/giga_impact_contest.4bpp.lz"); -const u32 gBattleAnimBgPalette_GigaImpact[] = INCBIN_U32("graphics/battle_anims/backgrounds/giga_impact.gbapal.lz"); +const u16 gBattleAnimBgPalette_GigaImpact[] = INCBIN_U16("graphics/battle_anims/backgrounds/giga_impact.gbapal"); const u32 gBattleAnimBgImage_SpacialRend[] = INCBIN_U32("graphics/battle_anims/backgrounds/spacial_rend.4bpp.lz"); -const u32 gBattleAnimBgPalette_SpacialRend[] = INCBIN_U32("graphics/battle_anims/backgrounds/spacial_rend.gbapal.lz"); +const u16 gBattleAnimBgPalette_SpacialRend[] = INCBIN_U16("graphics/battle_anims/backgrounds/spacial_rend.gbapal"); -const u32 gBattleAnimBgPalette_SludgeWave[] = INCBIN_U32("graphics/battle_anims/backgrounds/sludge_wave.gbapal.lz"); +const u16 gBattleAnimBgPalette_SludgeWave[] = INCBIN_U16("graphics/battle_anims/backgrounds/sludge_wave.gbapal"); const u32 gBattleAnimBgImage_Aeroblast[] = INCBIN_U32("graphics/battle_anims/backgrounds/aeroblast_tiles.4bpp.lz"); -const u32 gBattleAnimBgPalette_Aeroblast[] = INCBIN_U32("graphics/battle_anims/backgrounds/aeroblast.gbapal.lz"); +const u16 gBattleAnimBgPalette_Aeroblast[] = INCBIN_U16("graphics/battle_anims/backgrounds/aeroblast.gbapal"); const u32 gBattleAnimBgTilemap_Aeroblast[] = INCBIN_U32("graphics/battle_anims/backgrounds/aeroblast_map.bin.lz"); -const u32 gBattleAnimBgPalette_AuraSphere[] = INCBIN_U32("graphics/battle_anims/backgrounds/aura_sphere.gbapal.lz"); +const u16 gBattleAnimBgPalette_AuraSphere[] = INCBIN_U16("graphics/battle_anims/backgrounds/aura_sphere.gbapal"); const u32 gBattleAnimBgImage_BlackholeEclipse[] = INCBIN_U32("graphics/battle_anims/backgrounds/blackhole_eclipse.4bpp.lz"); -const u32 gBattleAnimBgPalette_BlackholeEclipse[] = INCBIN_U32("graphics/battle_anims/backgrounds/blackhole_eclipse.gbapal.lz"); +const u16 gBattleAnimBgPalette_BlackholeEclipse[] = INCBIN_U16("graphics/battle_anims/backgrounds/blackhole_eclipse.gbapal"); const u32 gBattleAnimBgTilemap_BlackholeEclipse[] = INCBIN_U32("graphics/battle_anims/backgrounds/blackhole_eclipse.bin.lz"); const u32 gBattleAnimBgImage_BloomDoom[] = INCBIN_U32("graphics/battle_anims/backgrounds/bloom_doom.4bpp.lz"); -const u32 gBattleAnimBgPalette_BloomDoom[] = INCBIN_U32("graphics/battle_anims/backgrounds/bloom_doom.gbapal.lz"); +const u16 gBattleAnimBgPalette_BloomDoom[] = INCBIN_U16("graphics/battle_anims/backgrounds/bloom_doom.gbapal"); const u32 gBattleAnimBgTilemap_BloomDoom[] = INCBIN_U32("graphics/battle_anims/backgrounds/bloom_doom.bin.lz"); const u32 gBattleAnimBgImage_BoltStrike[] = INCBIN_U32("graphics/battle_anims/backgrounds/bolt_strike.4bpp.lz"); -const u32 gBattleAnimBgPalette_BoltStrike[] = INCBIN_U32("graphics/battle_anims/backgrounds/bolt_strike.gbapal.lz"); +const u16 gBattleAnimBgPalette_BoltStrike[] = INCBIN_U16("graphics/battle_anims/backgrounds/bolt_strike.gbapal"); const u32 gBattleAnimBgTilemap_BoltStrike[] = INCBIN_U32("graphics/battle_anims/backgrounds/bolt_strike.bin.lz"); const u32 gBattleAnimBgImage_ClangorousSoulblaze[] = INCBIN_U32("graphics/battle_anims/backgrounds/clangorous_soulblaze.4bpp.lz"); -const u32 gBattleAnimBgPalette_ClangorousSoulblaze[] = INCBIN_U32("graphics/battle_anims/backgrounds/clangorous_soulblaze.gbapal.lz"); +const u16 gBattleAnimBgPalette_ClangorousSoulblaze[] = INCBIN_U16("graphics/battle_anims/backgrounds/clangorous_soulblaze.gbapal"); const u32 gBattleAnimBgTilemap_ClangorousSoulblaze[] = INCBIN_U32("graphics/battle_anims/backgrounds/clangorous_soulblaze.bin.lz"); -const u32 gBattleAnimBgPalette_DynamaxCannon[] = INCBIN_U32("graphics/battle_anims/backgrounds/dynamax_cannon.gbapal.lz"); +const u16 gBattleAnimBgPalette_DynamaxCannon[] = INCBIN_U16("graphics/battle_anims/backgrounds/dynamax_cannon.gbapal"); const u32 gBattleAnimBgImage_Fire1[] = INCBIN_U32("graphics/battle_anims/backgrounds/fire1.4bpp.lz"); -const u32 gBattleAnimBgPalette_Fire1[] = INCBIN_U32("graphics/battle_anims/backgrounds/fire1.gbapal.lz"); +const u16 gBattleAnimBgPalette_Fire1[] = INCBIN_U16("graphics/battle_anims/backgrounds/fire1.gbapal"); const u32 gBattleAnimBgTilemap_Fire1[] = INCBIN_U32("graphics/battle_anims/backgrounds/fire1.bin.lz"); -const u32 gBattleAnimBgPalette_Fire2[] = INCBIN_U32("graphics/battle_anims/backgrounds/fire2.gbapal.lz"); +const u16 gBattleAnimBgPalette_Fire2[] = INCBIN_U16("graphics/battle_anims/backgrounds/fire2.gbapal"); const u32 gBattleAnimBgImage_FocusBlast[] = INCBIN_U32("graphics/battle_anims/backgrounds/focus_blast.4bpp.lz"); -const u32 gBattleAnimBgPalette_FocusBlast[] = INCBIN_U32("graphics/battle_anims/backgrounds/focus_blast.gbapal.lz"); +const u16 gBattleAnimBgPalette_FocusBlast[] = INCBIN_U16("graphics/battle_anims/backgrounds/focus_blast.gbapal"); const u32 gBattleAnimBgTilemap_FocusBlast[] = INCBIN_U32("graphics/battle_anims/backgrounds/focus_blast.bin.lz"); -const u32 gBattleAnimBgPalette_GarbageFalls[] = INCBIN_U32("graphics/battle_anims/backgrounds/garbage_falls.gbapal.lz"); +const u16 gBattleAnimBgPalette_GarbageFalls[] = INCBIN_U16("graphics/battle_anims/backgrounds/garbage_falls.gbapal"); -const u32 gBattleAnimBgPalette_GunkShot[] = INCBIN_U32("graphics/battle_anims/backgrounds/gunk_shot.gbapal.lz"); +const u16 gBattleAnimBgPalette_GunkShot[] = INCBIN_U16("graphics/battle_anims/backgrounds/gunk_shot.gbapal"); const u32 gBattleAnimBgImage_HydroCannon[] = INCBIN_U32("graphics/battle_anims/backgrounds/hydro_cannon.4bpp.lz"); -const u32 gBattleAnimBgPalette_HydroCannon[] = INCBIN_U32("graphics/battle_anims/backgrounds/hydro_cannon.gbapal.lz"); +const u16 gBattleAnimBgPalette_HydroCannon[] = INCBIN_U16("graphics/battle_anims/backgrounds/hydro_cannon.gbapal"); const u32 gBattleAnimBgTilemap_HydroCannon[] = INCBIN_U32("graphics/battle_anims/backgrounds/hydro_cannon.bin.lz"); -const u32 gBattleAnimBgPalette_Chloroblast[] = INCBIN_U32("graphics/battle_anims/backgrounds/chloroblast.gbapal.lz"); +const u16 gBattleAnimBgPalette_Chloroblast[] = INCBIN_U16("graphics/battle_anims/backgrounds/chloroblast.gbapal"); const u32 gBattleAnimBgImage_HydroPump[] = INCBIN_U32("graphics/battle_anims/backgrounds/hydro_pump.4bpp.lz"); -const u32 gBattleAnimBgPalette_HydroPump[] = INCBIN_U32("graphics/battle_anims/backgrounds/hydro_pump.gbapal.lz"); +const u16 gBattleAnimBgPalette_HydroPump[] = INCBIN_U16("graphics/battle_anims/backgrounds/hydro_pump.gbapal"); const u32 gBattleAnimBgTilemap_HydroPump[] = INCBIN_U32("graphics/battle_anims/backgrounds/hydro_pump.bin.lz"); -const u32 gBattleAnimBgPalette_HyperBeam[] = INCBIN_U32("graphics/battle_anims/backgrounds/hyper_beam.gbapal.lz"); +const u16 gBattleAnimBgPalette_HyperBeam[] = INCBIN_U16("graphics/battle_anims/backgrounds/hyper_beam.gbapal"); -const u32 gBattleAnimBgPalette_HyperspaceFury[] = INCBIN_U32("graphics/battle_anims/backgrounds/hyperspace_fury.gbapal.lz"); +const u16 gBattleAnimBgPalette_HyperspaceFury[] = INCBIN_U16("graphics/battle_anims/backgrounds/hyperspace_fury.gbapal"); const u32 gBattleAnimBgImage_InfernoOverdrive[] = INCBIN_U32("graphics/battle_anims/backgrounds/inferno_overdrive.4bpp.lz"); -const u32 gBattleAnimBgPalette_InfernoOverdrive[] = INCBIN_U32("graphics/battle_anims/backgrounds/inferno_overdrive.gbapal.lz"); +const u16 gBattleAnimBgPalette_InfernoOverdrive[] = INCBIN_U16("graphics/battle_anims/backgrounds/inferno_overdrive.gbapal"); const u32 gBattleAnimBgTilemap_InfernoOverdrive[] = INCBIN_U32("graphics/battle_anims/backgrounds/inferno_overdrive.bin.lz"); const u32 gBattleAnimBgImage_LeafStorm[] = INCBIN_U32("graphics/battle_anims/backgrounds/leaf_storm.4bpp.lz"); -const u32 gBattleAnimBgPalette_LeafStorm[] = INCBIN_U32("graphics/battle_anims/backgrounds/leaf_storm.gbapal.lz"); +const u16 gBattleAnimBgPalette_LeafStorm[] = INCBIN_U16("graphics/battle_anims/backgrounds/leaf_storm.gbapal"); const u32 gBattleAnimBgTilemap_LeafStorm[] = INCBIN_U32("graphics/battle_anims/backgrounds/leaf_storm.bin.lz"); const u32 gBattleAnimBgImage_MaliciousMoonsault[] = INCBIN_U32("graphics/battle_anims/backgrounds/malicious_moonsault.4bpp.lz"); -const u32 gBattleAnimBgPalette_MaliciousMoonsault[] = INCBIN_U32("graphics/battle_anims/backgrounds/malicious_moonsault.gbapal.lz"); +const u16 gBattleAnimBgPalette_MaliciousMoonsault[] = INCBIN_U16("graphics/battle_anims/backgrounds/malicious_moonsault.gbapal"); const u32 gBattleAnimBgTilemap_MaliciousMoonsault[] = INCBIN_U32("graphics/battle_anims/backgrounds/malicious_moonsault.bin.lz"); const u32 gBattleAnimBgImage_MaxLightning[] = INCBIN_U32("graphics/battle_anims/backgrounds/max_lightning.4bpp.lz"); -const u32 gBattleAnimBgPalette_MaxLightning[] = INCBIN_U32("graphics/battle_anims/backgrounds/max_lightning.gbapal.lz"); +const u16 gBattleAnimBgPalette_MaxLightning[] = INCBIN_U16("graphics/battle_anims/backgrounds/max_lightning.gbapal"); const u32 gBattleAnimBgTilemap_MaxLightning[] = INCBIN_U32("graphics/battle_anims/backgrounds/max_lightning.bin.lz"); const u32 gBattleAnimBgImage_NeverendingNightmare[] = INCBIN_U32("graphics/battle_anims/backgrounds/neverending_nightmare.4bpp.lz"); -const u32 gBattleAnimBgPalette_NeverendingNightmare[] = INCBIN_U32("graphics/battle_anims/backgrounds/neverending_nightmare.gbapal.lz"); +const u16 gBattleAnimBgPalette_NeverendingNightmare[] = INCBIN_U16("graphics/battle_anims/backgrounds/neverending_nightmare.gbapal"); const u32 gBattleAnimBgTilemap_NeverendingNightmare[] = INCBIN_U32("graphics/battle_anims/backgrounds/neverending_nightmare.bin.lz"); #if B_NEW_TERRAIN_BACKGROUNDS const u32 gBattleAnimBgImage_ElectricTerrain[] = INCBIN_U32("graphics/battle_anims/backgrounds/new_electric_terrain.4bpp.lz"); -const u32 gBattleAnimBgPalette_ElectricTerrain[] = INCBIN_U32("graphics/battle_anims/backgrounds/new_electric_terrain.gbapal.lz"); +const u16 gBattleAnimBgPalette_ElectricTerrain[] = INCBIN_U16("graphics/battle_anims/backgrounds/new_electric_terrain.gbapal"); const u32 gBattleAnimBgTilemap_ElectricTerrain[] = INCBIN_U32("graphics/battle_anims/backgrounds/new_electric_terrain.bin.lz"); const u32 gBattleAnimBgImage_GrassyTerrain[] = INCBIN_U32("graphics/battle_anims/backgrounds/new_grassy_terrain.4bpp.lz"); -const u32 gBattleAnimBgPalette_GrassyTerrain[] = INCBIN_U32("graphics/battle_anims/backgrounds/new_grassy_terrain.gbapal.lz"); +const u16 gBattleAnimBgPalette_GrassyTerrain[] = INCBIN_U16("graphics/battle_anims/backgrounds/new_grassy_terrain.gbapal"); const u32 gBattleAnimBgTilemap_GrassyTerrain[] = INCBIN_U32("graphics/battle_anims/backgrounds/new_grassy_terrain.bin.lz"); const u32 gBattleAnimBgImage_MistyTerrain[] = INCBIN_U32("graphics/battle_anims/backgrounds/new_misty_terrain.4bpp.lz"); -const u32 gBattleAnimBgPalette_MistyTerrain[] = INCBIN_U32("graphics/battle_anims/backgrounds/new_misty_terrain.gbapal.lz"); +const u16 gBattleAnimBgPalette_MistyTerrain[] = INCBIN_U16("graphics/battle_anims/backgrounds/new_misty_terrain.gbapal"); const u32 gBattleAnimBgTilemap_MistyTerrain[] = INCBIN_U32("graphics/battle_anims/backgrounds/new_misty_terrain.bin.lz"); const u32 gBattleAnimBgImage_PsychicTerrain[] = INCBIN_U32("graphics/battle_anims/backgrounds/new_psychic_terrain.4bpp.lz"); -const u32 gBattleAnimBgPalette_PsychicTerrain[] = INCBIN_U32("graphics/battle_anims/backgrounds/new_psychic_terrain.gbapal.lz"); +const u16 gBattleAnimBgPalette_PsychicTerrain[] = INCBIN_U16("graphics/battle_anims/backgrounds/new_psychic_terrain.gbapal"); const u32 gBattleAnimBgTilemap_PsychicTerrain[] = INCBIN_U32("graphics/battle_anims/backgrounds/new_psychic_terrain.bin.lz"); #else const u32 gBattleAnimBgImage_PsychicTerrain[] = INCBIN_U32("graphics/battle_anims/backgrounds/psychic_terrain.4bpp.lz"); -const u32 gBattleAnimBgPalette_PsychicTerrain[] = INCBIN_U32("graphics/battle_anims/backgrounds/psychic_terrain.gbapal.lz"); +const u16 gBattleAnimBgPalette_PsychicTerrain[] = INCBIN_U16("graphics/battle_anims/backgrounds/psychic_terrain.gbapal"); const u32 gBattleAnimBgTilemap_PsychicTerrain[] = INCBIN_U32("graphics/battle_anims/backgrounds/psychic_terrain.bin.lz"); const u32 gBattleAnimBgImage_ElectricTerrain[] = INCBIN_U32("graphics/battle_anims/backgrounds/electric_terrain.4bpp.lz"); -const u32 gBattleAnimBgPalette_ElectricTerrain[] = INCBIN_U32("graphics/battle_anims/backgrounds/electric_terrain.gbapal.lz"); +const u16 gBattleAnimBgPalette_ElectricTerrain[] = INCBIN_U16("graphics/battle_anims/backgrounds/electric_terrain.gbapal"); const u32 gBattleAnimBgTilemap_ElectricTerrain[] = INCBIN_U32("graphics/battle_anims/backgrounds/electric_terrain.bin.lz"); const u32 gBattleAnimBgImage_GrassyTerrain[] = INCBIN_U32("graphics/battle_anims/backgrounds/grassy_terrain.4bpp.lz"); -const u32 gBattleAnimBgPalette_GrassyTerrain[] = INCBIN_U32("graphics/battle_anims/backgrounds/grassy_terrain.gbapal.lz"); +const u16 gBattleAnimBgPalette_GrassyTerrain[] = INCBIN_U16("graphics/battle_anims/backgrounds/grassy_terrain.gbapal"); const u32 gBattleAnimBgTilemap_GrassyTerrain[] = INCBIN_U32("graphics/battle_anims/backgrounds/grassy_terrain.bin.lz"); const u32 gBattleAnimBgImage_MistyTerrain[] = INCBIN_U32("graphics/battle_anims/backgrounds/misty_terrain.4bpp.lz"); -const u32 gBattleAnimBgPalette_MistyTerrain[] = INCBIN_U32("graphics/battle_anims/backgrounds/misty_terrain.gbapal.lz"); +const u16 gBattleAnimBgPalette_MistyTerrain[] = INCBIN_U16("graphics/battle_anims/backgrounds/misty_terrain.gbapal"); const u32 gBattleAnimBgTilemap_MistyTerrain[] = INCBIN_U32("graphics/battle_anims/backgrounds/misty_terrain.bin.lz"); #endif const u32 gBattleAnimBgImage_Nightmare[] = INCBIN_U32("graphics/battle_anims/backgrounds/nightmare.4bpp.lz"); -const u32 gBattleAnimBgPalette_Nightmare[] = INCBIN_U32("graphics/battle_anims/backgrounds/nightmare.gbapal.lz"); +const u16 gBattleAnimBgPalette_Nightmare[] = INCBIN_U16("graphics/battle_anims/backgrounds/nightmare.gbapal"); const u32 gBattleAnimBgTilemap_Nightmare[] = INCBIN_U32("graphics/battle_anims/backgrounds/nightmare.bin.lz"); -const u32 gBattleAnimBgPalette_PoisonFalls[] = INCBIN_U32("graphics/battle_anims/backgrounds/poison_falls.gbapal.lz"); +const u16 gBattleAnimBgPalette_PoisonFalls[] = INCBIN_U16("graphics/battle_anims/backgrounds/poison_falls.gbapal"); -const u32 gBattleAnimBgPalette_PsychicNew[] = INCBIN_U32("graphics/battle_anims/backgrounds/psychic_new.gbapal.lz"); +const u16 gBattleAnimBgPalette_PsychicNew[] = INCBIN_U16("graphics/battle_anims/backgrounds/psychic_new.gbapal"); const u32 gBattleAnimBgImage_ShatteredPsyche[] = INCBIN_U32("graphics/battle_anims/backgrounds/shattered_psyche.4bpp.lz"); -const u32 gBattleAnimBgPalette_ShatteredPsyche[] = INCBIN_U32("graphics/battle_anims/backgrounds/shattered_psyche.gbapal.lz"); +const u16 gBattleAnimBgPalette_ShatteredPsyche[] = INCBIN_U16("graphics/battle_anims/backgrounds/shattered_psyche.gbapal"); const u32 gBattleAnimBgTilemap_ShatteredPsyche[] = INCBIN_U32("graphics/battle_anims/backgrounds/shattered_psyche.bin.lz"); -const u32 gBattleAnimBgImage_SkyDay[] = INCBIN_U32("graphics/battle_anims/backgrounds/sky_day.4bpp.lz"); -const u32 gBattleAnimBgPalette_SkyDay[] = INCBIN_U32("graphics/battle_anims/backgrounds/sky_day.gbapal.lz"); -const u32 gBattleAnimBgTilemap_SkyDay[] = INCBIN_U32("graphics/battle_anims/backgrounds/sky_day.bin.lz"); +const u32 gBattleAnimBgImage_RockField[] = INCBIN_U32("graphics/battle_anims/backgrounds/rock_field.4bpp.lz"); +const u16 gBattleAnimBgPalette_RockDay[] = INCBIN_U16("graphics/battle_anims/backgrounds/rock_day.gbapal"); +const u32 gBattleAnimBgTilemap_RockField[] = INCBIN_U32("graphics/battle_anims/backgrounds/rock_field.bin.lz"); -const u32 gBattleAnimBgPalette_SkyAfternoon[] = INCBIN_U32("graphics/battle_anims/backgrounds/sky_afternoon.gbapal.lz"); +const u16 gBattleAnimBgPalette_RockAfternoon[] = INCBIN_U16("graphics/battle_anims/backgrounds/rock_afternoon.gbapal"); -const u32 gBattleAnimBgPalette_SkyNight[] = INCBIN_U32("graphics/battle_anims/backgrounds/sky_night.gbapal.lz"); +const u16 gBattleAnimBgPalette_RockNight[] = INCBIN_U16("graphics/battle_anims/backgrounds/rock_night.gbapal"); const u32 gBattleAnimBgImage_SnuggleForever[] = INCBIN_U32("graphics/battle_anims/backgrounds/snuggle_forever.4bpp.lz"); -const u32 gBattleAnimBgPalette_SnuggleForever[] = INCBIN_U32("graphics/battle_anims/backgrounds/snuggle_forever.gbapal.lz"); +const u16 gBattleAnimBgPalette_SnuggleForever[] = INCBIN_U16("graphics/battle_anims/backgrounds/snuggle_forever.gbapal"); const u32 gBattleAnimBgTilemap_SnuggleForever[] = INCBIN_U32("graphics/battle_anims/backgrounds/snuggle_forever.bin.lz"); const u32 gBattleAnimBgImage_SoulStealing7StarStrike[] = INCBIN_U32("graphics/battle_anims/backgrounds/soulstealing_7star_strike.4bpp.lz"); -const u32 gBattleAnimBgPalette_SoulStealing7StarStrike[] = INCBIN_U32("graphics/battle_anims/backgrounds/soulstealing_7star_strike.gbapal.lz"); +const u16 gBattleAnimBgPalette_SoulStealing7StarStrike[] = INCBIN_U16("graphics/battle_anims/backgrounds/soulstealing_7star_strike.gbapal"); const u32 gBattleAnimBgTilemap_SoulStealing7StarStrike[] = INCBIN_U32("graphics/battle_anims/backgrounds/soulstealing_7star_strike.bin.lz"); -const u32 gBattleAnimBgPalette_TectonicRage[] = INCBIN_U32("graphics/battle_anims/backgrounds/tectonic_rage.gbapal.lz"); +const u16 gBattleAnimBgPalette_TectonicRage[] = INCBIN_U16("graphics/battle_anims/backgrounds/tectonic_rage.gbapal"); const u32 gBattleAnimBgImage_TrickRoom[] = INCBIN_U32("graphics/battle_anims/backgrounds/trick_room.4bpp.lz"); -const u32 gBattleAnimBgPalette_TrickRoom[] = INCBIN_U32("graphics/battle_anims/backgrounds/trick_room.gbapal.lz"); +const u16 gBattleAnimBgPalette_TrickRoom[] = INCBIN_U16("graphics/battle_anims/backgrounds/trick_room.gbapal"); const u32 gBattleAnimBgTilemap_TrickRoom[] = INCBIN_U32("graphics/battle_anims/backgrounds/trick_room.bin.lz"); -const u32 gBattleAnimBgPalette_MagicRoom[] = INCBIN_U32("graphics/battle_anims/backgrounds/magic_room.gbapal.lz"); +const u16 gBattleAnimBgPalette_MagicRoom[] = INCBIN_U16("graphics/battle_anims/backgrounds/magic_room.gbapal"); -const u32 gBattleAnimBgPalette_WonderRoom[] = INCBIN_U32("graphics/battle_anims/backgrounds/wonder_room.gbapal.lz"); +const u16 gBattleAnimBgPalette_WonderRoom[] = INCBIN_U16("graphics/battle_anims/backgrounds/wonder_room.gbapal"); const u32 gBattleAnimBgImage_TwinkleTackle[] = INCBIN_U32("graphics/battle_anims/backgrounds/twinkle_tackle.4bpp.lz"); -const u32 gBattleAnimBgPalette_TwinkleTackle[] = INCBIN_U32("graphics/battle_anims/backgrounds/twinkle_tackle.gbapal.lz"); +const u16 gBattleAnimBgPalette_TwinkleTackle[] = INCBIN_U16("graphics/battle_anims/backgrounds/twinkle_tackle.gbapal"); const u32 gBattleAnimBgTilemap_TwinkleTackle[] = INCBIN_U32("graphics/battle_anims/backgrounds/twinkle_tackle.bin.lz"); const u32 gBattleAnimBgImage_WaterPulse[] = INCBIN_U32("graphics/battle_anims/backgrounds/water_pulse.4bpp.lz"); -const u32 gBattleAnimBgPalette_WaterPulse[] = INCBIN_U32("graphics/battle_anims/backgrounds/water_pulse.gbapal.lz"); +const u16 gBattleAnimBgPalette_WaterPulse[] = INCBIN_U16("graphics/battle_anims/backgrounds/water_pulse.gbapal"); const u32 gBattleAnimBgTilemap_WaterPulse[] = INCBIN_U32("graphics/battle_anims/backgrounds/water_pulse.bin.lz"); const u32 gBattleAnimBgImage_Waterfall[] = INCBIN_U32("graphics/battle_anims/backgrounds/waterfall.4bpp.lz"); -const u32 gBattleAnimBgPalette_Waterfall[] = INCBIN_U32("graphics/battle_anims/backgrounds/waterfall.gbapal.lz"); +const u16 gBattleAnimBgPalette_Waterfall[] = INCBIN_U16("graphics/battle_anims/backgrounds/waterfall.gbapal"); const u32 gBattleAnimBgTilemap_Waterfall[] = INCBIN_U32("graphics/battle_anims/backgrounds/waterfall.bin.lz"); -const u32 gBattleAnimBgPalette_DarkVoid[] = INCBIN_U32("graphics/battle_anims/backgrounds/dark_void.gbapal.lz"); +const u16 gBattleAnimBgPalette_DarkVoid[] = INCBIN_U16("graphics/battle_anims/backgrounds/dark_void.gbapal"); const u32 gBattleAnimBgTilemap_DarkVoid[] = INCBIN_U32("graphics/battle_anims/backgrounds/dark_void.bin.lz"); const u32 gBattleAnimBgImage_ZMoveActivate[] = INCBIN_U32("graphics/battle_anims/backgrounds/zmove_activate.4bpp.lz"); -const u32 gBattleAnimBgPalette_ZMoveActivate[] = INCBIN_U32("graphics/battle_anims/backgrounds/zmove_activate.gbapal.lz"); +const u16 gBattleAnimBgPalette_ZMoveActivate[] = INCBIN_U16("graphics/battle_anims/backgrounds/zmove_activate.gbapal"); const u32 gBattleAnimBgTilemap_ZMoveActivate[] = INCBIN_U32("graphics/battle_anims/backgrounds/zmove_activate.bin.lz"); const u32 gBattleAnimBgImage_ZMoveMountain[] = INCBIN_U32("graphics/battle_anims/backgrounds/zmove_mountain.4bpp.lz"); -const u32 gBattleAnimBgPalette_ZMoveMountain[] = INCBIN_U32("graphics/battle_anims/backgrounds/zmove_mountain.gbapal.lz"); +const u16 gBattleAnimBgPalette_ZMoveMountain[] = INCBIN_U16("graphics/battle_anims/backgrounds/zmove_mountain.gbapal"); const u32 gBattleAnimBgTilemap_ZMoveMountain[] = INCBIN_U32("graphics/battle_anims/backgrounds/zmove_mountain.bin.lz"); -const u32 gBattleAnimBgPalette_SteelBeam[] = INCBIN_U32("graphics/battle_anims/backgrounds/steel_beam.gbapal.lz"); +const u16 gBattleAnimBgPalette_SteelBeam[] = INCBIN_U16("graphics/battle_anims/backgrounds/steel_beam.gbapal"); // misc const u32 gBerryBlenderCenter_Gfx[] = INCBIN_U32("graphics/berry_blender/center.8bpp.lz"); const u32 gBerryBlenderOuter_Gfx[] = INCBIN_U32("graphics/berry_blender/outer.4bpp.lz"); const u32 gBerryBlenderOuter_Tilemap[] = INCBIN_U32("graphics/berry_blender/outer_map.bin.lz"); -const u32 gBattleAnimBgPalette_Cosmic[] = INCBIN_U32("graphics/battle_anims/backgrounds/cosmic.gbapal.lz"); +const u16 gBattleAnimBgPalette_Cosmic[] = INCBIN_U16("graphics/battle_anims/backgrounds/cosmic.gbapal"); const u32 gBattleAnimBgImage_Cosmic[] = INCBIN_U32("graphics/battle_anims/backgrounds/cosmic.4bpp.lz"); const u32 gBattleAnimBgTilemap_Cosmic[] = INCBIN_U32("graphics/battle_anims/backgrounds/cosmic.bin.lz"); -const u32 gBattleAnimSpritePal_SlamHit2[] = INCBIN_U32("graphics/battle_anims/sprites/slam_hit_2.gbapal.lz"); +const u16 gBattleAnimSpritePal_SlamHit2[] = INCBIN_U16("graphics/battle_anims/sprites/slam_hit_2.gbapal"); const u32 gBattleAnimSpriteGfx_SlamHit2[] = INCBIN_U32("graphics/battle_anims/sprites/slam_hit_2.4bpp.lz"); const u32 gBattleAnimFogTilemap[] = INCBIN_U32("graphics/battle_anims/backgrounds/fog.bin.lz"); -const u32 gBattleAnimSpritePal_WeatherBall[] = INCBIN_U32("graphics/battle_anims/sprites/weather_ball.gbapal.lz"); +const u16 gBattleAnimSpritePal_WeatherBall[] = INCBIN_U16("graphics/battle_anims/sprites/weather_ball.gbapal"); const u32 gBattleAnimSpriteGfx_WeatherBall[] = INCBIN_U32("graphics/battle_anims/sprites/weather_ball.4bpp.lz"); const u32 gBattleAnimBgTilemap_ScaryFacePlayer[] = INCBIN_U32("graphics/battle_anims/backgrounds/scary_face_player.bin.lz"); @@ -1621,80 +1621,80 @@ const u32 gBattleAnimBgTilemap_ScaryFaceOpponent[] = INCBIN_U32("graphics/battle const u32 gBattleAnimBgTilemap_ScaryFaceContest[] = INCBIN_U32("graphics/battle_anims/backgrounds/scary_face_contest.bin.lz"); const u32 gBattleAnimSpriteGfx_Hail[] = INCBIN_U32("graphics/battle_anims/sprites/hail.4bpp.lz"); -const u32 gBattleAnimSpritePal_Hail[] = INCBIN_U32("graphics/battle_anims/sprites/hail.gbapal.lz"); +const u16 gBattleAnimSpritePal_Hail[] = INCBIN_U16("graphics/battle_anims/sprites/hail.gbapal"); const u32 gBattleAnimSpriteGfx_GreenSpike[] = INCBIN_U32("graphics/battle_anims/sprites/green_spike.4bpp.lz"); -const u32 gBattleAnimSpritePal_GreenSpike[] = INCBIN_U32("graphics/battle_anims/sprites/green_spike.gbapal.lz"); -const u32 gBattleAnimSpritePal_WhiteCircleOfLight[] = INCBIN_U32("graphics/battle_anims/sprites/white_circle_of_light.gbapal.lz"); -const u32 gBattleAnimSpritePal_GlowyBlueOrb[] = INCBIN_U32("graphics/battle_anims/sprites/glowy_blue_orb.gbapal.lz"); +const u16 gBattleAnimSpritePal_GreenSpike[] = INCBIN_U16("graphics/battle_anims/sprites/green_spike.gbapal"); +const u16 gBattleAnimSpritePal_WhiteCircleOfLight[] = INCBIN_U16("graphics/battle_anims/sprites/white_circle_of_light.gbapal"); +const u16 gBattleAnimSpritePal_GlowyBlueOrb[] = INCBIN_U16("graphics/battle_anims/sprites/glowy_blue_orb.gbapal"); const u32 gBattleAnimSpriteGfx_Recycle[] = INCBIN_U32("graphics/battle_anims/sprites/recycle.4bpp.lz"); -const u32 gBattleAnimSpritePal_Recycle[] = INCBIN_U32("graphics/battle_anims/sprites/recycle.gbapal.lz"); +const u16 gBattleAnimSpritePal_Recycle[] = INCBIN_U16("graphics/battle_anims/sprites/recycle.gbapal"); const u32 gBattleAnimSpriteGfx_RedParticles[] = INCBIN_U32("graphics/battle_anims/sprites/red_particles.4bpp.lz"); -const u32 gBattleAnimSpritePal_RedParticles[] = INCBIN_U32("graphics/battle_anims/sprites/red_particles.gbapal.lz"); +const u16 gBattleAnimSpritePal_RedParticles[] = INCBIN_U16("graphics/battle_anims/sprites/red_particles.gbapal"); const u32 gBattleAnimSpriteGfx_DirtMound[] = INCBIN_U32("graphics/battle_anims/sprites/dirt_mound.4bpp.lz"); -const u32 gBattleAnimSpritePal_DirtMound[] = INCBIN_U32("graphics/battle_anims/sprites/dirt_mound.gbapal.lz"); +const u16 gBattleAnimSpritePal_DirtMound[] = INCBIN_U16("graphics/battle_anims/sprites/dirt_mound.gbapal"); const u32 gBattleAnimBgImage_Fissure[] = INCBIN_U32("graphics/battle_anims/backgrounds/fissure.4bpp.lz"); -const u32 gBattleAnimBgPalette_Fissure[] = INCBIN_U32("graphics/battle_anims/backgrounds/fissure.gbapal.lz"); +const u16 gBattleAnimBgPalette_Fissure[] = INCBIN_U16("graphics/battle_anims/backgrounds/fissure.gbapal"); const u32 gBattleAnimBgTilemap_Fissure[] = INCBIN_U32("graphics/battle_anims/backgrounds/fissure.bin.lz"); const u32 gBattleAnimSpriteGfx_Bird[] = INCBIN_U32("graphics/battle_anims/sprites/bird.4bpp.lz"); -const u32 gBattleAnimSpritePal_Bird[] = INCBIN_U32("graphics/battle_anims/sprites/bird.gbapal.lz"); +const u16 gBattleAnimSpritePal_Bird[] = INCBIN_U16("graphics/battle_anims/sprites/bird.gbapal"); const u32 gBattleAnimSpriteGfx_CrossImpact[] = INCBIN_U32("graphics/battle_anims/sprites/cross_impact.4bpp.lz"); -const u32 gBattleAnimSpritePal_CrossImpact[] = INCBIN_U32("graphics/battle_anims/sprites/cross_impact.gbapal.lz"); +const u16 gBattleAnimSpritePal_CrossImpact[] = INCBIN_U16("graphics/battle_anims/sprites/cross_impact.gbapal"); const u32 gBattleAnimBgImage_Surf[] = INCBIN_U32("graphics/battle_anims/backgrounds/water.4bpp.lz"); -const u32 gBattleAnimBgPalette_Surf[] = INCBIN_U32("graphics/battle_anims/backgrounds/water.gbapal.lz"); +const u16 gBattleAnimBgPalette_Surf[] = INCBIN_U16("graphics/battle_anims/backgrounds/water.gbapal"); const u32 gBattleAnimBgTilemap_SurfOpponent[] = INCBIN_U32("graphics/battle_anims/backgrounds/water_opponent.bin.lz"); const u32 gBattleAnimBgTilemap_SurfPlayer[] = INCBIN_U32("graphics/battle_anims/backgrounds/water_player.bin.lz"); const u32 gBattleAnimBgTilemap_SurfContest[] = INCBIN_U32("graphics/battle_anims/backgrounds/water_contest.bin.lz"); -const u32 gBattleAnimSpritePal_Slash2[] = INCBIN_U32("graphics/battle_anims/sprites/slash_2.gbapal.lz"); +const u16 gBattleAnimSpritePal_Slash2[] = INCBIN_U16("graphics/battle_anims/sprites/slash_2.gbapal"); const u32 gBattleAnimSpriteGfx_WhiteShadow[] = INCBIN_U32("graphics/battle_anims/sprites/white_shadow.4bpp.lz"); -const u32 gBattleAnimSpritePal_WhiteShadow[] = INCBIN_U32("graphics/battle_anims/sprites/white_shadow.gbapal.lz"); +const u16 gBattleAnimSpritePal_WhiteShadow[] = INCBIN_U16("graphics/battle_anims/sprites/white_shadow.gbapal"); // Pledge Effect field status - Rainbow const u32 gBattleAnimBgImage_Rainbow[] = INCBIN_U32("graphics/battle_anims/backgrounds/rainbow.4bpp.lz"); -const u32 gBattleAnimBGPalette_Rainbow[] = INCBIN_U32("graphics/battle_anims/backgrounds/rainbow.gbapal.lz"); +const u16 gBattleAnimBGPalette_Rainbow[] = INCBIN_U16("graphics/battle_anims/backgrounds/rainbow.gbapal"); const u32 gBattleAnimBgTilemap_Rainbow[] = INCBIN_U32("graphics/battle_anims/backgrounds/rainbow.bin.lz"); // Pledge Effect field status - Swamp const u32 gBattleAnimBgImage_Swamp[] = INCBIN_U32("graphics/battle_anims/backgrounds/swampswizzle.4bpp.lz"); -const u32 gBattleAnimBGPalette_Swamp[] = INCBIN_U32("graphics/battle_anims/backgrounds/swampswizzle.gbapal.lz"); +const u16 gBattleAnimBGPalette_Swamp[] = INCBIN_U16("graphics/battle_anims/backgrounds/swampswizzle.gbapal"); const u32 gBattleAnimBgTilemap_Swamp[] = INCBIN_U32("graphics/battle_anims/backgrounds/swampswizzle.bin.lz"); const u32 gPartyMenuBg_Gfx[] = INCBIN_U32("graphics/party_menu/bg.4bpp.lz"); -const u32 gPartyMenuBg_Pal[] = INCBIN_U32("graphics/party_menu/bg.gbapal.lz"); +const u16 gPartyMenuBg_Pal[] = INCBIN_U16("graphics/party_menu/bg.gbapal"); const u32 gPartyMenuBg_Tilemap[] = INCBIN_U32("graphics/party_menu/bg.bin.lz"); const u32 gPartyMenuPokeball_Gfx[] = INCBIN_U32("graphics/party_menu/pokeball.4bpp.lz"); const u32 gPartyMenuPokeballSmall_Gfx[] = INCBIN_U32("graphics/party_menu/pokeball_small.4bpp.lz"); //unused -const u32 gPartyMenuPokeball_Pal[] = INCBIN_U32("graphics/party_menu/pokeball.gbapal.lz"); +const u16 gPartyMenuPokeball_Pal[] = INCBIN_U16("graphics/party_menu/pokeball.gbapal"); 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 gStatusPal_Icons[] = INCBIN_U16("graphics/interface/status_icons.gbapal"); 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"); +const u16 gMoveTypes_Pal[] = INCBIN_U16("graphics/types/move_types.gbapal"); const u32 gSummaryMoveSelect_Gfx[] = INCBIN_U32("graphics/summary_screen/move_select.4bpp.lz"); -const u32 gSummaryMoveSelect_Pal[] = INCBIN_U32("graphics/summary_screen/move_select.gbapal.lz"); +const u16 gSummaryMoveSelect_Pal[] = INCBIN_U16("graphics/summary_screen/move_select.gbapal"); #if P_SUMMARY_SCREEN_IV_EV_TILESET const u32 gSummaryScreen_Gfx[] = INCBIN_U32("graphics/summary_screen/iv_ev_tiles.4bpp.lz"); #else const u32 gSummaryScreen_Gfx[] = INCBIN_U32("graphics/summary_screen/tiles.4bpp.lz"); #endif // P_SUMMARY_SCREEN_IV_EV_TILESET -const u32 gSummaryScreen_Pal[] = INCBIN_U32("graphics/summary_screen/tiles.gbapal.lz"); +const u16 gSummaryScreen_Pal[] = INCBIN_U16("graphics/summary_screen/tiles.gbapal"); const u32 gSummaryPage_Info_Tilemap[] = INCBIN_U32("graphics/summary_screen/page_info.bin.lz"); const u32 gSummaryPage_Skills_Tilemap[] = INCBIN_U32("graphics/summary_screen/page_skills.bin.lz"); const u32 gSummaryPage_BattleMoves_Tilemap[] = INCBIN_U32("graphics/summary_screen/page_battle_moves.bin.lz"); @@ -1703,52 +1703,52 @@ const u32 gSummaryPage_InfoEgg_Tilemap[] = INCBIN_U32("graphics/summary_scr const u32 gBagMaleTiles[] = INCBIN_U32("graphics/bag/bag_male.4bpp.lz"); const u32 gBagFemaleTiles[] = INCBIN_U32("graphics/bag/bag_female.4bpp.lz"); -const u32 gBagPalette[] = INCBIN_U32("graphics/bag/bag.gbapal.lz"); +const u16 gBagPalette[] = INCBIN_U16("graphics/bag/bag.gbapal"); -const u32 gBagScreenMale_Pal[] = INCBIN_U32("graphics/bag/menu_male.gbapal.lz"); -const u32 gBagScreenFemale_Pal[] = INCBIN_U32("graphics/bag/menu_female.gbapal.lz"); +const u16 gBagScreenMale_Pal[] = INCBIN_U16("graphics/bag/menu_male.gbapal"); +const u16 gBagScreenFemale_Pal[] = INCBIN_U16("graphics/bag/menu_female.gbapal"); const u32 gBagScreen_Gfx[] = INCBIN_U32("graphics/bag/menu.4bpp.lz"); const u32 gBagScreen_GfxTileMap[] = INCBIN_U32("graphics/bag/menu.bin.lz"); const u32 gBattlePyramidBag_Gfx[] = INCBIN_U32("graphics/bag/bag_pyramid.4bpp.lz"); -const u32 gBattlePyramidBag_Pal[] = INCBIN_U32("graphics/bag/bag_pyramid.gbapal.lz"); // female palette is first and male is second. +const u16 gBattlePyramidBag_Pal[] = INCBIN_U16("graphics/bag/bag_pyramid.gbapal"); // female palette is first and male is second. const u32 gBattlePyramidBagTilemap[] = INCBIN_U32("graphics/bag/menu_pyramid.bin.lz"); -const u32 gBattlePyramidBagInterface_Pal[] = INCBIN_U32("graphics/bag/menu_pyramid.gbapal.lz"); +const u16 gBattlePyramidBagInterface_Pal[] = INCBIN_U16("graphics/bag/menu_pyramid.gbapal"); const u32 gSwapLineGfx[] = INCBIN_U32("graphics/interface/swap_line.4bpp.lz"); -const u32 gSwapLinePal[] = INCBIN_U32("graphics/interface/swap_line.gbapal.lz"); +const u16 gSwapLinePal[] = INCBIN_U16("graphics/interface/swap_line.gbapal"); const u32 gShopMenu_Gfx[] = INCBIN_U32("graphics/shop/menu.4bpp.lz"); -const u32 gShopMenu_Pal[] = INCBIN_U32("graphics/shop/menu.gbapal.lz"); +const u16 gShopMenu_Pal[] = INCBIN_U16("graphics/shop/menu.gbapal"); const u32 gShopMenu_Tilemap[] = INCBIN_U32("graphics/shop/menu.bin.lz"); const u32 gShopMenuMoney_Gfx[] = INCBIN_U32("graphics/shop/money.4bpp.lz"); // Pokeblock const u32 gMenuPokeblock_Gfx[] = INCBIN_U32("graphics/pokeblock/menu.4bpp.lz"); -const u32 gMenuPokeblock_Pal[] = INCBIN_U32("graphics/pokeblock/menu.gbapal.lz"); +const u16 gMenuPokeblock_Pal[] = INCBIN_U16("graphics/pokeblock/menu.gbapal"); const u32 gMenuPokeblockDevice_Gfx[] = INCBIN_U32("graphics/pokeblock/device.4bpp.lz"); -const u32 gMenuPokeblockDevice_Pal[] = INCBIN_U32("graphics/pokeblock/device.gbapal.lz"); +const u16 gMenuPokeblockDevice_Pal[] = INCBIN_U16("graphics/pokeblock/device.gbapal"); const u32 gMenuPokeblock_Tilemap[] = INCBIN_U32("graphics/pokeblock/menu.bin.lz"); const u32 gPokeblock_Gfx[] = INCBIN_U32("graphics/pokeblock/pokeblock.4bpp.lz"); -const u32 gPokeblockRed_Pal[] = INCBIN_U32("graphics/pokeblock/red.gbapal.lz"); -const u32 gPokeblockBlue_Pal[] = INCBIN_U32("graphics/pokeblock/blue.gbapal.lz"); -const u32 gPokeblockPink_Pal[] = INCBIN_U32("graphics/pokeblock/pink.gbapal.lz"); -const u32 gPokeblockGreen_Pal[] = INCBIN_U32("graphics/pokeblock/green.gbapal.lz"); -const u32 gPokeblockYellow_Pal[] = INCBIN_U32("graphics/pokeblock/yellow.gbapal.lz"); -const u32 gPokeblockPurple_Pal[] = INCBIN_U32("graphics/pokeblock/purple.gbapal.lz"); -const u32 gPokeblockIndigo_Pal[] = INCBIN_U32("graphics/pokeblock/indigo.gbapal.lz"); -const u32 gPokeblockBrown_Pal[] = INCBIN_U32("graphics/pokeblock/brown.gbapal.lz"); -const u32 gPokeblockLiteBlue_Pal[] = INCBIN_U32("graphics/pokeblock/liteblue.gbapal.lz"); -const u32 gPokeblockOlive_Pal[] = INCBIN_U32("graphics/pokeblock/olive.gbapal.lz"); -const u32 gPokeblockGray_Pal[] = INCBIN_U32("graphics/pokeblock/gray.gbapal.lz"); -const u32 gPokeblockBlack_Pal[] = INCBIN_U32("graphics/pokeblock/black.gbapal.lz"); -const u32 gPokeblockWhite_Pal[] = INCBIN_U32("graphics/pokeblock/white.gbapal.lz"); -const u32 gPokeblockGold_Pal[] = INCBIN_U32("graphics/pokeblock/gold.gbapal.lz"); +const u16 gPokeblockRed_Pal[] = INCBIN_U16("graphics/pokeblock/red.gbapal"); +const u16 gPokeblockBlue_Pal[] = INCBIN_U16("graphics/pokeblock/blue.gbapal"); +const u16 gPokeblockPink_Pal[] = INCBIN_U16("graphics/pokeblock/pink.gbapal"); +const u16 gPokeblockGreen_Pal[] = INCBIN_U16("graphics/pokeblock/green.gbapal"); +const u16 gPokeblockYellow_Pal[] = INCBIN_U16("graphics/pokeblock/yellow.gbapal"); +const u16 gPokeblockPurple_Pal[] = INCBIN_U16("graphics/pokeblock/purple.gbapal"); +const u16 gPokeblockIndigo_Pal[] = INCBIN_U16("graphics/pokeblock/indigo.gbapal"); +const u16 gPokeblockBrown_Pal[] = INCBIN_U16("graphics/pokeblock/brown.gbapal"); +const u16 gPokeblockLiteBlue_Pal[] = INCBIN_U16("graphics/pokeblock/liteblue.gbapal"); +const u16 gPokeblockOlive_Pal[] = INCBIN_U16("graphics/pokeblock/olive.gbapal"); +const u16 gPokeblockGray_Pal[] = INCBIN_U16("graphics/pokeblock/gray.gbapal"); +const u16 gPokeblockBlack_Pal[] = INCBIN_U16("graphics/pokeblock/black.gbapal"); +const u16 gPokeblockWhite_Pal[] = INCBIN_U16("graphics/pokeblock/white.gbapal"); +const u16 gPokeblockGold_Pal[] = INCBIN_U16("graphics/pokeblock/gold.gbapal"); const u32 gPokeblockFeedBg_Tilemap[] = INCBIN_U32("graphics/pokeblock/feeding_bg.bin.lz"); @@ -1757,13 +1757,13 @@ const u32 gPokeblockFeedBg_Tilemap[] = INCBIN_U32("graphics/pokeblock/feeding_bg #include "data/graphics/items.h" #include "data/graphics/decorations.h" -const u32 gBattleAnimSpritePal_Shock3[] = INCBIN_U32("graphics/battle_anims/sprites/shock_3.gbapal.lz"); +const u16 gBattleAnimSpritePal_Shock3[] = INCBIN_U16("graphics/battle_anims/sprites/shock_3.gbapal"); const u32 gBattleAnimSpriteGfx_Shock3[] = INCBIN_U32("graphics/battle_anims/sprites/shock_3.4bpp.lz"); -const u32 gBattleAnimSpritePal_WhiteFeather[] = INCBIN_U32("graphics/battle_anims/sprites/white_feather.gbapal.lz"); +const u16 gBattleAnimSpritePal_WhiteFeather[] = INCBIN_U16("graphics/battle_anims/sprites/white_feather.gbapal"); const u32 gBattleAnimSpriteGfx_WhiteFeather[] = INCBIN_U32("graphics/battle_anims/sprites/white_feather.4bpp.lz"); -const u32 gBattleAnimSpritePal_Sparkle6[] = INCBIN_U32("graphics/battle_anims/sprites/sparkle_6.gbapal.lz"); +const u16 gBattleAnimSpritePal_Sparkle6[] = INCBIN_U16("graphics/battle_anims/sprites/sparkle_6.gbapal"); const u32 gBattleAnimSpriteGfx_Sparkle6[] = INCBIN_U32("graphics/battle_anims/sprites/sparkle_6.4bpp.lz"); const u16 gCableCarBg_Pal[] = INCBIN_U16("graphics/cable_car/bg.gbapal"); @@ -1996,7 +1996,7 @@ const u32 gUnionRoomChat_Keyboard_Gfx[] = INCBIN_U32("graphics/union_room_chat/k const u32 gUnionRoomChat_Keyboard_Tilemap[] = INCBIN_U32("graphics/union_room_chat/keyboard.bin.lz"); const u32 gUnionRoomChat_RButtonLabels[] = INCBIN_U32("graphics/union_room_chat/r_button_labels.4bpp.lz"); -const u16 gTilesetPalettes_General[][16] = +const u16 ALIGNED(4) gTilesetPalettes_General[][16] = { INCBIN_U16("data/tilesets/primary/general/palettes/00.gbapal"), INCBIN_U16("data/tilesets/primary/general/palettes/01.gbapal"), @@ -2101,6 +2101,6 @@ const u32 gBerryCrush_TextWindows_Tilemap[] = INCBIN_U32("graphics/berry_crush/t const u32 gBattleIcons_Gfx1[] = INCBIN_U32("graphics/types/battle_icons1.4bpp.lz"); const u32 gBattleIcons_Gfx2[] = INCBIN_U32("graphics/types/battle_icons2.4bpp.lz"); -const u32 gBattleIcons_Pal1[] = INCBIN_U32("graphics/types/battle_icons1.gbapal.lz"); -const u32 gBattleIcons_Pal2[] = INCBIN_U32("graphics/types/battle_icons2.gbapal.lz"); +const u16 gBattleIcons_Pal1[] = INCBIN_U16("graphics/types/battle_icons1.gbapal"); +const u16 gBattleIcons_Pal2[] = INCBIN_U16("graphics/types/battle_icons2.gbapal"); diff --git a/src/hall_of_fame.c b/src/hall_of_fame.c index 1beb7054c5..06142b0bb0 100644 --- a/src/hall_of_fame.c +++ b/src/hall_of_fame.c @@ -141,7 +141,7 @@ static const struct CompressedSpriteSheet sSpriteSheet_Confetti[] = {}, }; -static const struct CompressedSpritePalette sSpritePalette_Confetti[] = +static const struct SpritePalette sSpritePalette_Confetti[] = { {.data = gConfetti_Pal, .tag = TAG_CONFETTI}, {}, @@ -1287,7 +1287,7 @@ static void LoadHofGfx(void) FreeAllSpritePalettes(); gReservedSpritePaletteCount = 8; LoadCompressedSpriteSheet(sSpriteSheet_Confetti); - LoadCompressedSpritePalette(sSpritePalette_Confetti); + LoadSpritePalette(sSpritePalette_Confetti); } static void InitHofBgs(void) @@ -1498,7 +1498,7 @@ static void Task_DoDomeConfetti(u8 taskId) gSpecialVar_0x8005 = 0xFFFF; } LoadCompressedSpriteSheet(sSpriteSheet_Confetti); - LoadCompressedSpritePalette(sSpritePalette_Confetti); + LoadSpritePalette(sSpritePalette_Confetti); tState++; break; case 1: diff --git a/src/intro.c b/src/intro.c index 88cb1f820e..7a19e235ef 100644 --- a/src/intro.c +++ b/src/intro.c @@ -109,7 +109,7 @@ static void SpriteCB_RayquazaOrb(struct Sprite *sprite); static void MainCB2_EndIntro(void); extern const struct CompressedSpriteSheet gBattleAnimPicTable[]; -extern const struct CompressedSpritePalette gBattleAnimPaletteTable[]; +extern const struct SpritePalette gBattleAnimPaletteTable[]; extern const struct SpriteTemplate gAncientPowerRockSpriteTemplate; enum { @@ -1790,7 +1790,7 @@ static void Task_Scene3_LoadGroudon(u8 taskId) LZDecompressVram(gIntroLegendBg_Gfx, (void *)(BG_CHAR_ADDR(1))); LZDecompressVram(gIntroGroudonBg_Tilemap, (void *)(BG_SCREEN_ADDR(28))); LoadCompressedSpriteSheetUsingHeap(&gBattleAnimPicTable[GET_TRUE_SPRITE_INDEX(ANIM_TAG_ROCKS)]); - LoadCompressedSpritePaletteUsingHeap(&gBattleAnimPaletteTable[GET_TRUE_SPRITE_INDEX(ANIM_TAG_ROCKS)]); + LoadSpritePalette(&gBattleAnimPaletteTable[GET_TRUE_SPRITE_INDEX(ANIM_TAG_ROCKS)]); CpuCopy16(gIntro3Bg_Pal, gPlttBufferUnfaded, sizeof(gIntro3Bg_Pal)); gTasks[taskId].func = Task_Scene3_InitGroudonBg; } diff --git a/src/item_icon.c b/src/item_icon.c index 03b56918be..e5bd085d7f 100644 --- a/src/item_icon.c +++ b/src/item_icon.c @@ -96,7 +96,7 @@ u8 AddItemIconSprite(u16 tilesTag, u16 paletteTag, u16 itemId) { u8 spriteId; struct SpriteSheet spriteSheet; - struct CompressedSpritePalette spritePalette; + struct SpritePalette spritePalette; struct SpriteTemplate *spriteTemplate; LZDecompressWram(GetItemIconPic(itemId), gItemIconDecompressionBuffer); @@ -108,7 +108,7 @@ u8 AddItemIconSprite(u16 tilesTag, u16 paletteTag, u16 itemId) spritePalette.data = GetItemIconPalette(itemId); spritePalette.tag = paletteTag; - LoadCompressedSpritePalette(&spritePalette); + LoadSpritePalette(&spritePalette); spriteTemplate = Alloc(sizeof(*spriteTemplate)); CpuCopy16(&gItemIconSpriteTemplate, spriteTemplate, sizeof(*spriteTemplate)); @@ -133,7 +133,7 @@ u8 AddCustomItemIconSprite(const struct SpriteTemplate *customSpriteTemplate, u1 { u8 spriteId; struct SpriteSheet spriteSheet; - struct CompressedSpritePalette spritePalette; + struct SpritePalette spritePalette; struct SpriteTemplate *spriteTemplate; LZDecompressWram(GetItemIconPic(itemId), gItemIconDecompressionBuffer); @@ -145,7 +145,7 @@ u8 AddCustomItemIconSprite(const struct SpriteTemplate *customSpriteTemplate, u1 spritePalette.data = GetItemIconPalette(itemId); spritePalette.tag = paletteTag; - LoadCompressedSpritePalette(&spritePalette); + LoadSpritePalette(&spritePalette); spriteTemplate = Alloc(sizeof(*spriteTemplate)); CpuCopy16(customSpriteTemplate, spriteTemplate, sizeof(*spriteTemplate)); @@ -176,7 +176,7 @@ const void *GetItemIconPic(u16 itemId) return gItemsInfo[itemId].iconPic; } -const void *GetItemIconPalette(u16 itemId) +const u16 *GetItemIconPalette(u16 itemId) { if (itemId == ITEM_LIST_END) return gItemIconPalette_ReturnToFieldArrow; diff --git a/src/item_menu.c b/src/item_menu.c index e8b80fdf98..900ddd3bc3 100755 --- a/src/item_menu.c +++ b/src/item_menu.c @@ -833,9 +833,9 @@ static bool8 LoadBagMenu_Graphics(void) break; case 2: if (!IsWallysBag() && gSaveBlock2Ptr->playerGender != MALE) - LoadCompressedPalette(gBagScreenFemale_Pal, BG_PLTT_ID(0), 2 * PLTT_SIZE_4BPP); + LoadPalette(gBagScreenFemale_Pal, BG_PLTT_ID(0), 2 * PLTT_SIZE_4BPP); else - LoadCompressedPalette(gBagScreenMale_Pal, BG_PLTT_ID(0), 2 * PLTT_SIZE_4BPP); + LoadPalette(gBagScreenMale_Pal, BG_PLTT_ID(0), 2 * PLTT_SIZE_4BPP); gBagMenu->graphicsLoadState++; break; case 3: @@ -846,7 +846,7 @@ static bool8 LoadBagMenu_Graphics(void) gBagMenu->graphicsLoadState++; break; case 4: - LoadCompressedSpritePalette(&gBagPaletteTable); + LoadSpritePalette(&gBagPaletteTable); gBagMenu->graphicsLoadState++; break; default: diff --git a/src/item_menu_icons.c b/src/item_menu_icons.c index 29cdb224bb..a56e6189ef 100644 --- a/src/item_menu_icons.c +++ b/src/item_menu_icons.c @@ -23,10 +23,10 @@ enum { #define TAG_BERRY_CHECK_CIRCLE_GFX 10000 #define TAG_BERRY_PIC_PAL 30020 -struct CompressedTilesPal +struct TilesPal { const u32 *tiles; - const u32 *pal; + const u16 *pal; }; // this file's functions @@ -140,7 +140,7 @@ const struct CompressedSpriteSheet gBagFemaleSpriteSheet = gBagFemaleTiles, 0x3000, TAG_BAG_GFX }; -const struct CompressedSpritePalette gBagPaletteTable = +const struct SpritePalette gBagPaletteTable = { gBagPalette, TAG_BAG_GFX }; @@ -322,7 +322,7 @@ static const struct SpriteTemplate sBerryPicRotatingSpriteTemplate = .callback = SpriteCallbackDummy, }; -static const struct CompressedTilesPal sBerryPicTable[] = +static const struct TilesPal sBerryPicTable[] = { [ITEM_TO_BERRY(ITEM_CHERI_BERRY) - 1] = {gBerryPic_Cheri, gBerryPalette_Cheri}, [ITEM_TO_BERRY(ITEM_CHESTO_BERRY) - 1] = {gBerryPic_Chesto, gBerryPalette_Chesto}, @@ -399,7 +399,7 @@ const struct CompressedSpriteSheet gBerryCheckCircleSpriteSheet = gBerryCheckCircle_Gfx, 0x800, TAG_BERRY_CHECK_CIRCLE_GFX }; -const struct CompressedSpritePalette gBerryCheckCirclePaletteTable = +const struct SpritePalette gBerryCheckCirclePaletteTable = { gBerryCheck_Pal, TAG_BERRY_CHECK_CIRCLE_GFX }; @@ -648,11 +648,11 @@ struct BerryDynamicGfx static struct BerryDynamicGfx *LoadBerryGfx(u8 berryId) { - struct CompressedSpritePalette pal; + struct SpritePalette pal; pal.data = sBerryPicTable[berryId].pal; pal.tag = TAG_BERRY_PIC_PAL + berryId; - LoadCompressedSpritePalette(&pal); + LoadSpritePalette(&pal); struct BerryDynamicGfx *gfxAlloced = Alloc(sizeof(struct BerryDynamicGfx)); void *buffer = malloc_and_decompress(sBerryPicTable[berryId].tiles, NULL); ArrangeBerryGfx(buffer, gfxAlloced->gfx); diff --git a/src/item_use.c b/src/item_use.c index 54402ffe10..44858183c1 100644 --- a/src/item_use.c +++ b/src/item_use.c @@ -19,6 +19,7 @@ #include "field_screen_effect.h" #include "field_weather.h" #include "fldeff.h" +#include "follower_npc.h" #include "item.h" #include "item_menu.h" #include "item_use.h" @@ -263,7 +264,7 @@ void ItemUseOutOfBattle_Bike(u8 taskId) } else { - if (Overworld_IsBikingAllowed() == TRUE && IsBikingDisallowedByPlayer() == 0) + if (Overworld_IsBikingAllowed() && !IsBikingDisallowedByPlayer() && FollowerNPCCanBike()) { sItemUseOnFieldCB = ItemUseOnFieldCB_Bike; SetUpItemUseOnFieldCallback(taskId); @@ -281,6 +282,8 @@ static void ItemUseOnFieldCB_Bike(u8 taskId) GetOnOffBike(PLAYER_AVATAR_FLAG_MACH_BIKE); else // ACRO_BIKE GetOnOffBike(PLAYER_AVATAR_FLAG_ACRO_BIKE); + + FollowerNPC_HandleBike(); ScriptUnfreezeObjectEvents(); UnlockPlayerFieldControls(); DestroyTask(taskId); @@ -1073,6 +1076,9 @@ static void ItemUseOnFieldCB_EscapeRope(u8 taskId) bool8 CanUseDigOrEscapeRopeOnCurMap(void) { + if (!CheckFollowerNPCFlag(FOLLOWER_NPC_FLAG_CAN_LEAVE_ROUTE)) + return FALSE; + if (gMapHeader.allowEscaping) return TRUE; else diff --git a/src/line_break.c b/src/line_break.c index b8888f501f..6684b32375 100644 --- a/src/line_break.c +++ b/src/line_break.c @@ -14,7 +14,21 @@ void StripLineBreaks(u8 *src) } } -void BreakStringAutomatic(u8 *src, u32 maxWidth, u32 screenLines, u8 fontId) +u32 CountLineBreaks(u8 *src) +{ + u32 currIndex = 0; + u32 numNewLines = 0; + while (src[currIndex] != EOS) + { + if (src[currIndex] == CHAR_PROMPT_SCROLL || src[currIndex] == CHAR_NEWLINE) + numNewLines++; + currIndex++; + } + + return numNewLines; +} + +void BreakStringAutomatic(u8 *src, u32 maxWidth, u32 screenLines, u8 fontId, enum ToggleScrollPrompt toggleScrollPrompt) { u32 currIndex = 0; u8 *currSrc = src; @@ -24,16 +38,16 @@ void BreakStringAutomatic(u8 *src, u32 maxWidth, u32 screenLines, u8 fontId) { u8 replacedChar = src[currIndex + 1]; src[currIndex + 1] = EOS; - BreakSubStringAutomatic(currSrc, maxWidth, screenLines, fontId); + BreakSubStringAutomatic(currSrc, maxWidth, screenLines, fontId, toggleScrollPrompt); src[currIndex + 1] = replacedChar; currSrc = &src[currIndex + 1]; } currIndex++; } - BreakSubStringAutomatic(currSrc, maxWidth, screenLines, fontId); + BreakSubStringAutomatic(currSrc, maxWidth, screenLines, fontId, toggleScrollPrompt); } -void BreakSubStringAutomatic(u8 *src, u32 maxWidth, u32 screenLines, u8 fontId) +void BreakSubStringAutomatic(u8 *src, u32 maxWidth, u32 screenLines, u8 fontId, enum ToggleScrollPrompt toggleScrollPrompt) { // If the string already has line breaks, don't interfere with them if (StringHasManualBreaks(src)) @@ -185,7 +199,7 @@ void BreakSubStringAutomatic(u8 *src, u32 maxWidth, u32 screenLines, u8 fontId) } } while (shouldTryAgain); //u32 currBadness = GetStringBadness(stringLines, totalLines, maxWidth); - BuildNewString(stringLines, totalLines, screenLines, src); + BuildNewString(stringLines, totalLines, screenLines, src, toggleScrollPrompt); Free(stringLines); } @@ -247,7 +261,7 @@ u32 GetStringBadness(struct StringLine *stringLines, u32 numLines, u32 maxWidth) } // Build the new string from the data stored in the StringLine structs -void BuildNewString(struct StringLine *stringLines, u32 numLines, u32 maxLines, u8 *str) +void BuildNewString(struct StringLine *stringLines, u32 numLines, u32 maxLines, u8 *str, enum ToggleScrollPrompt toggleScrollPrompt) { u32 srcCharIndex = 0; for (u32 lineIndex = 0; lineIndex < numLines; lineIndex++) @@ -259,7 +273,7 @@ void BuildNewString(struct StringLine *stringLines, u32 numLines, u32 maxLines, if (lineIndex + 1 < numLines) { // Add the appropriate line break depending on line number - if (lineIndex >= maxLines - 1 && numLines > maxLines) + if (lineIndex >= maxLines - 1 && numLines > maxLines && toggleScrollPrompt == SHOW_SCROLL_PROMPT) str[srcCharIndex] = CHAR_PROMPT_SCROLL; else str[srcCharIndex] = CHAR_NEWLINE; diff --git a/src/load_save.c b/src/load_save.c index 97b81e61dc..ed9a9852e7 100644 --- a/src/load_save.c +++ b/src/load_save.c @@ -1,6 +1,8 @@ #include "global.h" #include "malloc.h" #include "berry_powder.h" +#include "fake_rtc.h" +#include "follower_npc.h" #include "item.h" #include "load_save.h" #include "main.h" @@ -9,6 +11,7 @@ #include "pokemon_storage_system.h" #include "random.h" #include "save_location.h" +#include "script_pokemon_util.h" #include "trainer_hill.h" #include "gba/flash_internal.h" #include "decoration_inventory.h" @@ -63,6 +66,7 @@ void CheckForFlashMemory(void) void ClearSav3(void) { CpuFill16(0, &gSaveblock3, sizeof(struct SaveBlock3)); + FakeRtc_Reset(); } void ClearSav2(void) diff --git a/src/map_name_popup.c b/src/map_name_popup.c index 6aaebd39b1..c14203fc56 100644 --- a/src/map_name_popup.c +++ b/src/map_name_popup.c @@ -41,6 +41,7 @@ enum MapPopUp_Themes_BW // static functions static void Task_MapNamePopUpWindow(u8 taskId); +static void UpdateSecondaryPopUpWindow(u8 secondaryPopUpWindowId); static void ShowMapNamePopUpWindow(void); static void LoadMapNamePopUpWindowBg(void); @@ -503,6 +504,20 @@ void HideMapNamePopUpWindow(void) } } +static void UpdateSecondaryPopUpWindow(u8 secondaryPopUpWindowId) +{ + u8 mapDisplayHeader[24]; + u8 *withoutPrefixPtr = &(mapDisplayHeader[0]); + + 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(secondaryPopUpWindowId, COPYWIN_FULL); +} + static void ShowMapNamePopUpWindow(void) { u8 mapDisplayHeader[24]; @@ -553,16 +568,8 @@ static void ShowMapNamePopUpWindow(void) 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); + UpdateSecondaryPopUpWindow(secondaryPopUpWindowId); } else { diff --git a/src/match_call.c b/src/match_call.c index c29dda3623..7b76d63813 100644 --- a/src/match_call.c +++ b/src/match_call.c @@ -1752,6 +1752,7 @@ static void PopulateSpeciesFromTrainerLocation(int matchCallId, u8 *destStr) int numSpecies; u8 slot; int i = 0; + enum TimeOfDay timeOfDay; if (gWildMonHeaders[i].mapGroup != MAP_GROUP(MAP_UNDEFINED)) // ??? This check is nonsense. { @@ -1766,18 +1767,20 @@ static void PopulateSpeciesFromTrainerLocation(int matchCallId, u8 *destStr) if (gWildMonHeaders[i].mapGroup != MAP_GROUP(MAP_UNDEFINED)) { + timeOfDay = GetTimeOfDayForEncounters(i, WILD_AREA_LAND); numSpecies = 0; - if (gWildMonHeaders[i].landMonsInfo) + if (gWildMonHeaders[i].encounterTypes[timeOfDay].landMonsInfo) { slot = GetLandEncounterSlot(); - species[numSpecies] = gWildMonHeaders[i].landMonsInfo->wildPokemon[slot].species; + species[numSpecies] = gWildMonHeaders[i].encounterTypes[timeOfDay].landMonsInfo->wildPokemon[slot].species; numSpecies++; } - if (gWildMonHeaders[i].waterMonsInfo) + timeOfDay = GetTimeOfDayForEncounters(i, WILD_AREA_WATER); + if (gWildMonHeaders[i].encounterTypes[timeOfDay].waterMonsInfo) { slot = GetWaterEncounterSlot(); - species[numSpecies] = gWildMonHeaders[i].waterMonsInfo->wildPokemon[slot].species; + species[numSpecies] = gWildMonHeaders[i].encounterTypes[timeOfDay].waterMonsInfo->wildPokemon[slot].species; numSpecies++; } diff --git a/src/menu_helpers.c b/src/menu_helpers.c index 75f9d2e552..e1483c9579 100644 --- a/src/menu_helpers.c +++ b/src/menu_helpers.c @@ -74,7 +74,7 @@ static const struct CompressedSpriteSheet sSpriteSheet_SwapLine = gSwapLineGfx, 0x100, TAG_SWAP_LINE }; -static const struct CompressedSpritePalette sSpritePalette_SwapLine = +static const struct SpritePalette sSpritePalette_SwapLine = { gSwapLinePal, TAG_SWAP_LINE }; @@ -393,7 +393,7 @@ void SetCursorScrollWithinListBounds(u16 *scrollOffset, u16 *cursorPos, u8 shown void LoadListMenuSwapLineGfx(void) { LoadCompressedSpriteSheet(&sSpriteSheet_SwapLine); - LoadCompressedSpritePalette(&sSpritePalette_SwapLine); + LoadSpritePalette(&sSpritePalette_SwapLine); } void CreateSwapLineSprites(u8 *spriteIds, u8 count) diff --git a/src/menu_specialized.c b/src/menu_specialized.c index 194f523334..df4233fd14 100644 --- a/src/menu_specialized.c +++ b/src/menu_specialized.c @@ -1074,7 +1074,7 @@ void GetConditionMenuMonGfx(void *tilesDst, void *palDst, u16 boxId, u16 monId, u32 personality = GetBoxOrPartyMonData(boxId, monId, MON_DATA_PERSONALITY, NULL); LoadSpecialPokePic(tilesDst, species, personality, TRUE); - LZ77UnCompWram(GetMonSpritePalFromSpeciesAndPersonality(species, isShiny, personality), palDst); + memcpy(palDst, GetMonSpritePalFromSpeciesAndPersonality(species, isShiny, personality), 32); } } diff --git a/src/money.c b/src/money.c index 0a5129c934..9fd32f590b 100644 --- a/src/money.c +++ b/src/money.c @@ -62,7 +62,7 @@ static const struct CompressedSpriteSheet sSpriteSheet_MoneyLabel = .tag = MONEY_LABEL_TAG, }; -static const struct CompressedSpritePalette sSpritePalette_MoneyLabel = +static const struct SpritePalette sSpritePalette_MoneyLabel = { .data = gShopMenu_Pal, .tag = MONEY_LABEL_TAG @@ -201,7 +201,7 @@ void HideMoneyBox(void) void AddMoneyLabelObject(u16 x, u16 y) { LoadCompressedSpriteSheet(&sSpriteSheet_MoneyLabel); - LoadCompressedSpritePalette(&sSpritePalette_MoneyLabel); + LoadSpritePalette(&sSpritePalette_MoneyLabel); sMoneyLabelSpriteId = CreateSprite(&sSpriteTemplate_MoneyLabel, x, y, 0); } diff --git a/src/move_relearner.c b/src/move_relearner.c index 6acfee0cb5..b48d31677a 100644 --- a/src/move_relearner.c +++ b/src/move_relearner.c @@ -735,7 +735,7 @@ static void DoMoveRelearnerMain(void) { u16 move = GetMonData(&gPlayerParty[sMoveRelearnerStruct->partyMon], MON_DATA_MOVE1 + sMoveRelearnerStruct->moveSlot); u8 originalPP = GetMonData(&gPlayerParty[sMoveRelearnerStruct->partyMon], MON_DATA_PP1 + sMoveRelearnerStruct->moveSlot); - + StringCopy(gStringVar3, GetMoveName(move)); RemoveMonPPBonus(&gPlayerParty[sMoveRelearnerStruct->partyMon], sMoveRelearnerStruct->moveSlot); SetMonMoveSlot(&gPlayerParty[sMoveRelearnerStruct->partyMon], GetCurrentSelectedMove(), sMoveRelearnerStruct->moveSlot); diff --git a/src/new_game.c b/src/new_game.c index 8916354d9a..1adcee7566 100644 --- a/src/new_game.c +++ b/src/new_game.c @@ -47,6 +47,7 @@ #include "constants/map_groups.h" #include "constants/items.h" #include "difficulty.h" +#include "follower_npc.h" extern const u8 EventScript_ResetAllMapFlags[]; @@ -211,6 +212,7 @@ void NewGameInitData(void) SetCurrentDifficultyLevel(DIFFICULTY_NORMAL); ResetItemFlags(); ResetDexNav(); + ClearFollowerNPCData(); } static void ResetMiniGamesRecords(void) diff --git a/src/overworld.c b/src/overworld.c index 26a1cb8826..d9a688c7b5 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -10,9 +10,11 @@ #include "event_data.h" #include "event_object_movement.h" #include "event_scripts.h" +#include "fake_rtc.h" #include "field_camera.h" #include "field_control_avatar.h" #include "field_effect.h" +#include "field_effect_helpers.h" #include "field_message_box.h" #include "field_player_avatar.h" #include "field_screen_effect.h" @@ -22,6 +24,7 @@ #include "field_weather.h" #include "fieldmap.h" #include "fldeff.h" +#include "follower_npc.h" #include "gpu_regs.h" #include "heal_location.h" #include "io_reg.h" @@ -66,6 +69,8 @@ #include "vs_seeker.h" #include "frontier_util.h" #include "constants/abilities.h" +#include "constants/event_object_movement.h" +#include "constants/event_objects.h" #include "constants/layouts.h" #include "constants/map_types.h" #include "constants/region_map_sections.h" @@ -197,6 +202,11 @@ COMMON_DATA bool8 (*gFieldCallback2)(void) = NULL; COMMON_DATA u8 gLocalLinkPlayerId = 0; // This is our player id in a multiplayer mode. COMMON_DATA u8 gFieldLinkPlayerCount = 0; +u8 gTimeOfDay; +struct TimeBlendSettings gTimeBlend; +s16 gTimeUpdateCounter; // playTimeVBlanks will eventually overflow, so this is used to update TOD + +// EWRAM vars EWRAM_DATA static u8 sObjectEventLoadFlag = 0; EWRAM_DATA struct WarpData gLastUsedWarp = {0}; EWRAM_DATA static struct WarpData sWarpDestination = {0}; // new warp position @@ -206,6 +216,7 @@ EWRAM_DATA static u16 sLastMapSectionId = 0; EWRAM_DATA static struct InitialPlayerAvatarState sInitialPlayerAvatarState = {0}; EWRAM_DATA static u16 sAmbientCrySpecies = 0; EWRAM_DATA static bool8 sIsAmbientCryWaterMon = FALSE; +EWRAM_DATA static u8 sHoursOverride = 0; // used to override apparent time of day hours EWRAM_DATA struct LinkPlayerObjectEvent gLinkPlayerObjectEvents[4] = {0}; EWRAM_DATA bool8 gExitStairsMovementDisabled = FALSE; @@ -367,8 +378,6 @@ static void (*const sMovementStatusHandler[])(struct LinkPlayerObjectEvent *, st void DoWhiteOut(void) { RunScriptImmediately(EventScript_WhiteOut); - if (B_WHITEOUT_MONEY == GEN_3) - SetMoney(&gSaveBlock1Ptr->money, GetMoney(&gSaveBlock1Ptr->money) / 2); HealPlayerParty(); Overworld_ResetStateAfterWhiteOut(); SetWarpDestinationToLastHealLocation(); @@ -429,6 +438,7 @@ void Overworld_ResetBattleFlagsAndVars(void) FlagClear(B_FLAG_NO_RUNNING); FlagClear(B_FLAG_DYNAMAX_BATTLE); FlagClear(B_FLAG_SKY_BATTLE); + FlagClear(B_FLAG_NO_WHITEOUT); } #endif @@ -449,6 +459,7 @@ static void Overworld_ResetStateAfterWhiteOut(void) VarSet(VAR_SHOULD_END_ABNORMAL_WEATHER, 0); VarSet(VAR_ABNORMAL_WEATHER_LOCATION, ABNORMAL_WEATHER_NONE); } + FollowerNPC_TryRemoveFollowerOnWhiteOut(); } static void UpdateMiscOverworldStates(void) @@ -828,8 +839,6 @@ bool8 SetDiveWarpDive(u16 x, u16 y) void LoadMapFromCameraTransition(u8 mapGroup, u8 mapNum) { - s32 paletteIndex; - SetWarpDestination(mapGroup, mapNum, WARP_ID_NONE, -1, -1); // Dont transition map music between BF Outside West/East @@ -859,10 +868,9 @@ if (I_VS_SEEKER_CHARGING != 0) RunOnTransitionMapScript(); InitMap(); CopySecondaryTilesetToVramUsingHeap(gMapHeader.mapLayout); - LoadSecondaryTilesetPalette(gMapHeader.mapLayout); + LoadSecondaryTilesetPalette(gMapHeader.mapLayout, TRUE); // skip copying to Faded, gamma shift will take care of it - for (paletteIndex = NUM_PALS_IN_PRIMARY; paletteIndex < NUM_PALS_TOTAL; paletteIndex++) - ApplyWeatherColorMapToPal(paletteIndex); + ApplyWeatherColorMapToPals(NUM_PALS_IN_PRIMARY, NUM_PALS_TOTAL - NUM_PALS_IN_PRIMARY); // palettes [6,12] InitSecondaryTilesetAnimation(); UpdateLocationHistoryForRoamer(); @@ -907,6 +915,8 @@ static void LoadMapFromWarp(bool32 a1) TrySetMapSaveWarpStatus(); ClearTempFieldEventData(); ResetDexNavSearch(); + // reset hours override on every warp + sHoursOverride = 0; ResetCyclingRoadChallengeData(); RestartWildEncounterImmunitySteps(); #if FREE_MATCH_CALL == FALSE @@ -1527,6 +1537,9 @@ static void DoCB1_Overworld(u16 newKeys, u16 heldKeys) PlayerStep(inputStruct.dpadDirection, newKeys, heldKeys); } } + // If stop running but keep holding B -> fix follower frame. + if (PlayerHasFollowerNPC() && (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_ON_FOOT) && IsPlayerStandingStill()) + ObjectEventSetHeldMovement(&gObjectEvents[GetFollowerNPCObjectId()], GetFaceDirectionAnimNum(gObjectEvents[GetFollowerNPCObjectId()].facingDirection)); } void CB1_Overworld(void) @@ -1535,6 +1548,151 @@ void CB1_Overworld(void) DoCB1_Overworld(gMain.newKeys, gMain.heldKeys); } +#define TINT_NIGHT Q_8_8(0.456) | Q_8_8(0.456) << 8 | Q_8_8(0.615) << 16 + +const struct BlendSettings gTimeOfDayBlend[] = +{ + [TIME_MORNING] = {.coeff = 4, .blendColor = 0xA8B0E0, .isTint = TRUE}, + [TIME_DAY] = {.coeff = 0, .blendColor = 0, .isTint = FALSE}, + [TIME_EVENING] = {.coeff = 4, .blendColor = 0xA8B0E0, .isTint = TRUE}, + [TIME_NIGHT] = {.coeff = 10, .blendColor = TINT_NIGHT, .isTint = TRUE}, +}; + +#define DEFAULT_WEIGHT 256 +#define TIME_BLEND_WEIGHT(begin, end) (DEFAULT_WEIGHT - (DEFAULT_WEIGHT * ((hours - begin) * MINUTES_PER_HOUR + minutes) / ((end - begin) * MINUTES_PER_HOUR))) + +#define MORNING_HOUR_MIDDLE (MORNING_HOUR_BEGIN + ((MORNING_HOUR_END - MORNING_HOUR_BEGIN) / 2)) + +void UpdateTimeOfDay(void) +{ + s32 hours, minutes; + RtcCalcLocalTime(); + hours = sHoursOverride ? sHoursOverride : gLocalTime.hours; + minutes = sHoursOverride ? 0 : gLocalTime.minutes; + + if (IsBetweenHours(hours, MORNING_HOUR_BEGIN, MORNING_HOUR_MIDDLE)) // night->morning + { + gTimeBlend.startBlend = gTimeOfDayBlend[TIME_NIGHT]; + gTimeBlend.endBlend = gTimeOfDayBlend[TIME_MORNING]; + gTimeBlend.weight = TIME_BLEND_WEIGHT(MORNING_HOUR_BEGIN, MORNING_HOUR_MIDDLE); + gTimeBlend.altWeight = (DEFAULT_WEIGHT - gTimeBlend.weight) / 2; + gTimeOfDay = TIME_MORNING; + } + else if (IsBetweenHours(hours, MORNING_HOUR_MIDDLE, MORNING_HOUR_END)) // morning->day + { + gTimeBlend.startBlend = gTimeOfDayBlend[TIME_MORNING]; + gTimeBlend.endBlend = gTimeOfDayBlend[TIME_DAY]; + gTimeBlend.weight = TIME_BLEND_WEIGHT(MORNING_HOUR_MIDDLE, MORNING_HOUR_END); + gTimeBlend.altWeight = (DEFAULT_WEIGHT - gTimeBlend.weight) / 2 + (DEFAULT_WEIGHT / 2); + gTimeOfDay = TIME_MORNING; + } + else if (IsBetweenHours(hours, EVENING_HOUR_BEGIN, EVENING_HOUR_END)) // evening + { + gTimeBlend.startBlend = gTimeOfDayBlend[TIME_DAY]; + gTimeBlend.endBlend = gTimeOfDayBlend[TIME_EVENING]; + gTimeBlend.weight = TIME_BLEND_WEIGHT(EVENING_HOUR_BEGIN, EVENING_HOUR_END); + gTimeBlend.altWeight = gTimeBlend.weight / 2 + (DEFAULT_WEIGHT / 2); + gTimeOfDay = TIME_EVENING; + } + else if (IsBetweenHours(hours, NIGHT_HOUR_BEGIN, NIGHT_HOUR_BEGIN + 1)) // evening->night + { + gTimeBlend.startBlend = gTimeOfDayBlend[TIME_EVENING]; + gTimeBlend.endBlend = gTimeOfDayBlend[TIME_NIGHT]; + gTimeBlend.weight = TIME_BLEND_WEIGHT(NIGHT_HOUR_BEGIN, NIGHT_HOUR_BEGIN + 1); + gTimeBlend.altWeight = gTimeBlend.weight / 2; + gTimeOfDay = TIME_NIGHT; + } + else if (IsBetweenHours(hours, NIGHT_HOUR_BEGIN, NIGHT_HOUR_END)) // night + { + gTimeBlend.weight = DEFAULT_WEIGHT; + gTimeBlend.altWeight = 0; + gTimeBlend.startBlend = gTimeBlend.endBlend = gTimeOfDayBlend[TIME_NIGHT]; + gTimeOfDay = TIME_NIGHT; + } + else // day + { + gTimeBlend.weight = gTimeBlend.altWeight = DEFAULT_WEIGHT; + gTimeBlend.startBlend = gTimeBlend.endBlend = gTimeOfDayBlend[TIME_DAY]; + gTimeOfDay = TIME_DAY; + } +} + +#undef MORNING_HOUR_MIDDLE +#undef TIME_BLEND_WEIGHT +#undef DEFAULT_WEIGHT + +// Whether a map type is naturally lit/outside +bool32 MapHasNaturalLight(u8 mapType) +{ + return (OW_ENABLE_DNS + && (mapType == MAP_TYPE_TOWN + || mapType == MAP_TYPE_CITY + || mapType == MAP_TYPE_ROUTE + || mapType == MAP_TYPE_OCEAN_ROUTE)); +} + +bool32 CurrentMapHasShadows(void) +{ + // Add all conditionals here for maps that shouldn't have shadows + // By default only cave maps are excluded from having shadows under object events + return (gMapHeader.mapType != MAP_TYPE_UNDERGROUND); +} + +// Update & mix day / night bg palettes (into unfaded) +void UpdateAltBgPalettes(u16 palettes) +{ + const struct Tileset *primary = gMapHeader.mapLayout->primaryTileset; + const struct Tileset *secondary = gMapHeader.mapLayout->secondaryTileset; + u32 i = 1; + if (!MapHasNaturalLight(gMapHeader.mapType)) + return; + palettes &= ~((1 << NUM_PALS_IN_PRIMARY) - 1) | primary->swapPalettes; + palettes &= ((1 << NUM_PALS_IN_PRIMARY) - 1) | (secondary->swapPalettes << NUM_PALS_IN_PRIMARY); + palettes &= PALETTES_MAP ^ (1 << 0); // don't blend palette 0, [13,15] + palettes >>= 1; // start at palette 1 + if (!palettes) + return; + while (palettes) + { + if (palettes & 1) + { + if (i < NUM_PALS_IN_PRIMARY) + AvgPaletteWeighted(&((u16 *)primary->palettes)[i * 16], &((u16 *)primary->palettes)[((i + 9) % 16) * 16], gPlttBufferUnfaded + i * 16, gTimeBlend.altWeight); + else + AvgPaletteWeighted(&((u16 *)secondary->palettes)[i * 16], &((u16 *)secondary->palettes)[((i + 9) % 16) * 16], gPlttBufferUnfaded + i * 16, gTimeBlend.altWeight); + } + i++; + palettes >>= 1; + } +} + +void UpdatePalettesWithTime(u32 palettes) +{ + if (!MapHasNaturalLight(gMapHeader.mapType)) + return; + u32 i; + u32 mask = 1 << 16; + if (palettes >= (1 << 16)) + for (i = 0; i < 16; i++, mask <<= 1) + { + if (IS_BLEND_IMMUNE_TAG(GetSpritePaletteTagByPaletteNum(i))) + palettes &= ~(mask); + } + + palettes &= PALETTES_MAP | PALETTES_OBJECTS; // Don't blend UI pals + if (!palettes) + return; + TimeMixPalettes(palettes, gPlttBufferUnfaded, gPlttBufferFaded, &gTimeBlend.startBlend, &gTimeBlend.endBlend, gTimeBlend.weight); +} + +u8 UpdateSpritePaletteWithTime(u8 paletteNum) +{ + if (MapHasNaturalLight(gMapHeader.mapType) + && !IS_BLEND_IMMUNE_TAG(GetSpritePaletteTagByPaletteNum(paletteNum))) + TimeMixPalettes(1, &gPlttBufferUnfaded[OBJ_PLTT_ID(paletteNum)], &gPlttBufferFaded[OBJ_PLTT_ID(paletteNum)], &gTimeBlend.startBlend, &gTimeBlend.endBlend, gTimeBlend.weight); + return paletteNum; +} + static void OverworldBasic(void) { ScriptContext_RunScript(); @@ -1546,6 +1704,23 @@ static void OverworldBasic(void) UpdatePaletteFade(); UpdateTilesetAnimations(); DoScheduledBgTilemapCopiesToVram(); + // Every minute if no palette fade is active, update TOD blending as needed + if (!gPaletteFade.active && --gTimeUpdateCounter <= 0) + { + struct TimeBlendSettings cachedBlend = gTimeBlend; + u32 *bld0 = (u32*)&cachedBlend; + u32 *bld1 = (u32*)&gTimeBlend; + gTimeUpdateCounter = (SECONDS_PER_MINUTE * 60 / FakeRtc_GetSecondsRatio()); + UpdateTimeOfDay(); + FormChangeTimeUpdate(); + if (bld0[0] != bld1[0] + || bld0[1] != bld1[1] + || bld0[2] != bld1[2]) + { + UpdateAltBgPalettes(PALETTES_BG); + UpdatePalettesWithTime(PALETTES_ALL); + } + } } // This CB2 is used when starting @@ -2058,6 +2233,7 @@ static bool32 ReturnToFieldLocal(u8 *state) case 1: InitViewGraphics(); TryLoadTrainerHillEReaderPalette(); + FollowerNPC_BindToSurfBlobOnReloadScreen(); (*state)++; break; case 2: @@ -2256,6 +2432,7 @@ static void InitObjectEventsLocal(void) SetPlayerAvatarTransitionFlags(player->transitionFlags); ResetInitialPlayerAvatarState(); TrySpawnObjectEvents(0, 0); + FollowerNPC_HandleSprite(); UpdateFollowingPokemon(); TryRunOnWarpIntoMapScript(); } @@ -3283,6 +3460,8 @@ static void CreateLinkPlayerSprite(u8 linkPlayerId, u8 gameVersion) sprite->coordOffsetEnabled = TRUE; sprite->data[0] = linkPlayerId; objEvent->triggerGroundEffectsOnMove = FALSE; + objEvent->localId = OBJ_EVENT_ID_DYNAMIC_BASE + linkPlayerId; + SetUpShadow(objEvent); } } @@ -3516,3 +3695,17 @@ void ScriptHideItemDescription(struct ScriptContext *ctx) #endif // OW_SHOW_ITEM_DESCRIPTIONS +// returns old sHoursOverride +u16 SetTimeOfDay(u16 hours) +{ + u16 oldHours = sHoursOverride; + sHoursOverride = hours; + gTimeUpdateCounter = 0; + return oldHours; +} + +bool8 ScrFunc_settimeofday(struct ScriptContext *ctx) +{ + SetTimeOfDay(ScriptReadByte(ctx)); + return FALSE; +} diff --git a/src/palette.c b/src/palette.c index f9a074d41e..5c63a918ad 100644 --- a/src/palette.c +++ b/src/palette.c @@ -13,11 +13,13 @@ enum NORMAL_FADE, FAST_FADE, HARDWARE_FADE, + TIME_OF_DAY_FADE, }; static u32 UpdateNormalPaletteFade(void); static void BeginFastPaletteFadeInternal(u32); static u32 UpdateFastPaletteFade(void); +static u8 UpdateTimeOfDayPaletteFade(void); static u32 UpdateHardwarePaletteFade(void); static void UpdateBlendRegisters(void); static bool32 IsSoftwarePaletteFadeFinishing(void); @@ -40,19 +42,22 @@ static const u8 sRoundedDownGrayscaleMap[] = { 31, 31 }; -void LoadCompressedPalette(const u32 *src, u32 offset, u32 size) -{ - void *buffer = malloc_and_decompress(src, NULL); - LoadPalette(buffer, offset, size); - Free(buffer); -} - void LoadPalette(const void *src, u32 offset, u32 size) { CpuCopy16(src, &gPlttBufferUnfaded[offset], size); CpuCopy16(src, &gPlttBufferFaded[offset], size); } +// Drop in replacement for LoadPalette, uses CpuFastCopy, size must be 0 % 32 +void LoadPaletteFast(const void *src, u32 offset, u32 size) +{ + if ((u32)src & 3) // In case palette is not 4 byte aligned + return LoadPalette(src, offset, size); + CpuFastCopy(src, &gPlttBufferUnfaded[offset], size); + // Copying from EWRAM->EWRAM is faster than ROM->EWRAM + CpuFastCopy(&gPlttBufferUnfaded[offset], &gPlttBufferFaded[offset], size); +} + void FillPalette(u32 value, u32 offset, u32 size) { CpuFill16(value, &gPlttBufferUnfaded[offset], size); @@ -83,6 +88,8 @@ u32 UpdatePaletteFade(void) result = UpdateNormalPaletteFade(); else if (gPaletteFade.mode == FAST_FADE) result = UpdateFastPaletteFade(); + else if (gPaletteFade.mode == TIME_OF_DAY_FADE) + result = UpdateTimeOfDayPaletteFade(); else result = UpdateHardwarePaletteFade(); @@ -114,9 +121,9 @@ bool32 BeginNormalPaletteFade(u32 selectedPalettes, s8 delay, u8 startY, u8 targ delay = 0; } - gPaletteFade_selectedPalettes = selectedPalettes; + gPaletteFadeSelectedPalettes = selectedPalettes; gPaletteFade.delayCounter = delay; - gPaletteFade_delay = delay; + gPaletteFadeDelay = delay; gPaletteFade.y = startY; gPaletteFade.targetY = targetY; gPaletteFade.blendColor = blendColor; @@ -141,6 +148,52 @@ bool32 BeginNormalPaletteFade(u32 selectedPalettes, s8 delay, u8 startY, u8 targ } } +// Like normal palette fade but respects sprite/tile palettes immune to time of day fading +bool32 BeginTimeOfDayPaletteFade(u32 selectedPalettes, s8 delay, u8 startY, u8 targetY, struct BlendSettings *bld0, struct BlendSettings *bld1, u32 weight, u32 color) +{ + u8 temp; + + if (gPaletteFade.active) + return FALSE; + + gPaletteFade.deltaY = 2; + + if (delay < 0) + { + gPaletteFade.deltaY += (delay * -1); + delay = 0; + } + + gPaletteFadeSelectedPalettes = selectedPalettes; + gPaletteFade.delayCounter = delay; + gPaletteFadeDelay = delay; + gPaletteFade.y = startY; + gPaletteFade.targetY = targetY; + gPaletteFade.active = 1; + gPaletteFade.mode = TIME_OF_DAY_FADE; + + gPaletteFade.blendColor = color; + gPaletteFade.bld0 = bld0; + gPaletteFade.bld1 = bld1; + gPaletteFade.weight = weight; + + if (startY < targetY) + gPaletteFade.yDec = 0; + else + gPaletteFade.yDec = 1; + + UpdatePaletteFade(); + + temp = gPaletteFade.bufferTransferDisabled; + gPaletteFade.bufferTransferDisabled = 0; + CpuCopy32(gPlttBufferFaded, (void *)PLTT, PLTT_SIZE); + sPlttBufferTransferPending = 0; + if (gPaletteFade.mode == HARDWARE_FADE && gPaletteFade.active) + UpdateBlendRegisters(); + gPaletteFade.bufferTransferDisabled = temp; + return TRUE; +} + void ResetPaletteFadeControl(void) { gPaletteFade.multipurpose1 = 0; @@ -161,6 +214,117 @@ void ResetPaletteFadeControl(void) gPaletteFade.deltaY = 2; } +// Like normal palette fade, but respects sprite/tile palettes immune to time of day fading +static u8 UpdateTimeOfDayPaletteFade(void) +{ + u16 paletteOffset; + u16 selectedPalettes; + u16 timePalettes = 0; // palettes passed to the time-blender + u16 copyPalettes; + u16 *src; + u16 *dst; + + if (!gPaletteFade.active) + return PALETTE_FADE_STATUS_DONE; + + if (IsSoftwarePaletteFadeFinishing()) + return gPaletteFade.active ? PALETTE_FADE_STATUS_ACTIVE : PALETTE_FADE_STATUS_DONE; + + if (!gPaletteFade.objPaletteToggle) + { + if (gPaletteFade.delayCounter < gPaletteFadeDelay) + { + gPaletteFade.delayCounter++; + return PALETTE_FADE_STATUS_DELAY; + } + gPaletteFade.delayCounter = 0; + } + + paletteOffset = 0; + + if (!gPaletteFade.objPaletteToggle) + { + selectedPalettes = gPaletteFadeSelectedPalettes; + } + else + { + selectedPalettes = gPaletteFadeSelectedPalettes >> 16; + paletteOffset = 256; + } + + src = gPlttBufferUnfaded + paletteOffset; + dst = gPlttBufferFaded + paletteOffset; + + // First pply TOD blend to relevant subset of palettes + if (gPaletteFade.objPaletteToggle) // Sprite palettes, don't blend those with tags + { + u32 i; + u32 j = 1; + for (i = 0; i < 16; i++, j <<= 1) // Mask out palettes that should not be light blended + { + if ((selectedPalettes & j) && !IS_BLEND_IMMUNE_TAG(GetSpritePaletteTagByPaletteNum(i))) + timePalettes |= j; + } + } + else // tile palettes, don't blend [13, 15] + { + timePalettes = selectedPalettes & PALETTES_MAP; + } + TimeMixPalettes(timePalettes, src, dst, gPaletteFade.bld0, gPaletteFade.bld1, gPaletteFade.weight); + + // palettes that were not blended above must be copied through + if ((copyPalettes = ~timePalettes)) + { + u16 *src1 = src; + u16 *dst1 = dst; + while (copyPalettes) + { + if (copyPalettes & 1) + CpuFastCopy(src1, dst1, 32); + copyPalettes >>= 1; + src1 += 16; + dst1 += 16; + } + } + + // Then, blend from faded->faded with native BlendPalettes + BlendPalettesFine(selectedPalettes, dst, dst, gPaletteFade.y, gPaletteFade.blendColor); + + gPaletteFade.objPaletteToggle ^= 1; + + if (!gPaletteFade.objPaletteToggle) + { + if ((gPaletteFade.yDec && gPaletteFade.y == 0) || (!gPaletteFade.yDec && gPaletteFade.y == gPaletteFade.targetY)) + { + gPaletteFadeSelectedPalettes = 0; + gPaletteFade.softwareFadeFinishing = 1; + } + else + { + s8 val; + + if (!gPaletteFade.yDec) + { + val = gPaletteFade.y + gPaletteFade.deltaY; + if (val > gPaletteFade.targetY) + val = gPaletteFade.targetY; + gPaletteFade.y = val; + } + else + { + val = gPaletteFade.y - gPaletteFade.deltaY; + if (val < 0) + val = 0; + gPaletteFade.y = val; + } + } + } + + // gPaletteFade.active cannot change since the last time it was checked. So this + // is equivalent to `return PALETTE_FADE_STATUS_ACTIVE;` + return PALETTE_FADE_STATUS_ACTIVE; +} + static u32 UpdateNormalPaletteFade(void) { u16 paletteOffset; @@ -177,10 +341,10 @@ static u32 UpdateNormalPaletteFade(void) { if (!gPaletteFade.objPaletteToggle) { - if (gPaletteFade.delayCounter < gPaletteFade_delay) + if (gPaletteFade.delayCounter < gPaletteFadeDelay) { gPaletteFade.delayCounter++; - return 2; + return PALETTE_FADE_STATUS_DELAY; } gPaletteFade.delayCounter = 0; } @@ -189,11 +353,11 @@ static u32 UpdateNormalPaletteFade(void) if (!gPaletteFade.objPaletteToggle) { - selectedPalettes = gPaletteFade_selectedPalettes; + selectedPalettes = gPaletteFadeSelectedPalettes; } else { - selectedPalettes = gPaletteFade_selectedPalettes >> 16; + selectedPalettes = gPaletteFadeSelectedPalettes >> 16; paletteOffset = OBJ_PLTT_OFFSET; } @@ -215,7 +379,7 @@ static u32 UpdateNormalPaletteFade(void) { if (gPaletteFade.y == gPaletteFade.targetY) { - gPaletteFade_selectedPalettes = 0; + gPaletteFadeSelectedPalettes = 0; gPaletteFade.softwareFadeFinishing = TRUE; } else @@ -312,7 +476,7 @@ void BeginFastPaletteFade(u32 submode) static void BeginFastPaletteFadeInternal(u32 submode) { gPaletteFade.y = 31; - gPaletteFade_submode = submode & 0x3F; + gPaletteFadeSubmode = submode & 0x3F; gPaletteFade.active = TRUE; gPaletteFade.mode = FAST_FADE; @@ -355,7 +519,7 @@ static u32 UpdateFastPaletteFade(void) paletteOffsetEnd = OBJ_PLTT_OFFSET; } - switch (gPaletteFade_submode) + switch (gPaletteFadeSubmode) { case FAST_FADE_IN_FROM_WHITE: for (i = paletteOffsetStart; i < paletteOffsetEnd; i++) @@ -460,7 +624,7 @@ static u32 UpdateFastPaletteFade(void) if (gPaletteFade.y == 0) { - switch (gPaletteFade_submode) + switch (gPaletteFadeSubmode) { case FAST_FADE_IN_FROM_WHITE: case FAST_FADE_IN_FROM_BLACK: @@ -485,9 +649,9 @@ static u32 UpdateFastPaletteFade(void) void BeginHardwarePaletteFade(u32 blendCnt, u32 delay, u32 y, u32 targetY, u32 shouldResetBlendRegisters) { - gPaletteFade_blendCnt = blendCnt; + gPaletteFadeBlendCnt = blendCnt; gPaletteFade.delayCounter = delay; - gPaletteFade_delay = delay; + gPaletteFadeDelay = delay; gPaletteFade.y = y; gPaletteFade.targetY = targetY; gPaletteFade.active = TRUE; @@ -506,7 +670,7 @@ static u32 UpdateHardwarePaletteFade(void) if (!gPaletteFade.active) return PALETTE_FADE_STATUS_DONE; - if (gPaletteFade.delayCounter < gPaletteFade_delay) + if (gPaletteFade.delayCounter < gPaletteFadeDelay) { gPaletteFade.delayCounter++; return PALETTE_FADE_STATUS_DELAY; @@ -537,7 +701,8 @@ static u32 UpdateHardwarePaletteFade(void) { if (gPaletteFade.shouldResetBlendRegisters) { - gPaletteFade_blendCnt = 0; + // clear TGT1 + gPaletteFadeBlendCnt &= ~0xFF; gPaletteFade.y = 0; } gPaletteFade.shouldResetBlendRegisters = FALSE; @@ -548,15 +713,48 @@ static u32 UpdateHardwarePaletteFade(void) return gPaletteFade.active ? PALETTE_FADE_STATUS_ACTIVE : PALETTE_FADE_STATUS_DONE; } +// Only called for hardware fades static void UpdateBlendRegisters(void) { - SetGpuReg(REG_OFFSET_BLDCNT, (u16)gPaletteFade_blendCnt); + SetGpuReg(REG_OFFSET_BLDCNT, (u16)gPaletteFadeBlendCnt); SetGpuReg(REG_OFFSET_BLDY, gPaletteFade.y); + // If fade-out, also adjust BLDALPHA and DISPCNT + if (!gPaletteFade.yDec) + { + u16 bldAlpha = GetGpuReg(REG_OFFSET_BLDALPHA); + u8 tgt1 = BLDALPHA_TGT1(bldAlpha); + u8 tgt2 = BLDALPHA_TGT2(bldAlpha); + u8 bldFade; + + switch (gPaletteFadeBlendCnt & BLDCNT_EFFECT_EFF_MASK) + { + // FADE_TO_BLACK + case BLDCNT_EFFECT_DARKEN: + bldFade = BLDALPHA_TGT1(max(0, 16 - gPaletteFade.y)); + SetGpuReg(REG_OFFSET_BLDALPHA, + BLDALPHA_BLEND(min(tgt1, bldFade), min(tgt2, bldFade))); + break; + // FADE_TO_WHITE + case BLDCNT_EFFECT_LIGHTEN: + SetGpuReg(REG_OFFSET_BLDALPHA, + BLDALPHA_BLEND(min(++tgt1, 31), min(++tgt2, 31))); + // cause display to show white when finished + // (otherwise blend-mode sprites will still be visible) + if (gPaletteFade.hardwareFadeFinishing && gPaletteFade.y >= 16) + SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_FORCED_BLANK); + break; + } + } + else + { + ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_FORCED_BLANK); + } + if (gPaletteFade.hardwareFadeFinishing) { gPaletteFade.hardwareFadeFinishing = FALSE; gPaletteFade.mode = 0; - gPaletteFade_blendCnt = 0; + gPaletteFadeBlendCnt = 0; gPaletteFade.y = 0; gPaletteFade.active = FALSE; } @@ -585,15 +783,285 @@ static bool32 IsSoftwarePaletteFadeFinishing(void) } } +// optimized based on lucktyphlosion's BlendPalettesFine +void BlendPalettesFine(u32 palettes, u16 *src, u16 *dst, u32 coeff, u32 color) +{ + s32 newR, newG, newB; + + if (!palettes) + return; + + coeff *= 2; + newR = (color << 27) >> 27; + newG = (color << 22) >> 27; + newB = (color << 17) >> 27; + + do + { + if (palettes & 1) + { + u16 *srcEnd = src + 16; + while (src != srcEnd) // Transparency is blended (for backdrop reasons) + { + u32 srcColor = *src; + s32 r = (srcColor << 27) >> 27; + s32 g = (srcColor << 22) >> 27; + s32 b = (srcColor << 16) >> 26; + + *dst++ = ((r + (((newR - r) * (s32)coeff) >> 5)) << 0) + | ((g + (((newG - g) * (s32)coeff) >> 5)) << 5) + | ((b + (((newB - (b & 31)) * (s32)coeff) >> 5)) << 10); + src++; + } + } + else + { + src += 16; + dst += 16; + } + palettes >>= 1; + } while (palettes); +} + void BlendPalettes(u32 selectedPalettes, u8 coeff, u32 color) { - u16 paletteOffset; + BlendPalettesFine(selectedPalettes, gPlttBufferUnfaded, gPlttBufferFaded, coeff, color); +} - for (paletteOffset = 0; selectedPalettes; paletteOffset += 16) +#define DEFAULT_LIGHT_COLOR 0x3f9f + +// Like BlendPalette, but ignores blendColor if the transparency high bit is set +// Optimization help by lucktyphlosion +void TimeBlendPalette(u16 palOffset, u32 coeff, u32 blendColor) +{ + s32 newR, newG, newB, defR, defG, defB; + u16 *src = gPlttBufferUnfaded + palOffset; + u16 *dst = gPlttBufferFaded + palOffset; + u32 defaultBlendColor = DEFAULT_LIGHT_COLOR; + u16 *srcEnd = src + 16; + u32 altBlendColor = *dst++ = *src++; // color 0 is copied through unchanged + + coeff *= 2; + newR = (blendColor << 27) >> 27; + newG = (blendColor << 22) >> 27; + newB = (blendColor << 17) >> 27; + + if (altBlendColor >> 15) // Transparency high bit set; alt blend color { - if (selectedPalettes & 1) - BlendPalette(paletteOffset, 16, coeff, color); - selectedPalettes >>= 1; + defR = (altBlendColor << 27) >> 27; + defG = (altBlendColor << 22) >> 27; + defB = (altBlendColor << 17) >> 27; + } + else + { + defR = (defaultBlendColor << 27) >> 27; + defG = (defaultBlendColor << 22) >> 27; + defB = (defaultBlendColor << 17) >> 27; + altBlendColor = 0; + } + while (src != srcEnd) + { + u32 srcColor = *src; + s32 r = (srcColor << 27) >> 27; + s32 g = (srcColor << 22) >> 27; + s32 b = (srcColor << 16) >> 26; + + if (srcColor >> 15) + { + *dst = ((r + (((defR - r) * (s32)coeff) >> 5)) << 0) + | ((g + (((defG - g) * (s32)coeff) >> 5)) << 5) + | ((b + (((defB - (b & 31)) * (s32)coeff) >> 5)) << 10); + } + else // Use provided blend color + { + *dst = ((r + (((newR - r) * (s32)coeff) >> 5)) << 0) + | ((g + (((newG - g) * (s32)coeff) >> 5)) << 5) + | ((b + (((newB - (b & 31)) * (s32)coeff) >> 5)) << 10); + } + src++; + dst++; + } +} + +// Blends a weighted average of two blend parameters +// Parameters can be either blended (as in BlendPalettes) or tinted (as in TintPaletteRGB_Copy) +void TimeMixPalettes(u32 palettes, u16 *src, u16 *dst, struct BlendSettings *blend0, struct BlendSettings *blend1, u16 weight0) +{ + s32 r0, g0, b0, r1, g1, b1, defR, defG, defB, altR, altG, altB; + u32 color0, coeff0, color1, coeff1; + bool8 tint0, tint1; + u32 defaultColor = DEFAULT_LIGHT_COLOR; + + if (!palettes) + return; + + color0 = blend0->blendColor; + tint0 = blend0->isTint; + coeff0 = tint0 ? 16 : blend0->coeff * 2; + color1 = blend1->blendColor; + tint1 = blend1->isTint; + coeff1 = tint1 ? 16 : blend1->coeff * 2; + + if (tint0) + { + r0 = (color0 << 24) >> 24; + g0 = (color0 << 16) >> 24; + b0 = (color0 << 8) >> 24; + } + else + { + r0 = (color0 << 27) >> 27; + g0 = (color0 << 22) >> 27; + b0 = (color0 << 17) >> 27; + } + if (tint1) + { + r1 = (color1 << 24) >> 24; + g1 = (color1 << 16) >> 24; + b1 = (color1 << 8) >> 24; + } + else + { + r1 = (color1 << 27) >> 27; + g1 = (color1 << 22) >> 27; + b1 = (color1 << 17) >> 27; + } + defR = (defaultColor << 27) >> 27; + defG = (defaultColor << 22) >> 27; + defB = (defaultColor << 17) >> 27; + + do + { + if (palettes & 1) + { + u16 *srcEnd = src + 16; + u32 altBlendColor = *dst++ = *src++; // color 0 is copied through + if (altBlendColor >> 15) // Transparency high bit set; alt blend color + { + altR = (altBlendColor << 27) >> 27; + altG = (altBlendColor << 22) >> 27; + altB = (altBlendColor << 17) >> 27; + } + else + { + altBlendColor = 0; + } + while (src != srcEnd) + { + u32 srcColor = *src; + s32 r = (srcColor << 27) >> 27; + s32 g = (srcColor << 22) >> 27; + s32 b = (srcColor << 17) >> 27; + s32 r2, g2, b2; + + if (srcColor >> 15) + { + if (altBlendColor) + { + // Use alternate blend color + r2 = r + (((altR - r) * (s32)coeff1) >> 5); + g2 = g + (((altG - g) * (s32)coeff1) >> 5); + b2 = b + (((altB - b) * (s32)coeff1) >> 5); + r = r + (((altR - r) * (s32)coeff0) >> 5); + g = g + (((altG - g) * (s32)coeff0) >> 5); + b = b + (((altB - b) * (s32)coeff0) >> 5); + } + else + { + // Use default blend color + r2 = r + (((defR - r) * (s32)coeff1) >> 5); + g2 = g + (((defG - g) * (s32)coeff1) >> 5); + b2 = b + (((defB - b) * (s32)coeff1) >> 5); + r = r + (((defR - r) * (s32)coeff0) >> 5); + g = g + (((defG - g) * (s32)coeff0) >> 5); + b = b + (((defB - b) * (s32)coeff0) >> 5); + } + } + else + { + // Use provided blend colors + if (!tint1) + { + // blend-based + r2 = (r + (((r1 - r) * (s32)coeff1) >> 5)); + g2 = (g + (((g1 - g) * (s32)coeff1) >> 5)); + b2 = (b + (((b1 - b) * (s32)coeff1) >> 5)); + } + else + { + // tint-based + r2 = (u16)((r1 * r)) >> 8; + g2 = (u16)((g1 * g)) >> 8; + b2 = (u16)((b1 * b)) >> 8; + if (r2 > 31) + r2 = 31; + if (g2 > 31) + g2 = 31; + if (b2 > 31) + b2 = 31; + } + if (!tint0) + { + // blend-based + r = (r + (((r0 - r) * (s32)coeff0) >> 5)); + g = (g + (((g0 - g) * (s32)coeff0) >> 5)); + b = (b + (((b0 - b) * (s32)coeff0) >> 5)); + } + else + { + // tint-based + r = (u16)((r0 * r)) >> 8; + g = (u16)((g0 * g)) >> 8; + b = (u16)((b0 * b)) >> 8; + if (r > 31) + r = 31; + if (g > 31) + g = 31; + if (b > 31) + b = 31; + } + } + r = r2 + (((r - r2) * (s32)weight0) >> 8); + g = g2 + (((g - g2) * (s32)weight0) >> 8); + b = b2 + (((b - b2) * (s32)weight0) >> 8); + *dst++ = RGB2(r, g, b); + // *dst++ = RGB2(r, g, b) | (srcColor >> 15) << 15; + src++; + } + } + else + { + src += 16; + dst += 16; + } + palettes >>= 1; + } while (palettes); +} + +// Apply weighted average to palettes, preserving high bits of dst throughout +void AvgPaletteWeighted(u16 *src0, u16 *src1, u16 *dst, u16 weight0) +{ + u16 *srcEnd = src0 + 16; + src0++; + src1++; + dst++; // leave dst transparency unchanged + while (src0 != srcEnd) + { + u32 src0Color = *src0++; + s32 r0 = (src0Color << 27) >> 27; + s32 g0 = (src0Color << 22) >> 27; + s32 b0 = (src0Color << 17) >> 27; + u32 src1Color = *src1++; + s32 r1 = (src1Color << 27) >> 27; + s32 g1 = (src1Color << 22) >> 27; + s32 b1 = (src1Color << 17) >> 27; + + // Average and bitwise-OR + r0 = r1 + (((r0 - r1) * weight0) >> 8); + g0 = g1 + (((g0 - g1) * weight0) >> 8); + b0 = b1 + (((b0 - b1) * weight0) >> 8); + *dst = (*dst & RGB_ALPHA) | RGB2(r0, g0, b0); // preserve high bit of dst + dst++; } } @@ -696,6 +1164,79 @@ void TintPalette_CustomTone(u16 *palette, u32 count, u16 rTone, u16 gTone, u16 b } } +// Tints from Unfaded to Faded, using a 15-bit GBA color +void TintPalette_RGB_Copy(u16 palOffset, u32 blendColor) +{ + s32 newR, newG, newB, rTone = 0, gTone = 0, bTone = 0; + u16 *src = gPlttBufferUnfaded + palOffset; + u16 *dst = gPlttBufferFaded + palOffset; + u32 defaultBlendColor = DEFAULT_LIGHT_COLOR; + u16 *srcEnd = src + 16; + u16 altBlendIndices = *dst++ = *src++; // color 0 is copied through unchanged + u32 altBlendColor; + + newR = ((blendColor << 27) >> 27) << 3; + newG = ((blendColor << 22) >> 27) << 3; + newB = ((blendColor << 17) >> 27) << 3; + + if (altBlendIndices >> 15) // High bit set; bitmask of which colors to alt-blend + { + // Note that bit 0 of altBlendIndices specifies color 1 + altBlendColor = src[14]; // color 15 + if (altBlendColor >> 15) + { + // Set alternate blend color + rTone = ((altBlendColor << 27) >> 27) << 3; + gTone = ((altBlendColor << 22) >> 27) << 3; + bTone = ((altBlendColor << 17) >> 27) << 3; + } + else + { + // Set default blend color + rTone = ((defaultBlendColor << 27) >> 27) << 3; + gTone = ((defaultBlendColor << 22) >> 27) << 3; + bTone = ((defaultBlendColor << 17) >> 27) << 3; + } + } + else + { + altBlendIndices = 0; + } + + while (src != srcEnd) + { + u32 srcColor = *src; + s32 r = (srcColor << 27) >> 27; + s32 g = (srcColor << 22) >> 27; + s32 b = (srcColor << 17) >> 27; + + if (altBlendIndices & 1) + { + r = (u16)((rTone * r)) >> 8; + g = (u16)((gTone * g)) >> 8; + b = (u16)((bTone * b)) >> 8; + } + else + { + // Use provided blend color + r = (u16)((newR * r)) >> 8; + g = (u16)((newG * g)) >> 8; + b = (u16)((newB * b)) >> 8; + } + if (r > 31) + r = 31; + if (g > 31) + g = 31; + if (b > 31) + b = 31; + src++; + *dst++ = RGB2(r, g, b); + altBlendIndices >>= 1; + } +} + +#undef DEFAULT_LIGHT_COLOR + #define tCoeff data[0] #define tCoeffTarget data[1] #define tCoeffDelta data[2] diff --git a/src/palette_util.c b/src/palette_util.c index d24321d580..842d4bfdb1 100644 --- a/src/palette_util.c +++ b/src/palette_util.c @@ -2,6 +2,7 @@ #include "palette.h" #include "palette_util.h" #include "util.h" +#include "overworld.h" // "RouletteFlash" is more accurately a general flashing/fading util // this file handles fading the palettes for the color/icon selections on the Roulette wheel @@ -384,7 +385,11 @@ void UpdatePulseBlend(struct PulseBlend *pulseBlend) if (--pulseBlendPalette->delayCounter == 0xFF) { pulseBlendPalette->delayCounter = pulseBlendPalette->pulseBlendSettings.delay; - BlendPalette(pulseBlendPalette->pulseBlendSettings.paletteOffset, pulseBlendPalette->pulseBlendSettings.numColors, pulseBlendPalette->blendCoeff, pulseBlendPalette->pulseBlendSettings.blendColor); + CpuFastCopy(gPlttBufferUnfaded + pulseBlendPalette->pulseBlendSettings.paletteOffset, gPlttBufferFaded + pulseBlendPalette->pulseBlendSettings.paletteOffset, PLTT_SIZE_4BPP); + UpdatePalettesWithTime(1 << (pulseBlendPalette->pulseBlendSettings.paletteOffset >> 4)); + // pulseBlendSettings has a numColors field, but it is only ever set to 16 (for Mirage Tower) + // So, it's ok to use the fine blending here which blends the entire palette + BlendPalettesFine(1, gPlttBufferFaded + pulseBlendPalette->pulseBlendSettings.paletteOffset, gPlttBufferFaded + pulseBlendPalette->pulseBlendSettings.paletteOffset, pulseBlendPalette->blendCoeff, pulseBlendPalette->pulseBlendSettings.blendColor); switch (pulseBlendPalette->pulseBlendSettings.fadeType) { case 0: // Fade all the way to the max blend amount, then wrap around diff --git a/src/party_menu.c b/src/party_menu.c index 0784b1ec1e..f05c42bd0a 100644 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -25,6 +25,7 @@ #include "fieldmap.h" #include "fldeff.h" #include "fldeff_misc.h" +#include "follower_npc.h" #include "frontier_util.h" #include "gpu_regs.h" #include "graphics.h" @@ -83,6 +84,7 @@ enum { MENU_ITEM, MENU_GIVE, MENU_TAKE_ITEM, + MENU_MOVE_ITEM, MENU_MAIL, MENU_TAKE_MAIL, MENU_READ, @@ -144,6 +146,9 @@ enum { FIELD_MOVE_MILK_DRINK, FIELD_MOVE_SOFT_BOILED, FIELD_MOVE_SWEET_SCENT, +#if OW_DEFOG_FIELD_MOVE == TRUE + FIELD_MOVE_DEFOG, +#endif FIELD_MOVES_COUNT }; @@ -487,6 +492,7 @@ static void CursorCb_Cancel1(u8); static void CursorCb_Item(u8); static void CursorCb_Give(u8); static void CursorCb_TakeItem(u8); +static void CursorCb_MoveItem(u8); static void CursorCb_Mail(u8); static void CursorCb_Read(u8); static void CursorCb_TakeMail(u8); @@ -512,9 +518,10 @@ static bool8 SetUpFieldMove_Surf(void); static bool8 SetUpFieldMove_Fly(void); static bool8 SetUpFieldMove_Waterfall(void); static bool8 SetUpFieldMove_Dive(void); -void TryItemHoldFormChange(struct Pokemon *mon); +void TryItemHoldFormChange(struct Pokemon *mon, s8 slotId); static void ShowMoveSelectWindow(u8 slot); static void Task_HandleWhichMoveInput(u8 taskId); +static void Task_HideFollowerNPCForTeleport(u8); // static const data #include "data/party_menu.h" @@ -902,7 +909,7 @@ static bool8 AllocPartyMenuBgGfx(void) } break; case 2: - LoadCompressedPalette(gPartyMenuBg_Pal, BG_PLTT_ID(0), 11 * PLTT_SIZE_4BPP); + LoadPalette(gPartyMenuBg_Pal, BG_PLTT_ID(0), 11 * PLTT_SIZE_4BPP); CpuCopy16(gPlttBufferUnfaded, sPartyMenuInternal->palBuffer, 11 * PLTT_SIZE_4BPP); sPartyMenuInternal->data[0]++; break; @@ -1151,7 +1158,7 @@ static bool8 DisplayPartyPokemonDataForMoveTutorOrEvolutionItem(u8 slot) DisplayPartyPokemonDataToTeachMove(slot, ItemIdToBattleMoveId(item)); break; case 2: // Evolution stone - if (!GetMonData(currentPokemon, MON_DATA_IS_EGG) && GetEvolutionTargetSpecies(currentPokemon, EVO_MODE_ITEM_CHECK, item, NULL) != SPECIES_NONE) + if (!GetMonData(currentPokemon, MON_DATA_IS_EGG) && GetEvolutionTargetSpecies(currentPokemon, EVO_MODE_ITEM_CHECK, item, NULL, NULL, CHECK_EVO) != SPECIES_NONE) return FALSE; DisplayPartyPokemonDescriptionData(slot, PARTYBOX_DESC_NO_USE); break; @@ -2038,7 +2045,7 @@ static void GiveItemToMon(struct Pokemon *mon, u16 item) itemBytes[0] = item; itemBytes[1] = item >> 8; SetMonData(mon, MON_DATA_HELD_ITEM, itemBytes); - TryItemHoldFormChange(&gPlayerParty[gPartyMenu.slotId]); + TryItemHoldFormChange(&gPlayerParty[gPartyMenu.slotId], gPartyMenu.slotId); } static u8 TryTakeMonItem(struct Pokemon *mon) @@ -2052,7 +2059,7 @@ static u8 TryTakeMonItem(struct Pokemon *mon) item = ITEM_NONE; SetMonData(mon, MON_DATA_HELD_ITEM, &item); - TryItemHoldFormChange(&gPlayerParty[gPartyMenu.slotId]); + TryItemHoldFormChange(&gPlayerParty[gPartyMenu.slotId], gPartyMenu.slotId); return 2; } @@ -4080,6 +4087,9 @@ bool8 FieldCallback_PrepareFadeInFromMenu(void) { FadeInFromBlack(); CreateTask(Task_FieldMoveWaitForFade, 8); + if (PlayerHasFollowerNPC()) + CreateTask(Task_HideFollowerNPCForTeleport, 0); + return TRUE; } @@ -4090,6 +4100,43 @@ bool8 FieldCallback_PrepareFadeInForTeleport(void) return FieldCallback_PrepareFadeInFromMenu(); } +#define taskState task->data[0] + +enum +{ + FNPC_WALK_INTO_PLAYER, + FNPC_WAIT_FOR_ANIM_FINISH +}; + +static void Task_HideFollowerNPCForTeleport(u8 taskId) +{ + struct ObjectEvent *follower = &gObjectEvents[GetFollowerNPCObjectId()]; + struct Task *task; + task = &gTasks[taskId]; + if (taskState == FNPC_WALK_INTO_PLAYER) + { + if (!PlayerHasFollowerNPC()) + { + DestroyTask(taskId); + } + else + { + FollowerNPCWalkIntoPlayerForLeaveMap(); + taskState = FNPC_WAIT_FOR_ANIM_FINISH; + } + } + if (taskState == FNPC_WAIT_FOR_ANIM_FINISH) + { + if (ObjectEventClearHeldMovementIfFinished(follower)) + { + FollowerNPCHideForLeaveMap(follower); + DestroyTask(taskId); + } + } +} + +#undef taskState + static void Task_FieldMoveWaitForFade(u8 taskId) { if (IsWeatherNotFadingIn() == TRUE) @@ -4127,6 +4174,9 @@ static void FieldCallback_Surf(void) static bool8 SetUpFieldMove_Surf(void) { + if (!CheckFollowerNPCFlag(FOLLOWER_NPC_FLAG_CAN_SURF)) + return FALSE; + if (PartyHasMonWithSurf() == TRUE && IsPlayerFacingSurfableFishableWater() == TRUE) { gFieldCallback2 = FieldCallback_PrepareFadeInFromMenu; @@ -4146,6 +4196,9 @@ static void DisplayCantUseSurfMessage(void) static bool8 SetUpFieldMove_Fly(void) { + if (!CheckFollowerNPCFlag(FOLLOWER_NPC_FLAG_CAN_LEAVE_ROUTE)) + return FALSE; + if (Overworld_MapTypeAllowsTeleportAndFly(gMapHeader.mapType) == TRUE) return TRUE; else @@ -4167,6 +4220,9 @@ static bool8 SetUpFieldMove_Waterfall(void) { s16 x, y; + if (!CheckFollowerNPCFlag(FOLLOWER_NPC_FLAG_CAN_WATERFALL)) + return FALSE; + GetXYCoordsOneStepInFrontOfPlayer(&x, &y); if (MetatileBehavior_IsWaterfall(MapGridGetMetatileBehaviorAt(x, y)) == TRUE && IsPlayerSurfingNorth() == TRUE) { @@ -4185,6 +4241,9 @@ static void FieldCallback_Dive(void) static bool8 SetUpFieldMove_Dive(void) { + if (!CheckFollowerNPCFlag(FOLLOWER_NPC_FLAG_CAN_DIVE)) + return FALSE; + gFieldEffectArguments[1] = TrySetDiveWarp(); if (gFieldEffectArguments[1] != 0) { @@ -4443,7 +4502,7 @@ static void LoadPartyMenuPokeballGfx(void) { LoadCompressedSpriteSheet(&sSpriteSheet_MenuPokeball); LoadCompressedSpriteSheet(&sSpriteSheet_MenuPokeballSmall); - LoadCompressedSpritePalette(&sSpritePalette_MenuPokeball); + LoadSpritePalette(&sSpritePalette_MenuPokeball); } static void CreatePartyMonStatusSprite(struct Pokemon *mon, struct PartyMenuBox *menuBox) @@ -4488,7 +4547,7 @@ static void UpdatePartyMonAilmentGfx(u8 status, struct PartyMenuBox *menuBox) void LoadPartyMenuAilmentGfx(void) { LoadCompressedSpriteSheet(&sSpriteSheet_StatusIcons); - LoadCompressedSpritePalette(&sSpritePalette_StatusIcons); + LoadSpritePalette(&sSpritePalette_StatusIcons); } void CB2_ShowPartyMenuForItemUse(void) @@ -5622,29 +5681,25 @@ void ItemUseCB_RareCandy(u8 taskId, TaskFunc task) PlaySE(SE_SELECT); if (cannotUseEffect) { - u16 targetSpecies = SPECIES_NONE; - bool32 evoModeNormal = TRUE; + u32 targetSpecies = SPECIES_NONE; + bool32 canStopEvo = TRUE; // Resets values to 0 so other means of teaching moves doesn't overwrite levels sInitialLevel = 0; sFinalLevel = 0; - if (holdEffectParam == 0) + if (holdEffectParam == 0) // Rare Candy { - 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; - } + targetSpecies = GetEvolutionTargetSpecies(mon, EVO_MODE_NORMAL, ITEM_NONE, NULL, &canStopEvo, CHECK_EVO); } if (targetSpecies != SPECIES_NONE) { + GetEvolutionTargetSpecies(mon, EVO_MODE_NORMAL, ITEM_NONE, NULL, &canStopEvo, DO_EVO); RemoveBagItem(gSpecialVar_ItemId, 1); FreePartyPointers(); gCB2_AfterEvolution = gPartyMenu.exitCallback; - BeginEvolutionScene(mon, targetSpecies, evoModeNormal, gPartyMenu.slotId); + BeginEvolutionScene(mon, targetSpecies, canStopEvo, gPartyMenu.slotId); DestroyTask(taskId); } else @@ -5818,28 +5873,24 @@ static void CB2_ReturnToPartyMenuUsingRareCandy(void) static void PartyMenuTryEvolution(u8 taskId) { struct Pokemon *mon = &gPlayerParty[gPartyMenu.slotId]; - u16 targetSpecies = SPECIES_NONE; - bool32 evoModeNormal = TRUE; + u32 targetSpecies = SPECIES_NONE; + bool32 canStopEvo = 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; - } + targetSpecies = GetEvolutionTargetSpecies(mon, EVO_MODE_NORMAL, ITEM_NONE, NULL, &canStopEvo, CHECK_EVO); if (targetSpecies != SPECIES_NONE) { + GetEvolutionTargetSpecies(mon, EVO_MODE_NORMAL, ITEM_NONE, NULL, &canStopEvo, DO_EVO); FreePartyPointers(); if (GetItemFieldFunc(gSpecialVar_ItemId) == ItemUseOutOfBattle_RareCandy && gPartyMenu.menuType == PARTY_MENU_TYPE_FIELD && CheckBagHasItem(gSpecialVar_ItemId, 1)) gCB2_AfterEvolution = CB2_ReturnToPartyMenuUsingRareCandy; else gCB2_AfterEvolution = gPartyMenu.exitCallback; - BeginEvolutionScene(mon, targetSpecies, evoModeNormal, gPartyMenu.slotId); + BeginEvolutionScene(mon, targetSpecies, canStopEvo, gPartyMenu.slotId); DestroyTask(taskId); } else @@ -6668,7 +6719,7 @@ static void CursorCb_ChangeAbility(u8 taskId) TryMultichoiceFormChange(taskId); } -void TryItemHoldFormChange(struct Pokemon *mon) +void TryItemHoldFormChange(struct Pokemon *mon, s8 slotId) { u32 currentSpecies = GetMonData(mon, MON_DATA_SPECIES); u32 targetSpecies = GetFormChangeTargetSpecies(mon, FORM_CHANGE_ITEM_HOLD, 0); @@ -6676,10 +6727,10 @@ void TryItemHoldFormChange(struct Pokemon *mon) { PlayCry_NormalNoDucking(targetSpecies, 0, CRY_VOLUME_RS, CRY_VOLUME_RS); SetMonData(mon, MON_DATA_SPECIES, &targetSpecies); - FreeAndDestroyMonIconSprite(&gSprites[sPartyMenuBoxes[gPartyMenu.slotId].monSpriteId]); - CreatePartyMonIconSpriteParameterized(targetSpecies, GetMonData(mon, MON_DATA_PERSONALITY, NULL), &sPartyMenuBoxes[gPartyMenu.slotId], 1); + FreeAndDestroyMonIconSprite(&gSprites[sPartyMenuBoxes[slotId].monSpriteId]); + CreatePartyMonIconSpriteParameterized(targetSpecies, GetMonData(mon, MON_DATA_PERSONALITY, NULL), &sPartyMenuBoxes[slotId], 1); CalculateMonStats(mon); - UpdatePartyMonHeldItemSprite(mon, &sPartyMenuBoxes[gPartyMenu.slotId]); + UpdatePartyMonHeldItemSprite(mon, &sPartyMenuBoxes[slotId]); } } @@ -7253,7 +7304,7 @@ static bool8 TrySwitchInPokemon(void) } for (i = 0; i < gBattlersCount; i++) { - if (GetBattlerSide(i) == B_SIDE_PLAYER && GetPartyIdFromBattleSlot(slot) == gBattlerPartyIndexes[i]) + if (IsOnPlayerSide(i) && GetPartyIdFromBattleSlot(slot) == gBattlerPartyIndexes[i]) { GetMonNickname(&gPlayerParty[slot], gStringVar1); StringExpandPlaceholders(gStringVar4, gText_PkmnAlreadyInBattle); @@ -7355,7 +7406,7 @@ void BufferBattlePartyCurrentOrderBySide(u8 battler, u8 flankId) BufferBattlePartyOrderBySide(gBattleStruct->battlerPartyOrders[battler], flankId, battler); } -// when GetBattlerSide(battler) == B_SIDE_PLAYER, this function is identical the one above +// when IsOnPlayerSide(battlerId), this function is identical the one above static void BufferBattlePartyOrderBySide(u8 *partyBattleOrder, u8 flankId, u8 battler) { u8 partyIndexes[PARTY_SIZE]; @@ -7363,7 +7414,7 @@ static void BufferBattlePartyOrderBySide(u8 *partyBattleOrder, u8 flankId, u8 ba u8 leftBattler; u8 rightBattler; - if (GetBattlerSide(battler) == B_SIDE_PLAYER) + if (IsOnPlayerSide(battler)) { leftBattler = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT); rightBattler = GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT); @@ -7599,7 +7650,11 @@ static void Task_WaitAfterMultiPartnerPartySlideIn(u8 taskId) s16 *data = gTasks[taskId].data; // data[0] used as a timer afterwards rather than the x pos - if (++data[0] == 256) + if (FollowerNPCIsBattlePartner()) { + if (++data[0] == 128) + Task_ClosePartyMenu(taskId); + } + else if (++data[0] == 256) Task_ClosePartyMenu(taskId); } @@ -7863,3 +7918,112 @@ void IsLastMonThatKnowsSurf(void) gSpecialVar_Result = !P_CAN_FORGET_HIDDEN_MOVE; } } + +void CursorCb_MoveItemCallback(u8 taskId) +{ + u16 item1, item2; + u8 buffer[100]; + + if (gPaletteFade.active || MenuHelpers_ShouldWaitForLinkRecv()) + return; + + switch (PartyMenuButtonHandler(&gPartyMenu.slotId2)) + { + case 2: // User hit B or A while on Cancel + HandleChooseMonCancel(taskId, &gPartyMenu.slotId2); + break; + case 1: // User hit A on a Pokemon + // Pokemon can't give away items to eggs or themselves + if (GetMonData(&gPlayerParty[gPartyMenu.slotId2], MON_DATA_IS_EGG) + || gPartyMenu.slotId == gPartyMenu.slotId2) + { + PlaySE(SE_FAILURE); + return; + } + + PlaySE(SE_SELECT); + gPartyMenu.action = PARTY_ACTION_CHOOSE_MON; + + // look up held items + item1 = GetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_HELD_ITEM); + item2 = GetMonData(&gPlayerParty[gPartyMenu.slotId2], MON_DATA_HELD_ITEM); + + // swap the held items + SetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_HELD_ITEM, &item2); + SetMonData(&gPlayerParty[gPartyMenu.slotId2], MON_DATA_HELD_ITEM, &item1); + + TryItemHoldFormChange(&gPlayerParty[gPartyMenu.slotId], gPartyMenu.slotId); + TryItemHoldFormChange(&gPlayerParty[gPartyMenu.slotId2], gPartyMenu.slotId2); + + // update the held item icons + UpdatePartyMonHeldItemSprite(&gPlayerParty[gPartyMenu.slotId], &sPartyMenuBoxes[gPartyMenu.slotId]); + UpdatePartyMonHeldItemSprite(&gPlayerParty[gPartyMenu.slotId2], &sPartyMenuBoxes[gPartyMenu.slotId2]); + + // create the string describing the move + if (item2 == ITEM_NONE) + { + GetMonNickname(&gPlayerParty[gPartyMenu.slotId2], gStringVar1); + CopyItemName(item1, gStringVar2); + StringExpandPlaceholders(gStringVar4, gText_PkmnWasGivenItem); + } + else + { + GetMonNickname(&gPlayerParty[gPartyMenu.slotId], gStringVar1); + CopyItemName(item1, gStringVar2); + StringExpandPlaceholders(buffer, gText_XsYAnd); + + StringAppend(buffer, gText_XsYWereSwapped); + GetMonNickname(&gPlayerParty[gPartyMenu.slotId2], gStringVar1); + CopyItemName(item2, gStringVar2); + StringExpandPlaceholders(gStringVar4, buffer); + } + + // display the string + DisplayPartyMenuMessage(gStringVar4, TRUE); + + // update colors of selected boxes + AnimatePartySlot(gPartyMenu.slotId2, 0); + AnimatePartySlot(gPartyMenu.slotId, 1); + + // return to the main party menu + ScheduleBgCopyTilemapToVram(2); + gTasks[taskId].func = Task_UpdateHeldItemSprite; + break; + } +} + +void CursorCb_MoveItem(u8 taskId) +{ + struct Pokemon *mon = &gPlayerParty[gPartyMenu.slotId]; + + PlaySE(SE_SELECT); + + // delete old windows + PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[1]); + PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[0]); + + if (GetMonData(mon, MON_DATA_HELD_ITEM) != ITEM_NONE) + { + gPartyMenu.action = PARTY_ACTION_SWITCH; + + // show "Move item to where" in bottom left + DisplayPartyMenuStdMessage(PARTY_MSG_MOVE_ITEM_WHERE); + // update color of first selected box + AnimatePartySlot(gPartyMenu.slotId, 1); + + // set up callback + gPartyMenu.slotId2 = gPartyMenu.slotId; + gTasks[taskId].func = CursorCb_MoveItemCallback; + } + else + { + // create and display string about lack of hold item + GetMonNickname(mon, gStringVar1); + StringExpandPlaceholders(gStringVar4, gText_PkmnNotHolding); + DisplayPartyMenuMessage(gStringVar4, TRUE); + + // return to the main party menu + ScheduleBgCopyTilemapToVram(2); + gTasks[taskId].func = Task_UpdateHeldItemSprite; + } +} diff --git a/src/play_time.c b/src/play_time.c index 197b1fbac9..23e953ba15 100644 --- a/src/play_time.c +++ b/src/play_time.c @@ -1,6 +1,7 @@ #include "global.h" #include "play_time.h" #include "fake_rtc.h" +#include "field_player_avatar.h" enum { @@ -40,6 +41,7 @@ void PlayTimeCounter_Update(void) return; gSaveBlock2Ptr->playTimeVBlanks++; + UpdateSpinData(); if (gSaveBlock2Ptr->playTimeVBlanks < 60) return; diff --git a/src/pokeball.c b/src/pokeball.c index 1d03676dbe..86b5bc9d9e 100644 --- a/src/pokeball.c +++ b/src/pokeball.c @@ -109,7 +109,7 @@ const struct CompressedSpriteSheet gBallSpriteSheets[POKEBALL_COUNT] = [BALL_CHERISH] = {gBallGfx_Cherish, 384, GFX_TAG_CHERISH_BALL}, }; -const struct CompressedSpritePalette gBallSpritePalettes[POKEBALL_COUNT] = +const struct SpritePalette gBallSpritePalettes[POKEBALL_COUNT] = { [BALL_STRANGE] = {gBallPal_Strange, GFX_TAG_STRANGE_BALL}, [BALL_POKE] = {gBallPal_Poke, GFX_TAG_POKE_BALL}, @@ -993,8 +993,8 @@ static void SpriteCB_ReleaseMonFromBall(struct Sprite *sprite) u16 wantedCryCase; u8 taskId; - mon = GetPartyBattlerData(battler); - if (GetBattlerSide(battler) != B_SIDE_PLAYER) + mon = GetBattlerMon(battler); + if (!IsOnPlayerSide(battler)) pan = 25; else pan = -25; @@ -1041,7 +1041,7 @@ static void SpriteCB_ReleaseMonFromBall(struct Sprite *sprite) StartSpriteAffineAnim(&gSprites[gBattlerSpriteIds[sprite->sBattler]], BATTLER_AFFINE_EMERGE); - if (GetBattlerSide(sprite->sBattler) == B_SIDE_OPPONENT) + if (!IsOnPlayerSide(sprite->sBattler)) gSprites[gBattlerSpriteIds[sprite->sBattler]].callback = SpriteCB_OpponentMonFromBall; else gSprites[gBattlerSpriteIds[sprite->sBattler]].callback = SpriteCB_PlayerMonFromBall; @@ -1277,7 +1277,7 @@ void CreatePokeballSpriteToReleaseMon(u8 monSpriteId, u8 monPalNum, u8 x, u8 y, u8 spriteId; LoadCompressedSpriteSheetUsingHeap(&gBallSpriteSheets[BALL_POKE]); - LoadCompressedSpritePaletteUsingHeap(&gBallSpritePalettes[BALL_POKE]); + LoadSpritePalette(&gBallSpritePalettes[BALL_POKE]); spriteId = CreateSprite(&gBallSpriteTemplates[BALL_POKE], x, y, subpriority); gSprites[spriteId].sMonSpriteId = monSpriteId; @@ -1389,7 +1389,7 @@ u8 CreateTradePokeballSprite(u8 monSpriteId, u8 monPalNum, u8 x, u8 y, u8 oamPri u8 spriteId; LoadCompressedSpriteSheetUsingHeap(&gBallSpriteSheets[BALL_POKE]); - LoadCompressedSpritePaletteUsingHeap(&gBallSpritePalettes[BALL_POKE]); + LoadSpritePalette(&gBallSpritePalettes[BALL_POKE]); spriteId = CreateSprite(&gBallSpriteTemplates[BALL_POKE], x, y, subPriority); gSprites[spriteId].sMonSpriteId = monSpriteId; gSprites[spriteId].sDelay = delay; @@ -1491,7 +1491,7 @@ void StartHealthboxSlideIn(u8 battler) healthboxSprite->x2 = 0x73; healthboxSprite->y2 = 0; healthboxSprite->callback = SpriteCB_HealthboxSlideIn; - if (GetBattlerSide(battler) != B_SIDE_PLAYER) + if (!IsOnPlayerSide(battler)) { healthboxSprite->sSpeedX = -healthboxSprite->sSpeedX; healthboxSprite->sSpeedY = -healthboxSprite->sSpeedY; @@ -1557,7 +1557,7 @@ void LoadBallGfx(u8 ballId) if (GetSpriteTileStartByTag(gBallSpriteSheets[ballId].tag) == 0xFFFF) { LoadCompressedSpriteSheetUsingHeap(&gBallSpriteSheets[ballId]); - LoadCompressedSpritePaletteUsingHeap(&gBallSpritePalettes[ballId]); + LoadSpritePalette(&gBallSpritePalettes[ballId]); } switch (ballId) @@ -1581,7 +1581,7 @@ void FreeBallGfx(u8 ballId) static u16 GetBattlerPokeballItemId(u8 battler) { struct Pokemon *illusionMon; - struct Pokemon *mon = GetPartyBattlerData(battler); + struct Pokemon *mon = GetBattlerMon(battler); illusionMon = GetIllusionMonPtr(battler); if (illusionMon != NULL) diff --git a/src/pokeblock.c b/src/pokeblock.c index 392361bf36..41d68ed8d6 100644 --- a/src/pokeblock.c +++ b/src/pokeblock.c @@ -284,7 +284,7 @@ const struct CompressedSpriteSheet gPokeblockCase_SpriteSheet = gMenuPokeblockDevice_Gfx, 0x800, TAG_POKEBLOCK_CASE }; -const struct CompressedSpritePalette gPokeblockCase_SpritePal = +const struct SpritePalette gPokeblockCase_SpritePal = { gMenuPokeblockDevice_Pal, TAG_POKEBLOCK_CASE }; @@ -658,7 +658,7 @@ static bool8 LoadPokeblockMenuGfx(void) } break; case 2: - LoadCompressedPalette(gMenuPokeblock_Pal, BG_PLTT_ID(0), 6 * PLTT_SIZE_4BPP); + LoadPalette(gMenuPokeblock_Pal, BG_PLTT_ID(0), 6 * PLTT_SIZE_4BPP); sPokeblockMenu->gfxState++; break; case 3: @@ -666,7 +666,7 @@ static bool8 LoadPokeblockMenuGfx(void) sPokeblockMenu->gfxState++; break; case 4: - LoadCompressedSpritePalette(&gPokeblockCase_SpritePal); + LoadSpritePalette(&gPokeblockCase_SpritePal); sPokeblockMenu->gfxState++; break; case 5: diff --git a/src/pokeblock_feed.c b/src/pokeblock_feed.c index 12d57d3474..ef83dc6eda 100644 --- a/src/pokeblock_feed.c +++ b/src/pokeblock_feed.c @@ -101,7 +101,7 @@ static const u8 sText_Var1HappilyAteVar2[] = _("{STR_VAR_1} happily ate the\n{ST static const u8 sText_Var1DisdainfullyAteVar2[] = _("{STR_VAR_1} disdainfully ate the\n{STR_VAR_2}.{PAUSE_UNTIL_PRESS}"); EWRAM_DATA static struct PokeblockFeed *sPokeblockFeed = NULL; -EWRAM_DATA static struct CompressedSpritePalette sPokeblockSpritePal = {0}; +EWRAM_DATA static struct SpritePalette sPokeblockSpritePal = {0}; // 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. @@ -399,7 +399,7 @@ static const struct WindowTemplate sWindowTemplates[] = }; // - 1 excludes PBLOCK_CLR_NONE -static const u32 *const sPokeblocksPals[] = +static const u16 *const sPokeblocksPals[] = { [PBLOCK_CLR_RED - 1] = gPokeblockRed_Pal, [PBLOCK_CLR_BLUE - 1] = gPokeblockBlue_Pal, @@ -668,7 +668,7 @@ static bool8 LoadMonAndSceneGfx(struct Pokemon *mon) species = GetMonData(mon, MON_DATA_SPECIES_OR_EGG); personality = GetMonData(mon, MON_DATA_PERSONALITY); isShiny = GetMonData(mon, MON_DATA_IS_SHINY); - LoadCompressedSpritePaletteWithTag(GetMonSpritePalFromSpeciesAndPersonality(species, isShiny, personality), species); + LoadSpritePaletteWithTag(GetMonSpritePalFromSpeciesAndPersonality(species, isShiny, personality), species); SetMultiuseSpriteTemplateToPokemon(species, B_POSITION_OPPONENT_LEFT); sPokeblockFeed->loadGfxState++; break; @@ -677,7 +677,7 @@ static bool8 LoadMonAndSceneGfx(struct Pokemon *mon) sPokeblockFeed->loadGfxState++; break; case 3: - LoadCompressedSpritePalette(&gPokeblockCase_SpritePal); + LoadSpritePalette(&gPokeblockCase_SpritePal); sPokeblockFeed->loadGfxState++; break; case 4: @@ -686,7 +686,7 @@ static bool8 LoadMonAndSceneGfx(struct Pokemon *mon) break; case 5: SetPokeblockSpritePal(gSpecialVar_ItemId); - LoadCompressedSpritePalette(&sPokeblockSpritePal); + LoadSpritePalette(&sPokeblockSpritePal); sPokeblockFeed->loadGfxState++; break; case 6: @@ -702,7 +702,7 @@ static bool8 LoadMonAndSceneGfx(struct Pokemon *mon) } break; case 8: - LoadCompressedPalette(gBattleEnvironmentPalette_Frontier, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); + LoadPalette(gBattleEnvironmentPalette_Frontier, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); sPokeblockFeed->loadGfxState = 0; return TRUE; } diff --git a/src/pokedex.c b/src/pokedex.c index 141ae3cdd2..5078f5ca94 100644 --- a/src/pokedex.c +++ b/src/pokedex.c @@ -17,6 +17,7 @@ #include "pokedex_area_screen.h" #include "pokedex_cry_screen.h" #include "pokedex_plus_hgss.h" +#include "rtc.h" #include "scanline_effect.h" #include "sound.h" #include "sprite.h" @@ -29,6 +30,7 @@ #include "window.h" #include "constants/rgb.h" #include "constants/songs.h" +#include "config/pokedex_plus_hgss.h" enum { @@ -255,7 +257,8 @@ static void Task_HandleInfoScreenInput(u8); static void Task_SwitchScreensFromInfoScreen(u8); static void Task_LoadInfoScreenWaitForFade(u8); static void Task_ExitInfoScreen(u8); -static void Task_LoadAreaScreen(u8); +static void Task_LoadAreaScreen(u8 taskId); +static void Task_ReloadAreaScreen(u8 taskId); static void Task_WaitForAreaScreenInput(u8 taskId); static void Task_SwitchScreensFromAreaScreen(u8); static void Task_LoadCryScreen(u8); @@ -3245,6 +3248,7 @@ static u8 LoadInfoScreen(struct PokedexListItem *item, u8 monSpriteId) u8 taskId; sPokedexListItem = item; + gAreaTimeOfDay = GetTimeOfDayForDex(); taskId = CreateTask(Task_LoadInfoScreen, 0); gTasks[taskId].tScrolling = FALSE; gTasks[taskId].tMonSpriteDone = TRUE; // Already has sprite from list view @@ -3552,7 +3556,7 @@ static void Task_LoadAreaScreen(u8 taskId) gMain.state++; break; case 2: - ShowPokedexAreaScreen(NationalPokedexNumToSpecies(sPokedexListItem->dexNum), &sPokedexView->screenSwitchState); + DisplayPokedexAreaScreen(NationalPokedexNumToSpecies(sPokedexListItem->dexNum), &sPokedexView->screenSwitchState, gAreaTimeOfDay, DEX_SHOW_AREA_SCREEN); SetVBlankCallback(gPokedexVBlankCB); sPokedexView->screenSwitchState = 0; gMain.state = 0; @@ -3561,6 +3565,29 @@ static void Task_LoadAreaScreen(u8 taskId) } } + +static void Task_ReloadAreaScreen(u8 taskId) +{ + switch (gMain.state) + { + case 0: + default: + sPokedexView->currentPage = PAGE_AREA; + gMain.state = 1; + break; + case 1: + LoadPokedexBgPalette(sPokedexView->isSearchResults); + SetGpuReg(REG_OFFSET_BG1CNT, BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(13) | BGCNT_16COLOR | BGCNT_TXT256x256); + gMain.state++; + break; + case 2: + DisplayPokedexAreaScreen(NationalPokedexNumToSpecies(sPokedexListItem->dexNum), &sPokedexView->screenSwitchState, gAreaTimeOfDay, DEX_UPDATE_AREA_SCREEN); + gMain.state = 0; + gTasks[taskId].func = Task_WaitForAreaScreenInput; + break; + } +} + static void Task_WaitForAreaScreenInput(u8 taskId) { // See Task_HandlePokedexAreaScreenInput() in pokedex_area_screen.c @@ -3581,6 +3608,9 @@ static void Task_SwitchScreensFromAreaScreen(u8 taskId) case 2: gTasks[taskId].func = Task_LoadCryScreen; break; + case 3: + gTasks[taskId].func = Task_ReloadAreaScreen; + break; } } } @@ -4110,7 +4140,7 @@ static void Task_ExitCaughtMonPage(u8 taskId) bool32 isShiny; u32 personality; u8 paletteNum; - const u32 *lzPaletteData; + const u16 *paletteData; void *buffer; SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON); @@ -4125,8 +4155,8 @@ static void Task_ExitCaughtMonPage(u8 taskId) isShiny = (bool8)gTasks[taskId].tIsShiny; personality = ((u16)gTasks[taskId].tPersonalityHi << 16) | (u16)gTasks[taskId].tPersonalityLo; paletteNum = gSprites[gTasks[taskId].tMonSpriteId].oam.paletteNum; - lzPaletteData = GetMonSpritePalFromSpeciesAndPersonality(gTasks[taskId].tSpecies, isShiny, personality); - LoadCompressedPalette(lzPaletteData, OBJ_PLTT_ID(paletteNum), PLTT_SIZE_4BPP); + paletteData = GetMonSpritePalFromSpeciesAndPersonality(gTasks[taskId].tSpecies, isShiny, personality); + LoadPalette(paletteData, OBJ_PLTT_ID(paletteNum), PLTT_SIZE_4BPP); DestroyTask(taskId); } } diff --git a/src/pokedex_area_screen.c b/src/pokedex_area_screen.c index 2638739d32..93866817d2 100644 --- a/src/pokedex_area_screen.c +++ b/src/pokedex_area_screen.c @@ -3,6 +3,7 @@ #include "event_data.h" #include "gpu_regs.h" #include "graphics.h" +#include "international_string_util.h" #include "main.h" #include "malloc.h" #include "menu.h" @@ -12,14 +13,19 @@ #include "pokedex_area_screen.h" #include "region_map.h" #include "roamer.h" +#include "rtc.h" #include "sound.h" #include "string_util.h" +#include "text.h" +#include "text_window.h" #include "trig.h" #include "pokedex_area_region_map.h" #include "wild_encounter.h" +#include "window.h" #include "constants/region_map_sections.h" #include "constants/rgb.h" #include "constants/songs.h" +#include "config/pokedex_plus_hgss.h" // There are two types of indicators for the area screen to show where a Pokémon can occur: // - Area glows, which highlight any of the maps in MAP_GROUP_TOWNS_AND_ROUTES that have the species. @@ -55,6 +61,15 @@ #define MAX_AREA_HIGHLIGHTS 64 // Maximum number of rectangular route highlights #define MAX_AREA_MARKERS 32 // Maximum number of circular spot highlights +#define LABEL_WINDOW_BG 1 +#define NUM_LABEL_WINDOWS 2 + +enum PokedexAreaLabels +{ + DEX_AREA_LABEL_TIME_OF_DAY, + DEX_AREA_LABEL_AREA_UNKNOWN +}; + struct OverworldArea { u8 mapGroup; @@ -90,28 +105,41 @@ struct /*0xF70*/ u8 charBuffer[64]; /*0xFB0*/ struct Sprite *areaUnknownSprites[3]; /*0xFBC*/ u8 areaUnknownGraphicsBuffer[0x600]; + /*0xFC0*/ u8 areaScreenLabelIds[NUM_LABEL_WINDOWS]; + /*0xFC8*/ u8 areaState; } static EWRAM_DATA *sPokedexAreaScreen = NULL; +EWRAM_DATA u8 gAreaTimeOfDay = 0; + static void FindMapsWithMon(u16); static void BuildAreaGlowTilemap(void); static void SetAreaHasMon(u16, u16); static void SetSpecialMapHasMon(u16, u16); static u16 GetRegionMapSectionId(u8, u8); -static bool8 MapHasSpecies(const struct WildPokemonHeader *, u16); +static bool8 MapHasSpecies(const struct WildEncounterTypes *, u16); static bool8 MonListHasSpecies(const struct WildPokemonInfo *, u16, u16); static void DoAreaGlow(void); -static void Task_ShowPokedexAreaScreen(u8); +static void Task_ShowPokedexAreaScreen(u8 taskId); +static void Task_UpdatePokedexAreaScreen(u8 taskId); static void CreateAreaMarkerSprites(void); static void LoadAreaUnknownGraphics(void); static void CreateAreaUnknownSprites(void); static void Task_HandlePokedexAreaScreenInput(u8); static void ResetPokedexAreaMapBg(void); static void DestroyAreaScreenSprites(void); -static void LoadHGSSScreenSelectBarSubmenu(void); +static void AddTimeOfDayLabels(void); +static void ShowEncounterInfoLabel(void); +static void ShowAreaUnknownLabel(void); +static void PrintAreaLabelText(const u8 *text, enum PokedexAreaLabels labelId, int textXPos); +static void ClearAreaWindowLabel(enum PokedexAreaLabels labelId); + +bool32 ShouldShowAreaUnknownLabel(void); static const u32 sAreaGlow_Pal[] = INCBIN_U32("graphics/pokedex/area_glow.gbapal"); static const u32 sAreaGlow_Gfx[] = INCBIN_U32("graphics/pokedex/area_glow.4bpp.lz"); + static const u32 sPokedexPlusHGSS_ScreenSelectBarSubmenu_Tilemap[] = INCBIN_U32("graphics/pokedex/hgss/SelectBar.bin.lz"); +static void LoadHGSSScreenSelectBarSubmenu(void); static const u16 sSpeciesHiddenFromAreaScreen[] = { SPECIES_WYNAUT }; @@ -205,6 +233,32 @@ static const struct SpriteTemplate sAreaUnknownSpriteTemplate = .callback = SpriteCallbackDummy }; +static const u8 sFontColor_AreaInfo[3] = {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_WHITE, 5}; +static const struct WindowTemplate sTimeOfDayWindowLabelTemplates[] = +{ + [DEX_AREA_LABEL_TIME_OF_DAY] = + { + .bg = LABEL_WINDOW_BG, + .tilemapLeft = 22, + .tilemapTop = 18, + .width = 8, + .height = 2, + .paletteNum = 0, + .baseBlock = 0x16C + }, + + [DEX_AREA_LABEL_AREA_UNKNOWN] = + { + .bg = LABEL_WINDOW_BG, + .tilemapLeft = 12, + .tilemapTop = 18, + .width = 10, + .height = 2, + .paletteNum = 0, + .baseBlock = 0x240 + } +}; + static void ResetDrawAreaGlowState(void) { sPokedexAreaScreen->drawAreaGlowState = 0; @@ -287,7 +341,7 @@ static void FindMapsWithMon(u16 species) // Add regular species to the area map for (i = 0; gWildMonHeaders[i].mapGroup != MAP_GROUP(MAP_UNDEFINED); i++) { - if (MapHasSpecies(&gWildMonHeaders[i], species)) + if (MapHasSpecies(&gWildMonHeaders[i].encounterTypes[gAreaTimeOfDay], species)) { switch (gWildMonHeaders[i].mapGroup) { @@ -373,10 +427,13 @@ static u16 GetRegionMapSectionId(u8 mapGroup, u8 mapNum) return Overworld_GetMapHeaderByGroupAndId(mapGroup, mapNum)->regionMapSectionId; } -static bool8 MapHasSpecies(const struct WildPokemonHeader *info, u16 species) +static bool8 MapHasSpecies(const struct WildEncounterTypes *info, u16 species) { + u32 headerId = GetCurrentMapWildMonHeaderId(); + u8 currentMapGroup = gWildMonHeaders[headerId].mapGroup; + u8 currentMapNum = gWildMonHeaders[headerId].mapNum; // If this is a header for Altering Cave, skip it if it's not the current Altering Cave encounter set - if (GetRegionMapSectionId(info->mapGroup, info->mapNum) == MAPSEC_ALTERING_CAVE) + if (GetRegionMapSectionId(currentMapGroup, currentMapNum) == MAPSEC_ALTERING_CAVE) { sPokedexAreaScreen->alteringCaveCounter++; if (sPokedexAreaScreen->alteringCaveCounter != sPokedexAreaScreen->alteringCaveId + 1) @@ -576,17 +633,98 @@ static void DoAreaGlow(void) } } +static const u8 *GetTimeOfDayTextWithButton(enum TimeOfDay timeOfDay) +{ + static const u8 gText_Morning[] = _("{DPAD_UPDOWN} MORNING"); + static const u8 gText_Day[] = _("{DPAD_UPDOWN} DAY"); + static const u8 gText_Evening[] = _("{DPAD_UPDOWN} EVENING"); + static const u8 gText_Night[] = _("{DPAD_UPDOWN} NIGHT"); + + switch (gAreaTimeOfDay) + { + case TIME_MORNING: + return gText_Morning; + case TIME_EVENING: + return gText_Evening; + case TIME_NIGHT: + return gText_Night; + case TIME_DAY: + default: + return gText_Day; + } +} + +static void AddTimeOfDayLabels(void) +{ + u32 i; + + // clear the background before adding any more windows + RemoveAllWindowsOnBg(LABEL_WINDOW_BG); + + for (i = 0; i < NUM_LABEL_WINDOWS; i ++) + { + sPokedexAreaScreen->areaScreenLabelIds[i] = AddWindow(&sTimeOfDayWindowLabelTemplates[i]); + FillWindowPixelBuffer(sPokedexAreaScreen->areaScreenLabelIds[i], PIXEL_FILL(0)); + } +} + +static void ShowEncounterInfoLabel(void) +{ + const u8 *gText_TimeOfDay = GetTimeOfDayTextWithButton(gAreaTimeOfDay); + int stringXPos = GetStringCenterAlignXOffset(FONT_NORMAL, gText_TimeOfDay, 64); + + PrintAreaLabelText(gText_TimeOfDay, DEX_AREA_LABEL_TIME_OF_DAY, stringXPos); +} + +static void ShowAreaUnknownLabel(void) +{ + static const u8 gText_AreaUnknown[] = _("AREA UNKNOWN"); + int stringXPos = GetStringCenterAlignXOffset(FONT_NORMAL, gText_AreaUnknown, 80); + + PrintAreaLabelText(gText_AreaUnknown, DEX_AREA_LABEL_AREA_UNKNOWN, stringXPos); +} + +static void ClearAreaWindowLabel(enum PokedexAreaLabels labelId) +{ + FillWindowPixelBuffer(sPokedexAreaScreen->areaScreenLabelIds[labelId], PIXEL_FILL(0)); + ClearWindowTilemap(sPokedexAreaScreen->areaScreenLabelIds[labelId]); + ScheduleBgCopyTilemapToVram(0); +} + +static void PrintAreaLabelText(const u8 *text, enum PokedexAreaLabels labelId, int textXPos) +{ + ClearAreaWindowLabel(labelId); + + PutWindowTilemap(sPokedexAreaScreen->areaScreenLabelIds[labelId]); + FillWindowPixelBuffer(sPokedexAreaScreen->areaScreenLabelIds[labelId], PIXEL_FILL(7)); + + AddTextPrinterParameterized4(sPokedexAreaScreen->areaScreenLabelIds[labelId], FONT_NORMAL, textXPos, 0, 0, 0, sFontColor_AreaInfo, TEXT_SKIP_DRAW, text); + CopyWindowToVram(sPokedexAreaScreen->areaScreenLabelIds[labelId], COPYWIN_FULL); +} + +bool32 ShouldShowAreaUnknownLabel(void) +{ + return !sPokedexAreaScreen->numOverworldAreas && !sPokedexAreaScreen->numSpecialAreas; +} + #define tState data[0] -void ShowPokedexAreaScreen(u16 species, u8 *screenSwitchState) +void DisplayPokedexAreaScreen(u16 species, u8 *screenSwitchState, enum TimeOfDay timeOfDay, enum PokedexAreaScreenState areaState) { u8 taskId; sPokedexAreaScreen = AllocZeroed(sizeof(*sPokedexAreaScreen)); sPokedexAreaScreen->species = species; sPokedexAreaScreen->screenSwitchState = screenSwitchState; + sPokedexAreaScreen->areaState = areaState; + gAreaTimeOfDay = timeOfDay; screenSwitchState[0] = 0; - taskId = CreateTask(Task_ShowPokedexAreaScreen, 0); + + if (sPokedexAreaScreen->areaState == DEX_UPDATE_AREA_SCREEN) + taskId = CreateTask(Task_UpdatePokedexAreaScreen, 0); + else + taskId = CreateTask(Task_ShowPokedexAreaScreen, 0); + gTasks[taskId].tState = 0; } @@ -627,20 +765,29 @@ static void Task_ShowPokedexAreaScreen(u8 taskId) CreateAreaMarkerSprites(); break; case 7: - LoadAreaUnknownGraphics(); + if(!OW_TIME_OF_DAY_ENCOUNTERS) + LoadAreaUnknownGraphics(); break; case 8: - CreateAreaUnknownSprites(); + if(!OW_TIME_OF_DAY_ENCOUNTERS) + CreateAreaUnknownSprites(); break; case 9: BeginNormalPaletteFade(PALETTES_ALL & ~(0x14), 0, 16, 0, RGB_BLACK); break; case 10: - if (POKEDEX_PLUS_HGSS) - LoadHGSSScreenSelectBarSubmenu(); - SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG0 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_BG0 | BLDCNT_TGT2_ALL); StartAreaGlow(); + if (OW_TIME_OF_DAY_ENCOUNTERS) + { + AddTimeOfDayLabels(); + ShowEncounterInfoLabel(); + if (ShouldShowAreaUnknownLabel()) + ShowAreaUnknownLabel(); + DoScheduledBgTilemapCopiesToVram(); + } + if (POKEDEX_PLUS_HGSS) + LoadHGSSScreenSelectBarSubmenu(); ShowBg(2); ShowBg(3); // TryShowPokedexAreaMap will have done this already SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON); @@ -654,6 +801,58 @@ static void Task_ShowPokedexAreaScreen(u8 taskId) gTasks[taskId].tState++; } +static void Task_UpdatePokedexAreaScreen(u8 taskId) +{ + switch (gTasks[taskId].tState) + { + case 0: + ClearAreaWindowLabel(DEX_AREA_LABEL_TIME_OF_DAY); + ClearAreaWindowLabel(DEX_AREA_LABEL_AREA_UNKNOWN); + ResetSpriteData(); + FreeAllSpritePalettes(); + ResetDrawAreaGlowState(); + HideBg(2); + HideBg(0); + break; + case 1: + SetBgAttribute(3, BG_ATTR_CHARBASEINDEX, 3); + LoadPokedexAreaMapGfx(&sPokedexAreaMapTemplate); + PokedexAreaMapChangeBgY(-8); + StringFill(sPokedexAreaScreen->charBuffer, CHAR_SPACE, 16); + break; + case 2: + if (TryShowPokedexAreaMap() == TRUE) + return; + break; + case 3: + if (DrawAreaGlow()) + return; + break; + case 4: + ShowRegionMapForPokedexAreaScreen(&sPokedexAreaScreen->regionMap); + CreateRegionMapPlayerIcon(1, 1); + PokedexAreaScreen_UpdateRegionMapVariablesAndVideoRegs(0, -8); + CreateAreaMarkerSprites(); + break; + case 5: + SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG0 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_BG0 | BLDCNT_TGT2_ALL); + StartAreaGlow(); + AddTimeOfDayLabels(); + ShowEncounterInfoLabel(); + if (ShouldShowAreaUnknownLabel()) + ShowAreaUnknownLabel(); + ShowBg(2); + SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON); + break; + case 6: + gTasks[taskId].func = Task_HandlePokedexAreaScreenInput; + gTasks[taskId].tState = 0; + return; + } + + gTasks[taskId].tState++; +} + static void Task_HandlePokedexAreaScreenInput(u8 taskId) { DoAreaGlow(); @@ -687,16 +886,42 @@ static void Task_HandlePokedexAreaScreenInput(u8 taskId) gTasks[taskId].data[1] = 2; PlaySE(SE_DEX_PAGE); } + else if (JOY_NEW(DPAD_UP) && OW_TIME_OF_DAY_ENCOUNTERS == TRUE) + { + gTasks[taskId].data[1] = 3; + gAreaTimeOfDay = TryDecrementTimeOfDay(gAreaTimeOfDay); + sPokedexAreaScreen->areaState = DEX_UPDATE_AREA_SCREEN; + PlaySE(SE_DEX_PAGE); + } + else if (JOY_NEW(DPAD_DOWN) && OW_TIME_OF_DAY_ENCOUNTERS == TRUE) + { + gTasks[taskId].data[1] = 3; + gAreaTimeOfDay = TryIncrementTimeOfDay(gAreaTimeOfDay); + sPokedexAreaScreen->areaState = DEX_UPDATE_AREA_SCREEN; + PlaySE(SE_DEX_PAGE); + } else + { + // screen needs to fade if its doing anything except updating the area screen + sPokedexAreaScreen->areaState = DEX_SHOW_AREA_SCREEN; return; + } break; case 2: - BeginNormalPaletteFade(PALETTES_ALL & ~(0x14), 0, 0, 16, RGB_BLACK); + if (sPokedexAreaScreen->areaState != DEX_UPDATE_AREA_SCREEN) + BeginNormalPaletteFade(PALETTES_ALL & ~(0x14), 0, 0, 16, RGB_BLACK); break; case 3: if (gPaletteFade.active) return; DestroyAreaScreenSprites(); + if (OW_TIME_OF_DAY_ENCOUNTERS) + { + ClearAreaWindowLabel(DEX_AREA_LABEL_TIME_OF_DAY); + ClearAreaWindowLabel(DEX_AREA_LABEL_AREA_UNKNOWN); + RemoveAllWindowsOnBg(LABEL_WINDOW_BG); + } + sPokedexAreaScreen->screenSwitchState[0] = gTasks[taskId].data[1]; ResetPokedexAreaMapBg(); DestroyTask(taskId); @@ -755,13 +980,16 @@ static void DestroyAreaScreenSprites(void) for (i = 0; i < sPokedexAreaScreen->numAreaMarkerSprites; i++) DestroySprite(sPokedexAreaScreen->areaMarkerSprites[i]); - // Destroy "Area Unknown" sprites - FreeSpriteTilesByTag(TAG_AREA_UNKNOWN); - FreeSpritePaletteByTag(TAG_AREA_UNKNOWN); - for (i = 0; i < ARRAY_COUNT(sPokedexAreaScreen->areaUnknownSprites); i++) + if (!OW_TIME_OF_DAY_ENCOUNTERS) { - if (sPokedexAreaScreen->areaUnknownSprites[i]) - DestroySprite(sPokedexAreaScreen->areaUnknownSprites[i]); + // Destroy "Area Unknown" sprites + FreeSpriteTilesByTag(TAG_AREA_UNKNOWN); + FreeSpritePaletteByTag(TAG_AREA_UNKNOWN); + for (i = 0; i < ARRAY_COUNT(sPokedexAreaScreen->areaUnknownSprites); i++) + { + if (sPokedexAreaScreen->areaUnknownSprites[i]) + DestroySprite(sPokedexAreaScreen->areaUnknownSprites[i]); + } } } diff --git a/src/pokedex_plus_hgss.c b/src/pokedex_plus_hgss.c index 9039a774ee..955c8f9b17 100644 --- a/src/pokedex_plus_hgss.c +++ b/src/pokedex_plus_hgss.c @@ -5,6 +5,7 @@ #include "contest_effect.h" #include "data.h" #include "daycare.h" +#include "debug.h" #include "decompress.h" #include "event_data.h" #include "gpu_regs.h" @@ -12,6 +13,7 @@ #include "international_string_util.h" #include "item.h" #include "item_icon.h" +#include "line_break.h" #include "main.h" #include "malloc.h" #include "menu.h" @@ -28,6 +30,7 @@ #include "region_map.h" #include "pokemon.h" #include "reset_rtc_screen.h" +#include "rtc.h" #include "scanline_effect.h" #include "shop.h" #include "sound.h" @@ -46,7 +49,7 @@ #include "constants/party_menu.h" #include "constants/rgb.h" #include "constants/songs.h" - +#include "config/pokedex_plus_hgss.h" enum { @@ -204,54 +207,19 @@ static const u8 sText_EVO_Buttons_Decapped_PE[] = _("{DPAD_UPDOWN}Evos {A_BUTTO static const u8 sText_EVO_Name[] = _("{STR_VAR_3}:"); static const u8 sText_EVO_PreEvo[] = _("{STR_VAR_1} evolves from {STR_VAR_2}"); static const u8 sText_EVO_PreEvo_PE_Mega[] = _("{STR_VAR_1} Mega Evolves with {STR_VAR_2}"); -static const u8 sText_EVO_FRIENDSHIP[] = _("{LV}{UP_ARROW}, high friendship"); -static const u8 sText_EVO_FRIENDSHIP_DAY[] = _("{LV}{UP_ARROW}, high friendship, day"); -static const u8 sText_EVO_FRIENDSHIP_NIGHT[] = _("{LV}{UP_ARROW}, high friendship, night"); -static const u8 sText_EVO_FRIENDSHIP_MOVE_TYPE[] = _("{LV}{UP_ARROW}, high friendship, {STR_VAR_2} move"); -static const u8 sText_EVO_LEVEL[] = _("{LV}{UP_ARROW} to {STR_VAR_2}"); -static const u8 sText_EVO_TRADE[] = _("Trading"); -static const u8 sText_EVO_TRADE_ITEM[] = _("Trading, holding {STR_VAR_2}"); -static const u8 sText_EVO_ITEM[] = _("{STR_VAR_2} is used"); -static const u8 sText_EVO_LEVEL_ATK_GT_DEF[] = _("{LV}{UP_ARROW} to {STR_VAR_2}, Atk > Def"); -static const u8 sText_EVO_LEVEL_ATK_EQ_DEF[] = _("{LV}{UP_ARROW} to {STR_VAR_2}, Atk = Def"); -static const u8 sText_EVO_LEVEL_ATK_LT_DEF[] = _("{LV}{UP_ARROW} to {STR_VAR_2}, Atk < Def"); static const u8 sText_EVO_LEVEL_SILCOON[] = _("{LV}{UP_ARROW} to {STR_VAR_2}, Silcoon persona"); static const u8 sText_EVO_LEVEL_CASCOON[] = _("{LV}{UP_ARROW} to {STR_VAR_2}, Cascoon persona"); -static const u8 sText_EVO_LEVEL_NINJASK[] = _("{LV}{UP_ARROW} to {STR_VAR_2}"); -static const u8 sText_EVO_LEVEL_SHEDINJA[] = _("{LV}{UP_ARROW} to {STR_VAR_2}, party<6, 1x POKéBALL"); -static const u8 sText_EVO_BEAUTY[] = _("{LV}{UP_ARROW}, high beauty"); -static const u8 sText_EVO_LEVEL_FEMALE[] = _("{LV}{UP_ARROW} to {STR_VAR_2}, is female"); -static const u8 sText_EVO_LEVEL_MALE[] = _("{LV}{UP_ARROW} to {STR_VAR_2}, is male"); -static const u8 sText_EVO_LEVEL_NIGHT[] = _("{LV}{UP_ARROW} to {STR_VAR_2}, night"); -static const u8 sText_EVO_LEVEL_DAY[] = _("{LV}{UP_ARROW} to {STR_VAR_2}, day"); -static const u8 sText_EVO_LEVEL_DUSK[] = _("{LV}{UP_ARROW} to {STR_VAR_2}, dusk (5-6PM)"); -static const u8 sText_EVO_ITEM_HOLD_DAY[] = _("{LV}{UP_ARROW}, holds {STR_VAR_2}, day"); -static const u8 sText_EVO_ITEM_HOLD_NIGHT[] = _("{LV}{UP_ARROW}, holds {STR_VAR_2}, night"); static const u8 sText_EVO_MOVE[] = _("{LV}{UP_ARROW}, knows {STR_VAR_2}"); -static const u8 sText_EVO_MAPSEC[] = _("{LV}{UP_ARROW} on {STR_VAR_2}"); -static const u8 sText_EVO_ITEM_MALE[] = _("{STR_VAR_2} used on male"); -static const u8 sText_EVO_ITEM_FEMALE[] = _("{STR_VAR_2} used on female"); static const u8 sText_EVO_LEVEL_RAIN[] = _("{LV}{UP_ARROW} to {STR_VAR_2} while raining"); -static const u8 sText_EVO_SPECIFIC_MON_IN_PARTY[] = _("{LV}{UP_ARROW} with {STR_VAR_2} in party"); -static const u8 sText_EVO_LEVEL_DARK_TYPE_MON_IN_PARTY[] = _("{LV}{UP_ARROW} with dark type in party"); static const u8 sText_EVO_TRADE_SPECIFIC_MON[] = _("Traded for {STR_VAR_2}"); -static const u8 sText_EVO_SPECIFIC_MAP[] = _("{LV}{UP_ARROW} on {STR_VAR_2}"); -static const u8 sText_EVO_LEVEL_NATURE_AMPED[] = _("{LV}{UP_ARROW} to {STR_VAR_2}, Amped natures"); -static const u8 sText_EVO_LEVEL_NATURE_LOW_KEY[] = _("{LV}{UP_ARROW} to {STR_VAR_2}, Low Key natures"); static const u8 sText_EVO_CRITICAL_HITS[] = _("Land {STR_VAR_2} critical hits in\nsingle battle"); static const u8 sText_EVO_SCRIPT_TRIGGER_DMG[] = _("Takes at least {STR_VAR_2} HP in damage"); static const u8 sText_EVO_DARK_SCROLL[] = _("ScrllOfDrknss is used"); static const u8 sText_EVO_WATER_SCROLL[] = _("ScrollOfWatrs is used"); -static const u8 sText_EVO_ITEM_NIGHT[] = _("{STR_VAR_2} is used, night"); -static const u8 sText_EVO_ITEM_DAY[] = _("{STR_VAR_2} is used, day"); -static const u8 sText_EVO_ITEM_HOLD[] = _("{LV}{UP_ARROW}, holds {STR_VAR_2}"); static const u8 sText_EVO_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."); static const u8 sText_FORMS_Buttons_PE[] = _("{A_BUTTON}FORM MODE {START_BUTTON}EVOs"); @@ -297,9 +265,6 @@ static const u32 sPokedexPlusHGSS_ScreenSearchHoenn_Tilemap[] = INCBIN_U32("grap static const u32 sPokedexPlusHGSS_ScreenSearchNational_Tilemap[] = INCBIN_U32("graphics/pokedex/hgss/tilemap_search_screen_national.bin.lz"); #define SCROLLING_MON_X 146 -#define HGSS_DECAPPED FALSE -#define HGSS_DARK_MODE FALSE -#define HGSS_HIDE_UNSEEN_EVOLUTION_NAMES FALSE // For scrolling search parameter #define MAX_SEARCH_PARAM_ON_SCREEN 6 @@ -313,6 +278,9 @@ static const u32 sPokedexPlusHGSS_ScreenSearchNational_Tilemap[] = INCBIN_U32("g #define POKEBALL_ROTATION_TOP 64 #define POKEBALL_ROTATION_BOTTOM (POKEBALL_ROTATION_TOP - 16) +// for evolution method listings +#define MAX_EVO_METHOD_LINES 10 + // Coordinates of the Pokémon sprite on its page (info/cry screens) #define MON_PAGE_X 48 #define MON_PAGE_Y 56 @@ -407,6 +375,7 @@ struct EvoScreenData u8 menuPos; u8 arrowSpriteId; bool8 isMega; + u32 arrowSpriteDist[10]; }; struct FromScreenData @@ -433,7 +402,7 @@ struct PokedexView u16 monSpriteIds[MAX_MONS_ON_SCREEN]; u8 typeIconSpriteIds[2]; u16 moveSelected; - u8 movesTotal; + u16 movesTotal; u8 statBarsSpriteId; u8 statBarsBgSpriteId; bool8 justScrolled; @@ -526,7 +495,8 @@ static void Task_HandleInfoScreenInput(u8); static void Task_SwitchScreensFromInfoScreen(u8); static void Task_LoadInfoScreenWaitForFade(u8); static void Task_ExitInfoScreen(u8); -static void Task_LoadAreaScreen(u8); +static void Task_LoadAreaScreen(u8 taskId); +static void Task_ReloadAreaScreen(u8 taskId); static void Task_WaitForAreaScreenInput(u8 taskId); static void Task_SwitchScreensFromAreaScreen(u8); static void Task_LoadCryScreen(u8); @@ -596,13 +566,13 @@ static void PrintStatsScreen_Moves_Bottom(u8 taskId); static void PrintStatsScreen_Left(u8 taskId); static void PrintStatsScreen_Abilities(u8 taskId); static void PrintInfoScreenTextWhite(const u8* str, u8 left, u8 top); -static void PrintInfoScreenTextSmall(const u8* str, u8 left, u8 top); +static void PrintInfoScreenTextSmall(const u8* str, u8 fontId, u8 left, u8 top); static void PrintInfoScreenTextSmallWhite(const u8* str, u8 left, u8 top); static void Task_LoadEvolutionScreen(u8 taskId); static void Task_HandleEvolutionScreenInput(u8 taskId); static void Task_SwitchScreensFromEvolutionScreen(u8 taskId); static void Task_ExitEvolutionScreen(u8 taskId); -static void PrintEvolutionTargetSpeciesAndMethod(u8 taskId, u16 species, u8 depth, u32 *depth_i, u32 alreadyPrintedIcons[], u32 *icon_depth_i); +static void PrintEvolutionTargetSpeciesAndMethod(u8 taskId, u16 species, u8 depth, u32 *depth_i, u32 alreadyPrintedIcons[], u32 *icon_depth_i, u32 numLines); static u8 PrintPreEvolutions(u8 taskId, u16 species); //Stat bars on scrolling screens static void TryDestroyStatBars(void); @@ -625,6 +595,12 @@ static void DestroyCategoryIcon(void); static u16 NationalPokedexNumToSpeciesHGSS(u16 nationalNum); +//Evo screen +u32 GetSpeciesNameFontId(u32 nameWidth); +u32 GetSpeciesNameWidthInChars(const u8 *speciesName); +bool32 IsSpeciesAlcremie(u32 targetSpecies); +bool32 IsItemSweet(u32 item); + //Stat bars by DizzyEgg #define TAG_STAT_BAR 4097 #define TAG_STAT_BAR_BG 4098 @@ -2656,7 +2632,7 @@ static void PrintMonDexNumAndName_2(u8 windowId, u8 fontId, const u8* str, u8 le color[0] = TEXT_COLOR_TRANSPARENT; color[1] = TEXT_DYNAMIC_COLOR_6; color[2] = TEXT_COLOR_LIGHT_GRAY; - AddTextPrinterParameterized4(windowId, fontId, left * 8 - 13, (top * 8) + 1, 0, 0, color, -1, str); + AddTextPrinterParameterized4(windowId, fontId, left * 8 - 13, (top * 8) + 1, 0, 0, color, TEXT_SKIP_DRAW, str); } // u16 ignored is passed but never used @@ -3736,6 +3712,7 @@ static u8 LoadInfoScreen(struct PokedexListItem *item, u8 monSpriteId) u8 taskId; sPokedexListItem = item; + gAreaTimeOfDay = GetTimeOfDayForDex(); taskId = CreateTask(Task_LoadInfoScreen, 0); gTasks[taskId].tScrolling = FALSE; gTasks[taskId].tMonSpriteDone = TRUE; // Already has sprite from list view @@ -3994,7 +3971,7 @@ static void Task_LoadAreaScreen(u8 taskId) gMain.state++; break; case 2: - ShowPokedexAreaScreen(NationalPokedexNumToSpeciesHGSS(sPokedexListItem->dexNum), &sPokedexView->screenSwitchState); + DisplayPokedexAreaScreen(NationalPokedexNumToSpeciesHGSS(sPokedexListItem->dexNum), &sPokedexView->screenSwitchState, gAreaTimeOfDay, DEX_SHOW_AREA_SCREEN); SetVBlankCallback(gPokedexVBlankCB); sPokedexView->screenSwitchState = 0; gMain.state = 0; @@ -4003,6 +3980,28 @@ static void Task_LoadAreaScreen(u8 taskId) } } +static void Task_ReloadAreaScreen(u8 taskId) +{ + switch (gMain.state) + { + case 0: + default: + sPokedexView->currentPage = PAGE_AREA; + gMain.state = 1; + break; + case 1: + LoadPokedexBgPalette(sPokedexView->isSearchResults); + SetGpuReg(REG_OFFSET_BG1CNT, BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(13) | BGCNT_16COLOR | BGCNT_TXT256x256); + gMain.state++; + break; + case 2: + DisplayPokedexAreaScreen(NationalPokedexNumToSpeciesHGSS(sPokedexListItem->dexNum), &sPokedexView->screenSwitchState, gAreaTimeOfDay, DEX_UPDATE_AREA_SCREEN); + gMain.state = 0; + gTasks[taskId].func = Task_WaitForAreaScreenInput; + break; + } +} + static void Task_WaitForAreaScreenInput(u8 taskId) { // See Task_HandlePokedexAreaScreenInput() in pokedex_area_screen.c @@ -4026,6 +4025,9 @@ static void Task_SwitchScreensFromAreaScreen(u8 taskId) else gTasks[taskId].func = Task_LoadStatsScreen; break; + case 3: + gTasks[taskId].func = Task_ReloadAreaScreen; + break; } } } @@ -4208,7 +4210,7 @@ static void Task_ExitCaughtMonPage(u8 taskId) u32 otId; u32 personality; u8 paletteNum; - const u32 *lzPaletteData; + const u16 *paletteData; void *buffer; SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON); @@ -4224,8 +4226,8 @@ static void Task_ExitCaughtMonPage(u8 taskId) otId = ((u16)gTasks[taskId].tOtIdHi << 16) | (u16)gTasks[taskId].tOtIdLo; personality = ((u16)gTasks[taskId].tPersonalityHi << 16) | (u16)gTasks[taskId].tPersonalityLo; paletteNum = gSprites[gTasks[taskId].tMonSpriteId].oam.paletteNum; - lzPaletteData = GetMonSpritePalFromSpeciesAndPersonality(species, otId, personality); - LoadCompressedPalette(lzPaletteData, OBJ_PLTT_ID(paletteNum), PLTT_SIZE_4BPP); + paletteData = GetMonSpritePalFromSpeciesAndPersonality(species, otId, personality); + LoadPalette(paletteData, OBJ_PLTT_ID(paletteNum), PLTT_SIZE_4BPP); DestroyTask(taskId); } } @@ -4252,12 +4254,6 @@ static void SpriteCB_SlideCaughtMonToCenter(struct Sprite *sprite) #undef tPersonalityLo #undef tPersonalityHi - - - - - - //************************************ //* * //* Print data * @@ -4281,14 +4277,14 @@ static void PrintInfoScreenTextWhite(const u8* str, u8 left, u8 top) AddTextPrinterParameterized4(0, FONT_NORMAL, left, top, 0, 0, color, TEXT_SKIP_DRAW, str); } -static void PrintInfoScreenTextSmall(const u8* str, u8 left, u8 top) +static void PrintInfoScreenTextSmall(const u8* str, u8 fontId, u8 left, u8 top) { u8 color[3]; color[0] = TEXT_COLOR_TRANSPARENT; color[1] = TEXT_DYNAMIC_COLOR_6; color[2] = TEXT_COLOR_LIGHT_GRAY; - AddTextPrinterParameterized4(0, 0, left, top, 0, 0, color, 0, str); + AddTextPrinterParameterized4(0, fontId, left, top, 0, 0, color, 0, str); } static void UNUSED PrintInfoScreenTextSmallWhite(const u8* str, u8 left, u8 top) { @@ -4382,7 +4378,7 @@ static void CreateTypeIconSprites(void) u8 i; LoadCompressedSpriteSheet(&gSpriteSheet_MoveTypes); - LoadCompressedPalette(gMoveTypes_Pal, 0x1D0, 0x60); + LoadPalette(gMoveTypes_Pal, 0x1D0, 0x60); for (i = 0; i < 2; i++) { if (sPokedexView->typeIconSpriteIds[i] == 0xFF) @@ -4850,7 +4846,7 @@ static void Task_LoadStatsScreen(u8 taskId) sPokedexView->typeIconSpriteIds[1] = 0xFF; CreateTypeIconSprites(); sPokedexView->categoryIconSpriteId = 0xFF; - LoadCompressedPalette(gMoveTypes_Pal, 0x1D0, 0x60); + LoadPalette(gMoveTypes_Pal, 0x1D0, 0x60); LoadCompressedSpriteSheet(&gSpriteSheet_CategoryIcons); LoadSpritePalette(&gSpritePal_CategoryIcons); gMain.state++; @@ -5049,78 +5045,124 @@ static void PrintStatsScreen_DestroyMoveItemIcon(u8 taskId) DestroySprite(&gSprites[gTasks[taskId].data[3]]); //Destroy item icon } +static u16 AddTMTutorMoves(u16 species, u16 movesTotal, u8 *numTMHMMoves, u8 *numTutorMoves) +{ + u16 i, move; + bool8 isTMMove[MOVES_COUNT] = {0}; + const u16 *teachableLearnset = GetSpeciesTeachableLearnset(species); + + // TM Moves + if (HGSS_SORT_TMS_BY_NUM) + { + for (i = 0; i < NUM_TECHNICAL_MACHINES + NUM_HIDDEN_MACHINES; i++) + { + move = ItemIdToBattleMoveId(ITEM_TM01 + i); + if (move != MOVE_NONE && CanLearnTeachableMove(species, move)) + { + isTMMove[move] = TRUE; + sStatsMovesTMHM_ID[*numTMHMMoves] = ITEM_TM01 + i; + (*numTMHMMoves)++; + sStatsMoves[movesTotal] = move; + movesTotal++; + } + } + } + else + { + for (i = 0; teachableLearnset[i] != MOVE_UNAVAILABLE; i++) + { + move = teachableLearnset[i]; + for (u16 j = 0; j < NUM_TECHNICAL_MACHINES + NUM_HIDDEN_MACHINES; j++) + { + if (ItemIdToBattleMoveId(ITEM_TM01 + j) == move) + { + isTMMove[move] = TRUE; + sStatsMovesTMHM_ID[*numTMHMMoves] = ITEM_TM01 + j; + (*numTMHMMoves)++; + sStatsMoves[movesTotal] = move; + movesTotal++; + break; + } + } + } + } + + // Tutor Moves +#if P_TUTOR_MOVES_ARRAY + for (i = 0; gTutorMoves[i] != MOVE_UNAVAILABLE; i++) + { + move = gTutorMoves[i]; + if (!isTMMove[move] && CanLearnTeachableMove(species, move)) + { + sStatsMoves[movesTotal] = move; + movesTotal++; + (*numTutorMoves)++; + } + } +#else + for (i = 0; teachableLearnset[i] != MOVE_UNAVAILABLE; i++) + { + move = teachableLearnset[i]; + if (!isTMMove[move] && CanLearnTeachableMove(species, move)) + { + sStatsMoves[movesTotal] = move; + movesTotal++; + (*numTutorMoves)++; + } + } +#endif + return movesTotal; +} + static bool8 CalculateMoves(void) { u16 species = NationalPokedexNumToSpeciesHGSS(sPokedexListItem->dexNum); - const u16 *teachableLearnset = GetSpeciesTeachableLearnset(species); u16 statsMovesEgg[EGG_MOVES_ARRAY_COUNT] = {0}; u16 statsMovesLevelUp[MAX_LEVEL_UP_MOVES] = {0}; - u16 move; u8 numEggMoves = 0; u8 numLevelUpMoves = 0; u8 numTMHMMoves = 0; u8 numTutorMoves = 0; u16 movesTotal = 0; - u8 i,j; + u8 i; - // Mega pokemon don't have distinct learnsets from their base form; so use base species for calculation - if (species >= SPECIES_VENUSAUR_MEGA && species <= SPECIES_GROUDON_PRIMAL) + // Mega and Gmax Pokémon don't have distinct learnsets from their base form; so use base species for calculation + if (gSpeciesInfo[species].isMegaEvolution || gSpeciesInfo[species].isGigantamax) species = GetFormSpeciesId(species, 0); - //Calculate amount of Egg and LevelUp moves - numEggMoves = GetEggMovesBySpecies(species, statsMovesEgg); - numLevelUpMoves = GetLevelUpMovesBySpecies(species, statsMovesLevelUp); + // Egg moves + if (HGSS_SHOW_EGG_MOVES_FOR_EVOS) + { + u16 preSpecies = species; + while (preSpecies != SPECIES_NONE) + { + numEggMoves = GetEggMovesBySpecies(preSpecies, statsMovesEgg); + preSpecies = GetSpeciesPreEvolution(preSpecies); + } + } + else + { + numEggMoves = GetEggMovesBySpecies(species, statsMovesEgg); + } - //Egg moves - for (i=0; i < numEggMoves; i++) + for (i = 0; i < numEggMoves; i++) { sStatsMoves[movesTotal] = statsMovesEgg[i]; movesTotal++; } - //Level up moves - for (i=0; i < numLevelUpMoves; i++) + // Level up moves + numLevelUpMoves = GetLevelUpMovesBySpecies(species, statsMovesLevelUp); + for (i = 0; i < numLevelUpMoves; i++) { sStatsMoves[movesTotal] = statsMovesLevelUp[i]; movesTotal++; } - for (i = 0; teachableLearnset[i] != MOVE_UNAVAILABLE; i++) - { - move = teachableLearnset[i]; - for (j = 0; j < NUM_TECHNICAL_MACHINES + NUM_HIDDEN_MACHINES; j++) - { - if (ItemIdToBattleMoveId(ITEM_TM01 + j) == move) - { - sStatsMovesTMHM_ID[numTMHMMoves] = (ITEM_TM01 + j); - numTMHMMoves++; - - sStatsMoves[movesTotal] = move; - movesTotal++; - break; - } - } - } - - for (i = 0; teachableLearnset[i] != MOVE_UNAVAILABLE; i++) - { - move = teachableLearnset[i]; - for (j = 0; j < NUM_TECHNICAL_MACHINES + NUM_HIDDEN_MACHINES; j++) - { - if (ItemIdToBattleMoveId(ITEM_TM01 + j) == move) - break; - } - - if (j >= NUM_TECHNICAL_MACHINES + NUM_HIDDEN_MACHINES) - { - numTutorMoves++; - - sStatsMoves[movesTotal] = move; - movesTotal++; - } - } + // TM and Tutor moves + movesTotal = AddTMTutorMoves(species, movesTotal, &numTMHMMoves, &numTutorMoves); sPokedexView->numEggMoves = numEggMoves; sPokedexView->numLevelUpMoves = numLevelUpMoves; @@ -5137,8 +5179,8 @@ static void PrintStatsScreen_Moves_Top(u8 taskId) u8 numLevelUpMoves = sPokedexView->numLevelUpMoves; u8 numTMHMMoves = sPokedexView->numTMHMMoves; u8 numTutorMoves = sPokedexView->numTutorMoves; - u8 movesTotal = sPokedexView->movesTotal; - u8 selected = sPokedexView->moveSelected; + u16 movesTotal = sPokedexView->movesTotal; + u16 selected = sPokedexView->moveSelected; u8 level; u8 moves_x = 5; u8 moves_y = 3; @@ -5214,7 +5256,7 @@ static void PrintStatsScreen_Moves_Top(u8 taskId) static void PrintStatsScreen_Moves_Description(u8 taskId) { - u8 selected = sPokedexView->moveSelected; + u16 selected = sPokedexView->moveSelected; u16 move; u8 moves_x = 5; u8 moves_y = 5; @@ -5277,7 +5319,7 @@ static void PrintStatsScreen_Moves_Bottom(u8 taskId) PrintStatsScreenTextSmall(WIN_STATS_MOVES_BOTTOM, gStringVar1, moves_x + 45, moves_y); //Physical/Special/Status Category DestroyCategoryIcon(); - ShowCategoryIcon(GetBattleMoveCategory(move)); + ShowCategoryIcon(GetMoveCategory(move)); //Accuracy u32 accuracy = GetMoveAccuracy(move); if (accuracy == 0) @@ -6033,7 +6075,7 @@ static void Task_LoadEvolutionScreen(u8 taskId) u32 iconDepth = depth; //Print evo info and icons gTasks[taskId].data[3] = 0; - PrintEvolutionTargetSpeciesAndMethod(taskId, NationalPokedexNumToSpeciesHGSS(sPokedexListItem->dexNum), 0, &depth, alreadyPrintedIcons, &iconDepth); + PrintEvolutionTargetSpeciesAndMethod(taskId, NationalPokedexNumToSpeciesHGSS(sPokedexListItem->dexNum), 0, &depth, alreadyPrintedIcons, &iconDepth, 0); LoadSpritePalette(&gSpritePalette_Arrow); GetSeenFlagTargetSpecies(); if (sPokedexView->sEvoScreenData.numAllEvolutions > 0 && sPokedexView->sEvoScreenData.numSeen > 0) @@ -6117,7 +6159,7 @@ static void Task_HandleEvolutionScreenInput(u8 taskId) else pos = 0; } while (!sPokedexView->sEvoScreenData.seen[pos]); - gSprites[sPokedexView->sEvoScreenData.arrowSpriteId].y = base_y + base_y_offset * pos; + gSprites[sPokedexView->sEvoScreenData.arrowSpriteId].y = sPokedexView->sEvoScreenData.arrowSpriteDist[pos] + base_y + base_y_offset * pos; sPokedexView->sEvoScreenData.menuPos = pos; } else if (JOY_NEW(DPAD_UP)) @@ -6130,7 +6172,7 @@ static void Task_HandleEvolutionScreenInput(u8 taskId) pos = max; } while (!sPokedexView->sEvoScreenData.seen[pos]); - gSprites[sPokedexView->sEvoScreenData.arrowSpriteId].y = base_y + base_y_offset * pos; + gSprites[sPokedexView->sEvoScreenData.arrowSpriteId].y = sPokedexView->sEvoScreenData.arrowSpriteDist[pos] + base_y + base_y_offset * pos; sPokedexView->sEvoScreenData.menuPos = pos; } @@ -6140,7 +6182,7 @@ static void Task_HandleEvolutionScreenInput(u8 taskId) u16 dexNum = SpeciesToNationalPokedexNum(targetSpecies); if (sPokedexView->isSearchResults && sPokedexView->originalSearchSelectionNum == 0) sPokedexView->originalSearchSelectionNum = sPokedexListItem->dexNum; - + sPokedexListItem->dexNum = dexNum; sPokedexListItem->seen = GetSetPokedexFlag(dexNum, FLAG_GET_SEEN); sPokedexListItem->owned = GetSetPokedexFlag(dexNum, FLAG_GET_CAUGHT); @@ -6193,13 +6235,14 @@ static void Task_HandleEvolutionScreenInput(u8 taskId) static void HandleTargetSpeciesPrintText(u32 targetSpecies, u32 base_x, u32 base_y, u32 base_y_offset, u32 base_i) { bool32 seen = GetSetPokedexFlag(SpeciesToNationalPokedexNum(targetSpecies), FLAG_GET_SEEN); + u32 fontId = GetSpeciesNameFontId(GetSpeciesNameWidthInChars(GetSpeciesName(targetSpecies))); if (seen || !HGSS_HIDE_UNSEEN_EVOLUTION_NAMES) StringCopy(gStringVar3, GetSpeciesName(targetSpecies)); //evolution mon name else StringCopy(gStringVar3, gText_ThreeQuestionMarks); //show questionmarks instead of name StringExpandPlaceholders(gStringVar3, sText_EVO_Name); //evolution mon name - PrintInfoScreenTextSmall(gStringVar3, base_x, base_y + base_y_offset*base_i); //evolution mon name + PrintInfoScreenTextSmall(gStringVar3, fontId, base_x, base_y + base_y_offset*base_i); //evolution mon name } static void HandleTargetSpeciesPrintIcon(u8 taskId, u16 targetSpecies, u8 base_i, u8 iterations) @@ -6221,7 +6264,7 @@ static void CreateCaughtBallEvolutionScreen(u16 targetSpecies, u8 x, u8 y, u16 u else { //FillWindowPixelRect(0, PIXEL_FILL(0), x, y, 8, 16); //not sure why this was even here - PrintInfoScreenTextSmall(gText_OneDash, x+1, y-1); + PrintInfoScreenTextSmall(gText_OneDash, FONT_SMALL, x+1, y-1); } } @@ -6245,7 +6288,7 @@ static void HandlePreEvolutionSpeciesPrint(u8 taskId, u16 preSpecies, u16 specie } - PrintInfoScreenTextSmall(gStringVar3, base_x, base_y + base_y_offset*base_i); //evolution mon name + PrintInfoScreenTextSmall(gStringVar3, FONT_SMALL, base_x, base_y + base_y_offset*base_i); //evolution mon name if (base_i < 3) { @@ -6367,21 +6410,48 @@ static u8 PrintPreEvolutions(u8 taskId, u16 species) #define EVO_SCREEN_CRITS_DIGITS 1 #define EVO_SCREEN_DMG_DIGITS 2 -static void PrintEvolutionTargetSpeciesAndMethod(u8 taskId, u16 species, u8 depth, u32 *depth_i, u32 alreadyPrintedIcons[], u32 *icon_depth_i) +u32 GetSpeciesNameFontId(u32 nameWidth) +{ + if (nameWidth <= 8) + return FONT_SMALL; + else if (nameWidth > 7 && nameWidth < 11) + return FONT_SMALL;//_NARROW; + else + return FONT_SMALL;//_NARROWER; +} + +u32 GetSpeciesNameWidthInChars(const u8 *speciesName) +{ + u32 i = 0; + + while (speciesName[i] != EOS) i++; + + return i; +} + +bool32 IsSpeciesAlcremie(u32 targetSpecies) +{ + return targetSpecies >= SPECIES_ALCREMIE_STRAWBERRY_VANILLA_CREAM && targetSpecies <= SPECIES_ALCREMIE_RIBBON_RAINBOW_SWIRL; +} + +bool32 IsItemSweet(u32 item) +{ + return item >= ITEM_STRAWBERRY_SWEET && item <= ITEM_RIBBON_SWEET; +} + +static void PrintEvolutionTargetSpeciesAndMethod(u8 taskId, u16 species, u8 depth, u32 *depth_i, u32 alreadyPrintedIcons[], u32 *icon_depth_i, u32 numLines) { int i; - const struct MapHeader *mapHeader; + u32 depth_x = 4; + u32 depth_offset = 8 * (depth + 1); + int fontId; u16 targetSpecies = 0; - - u16 item; - bool8 left = TRUE; - u8 base_x = 13+8; - u8 base_x_offset = 54+8; - u8 base_y = 51; - u8 base_y_offset = 9; - u8 times = 0; - u8 depth_x = 16; + u32 base_x = 21; + u32 base_y = 51; + u32 base_y_offset = 9; + u32 times = 0; + u32 arg; // shorthand for some of the more mathy evolutions const struct Evolution *evolutions = GetSpeciesEvolutions(species); if (sPokedexView->sEvoScreenData.isMega) @@ -6389,23 +6459,28 @@ static void PrintEvolutionTargetSpeciesAndMethod(u8 taskId, u16 species, u8 dept StringCopy(gStringVar1, GetSpeciesName(species)); + sPokedexView->sEvoScreenData.arrowSpriteDist[depth] = numLines; + //If there are no evolutions print text and return if (evolutions == NULL) { if (depth == 0) { StringExpandPlaceholders(gStringVar4, sText_EVO_NONE); - PrintInfoScreenTextSmall(gStringVar4, base_x-7-7, base_y + base_y_offset*(*depth_i)); + PrintInfoScreenTextSmall(gStringVar4, FONT_SMALL, base_x-7-7, base_y + base_y_offset*(*depth_i) + numLines); } return; } //Calculate number of possible direct evolutions (e.g. Eevee has 5 but torchic has 1) for (i = 0; evolutions[i].method != EVOLUTIONS_END; i++) - { - if (evolutions[i].method != 0) - times += 1; - } + times += 1; + + if (times > 9 && species == SPECIES_MILCERY) + times = 9; + else if (times > 10) + times = 10; + gTasks[taskId].data[3] = times; sPokedexView->sEvoScreenData.numAllEvolutions += times; @@ -6416,9 +6491,18 @@ static void PrintEvolutionTargetSpeciesAndMethod(u8 taskId, u16 species, u8 dept left = !left; targetSpecies = evolutions[i].targetSpecies; + bool32 isAlcremie = IsSpeciesAlcremie(targetSpecies); + + u32 speciesNameWidthInChars = GetSpeciesNameWidthInChars(GetSpeciesName(targetSpecies)); + u32 speciesNameCharWidth = GetFontAttribute(GetSpeciesNameFontId(speciesNameWidthInChars), FONTATTR_MAX_LETTER_WIDTH); + + u32 speciesNameWidth = (speciesNameWidthInChars * speciesNameCharWidth); + u32 base_x_offset = speciesNameWidth + base_x + depth_offset; // for evo method info + u32 maxScreenWidth = 230 - base_x_offset; + sPokedexView->sEvoScreenData.targetSpecies[*depth_i] = targetSpecies; - CreateCaughtBallEvolutionScreen(targetSpecies, base_x + depth_x*depth-9, base_y + base_y_offset*(*depth_i), 0); - HandleTargetSpeciesPrintText(targetSpecies, base_x + depth_x*depth, base_y, base_y_offset, *depth_i); //evolution mon name + CreateCaughtBallEvolutionScreen(targetSpecies, base_x + depth_x*depth-9, base_y + base_y_offset*(*depth_i) + numLines, 0); + HandleTargetSpeciesPrintText(targetSpecies, base_x + depth_x*depth, base_y, base_y_offset + numLines, *depth_i); //evolution mon name for (j = 0; j < MAX_EVOLUTION_ICONS; j++) { @@ -6433,215 +6517,282 @@ static void PrintEvolutionTargetSpeciesAndMethod(u8 taskId, u16 species, u8 dept } } - switch (evolutions[i].method) + switch ((enum EvolutionMethods)evolutions[i].method) { - case EVO_FRIENDSHIP: - ConvertIntToDecimalStringN(gStringVar2, 220, STR_CONV_MODE_LEADING_ZEROS, 3); //friendship value - StringExpandPlaceholders(gStringVar4, sText_EVO_FRIENDSHIP ); - break; - case EVO_FRIENDSHIP_DAY: - StringExpandPlaceholders(gStringVar4, sText_EVO_FRIENDSHIP_DAY ); - break; - case EVO_FRIENDSHIP_NIGHT: - StringExpandPlaceholders(gStringVar4, sText_EVO_FRIENDSHIP_NIGHT ); + case EVO_SCRIPT_TRIGGER: + case EVO_NONE: + StringExpandPlaceholders(gStringVar4, COMPOUND_STRING("Unknown")); break; case EVO_LEVEL: - ConvertIntToDecimalStringN(gStringVar2, evolutions[i].param, STR_CONV_MODE_LEADING_ZEROS, EVO_SCREEN_LVL_DIGITS); //level - StringExpandPlaceholders(gStringVar4, sText_EVO_LEVEL ); + case EVO_LEVEL_BATTLE_ONLY: + StringCopy(gStringVar4, COMPOUND_STRING("{LV}{UP_ARROW}")); + if (evolutions[i].param > 1) + { + ConvertIntToDecimalStringN(gStringVar2, evolutions[i].param, STR_CONV_MODE_LEFT_ALIGN, EVO_SCREEN_LVL_DIGITS); //level + StringAppend(gStringVar4, gStringVar2); + } + if ((enum EvolutionMethods)evolutions[i].method == EVO_LEVEL_BATTLE_ONLY) + StringAppend(gStringVar4, COMPOUND_STRING(", in battle")); break; case EVO_TRADE: - StringExpandPlaceholders(gStringVar4, sText_EVO_TRADE ); - break; - case EVO_TRADE_ITEM: - item = evolutions[i].param; //item - CopyItemName(item, gStringVar2); //item - StringExpandPlaceholders(gStringVar4, sText_EVO_TRADE_ITEM ); + StringExpandPlaceholders(gStringVar4, COMPOUND_STRING("Trading")); break; case EVO_ITEM: - item = evolutions[i].param; - CopyItemName(item, gStringVar2); - StringExpandPlaceholders(gStringVar4, sText_EVO_ITEM ); + CopyItemName(evolutions[i].param, gStringVar2); + StringExpandPlaceholders(gStringVar4, COMPOUND_STRING("{STR_VAR_2} is used")); break; - case EVO_LEVEL_ATK_GT_DEF: - ConvertIntToDecimalStringN(gStringVar2, evolutions[i].param, STR_CONV_MODE_LEADING_ZEROS, EVO_SCREEN_LVL_DIGITS); //level - StringExpandPlaceholders(gStringVar4, sText_EVO_LEVEL_ATK_GT_DEF ); + case EVO_SPLIT_FROM_EVO: + StringCopy(gStringVar4, COMPOUND_STRING("Splits from ")); + StringAppend(gStringVar4, GetSpeciesName(evolutions[i].param)); //mon name break; - case EVO_LEVEL_ATK_EQ_DEF: - ConvertIntToDecimalStringN(gStringVar2, evolutions[i].param, STR_CONV_MODE_LEADING_ZEROS, EVO_SCREEN_LVL_DIGITS); //level - StringExpandPlaceholders(gStringVar4, sText_EVO_LEVEL_ATK_EQ_DEF ); + case EVO_BATTLE_END: + StringExpandPlaceholders(gStringVar4, COMPOUND_STRING("End battle")); break; - case EVO_LEVEL_ATK_LT_DEF: - ConvertIntToDecimalStringN(gStringVar2, evolutions[i].param, STR_CONV_MODE_LEADING_ZEROS, EVO_SCREEN_LVL_DIGITS); //level - StringExpandPlaceholders(gStringVar4, sText_EVO_LEVEL_ATK_LT_DEF ); - break; - case EVO_LEVEL_SILCOON: - ConvertIntToDecimalStringN(gStringVar2, evolutions[i].param, STR_CONV_MODE_LEADING_ZEROS, EVO_SCREEN_LVL_DIGITS); //level - StringExpandPlaceholders(gStringVar4, sText_EVO_LEVEL_SILCOON ); - break; - case EVO_LEVEL_CASCOON: - ConvertIntToDecimalStringN(gStringVar2, evolutions[i].param, STR_CONV_MODE_LEADING_ZEROS, EVO_SCREEN_LVL_DIGITS); //level - StringExpandPlaceholders(gStringVar4, sText_EVO_LEVEL_CASCOON ); - break; - case EVO_LEVEL_NINJASK: - ConvertIntToDecimalStringN(gStringVar2, evolutions[i].param, STR_CONV_MODE_LEADING_ZEROS, EVO_SCREEN_LVL_DIGITS); //level - StringExpandPlaceholders(gStringVar4, sText_EVO_LEVEL_NINJASK ); - break; - case EVO_LEVEL_SHEDINJA: - ConvertIntToDecimalStringN(gStringVar2, evolutions[i].param, STR_CONV_MODE_LEADING_ZEROS, EVO_SCREEN_LVL_DIGITS); //level - StringExpandPlaceholders(gStringVar4, sText_EVO_LEVEL_SHEDINJA ); - break; - case EVO_BEAUTY: - ConvertIntToDecimalStringN(gStringVar2, evolutions[i].param, STR_CONV_MODE_LEADING_ZEROS, 3); //beauty - StringExpandPlaceholders(gStringVar4, sText_EVO_BEAUTY ); - break; - case EVO_LEVEL_FEMALE: - ConvertIntToDecimalStringN(gStringVar2, evolutions[i].param, STR_CONV_MODE_LEADING_ZEROS, EVO_SCREEN_LVL_DIGITS); //level - StringExpandPlaceholders(gStringVar4, sText_EVO_LEVEL_FEMALE ); - break; - case EVO_LEVEL_MALE: - ConvertIntToDecimalStringN(gStringVar2, evolutions[i].param, STR_CONV_MODE_LEADING_ZEROS, EVO_SCREEN_LVL_DIGITS); //level - StringExpandPlaceholders(gStringVar4, sText_EVO_LEVEL_MALE ); - break; - case EVO_LEVEL_NIGHT: - ConvertIntToDecimalStringN(gStringVar2, evolutions[i].param, STR_CONV_MODE_LEADING_ZEROS, EVO_SCREEN_LVL_DIGITS); //level - StringExpandPlaceholders(gStringVar4, sText_EVO_LEVEL_NIGHT ); - break; - case EVO_LEVEL_DAY: - ConvertIntToDecimalStringN(gStringVar2, evolutions[i].param, STR_CONV_MODE_LEADING_ZEROS, EVO_SCREEN_LVL_DIGITS); //level - StringExpandPlaceholders(gStringVar4, sText_EVO_LEVEL_DAY ); - break; - case EVO_LEVEL_DUSK: - ConvertIntToDecimalStringN(gStringVar2, evolutions[i].param, STR_CONV_MODE_LEADING_ZEROS, EVO_SCREEN_LVL_DIGITS); //level - StringExpandPlaceholders(gStringVar4, sText_EVO_LEVEL_DUSK ); - break; - case EVO_ITEM_HOLD_DAY: - item = evolutions[i].param; //item - CopyItemName(item, gStringVar2); //item - StringExpandPlaceholders(gStringVar4, sText_EVO_ITEM_HOLD_DAY ); - break; - case EVO_ITEM_HOLD_NIGHT: - item = evolutions[i].param; //item - CopyItemName(item, gStringVar2); //item - StringExpandPlaceholders(gStringVar4, sText_EVO_ITEM_HOLD_NIGHT ); - break; - case EVO_MOVE: - StringCopy(gStringVar2, GetMoveName(evolutions[i].param)); - StringExpandPlaceholders(gStringVar4, sText_EVO_MOVE ); - break; - case EVO_FRIENDSHIP_MOVE_TYPE: - StringCopy(gStringVar2, gTypesInfo[evolutions[i].param].name); - StringExpandPlaceholders(gStringVar4, sText_EVO_FRIENDSHIP_MOVE_TYPE ); - break; - case EVO_MAPSEC: - StringCopy(gStringVar2, gRegionMapEntries[evolutions[i].param].name); - StringExpandPlaceholders(gStringVar4, sText_EVO_MAPSEC ); - break; - case EVO_ITEM_MALE: - item = evolutions[i].param; //item - CopyItemName(item, gStringVar2); //item - StringExpandPlaceholders(gStringVar4, sText_EVO_ITEM_MALE ); - break; - case EVO_ITEM_FEMALE: - item = evolutions[i].param; //item - CopyItemName(item, gStringVar2); //item - StringExpandPlaceholders(gStringVar4, sText_EVO_ITEM_FEMALE ); - break; - case EVO_LEVEL_RAIN: - //if (j == WEATHER_RAIN || j == WEATHER_RAIN_THUNDERSTORM || j == WEATHER_DOWNPOUR) - StringExpandPlaceholders(gStringVar4, sText_EVO_LEVEL_RAIN ); - break; - case EVO_SPECIFIC_MON_IN_PARTY: - StringCopy(gStringVar2, GetSpeciesName(evolutions[i].param)); //mon name - StringExpandPlaceholders(gStringVar4, sText_EVO_SPECIFIC_MON_IN_PARTY ); - break; - case EVO_LEVEL_DARK_TYPE_MON_IN_PARTY: - StringExpandPlaceholders(gStringVar4, sText_EVO_LEVEL_DARK_TYPE_MON_IN_PARTY ); - break; - case EVO_TRADE_SPECIFIC_MON: - StringCopy(gStringVar2, GetSpeciesName(evolutions[i].param)); //mon name - StringExpandPlaceholders(gStringVar4, sText_EVO_TRADE_SPECIFIC_MON ); - break; - case EVO_SPECIFIC_MAP: - mapHeader = Overworld_GetMapHeaderByGroupAndId(evolutions[i].param >> 8, evolutions[i].param & 0xFF); - GetMapName(gStringVar2, mapHeader->regionMapSectionId, 0); - StringExpandPlaceholders(gStringVar4, sText_EVO_SPECIFIC_MAP ); - break; - case EVO_LEVEL_NATURE_AMPED: - ConvertIntToDecimalStringN(gStringVar2, evolutions[i].param, STR_CONV_MODE_LEADING_ZEROS, EVO_SCREEN_LVL_DIGITS); //level - StringExpandPlaceholders(gStringVar4, sText_EVO_LEVEL_NATURE_AMPED); - break; - case EVO_LEVEL_NATURE_LOW_KEY: - ConvertIntToDecimalStringN(gStringVar2, evolutions[i].param, STR_CONV_MODE_LEADING_ZEROS, EVO_SCREEN_LVL_DIGITS); //level - StringExpandPlaceholders(gStringVar4, sText_EVO_LEVEL_NATURE_LOW_KEY); - break; - case EVO_CRITICAL_HITS: - ConvertIntToDecimalStringN(gStringVar2, evolutions[i].param, STR_CONV_MODE_LEADING_ZEROS, EVO_SCREEN_CRITS_DIGITS); //crits - StringExpandPlaceholders(gStringVar4, sText_EVO_CRITICAL_HITS); - break; - case EVO_SCRIPT_TRIGGER_DMG: - ConvertIntToDecimalStringN(gStringVar2, evolutions[i].param, STR_CONV_MODE_LEADING_ZEROS, EVO_SCREEN_DMG_DIGITS); //damage - StringExpandPlaceholders(gStringVar4, sText_EVO_SCRIPT_TRIGGER_DMG); - break; - case EVO_DARK_SCROLL: - item = evolutions[i].param; - CopyItemName(item, gStringVar2); - StringExpandPlaceholders(gStringVar4, sText_EVO_DARK_SCROLL ); - break; - case EVO_WATER_SCROLL: - item = evolutions[i].param; - CopyItemName(item, gStringVar2); - StringExpandPlaceholders(gStringVar4, sText_EVO_WATER_SCROLL ); - break; - case EVO_ITEM_NIGHT: - item = evolutions[i].param; - CopyItemName(item, gStringVar2); - StringExpandPlaceholders(gStringVar4, sText_EVO_ITEM_NIGHT ); - break; - case EVO_ITEM_DAY: - item = evolutions[i].param; - CopyItemName(item, gStringVar2); - StringExpandPlaceholders(gStringVar4, sText_EVO_ITEM_DAY ); - break; - case EVO_ITEM_HOLD: - item = evolutions[i].param; - CopyItemName(item, gStringVar2); - StringExpandPlaceholders(gStringVar4, sText_EVO_ITEM_HOLD ); - break; - case EVO_USE_MOVE_TWENTY_TIMES: - StringCopy(gStringVar2, GetMoveName(evolutions[i].param)); - StringExpandPlaceholders(gStringVar4, sText_EVO_USE_MOVE_TWENTY_TIMES ); - break; - case EVO_RECOIL_DAMAGE_MALE: - ConvertIntToDecimalStringN(gStringVar2, evolutions[i].param, STR_CONV_MODE_LEADING_ZEROS, 3); - StringExpandPlaceholders(gStringVar4, sText_EVO_RECOIL_DAMAGE_MALE); - break; - case EVO_RECOIL_DAMAGE_FEMALE: - ConvertIntToDecimalStringN(gStringVar2, evolutions[i].param, STR_CONV_MODE_LEADING_ZEROS, 3); - 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); + case EVO_SPIN: + StringCopy(gStringVar4, COMPOUND_STRING("Spin ")); + if (evolutions[i].param == SPIN_CW_SHORT) + StringAppend(gStringVar4, COMPOUND_STRING("CW <5s")); + else if (evolutions[i].param == SPIN_CW_LONG) + StringAppend(gStringVar4, COMPOUND_STRING("CW >5s")); + else if (evolutions[i].param == SPIN_CCW_SHORT) + StringAppend(gStringVar4, COMPOUND_STRING("CCW <5s")); + else if (evolutions[i].param == SPIN_CCW_LONG) + StringAppend(gStringVar4, COMPOUND_STRING("CCW >5s")); + else + StringAppend(gStringVar4, COMPOUND_STRING("CW/CCW >10s")); break; }//Switch end - PrintInfoScreenTextSmall(gStringVar4, base_x + depth_x*depth+base_x_offset, base_y + base_y_offset*(*depth_i)); //Print actual instructions + // Check for additional conditions. Skips if there's no additional conditions. + for (j = 0; evolutions[i].params != NULL && evolutions[i].params[j].condition != CONDITIONS_END; j++) + { + if (j == 0) + { + StringAppend(gStringVar4, COMPOUND_STRING(", ")); + } + + switch((enum EvolutionConditions)evolutions[i].params[j].condition) + { + // Gen 2 + case IF_GENDER: + switch(evolutions[i].params[j].arg1) + { + case MON_MALE: StringAppend(gStringVar4, COMPOUND_STRING("Male")); break; + case MON_FEMALE: StringAppend(gStringVar4, COMPOUND_STRING("Female")); break; + } + break; + case IF_MIN_FRIENDSHIP: + StringAppend(gStringVar4, COMPOUND_STRING("{UP_ARROW_2}friendship")); + break; + case IF_ATK_GT_DEF: + StringAppend(gStringVar4, COMPOUND_STRING("Atk > Def")); + break; + case IF_ATK_EQ_DEF: + StringAppend(gStringVar4, COMPOUND_STRING("Atk = Def")); + break; + case IF_ATK_LT_DEF: + StringAppend(gStringVar4, COMPOUND_STRING("Atk < Def")); + break; + case IF_TIME: + switch(evolutions[i].params[j].arg1) + { + case TIME_MORNING: StringAppend(gStringVar4, COMPOUND_STRING("Morning")); break; + case TIME_DAY: StringAppend(gStringVar4, COMPOUND_STRING("Day")); break; + case TIME_EVENING: StringAppend(gStringVar4, COMPOUND_STRING("Evening")); break; + case TIME_NIGHT: StringAppend(gStringVar4, COMPOUND_STRING("Night")); break; + } + break; + case IF_NOT_TIME: + switch(evolutions[i].params[j].arg1) + { + case TIME_MORNING: StringAppend(gStringVar4, COMPOUND_STRING("NOT Morning")); break; + case TIME_DAY: StringAppend(gStringVar4, COMPOUND_STRING("NOT Day")); break; + case TIME_EVENING: StringAppend(gStringVar4, COMPOUND_STRING("NOT Evening")); break; + case TIME_NIGHT: StringAppend(gStringVar4, COMPOUND_STRING("Day")); break; // More intuitive than "NOT Night" + } + break; + case IF_HOLD_ITEM: + StringAppend(gStringVar4, COMPOUND_STRING("holds ")); + if (isAlcremie && IsItemSweet(evolutions[i].params[j].arg1)) + { + StringAppend(gStringVar4, COMPOUND_STRING("Sweet")); //item + } + else + { + CopyItemName(evolutions[i].params[j].arg1, gStringVar2); //item + StringAppend(gStringVar4, gStringVar2); + } + break; + // Gen 3 + case IF_PID_UPPER_MODULO_10_GT: + case IF_PID_UPPER_MODULO_10_EQ: + case IF_PID_UPPER_MODULO_10_LT: + arg = evolutions[i].params[j].arg1; + if ((enum EvolutionConditions)evolutions[i].params[j].condition == IF_PID_UPPER_MODULO_10_GT + && arg < 10 && arg >= 0) + arg = 9 - arg; + else if ((enum EvolutionConditions)evolutions[i].params[j].condition == IF_PID_UPPER_MODULO_10_EQ + && arg < 10 && arg >= 0) + arg = 1; + ConvertIntToDecimalStringN(gStringVar2, arg * 10, STR_CONV_MODE_LEFT_ALIGN, 3); + StringAppend(gStringVar4, COMPOUND_STRING("random %")); + StringAppend(gStringVar4, gStringVar2); + break; + case IF_MIN_BEAUTY: + StringAppend(gStringVar4, COMPOUND_STRING("{UP_ARROW_2}beauty")); + break; + case IF_MIN_COOLNESS: + StringAppend(gStringVar4, COMPOUND_STRING("{UP_ARROW_2}coolness")); + break; + case IF_MIN_SMARTNESS: + StringAppend(gStringVar4, COMPOUND_STRING("{UP_ARROW_2}smartness")); + break; + case IF_MIN_TOUGHNESS: + StringAppend(gStringVar4, COMPOUND_STRING("{UP_ARROW_2}toughness")); + break; + case IF_MIN_CUTENESS: + StringAppend(gStringVar4, COMPOUND_STRING("{UP_ARROW_2}cuteness")); + break; + // Gen 4 + case IF_SPECIES_IN_PARTY: + StringAppend(gStringVar4, GetSpeciesName(evolutions[i].params[j].arg1)); //mon name + StringAppend(gStringVar4, COMPOUND_STRING(" in party")); + break; + case IF_IN_MAPSEC: + StringAppend(gStringVar4, COMPOUND_STRING("in ")); + StringCopy(gStringVar2, gRegionMapEntries[evolutions[i].params[j].arg1].name); + StringAppend(gStringVar4, gStringVar2); + break; + case IF_IN_MAP: + StringAppend(gStringVar4, COMPOUND_STRING("in ")); + GetMapName(gStringVar2, Overworld_GetMapHeaderByGroupAndId(evolutions[i].params[j].arg1 >> 8, evolutions[i].params[j].arg1 & 0xFF)->regionMapSectionId, 0); + StringAppend(gStringVar4, gStringVar2); + break; + case IF_KNOWS_MOVE: + StringAppend(gStringVar4, COMPOUND_STRING("knows ")); + StringAppend(gStringVar4, GetMoveName(evolutions[i].params[j].arg1)); + break; + // Gen 5 + case IF_TRADE_PARTNER_SPECIES: + StringAppend(gStringVar4, COMPOUND_STRING("traded with ")); + StringAppend(gStringVar4, GetSpeciesName(evolutions[i].params[j].arg1)); + break; + // Gen 6 + case IF_TYPE_IN_PARTY: + StringAppend(gStringVar4, gTypesInfo[evolutions[i].params[j].arg1].name); //type name + StringAppend(gStringVar4, COMPOUND_STRING("-type in party")); + break; + case IF_WEATHER: + StringAppend(gStringVar4, COMPOUND_STRING("weather ")); + StringAppend(gStringVar4, GetWeatherName(evolutions[i].params[j].arg1)); + break; + case IF_KNOWS_MOVE_TYPE: + StringAppend(gStringVar4, gTypesInfo[evolutions[i].params[j].arg1].name); + StringAppend(gStringVar4, COMPOUND_STRING(" move")); + break; + // Gen 8 + case IF_NATURE: + StringCopy(gStringVar2, gNaturesInfo[evolutions[i].params[j].arg1].name); + StringAppend(gStringVar4, gStringVar2); + StringAppend(gStringVar4, COMPOUND_STRING(" nature")); + break; + case IF_AMPED_NATURE: + StringAppend(gStringVar4, COMPOUND_STRING("amped natures")); + break; + case IF_LOW_KEY_NATURE: + StringAppend(gStringVar4, COMPOUND_STRING("low-Key natures")); + break; + case IF_RECOIL_DAMAGE_GE: + StringAppend(gStringVar4, COMPOUND_STRING("takes >= ")); + ConvertIntToDecimalStringN(gStringVar2, evolutions[i].params[j].arg1, STR_CONV_MODE_LEFT_ALIGN, 3); + StringAppend(gStringVar4, gStringVar2); + StringAppend(gStringVar4, COMPOUND_STRING(" recoil dmg")); + break; + case IF_CURRENT_DAMAGE_GE: + ConvertIntToDecimalStringN(gStringVar2, evolutions[i].params[j].arg1, STR_CONV_MODE_LEFT_ALIGN, 3); + StringAppend(gStringVar4, gStringVar2); + StringAppend(gStringVar4, COMPOUND_STRING(" current dmg")); + break; + case IF_CRITICAL_HITS_GE: + ConvertIntToDecimalStringN(gStringVar2, evolutions[i].params[j].arg1, STR_CONV_MODE_LEFT_ALIGN, 2); + StringAppend(gStringVar4, gStringVar2); + StringAppend(gStringVar4, COMPOUND_STRING(" critical hits")); + break; + case IF_USED_MOVE_X_TIMES: + StringAppend(gStringVar4, COMPOUND_STRING("use move ")); + StringAppend(gStringVar4, GetMoveName(evolutions[i].params[j].arg1)); + StringAppend(gStringVar4, COMPOUND_STRING(" ")); + ConvertIntToDecimalStringN(gStringVar2, evolutions[i].params[j].arg2, STR_CONV_MODE_LEFT_ALIGN, 3); + StringAppend(gStringVar4, gStringVar2); + StringAppend(gStringVar4, COMPOUND_STRING(" times")); + break; + // Gen 9 + case IF_DEFEAT_X_WITH_ITEMS: + StringAppend(gStringVar4, COMPOUND_STRING("defeat ")); + ConvertIntToDecimalStringN(gStringVar2, evolutions[i].params[j].arg3, STR_CONV_MODE_LEFT_ALIGN, 3); + StringAppend(gStringVar4, gStringVar2); + StringAppend(gStringVar4, COMPOUND_STRING(" ")); + StringAppend(gStringVar4, GetSpeciesName(evolutions[i].params[j].arg1)); + StringAppend(gStringVar4, COMPOUND_STRING(" that hold ")); + CopyItemName(evolutions[i].params[j].arg2, gStringVar2); + StringAppend(gStringVar4, gStringVar2); + break; + case IF_PID_MODULO_100_GT: + case IF_PID_MODULO_100_EQ: + case IF_PID_MODULO_100_LT: + arg = evolutions[i].params[j].arg1; + if ((enum EvolutionConditions)evolutions[i].params[j].condition == IF_PID_MODULO_100_GT + && arg < 100 && arg >= 0) + arg = 99 - arg; + else if ((enum EvolutionConditions)evolutions[i].params[j].condition == IF_PID_MODULO_100_EQ + && arg < 100 && arg >= 0) + arg = 1; + ConvertIntToDecimalStringN(gStringVar2, arg, STR_CONV_MODE_LEFT_ALIGN, 3); + StringAppend(gStringVar4, COMPOUND_STRING("%")); + StringAppend(gStringVar4, gStringVar2); + break; + case IF_MIN_OVERWORLD_STEPS: + StringAppend(gStringVar4, COMPOUND_STRING("after ")); + ConvertIntToDecimalStringN(gStringVar2, evolutions[i].params[j].arg1, STR_CONV_MODE_LEFT_ALIGN, 4); + StringAppend(gStringVar4, gStringVar2); + StringAppend(gStringVar4, COMPOUND_STRING(" steps")); + break; + case IF_BAG_ITEM_COUNT: + ConvertIntToDecimalStringN(gStringVar2, evolutions[i].params[j].arg2, STR_CONV_MODE_LEFT_ALIGN, 3); + StringAppend(gStringVar4, gStringVar2); + StringAppend(gStringVar4, COMPOUND_STRING(" ")); + CopyItemNameHandlePlural(evolutions[i].params[j].arg1, gStringVar2, evolutions[i].params[j].arg2); + StringAppend(gStringVar4, gStringVar2); + StringAppend(gStringVar4, COMPOUND_STRING(" in bag")); + break; + case CONDITIONS_END: + break; + } + + if (evolutions[i].params[j+1].condition != CONDITIONS_END) + { + StringAppend(gStringVar4, COMPOUND_STRING(", ")); + } + } + + if (isAlcremie) + fontId = FONT_NARROWER; + else + fontId = GetFontIdToFit(gStringVar4, FONT_SMALL, 0, maxScreenWidth); + + u32 fontHeight = GetFontAttribute(fontId, FONTATTR_MAX_LETTER_HEIGHT); + + StringAppend(gStringVar4, COMPOUND_STRING(".")); + BreakStringAutomatic(gStringVar4, maxScreenWidth, MAX_EVO_METHOD_LINES, fontId, HIDE_SCROLL_PROMPT); + + PrintInfoScreenTextSmall(gStringVar4, fontId, base_x_offset, base_y + base_y_offset*(*depth_i) + numLines); //Print actual instructions (*depth_i)++; - PrintEvolutionTargetSpeciesAndMethod(taskId, targetSpecies, depth+1, depth_i, alreadyPrintedIcons, icon_depth_i); + + numLines = CountLineBreaks(gStringVar4) * fontHeight; + + sPokedexView->sEvoScreenData.arrowSpriteDist[depth + 1] = numLines; + + PrintEvolutionTargetSpeciesAndMethod(taskId, targetSpecies, depth+1, depth_i, alreadyPrintedIcons, icon_depth_i, numLines); }//For loop end } @@ -6949,7 +7100,7 @@ static void PrintForms(u8 taskId, u16 species) if (times == 0) { StringExpandPlaceholders(gStringVar4, sText_FORMS_NONE); - PrintInfoScreenTextSmall(gStringVar4, base_x, base_y + base_y_offset*times); + PrintInfoScreenTextSmall(gStringVar4, FONT_SMALL, base_x, base_y + base_y_offset*times); } } diff --git a/src/pokemon.c b/src/pokemon.c index 809aeb3eea..6636c7c7fa 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -16,8 +16,10 @@ #include "event_data.h" #include "event_object_movement.h" #include "evolution_scene.h" +#include "field_player_avatar.h" #include "field_specials.h" #include "field_weather.h" +#include "follower_npc.h" #include "graphics.h" #include "item.h" #include "caps.h" @@ -92,6 +94,9 @@ EWRAM_DATA static u8 sTriedEvolving = 0; EWRAM_DATA u16 gFollowerSteps = 0; #include "data/abilities.h" +#if P_TUTOR_MOVES_ARRAY +#include "data/tutor_moves.h" +#endif // P_TUTOR_MOVES_ARRAY // Used in an unreferenced function in RS. // Unreferenced here and in FRLG. @@ -1658,7 +1663,7 @@ bool8 ShouldIgnoreDeoxysForm(u8 caseId, u8 battler) } else { - if (GetBattlerSide(battler) == B_SIDE_PLAYER) + if (IsOnPlayerSide(battler)) return FALSE; } } @@ -1666,7 +1671,7 @@ bool8 ShouldIgnoreDeoxysForm(u8 caseId, u8 battler) { if (!gMain.inBattle) return FALSE; - if (GetBattlerSide(battler) == B_SIDE_PLAYER) + if (IsOnPlayerSide(battler)) return FALSE; } break; @@ -1980,11 +1985,10 @@ void GiveBoxMonInitialMoveset(struct BoxPokemon *boxMon) //Credit: AsparagusEdua } } -u16 MonTryLearningNewMove(struct Pokemon *mon, bool8 firstMove) +u16 MonTryLearningNewMoveAtLevel(struct Pokemon *mon, bool32 firstMove, u32 level) { u32 retVal = MOVE_NONE; u16 species = GetMonData(mon, MON_DATA_SPECIES, NULL); - u8 level = GetMonData(mon, MON_DATA_LEVEL, NULL); const struct LevelUpMove *learnset = GetSpeciesLevelUpLearnset(species); // since you can learn more than one move per level @@ -2032,6 +2036,11 @@ u16 MonTryLearningNewMove(struct Pokemon *mon, bool8 firstMove) return retVal; } +u16 MonTryLearningNewMove(struct Pokemon *mon, bool8 firstMove) +{ + return MonTryLearningNewMoveAtLevel(mon, firstMove, GetMonData(mon, MON_DATA_LEVEL, NULL)); +} + void DeleteFirstMoveAndGiveMoveToMon(struct Pokemon *mon, u16 move) { s32 i; @@ -2089,30 +2098,28 @@ void DeleteFirstMoveAndGiveMoveToBoxMon(struct BoxPokemon *boxMon, u16 move) u8 CountAliveMonsInBattle(u8 caseId, u32 battler) { u32 i; - u32 battlerSide; u32 retVal = 0; switch (caseId) { case BATTLE_ALIVE_EXCEPT_BATTLER: - for (i = 0; i < MAX_BATTLERS_COUNT; i++) + for (i = 0; i < gBattlersCount; i++) { if (i != battler && !(gAbsentBattlerFlags & (1u << i))) retVal++; } break; case BATTLE_ALIVE_EXCEPT_BATTLER_SIDE: - for (i = 0; i < MAX_BATTLERS_COUNT; i++) + for (i = 0; i < gBattlersCount; i++) { if (i != battler && i != BATTLE_PARTNER(battler) && !(gAbsentBattlerFlags & (1u << i))) retVal++; } break; case BATTLE_ALIVE_SIDE: - battlerSide = GetBattlerSide(battler); - for (i = 0; i < MAX_BATTLERS_COUNT; i++) + for (i = 0; i < gBattlersCount; i++) { - if (GetBattlerSide(i) == battlerSide && !(gAbsentBattlerFlags & (1u << i))) + if (IsBattlerAlly(i, battler) && !(gAbsentBattlerFlags & (1u << i))) retVal++; } break; @@ -3452,7 +3459,8 @@ u8 GetMonsStateToDoubles_2(void) s32 aliveCount = 0; s32 i; - if (OW_DOUBLE_APPROACH_WITH_ONE_MON) + if (OW_DOUBLE_APPROACH_WITH_ONE_MON + || FollowerNPCIsBattlePartner()) return PLAYER_HAS_TWO_USABLE_MONS; for (i = 0; i < PARTY_SIZE; i++) @@ -3888,12 +3896,13 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov // PP Up if (effectFlags & ITEM4_PP_UP) { + u32 ppBonuses = GetMonData(mon, MON_DATA_PP_BONUSES, NULL); effectFlags &= ~ITEM4_PP_UP; - dataUnsigned = (GetMonData(mon, MON_DATA_PP_BONUSES, NULL) & gPPUpGetMask[moveIndex]) >> (moveIndex * 2); - temp1 = CalculatePPWithBonus(GetMonData(mon, MON_DATA_MOVE1 + moveIndex, NULL), GetMonData(mon, MON_DATA_PP_BONUSES, NULL), moveIndex); + dataUnsigned = (ppBonuses & gPPUpGetMask[moveIndex]) >> (moveIndex * 2); + temp1 = CalculatePPWithBonus(GetMonData(mon, MON_DATA_MOVE1 + moveIndex, NULL), ppBonuses, moveIndex); if (dataUnsigned <= 2 && temp1 > 4) { - dataUnsigned = GetMonData(mon, MON_DATA_PP_BONUSES, NULL) + gPPUpAddValues[moveIndex]; + dataUnsigned = ppBonuses + gPPUpAddValues[moveIndex]; SetMonData(mon, MON_DATA_PP_BONUSES, &dataUnsigned); dataUnsigned = CalculatePPWithBonus(GetMonData(mon, MON_DATA_MOVE1 + moveIndex, NULL), dataUnsigned, moveIndex) - temp1; @@ -3978,9 +3987,12 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov break; case 2: // ITEM4_HEAL_HP + { + u32 currentHP = GetMonData(mon, MON_DATA_HP, NULL); + u32 maxHP = GetMonData(mon, MON_DATA_MAX_HP, NULL); // Check use validity. - if ((effectFlags & (ITEM4_REVIVE >> 2) && GetMonData(mon, MON_DATA_HP, NULL) != 0) - || (!(effectFlags & (ITEM4_REVIVE >> 2)) && GetMonData(mon, MON_DATA_HP, NULL) == 0)) + if ((effectFlags & (ITEM4_REVIVE >> 2) && currentHP != 0) + || (!(effectFlags & (ITEM4_REVIVE >> 2)) && currentHP == 0)) { itemEffectParam++; break; @@ -3991,10 +4003,10 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov switch (dataUnsigned) { case ITEM6_HEAL_HP_FULL: - dataUnsigned = GetMonData(mon, MON_DATA_MAX_HP, NULL) - GetMonData(mon, MON_DATA_HP, NULL); + dataUnsigned = maxHP - currentHP; break; case ITEM6_HEAL_HP_HALF: - dataUnsigned = GetMonData(mon, MON_DATA_MAX_HP, NULL) / 2; + dataUnsigned = maxHP / 2; if (dataUnsigned == 0) dataUnsigned = 1; break; @@ -4002,39 +4014,40 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov dataUnsigned = gBattleScripting.levelUpHP; break; case ITEM6_HEAL_HP_QUARTER: - dataUnsigned = GetMonData(mon, MON_DATA_MAX_HP, NULL) / 4; + dataUnsigned = maxHP / 4; if (dataUnsigned == 0) dataUnsigned = 1; break; } // Only restore HP if not at max health - if (GetMonData(mon, MON_DATA_MAX_HP, NULL) != GetMonData(mon, MON_DATA_HP, NULL)) + if (maxHP != currentHP) { // Restore HP - dataUnsigned = GetMonData(mon, MON_DATA_HP, NULL) + dataUnsigned; - if (dataUnsigned > GetMonData(mon, MON_DATA_MAX_HP, NULL)) - dataUnsigned = GetMonData(mon, MON_DATA_MAX_HP, NULL); + dataUnsigned = currentHP + dataUnsigned; + if (dataUnsigned > maxHP) + dataUnsigned = maxHP; SetMonData(mon, MON_DATA_HP, &dataUnsigned); retVal = FALSE; } effectFlags &= ~(ITEM4_REVIVE >> 2); break; - + } case 3: // ITEM4_HEAL_PP if (!(effectFlags & (ITEM4_HEAL_PP_ONE >> 3))) { // Heal PP for all moves for (temp2 = 0; (signed)(temp2) < (signed)(MAX_MON_MOVES); temp2++) { - u16 move; + u32 move, ppBonus; dataUnsigned = GetMonData(mon, MON_DATA_PP1 + temp2, NULL); move = GetMonData(mon, MON_DATA_MOVE1 + temp2, NULL); - if (dataUnsigned != CalculatePPWithBonus(move, GetMonData(mon, MON_DATA_PP_BONUSES, NULL), temp2)) + ppBonus = CalculatePPWithBonus(move, GetMonData(mon, MON_DATA_PP_BONUSES, NULL), temp2); + if (dataUnsigned != ppBonus) { dataUnsigned += itemEffect[itemEffectParam]; - if (dataUnsigned > CalculatePPWithBonus(move, GetMonData(mon, MON_DATA_PP_BONUSES, NULL), temp2)) - dataUnsigned = CalculatePPWithBonus(move, GetMonData(mon, MON_DATA_PP_BONUSES, NULL), temp2); + if (dataUnsigned > ppBonus) + dataUnsigned = ppBonus; SetMonData(mon, MON_DATA_PP1 + temp2, &dataUnsigned); retVal = FALSE; } @@ -4047,11 +4060,12 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov u16 move; dataUnsigned = GetMonData(mon, MON_DATA_PP1 + moveIndex, NULL); move = GetMonData(mon, MON_DATA_MOVE1 + moveIndex, NULL); - if (dataUnsigned != CalculatePPWithBonus(move, GetMonData(mon, MON_DATA_PP_BONUSES, NULL), moveIndex)) + u32 ppBonus = CalculatePPWithBonus(move, GetMonData(mon, MON_DATA_PP_BONUSES, NULL), moveIndex); + if (dataUnsigned != ppBonus) { dataUnsigned += itemEffect[itemEffectParam++]; - if (dataUnsigned > CalculatePPWithBonus(move, GetMonData(mon, MON_DATA_PP_BONUSES, NULL), moveIndex)) - dataUnsigned = CalculatePPWithBonus(move, GetMonData(mon, MON_DATA_PP_BONUSES, NULL), moveIndex); + if (dataUnsigned > ppBonus) + dataUnsigned = ppBonus; SetMonData(mon, MON_DATA_PP1 + moveIndex, &dataUnsigned); retVal = FALSE; } @@ -4063,11 +4077,13 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov case 7: // ITEM4_EVO_STONE { - u16 targetSpecies = GetEvolutionTargetSpecies(mon, EVO_MODE_ITEM_USE, item, NULL); + bool32 canStopEvo = TRUE; + u32 targetSpecies = GetEvolutionTargetSpecies(mon, EVO_MODE_ITEM_USE, item, NULL, &canStopEvo, CHECK_EVO); if (targetSpecies != SPECIES_NONE) { - BeginEvolutionScene(mon, targetSpecies, FALSE, partyIndex); + GetEvolutionTargetSpecies(mon, EVO_MODE_ITEM_USE, item, NULL, &canStopEvo, DO_EVO); + BeginEvolutionScene(mon, targetSpecies, canStopEvo, partyIndex); return FALSE; } } @@ -4159,13 +4175,15 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov break; case 4: // ITEM5_PP_MAX - dataUnsigned = (GetMonData(mon, MON_DATA_PP_BONUSES, NULL) & gPPUpGetMask[moveIndex]) >> (moveIndex * 2); - temp2 = CalculatePPWithBonus(GetMonData(mon, MON_DATA_MOVE1 + moveIndex, NULL), GetMonData(mon, MON_DATA_PP_BONUSES, NULL), moveIndex); + { + u32 ppBonuses = GetMonData(mon, MON_DATA_PP_BONUSES, NULL); + dataUnsigned = (ppBonuses & gPPUpGetMask[moveIndex]) >> (moveIndex * 2); + temp2 = CalculatePPWithBonus(GetMonData(mon, MON_DATA_MOVE1 + moveIndex, NULL), ppBonuses, moveIndex); // Check if 3 PP Ups have been applied already, and that the move has a total PP of at least 5 (excludes Sketch) if (dataUnsigned < 3 && temp2 >= 5) { - dataUnsigned = GetMonData(mon, MON_DATA_PP_BONUSES, NULL); + dataUnsigned = ppBonuses; dataUnsigned &= gPPUpClearMask[moveIndex]; dataUnsigned += gPPUpAddValues[moveIndex] * 3; // Apply 3 PP Ups (max) @@ -4176,7 +4194,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov retVal = FALSE; } break; - + } case 5: // ITEM5_FRIENDSHIP_LOW // Changes to friendship are given differently depending on // how much friendship the Pokémon already has. @@ -4455,24 +4473,24 @@ u32 GetGMaxTargetSpecies(u32 species) return species; } -u16 GetEvolutionTargetSpecies(struct Pokemon *mon, enum EvolutionMode mode, u16 evolutionItem, struct Pokemon *tradePartner) +bool32 DoesMonMeetAdditionalConditions(struct Pokemon *mon, const struct EvolutionParam *params, struct Pokemon *tradePartner, u32 partyId, bool32 *canStopEvo, enum EvoState evoState) { - int i, j; - u16 targetSpecies = SPECIES_NONE; - u16 species = GetMonData(mon, MON_DATA_SPECIES, 0); - u16 heldItem = GetMonData(mon, MON_DATA_HELD_ITEM, 0); + u32 i, j; + u32 heldItem = GetMonData(mon, MON_DATA_HELD_ITEM); + u32 gender = GetMonGender(mon); + u32 friendship = GetMonData(mon, MON_DATA_FRIENDSHIP, 0); + u32 attack = GetMonData(mon, MON_DATA_ATK, 0); + u32 defense = GetMonData(mon, MON_DATA_DEF, 0); u32 personality = GetMonData(mon, MON_DATA_PERSONALITY, 0); - u8 level; - u16 friendship; - u8 beauty = GetMonData(mon, MON_DATA_BEAUTY, 0); u16 upperPersonality = personality >> 16; - u32 holdEffect, currentMap, partnerSpecies, partnerHeldItem, partnerHoldEffect; - bool32 consumeItem = FALSE; - u16 evolutionTracker = GetMonData(mon, MON_DATA_EVOLUTION_TRACKER, 0); - const struct Evolution *evolutions = GetSpeciesEvolutions(species); - - if (evolutions == NULL) - return SPECIES_NONE; + u32 weather = GetCurrentWeather(); + u32 nature = GetNature(mon); + bool32 removeHoldItem = FALSE; + u32 removeBagItem = ITEM_NONE; + u32 removeBagItemCount = 0; + u32 evolutionTracker = GetMonData(mon, MON_DATA_EVOLUTION_TRACKER, 0); + u32 partnerSpecies, partnerHeldItem; + enum ItemHoldEffect partnerHoldEffect; if (tradePartner != NULL) { @@ -4495,6 +4513,299 @@ u16 GetEvolutionTargetSpecies(struct Pokemon *mon, enum EvolutionMode mode, u16 partnerHoldEffect = HOLD_EFFECT_NONE; } + // Check for additional conditions (only if the primary method passes). Skips if there's no additional conditions. + for (i = 0; params != NULL && params[i].condition != CONDITIONS_END; i++) + { + enum EvolutionConditions condition = params[i].condition; + u32 currentCondition = FALSE; + + switch(condition) + { + // Gen 2 + case IF_GENDER: + if (gender == GetMonGender(mon)) + currentCondition = TRUE; + break; + case IF_MIN_FRIENDSHIP: + if (friendship >= params[i].arg1) + currentCondition = TRUE; + break; + case IF_ATK_GT_DEF: + if (attack > defense) + currentCondition = TRUE; + break; + case IF_ATK_EQ_DEF: + if (attack == defense) + currentCondition = TRUE; + break; + case IF_ATK_LT_DEF: + if (attack < defense) + currentCondition = TRUE; + break; + case IF_TIME: + if (GetTimeOfDay() == params[i].arg1) + currentCondition = TRUE; + + break; + case IF_NOT_TIME: + if (GetTimeOfDay() != params[i].arg1) + currentCondition = TRUE; + break; + case IF_HOLD_ITEM: + if (heldItem == params[i].arg1) + { + currentCondition = TRUE; + removeHoldItem = TRUE; + } + break; + // Gen 3 + case IF_PID_UPPER_MODULO_10_GT: + if ((upperPersonality % 10) > params[i].arg1) + currentCondition = TRUE; + break; + case IF_PID_UPPER_MODULO_10_EQ: + if ((upperPersonality % 10) == params[i].arg1) + currentCondition = TRUE; + break; + case IF_PID_UPPER_MODULO_10_LT: + if ((upperPersonality % 10) < params[i].arg1) + currentCondition = TRUE; + break; + case IF_MIN_BEAUTY: + { + u32 beauty = GetMonData(mon, MON_DATA_BEAUTY, 0); + if (beauty >= params[i].arg1) + currentCondition = TRUE; + break; + } + case IF_MIN_COOLNESS: + { + u32 coolness = GetMonData(mon, MON_DATA_COOL, 0); + if (coolness >= params[i].arg1) + currentCondition = TRUE; + break; + } + case IF_MIN_SMARTNESS: + // remember that even though it's called "Smart/Smartness" here, + // from gen 6 and up it's known as "Clever/Cleverness." + { + u32 smartness = GetMonData(mon, MON_DATA_SMART, 0); + if (smartness >= params[i].arg1) + currentCondition = TRUE; + break; + } + case IF_MIN_TOUGHNESS: + { + u32 toughness = GetMonData(mon, MON_DATA_TOUGH, 0); + if (toughness >= params[i].arg1) + currentCondition = TRUE; + break; + } + case IF_MIN_CUTENESS: + { + u32 cuteness = GetMonData(mon, MON_DATA_CUTE, 0); + if (cuteness >= params[i].arg1) + currentCondition = TRUE; + break; + } + // Gen 4 + case IF_SPECIES_IN_PARTY: + for (j = 0; j < PARTY_SIZE; j++) + { + if (GetMonData(&gPlayerParty[j], MON_DATA_SPECIES, NULL) == params[i].arg1) + { + currentCondition = TRUE; + break; + } + } + break; + case IF_IN_MAP: + if (params[i].arg1 == ((gSaveBlock1Ptr->location.mapGroup) << 8 | gSaveBlock1Ptr->location.mapNum)) + currentCondition = TRUE; + break; + case IF_IN_MAPSEC: + if (gMapHeader.regionMapSectionId == params[i].arg1) + currentCondition = TRUE; + break; + case IF_KNOWS_MOVE: + if (MonKnowsMove(mon, params[i].arg1)) + currentCondition = TRUE; + break; + // Gen 5 + case IF_TRADE_PARTNER_SPECIES: + if (params[i].arg1 == partnerSpecies && partnerHoldEffect != HOLD_EFFECT_PREVENT_EVOLVE) + currentCondition = TRUE; + break; + // Gen 6 + case IF_TYPE_IN_PARTY: + for (j = 0; j < PARTY_SIZE; j++) + { + u16 currSpecies = GetMonData(&gPlayerParty[j], MON_DATA_SPECIES, NULL); + if (gSpeciesInfo[currSpecies].types[0] == params[i].arg1 + || gSpeciesInfo[currSpecies].types[1] == params[i].arg1) + { + currentCondition = TRUE; + break; + } + } + break; + case IF_WEATHER: + if (params[i].arg1 == WEATHER_RAIN) + { + if (weather == WEATHER_RAIN || weather == WEATHER_RAIN_THUNDERSTORM || weather == WEATHER_DOWNPOUR) + currentCondition = TRUE; + } + else if (params[i].arg1 == WEATHER_FOG) + { + if (weather == WEATHER_FOG_DIAGONAL || weather == WEATHER_FOG_HORIZONTAL) + currentCondition = TRUE; + } + else if (weather == params[i].arg1) + { + currentCondition = TRUE; + } + break; + case IF_KNOWS_MOVE_TYPE: + for (j = 0; j < MAX_MON_MOVES; j++) + { + if (GetMoveType(GetMonData(mon, MON_DATA_MOVE1 + j, NULL)) == params[i].arg1) + { + currentCondition = TRUE; + break; + } + } + break; + // Gen 8 + case IF_NATURE: + if (nature == params[i].arg1) + currentCondition = TRUE; + break; + case IF_AMPED_NATURE: + switch (nature) + { + case NATURE_HARDY: + case NATURE_BRAVE: + case NATURE_ADAMANT: + case NATURE_NAUGHTY: + case NATURE_DOCILE: + case NATURE_IMPISH: + case NATURE_LAX: + case NATURE_HASTY: + case NATURE_JOLLY: + case NATURE_NAIVE: + case NATURE_RASH: + case NATURE_SASSY: + case NATURE_QUIRKY: + currentCondition = TRUE; + break; + } + break; + case IF_LOW_KEY_NATURE: + switch (nature) + { + case NATURE_LONELY: + case NATURE_BOLD: + case NATURE_RELAXED: + case NATURE_TIMID: + case NATURE_SERIOUS: + case NATURE_MODEST: + case NATURE_MILD: + case NATURE_QUIET: + case NATURE_BASHFUL: + case NATURE_CALM: + case NATURE_GENTLE: + case NATURE_CAREFUL: + currentCondition = TRUE; + break; + } + break; + case IF_RECOIL_DAMAGE_GE: + if (evolutionTracker >= params[i].arg1) + currentCondition = TRUE; + break; + case IF_CURRENT_DAMAGE_GE: + { + u32 currentHp = GetMonData(mon, MON_DATA_HP, NULL); + if (currentHp != 0 && (GetMonData(mon, MON_DATA_MAX_HP, NULL) - currentHp >= params[i].arg1)) + currentCondition = TRUE; + break; + } + case IF_CRITICAL_HITS_GE: + if (partyId != PARTY_SIZE && gPartyCriticalHits[partyId] >= params[i].arg1) + currentCondition = TRUE; + break; + case IF_USED_MOVE_X_TIMES: + if (evolutionTracker >= params[i].arg2) + currentCondition = TRUE; + break; + // Gen 9 + case IF_DEFEAT_X_WITH_ITEMS: + if (evolutionTracker >= params[i].arg3) + currentCondition = TRUE; + break; + case IF_PID_MODULO_100_GT: + if ((personality % 100) > params[i].arg1) + currentCondition = TRUE; + break; + case IF_PID_MODULO_100_EQ: + if ((personality % 100) == params[i].arg1) + currentCondition = TRUE; + break; + case IF_PID_MODULO_100_LT: + if ((personality % 100) < params[i].arg1) + currentCondition = TRUE; + break; + case IF_MIN_OVERWORLD_STEPS: + if (mon == GetFirstLiveMon() && gFollowerSteps >= params[i].arg1) + currentCondition = TRUE; + break; + case IF_BAG_ITEM_COUNT: + if (CheckBagHasItem(params[i].arg1, params[i].arg2)) + { + currentCondition = TRUE; + removeBagItem = params[i].arg1; + removeBagItemCount = params[i].arg2; + if (canStopEvo != NULL) + *canStopEvo = FALSE; + } + break; + case CONDITIONS_END: + break; + } + + // check if an evolution is about to happen and items should be removed + if (evoState == DO_EVO) + { + if (removeHoldItem) + { + u32 heldItem = ITEM_NONE; + SetMonData(mon, MON_DATA_HELD_ITEM, &heldItem); + } + + if (removeBagItem != ITEM_NONE) + RemoveBagItem(removeBagItem, removeBagItemCount); + } + + if (currentCondition == FALSE) + return FALSE; + } + + return TRUE; +} + +u32 GetEvolutionTargetSpecies(struct Pokemon *mon, enum EvolutionMode mode, u16 evolutionItem, struct Pokemon *tradePartner, bool32 *canStopEvo, enum EvoState evoState) +{ + int i; + u32 targetSpecies = SPECIES_NONE; + u32 species = GetMonData(mon, MON_DATA_SPECIES, 0); + u32 heldItem = GetMonData(mon, MON_DATA_HELD_ITEM, 0); + u32 level = GetMonData(mon, MON_DATA_LEVEL, 0); + u32 holdEffect; + const struct Evolution *evolutions = GetSpeciesEvolutions(species); + + if (evolutions == NULL) + return SPECIES_NONE; + if (heldItem == ITEM_ENIGMA_BERRY_E_READER) #if FREE_ENIGMA_BERRY == FALSE holdEffect = gSaveBlock1Ptr->enigmaBerry.holdEffect; @@ -4514,270 +4825,31 @@ u16 GetEvolutionTargetSpecies(struct Pokemon *mon, enum EvolutionMode mode, u16 { case EVO_MODE_NORMAL: case EVO_MODE_BATTLE_ONLY: - level = GetMonData(mon, MON_DATA_LEVEL, 0); - friendship = GetMonData(mon, MON_DATA_FRIENDSHIP, 0); - for (i = 0; evolutions[i].method != EVOLUTIONS_END; i++) { + bool32 conditionsMet = FALSE; if (SanitizeSpeciesId(evolutions[i].targetSpecies) == SPECIES_NONE) continue; + // Check main primary evolution method switch (evolutions[i].method) { - case EVO_FRIENDSHIP: - if (friendship >= FRIENDSHIP_EVO_THRESHOLD) - targetSpecies = evolutions[i].targetSpecies; - break; - case EVO_FRIENDSHIP_DAY: - if (GetTimeOfDay() != TIME_NIGHT && friendship >= FRIENDSHIP_EVO_THRESHOLD) - targetSpecies = evolutions[i].targetSpecies; - break; - case EVO_LEVEL_DAY: - if (GetTimeOfDay() != TIME_NIGHT && evolutions[i].param <= level) - targetSpecies = evolutions[i].targetSpecies; - break; - case EVO_FRIENDSHIP_NIGHT: - if (GetTimeOfDay() == TIME_NIGHT && friendship >= FRIENDSHIP_EVO_THRESHOLD) - targetSpecies = evolutions[i].targetSpecies; - break; - case EVO_LEVEL_NIGHT: - if (GetTimeOfDay() == TIME_NIGHT && evolutions[i].param <= level) - targetSpecies = evolutions[i].targetSpecies; - break; - case EVO_ITEM_HOLD_NIGHT: - if (GetTimeOfDay() == TIME_NIGHT && heldItem == evolutions[i].param) - { - targetSpecies = evolutions[i].targetSpecies; - consumeItem = TRUE; - } - break; - case EVO_ITEM_HOLD_DAY: - if (GetTimeOfDay() != TIME_NIGHT && heldItem == evolutions[i].param) - { - targetSpecies = evolutions[i].targetSpecies; - consumeItem = TRUE; - } - break; - case EVO_LEVEL_DUSK: - if (GetTimeOfDay() == TIME_EVENING && evolutions[i].param <= level) - targetSpecies = evolutions[i].targetSpecies; - break; case EVO_LEVEL: if (evolutions[i].param <= level) - targetSpecies = evolutions[i].targetSpecies; + conditionsMet = TRUE; break; - case EVO_LEVEL_FEMALE: - if (evolutions[i].param <= level && GetMonGender(mon) == MON_FEMALE) - targetSpecies = evolutions[i].targetSpecies; - break; - case EVO_LEVEL_MALE: - if (evolutions[i].param <= level && GetMonGender(mon) == MON_MALE) - targetSpecies = evolutions[i].targetSpecies; - break; - case EVO_LEVEL_ATK_GT_DEF: - if (evolutions[i].param <= level) - if (GetMonData(mon, MON_DATA_ATK, 0) > GetMonData(mon, MON_DATA_DEF, 0)) - targetSpecies = evolutions[i].targetSpecies; - break; - case EVO_LEVEL_ATK_EQ_DEF: - if (evolutions[i].param <= level) - if (GetMonData(mon, MON_DATA_ATK, 0) == GetMonData(mon, MON_DATA_DEF, 0)) - targetSpecies = evolutions[i].targetSpecies; - break; - case EVO_LEVEL_ATK_LT_DEF: - if (evolutions[i].param <= level) - if (GetMonData(mon, MON_DATA_ATK, 0) < GetMonData(mon, MON_DATA_DEF, 0)) - targetSpecies = evolutions[i].targetSpecies; - break; - case EVO_LEVEL_SILCOON: - if (evolutions[i].param <= level && (upperPersonality % 10) <= 4) - targetSpecies = evolutions[i].targetSpecies; - break; - case EVO_LEVEL_CASCOON: - if (evolutions[i].param <= level && (upperPersonality % 10) > 4) - targetSpecies = evolutions[i].targetSpecies; - break; - case EVO_LEVEL_NINJASK: - if (evolutions[i].param <= level) - targetSpecies = evolutions[i].targetSpecies; - break; - case EVO_LEVEL_FAMILY_OF_FOUR: - if (mode == EVO_MODE_BATTLE_ONLY && evolutions[i].param <= level && (personality % 100) != 0) - targetSpecies = evolutions[i].targetSpecies; - break; - case EVO_LEVEL_FAMILY_OF_THREE: - if (mode == EVO_MODE_BATTLE_ONLY && evolutions[i].param <= level && (personality % 100) == 0) - targetSpecies = evolutions[i].targetSpecies; - break; - case EVO_BEAUTY: - if (evolutions[i].param <= beauty) - targetSpecies = evolutions[i].targetSpecies; - break; - case EVO_MOVE: - if (MonKnowsMove(mon, evolutions[i].param)) - targetSpecies = evolutions[i].targetSpecies; - break; - case EVO_MOVE_TWO_SEGMENT: - if (MonKnowsMove(mon, evolutions[i].param) && (personality % 100) != 0) - targetSpecies = evolutions[i].targetSpecies; - break; - case EVO_MOVE_THREE_SEGMENT: - if (MonKnowsMove(mon, evolutions[i].param) && (personality % 100) == 0) - targetSpecies = evolutions[i].targetSpecies; - break; - case EVO_FRIENDSHIP_MOVE_TYPE: - if (friendship >= FRIENDSHIP_EVO_THRESHOLD) - { - for (j = 0; j < MAX_MON_MOVES; j++) - { - if (GetMoveType(GetMonData(mon, MON_DATA_MOVE1 + j, NULL)) == evolutions[i].param) - { - targetSpecies = evolutions[i].targetSpecies; - break; - } - } - } - break; - case EVO_SPECIFIC_MON_IN_PARTY: - for (j = 0; j < PARTY_SIZE; j++) - { - if (GetMonData(&gPlayerParty[j], MON_DATA_SPECIES, NULL) == evolutions[i].param) - { - targetSpecies = evolutions[i].targetSpecies; - break; - } - } - break; - case EVO_LEVEL_DARK_TYPE_MON_IN_PARTY: - if (evolutions[i].param <= level) - { - for (j = 0; j < PARTY_SIZE; j++) - { - u16 currSpecies = GetMonData(&gPlayerParty[j], MON_DATA_SPECIES, NULL); - if (gSpeciesInfo[currSpecies].types[0] == TYPE_DARK - || gSpeciesInfo[currSpecies].types[1] == TYPE_DARK) - { - targetSpecies = evolutions[i].targetSpecies; - break; - } - } - } - break; - case EVO_LEVEL_RAIN: - j = GetCurrentWeather(); - if (evolutions[i].param <= level - && (j == WEATHER_RAIN || j == WEATHER_RAIN_THUNDERSTORM || j == WEATHER_DOWNPOUR)) - targetSpecies = evolutions[i].targetSpecies; - break; - case EVO_LEVEL_FOG: - j = GetCurrentWeather(); - if (evolutions[i].param <= level - && (j == WEATHER_FOG_HORIZONTAL || j == WEATHER_FOG_DIAGONAL)) - targetSpecies = evolutions[i].targetSpecies; - break; - case EVO_MAPSEC: - if (gMapHeader.regionMapSectionId == evolutions[i].param) - targetSpecies = evolutions[i].targetSpecies; - break; - case EVO_SPECIFIC_MAP: - currentMap = ((gSaveBlock1Ptr->location.mapGroup) << 8 | gSaveBlock1Ptr->location.mapNum); - if (currentMap == evolutions[i].param) - targetSpecies = evolutions[i].targetSpecies; - break; - case EVO_LEVEL_NATURE_AMPED: - if (evolutions[i].param <= level) - { - u8 nature = GetNature(mon); - switch (nature) - { - case NATURE_HARDY: - case NATURE_BRAVE: - case NATURE_ADAMANT: - case NATURE_NAUGHTY: - case NATURE_DOCILE: - case NATURE_IMPISH: - case NATURE_LAX: - case NATURE_HASTY: - case NATURE_JOLLY: - case NATURE_NAIVE: - case NATURE_RASH: - case NATURE_SASSY: - case NATURE_QUIRKY: - targetSpecies = evolutions[i].targetSpecies; - break; - } - } - break; - case EVO_LEVEL_NATURE_LOW_KEY: - if (evolutions[i].param <= level) - { - u8 nature = GetNature(mon); - switch (nature) - { - case NATURE_LONELY: - case NATURE_BOLD: - case NATURE_RELAXED: - case NATURE_TIMID: - case NATURE_SERIOUS: - case NATURE_MODEST: - case NATURE_MILD: - case NATURE_QUIET: - case NATURE_BASHFUL: - case NATURE_CALM: - case NATURE_GENTLE: - case NATURE_CAREFUL: - targetSpecies = evolutions[i].targetSpecies; - break; - } - } - break; - case EVO_ITEM_HOLD: - if (heldItem == evolutions[i].param) - { - targetSpecies = evolutions[i].targetSpecies; - consumeItem = TRUE; - } - break; - case EVO_USE_MOVE_TWENTY_TIMES: - if (evolutionTracker >= 20) - targetSpecies = evolutions[i].targetSpecies; - break; - case EVO_RECOIL_DAMAGE_MALE: - if (evolutionTracker >= evolutions[i].param && GetMonGender(mon) == MON_MALE) - targetSpecies = evolutions[i].targetSpecies; - break; - 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; + case EVO_LEVEL_BATTLE_ONLY: + if (mode == EVO_MODE_BATTLE_ONLY && evolutions[i].param <= level) + conditionsMet = TRUE; 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) + if (conditionsMet && DoesMonMeetAdditionalConditions(mon, evolutions[i].params, NULL, PARTY_SIZE, canStopEvo, evoState)) { - case EVO_ITEM_COUNT_999: - if (CheckBagHasItem(evolutions[i].param, 999)) - { - targetSpecies = evolutions[i].targetSpecies; - RemoveBagItem(evolutions[i].param, 999); - } + // All checks passed, so stop checking the rest of the evolutions. + // This is different from vanilla where the loop continues. + // If you have overlapping evolutions, put the ones you want to happen first on top of the list. + targetSpecies = evolutions[i].targetSpecies; break; } } @@ -4785,25 +4857,24 @@ u16 GetEvolutionTargetSpecies(struct Pokemon *mon, enum EvolutionMode mode, u16 case EVO_MODE_TRADE: for (i = 0; evolutions[i].method != EVOLUTIONS_END; i++) { + bool32 conditionsMet = FALSE; if (SanitizeSpeciesId(evolutions[i].targetSpecies) == SPECIES_NONE) continue; switch (evolutions[i].method) { case EVO_TRADE: + conditionsMet = TRUE; + break; + } + + if (conditionsMet && DoesMonMeetAdditionalConditions(mon, evolutions[i].params, tradePartner, PARTY_SIZE, canStopEvo, evoState)) + { + // All checks passed, so stop checking the rest of the evolutions. + // This is different from vanilla where the loop continues. + // If you have overlapping evolutions, put the ones you want to happen first on top of the list. targetSpecies = evolutions[i].targetSpecies; break; - case EVO_TRADE_ITEM: - if (evolutions[i].param == heldItem) - { - targetSpecies = evolutions[i].targetSpecies; - consumeItem = TRUE; - } - break; - case EVO_TRADE_SPECIFIC_MON: - if (evolutions[i].param == partnerSpecies && partnerHoldEffect != HOLD_EFFECT_PREVENT_EVOLVE) - targetSpecies = evolutions[i].targetSpecies; - break; } } break; @@ -4811,6 +4882,7 @@ u16 GetEvolutionTargetSpecies(struct Pokemon *mon, enum EvolutionMode mode, u16 case EVO_MODE_ITEM_CHECK: for (i = 0; evolutions[i].method != EVOLUTIONS_END; i++) { + bool32 conditionMet = FALSE; if (SanitizeSpeciesId(evolutions[i].targetSpecies) == SPECIES_NONE) continue; @@ -4818,23 +4890,18 @@ u16 GetEvolutionTargetSpecies(struct Pokemon *mon, enum EvolutionMode mode, u16 { case EVO_ITEM: if (evolutions[i].param == evolutionItem) - targetSpecies = evolutions[i].targetSpecies; + conditionMet = TRUE; break; - case EVO_ITEM_FEMALE: - if (GetMonGender(mon) == MON_FEMALE && evolutions[i].param == evolutionItem) - targetSpecies = evolutions[i].targetSpecies; - break; - case EVO_ITEM_MALE: - if (GetMonGender(mon) == MON_MALE && evolutions[i].param == evolutionItem) - targetSpecies = evolutions[i].targetSpecies; - break; - case EVO_ITEM_NIGHT: - if (GetTimeOfDay() == TIME_NIGHT && evolutions[i].param == evolutionItem) - targetSpecies = evolutions[i].targetSpecies; - break; - case EVO_ITEM_DAY: - if (GetTimeOfDay() != TIME_NIGHT && evolutions[i].param == evolutionItem) - targetSpecies = evolutions[i].targetSpecies; + } + + if (conditionMet && DoesMonMeetAdditionalConditions(mon, evolutions[i].params, NULL, PARTY_SIZE, canStopEvo, evoState)) + { + // All checks passed, so stop checking the rest of the evolutions. + // This is different from vanilla where the loop continues. + // If you have overlapping evolutions, put the ones you want to happen first on top of the list. + targetSpecies = evolutions[i].targetSpecies; + if (canStopEvo != NULL) + *canStopEvo = FALSE; break; } } @@ -4843,14 +4910,23 @@ u16 GetEvolutionTargetSpecies(struct Pokemon *mon, enum EvolutionMode mode, u16 case EVO_MODE_BATTLE_SPECIAL: for (i = 0; evolutions[i].method != EVOLUTIONS_END; i++) { + bool32 conditionsMet = FALSE; if (SanitizeSpeciesId(evolutions[i].targetSpecies) == SPECIES_NONE) continue; switch (evolutions[i].method) { - case EVO_CRITICAL_HITS: - if (gPartyCriticalHits[evolutionItem] >= evolutions[i].param) - targetSpecies = evolutions[i].targetSpecies; + case EVO_BATTLE_END: + conditionsMet = TRUE; + break; + } + + if (conditionsMet && DoesMonMeetAdditionalConditions(mon, evolutions[i].params, NULL, evolutionItem, canStopEvo, evoState)) + { + // All checks passed, so stop checking the rest of the evolutions. + // This is different from vanilla where the loop continues. + // If you have overlapping evolutions, put the ones you want to happen first on top of the list. + targetSpecies = evolutions[i].targetSpecies; break; } } @@ -4859,34 +4935,33 @@ u16 GetEvolutionTargetSpecies(struct Pokemon *mon, enum EvolutionMode mode, u16 case EVO_MODE_OVERWORLD_SPECIAL: for (i = 0; evolutions[i].method != EVOLUTIONS_END; i++) { + bool32 conditionsMet = FALSE; if (SanitizeSpeciesId(evolutions[i].targetSpecies) == SPECIES_NONE) continue; switch (evolutions[i].method) { - case EVO_SCRIPT_TRIGGER_DMG: - { - u16 currentHp = GetMonData(mon, MON_DATA_HP, NULL); - if (evolutionItem == EVO_SCRIPT_TRIGGER_DMG - && currentHp != 0 - && (GetMonData(mon, MON_DATA_MAX_HP, NULL) - currentHp >= evolutions[i].param)) - targetSpecies = evolutions[i].targetSpecies; + case EVO_SCRIPT_TRIGGER: + case EVO_SPIN: + if (gSpecialVar_0x8000 == evolutions[i].param) + conditionsMet = TRUE; + break; } - case EVO_DARK_SCROLL: - if (evolutionItem == EVO_DARK_SCROLL) - targetSpecies = evolutions[i].targetSpecies; - break; - case EVO_WATER_SCROLL: - if (evolutionItem == EVO_WATER_SCROLL) - targetSpecies = evolutions[i].targetSpecies; + + if (conditionsMet && DoesMonMeetAdditionalConditions(mon, evolutions[i].params, NULL, PARTY_SIZE, canStopEvo, evoState)) + { + // All checks passed, so stop checking the rest of the evolutions. + // This is different from vanilla where the loop continues. + // If you have overlapping evolutions, put the ones you want to happen first on top of the list. + targetSpecies = evolutions[i].targetSpecies; break; } } break; } - // Pikachu, Meowth, and Eevee cannot evolve if they have the + // Pikachu, Meowth, Eevee and Duraludon cannot evolve if they have the // Gigantamax Factor. We assume that is because their evolutions // do not have a Gigantamax Form. if (GetMonData(mon, MON_DATA_GIGANTAMAX_FACTOR, NULL) @@ -4896,12 +4971,6 @@ u16 GetEvolutionTargetSpecies(struct Pokemon *mon, enum EvolutionMode mode, u16 return SPECIES_NONE; } - if (consumeItem) - { - heldItem = ITEM_NONE; - SetMonData(mon, MON_DATA_HELD_ITEM, &heldItem); - } - return targetSpecies; } @@ -5859,7 +5928,7 @@ static void Task_PlayMapChosenOrBattleBGM(u8 taskId) #undef tSongId -const u32 *GetMonFrontSpritePal(struct Pokemon *mon) +const u16 *GetMonFrontSpritePal(struct Pokemon *mon) { u16 species = GetMonData(mon, MON_DATA_SPECIES_OR_EGG, NULL); bool32 isShiny = GetMonData(mon, MON_DATA_IS_SHINY, NULL); @@ -5867,12 +5936,12 @@ const u32 *GetMonFrontSpritePal(struct Pokemon *mon) return GetMonSpritePalFromSpeciesAndPersonality(species, isShiny, personality); } -const u32 *GetMonSpritePalFromSpeciesAndPersonality(u16 species, bool32 isShiny, u32 personality) +const u16 *GetMonSpritePalFromSpeciesAndPersonality(u16 species, bool32 isShiny, u32 personality) { return GetMonSpritePalFromSpecies(species, isShiny, IsPersonalityFemale(species, personality)); } -const u32 *GetMonSpritePalFromSpecies(u16 species, bool32 isShiny, bool32 isFemale) +const u16 *GetMonSpritePalFromSpecies(u16 species, bool32 isShiny, bool32 isFemale) { species = SanitizeSpeciesId(species); @@ -5991,7 +6060,7 @@ void SetMonPreventsSwitchingString(void) gBattleTextBuff1[2] = gBattleStruct->battlerPreventingSwitchout; gBattleTextBuff1[4] = B_BUFF_EOS; - if (GetBattlerSide(gBattleStruct->battlerPreventingSwitchout) == B_SIDE_PLAYER) + if (IsOnPlayerSide(gBattleStruct->battlerPreventingSwitchout)) gBattleTextBuff1[3] = GetPartyIdFromBattlePartyId(gBattlerPartyIndexes[gBattleStruct->battlerPreventingSwitchout]); else gBattleTextBuff1[3] = gBattlerPartyIndexes[gBattleStruct->battlerPreventingSwitchout]; @@ -6310,7 +6379,10 @@ void HandleSetPokedexFlag(u16 nationalNum, u8 caseId, u32 personality) bool8 HasTwoFramesAnimation(u16 species) { - return P_TWO_FRAME_FRONT_SPRITES && species != SPECIES_UNOWN && !gTestRunnerHeadless; + return P_TWO_FRAME_FRONT_SPRITES + && gSpeciesInfo[species].frontAnimFrames != sAnims_SingleFramePlaceHolder + && species != SPECIES_UNOWN + && !gTestRunnerHeadless; } static bool8 ShouldSkipFriendshipChange(void) @@ -6528,13 +6600,13 @@ u8 GetFormIdFromFormSpeciesId(u16 formSpeciesId) } // Returns the current species if no form change is possible -u32 GetFormChangeTargetSpecies(struct Pokemon *mon, u16 method, u32 arg) +u32 GetFormChangeTargetSpecies(struct Pokemon *mon, enum FormChanges method, u32 arg) { return GetFormChangeTargetSpeciesBoxMon(&mon->box, method, arg); } // Returns the current species if no form change is possible -u32 GetFormChangeTargetSpeciesBoxMon(struct BoxPokemon *boxMon, u16 method, u32 arg) +u32 GetFormChangeTargetSpeciesBoxMon(struct BoxPokemon *boxMon, enum FormChanges method, u32 arg) { u32 i; u32 species = GetBoxMonData(boxMon, MON_DATA_SPECIES, NULL); @@ -6641,6 +6713,8 @@ u32 GetFormChangeTargetSpeciesBoxMon(struct BoxPokemon *boxMon, u16 method, u32 break; } break; + default: + break; } } } @@ -6665,7 +6739,7 @@ void TrySetDayLimitToFormChange(struct Pokemon *mon) } } -bool32 DoesSpeciesHaveFormChangeMethod(u16 species, u16 method) +bool32 DoesSpeciesHaveFormChangeMethod(u16 species, enum FormChanges method) { u32 i; const struct FormChange *formChanges = GetSpeciesFormChanges(species); @@ -6732,20 +6806,22 @@ void RemoveIVIndexFromList(u8 *ivs, u8 selectedIv) void TrySpecialOverworldEvo(void) { u8 i; - u8 evoMethod = gSpecialVar_0x8000; - u16 canStopEvo = gSpecialVar_0x8001; + bool32 canStopEvo = gSpecialVar_0x8001; u16 tryMultiple = gSpecialVar_0x8002; for (i = 0; i < PARTY_SIZE; i++) { - u16 targetSpecies = GetEvolutionTargetSpecies(&gPlayerParty[i], EVO_MODE_OVERWORLD_SPECIAL, evoMethod, SPECIES_NONE); + u32 targetSpecies = GetEvolutionTargetSpecies(&gPlayerParty[i], EVO_MODE_OVERWORLD_SPECIAL, 0, NULL, &canStopEvo, CHECK_EVO); + if (targetSpecies != SPECIES_NONE && !(sTriedEvolving & (1u << i))) { + GetEvolutionTargetSpecies(&gPlayerParty[i], EVO_MODE_OVERWORLD_SPECIAL, 0, NULL, &canStopEvo, DO_EVO); sTriedEvolving |= 1u << i; if(gMain.callback2 == TrySpecialOverworldEvo) // This fixes small graphics glitches. EvolutionScene(&gPlayerParty[i], targetSpecies, canStopEvo, i); else BeginEvolutionScene(&gPlayerParty[i], targetSpecies, canStopEvo, i); + if (tryMultiple) gCB2_AfterEvolution = TrySpecialOverworldEvo; else @@ -6772,7 +6848,7 @@ bool32 SpeciesHasGenderDifferences(u16 species) return FALSE; } -bool32 TryFormChange(u32 monId, u32 side, u16 method) +bool32 TryFormChange(u32 monId, u32 side, enum FormChanges method) { struct Pokemon *party = (side == B_SIDE_PLAYER) ? gPlayerParty : gEnemyParty; @@ -6810,7 +6886,7 @@ bool32 IsSpeciesEnabled(u16 species) return gSpeciesInfo[species].baseHP > 0 || species == SPECIES_EGG; } -void TryToSetBattleFormChangeMoves(struct Pokemon *mon, u16 method) +void TryToSetBattleFormChangeMoves(struct Pokemon *mon, enum FormChanges method) { int i, j; u16 species = GetMonData(mon, MON_DATA_SPECIES, NULL); diff --git a/src/pokemon_animation.c b/src/pokemon_animation.c index ae92091537..41bc400105 100644 --- a/src/pokemon_animation.c +++ b/src/pokemon_animation.c @@ -551,7 +551,7 @@ void LaunchAnimationTaskForBackSprite(struct Sprite *sprite, u8 backAnimSet) gTasks[taskId].tPtrLo = (u32)(sprite); battler = sprite->data[0]; - nature = GetNature(&gPlayerParty[gBattlerPartyIndexes[battler]]); + nature = GetNature(GetBattlerMon(battler)); // * 3 below because each back anim has 3 variants depending on nature animId = 3 * backAnimSet + gNaturesInfo[nature].backAnim; diff --git a/src/pokemon_jump.c b/src/pokemon_jump.c index e6154a392e..e186e07b96 100755 --- a/src/pokemon_jump.c +++ b/src/pokemon_jump.c @@ -57,12 +57,6 @@ enum { PACKET_MEMBER_STATE, }; -enum { - JUMP_TYPE_NORMAL, - JUMP_TYPE_FAST, - JUMP_TYPE_SLOW, -}; - enum { FUNC_GAME_INTRO, FUNC_WAIT_ROUND, @@ -274,17 +268,11 @@ struct PokemonJump struct PokemonJump_Player *player; }; -struct PokemonJumpMons -{ - u16 species; - u16 jumpType; -}; - static void InitGame(struct PokemonJump *); static void ResetForNewGame(struct PokemonJump *); static void InitPlayerAndJumpTypes(void); static void ResetPlayersForNewGame(void); -static s16 GetPokemonJumpSpeciesIdx(u16 species); +static s16 GetSpeciesPokemonJumpType(u16 species); static void InitJumpMonInfo(struct PokemonJump_MonInfo *, struct Pokemon *); static void CB2_PokemonJump(void); static void Task_StartPokemonJump(u8); @@ -420,390 +408,6 @@ static inline void TruncateToFirstWordOnly(u8 *); EWRAM_DATA static struct PokemonJump *sPokemonJump = NULL; EWRAM_DATA static struct PokemonJumpGfx *sPokemonJumpGfx = NULL; -/* - According to the clerk, the Pokémon allowed in - Pokémon Jump are all <= 28 inches, and do not - only swim, burrow, or fly. -*/ -static const struct PokemonJumpMons sPokeJumpMons[] = -{ - { .species = SPECIES_BULBASAUR, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_CHARMANDER, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_SQUIRTLE, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_CATERPIE, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_METAPOD, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_WEEDLE, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_KAKUNA, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_RATTATA, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_RATTATA_ALOLA, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_RATICATE, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_RATICATE_ALOLA, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_PIKACHU, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_PIKACHU_COSPLAY, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_PIKACHU_ROCK_STAR, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_PIKACHU_BELLE, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_PIKACHU_POP_STAR, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_PIKACHU_PHD, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_PIKACHU_LIBRE, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_PIKACHU_ORIGINAL, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_PIKACHU_HOENN, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_PIKACHU_SINNOH, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_PIKACHU_UNOVA, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_PIKACHU_KALOS, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_PIKACHU_ALOLA, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_PIKACHU_PARTNER, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_PIKACHU_WORLD, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_PIKACHU_STARTER, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_SANDSHREW, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_SANDSHREW_ALOLA, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_NIDORAN_F, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_NIDORAN_M, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_CLEFAIRY, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_VULPIX, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_VULPIX_ALOLA, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_JIGGLYPUFF, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ODDISH, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_PARAS, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_MEOWTH, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_MEOWTH_ALOLA, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_MEOWTH_GALAR, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_PSYDUCK, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_MANKEY, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_GROWLITHE, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_POLIWAG, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_BELLSPROUT, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_SHELLDER, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_KRABBY, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_EXEGGCUTE, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_CUBONE, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_DITTO, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_EEVEE, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_EEVEE_STARTER, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_OMANYTE, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_KABUTO, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_CHIKORITA, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_CYNDAQUIL, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_TOTODILE, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_SPINARAK, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_PICHU, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_PICHU_SPIKY_EARED, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_CLEFFA, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_IGGLYBUFF, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_TOGEPI, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_MAREEP, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_BELLOSSOM, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_MARILL, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_SUNKERN, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_WOOPER, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_WOOPER_PALDEA, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_PINECO, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_SNUBBULL, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_SHUCKLE, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_TEDDIURSA, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_SLUGMA, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_SWINUB, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_HOUNDOUR, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_PHANPY, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_PORYGON2, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_TYROGUE, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_SMOOCHUM, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ELEKID, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_MAGBY, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_LARVITAR, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_TREECKO, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_TORCHIC, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_MUDKIP, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_MARSHTOMP, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_POOCHYENA, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_ZIGZAGOON, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_ZIGZAGOON_GALAR, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_LINOONE, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_LINOONE_GALAR, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_WURMPLE, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_SILCOON, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_CASCOON, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_LOTAD, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_SEEDOT, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_RALTS, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_KIRLIA, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_SURSKIT, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_SHROOMISH, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_NINCADA, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_WHISMUR, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_AZURILL, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_SKITTY, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_SABLEYE, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_SABLEYE_MEGA, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_MAWILE, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_ARON, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_MEDITITE, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ELECTRIKE, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_PLUSLE, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_MINUN, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_VOLBEAT, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_ILLUMISE, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_ROSELIA, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_GULPIN, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_NUMEL, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_TORKOAL, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_SPOINK, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_TRAPINCH, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_CACNEA, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ANORITH, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_WYNAUT, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_SNORUNT, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_CLAMPERL, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_BAGON, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_TURTWIG, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_CHIMCHAR, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_PIPLUP, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_BIDOOF, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_KRICKETOT, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_SHINX, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_BUDEW, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_SHIELDON, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_PACHIRISU, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_BUIZEL, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_CHERUBI, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_CHERRIM_OVERCAST, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_CHERRIM_SUNSHINE, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_SHELLOS_WEST, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_SHELLOS_EAST, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_BUNEARY, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_GLAMEOW, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_STUNKY, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_BONSLY, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_MIME_JR, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_HAPPINY, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_GIBLE, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_MUNCHLAX, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_RIOLU, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_CROAGUNK, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_SHAYMIN_LAND, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_SNIVY, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_TEPIG, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_OSHAWOTT, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_PATRAT, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_LILLIPUP, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_PURRLOIN, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_PANSAGE, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_PANSEAR, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_PANPOUR, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_ROGGENROLA, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_DRILBUR, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_EXCADRILL, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_TIMBURR, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_SEWADDLE, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_SWADLOON, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_VENIPEDE, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_PETILIL, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_SANDILE, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_DARUMAKA, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_DARUMAKA_GALAR, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_DWEBBLE, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_SCRAGGY, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ARCHEN, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_TRUBBISH, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_ZORUA, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_MINCCINO, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_CINCCINO, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_GOTHITA, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_GOTHORITA, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_DEERLING_SPRING, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_DEERLING_SUMMER, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_DEERLING_AUTUMN, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_DEERLING_WINTER, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_KARRABLAST, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_FOONGUS, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_AMOONGUSS, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_JOLTIK, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_LITWICK, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_AXEW, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_CUBCHOO, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_SHELMET, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_STUNFISK, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_STUNFISK_GALAR, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_PAWNIARD, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_DURANT, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_CHESPIN, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_QUILLADIN, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_FENNEKIN, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_FROAKIE, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_FROGADIER, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_BUNNELBY, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_SCATTERBUG_POLAR, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_SCATTERBUG_TUNDRA, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_SCATTERBUG_CONTINENTAL, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_SCATTERBUG_GARDEN, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_SCATTERBUG_ELEGANT, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_SCATTERBUG_MEADOW, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_SCATTERBUG_MODERN, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_SCATTERBUG_MARINE, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_SCATTERBUG_ARCHIPELAGO, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_SCATTERBUG_HIGH_PLAINS, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_SCATTERBUG_SANDSTORM, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_SCATTERBUG_RIVER, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_SCATTERBUG_MONSOON, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_SCATTERBUG_SAVANNA, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_SCATTERBUG_SUN, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_SCATTERBUG_OCEAN, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_SCATTERBUG_JUNGLE, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_SCATTERBUG_FANCY, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_SCATTERBUG_POKEBALL, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_SPEWPA_POLAR, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_SPEWPA_TUNDRA, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_SPEWPA_CONTINENTAL, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_SPEWPA_GARDEN, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_SPEWPA_ELEGANT, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_SPEWPA_MEADOW, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_SPEWPA_MODERN, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_SPEWPA_MARINE, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_SPEWPA_ARCHIPELAGO, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_SPEWPA_HIGH_PLAINS, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_SPEWPA_SANDSTORM, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_SPEWPA_RIVER, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_SPEWPA_MONSOON, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_SPEWPA_SAVANNA, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_SPEWPA_SUN, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_SPEWPA_OCEAN, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_SPEWPA_JUNGLE, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_SPEWPA_FANCY, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_SPEWPA_POKEBALL, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_LITLEO, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_PANCHAM, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_ESPURR, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_MEOWSTIC_M, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_MEOWSTIC_F, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_BINACLE, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_CLAUNCHER, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_HELIOPTILE, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_DEDENNE, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_GOOMY, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ROWLET, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_DARTRIX, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_LITTEN, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_TORRACAT, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_POPPLIO, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_BRIONNE, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_YUNGOOS, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_GUMSHOOS, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_GRUBBIN, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_CHARJABUG, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_CRABRAWLER, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ROCKRUFF, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_ROCKRUFF_OWN_TEMPO, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_MAREANIE, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_DEWPIDER, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_FOMANTIS, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_MORELULL, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_SALANDIT, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_STUFFUL, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_BOUNSWEET, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_STEENEE, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_WIMPOD, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_PYUKUMUKU, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_KOMALA, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_TOGEDEMARU, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_MIMIKYU_DISGUISED, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_MIMIKYU_BUSTED, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_JANGMO_O, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_MARSHADOW, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_MELTAN, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_GROOKEY, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_THWACKEY, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_SCORBUNNY, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_RABOOT, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_SOBBLE, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_DRIZZILE, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_SKWOVET, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_SKWOVET, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_BLIPBUG, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_DOTTLER, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_NICKIT, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_GOSSIFLEUR, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ELDEGOSS, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_WOOLOO, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_CHEWTLE, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_YAMPER, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_ROLYCOLY, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_APPLIN, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_APPLETUN, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_TOXEL, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_SIZZLIPEDE, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_CLOBBOPUS, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_HATENNA, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_HATTREM, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_IMPIDIMP, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_ALCREMIE_STRAWBERRY_VANILLA_CREAM, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ALCREMIE_BERRY_VANILLA_CREAM, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ALCREMIE_BERRY_RUBY_CREAM, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ALCREMIE_BERRY_MATCHA_CREAM, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ALCREMIE_BERRY_MINT_CREAM, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ALCREMIE_BERRY_LEMON_CREAM, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ALCREMIE_BERRY_SALTED_CREAM, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ALCREMIE_BERRY_RUBY_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ALCREMIE_BERRY_CARAMEL_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ALCREMIE_BERRY_RAINBOW_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ALCREMIE_LOVE_VANILLA_CREAM, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ALCREMIE_LOVE_RUBY_CREAM, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ALCREMIE_LOVE_MATCHA_CREAM, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ALCREMIE_LOVE_MINT_CREAM, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ALCREMIE_LOVE_LEMON_CREAM, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ALCREMIE_LOVE_SALTED_CREAM, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ALCREMIE_LOVE_RUBY_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ALCREMIE_LOVE_CARAMEL_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ALCREMIE_LOVE_RAINBOW_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ALCREMIE_STAR_VANILLA_CREAM, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ALCREMIE_STAR_RUBY_CREAM, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ALCREMIE_STAR_MATCHA_CREAM, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ALCREMIE_STAR_MINT_CREAM, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ALCREMIE_STAR_LEMON_CREAM, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ALCREMIE_STAR_SALTED_CREAM, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ALCREMIE_STAR_RUBY_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ALCREMIE_STAR_CARAMEL_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ALCREMIE_STAR_RAINBOW_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ALCREMIE_CLOVER_VANILLA_CREAM, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ALCREMIE_CLOVER_RUBY_CREAM, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ALCREMIE_CLOVER_MATCHA_CREAM, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ALCREMIE_CLOVER_MINT_CREAM, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ALCREMIE_CLOVER_LEMON_CREAM, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ALCREMIE_CLOVER_SALTED_CREAM, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ALCREMIE_CLOVER_RUBY_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ALCREMIE_CLOVER_CARAMEL_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ALCREMIE_CLOVER_RAINBOW_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ALCREMIE_FLOWER_VANILLA_CREAM, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ALCREMIE_FLOWER_RUBY_CREAM, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ALCREMIE_FLOWER_MATCHA_CREAM, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ALCREMIE_FLOWER_MINT_CREAM, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ALCREMIE_FLOWER_LEMON_CREAM, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ALCREMIE_FLOWER_SALTED_CREAM, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ALCREMIE_FLOWER_RUBY_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ALCREMIE_FLOWER_CARAMEL_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ALCREMIE_FLOWER_RAINBOW_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ALCREMIE_RIBBON_VANILLA_CREAM, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ALCREMIE_RIBBON_RUBY_CREAM, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ALCREMIE_RIBBON_MATCHA_CREAM, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ALCREMIE_RIBBON_MINT_CREAM, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ALCREMIE_RIBBON_LEMON_CREAM, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ALCREMIE_RIBBON_SALTED_CREAM, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ALCREMIE_RIBBON_RUBY_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ALCREMIE_RIBBON_CARAMEL_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ALCREMIE_RIBBON_RAINBOW_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_PINCURCHIN, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_SNOM, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_MORPEKO_FULL_BELLY, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_MORPEKO_HANGRY, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_KUBFU, .jumpType = JUMP_TYPE_FAST, }, -}; - void StartPokemonJump(u16 partyId, MainCallback exitCallback) { u8 taskId; @@ -890,12 +494,11 @@ static void ResetForNewGame(struct PokemonJump *jump) static void InitPlayerAndJumpTypes(void) { - int i, index; + int i; for (i = 0; i < MAX_RFU_PLAYERS; i++) { - index = GetPokemonJumpSpeciesIdx(sPokemonJump->monInfo[i].species); - sPokemonJump->players[i].monJumpType = sPokeJumpMons[index].jumpType; + sPokemonJump->players[i].monJumpType = GetSpeciesPokemonJumpType(sPokemonJump->monInfo[i].species); } sPokemonJump->player = &sPokemonJump->players[sPokemonJump->multiplayerId]; @@ -917,16 +520,9 @@ static void ResetPlayersForNewGame(void) } } -static s16 GetPokemonJumpSpeciesIdx(u16 species) +static s16 GetSpeciesPokemonJumpType(u16 species) { - u32 i; - for (i = 0; i < ARRAY_COUNT(sPokeJumpMons); i++) - { - if (sPokeJumpMons[i].species == species) - return i; - } - - return -1; // species isnt allowed + return gSpeciesInfo[SanitizeSpeciesId(species)].pokemonJumpType; } static void InitJumpMonInfo(struct PokemonJump_MonInfo *monInfo, struct Pokemon *mon) @@ -2237,24 +1833,24 @@ static void HandleMonState(void) static const s8 sJumpOffsets[][48] = { - [JUMP_TYPE_NORMAL] = { -3, -6, -8, -10, -13, -15, -17, -19, - -21, -23, -25, -27, -28, -29, - JUMP_PEAK, JUMP_PEAK, JUMP_PEAK, - -28, -27, -26, -25, -23, -22, -20, -18, - -17, -15, -13, -11, -8, -6, -4, -1}, + [PKMN_JUMP_TYPE_NORMAL - 1] = { -3, -6, -8, -10, -13, -15, -17, -19, + -21, -23, -25, -27, -28, -29, + JUMP_PEAK, JUMP_PEAK, JUMP_PEAK, + -28, -27, -26, -25, -23, -22, -20, -18, + -17, -15, -13, -11, -8, -6, -4, -1}, - [JUMP_TYPE_FAST] = { -3, -6, -9, -11, -14, -16, -18, -20, - -22, -24, -26, -28, -29, - JUMP_PEAK, JUMP_PEAK, - -28, -26, -24, -22, -20, -18, -16, -14, - -11, -9, -6, -4, -1}, + [PKMN_JUMP_TYPE_FAST - 1] = { -3, -6, -9, -11, -14, -16, -18, -20, + -22, -24, -26, -28, -29, + JUMP_PEAK, JUMP_PEAK, + -28, -26, -24, -22, -20, -18, -16, -14, + -11, -9, -6, -4, -1}, - [JUMP_TYPE_SLOW] = { -3, -6, -9, -11, -13, -15, -17, -19, - -21, -23, -25, -27, -28, -29, - JUMP_PEAK, JUMP_PEAK, JUMP_PEAK, JUMP_PEAK, - -29, -29, -28, -28, -27, -27, -26, -25, - -24, -22, -20, -18, -16, -14, -12, -11, - -9, -6, -4, -1}, + [PKMN_JUMP_TYPE_SLOW - 1] = { -3, -6, -9, -11, -13, -15, -17, -19, + -21, -23, -25, -27, -28, -29, + JUMP_PEAK, JUMP_PEAK, JUMP_PEAK, JUMP_PEAK, + -29, -29, -28, -28, -27, -27, -26, -25, + -24, -22, -20, -18, -16, -14, -12, -11, + -9, -6, -4, -1}, }; static void UpdateJump(int multiplayerId) @@ -2289,7 +1885,7 @@ static void UpdateJump(int multiplayerId) jumpOffsetIdx -= 4; if (jumpOffsetIdx < (int)ARRAY_COUNT(sJumpOffsets[0])) - jumpOffset = sJumpOffsets[player->monJumpType][jumpOffsetIdx]; + jumpOffset = sJumpOffsets[player->monJumpType - 1][jumpOffsetIdx]; else jumpOffset = 0; @@ -2620,7 +2216,7 @@ static u8 *GetPokeJumpPlayerName(u8 multiplayerId) bool32 IsSpeciesAllowedInPokemonJump(u16 species) { - return GetPokemonJumpSpeciesIdx(species) > -1; + return GetSpeciesPokemonJumpType(species) != PKMN_JUMP_TYPE_NONE; } void IsPokemonJumpSpeciesInParty(void) @@ -2984,7 +2580,7 @@ static void CreateJumpMonSprite(struct PokemonJumpGfx *jumpGfx, struct PokemonJu { struct SpriteTemplate spriteTemplate; struct SpriteSheet spriteSheet; - struct CompressedSpritePalette spritePalette; + struct SpritePalette spritePalette; u8 *buffer; u8 *unusedBuffer; u8 subpriority; @@ -3012,7 +2608,7 @@ static void CreateJumpMonSprite(struct PokemonJumpGfx *jumpGfx, struct PokemonJu spritePalette.data = GetMonSpritePalFromSpeciesAndPersonality(monInfo->species, monInfo->isShiny, monInfo->personality); spritePalette.tag = multiplayerId; - LoadCompressedSpritePalette(&spritePalette); + LoadSpritePalette(&spritePalette); Free(buffer); Free(unusedBuffer); diff --git a/src/pokemon_sprite_visualizer.c b/src/pokemon_sprite_visualizer.c index 5ccf53dc51..e2264dfc64 100644 --- a/src/pokemon_sprite_visualizer.c +++ b/src/pokemon_sprite_visualizer.c @@ -741,13 +741,11 @@ static void UpdateBattlerValue(struct PokemonSpriteVisualizer *data) static void BattleLoadOpponentMonSpriteGfxCustom(u16 species, bool8 isFemale, bool8 isShiny, u8 battlerId) { - const u32 *lzPaletteData = GetMonSpritePalFromSpecies(species, isShiny, isFemale); + const u16 *palette = GetMonSpritePalFromSpecies(species, isShiny, isFemale); u16 paletteOffset = OBJ_PLTT_ID(battlerId); - void *buffer = malloc_and_decompress(lzPaletteData, NULL); - LoadPalette(buffer, paletteOffset, PLTT_SIZE_4BPP); - LoadPalette(buffer, BG_PLTT_ID(8) + BG_PLTT_ID(battlerId), PLTT_SIZE_4BPP); - Free(buffer); + LoadPalette(palette, paletteOffset, PLTT_SIZE_4BPP); + LoadPalette(palette, BG_PLTT_ID(8) + BG_PLTT_ID(battlerId), PLTT_SIZE_4BPP); } static void SetConstSpriteValues(struct PokemonSpriteVisualizer *data) @@ -931,72 +929,72 @@ static void LoadBattleBg(u8 battleBgType, u8 battleEnvironment) case MAP_BATTLE_SCENE_NORMAL: LZDecompressVram(sBattleEnvironmentTable[battleEnvironment].tileset, (void*)(BG_CHAR_ADDR(2))); LZDecompressVram(sBattleEnvironmentTable[battleEnvironment].tilemap, (void*)(BG_SCREEN_ADDR(26))); - LoadCompressedPalette(sBattleEnvironmentTable[battleEnvironment].palette, 0x20, 0x60); + LoadPalette(sBattleEnvironmentTable[battleEnvironment].palette, 0x20, 0x60); break; case MAP_BATTLE_SCENE_GYM: LZDecompressVram(gBattleEnvironmentTiles_Building, (void*)(BG_CHAR_ADDR(2))); LZDecompressVram(gBattleEnvironmentTilemap_Building, (void*)(BG_SCREEN_ADDR(26))); - LoadCompressedPalette(gBattleEnvironmentPalette_BuildingGym, 0x20, 0x60); + LoadPalette(gBattleEnvironmentPalette_BuildingGym, 0x20, 0x60); break; case MAP_BATTLE_SCENE_MAGMA: LZDecompressVram(gBattleEnvironmentTiles_Stadium, (void*)(BG_CHAR_ADDR(2))); LZDecompressVram(gBattleEnvironmentTilemap_Stadium, (void*)(BG_SCREEN_ADDR(26))); - LoadCompressedPalette(gBattleEnvironmentPalette_StadiumMagma, 0x20, 0x60); + LoadPalette(gBattleEnvironmentPalette_StadiumMagma, 0x20, 0x60); break; case MAP_BATTLE_SCENE_AQUA: LZDecompressVram(gBattleEnvironmentTiles_Stadium, (void*)(BG_CHAR_ADDR(2))); LZDecompressVram(gBattleEnvironmentTilemap_Stadium, (void*)(BG_SCREEN_ADDR(26))); - LoadCompressedPalette(gBattleEnvironmentPalette_StadiumAqua, 0x20, 0x60); + LoadPalette(gBattleEnvironmentPalette_StadiumAqua, 0x20, 0x60); break; case MAP_BATTLE_SCENE_SIDNEY: LZDecompressVram(gBattleEnvironmentTiles_Stadium, (void*)(BG_CHAR_ADDR(2))); LZDecompressVram(gBattleEnvironmentTilemap_Stadium, (void*)(BG_SCREEN_ADDR(26))); - LoadCompressedPalette(gBattleEnvironmentPalette_StadiumSidney, 0x20, 0x60); + LoadPalette(gBattleEnvironmentPalette_StadiumSidney, 0x20, 0x60); break; case MAP_BATTLE_SCENE_PHOEBE: LZDecompressVram(gBattleEnvironmentTiles_Stadium, (void*)(BG_CHAR_ADDR(2))); LZDecompressVram(gBattleEnvironmentTilemap_Stadium, (void*)(BG_SCREEN_ADDR(26))); - LoadCompressedPalette(gBattleEnvironmentPalette_StadiumPhoebe, 0x20, 0x60); + LoadPalette(gBattleEnvironmentPalette_StadiumPhoebe, 0x20, 0x60); break; case MAP_BATTLE_SCENE_GLACIA: LZDecompressVram(gBattleEnvironmentTiles_Stadium, (void*)(BG_CHAR_ADDR(2))); LZDecompressVram(gBattleEnvironmentTilemap_Stadium, (void*)(BG_SCREEN_ADDR(26))); - LoadCompressedPalette(gBattleEnvironmentPalette_StadiumGlacia, 0x20, 0x60); + LoadPalette(gBattleEnvironmentPalette_StadiumGlacia, 0x20, 0x60); break; case MAP_BATTLE_SCENE_DRAKE: LZDecompressVram(gBattleEnvironmentTiles_Stadium, (void*)(BG_CHAR_ADDR(2))); LZDecompressVram(gBattleEnvironmentTilemap_Stadium, (void*)(BG_SCREEN_ADDR(26))); - LoadCompressedPalette(gBattleEnvironmentPalette_StadiumDrake, 0x20, 0x60); + LoadPalette(gBattleEnvironmentPalette_StadiumDrake, 0x20, 0x60); break; case MAP_BATTLE_SCENE_FRONTIER: LZDecompressVram(gBattleEnvironmentTiles_Building, (void*)(BG_CHAR_ADDR(2))); LZDecompressVram(gBattleEnvironmentTilemap_Building, (void*)(BG_SCREEN_ADDR(26))); - LoadCompressedPalette(gBattleEnvironmentPalette_Frontier, 0x20, 0x60); + LoadPalette(gBattleEnvironmentPalette_Frontier, 0x20, 0x60); break; case MAP_BATTLE_SCENE_LEADER: LZDecompressVram(gBattleEnvironmentTiles_Building, (void*)(BG_CHAR_ADDR(2))); LZDecompressVram(gBattleEnvironmentTilemap_Building, (void*)(BG_SCREEN_ADDR(26))); - LoadCompressedPalette(gBattleEnvironmentPalette_BuildingLeader, 0x20, 0x60); + LoadPalette(gBattleEnvironmentPalette_BuildingLeader, 0x20, 0x60); break; case MAP_BATTLE_SCENE_WALLACE: LZDecompressVram(gBattleEnvironmentTiles_Stadium, (void*)(BG_CHAR_ADDR(2))); LZDecompressVram(gBattleEnvironmentTilemap_Stadium, (void*)(BG_SCREEN_ADDR(26))); - LoadCompressedPalette(gBattleEnvironmentPalette_StadiumWallace, 0x20, 0x60); + LoadPalette(gBattleEnvironmentPalette_StadiumWallace, 0x20, 0x60); break; case MAP_BATTLE_SCENE_GROUDON: LZDecompressVram(gBattleEnvironmentTiles_Cave, (void*)(BG_CHAR_ADDR(2))); LZDecompressVram(gBattleEnvironmentTilemap_Cave, (void*)(BG_SCREEN_ADDR(26))); - LoadCompressedPalette(gBattleEnvironmentPalette_Groudon, 0x20, 0x60); + LoadPalette(gBattleEnvironmentPalette_Groudon, 0x20, 0x60); break; case MAP_BATTLE_SCENE_KYOGRE: LZDecompressVram(gBattleEnvironmentTiles_Water, (void*)(BG_CHAR_ADDR(2))); LZDecompressVram(gBattleEnvironmentTilemap_Water, (void*)(BG_SCREEN_ADDR(26))); - LoadCompressedPalette(gBattleEnvironmentPalette_Kyogre, 0x20, 0x60); + LoadPalette(gBattleEnvironmentPalette_Kyogre, 0x20, 0x60); break; case MAP_BATTLE_SCENE_RAYQUAZA: LZDecompressVram(gBattleEnvironmentTiles_Rayquaza, (void*)(BG_CHAR_ADDR(2))); LZDecompressVram(gBattleEnvironmentTilemap_Rayquaza, (void*)(BG_SCREEN_ADDR(26))); - LoadCompressedPalette(gBattleEnvironmentPalette_Rayquaza, 0x20, 0x60); + LoadPalette(gBattleEnvironmentPalette_Rayquaza, 0x20, 0x60); break; } } @@ -1214,7 +1212,7 @@ static void ResetPokemonSpriteVisualizerWindows(void) void CB2_Pokemon_Sprite_Visualizer(void) { u8 taskId; - const u32 *palette; + const u16 *palette; struct PokemonSpriteVisualizer *data; u16 species; s16 offset_y; @@ -1280,7 +1278,7 @@ void CB2_Pokemon_Sprite_Visualizer(void) //Palettes palette = GetMonSpritePalFromSpecies(species, data->isShiny, data->isFemale); - LoadCompressedSpritePaletteWithTag(palette, species); + LoadSpritePaletteWithTag(palette, species); //Front HandleLoadSpecialPokePic(TRUE, gMonSpritesGfxPtr->spritesGfx[1], species, (data->isFemale ? FEMALE_PERSONALITY : MALE_PERSONALITY)); data->isShiny = FALSE; @@ -1943,7 +1941,7 @@ static void HandleInput_PokemonSpriteVisualizer(u8 taskId) static void ReloadPokemonSprites(struct PokemonSpriteVisualizer *data) { - const u32 *palette; + const u16 *palette; u16 species = data->currentmonId; s16 offset_y; u8 front_x = sBattlerCoords[0][1].x; @@ -1973,7 +1971,7 @@ static void ReloadPokemonSprites(struct PokemonSpriteVisualizer *data) //Palettes palette = GetMonSpritePalFromSpecies(species, data->isShiny, data->isFemale); - LoadCompressedSpritePaletteWithTag(palette, species); + LoadSpritePaletteWithTag(palette, species); //Front HandleLoadSpecialPokePic(TRUE, gMonSpritesGfxPtr->spritesGfx[1], species, (data->isFemale ? FEMALE_PERSONALITY : MALE_PERSONALITY)); BattleLoadOpponentMonSpriteGfxCustom(species, data->isFemale, data->isShiny, 1); diff --git a/src/pokemon_storage_system.c b/src/pokemon_storage_system.c index fd3e9124fd..8c54c43f0c 100644 --- a/src/pokemon_storage_system.c +++ b/src/pokemon_storage_system.c @@ -471,7 +471,7 @@ struct PokemonStorageSystemData u8 cursorPrevHorizPos; u8 cursorFlipTimer; u8 cursorPalNums[2]; - const u32 *displayMonPalette; + const u16 *displayMonPalette; u32 displayMonPersonality; u16 displayMonSpecies; u16 displayMonItemId; @@ -524,7 +524,6 @@ struct PokemonStorageSystemData u16 displayMonPalOffset; u16 *displayMonTilePtr; struct Sprite *displayMonSprite; - u16 displayMonPalBuffer[0x40]; u8 ALIGNED(4) tileBuffer[MON_PIC_SIZE * MAX_MON_PIC_FRAMES]; u8 ALIGNED(4) itemIconBuffer[0x800]; u8 wallpaperBgTilemapBuffer[0x1000]; @@ -692,7 +691,7 @@ static void MultiMove_DeselectColumn(u8, u8, u8); static bool32 IsItemIconAtPosition(u8, u8); static u8 GetNewItemIconIdx(void); static void SetItemIconPosition(u8, u8, u8); -static void LoadItemIconGfx(u8, const u32 *, const u32 *); +static void LoadItemIconGfx(u8 id, const u32 *itemTiles, const u16 *itemPal); static void SetItemIconAffineAnim(u8, u8); static void SetItemIconActive(u8, bool8); static u8 GetItemIconIdxByPosition(u8, u8); @@ -845,7 +844,7 @@ static void TilemapUtil_DrawPrev(u8); static void TilemapUtil_Draw(u8); // Form changing -void SetMonFormPSS(struct BoxPokemon *boxMon, u32 method); +void SetMonFormPSS(struct BoxPokemon *boxMon, enum FormChanges method); void UpdateSpeciesSpritePSS(struct BoxPokemon *boxmon); static const u8 gText_JustOnePkmn[] = _("There is just one POKéMON with you."); @@ -3933,13 +3932,11 @@ static void CreateDisplayMonSprite(void) u8 palSlot; u8 spriteId; struct SpriteSheet sheet = {sStorage->tileBuffer, MON_PIC_SIZE, GFXTAG_DISPLAY_MON}; - struct SpritePalette palette = {sStorage->displayMonPalBuffer, PALTAG_DISPLAY_MON}; + struct SpritePalette palette = {sStorage->displayMonPalette, PALTAG_DISPLAY_MON}; struct SpriteTemplate template = sSpriteTemplate_DisplayMon; for (i = 0; i < MON_PIC_SIZE; i++) sStorage->tileBuffer[i] = 0; - for (i = 0; i < 16; i++) - sStorage->displayMonPalBuffer[i] = 0; sStorage->displayMonSprite = NULL; @@ -3977,9 +3974,8 @@ static void LoadDisplayMonGfx(u16 species, u32 pid) if (species != SPECIES_NONE) { LoadSpecialPokePic(sStorage->tileBuffer, species, pid, TRUE); - LZ77UnCompWram(sStorage->displayMonPalette, sStorage->displayMonPalBuffer); CpuCopy32(sStorage->tileBuffer, sStorage->displayMonTilePtr, MON_PIC_SIZE); - LoadPalette(sStorage->displayMonPalBuffer, sStorage->displayMonPalOffset, PLTT_SIZE_4BPP); + LoadPalette(sStorage->displayMonPalette, sStorage->displayMonPalOffset, PLTT_SIZE_4BPP); sStorage->displayMonSprite->invisible = FALSE; } else @@ -6909,7 +6905,7 @@ static void ReshowDisplayMon(void) TryRefreshDisplayMon(); } -void SetMonFormPSS(struct BoxPokemon *boxMon, u32 method) +void SetMonFormPSS(struct BoxPokemon *boxMon, enum FormChanges method) { u16 targetSpecies = GetFormChangeTargetSpeciesBoxMon(boxMon, method, 0); if (targetSpecies != GetBoxMonData(boxMon, MON_DATA_SPECIES, NULL)) @@ -8855,7 +8851,7 @@ static void TryLoadItemIconAtPos(u8 cursorArea, u8 cursorPos) if (heldItem != ITEM_NONE) { const u32 *tiles = GetItemIconPic(heldItem); - const u32 *pal = GetItemIconPalette(heldItem); + const u16 *pal = GetItemIconPalette(heldItem); u8 id = GetNewItemIconIdx(); SetItemIconPosition(id, cursorArea, cursorPos); @@ -8912,7 +8908,7 @@ static void TakeItemFromMon(u8 cursorArea, u8 cursorPos) static void InitItemIconInCursor(u16 itemId) { const u32 *tiles = GetItemIconPic(itemId); - const u32 *pal = GetItemIconPalette(itemId); + const u16 *pal = GetItemIconPalette(itemId); u8 id = GetNewItemIconIdx(); LoadItemIconGfx(id, tiles, pal); SetItemIconAffineAnim(id, ITEM_ANIM_LARGE); @@ -9176,7 +9172,7 @@ static void SetItemIconPosition(u8 id, u8 cursorArea, u8 cursorPos) sStorage->itemIcons[id].pos = cursorPos; } -static void LoadItemIconGfx(u8 id, const u32 *itemTiles, const u32 *itemPal) +static void LoadItemIconGfx(u8 id, const u32 *itemTiles, const u16 *itemPal) { s32 i; @@ -9189,8 +9185,7 @@ static void LoadItemIconGfx(u8 id, const u32 *itemTiles, const u32 *itemPal) CpuFastCopy(&sStorage->tileBuffer[i * 0x60], &sStorage->itemIconBuffer[i * 0x80], 0x60); CpuFastCopy(sStorage->itemIconBuffer, sStorage->itemIcons[id].tiles, 0x200); - LZ77UnCompWram(itemPal, sStorage->itemIconBuffer); - LoadPalette(sStorage->itemIconBuffer, sStorage->itemIcons[id].palIndex, PLTT_SIZE_4BPP); + LoadPalette(itemPal, sStorage->itemIcons[id].palIndex, PLTT_SIZE_4BPP); } static void SetItemIconAffineAnim(u8 id, u8 animNum) diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c index e48ff91269..d4ea8e5d4e 100644 --- a/src/pokemon_summary_screen.c +++ b/src/pokemon_summary_screen.c @@ -1059,7 +1059,7 @@ static const struct CompressedSpriteSheet sMoveSelectorSpriteSheet = .size = 0x400, .tag = TAG_MOVE_SELECTOR }; -static const struct CompressedSpritePalette sMoveSelectorSpritePal = +static const struct SpritePalette sMoveSelectorSpritePal = { .data = gSummaryMoveSelect_Pal, .tag = TAG_MOVE_SELECTOR @@ -1138,7 +1138,7 @@ static const struct CompressedSpriteSheet sStatusIconsSpriteSheet = .size = 0x400, .tag = TAG_MON_STATUS }; -static const struct CompressedSpritePalette sStatusIconsSpritePalette = +static const struct SpritePalette sStatusIconsSpritePalette = { .data = gStatusPal_Icons, .tag = TAG_MON_STATUS @@ -1439,7 +1439,7 @@ static bool8 DecompressGraphics(void) sMonSummaryScreen->switchCounter++; break; case 6: - LoadCompressedPalette(gSummaryScreen_Pal, BG_PLTT_ID(0), 8 * PLTT_SIZE_4BPP); + LoadPalette(gSummaryScreen_Pal, BG_PLTT_ID(0), 8 * PLTT_SIZE_4BPP); LoadPalette(&gPPTextPalette, BG_PLTT_ID(8) + 1, PLTT_SIZEOF(16 - 1)); sMonSummaryScreen->switchCounter++; break; @@ -1456,15 +1456,15 @@ static bool8 DecompressGraphics(void) sMonSummaryScreen->switchCounter++; break; case 10: - LoadCompressedSpritePalette(&sStatusIconsSpritePalette); + LoadSpritePalette(&sStatusIconsSpritePalette); sMonSummaryScreen->switchCounter++; break; case 11: - LoadCompressedSpritePalette(&sMoveSelectorSpritePal); + LoadSpritePalette(&sMoveSelectorSpritePal); sMonSummaryScreen->switchCounter++; break; case 12: - LoadCompressedPalette(gMoveTypes_Pal, OBJ_PLTT_ID(13), 3 * PLTT_SIZE_4BPP); + LoadPalette(gMoveTypes_Pal, OBJ_PLTT_ID(13), 3 * PLTT_SIZE_4BPP); LoadCompressedSpriteSheet(&gSpriteSheet_CategoryIcons); LoadSpritePalette(&gSpritePal_CategoryIcons); sMonSummaryScreen->switchCounter = 0; @@ -4416,7 +4416,7 @@ static u8 LoadMonGfxAndSprite(struct Pokemon *mon, s16 *state) (*state)++; return 0xFF; case 1: - LoadCompressedSpritePaletteWithTag(GetMonSpritePalFromSpeciesAndPersonality(summary->species2, summary->isShiny, summary->pid), summary->species2); + LoadSpritePaletteWithTag(GetMonSpritePalFromSpeciesAndPersonality(summary->species2, summary->isShiny, summary->pid), summary->species2); SetMultiuseSpriteTemplateToPokemon(summary->species2, B_POSITION_OPPONENT_LEFT); (*state)++; return 0xFF; diff --git a/src/pokenav_conditions.c b/src/pokenav_conditions.c index 382ddde413..727239302b 100644 --- a/src/pokenav_conditions.c +++ b/src/pokenav_conditions.c @@ -538,7 +538,7 @@ static void ConditionGraphDrawMonPic(s16 listId, u8 loadId) isShiny = GetBoxOrPartyMonData(boxId, monId, MON_DATA_IS_SHINY, NULL); personality = GetBoxOrPartyMonData(boxId, monId, MON_DATA_PERSONALITY, NULL); LoadSpecialPokePic(menu->monPicGfx[loadId], species, personality, TRUE); - LZ77UnCompWram(GetMonSpritePalFromSpeciesAndPersonality(species, isShiny, personality), menu->monPal[loadId]); + memcpy(&menu->monPal[loadId], GetMonSpritePalFromSpeciesAndPersonality(species, isShiny, personality), 32); } u16 GetMonListCount(void) diff --git a/src/pokenav_match_call_gfx.c b/src/pokenav_match_call_gfx.c index 80e2709cf0..e844b6843a 100755 --- a/src/pokenav_match_call_gfx.c +++ b/src/pokenav_match_call_gfx.c @@ -1253,7 +1253,7 @@ static void LoadCheckPageTrainerPic(struct Pokenav_MatchCallGfx *gfx) if (trainerPic >= 0) { DecompressPicFromTable(&gTrainerSprites[trainerPic].frontPic, gfx->trainerPicGfx); - LZ77UnCompWram(gTrainerSprites[trainerPic].palette.data, gfx->trainerPicPal); + memcpy(gfx->trainerPicPal, gTrainerSprites[trainerPic].palette.data, 32); cursor = RequestDma3Copy(gfx->trainerPicGfx, gfx->trainerPicGfxPtr, sizeof(gfx->trainerPicGfx), 1); LoadPalette(gfx->trainerPicPal, gfx->trainerPicPalOffset, sizeof(gfx->trainerPicPal)); gfx->trainerPicSprite->data[0] = 0; diff --git a/src/rayquaza_scene.c b/src/rayquaza_scene.c index b3e0276f1d..161440bdb3 100644 --- a/src/rayquaza_scene.c +++ b/src/rayquaza_scene.c @@ -559,7 +559,7 @@ static const struct CompressedSpriteSheet sSpriteSheet_DuoFight_Groudon = gRaySceneDuoFight_Groudon_Gfx, 0x3000, TAG_DUOFIGHT_GROUDON }; -static const struct CompressedSpritePalette sSpritePal_DuoFight_Groudon = +static const struct SpritePalette sSpritePal_DuoFight_Groudon = { gRaySceneDuoFight_Groudon_Pal, TAG_DUOFIGHT_GROUDON }; @@ -710,7 +710,7 @@ static const struct CompressedSpriteSheet sSpriteSheet_DuoFight_Kyogre = gRaySceneDuoFight_Kyogre_Gfx, 0xF00, TAG_DUOFIGHT_KYOGRE }; -static const struct CompressedSpritePalette sSpritePal_DuoFight_Kyogre = +static const struct SpritePalette sSpritePal_DuoFight_Kyogre = { gRaySceneDuoFight_Kyogre_Pal, TAG_DUOFIGHT_KYOGRE }; @@ -832,7 +832,7 @@ static const struct CompressedSpriteSheet sSpriteSheet_TakesFlight_Smoke = gRaySceneTakesFlight_Smoke_Gfx, 0x100, TAG_FLIGHT_SMOKE }; -static const struct CompressedSpritePalette sSpritePal_TakesFlight_Smoke = +static const struct SpritePalette sSpritePal_TakesFlight_Smoke = { gRaySceneTakesFlight_Smoke_Pal, TAG_FLIGHT_SMOKE }; @@ -936,7 +936,7 @@ static const struct CompressedSpriteSheet sSpriteSheet_Descends_RayquazaTail = gRaySceneDescends_RayquazaTail_Gfx, 0x200, TAG_DESCENDS_RAYQUAZA_TAIL }; -static const struct CompressedSpritePalette sSpritePal_Descends_Rayquaza = +static const struct SpritePalette sSpritePal_Descends_Rayquaza = { gRaySceneTakesFlight_Rayquaza_Pal, TAG_DESCENDS_RAYQUAZA // "Takes flight" palette re-used here }; @@ -1170,22 +1170,22 @@ static const struct CompressedSpriteSheet sSpriteSheet_ChasesAway_KyogreSplash = gRaySceneChasesAway_KyogreSplash_Gfx, 0x300, TAG_CHASE_SPLASH }; -static const struct CompressedSpritePalette sSpritePal_ChasesAway_Groudon = +static const struct SpritePalette sSpritePal_ChasesAway_Groudon = { gRaySceneChasesAway_Groudon_Pal, TAG_CHASE_GROUDON }; -static const struct CompressedSpritePalette sSpritePal_ChasesAway_Kyogre = +static const struct SpritePalette sSpritePal_ChasesAway_Kyogre = { gRaySceneChasesAway_Kyogre_Pal, TAG_CHASE_KYOGRE }; -static const struct CompressedSpritePalette sSpritePal_ChasesAway_Rayquaza = +static const struct SpritePalette sSpritePal_ChasesAway_Rayquaza = { gRaySceneChasesAway_Rayquaza_Pal, TAG_CHASE_RAYQUAZA }; -static const struct CompressedSpritePalette sSpritePal_ChasesAway_KyogreSplash = +static const struct SpritePalette sSpritePal_ChasesAway_KyogreSplash = { gRaySceneChasesAway_KyogreSplash_Pal, TAG_CHASE_SPLASH }; @@ -1602,15 +1602,15 @@ static void LoadDuoFightSceneGfx(void) LZDecompressWram(gRaySceneDuoFight_Clouds2_Tilemap, sRayScene->tilemapBuffers[0]); LZDecompressWram(gRaySceneDuoFight_Clouds1_Tilemap, sRayScene->tilemapBuffers[1]); LZDecompressWram(gRaySceneDuoFight_Clouds3_Tilemap, sRayScene->tilemapBuffers[2]); - LoadCompressedPalette(gRaySceneDuoFight_Clouds_Pal, BG_PLTT_ID(0), 2 * PLTT_SIZE_4BPP); + LoadPalette(gRaySceneDuoFight_Clouds_Pal, BG_PLTT_ID(0), 2 * PLTT_SIZE_4BPP); LoadCompressedSpriteSheet(&sSpriteSheet_DuoFight_Groudon); LoadCompressedSpriteSheet(&sSpriteSheet_DuoFight_GroudonShoulder); LoadCompressedSpriteSheet(&sSpriteSheet_DuoFight_GroudonClaw); LoadCompressedSpriteSheet(&sSpriteSheet_DuoFight_Kyogre); LoadCompressedSpriteSheet(&sSpriteSheet_DuoFight_KyogrePectoralFin); LoadCompressedSpriteSheet(&sSpriteSheet_DuoFight_KyogreDorsalFin); - LoadCompressedSpritePalette(&sSpritePal_DuoFight_Groudon); - LoadCompressedSpritePalette(&sSpritePal_DuoFight_Kyogre); + LoadSpritePalette(&sSpritePal_DuoFight_Groudon); + LoadSpritePalette(&sSpritePal_DuoFight_Kyogre); } static void Task_DuoFightAnim(u8 taskId) @@ -2042,9 +2042,9 @@ static void LoadTakesFlightSceneGfx(void) LZDecompressWram(gRaySceneDuoFight_Clouds2_Tilemap, sRayScene->tilemapBuffers[0]); LZDecompressWram(gRaySceneTakesFlight_Bg_Tilemap, sRayScene->tilemapBuffers[1]); LZDecompressWram(gRaySceneTakesFlight_Rayquaza_Tilemap, sRayScene->tilemapBuffers[2]); - LoadCompressedPalette(gRaySceneTakesFlight_Rayquaza_Pal, BG_PLTT_ID(0), 2 * PLTT_SIZE_4BPP); + LoadPalette(gRaySceneTakesFlight_Rayquaza_Pal, BG_PLTT_ID(0), 2 * PLTT_SIZE_4BPP); LoadCompressedSpriteSheet(&sSpriteSheet_TakesFlight_Smoke); - LoadCompressedSpritePalette(&sSpritePal_TakesFlight_Smoke); + LoadSpritePalette(&sSpritePal_TakesFlight_Smoke); } static void Task_RayTakesFlightAnim(u8 taskId) @@ -2248,12 +2248,12 @@ static void LoadDescendsSceneGfx(void) CpuFastCopy(sRayScene->tilemapBuffers[3], sRayScene->tilemapBuffers[1], BG_SCREEN_SIZE); CpuFastFill16(0, &sRayScene->tilemapBuffers[1][0x100], 0x340); - LoadCompressedPalette(gRaySceneDescends_Bg_Pal, BG_PLTT_ID(0), 2 * PLTT_SIZE_4BPP); + LoadPalette(gRaySceneDescends_Bg_Pal, BG_PLTT_ID(0), 2 * PLTT_SIZE_4BPP); gPlttBufferUnfaded[0] = RGB_WHITE; gPlttBufferFaded[0] = RGB_WHITE; LoadCompressedSpriteSheet(&sSpriteSheet_Descends_Rayquaza); LoadCompressedSpriteSheet(&sSpriteSheet_Descends_RayquazaTail); - LoadCompressedSpritePalette(&sSpritePal_Descends_Rayquaza); + LoadSpritePalette(&sSpritePal_Descends_Rayquaza); } // Draw ray of light emerging from the clouds @@ -2497,7 +2497,7 @@ static void LoadChargesSceneGfx(void) LZDecompressWram(gRaySceneCharges_Rayquaza_Tilemap, sRayScene->tilemapBuffers[1]); LZDecompressWram(gRaySceneCharges_Streaks_Tilemap, sRayScene->tilemapBuffers[2]); LZDecompressWram(gRaySceneCharges_Bg_Tilemap, sRayScene->tilemapBuffers[3]); - LoadCompressedPalette(gRaySceneCharges_Bg_Pal, BG_PLTT_ID(0), 4 * PLTT_SIZE_4BPP); + LoadPalette(gRaySceneCharges_Bg_Pal, BG_PLTT_ID(0), 4 * PLTT_SIZE_4BPP); } #define tState data[0] @@ -2681,17 +2681,17 @@ static void LoadChasesAwaySceneGfx(void) LZDecompressWram(gRaySceneChasesAway_Bg_Tilemap, sRayScene->tilemapBuffers[1]); LZDecompressWram(gRaySceneChasesAway_Light_Tilemap, sRayScene->tilemapBuffers[0]); LZDecompressWram(gRaySceneChasesAway_Ring_Tilemap, sRayScene->tilemapBuffers[2]); - LoadCompressedPalette(gRaySceneChasesAway_Bg_Pal, BG_PLTT_ID(0), 3 * PLTT_SIZE_4BPP); + LoadPalette(gRaySceneChasesAway_Bg_Pal, BG_PLTT_ID(0), 3 * PLTT_SIZE_4BPP); LoadCompressedSpriteSheet(&sSpriteSheet_ChasesAway_Groudon); LoadCompressedSpriteSheet(&sSpriteSheet_ChasesAway_GroudonTail); LoadCompressedSpriteSheet(&sSpriteSheet_ChasesAway_Kyogre); LoadCompressedSpriteSheet(&sSpriteSheet_ChasesAway_Rayquaza); LoadCompressedSpriteSheet(&sSpriteSheet_ChasesAway_RayquazaTail); LoadCompressedSpriteSheet(&sSpriteSheet_ChasesAway_KyogreSplash); - LoadCompressedSpritePalette(&sSpritePal_ChasesAway_Groudon); - LoadCompressedSpritePalette(&sSpritePal_ChasesAway_Kyogre); - LoadCompressedSpritePalette(&sSpritePal_ChasesAway_Rayquaza); - LoadCompressedSpritePalette(&sSpritePal_ChasesAway_KyogreSplash); + LoadSpritePalette(&sSpritePal_ChasesAway_Groudon); + LoadSpritePalette(&sSpritePal_ChasesAway_Kyogre); + LoadSpritePalette(&sSpritePal_ChasesAway_Rayquaza); + LoadSpritePalette(&sSpritePal_ChasesAway_KyogreSplash); } #define tState data[0] diff --git a/src/recorded_battle.c b/src/recorded_battle.c index 7c3c850e86..52f9be63b5 100644 --- a/src/recorded_battle.c +++ b/src/recorded_battle.c @@ -49,7 +49,7 @@ EWRAM_DATA static u8 sFrontierPassFlag = 0; EWRAM_DATA static u8 sBattleScene = 0; EWRAM_DATA static u8 sTextSpeed = 0; EWRAM_DATA static u32 sBattleFlags = 0; -EWRAM_DATA static u32 sAI_Scripts = 0; +EWRAM_DATA static u64 sAI_Scripts = 0; EWRAM_DATA static struct Pokemon sSavedPlayerParty[PARTY_SIZE] = {0}; EWRAM_DATA static struct Pokemon sSavedOpponentParty[PARTY_SIZE] = {0}; EWRAM_DATA static u16 sPlayerMonMoves[MAX_BATTLERS_COUNT / 2][MAX_MON_MOVES] = {0}; @@ -87,7 +87,7 @@ void RecordedBattle_Init(u8 mode) for (j = 0; j < BATTLER_RECORD_SIZE; j++) sBattleRecords[i][j] = 0xFF; sBattleFlags = gBattleTypeFlags; - sAI_Scripts = gBattleResources->ai->aiFlags[B_POSITION_OPPONENT_LEFT]; + sAI_Scripts = gAiThinkingStruct->aiFlags[B_POSITION_OPPONENT_LEFT]; } } } @@ -666,7 +666,7 @@ void RecordedBattle_CopyBattlerMoves(u32 battler) { s32 i; - if (GetBattlerSide(battler) == B_SIDE_OPPONENT) + if (!IsOnPlayerSide(battler)) return; if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED_LINK)) return; @@ -691,7 +691,7 @@ void RecordedBattle_CheckMovesetChanges(u8 mode) for (battler = 0; battler < gBattlersCount; battler++) { // Player's side only - if (GetBattlerSide(battler) != B_SIDE_OPPONENT) + if (IsOnPlayerSide(battler)) { if (mode == B_RECORD_MODE_RECORDING) { @@ -759,24 +759,24 @@ void RecordedBattle_CheckMovesetChanges(u8 mode) if (!(gBattleMons[battler].status2 & STATUS2_TRANSFORMED)) { for (j = 0; j < MAX_MON_MOVES; j++) - ppBonuses[j] = (GetMonData(&gPlayerParty[gBattlerPartyIndexes[battler]], MON_DATA_PP_BONUSES, NULL) & ((3 << (j << 1)))) >> (j << 1); + ppBonuses[j] = (GetMonData(GetBattlerMon(battler), MON_DATA_PP_BONUSES, NULL) & ((3 << (j << 1)))) >> (j << 1); for (j = 0; j < MAX_MON_MOVES; j++) { - movePp.moves[j] = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battler]], MON_DATA_MOVE1 + moveSlots[j], NULL); - movePp.currentPp[j] = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battler]], MON_DATA_PP1 + moveSlots[j], NULL); + movePp.moves[j] = GetMonData(GetBattlerMon(battler), MON_DATA_MOVE1 + moveSlots[j], NULL); + movePp.currentPp[j] = GetMonData(GetBattlerMon(battler), MON_DATA_PP1 + moveSlots[j], NULL); movePp.maxPp[j] = ppBonuses[moveSlots[j]]; } for (j = 0; j < MAX_MON_MOVES; j++) { - SetMonData(&gPlayerParty[gBattlerPartyIndexes[battler]], MON_DATA_MOVE1 + j, &movePp.moves[j]); - SetMonData(&gPlayerParty[gBattlerPartyIndexes[battler]], MON_DATA_PP1 + j, &movePp.currentPp[j]); + SetMonData(GetBattlerMon(battler), MON_DATA_MOVE1 + j, &movePp.moves[j]); + SetMonData(GetBattlerMon(battler), MON_DATA_PP1 + j, &movePp.currentPp[j]); } ppBonusSet = 0; for (j = 0; j < MAX_MON_MOVES; j++) ppBonusSet |= movePp.maxPp[j] << (j << 1); - SetMonData(&gPlayerParty[gBattlerPartyIndexes[battler]], MON_DATA_PP_BONUSES, &ppBonusSet); + SetMonData(GetBattlerMon(battler), MON_DATA_PP_BONUSES, &ppBonusSet); } gChosenMoveByBattler[battler] = gBattleMons[battler].moves[gBattleStruct->chosenMovePositions[battler]]; } @@ -785,7 +785,7 @@ void RecordedBattle_CheckMovesetChanges(u8 mode) } } -u32 GetAiScriptsInRecordedBattle(void) +u64 GetAiScriptsInRecordedBattle(void) { return sAI_Scripts; } diff --git a/src/reset_rtc_screen.c b/src/reset_rtc_screen.c index 98ccb71b64..4d3015fa19 100644 --- a/src/reset_rtc_screen.c +++ b/src/reset_rtc_screen.c @@ -1,6 +1,7 @@ #include "global.h" #include "reset_rtc_screen.h" #include "event_data.h" +#include "fake_rtc.h" #include "main.h" #include "menu.h" #include "palette.h" @@ -41,7 +42,10 @@ enum { #define tWindowId data[8] enum { - SELECTION_DAYS = 1, + SELECTION_DAYS_1000 = 1, + SELECTION_DAYS_100, + SELECTION_DAYS_10, + SELECTION_DAYS_1, SELECTION_HOURS, SELECTION_MINS, SELECTION_SECS, @@ -59,6 +63,7 @@ struct ResetRtcInputMap /*0x0*/ u8 dataIndex; /*0x2*/ u16 minVal; /*0x4*/ u16 maxVal; + u16 increment; /*0x6*/ u8 left; /*0x7*/ u8 right; /*0x8*/ u8 unk; // never read @@ -117,43 +122,75 @@ static const struct WindowTemplate sInputTimeWindow = { static const struct ResetRtcInputMap sInputMap[] = { - [SELECTION_DAYS - 1] = { + [SELECTION_DAYS_1000 - 1] = { .dataIndex = DATAIDX_DAYS, .minVal = 1, .maxVal = 9999, + .increment = 1000, .left = 0, .right = 2, .unk = 0, }, + [SELECTION_DAYS_100 - 1] = { + .dataIndex = DATAIDX_DAYS, + .minVal = 1, + .maxVal = 9999, + .increment = 100, + .left = 1, + .right = 3, + .unk = 0, + }, + [SELECTION_DAYS_10 - 1] = { + .dataIndex = DATAIDX_DAYS, + .minVal = 1, + .maxVal = 9999, + .increment = 10, + .left = 2, + .right = 4, + .unk = 0, + }, + [SELECTION_DAYS_1 - 1] = { + .dataIndex = DATAIDX_DAYS, + .minVal = 1, + .maxVal = 9999, + .increment = 1, + .left = 3, + .right = 5, + .unk = 0, + }, [SELECTION_HOURS - 1] = { .dataIndex = DATAIDX_HOURS, .minVal = 0, .maxVal = 23, - .left = 1, - .right = 3, + .increment = 1, + .left = 4, + .right = 6, .unk = 0, }, [SELECTION_MINS - 1] = { .dataIndex = DATAIDX_MINS, .minVal = 0, .maxVal = 59, - .left = 2, - .right = 4, + .increment = 1, + .left = 5, + .right = 7, .unk = 0, }, [SELECTION_SECS - 1] = { .dataIndex = DATAIDX_SECS, .minVal = 0, .maxVal = 59, - .left = 3, - .right = 5, + .increment = 1, + .left = 6, + .right = 8, .unk = 0, }, [SELECTION_CONFIRM - 1] = { .dataIndex = DATAIDX_CONFIRM, .minVal = 0, .maxVal = 0, - .left = 4, + .increment = 1, + .left = 7, .right = 0, .unk = 6, }, @@ -244,7 +281,28 @@ static void SpriteCB_Cursor_UpOrRight(struct Sprite *sprite) sprite->sState = state; switch (state) { - case SELECTION_DAYS: + case SELECTION_DAYS_1000: + sprite->invisible = FALSE; + sprite->animNum = ARROW_UP; + sprite->animDelayCounter = 0; + sprite->x = 35; + sprite->y = 68; + break; + case SELECTION_DAYS_100: + sprite->invisible = FALSE; + sprite->animNum = ARROW_UP; + sprite->animDelayCounter = 0; + sprite->x = 41; + sprite->y = 68; + break; + case SELECTION_DAYS_10: + sprite->invisible = FALSE; + sprite->animNum = ARROW_UP; + sprite->animDelayCounter = 0; + sprite->x = 47; + sprite->y = 68; + break; + case SELECTION_DAYS_1: sprite->invisible = FALSE; sprite->animNum = ARROW_UP; sprite->animDelayCounter = 0; @@ -294,7 +352,28 @@ static void SpriteCB_Cursor_Down(struct Sprite *sprite) sprite->sState = state; switch (state) { - case SELECTION_DAYS: + case SELECTION_DAYS_1000: + sprite->invisible = FALSE; + sprite->animNum = ARROW_DOWN; + sprite->animDelayCounter = 0; + sprite->x = 35; + sprite->y = 92; + break; + case SELECTION_DAYS_100: + sprite->invisible = FALSE; + sprite->animNum = ARROW_DOWN; + sprite->animDelayCounter = 0; + sprite->x = 41; + sprite->y = 92; + break; + case SELECTION_DAYS_10: + sprite->invisible = FALSE; + sprite->animNum = ARROW_DOWN; + sprite->animDelayCounter = 0; + sprite->x = 47; + sprite->y = 92; + break; + case SELECTION_DAYS_1: sprite->invisible = FALSE; sprite->animNum = ARROW_DOWN; sprite->animDelayCounter = 0; @@ -397,17 +476,17 @@ static void ShowChooseTimeWindow(u8 windowId, u16 days, u8 hours, u8 minutes, u8 ScheduleBgCopyTilemapToVram(0); } -static bool32 MoveTimeUpDown(s16 *val, int minVal, int maxVal, u16 keys) +static bool32 MoveTimeUpDown(s16 *val, int minVal, int maxVal, int increment, u16 keys) { if (keys & DPAD_DOWN) { - *val -= 1; + *val -= increment; if (*val < minVal) *val = maxVal; } else if (keys & DPAD_UP) { - *val += 1; + *val += increment; if (*val > maxVal) *val = minVal; } @@ -494,7 +573,7 @@ static void Task_ResetRtc_HandleInput(u8 taskId) tSelection = SELECTION_NONE; } } - else if (MoveTimeUpDown(&data[selectionInfo->dataIndex], selectionInfo->minVal, selectionInfo->maxVal, JOY_REPEAT(DPAD_UP | DPAD_DOWN))) + else if (MoveTimeUpDown(&data[selectionInfo->dataIndex], selectionInfo->minVal, selectionInfo->maxVal, selectionInfo->increment, JOY_REPEAT(DPAD_UP | DPAD_DOWN))) { PlaySE(SE_SELECT); PrintTime(tWindowId, 0, 1, tDays, tHours, tMinutes, tSeconds); diff --git a/src/reshow_battle_screen.c b/src/reshow_battle_screen.c index ba6f615595..d46ef692cc 100644 --- a/src/reshow_battle_screen.c +++ b/src/reshow_battle_screen.c @@ -138,13 +138,13 @@ static void CB2_ReshowBattleScreenAfterMenu(void) LoadAndCreateEnemyShadowSprites(); opponentBattler = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT); - species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[opponentBattler]], MON_DATA_SPECIES); + species = GetMonData(GetBattlerMon(opponentBattler), MON_DATA_SPECIES); SetBattlerShadowSpriteCallback(opponentBattler, species); if (IsDoubleBattle()) { opponentBattler = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT); - species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[opponentBattler]], MON_DATA_SPECIES); + species = GetMonData(GetBattlerMon(opponentBattler), MON_DATA_SPECIES); SetBattlerShadowSpriteCallback(opponentBattler, species); } @@ -268,10 +268,10 @@ static bool8 LoadBattlerSpriteGfx(u32 battler) { if (battler < gBattlersCount) { - if (GetBattlerSide(battler) != B_SIDE_PLAYER) + if (!IsOnPlayerSide(battler)) { if (!gBattleSpritesDataPtr->battlerData[battler].behindSubstitute) - BattleLoadMonSpriteGfx(&gEnemyParty[gBattlerPartyIndexes[battler]], battler); + BattleLoadMonSpriteGfx(GetBattlerMon(battler), battler); else BattleLoadSubstituteOrMonSpriteGfx(battler, FALSE); } @@ -280,7 +280,7 @@ static bool8 LoadBattlerSpriteGfx(u32 battler) else if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL && battler == B_POSITION_PLAYER_LEFT) // Should be checking position, not battler. DecompressTrainerBackPic(TRAINER_BACK_PIC_WALLY, battler); else if (!gBattleSpritesDataPtr->battlerData[battler].behindSubstitute) - BattleLoadMonSpriteGfx(&gPlayerParty[gBattlerPartyIndexes[battler]], battler); + BattleLoadMonSpriteGfx(GetBattlerMon(battler), battler); else BattleLoadSubstituteOrMonSpriteGfx(battler, FALSE); @@ -300,19 +300,19 @@ void CreateBattlerSprite(u32 battler) else posY = GetBattlerSpriteDefault_Y(battler); - if (GetBattlerSide(battler) != B_SIDE_PLAYER) + if (!IsOnPlayerSide(battler)) { - if (GetMonData(&gEnemyParty[gBattlerPartyIndexes[battler]], MON_DATA_HP) == 0) + if (GetMonData(GetBattlerMon(battler), MON_DATA_HP) == 0) return; if (gBattleScripting.monCaught) // Don't create opponent sprite if it has been caught. return; - SetMultiuseSpriteTemplateToPokemon(GetMonData(&gEnemyParty[gBattlerPartyIndexes[battler]], MON_DATA_SPECIES), GetBattlerPosition(battler)); + SetMultiuseSpriteTemplateToPokemon(GetMonData(GetBattlerMon(battler), MON_DATA_SPECIES), GetBattlerPosition(battler)); gBattlerSpriteIds[battler] = CreateSprite(&gMultiuseSpriteTemplate, GetBattlerSpriteCoord(battler, BATTLER_COORD_X_2), posY, GetBattlerSpriteSubpriority(battler)); gSprites[gBattlerSpriteIds[battler]].oam.paletteNum = battler; gSprites[gBattlerSpriteIds[battler]].callback = SpriteCallbackDummy; gSprites[gBattlerSpriteIds[battler]].data[0] = battler; - gSprites[gBattlerSpriteIds[battler]].data[2] = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battler]], MON_DATA_SPECIES); + gSprites[gBattlerSpriteIds[battler]].data[2] = GetMonData(GetBattlerMon(battler), MON_DATA_SPECIES); StartSpriteAnim(&gSprites[gBattlerSpriteIds[battler]], 0); } @@ -338,15 +338,15 @@ void CreateBattlerSprite(u32 battler) } else { - if (!IsValidForBattle(&gPlayerParty[gBattlerPartyIndexes[battler]])) + if (!IsValidForBattle(GetBattlerMon(battler))) return; - SetMultiuseSpriteTemplateToPokemon(GetMonData(&gPlayerParty[gBattlerPartyIndexes[battler]], MON_DATA_SPECIES), GetBattlerPosition(battler)); + SetMultiuseSpriteTemplateToPokemon(GetMonData(GetBattlerMon(battler), MON_DATA_SPECIES), GetBattlerPosition(battler)); gBattlerSpriteIds[battler] = CreateSprite(&gMultiuseSpriteTemplate, GetBattlerSpriteCoord(battler, BATTLER_COORD_X_2), posY, GetBattlerSpriteSubpriority(battler)); gSprites[gBattlerSpriteIds[battler]].oam.paletteNum = battler; gSprites[gBattlerSpriteIds[battler]].callback = SpriteCallbackDummy; gSprites[gBattlerSpriteIds[battler]].data[0] = battler; - gSprites[gBattlerSpriteIds[battler]].data[2] = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battler]], MON_DATA_SPECIES); + gSprites[gBattlerSpriteIds[battler]].data[2] = GetMonData(GetBattlerMon(battler), MON_DATA_SPECIES); StartSpriteAnim(&gSprites[gBattlerSpriteIds[battler]], 0); } @@ -372,26 +372,26 @@ static void CreateHealthboxSprite(u32 battler) InitBattlerHealthboxCoords(battler); SetHealthboxSpriteVisible(healthboxSpriteId); - if (GetBattlerSide(battler) != B_SIDE_PLAYER) - UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], &gEnemyParty[gBattlerPartyIndexes[battler]], HEALTHBOX_ALL); + if (!IsOnPlayerSide(battler)) + UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], GetBattlerMon(battler), HEALTHBOX_ALL); else if (gBattleTypeFlags & BATTLE_TYPE_SAFARI) - UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], &gPlayerParty[gBattlerPartyIndexes[battler]], HEALTHBOX_SAFARI_ALL_TEXT); + UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], GetBattlerMon(battler), HEALTHBOX_SAFARI_ALL_TEXT); else - UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], &gPlayerParty[gBattlerPartyIndexes[battler]], HEALTHBOX_ALL); + UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], GetBattlerMon(battler), HEALTHBOX_ALL); if (GetBattlerPosition(battler) == B_POSITION_OPPONENT_RIGHT || GetBattlerPosition(battler) == B_POSITION_PLAYER_RIGHT) DummyBattleInterfaceFunc(gHealthboxSpriteIds[battler], TRUE); else DummyBattleInterfaceFunc(gHealthboxSpriteIds[battler], FALSE); - if (GetBattlerSide(battler) != B_SIDE_PLAYER) + if (!IsOnPlayerSide(battler)) { - if (GetMonData(&gEnemyParty[gBattlerPartyIndexes[battler]], MON_DATA_HP) == 0) + if (GetMonData(GetBattlerMon(battler), MON_DATA_HP) == 0) SetHealthboxSpriteInvisible(healthboxSpriteId); } else if (!(gBattleTypeFlags & BATTLE_TYPE_SAFARI)) { - if (!IsValidForBattle(&gPlayerParty[gBattlerPartyIndexes[battler]])) + if (!IsValidForBattle(GetBattlerMon(battler))) SetHealthboxSpriteInvisible(healthboxSpriteId); } } @@ -399,12 +399,12 @@ static void CreateHealthboxSprite(u32 battler) static void CreateCaughtMonSprite(void) { - SetMultiuseSpriteTemplateToPokemon(GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattlerTarget]], MON_DATA_SPECIES), GetBattlerPosition(gBattlerTarget)); + SetMultiuseSpriteTemplateToPokemon(GetMonData(GetBattlerMon(gBattlerTarget), MON_DATA_SPECIES), GetBattlerPosition(gBattlerTarget)); gBattlerSpriteIds[gBattlerTarget] = CreateSprite(&gMultiuseSpriteTemplate, DISPLAY_WIDTH / 2, DISPLAY_HEIGHT / 2, GetBattlerSpriteSubpriority(gBattlerTarget)); gSprites[gBattlerSpriteIds[gBattlerTarget]].oam.paletteNum = gBattlerTarget; gSprites[gBattlerSpriteIds[gBattlerTarget]].callback = SpriteCallbackDummy; gSprites[gBattlerSpriteIds[gBattlerTarget]].data[0] = gBattlerTarget; - gSprites[gBattlerSpriteIds[gBattlerTarget]].data[2] = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattlerTarget]], MON_DATA_SPECIES); + gSprites[gBattlerSpriteIds[gBattlerTarget]].data[2] = GetMonData(GetBattlerMon(gBattlerTarget), MON_DATA_SPECIES); StartSpriteAnim(&gSprites[gBattlerSpriteIds[gBattlerTarget]], 0); diff --git a/src/rom_header_gf.c b/src/rom_header_gf.c index af065b5e8b..182d879c83 100644 --- a/src/rom_header_gf.c +++ b/src/rom_header_gf.c @@ -23,8 +23,8 @@ struct GFRomHeader u8 gameName[32]; const struct CompressedSpriteSheet *monFrontPics; const struct CompressedSpriteSheet *monBackPics; - const struct CompressedSpritePalette *monNormalPalettes; - const struct CompressedSpritePalette *monShinyPalettes; + const struct SpritePalette *monNormalPalettes; + const struct SpritePalette *monShinyPalettes; const u8 *const *monIcons; const u8 *monIconPaletteIds; const struct SpritePalette *monIconPalettes; @@ -76,7 +76,7 @@ struct GFRomHeader const struct Item *items; const struct MoveInfo *moves; const struct CompressedSpriteSheet *ballGfx; - const struct CompressedSpritePalette *ballPalettes; + const struct SpritePalette *ballPalettes; u32 gcnLinkFlagsOffset; u32 gameClearFlag; u32 ribbonFlag; diff --git a/src/rotating_gate.c b/src/rotating_gate.c index 8d386dc65a..9dee8c89b7 100644 --- a/src/rotating_gate.c +++ b/src/rotating_gate.c @@ -741,7 +741,7 @@ static u8 RotatingGate_CreateGate(u8 gateId, s16 deltaX, s16 deltaY) template.tileTag = gate->shape + ROTATING_GATE_TILE_TAG; - spriteId = CreateSprite(&template, 0, 0, 0x93); + spriteId = CreateSprite(&template, 0, 0, OW_OBJECT_SUBPRIORITY - 1); // Above shadows if (spriteId == MAX_SPRITES) return MAX_SPRITES; diff --git a/src/rtc.c b/src/rtc.c index e5a8b2d1df..34f84183cf 100644 --- a/src/rtc.c +++ b/src/rtc.c @@ -1,9 +1,13 @@ #include "global.h" +#include "battle_pike.h" +#include "battle_pyramid.h" +#include "datetime.h" #include "rtc.h" #include "string_util.h" #include "strings.h" #include "text.h" #include "fake_rtc.h" +#include "overworld.h" // iwram bss static u16 sErrorStatus; @@ -18,7 +22,7 @@ COMMON_DATA struct Time gLocalTime = {0}; static const struct SiiRtcInfo sRtcDummy = {0, MONTH_JAN, 1}; // 2000 Jan 1 -static const s32 sNumDaysInMonths[MONTH_COUNT] = +const s32 sNumDaysInMonths[MONTH_COUNT] = { [MONTH_JAN - 1] = 31, [MONTH_FEB - 1] = 28, @@ -95,9 +99,6 @@ u16 RtcGetDayCount(struct SiiRtcInfo *rtc) { u8 year, month, day; - if (OW_USE_FAKE_RTC) - return rtc->day; - year = ConvertBcdToBinary(rtc->year); month = ConvertBcdToBinary(rtc->month); day = ConvertBcdToBinary(rtc->day); @@ -230,7 +231,7 @@ void RtcReset(void) { if (OW_USE_FAKE_RTC) { - memset(FakeRtc_GetCurrentTime(), 0, sizeof(struct Time)); + FakeRtc_Reset(); return; } @@ -325,16 +326,15 @@ bool8 IsBetweenHours(s32 hours, s32 begin, s32 end) return hours >= begin && hours < end; } -u8 GetTimeOfDay(void) +enum TimeOfDay GetTimeOfDay(void) { - RtcCalcLocalTime(); - if (IsBetweenHours(gLocalTime.hours, MORNING_HOUR_BEGIN, MORNING_HOUR_END)) - return TIME_MORNING; - else if (IsBetweenHours(gLocalTime.hours, EVENING_HOUR_BEGIN, EVENING_HOUR_END)) - return TIME_EVENING; - else if (IsBetweenHours(gLocalTime.hours, NIGHT_HOUR_BEGIN, NIGHT_HOUR_END)) - return TIME_NIGHT; - return TIME_DAY; + UpdateTimeOfDay(); + return gTimeOfDay; +} + +enum TimeOfDay GetTimeOfDayForDex(void) +{ + return OW_TIME_OF_DAY_ENCOUNTERS ? GetTimeOfDay() : TIME_OF_DAY_DEFAULT; } void RtcInitLocalTimeOffset(s32 hour, s32 minute) @@ -418,3 +418,49 @@ void FormatDecimalTimeWithoutSeconds(u8 *txtPtr, s8 hour, s8 minute, bool32 is24 *txtPtr++ = EOS; *txtPtr = EOS; } + +u16 GetFullYear(void) +{ + struct DateTime dateTime; + RtcCalcLocalTime(); + ConvertTimeToDateTime(&dateTime, &gLocalTime); + + return dateTime.year; +} + +enum Month GetMonth(void) +{ + struct DateTime dateTime; + RtcCalcLocalTime(); + ConvertTimeToDateTime(&dateTime, &gLocalTime); + + return dateTime.month; +} + +u8 GetDay(void) +{ + struct DateTime dateTime; + RtcCalcLocalTime(); + ConvertTimeToDateTime(&dateTime, &gLocalTime); + + return dateTime.day; +} + +enum Weekday GetDayOfWeek(void) +{ + struct DateTime dateTime; + RtcCalcLocalTime(); + ConvertTimeToDateTime(&dateTime, &gLocalTime); + + return dateTime.dayOfWeek; +} + +enum TimeOfDay TryIncrementTimeOfDay(enum TimeOfDay timeOfDay) +{ + return timeOfDay == TIME_NIGHT ? TIME_MORNING : timeOfDay + 1; +} + +enum TimeOfDay TryDecrementTimeOfDay(enum TimeOfDay timeOfDay) +{ + return timeOfDay == TIME_MORNING ? TIME_NIGHT : timeOfDay - 1; +} diff --git a/src/scrcmd.c b/src/scrcmd.c index 2d76927317..87bc8e6298 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -17,6 +17,7 @@ #include "event_object_lock.h" #include "event_object_movement.h" #include "event_scripts.h" +#include "fake_rtc.h" #include "field_message_box.h" #include "field_player_avatar.h" #include "field_screen_effect.h" @@ -24,6 +25,8 @@ #include "field_tasks.h" #include "field_weather.h" #include "fieldmap.h" +#include "follower_npc.h" +#include "gpu_regs.h" #include "item.h" #include "lilycove_lady.h" #include "main.h" @@ -55,6 +58,7 @@ #include "list_menu.h" #include "malloc.h" #include "constants/event_objects.h" +#include "constants/map_types.h" typedef u16 (*SpecialFunc)(void); typedef void (*NativeFunc)(struct ScriptContext *ctx); @@ -795,6 +799,13 @@ static bool8 IsPaletteNotActive(void) return FALSE; } +// pauses script until palette fade inactive +bool8 ScrFunc_WaitPaletteNotActive(struct ScriptContext *ctx) +{ + SetupNativeScript(ctx, IsPaletteNotActive); + return TRUE; +} + bool8 ScrCmd_fadescreen(struct ScriptContext *ctx) { u32 mode = ScriptReadByte(ctx); @@ -818,37 +829,28 @@ bool8 ScrCmd_fadescreenspeed(struct ScriptContext *ctx) return TRUE; } -static EWRAM_DATA u32 *sPalBuffer = NULL; - bool8 ScrCmd_fadescreenswapbuffers(struct ScriptContext *ctx) { u8 mode = ScriptReadByte(ctx); + u8 nowait = ScriptReadByte(ctx); Script_RequestEffects(SCREFF_V1 | SCREFF_HARDWARE); switch (mode) { - case FADE_TO_BLACK: - case FADE_TO_WHITE: - default: - if (sPalBuffer == NULL) - { - sPalBuffer = Alloc(PLTT_SIZE); - CpuCopy32(gPlttBufferUnfaded, sPalBuffer, PLTT_SIZE); - FadeScreen(mode, 0); - } - break; case FADE_FROM_BLACK: case FADE_FROM_WHITE: - if (sPalBuffer != NULL) - { - CpuCopy32(sPalBuffer, gPlttBufferUnfaded, PLTT_SIZE); - FadeScreen(mode, 0); - FREE_AND_SET_NULL(sPalBuffer); - } + // Restore last weather blend before fading in, + // since BLDALPHA was modified by fade-out + SetGpuReg(REG_OFFSET_BLDALPHA, + BLDALPHA_BLEND(gWeatherPtr->currBlendEVA, gWeatherPtr->currBlendEVB)); break; } + FadeScreenHardware(mode, 0); + + if (nowait) + return FALSE; SetupNativeScript(ctx, IsPaletteNotActive); return TRUE; } @@ -902,6 +904,14 @@ bool8 ScrCmd_gettime(struct ScriptContext *ctx) return FALSE; } +bool8 ScrCmd_gettimeofday(struct ScriptContext *ctx) +{ + Script_RequestEffects(SCREFF_V1); + + gSpecialVar_0x8000 = GetTimeOfDay(); + return FALSE; +} + bool8 ScrCmd_setweather(struct ScriptContext *ctx) { u16 weather = VarGet(ScriptReadHalfword(ctx)); @@ -1411,6 +1421,10 @@ bool8 ScrCmd_setobjectxy(struct ScriptContext *ctx) Script_RequestEffects(SCREFF_V1 | SCREFF_HARDWARE); + // Don't do follower NPC post-warp position set after setobjectxy. + if (localId == OBJ_EVENT_ID_NPC_FOLLOWER) + SetFollowerNPCData(FNPC_DATA_COME_OUT_DOOR, FNPC_DOOR_NO_POS_SET); + TryMoveObjectEventToMapCoords(localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, x, y); return FALSE; } @@ -1489,7 +1503,29 @@ bool8 ScrCmd_resetobjectsubpriority(struct ScriptContext *ctx) bool8 ScrCmd_faceplayer(struct ScriptContext *ctx) { Script_RequestEffects(SCREFF_V1 | SCREFF_HARDWARE); + if (PlayerHasFollowerNPC() + && gObjectEvents[GetFollowerNPCObjectId()].invisible == FALSE + && gSelectedObjectEvent == GetFollowerNPCObjectId()) + { + struct ObjectEvent *npcFollower = &gObjectEvents[GetFollowerNPCObjectId()]; + switch (DetermineFollowerNPCDirection(&gObjectEvents[gPlayerAvatar.objectEventId], npcFollower)) + { + case DIR_NORTH: + ScriptMovement_StartObjectMovementScript(OBJ_EVENT_ID_NPC_FOLLOWER, npcFollower->mapGroup, npcFollower->mapNum, Common_Movement_FaceUp); + break; + case DIR_SOUTH: + ScriptMovement_StartObjectMovementScript(OBJ_EVENT_ID_NPC_FOLLOWER, npcFollower->mapGroup, npcFollower->mapNum, Common_Movement_FaceDown); + break; + case DIR_EAST: + ScriptMovement_StartObjectMovementScript(OBJ_EVENT_ID_NPC_FOLLOWER, npcFollower->mapGroup, npcFollower->mapNum, Common_Movement_FaceRight); + break; + case DIR_WEST: + ScriptMovement_StartObjectMovementScript(OBJ_EVENT_ID_NPC_FOLLOWER, npcFollower->mapGroup, npcFollower->mapNum, Common_Movement_FaceLeft); + break; + } + return FALSE; + } if (gObjectEvents[gSelectedObjectEvent].active) ObjectEventFaceOppositeDirection(&gObjectEvents[gSelectedObjectEvent], GetPlayerFacingDirection()); return FALSE; @@ -2389,7 +2425,7 @@ bool8 ScrCmd_updatecoinsbox(struct ScriptContext *ctx) bool8 ScrCmd_trainerbattle(struct ScriptContext *ctx) { Script_RequestEffects(SCREFF_V1 | SCREFF_TRAINERBATTLE); - + TrainerBattleLoadArgs(ctx->scriptPtr); ctx->scriptPtr = BattleSetup_ConfigureTrainerBattle(ctx->scriptPtr); return FALSE; @@ -3131,6 +3167,77 @@ bool8 ScrFunc_hidefollower(struct ScriptContext *ctx) return TRUE; } +bool8 ScrCmd_addtime(struct ScriptContext *ctx) +{ + u32 days = ScriptReadWord(ctx); + u32 hours = ScriptReadWord(ctx); + u32 minutes = ScriptReadWord(ctx); + + Script_RequestEffects(SCREFF_V1 | SCREFF_SAVE); + + FakeRtc_AdvanceTimeBy(days, hours, minutes, 0); + + return FALSE; +} + +bool8 ScrCmd_adddays(struct ScriptContext *ctx) +{ + u32 days = ScriptReadWord(ctx); + + Script_RequestEffects(SCREFF_V1 | SCREFF_SAVE); + + FakeRtc_AdvanceTimeBy(days, 0, 0, 0); + + return FALSE; +} + +bool8 ScrCmd_addhours(struct ScriptContext *ctx) +{ + u32 hours = ScriptReadWord(ctx); + + Script_RequestEffects(SCREFF_V1 | SCREFF_SAVE); + + FakeRtc_AdvanceTimeBy(0, hours, 0, 0); + + return FALSE; +} + +bool8 ScrCmd_addminutes(struct ScriptContext *ctx) +{ + u32 minutes = ScriptReadWord(ctx); + + Script_RequestEffects(SCREFF_V1 | SCREFF_SAVE); + + FakeRtc_AdvanceTimeBy(0, 0, minutes, 0); + + return FALSE; +} + +bool8 ScrCmd_fwdtime(struct ScriptContext *ctx) +{ + u32 hours = ScriptReadWord(ctx); + u32 minutes = ScriptReadWord(ctx); + + Script_RequestEffects(SCREFF_V1 | SCREFF_SAVE); + + FakeRtc_ForwardTimeTo(hours, minutes, 0); + + return FALSE; +} + +bool8 ScrCmd_fwdweekday(struct ScriptContext *ctx) +{ + struct SiiRtcInfo *rtc = FakeRtc_GetCurrentTime(); + + u32 weekdayTarget = ScriptReadWord(ctx); + u32 daysToAdd = ((weekdayTarget - rtc->dayOfWeek) + WEEKDAY_COUNT) % WEEKDAY_COUNT; + + Script_RequestEffects(SCREFF_V1 | SCREFF_SAVE); + + FakeRtc_AdvanceTimeBy(daysToAdd, 0, 0, 0); + return FALSE; +} + void Script_EndTrainerCanSeeIf(struct ScriptContext *ctx) { u8 condition = ScriptReadByte(ctx); diff --git a/src/shop.c b/src/shop.c index 3f47600460..ac8a01a9b4 100644 --- a/src/shop.c +++ b/src/shop.c @@ -42,7 +42,7 @@ #include "constants/songs.h" #define TAG_SCROLL_ARROW 2100 -#define TAG_ITEM_ICON_BASE 2110 +#define TAG_ITEM_ICON_BASE 9110 // immune to time blending #define MAX_ITEMS_SHOWN 8 @@ -746,7 +746,7 @@ static void BuyMenuDecompressBgGraphics(void) { DecompressAndCopyTileDataToVram(1, gShopMenu_Gfx, 0x3A0, 0x3E3, 0); LZDecompressWram(gShopMenu_Tilemap, sShopData->tilemapBuffers[0]); - LoadCompressedPalette(gShopMenu_Pal, BG_PLTT_ID(12), PLTT_SIZE_4BPP); + LoadPalette(gShopMenu_Pal, BG_PLTT_ID(12), PLTT_SIZE_4BPP); } static void BuyMenuInitWindows(void) diff --git a/src/sprite.c b/src/sprite.c index 4acb4ee943..8367881e7d 100644 --- a/src/sprite.c +++ b/src/sprite.c @@ -26,6 +26,9 @@ #define SPRITE_TILE_IS_ALLOCATED(n) ((sSpriteTileAllocBitmap[(n) / 8] >> ((n) % 8)) & 1) +#if T_SHOULD_RUN_MOVE_ANIM +EWRAM_DATA bool32 gLoadFail = FALSE; +#endif // T_SHOULD_RUN_MOVE_ANIM struct SpriteCopyRequest { @@ -1449,6 +1452,10 @@ static u16 LoadSpriteSheetWithOffset(const struct SpriteSheet *sheet, u32 offset if (tileStart < 0) { +#if T_SHOULD_RUN_MOVE_ANIM + gLoadFail = TRUE; +#endif // T_SHOULD_RUN_MOVE_ANIM + DebugPrintf("Tile: %u", sheet->tag); return 0; } else @@ -1588,6 +1595,14 @@ u32 LoadSpritePalette(const struct SpritePalette *palette) } } +u32 LoadSpritePaletteWithTag(const u16 *pal, u16 tag) +{ + struct SpritePalette spritePal; + spritePal.data = pal; + spritePal.tag = tag; + return LoadSpritePalette(&spritePal); +} + void LoadSpritePalettes(const struct SpritePalette *palettes) { u32 i; @@ -1596,9 +1611,17 @@ void LoadSpritePalettes(const struct SpritePalette *palettes) break; } +u8 LoadSpritePaletteInSlot(const struct SpritePalette *palette, u8 paletteNum) +{ + paletteNum = min(15, paletteNum); + sSpritePaletteTags[paletteNum] = palette->tag; + DoLoadSpritePalette(palette->data, paletteNum * 16); + return paletteNum; +} + void DoLoadSpritePalette(const u16 *src, u16 paletteOffset) { - LoadPalette(src, OBJ_PLTT_OFFSET + paletteOffset, PLTT_SIZE_4BPP); + LoadPaletteFast(src, OBJ_PLTT_OFFSET + paletteOffset, PLTT_SIZE_4BPP); } u32 AllocSpritePalette(u16 tag) diff --git a/src/strings.c b/src/strings.c index c112db4616..3d1e1ebf32 100644 --- a/src/strings.c +++ b/src/strings.c @@ -320,6 +320,9 @@ const u8 gText_DoWhatWithMail[] = _("Do what with the MAIL?"); const u8 gText_ChoosePokemonCancel[] = _("Choose POKéMON or CANCEL."); const u8 gText_ChoosePokemonConfirm[] = _("Choose POKéMON and confirm."); const u8 gText_SendWhichMonToPC[] = _("Send which POKéMON to the PC?"); +const u8 gText_MoveItemWhere[] = _("Move item to where?"); +const u8 gText_XsYAnd[] = _("{STR_VAR_1}'s {STR_VAR_2} and\n"); +const u8 gText_XsYWereSwapped[] = _("{STR_VAR_1}'s {STR_VAR_2} were swapped!{PAUSE_UNTIL_PRESS}"); const u8 gText_EnjoyCycling[] = _("Let's enjoy cycling!"); const u8 gText_InUseAlready_PM[] = _("This is in use already."); const u8 gText_AlreadyHoldingOne[] = _("{STR_VAR_1} is already holding\none {STR_VAR_2}."); @@ -806,6 +809,8 @@ const u8 gText_ThankYou[] = _("THANK YOU"); const u8 gText_ByeBye[] = _("BYE-BYE!"); const u8 gText_PlayerScurriedToCenter[] = _("{PLAYER} scurried to a POKéMON CENTER,\nprotecting the exhausted and fainted\nPOKéMON from further harm…\p"); const u8 gText_PlayerScurriedBackHome[] = _("{PLAYER} scurried back home, protecting\nthe exhausted and fainted POKéMON from\nfurther harm…\p"); +const u8 gText_PlayerRegroupCenter[] = _("{PLAYER} went running back to a POKéMON CENTER\nto regroup and reconsider their battle\lstrategy…\p"); +const u8 gText_PlayerRegroupHome[] = _("{PLAYER} went running back home to regroup\nand reconsider their battle strategy…\p"); const u8 gText_HatchedFromEgg[] = _("{STR_VAR_1} hatched from the EGG!"); const u8 gText_NicknameHatchPrompt[] = _("Would you like to nickname the newly\nhatched {STR_VAR_1}?"); ALIGNED(4) const u8 gText_ReadyPickBerry[] = _("Are you ready to BERRY-CRUSH?\nPlease pick a BERRY for use.\p"); diff --git a/src/trade.c b/src/trade.c index 8ba22eac97..4d51cfbd9a 100644 --- a/src/trade.c +++ b/src/trade.c @@ -2790,7 +2790,7 @@ static void LoadTradeMonPic(u8 whichParty, u8 state) HandleLoadSpecialPokePic(TRUE, gMonSpritesGfxPtr->spritesGfx[whichParty * 2 + B_POSITION_OPPONENT_LEFT], species, personality); - LoadCompressedSpritePaletteWithTag(GetMonFrontSpritePal(mon), species); + LoadSpritePaletteWithTag(GetMonFrontSpritePal(mon), species); sTradeAnim->monSpecies[whichParty] = species; sTradeAnim->monPersonalities[whichParty] = personality; break; @@ -2962,7 +2962,7 @@ static void TradeAnimInit_LoadGfx(void) // Doing the graphics load. DecompressAndLoadBgGfxUsingHeap(0, gBattleTextboxTiles, 0, 0, 0); DecompressAndCopyToBgTilemapBuffer(0, gBattleTextboxTilemap, BG_SCREEN_SIZE, 0); - LoadCompressedPalette(gBattleTextboxPalette, BG_PLTT_ID(0), PLTT_SIZE_4BPP); + LoadPalette(gBattleTextboxPalette, BG_PLTT_ID(0), PLTT_SIZE_4BPP); InitWindows(sTradeSequenceWindowTemplates); } @@ -3410,7 +3410,7 @@ enum { static bool8 DoTradeAnim_Cable(void) { - u16 evoTarget; + u32 evoTarget; switch (sTradeAnim->state) { @@ -3846,9 +3846,12 @@ static bool8 DoTradeAnim_Cable(void) case STATE_TRY_EVOLUTION: // Only if in-game trade, link trades use CB2_TryLinkTradeEvolution TradeMons(gSpecialVar_0x8005, 0); gCB2_AfterEvolution = CB2_InGameTrade; - evoTarget = GetEvolutionTargetSpecies(&gPlayerParty[gSelectedTradeMonPositions[TRADE_PLAYER]], EVO_MODE_TRADE, ITEM_NONE, &gPlayerParty[gSelectedTradeMonPositions[TRADE_PARTNER]]); + evoTarget = GetEvolutionTargetSpecies(&gPlayerParty[gSelectedTradeMonPositions[TRADE_PLAYER]], EVO_MODE_TRADE, ITEM_NONE, &gPlayerParty[gSelectedTradeMonPositions[TRADE_PARTNER]], NULL, CHECK_EVO); if (evoTarget != SPECIES_NONE) + { + GetEvolutionTargetSpecies(&gPlayerParty[gSelectedTradeMonPositions[TRADE_PLAYER]], EVO_MODE_TRADE, ITEM_NONE, &gPlayerParty[gSelectedTradeMonPositions[TRADE_PARTNER]], NULL, DO_EVO); TradeEvolutionScene(&gPlayerParty[gSelectedTradeMonPositions[TRADE_PLAYER]], evoTarget, sTradeAnim->monSpriteIds[TRADE_PARTNER], gSelectedTradeMonPositions[TRADE_PLAYER]); + } sTradeAnim->state++; break; case STATE_FADE_OUT_END: @@ -3883,7 +3886,7 @@ static bool8 DoTradeAnim_Cable(void) static bool8 DoTradeAnim_Wireless(void) { - u16 evoTarget; + u32 evoTarget; switch (sTradeAnim->state) { @@ -4343,9 +4346,13 @@ static bool8 DoTradeAnim_Wireless(void) case STATE_TRY_EVOLUTION: // Only if in-game trade, link trades use CB2_TryLinkTradeEvolution TradeMons(gSpecialVar_0x8005, 0); gCB2_AfterEvolution = CB2_InGameTrade; - evoTarget = GetEvolutionTargetSpecies(&gPlayerParty[gSelectedTradeMonPositions[TRADE_PLAYER]], EVO_MODE_TRADE, ITEM_NONE, &gPlayerParty[gSelectedTradeMonPositions[TRADE_PARTNER]]); + evoTarget = GetEvolutionTargetSpecies(&gPlayerParty[gSelectedTradeMonPositions[TRADE_PLAYER]], EVO_MODE_TRADE, ITEM_NONE, &gPlayerParty[gSelectedTradeMonPositions[TRADE_PARTNER]], NULL, CHECK_EVO); if (evoTarget != SPECIES_NONE) + { + GetEvolutionTargetSpecies(&gPlayerParty[gSelectedTradeMonPositions[TRADE_PLAYER]], EVO_MODE_TRADE, ITEM_NONE, &gPlayerParty[gSelectedTradeMonPositions[TRADE_PARTNER]], NULL, DO_EVO); TradeEvolutionScene(&gPlayerParty[gSelectedTradeMonPositions[TRADE_PLAYER]], evoTarget, sTradeAnim->monSpriteIds[TRADE_PARTNER], gSelectedTradeMonPositions[TRADE_PLAYER]); + } + sTradeAnim->state++; break; case STATE_FADE_OUT_END: @@ -4377,7 +4384,7 @@ static bool8 DoTradeAnim_Wireless(void) // In-game trades resolve evolution during the trade sequence, in STATE_TRY_EVOLUTION static void CB2_TryLinkTradeEvolution(void) { - u16 evoTarget; + u32 evoTarget; switch (gMain.state) { case 0: @@ -4386,9 +4393,12 @@ static void CB2_TryLinkTradeEvolution(void) break; case 4: gCB2_AfterEvolution = CB2_SaveAndEndTrade; - evoTarget = GetEvolutionTargetSpecies(&gPlayerParty[gSelectedTradeMonPositions[TRADE_PLAYER]], EVO_MODE_TRADE, ITEM_NONE, &gPlayerParty[gSelectedTradeMonPositions[TRADE_PARTNER]]); + evoTarget = GetEvolutionTargetSpecies(&gPlayerParty[gSelectedTradeMonPositions[TRADE_PLAYER]], EVO_MODE_TRADE, ITEM_NONE, &gPlayerParty[gSelectedTradeMonPositions[TRADE_PARTNER]], NULL, CHECK_EVO); if (evoTarget != SPECIES_NONE) + { + GetEvolutionTargetSpecies(&gPlayerParty[gSelectedTradeMonPositions[TRADE_PLAYER]], EVO_MODE_TRADE, ITEM_NONE, &gPlayerParty[gSelectedTradeMonPositions[TRADE_PARTNER]], NULL, DO_EVO); TradeEvolutionScene(&gPlayerParty[gSelectedTradeMonPositions[TRADE_PLAYER]], evoTarget, sTradeAnim->monSpriteIds[TRADE_PARTNER], gSelectedTradeMonPositions[TRADE_PLAYER]); + } else if (IsWirelessTrade()) SetMainCallback2(CB2_SaveAndEndWirelessTrade); else diff --git a/src/trainer_hill.c b/src/trainer_hill.c index 717dc6b0b5..3b2b74e1ab 100644 --- a/src/trainer_hill.c +++ b/src/trainer_hill.c @@ -935,7 +935,7 @@ void FillHillTrainersParties(void) // This function is unused, but my best guess is // it was supposed to return AI scripts for trainer // hill trainers. -u32 GetTrainerHillAIFlags(void) +u64 GetTrainerHillAIFlags(void) { return (AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY); } diff --git a/src/trainer_pokemon_sprites.c b/src/trainer_pokemon_sprites.c index bd3a7f3e06..c15f4bc501 100644 --- a/src/trainer_pokemon_sprites.c +++ b/src/trainer_pokemon_sprites.c @@ -80,12 +80,12 @@ static void LoadPicPaletteByTagOrSlot(u16 species, bool8 isShiny, u32 personalit if (paletteTag == TAG_NONE) { sCreatingSpriteTemplate.paletteTag = TAG_NONE; - LoadCompressedPalette(GetMonSpritePalFromSpeciesAndPersonality(species, isShiny, personality), OBJ_PLTT_ID(paletteSlot), PLTT_SIZE_4BPP); + LoadPalette(GetMonSpritePalFromSpeciesAndPersonality(species, isShiny, personality), OBJ_PLTT_ID(paletteSlot), PLTT_SIZE_4BPP); } else { sCreatingSpriteTemplate.paletteTag = paletteTag; - LoadCompressedSpritePaletteWithTag(GetMonSpritePalFromSpeciesAndPersonality(species, isShiny, personality), species); + LoadSpritePaletteWithTag(GetMonSpritePalFromSpeciesAndPersonality(species, isShiny, personality), species); } } else @@ -93,12 +93,12 @@ static void LoadPicPaletteByTagOrSlot(u16 species, bool8 isShiny, u32 personalit if (paletteTag == TAG_NONE) { sCreatingSpriteTemplate.paletteTag = TAG_NONE; - LoadCompressedPalette(gTrainerSprites[species].palette.data, OBJ_PLTT_ID(paletteSlot), PLTT_SIZE_4BPP); + LoadPalette(gTrainerSprites[species].palette.data, OBJ_PLTT_ID(paletteSlot), PLTT_SIZE_4BPP); } else { sCreatingSpriteTemplate.paletteTag = paletteTag; - LoadCompressedSpritePalette(&gTrainerSprites[species].palette); + LoadSpritePalette(&gTrainerSprites[species].palette); } } } @@ -106,9 +106,9 @@ static void LoadPicPaletteByTagOrSlot(u16 species, bool8 isShiny, u32 personalit static void LoadPicPaletteBySlot(u16 species, bool8 isShiny, u32 personality, u8 paletteSlot, bool8 isTrainer) { if (!isTrainer) - LoadCompressedPalette(GetMonSpritePalFromSpeciesAndPersonality(species, isShiny, personality), PLTT_ID(paletteSlot), PLTT_SIZE_4BPP); + LoadPalette(GetMonSpritePalFromSpeciesAndPersonality(species, isShiny, personality), PLTT_ID(paletteSlot), PLTT_SIZE_4BPP); else - LoadCompressedPalette(gTrainerSprites[species].palette.data, PLTT_ID(paletteSlot), PLTT_SIZE_4BPP); + LoadPalette(gTrainerSprites[species].palette.data, PLTT_ID(paletteSlot), PLTT_SIZE_4BPP); } static void AssignSpriteAnimsTable(bool8 isTrainer) diff --git a/src/trainer_see.c b/src/trainer_see.c index baa23e822f..0a3b68f8c2 100644 --- a/src/trainer_see.c +++ b/src/trainer_see.c @@ -5,6 +5,7 @@ #include "event_scripts.h" #include "field_effect.h" #include "field_player_avatar.h" +#include "follower_npc.h" #include "pokemon.h" #include "script.h" #include "script_movement.h" @@ -630,6 +631,9 @@ static void StartTrainerApproach(TaskFunc followupFunc) else taskId = gApproachingTrainers[1].taskId; + if (PlayerHasFollowerNPC() && (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_ON_FOOT)) + ObjectEventForceSetHeldMovement(&gObjectEvents[GetFollowerNPCObjectId()], GetFaceDirectionAnimNum(gObjectEvents[GetFollowerNPCObjectId()].facingDirection)); + taskFunc = Task_RunTrainerSeeFuncList; SetTaskFuncWithFollowupFunc(taskId, taskFunc, followupFunc); gTasks[taskId].tFuncId = TRSEE_EXCLAMATION; diff --git a/src/trainer_slide.c b/src/trainer_slide.c index 209f47f0c3..3b94894a79 100644 --- a/src/trainer_slide.c +++ b/src/trainer_slide.c @@ -240,7 +240,7 @@ enum TrainerSlideTargets ShouldDoTrainerSlide(u32 battler, enum TrainerSlideType u32 retValue = TRAINER_SLIDE_TARGET_TRAINER_A; bool32 shouldRun = FALSE; - if (!(gBattleTypeFlags & BATTLE_TYPE_TRAINER) || GetBattlerSide(battler) != B_SIDE_OPPONENT) + if (!(gBattleTypeFlags & BATTLE_TYPE_TRAINER) || IsOnPlayerSide(battler)) return TRAINER_SLIDE_TARGET_NONE; SetTrainerSlideParamters(battler, &firstId, &lastId, &trainerId, &retValue); @@ -319,7 +319,7 @@ void TryInitializeFirstSTABMoveTrainerSlide(u32 battlerDef, u32 battlerAtk, u32 if (IsSlideInitalizedOrPlayed(slideId)) return; - if ((GetBattlerSide(battlerDef) == B_SIDE_PLAYER)) + if ((IsOnPlayerSide(battlerDef))) return; if (IS_BATTLER_OF_TYPE(battlerAtk, moveType) == FALSE) @@ -335,7 +335,7 @@ void TryInitializeTrainerSlidePlayerLandsFirstCriticalHit(u32 target) if (IsSlideInitalizedOrPlayed(slideId)) return; - if (GetBattlerSide(target) == B_SIDE_PLAYER) + if (IsOnPlayerSide(target)) return; InitalizeTrainerSlide(slideId); @@ -348,7 +348,7 @@ void TryInitializeTrainerSlideEnemyLandsFirstCriticalHit(u32 target) if (IsSlideInitalizedOrPlayed(slideId)) return; - if (GetBattlerSide(target) == B_SIDE_OPPONENT) + if (!IsOnPlayerSide(target)) return; InitalizeTrainerSlide(slideId); @@ -361,7 +361,7 @@ void TryInitializeTrainerSlidePlayerLandsFirstSuperEffectiveHit(u32 target) if (IsSlideInitalizedOrPlayed(slideId)) return; - if (GetBattlerSide(target) == B_SIDE_PLAYER) + if (IsOnPlayerSide(target)) return; InitalizeTrainerSlide(slideId); @@ -374,7 +374,7 @@ void TryInitializeTrainerSlideEnemyMonUnaffected(u32 target) if (IsSlideInitalizedOrPlayed(slideId)) return; - if (GetBattlerSide(target) != B_SIDE_OPPONENT) + if (IsOnPlayerSide(target)) return; InitalizeTrainerSlide(slideId); diff --git a/src/type_icons.c b/src/type_icons.c index 41fa102bb9..c47690fcae 100644 --- a/src/type_icons.c +++ b/src/type_icons.c @@ -15,7 +15,8 @@ static void LoadTypeIconsPerBattler(u32, u32); static bool32 UseDoubleBattleCoords(u32); static u32 GetMonPublicType(u32, u32); -static bool32 ShouldHideUncaughtType(u32); +static bool32 ShouldHideUncaughtType(u32 species); +static bool32 ShouldHideUnseenType(u32 species); static u32 GetMonDefensiveTeraType(struct Pokemon *, struct Pokemon*, u32, u32, u32, u32); static u32 IsIllusionActiveAndTypeUnchanged(struct Pokemon*, u32, u32); @@ -178,13 +179,13 @@ const union AnimCmd *const sSpriteAnimTable_TypeIcons[] = [TYPE_STELLAR] = sSpriteAnim_TypeIcon_Mystery, }; -const struct CompressedSpritePalette sTypeIconPal1 = +const struct SpritePalette sTypeIconPal1 = { .data = gBattleIcons_Pal1, .tag = TYPE_ICON_TAG }; -const struct CompressedSpritePalette sTypeIconPal2 = +const struct SpritePalette sTypeIconPal2 = { .data = gBattleIcons_Pal2, .tag = TYPE_ICON_TAG_2 @@ -239,7 +240,11 @@ void LoadTypeIcons(u32 battler) { u32 position; - if (B_SHOW_TYPES == SHOW_TYPES_NEVER) + struct Pokemon* mon = GetBattlerMon(battler); + u32 species = GetMonData(mon, MON_DATA_SPECIES, NULL); + + if (B_SHOW_TYPES == SHOW_TYPES_NEVER + || (B_SHOW_TYPES == SHOW_TYPES_SEEN && !GetSetPokedexFlag(SpeciesToNationalPokedexNum(species), FLAG_GET_SEEN))) return; LoadTypeSpritesAndPalettes(); @@ -255,8 +260,8 @@ static void LoadTypeSpritesAndPalettes(void) LoadCompressedSpriteSheet(&sSpriteSheet_TypeIcons1); LoadCompressedSpriteSheet(&sSpriteSheet_TypeIcons2); - LoadCompressedSpritePalette(&sTypeIconPal1); - LoadCompressedSpritePalette(&sTypeIconPal2); + LoadSpritePalette(&sTypeIconPal1); + LoadSpritePalette(&sTypeIconPal2); } static void LoadTypeIconsPerBattler(u32 battler, u32 position) @@ -291,12 +296,12 @@ static bool32 UseDoubleBattleCoords(u32 position) static u32 GetMonPublicType(u32 battlerId, u32 typeNum) { - struct Pokemon* mon = GetPartyBattlerData(battlerId); + struct Pokemon* mon = GetBattlerMon(battlerId); u32 monSpecies = GetMonData(mon,MON_DATA_SPECIES,NULL); struct Pokemon* monIllusion; u32 illusionSpecies; - if (ShouldHideUncaughtType(monSpecies)) + if (ShouldHideUncaughtType(monSpecies) || ShouldHideUnseenType(monSpecies)) return TYPE_MYSTERY; monIllusion = GetIllusionMonPtr(battlerId); @@ -316,7 +321,18 @@ static bool32 ShouldHideUncaughtType(u32 species) if (B_SHOW_TYPES != SHOW_TYPES_CAUGHT) return FALSE; - if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(species),FLAG_GET_CAUGHT)) + if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(species), FLAG_GET_CAUGHT)) + return FALSE; + + return TRUE; +} + +static bool32 ShouldHideUnseenType(u32 species) +{ + if (B_SHOW_TYPES != SHOW_TYPES_SEEN) + return FALSE; + + if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(species), FLAG_GET_SEEN)) return FALSE; return TRUE; diff --git a/src/util.c b/src/util.c index 002b2fabf0..6fb123662b 100644 --- a/src/util.c +++ b/src/util.c @@ -228,6 +228,7 @@ u32 CalcByteArraySum(const u8 *data, u32 length) void BlendPalette(u16 palOffset, u16 numEntries, u8 coeff, u32 blendColor) { u16 i; + struct PlttData *data2 = (struct PlttData *) & blendColor; for (i = 0; i < numEntries; i++) { u16 index = i + palOffset; @@ -235,7 +236,7 @@ void BlendPalette(u16 palOffset, u16 numEntries, u8 coeff, u32 blendColor) s8 r = data1->r; s8 g = data1->g; s8 b = data1->b; - struct PlttData *data2 = (struct PlttData *)&blendColor; + gPlttBufferFaded[index] = RGB(r + (((data2->r - r) * coeff) >> 4), g + (((data2->g - g) * coeff) >> 4), b + (((data2->b - b) * coeff) >> 4)); diff --git a/src/wild_encounter.c b/src/wild_encounter.c index 3d59e855b6..37b6a43443 100644 --- a/src/wild_encounter.c +++ b/src/wild_encounter.c @@ -3,6 +3,7 @@ #include "pokemon.h" #include "metatile_behavior.h" #include "fieldmap.h" +#include "follower_npc.h" #include "random.h" #include "field_player_avatar.h" #include "event_data.h" @@ -37,25 +38,16 @@ extern const u8 EventScript_SprayWoreOff[]; #define NUM_FISHING_SPOTS_3 149 #define NUM_FISHING_SPOTS (NUM_FISHING_SPOTS_1 + NUM_FISHING_SPOTS_2 + NUM_FISHING_SPOTS_3) -enum { - WILD_AREA_LAND, - WILD_AREA_WATER, - WILD_AREA_ROCKS, - WILD_AREA_FISHING, -}; - #define WILD_CHECK_REPEL (1 << 0) #define WILD_CHECK_KEEN_EYE (1 << 1) -#define HEADER_NONE 0xFFFF - 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); -static u8 GetMaxLevelOfSpeciesInWildTable(const struct WildPokemon *wildMon, u16 species, u8 area); +static u8 GetMaxLevelOfSpeciesInWildTable(const struct WildPokemon *wildMon, u16 species, enum WildPokemonArea area); #ifdef BUGFIX static bool8 TryGetAbilityInfluencedWildMonIndex(const struct WildPokemon *wildMon, u8 type, u16 ability, u8 *monIndex, u32 size); #else @@ -305,7 +297,7 @@ static u8 ChooseWildMonIndex_Fishing(u8 rod) return wildMonIndex; } -static u8 ChooseWildMonLevel(const struct WildPokemon *wildPokemon, u8 wildMonIndex, u8 area) +static u8 ChooseWildMonLevel(const struct WildPokemon *wildPokemon, u8 wildMonIndex, enum WildPokemonArea area) { u8 min; u8 max; @@ -384,6 +376,87 @@ u16 GetCurrentMapWildMonHeaderId(void) return HEADER_NONE; } +enum TimeOfDay GetTimeOfDayForEncounters(u32 headerId, enum WildPokemonArea area) +{ + const struct WildPokemonInfo *wildMonInfo; + enum TimeOfDay timeOfDay = GetTimeOfDay(); + + if (!OW_TIME_OF_DAY_ENCOUNTERS) + return TIME_OF_DAY_DEFAULT; + + if (InBattlePike()) + { + switch (area) + { + default: + case WILD_AREA_LAND: + wildMonInfo = gBattlePikeWildMonHeaders[headerId].encounterTypes[timeOfDay].landMonsInfo; + break; + case WILD_AREA_WATER: + wildMonInfo = gBattlePikeWildMonHeaders[headerId].encounterTypes[timeOfDay].waterMonsInfo; + break; + case WILD_AREA_ROCKS: + wildMonInfo = gBattlePikeWildMonHeaders[headerId].encounterTypes[timeOfDay].rockSmashMonsInfo; + break; + case WILD_AREA_FISHING: + wildMonInfo = gBattlePikeWildMonHeaders[headerId].encounterTypes[timeOfDay].fishingMonsInfo; + break; + case WILD_AREA_HIDDEN: + wildMonInfo = gBattlePikeWildMonHeaders[headerId].encounterTypes[timeOfDay].hiddenMonsInfo; + break; + } + } + else if (InBattlePyramid()) + { + switch (area) + { + default: + case WILD_AREA_LAND: + wildMonInfo = gBattlePyramidWildMonHeaders[headerId].encounterTypes[timeOfDay].landMonsInfo; + break; + case WILD_AREA_WATER: + wildMonInfo = gBattlePyramidWildMonHeaders[headerId].encounterTypes[timeOfDay].waterMonsInfo; + break; + case WILD_AREA_ROCKS: + wildMonInfo = gBattlePyramidWildMonHeaders[headerId].encounterTypes[timeOfDay].rockSmashMonsInfo; + break; + case WILD_AREA_FISHING: + wildMonInfo = gBattlePyramidWildMonHeaders[headerId].encounterTypes[timeOfDay].fishingMonsInfo; + break; + case WILD_AREA_HIDDEN: + wildMonInfo = gBattlePyramidWildMonHeaders[headerId].encounterTypes[timeOfDay].hiddenMonsInfo; + break; + } + } + else + { + switch (area) + { + default: + case WILD_AREA_LAND: + wildMonInfo = gWildMonHeaders[headerId].encounterTypes[timeOfDay].landMonsInfo; + break; + case WILD_AREA_WATER: + wildMonInfo = gWildMonHeaders[headerId].encounterTypes[timeOfDay].waterMonsInfo; + break; + case WILD_AREA_ROCKS: + wildMonInfo = gWildMonHeaders[headerId].encounterTypes[timeOfDay].rockSmashMonsInfo; + break; + case WILD_AREA_FISHING: + wildMonInfo = gWildMonHeaders[headerId].encounterTypes[timeOfDay].fishingMonsInfo; + break; + case WILD_AREA_HIDDEN: + wildMonInfo = gWildMonHeaders[headerId].encounterTypes[timeOfDay].hiddenMonsInfo; + break; + } + } + + if (wildMonInfo == NULL && !OW_TIME_OF_DAY_DISABLE_FALLBACK) + return OW_TIME_OF_DAY_FALLBACK; + else + return timeOfDay; +} + u8 PickWildMonNature(void) { u8 i; @@ -459,7 +532,7 @@ void CreateWildMon(u16 species, u8 level) #define TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildPokemon, type, ability, ptr, count) TryGetAbilityInfluencedWildMonIndex(wildPokemon, type, ability, ptr) #endif -static bool8 TryGenerateWildMon(const struct WildPokemonInfo *wildMonInfo, u8 area, u8 flags) +static bool8 TryGenerateWildMon(const struct WildPokemonInfo *wildMonInfo, enum WildPokemonArea area, u8 flags) { u8 wildMonIndex = 0; u8 level; @@ -501,6 +574,10 @@ static bool8 TryGenerateWildMon(const struct WildPokemonInfo *wildMonInfo, u8 ar case WILD_AREA_ROCKS: wildMonIndex = ChooseWildMonIndex_WaterRock(); break; + default: + case WILD_AREA_FISHING: + case WILD_AREA_HIDDEN: + break; } level = ChooseWildMonLevel(wildMonInfo->wildPokemon, wildMonIndex, area); @@ -621,7 +698,8 @@ static bool8 AreLegendariesInSootopolisPreventingEncounters(void) bool8 StandardWildEncounter(u16 curMetatileBehavior, u16 prevMetatileBehavior) { - u16 headerId; + u32 headerId; + enum TimeOfDay timeOfDay; struct Roamer *roamer; if (sWildEncountersDisabled == TRUE) @@ -633,11 +711,13 @@ bool8 StandardWildEncounter(u16 curMetatileBehavior, u16 prevMetatileBehavior) if (gMapHeader.mapLayoutId == LAYOUT_BATTLE_FRONTIER_BATTLE_PIKE_ROOM_WILD_MONS) { headerId = GetBattlePikeWildMonHeaderId(); + timeOfDay = GetTimeOfDayForEncounters(headerId, WILD_AREA_LAND); + if (prevMetatileBehavior != curMetatileBehavior && !AllowWildCheckOnNewMetatile()) return FALSE; - else if (WildEncounterCheck(gBattlePikeWildMonHeaders[headerId].landMonsInfo->encounterRate, FALSE) != TRUE) + else if (WildEncounterCheck(gBattlePikeWildMonHeaders[headerId].encounterTypes[timeOfDay].landMonsInfo->encounterRate, FALSE) != TRUE) return FALSE; - else if (TryGenerateWildMon(gBattlePikeWildMonHeaders[headerId].landMonsInfo, WILD_AREA_LAND, WILD_CHECK_KEEN_EYE) != TRUE) + else if (TryGenerateWildMon(gBattlePikeWildMonHeaders[headerId].encounterTypes[timeOfDay].landMonsInfo, WILD_AREA_LAND, WILD_CHECK_KEEN_EYE) != TRUE) return FALSE; else if (!TryGenerateBattlePikeWildMon(TRUE)) return FALSE; @@ -648,11 +728,13 @@ bool8 StandardWildEncounter(u16 curMetatileBehavior, u16 prevMetatileBehavior) if (gMapHeader.mapLayoutId == LAYOUT_BATTLE_FRONTIER_BATTLE_PYRAMID_FLOOR) { headerId = gSaveBlock2Ptr->frontier.curChallengeBattleNum; + timeOfDay = GetTimeOfDayForEncounters(headerId, WILD_AREA_LAND); + if (prevMetatileBehavior != curMetatileBehavior && !AllowWildCheckOnNewMetatile()) return FALSE; - else if (WildEncounterCheck(gBattlePyramidWildMonHeaders[headerId].landMonsInfo->encounterRate, FALSE) != TRUE) + else if (WildEncounterCheck(gBattlePikeWildMonHeaders[headerId].encounterTypes[timeOfDay].landMonsInfo->encounterRate, FALSE) != TRUE) return FALSE; - else if (TryGenerateWildMon(gBattlePyramidWildMonHeaders[headerId].landMonsInfo, WILD_AREA_LAND, WILD_CHECK_KEEN_EYE) != TRUE) + else if (TryGenerateWildMon(gBattlePikeWildMonHeaders[headerId].encounterTypes[timeOfDay].landMonsInfo, WILD_AREA_LAND, WILD_CHECK_KEEN_EYE) != TRUE) return FALSE; GenerateBattlePyramidWildMon(); @@ -664,11 +746,13 @@ bool8 StandardWildEncounter(u16 curMetatileBehavior, u16 prevMetatileBehavior) { if (MetatileBehavior_IsLandWildEncounter(curMetatileBehavior) == TRUE) { - if (gWildMonHeaders[headerId].landMonsInfo == NULL) + timeOfDay = GetTimeOfDayForEncounters(headerId, WILD_AREA_LAND); + + if (gWildMonHeaders[headerId].encounterTypes[timeOfDay].landMonsInfo == NULL) return FALSE; else if (prevMetatileBehavior != curMetatileBehavior && !AllowWildCheckOnNewMetatile()) return FALSE; - else if (WildEncounterCheck(gWildMonHeaders[headerId].landMonsInfo->encounterRate, FALSE) != TRUE) + else if (WildEncounterCheck(gWildMonHeaders[headerId].encounterTypes[timeOfDay].landMonsInfo->encounterRate, FALSE) != TRUE) return FALSE; if (TryStartRoamerEncounter()) @@ -689,12 +773,12 @@ bool8 StandardWildEncounter(u16 curMetatileBehavior, u16 prevMetatileBehavior) } // try a regular wild land encounter - if (TryGenerateWildMon(gWildMonHeaders[headerId].landMonsInfo, WILD_AREA_LAND, WILD_CHECK_REPEL | WILD_CHECK_KEEN_EYE) == TRUE) + if (TryGenerateWildMon(gWildMonHeaders[headerId].encounterTypes[timeOfDay].landMonsInfo, WILD_AREA_LAND, WILD_CHECK_REPEL | WILD_CHECK_KEEN_EYE) == TRUE) { if (TryDoDoubleWildBattle()) { struct Pokemon mon1 = gEnemyParty[0]; - TryGenerateWildMon(gWildMonHeaders[headerId].landMonsInfo, WILD_AREA_LAND, WILD_CHECK_KEEN_EYE); + TryGenerateWildMon(gWildMonHeaders[headerId].encounterTypes[timeOfDay].landMonsInfo, WILD_AREA_LAND, WILD_CHECK_KEEN_EYE); gEnemyParty[1] = mon1; BattleSetup_StartDoubleWildBattle(); } @@ -711,13 +795,15 @@ bool8 StandardWildEncounter(u16 curMetatileBehavior, u16 prevMetatileBehavior) else if (MetatileBehavior_IsWaterWildEncounter(curMetatileBehavior) == TRUE || (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING) && MetatileBehavior_IsBridgeOverWater(curMetatileBehavior) == TRUE)) { + timeOfDay = GetTimeOfDayForEncounters(headerId, WILD_AREA_WATER); + if (AreLegendariesInSootopolisPreventingEncounters() == TRUE) return FALSE; - else if (gWildMonHeaders[headerId].waterMonsInfo == NULL) + else if (gWildMonHeaders[headerId].encounterTypes[timeOfDay].waterMonsInfo == NULL) return FALSE; else if (prevMetatileBehavior != curMetatileBehavior && !AllowWildCheckOnNewMetatile()) return FALSE; - else if (WildEncounterCheck(gWildMonHeaders[headerId].waterMonsInfo->encounterRate, FALSE) != TRUE) + else if (WildEncounterCheck(gWildMonHeaders[headerId].encounterTypes[timeOfDay].waterMonsInfo->encounterRate, FALSE) != TRUE) return FALSE; if (TryStartRoamerEncounter()) @@ -731,13 +817,13 @@ bool8 StandardWildEncounter(u16 curMetatileBehavior, u16 prevMetatileBehavior) } else // try a regular surfing encounter { - if (TryGenerateWildMon(gWildMonHeaders[headerId].waterMonsInfo, WILD_AREA_WATER, WILD_CHECK_REPEL | WILD_CHECK_KEEN_EYE) == TRUE) + if (TryGenerateWildMon(gWildMonHeaders[headerId].encounterTypes[timeOfDay].waterMonsInfo, WILD_AREA_WATER, WILD_CHECK_REPEL | WILD_CHECK_KEEN_EYE) == TRUE) { gIsSurfingEncounter = TRUE; if (TryDoDoubleWildBattle()) { struct Pokemon mon1 = gEnemyParty[0]; - TryGenerateWildMon(gWildMonHeaders[headerId].waterMonsInfo, WILD_AREA_WATER, WILD_CHECK_KEEN_EYE); + TryGenerateWildMon(gWildMonHeaders[headerId].encounterTypes[timeOfDay].waterMonsInfo, WILD_AREA_WATER, WILD_CHECK_KEEN_EYE); gEnemyParty[1] = mon1; BattleSetup_StartDoubleWildBattle(); } @@ -758,11 +844,14 @@ bool8 StandardWildEncounter(u16 curMetatileBehavior, u16 prevMetatileBehavior) void RockSmashWildEncounter(void) { - u16 headerId = GetCurrentMapWildMonHeaderId(); + u32 headerId = GetCurrentMapWildMonHeaderId(); + enum TimeOfDay timeOfDay; if (headerId != HEADER_NONE) { - const struct WildPokemonInfo *wildPokemonInfo = gWildMonHeaders[headerId].rockSmashMonsInfo; + timeOfDay = GetTimeOfDayForEncounters(headerId, WILD_AREA_ROCKS); + + const struct WildPokemonInfo *wildPokemonInfo = gWildMonHeaders[headerId].encounterTypes[timeOfDay].rockSmashMonsInfo; if (wildPokemonInfo == NULL) { @@ -771,8 +860,18 @@ void RockSmashWildEncounter(void) else if (WildEncounterCheck(wildPokemonInfo->encounterRate, TRUE) == TRUE && TryGenerateWildMon(wildPokemonInfo, WILD_AREA_ROCKS, WILD_CHECK_REPEL | WILD_CHECK_KEEN_EYE) == TRUE) { - BattleSetup_StartWildBattle(); - gSpecialVar_Result = TRUE; + if (TryDoDoubleWildBattle()) + { + struct Pokemon mon1 = gEnemyParty[0]; + TryGenerateWildMon(wildPokemonInfo, WILD_AREA_ROCKS, WILD_CHECK_REPEL | WILD_CHECK_KEEN_EYE); + gEnemyParty[1] = mon1; + BattleSetup_StartDoubleWildBattle(); + gSpecialVar_Result = TRUE; + } + else { + BattleSetup_StartWildBattle(); + gSpecialVar_Result = TRUE; + } } else { @@ -788,7 +887,8 @@ void RockSmashWildEncounter(void) bool8 SweetScentWildEncounter(void) { s16 x, y; - u16 headerId; + u32 headerId; + enum TimeOfDay timeOfDay; PlayerGetDestCoords(&x, &y); headerId = GetCurrentMapWildMonHeaderId(); @@ -797,7 +897,9 @@ bool8 SweetScentWildEncounter(void) if (gMapHeader.mapLayoutId == LAYOUT_BATTLE_FRONTIER_BATTLE_PIKE_ROOM_WILD_MONS) { headerId = GetBattlePikeWildMonHeaderId(); - if (TryGenerateWildMon(gBattlePikeWildMonHeaders[headerId].landMonsInfo, WILD_AREA_LAND, 0) != TRUE) + timeOfDay = GetTimeOfDayForEncounters(headerId, WILD_AREA_LAND); + + if (TryGenerateWildMon(gBattlePikeWildMonHeaders[headerId].encounterTypes[timeOfDay].landMonsInfo, WILD_AREA_LAND, 0) != TRUE) return FALSE; TryGenerateBattlePikeWildMon(FALSE); @@ -807,7 +909,9 @@ bool8 SweetScentWildEncounter(void) if (gMapHeader.mapLayoutId == LAYOUT_BATTLE_FRONTIER_BATTLE_PYRAMID_FLOOR) { headerId = gSaveBlock2Ptr->frontier.curChallengeBattleNum; - if (TryGenerateWildMon(gBattlePyramidWildMonHeaders[headerId].landMonsInfo, WILD_AREA_LAND, 0) != TRUE) + timeOfDay = GetTimeOfDayForEncounters(headerId, WILD_AREA_LAND); + + if (TryGenerateWildMon(gBattlePyramidWildMonHeaders[headerId].encounterTypes[timeOfDay].landMonsInfo, WILD_AREA_LAND, 0) != TRUE) return FALSE; GenerateBattlePyramidWildMon(); @@ -819,7 +923,9 @@ bool8 SweetScentWildEncounter(void) { if (MetatileBehavior_IsLandWildEncounter(MapGridGetMetatileBehaviorAt(x, y)) == TRUE) { - if (gWildMonHeaders[headerId].landMonsInfo == NULL) + timeOfDay = GetTimeOfDayForEncounters(headerId, WILD_AREA_LAND); + + if (gWildMonHeaders[headerId].encounterTypes[timeOfDay].landMonsInfo == NULL) return FALSE; if (TryStartRoamerEncounter()) @@ -831,16 +937,18 @@ bool8 SweetScentWildEncounter(void) if (DoMassOutbreakEncounterTest() == TRUE) SetUpMassOutbreakEncounter(0); else - TryGenerateWildMon(gWildMonHeaders[headerId].landMonsInfo, WILD_AREA_LAND, 0); + TryGenerateWildMon(gWildMonHeaders[headerId].encounterTypes[timeOfDay].landMonsInfo, WILD_AREA_LAND, 0); BattleSetup_StartWildBattle(); return TRUE; } else if (MetatileBehavior_IsWaterWildEncounter(MapGridGetMetatileBehaviorAt(x, y)) == TRUE) { + timeOfDay = GetTimeOfDayForEncounters(headerId, WILD_AREA_WATER); + if (AreLegendariesInSootopolisPreventingEncounters() == TRUE) return FALSE; - if (gWildMonHeaders[headerId].waterMonsInfo == NULL) + if (gWildMonHeaders[headerId].encounterTypes[timeOfDay].waterMonsInfo == NULL) return FALSE; if (TryStartRoamerEncounter()) @@ -849,7 +957,7 @@ bool8 SweetScentWildEncounter(void) return TRUE; } - TryGenerateWildMon(gWildMonHeaders[headerId].waterMonsInfo, WILD_AREA_WATER, 0); + TryGenerateWildMon(gWildMonHeaders[headerId].encounterTypes[timeOfDay].waterMonsInfo, WILD_AREA_WATER, 0); BattleSetup_StartWildBattle(); return TRUE; } @@ -860,9 +968,10 @@ bool8 SweetScentWildEncounter(void) bool8 DoesCurrentMapHaveFishingMons(void) { - u16 headerId = GetCurrentMapWildMonHeaderId(); + u32 headerId = GetCurrentMapWildMonHeaderId(); + enum TimeOfDay timeOfDay = GetTimeOfDayForEncounters(headerId, WILD_AREA_FISHING); - if (headerId != HEADER_NONE && gWildMonHeaders[headerId].fishingMonsInfo != NULL) + if (headerId != HEADER_NONE && gWildMonHeaders[headerId].encounterTypes[timeOfDay].fishingMonsInfo != NULL) return TRUE; else return FALSE; @@ -887,6 +996,8 @@ static void UpdateChainFishingStreak() void FishingWildEncounter(u8 rod) { u16 species; + u32 headerId; + enum TimeOfDay timeOfDay; gIsFishingEncounter = TRUE; if (CheckFeebas() == TRUE) @@ -898,7 +1009,9 @@ void FishingWildEncounter(u8 rod) } else { - species = GenerateFishingWildMon(gWildMonHeaders[GetCurrentMapWildMonHeaderId()].fishingMonsInfo, rod); + headerId = GetCurrentMapWildMonHeaderId(); + timeOfDay = GetTimeOfDayForEncounters(headerId, WILD_AREA_FISHING); + species = GenerateFishingWildMon(gWildMonHeaders[headerId].encounterTypes[timeOfDay].fishingMonsInfo, rod); } IncrementGameStat(GAME_STAT_FISHING_ENCOUNTERS); @@ -908,7 +1021,8 @@ void FishingWildEncounter(u8 rod) u16 GetLocalWildMon(bool8 *isWaterMon) { - u16 headerId; + u32 headerId; + enum TimeOfDay timeOfDay; const struct WildPokemonInfo *landMonsInfo; const struct WildPokemonInfo *waterMonsInfo; @@ -916,8 +1030,13 @@ u16 GetLocalWildMon(bool8 *isWaterMon) headerId = GetCurrentMapWildMonHeaderId(); if (headerId == HEADER_NONE) return SPECIES_NONE; - landMonsInfo = gWildMonHeaders[headerId].landMonsInfo; - waterMonsInfo = gWildMonHeaders[headerId].waterMonsInfo; + + timeOfDay = GetTimeOfDayForEncounters(headerId, WILD_AREA_LAND); + landMonsInfo = gWildMonHeaders[headerId].encounterTypes[timeOfDay].landMonsInfo; + + timeOfDay = GetTimeOfDayForEncounters(headerId, WILD_AREA_WATER); + waterMonsInfo = gWildMonHeaders[headerId].encounterTypes[timeOfDay].waterMonsInfo; + // Neither if (landMonsInfo == NULL && waterMonsInfo == NULL) return SPECIES_NONE; @@ -944,11 +1063,14 @@ u16 GetLocalWildMon(bool8 *isWaterMon) u16 GetLocalWaterMon(void) { - u16 headerId = GetCurrentMapWildMonHeaderId(); + u32 headerId = GetCurrentMapWildMonHeaderId(); + enum TimeOfDay timeOfDay; if (headerId != HEADER_NONE) { - const struct WildPokemonInfo *waterMonsInfo = gWildMonHeaders[headerId].waterMonsInfo; + timeOfDay = GetTimeOfDayForEncounters(headerId, WILD_AREA_WATER); + + const struct WildPokemonInfo *waterMonsInfo = gWildMonHeaders[headerId].encounterTypes[timeOfDay].waterMonsInfo; if (waterMonsInfo) return waterMonsInfo->wildPokemon[ChooseWildMonIndex_WaterRock()].species; @@ -1053,7 +1175,7 @@ static bool8 TryGetRandomWildMonIndexByType(const struct WildPokemon *wildMon, u #include "data.h" -static u8 GetMaxLevelOfSpeciesInWildTable(const struct WildPokemon *wildMon, u16 species, u8 area) +static u8 GetMaxLevelOfSpeciesInWildTable(const struct WildPokemon *wildMon, u16 species, enum WildPokemonArea area) { u8 i, maxLevel = 0, numMon = 0; @@ -1068,6 +1190,10 @@ static u8 GetMaxLevelOfSpeciesInWildTable(const struct WildPokemon *wildMon, u16 case WILD_AREA_ROCKS: numMon = ROCK_WILD_COUNT; break; + default: + case WILD_AREA_FISHING: + case WILD_AREA_HIDDEN: + break; } for (i = 0; i < numMon; i++) @@ -1118,6 +1244,9 @@ bool8 TryDoDoubleWildBattle(void) if (GetSafariZoneFlag() || (B_DOUBLE_WILD_REQUIRE_2_MONS == TRUE && GetMonsStateToDoubles() != PLAYER_HAS_TWO_USABLE_MONS)) return FALSE; + if (FollowerNPCIsBattlePartner() && FNPC_FLAG_PARTNER_WILD_BATTLES != 0 + && (FNPC_FLAG_PARTNER_WILD_BATTLES == FNPC_ALWAYS || FlagGet(FNPC_FLAG_PARTNER_WILD_BATTLES)) && FNPC_NPC_FOLLOWER_WILD_BATTLE_VS_2 == TRUE) + return TRUE; else if (B_FLAG_FORCE_DOUBLE_WILD != 0 && FlagGet(B_FLAG_FORCE_DOUBLE_WILD)) return TRUE; else if (B_DOUBLE_WILD_CHANCE != 0 && ((Random() % 100) + 1 <= B_DOUBLE_WILD_CHANCE)) @@ -1127,8 +1256,10 @@ bool8 TryDoDoubleWildBattle(void) bool8 StandardWildEncounter_Debug(void) { - u16 headerId = GetCurrentMapWildMonHeaderId(); - if (TryGenerateWildMon(gWildMonHeaders[headerId].landMonsInfo, WILD_AREA_LAND, 0) != TRUE) + u32 headerId = GetCurrentMapWildMonHeaderId(); + enum TimeOfDay timeOfDay = GetTimeOfDayForEncounters(headerId, WILD_AREA_LAND); + + if (TryGenerateWildMon(gWildMonHeaders[headerId].encounterTypes[timeOfDay].landMonsInfo, WILD_AREA_LAND, 0) != TRUE) return FALSE; DoStandardWildBattle_Debug(); diff --git a/src/window.c b/src/window.c index 83b5022005..f393b109de 100644 --- a/src/window.c +++ b/src/window.c @@ -240,6 +240,20 @@ void RemoveWindow(u32 windowId) } } +void RemoveAllWindowsOnBg(u32 bgId) +{ + u32 i; + + if (bgId > NUM_BACKGROUNDS) + return; + + for (i = 0; i < WINDOWS_MAX; i++) + { + if (gWindows[i].window.bg == bgId) + RemoveWindow(i); + } +} + void FreeAllWindowBuffers(void) { int i; diff --git a/test/battle/ability/aerilate.c b/test/battle/ability/aerilate.c index 7430d0ce3e..e213e177d6 100644 --- a/test/battle/ability/aerilate.c +++ b/test/battle/ability/aerilate.c @@ -45,12 +45,137 @@ SINGLE_BATTLE_TEST("Aerilate can not turn certain moves into Flying type moves") } } -TO_DO_BATTLE_TEST("Aerilate boosts power of affected moves by 20% (Gen7+)"); -TO_DO_BATTLE_TEST("Aerilate boosts power of affected moves by 30% (Gen6)"); +SINGLE_BATTLE_TEST("Aerilate boosts power of affected moves by 20% (Gen7+) or 30% (Gen1-6)", s16 damage) +{ + u32 move, genConfig; + PARAMETRIZE { move = MOVE_CELEBRATE; genConfig = GEN_7; } + PARAMETRIZE { move = MOVE_CELEBRATE; genConfig = GEN_6; } + PARAMETRIZE { move = MOVE_SKILL_SWAP; genConfig = GEN_7; } + PARAMETRIZE { move = MOVE_SKILL_SWAP; genConfig = GEN_6; } -// Gen 6-7 -TO_DO_BATTLE_TEST("Aerilate overrides Electrify (Gen6-7)"); -TO_DO_BATTLE_TEST("Aerilate overrides Ion Deluge (Gen6-7)"); -// Gen 8+ -//TO_DO_BATTLE_TEST("Aerilate doesn't override Electrify (Gen8+)"); // No mon with Aerilate exists in Gen8+, but probably behaves similar to Pixilate, which does. -//TO_DO_BATTLE_TEST("Aerilate doesn't override Ion Deluge (Gen8+)"); // Ion Deluge doesn't exist in Gen 8+, but we probably could assume it behaves similar to under Electrify. TODO: Test by hacking SV. + GIVEN { + WITH_CONFIG(GEN_CONFIG_ATE_MULTIPLIER, genConfig); + ASSUME(GetMoveType(MOVE_TACKLE) == TYPE_NORMAL); + ASSUME(GetMoveEffect(MOVE_SKILL_SWAP) == EFFECT_SKILL_SWAP); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_SALAMENCE) { Ability(ABILITY_MOXIE); Item(ITEM_SALAMENCITE); } + } WHEN { + TURN { MOVE(opponent, move, gimmick: GIMMICK_MEGA); MOVE(player, MOVE_TACKLE); } + } SCENE { + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + if (genConfig >= GEN_7) + EXPECT_MUL_EQ(results[0].damage, Q_4_12(1.2), results[2].damage); // No STAB + else + EXPECT_MUL_EQ(results[1].damage, Q_4_12(1.3), results[3].damage); // No STAB + } +} + +SINGLE_BATTLE_TEST("Aerilate doesn't affect Weather Ball's type", s16 damage) +{ + u32 move1, move2; + PARAMETRIZE { move1 = MOVE_CELEBRATE; move2 = MOVE_CELEBRATE; } + PARAMETRIZE { move1 = MOVE_SUNNY_DAY; move2 = MOVE_CELEBRATE; } + PARAMETRIZE { move1 = MOVE_CELEBRATE; move2 = MOVE_SKILL_SWAP; } + PARAMETRIZE { move1 = MOVE_SUNNY_DAY; move2 = MOVE_SKILL_SWAP; } + GIVEN { + ASSUME(GetMoveEffect(MOVE_WEATHER_BALL) == EFFECT_WEATHER_BALL); + ASSUME(GetMoveType(MOVE_WEATHER_BALL) == TYPE_NORMAL); + ASSUME(GetMoveEffect(MOVE_SKILL_SWAP) == EFFECT_SKILL_SWAP); + ASSUME(gSpeciesInfo[SPECIES_PINSIR].types[0] == TYPE_BUG); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_PINSIR) { Ability(ABILITY_HYPER_CUTTER); Item(ITEM_PINSIRITE); } + } WHEN { + TURN { MOVE(opponent, move2, gimmick: GIMMICK_MEGA); MOVE(player, move1); } + TURN { MOVE(player, MOVE_WEATHER_BALL); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, move2, opponent); + ANIMATION(ANIM_TYPE_MOVE, move1, player); + HP_BAR(opponent, captureDamage: &results[i].damage); + if (move1 == MOVE_SUNNY_DAY) + MESSAGE("It's super effective!"); + } FINALLY { + EXPECT_MUL_EQ(results[0].damage, Q_4_12(6.0), results[1].damage); // double base power + type effectiveness + sun 50% boost + EXPECT_MUL_EQ(results[2].damage, Q_4_12(6.0), results[3].damage); + EXPECT_EQ(results[0].damage, results[2].damage); + EXPECT_EQ(results[1].damage, results[3].damage); + } +} + +SINGLE_BATTLE_TEST("Aerilate doesn't affect Natural Gift's type") +{ + u16 move; + PARAMETRIZE { move = MOVE_CELEBRATE; } + PARAMETRIZE { move = MOVE_SKILL_SWAP; } + GIVEN { + ASSUME(GetMoveEffect(MOVE_NATURAL_GIFT) == EFFECT_NATURAL_GIFT); + ASSUME(GetMoveEffect(MOVE_SKILL_SWAP) == EFFECT_SKILL_SWAP); + ASSUME(gNaturalGiftTable[ITEM_TO_BERRY(ITEM_PERSIM_BERRY)].type == TYPE_GROUND); + ASSUME(gSpeciesInfo[SPECIES_SALAMENCE_MEGA].types[0] == TYPE_FLYING || gSpeciesInfo[SPECIES_SALAMENCE_MEGA].types[1] == TYPE_FLYING); + PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_PERSIM_BERRY); } + OPPONENT(SPECIES_SALAMENCE) { Item(ITEM_SALAMENCITE); } + } WHEN { + TURN { MOVE(opponent, move, gimmick: GIMMICK_MEGA); MOVE(player, MOVE_NATURAL_GIFT); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, move, opponent); + NOT { ANIMATION(ANIM_TYPE_MOVE, MOVE_NATURAL_GIFT, player); } + MESSAGE("It doesn't affect the opposing Salamence…"); + } +} + +SINGLE_BATTLE_TEST("Aerilate doesn't affect Judgment / Techno Blast / Multi-Attack's type") +{ + u16 move, item; + PARAMETRIZE { move = MOVE_JUDGMENT; item = ITEM_ZAP_PLATE; } + PARAMETRIZE { move = MOVE_TECHNO_BLAST; item = ITEM_SHOCK_DRIVE; } + PARAMETRIZE { move = MOVE_MULTI_ATTACK; item = ITEM_ELECTRIC_MEMORY; } + GIVEN { + ASSUME(GetMoveEffect(MOVE_JUDGMENT) == EFFECT_CHANGE_TYPE_ON_ITEM); + ASSUME(GetMoveEffect(MOVE_TECHNO_BLAST) == EFFECT_CHANGE_TYPE_ON_ITEM); + ASSUME(GetMoveEffect(MOVE_MULTI_ATTACK) == EFFECT_CHANGE_TYPE_ON_ITEM); + ASSUME(GetMoveEffect(MOVE_SKILL_SWAP) == EFFECT_SKILL_SWAP); + ASSUME(gItemsInfo[ITEM_ZAP_PLATE].holdEffect == HOLD_EFFECT_PLATE); + ASSUME(gItemsInfo[ITEM_ZAP_PLATE].secondaryId == TYPE_ELECTRIC); + ASSUME(gItemsInfo[ITEM_SHOCK_DRIVE].holdEffect == HOLD_EFFECT_DRIVE); + ASSUME(gItemsInfo[ITEM_SHOCK_DRIVE].secondaryId == TYPE_ELECTRIC); + ASSUME(gItemsInfo[ITEM_ELECTRIC_MEMORY].holdEffect == HOLD_EFFECT_MEMORY); + ASSUME(gItemsInfo[ITEM_ELECTRIC_MEMORY].secondaryId == TYPE_ELECTRIC); + ASSUME(gSpeciesInfo[SPECIES_DIGLETT].types[0] == TYPE_GROUND); + PLAYER(SPECIES_WOBBUFFET) { Item(item); } + OPPONENT(SPECIES_SALAMENCE) { Item(ITEM_SALAMENCITE); } + OPPONENT(SPECIES_DIGLETT); + } WHEN { + TURN { MOVE(opponent, MOVE_SKILL_SWAP, gimmick: GIMMICK_MEGA); } + TURN { SWITCH(opponent, 1); MOVE(player, move); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SKILL_SWAP, opponent); + NOT { ANIMATION(ANIM_TYPE_MOVE, move, player); } + MESSAGE("It doesn't affect the opposing Diglett…"); + } +} + +SINGLE_BATTLE_TEST("Aerilate doesn't affect Hidden Power's type") +{ + GIVEN { + ASSUME(GetMoveEffect(MOVE_HIDDEN_POWER) == EFFECT_HIDDEN_POWER); + ASSUME(gTypesInfo[TYPE_ELECTRIC].isHiddenPowerType == TRUE); + ASSUME(gSpeciesInfo[SPECIES_DIGLETT].types[0] == TYPE_GROUND); + PLAYER(SPECIES_PINSIR) { Ability(ABILITY_AERILATE); HPIV(31); AttackIV(31); DefenseIV(31); SpAttackIV(30); SpDefenseIV(31); SpeedIV(31); } // HP Electric + OPPONENT(SPECIES_DIGLETT); + } WHEN { + TURN { MOVE(player, MOVE_HIDDEN_POWER); } + } SCENE { + NOT { ANIMATION(ANIM_TYPE_MOVE, MOVE_HIDDEN_POWER, player); } + MESSAGE("It doesn't affect the opposing Diglett…"); + } +} + +TO_DO_BATTLE_TEST("Aerilate doesn't override Electrify (Gen7+)"); // No mon with Aerilate exists in Gen8+, but probably behaves similar to Pixilate, which does. +TO_DO_BATTLE_TEST("Aerilate doesn't override Ion Deluge (Gen7+)"); // Ion Deluge doesn't exist in Gen 8+, but we probably could assume it behaves similar to under Electrify. TODO: Test by hacking SV. +TO_DO_BATTLE_TEST("Aerilate overrides Electrify (Gen6)") +TO_DO_BATTLE_TEST("Aerilate overrides Ion Deluge (Gen6)") +TO_DO_BATTLE_TEST("Aerilate doesn't affect Tera Starstorm's type"); +TO_DO_BATTLE_TEST("Aerilate doesn't affect Max Strike's type"); +TO_DO_BATTLE_TEST("Aerilate doesn't affect Terrain Pulse's type"); +TO_DO_BATTLE_TEST("Aerilate doesn't affect damaging Z-Move types"); +TO_DO_BATTLE_TEST("(DYNAMAX) Aerilate turns Max Strike into Max Airstream"); // All other -ate abilities do this, so interpolating this as no Aerilate mon is available in a Dynamax game diff --git a/test/battle/ability/battle_bond.c b/test/battle/ability/battle_bond.c index f480367798..401df267b6 100644 --- a/test/battle/ability/battle_bond.c +++ b/test/battle/ability/battle_bond.c @@ -6,26 +6,6 @@ ASSUMPTIONS ASSUME(!IsBattleMoveStatus(MOVE_WATER_GUN)); } -SINGLE_BATTLE_TEST("Battle Bond does not transform species other than Greninja") -{ - GIVEN { - PLAYER(SPECIES_WOBBUFFET) { Ability(ABILITY_BATTLE_BOND); } - OPPONENT(SPECIES_WOBBUFFET) { HP(1); } - OPPONENT(SPECIES_WOBBUFFET); - } WHEN { - TURN { MOVE(player, MOVE_WATER_GUN); SEND_OUT(opponent, 1); } - } SCENE { - HP_BAR(opponent); - MESSAGE("The opposing Wobbuffet fainted!"); - NONE_OF { - ABILITY_POPUP(player, ABILITY_BATTLE_BOND); - MESSAGE("Wobbuffet became fully charged due to its bond with its trainer!"); - } - } THEN { - EXPECT(player->species == SPECIES_WOBBUFFET); - } -} - // Battle Bond transforms the pokemon when fainting any battler(opposing or partner), unless it's the last pokemon and the battle ends. SINGLE_BATTLE_TEST("Battle Bond transforms player's Greninja - Singles") { @@ -37,6 +17,7 @@ SINGLE_BATTLE_TEST("Battle Bond transforms player's Greninja - Singles") PARAMETRIZE {monsCountPlayer = 2; monsCountOpponent = 2; } GIVEN { + WITH_CONFIG(GEN_CONFIG_BATTLE_BOND, GEN_8); PLAYER(SPECIES_GRENINJA_BATTLE_BOND); if (monsCountPlayer == 2) { PLAYER(SPECIES_WOBBUFFET); @@ -84,6 +65,7 @@ SINGLE_BATTLE_TEST("Battle Bond transforms opponent's Greninja - Singles") PARAMETRIZE {monsCountPlayer = 2; monsCountOpponent = 2; } GIVEN { + WITH_CONFIG(GEN_CONFIG_BATTLE_BOND, GEN_8); OPPONENT(SPECIES_GRENINJA_BATTLE_BOND); if (monsCountOpponent == 2) { OPPONENT(SPECIES_WOBBUFFET); @@ -131,6 +113,7 @@ DOUBLE_BATTLE_TEST("Battle Bond transforms player's Greninja when fainting its A PARAMETRIZE {monsCountPlayer = 3; monsCountOpponent = 3; } GIVEN { + WITH_CONFIG(GEN_CONFIG_BATTLE_BOND, GEN_8); PLAYER(SPECIES_GRENINJA_BATTLE_BOND); PLAYER(SPECIES_WOBBUFFET) { HP(1); } if (monsCountPlayer == 3) { @@ -158,3 +141,51 @@ DOUBLE_BATTLE_TEST("Battle Bond transforms player's Greninja when fainting its A EXPECT(playerLeft->species == SPECIES_GRENINJA_ASH); } } + +SINGLE_BATTLE_TEST("Battle Bond increases Atk, SpAtk and Speed by 1 stage (Gen9+)") +{ + GIVEN { + WITH_CONFIG(GEN_CONFIG_BATTLE_BOND, GEN_9); + PLAYER(SPECIES_GRENINJA_BATTLE_BOND) { Ability(ABILITY_BATTLE_BOND); } + OPPONENT(SPECIES_WOBBUFFET) { HP(1); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_WATER_GUN); SEND_OUT(opponent, 1); } + } SCENE { + HP_BAR(opponent); + MESSAGE("The opposing Wobbuffet fainted!"); + ABILITY_POPUP(player, ABILITY_BATTLE_BOND); + } THEN { + EXPECT(player->species != SPECIES_GRENINJA_ASH); + EXPECT_EQ(player->statStages[STAT_ATK], DEFAULT_STAT_STAGE + 1); + EXPECT_EQ(player->statStages[STAT_SPATK], DEFAULT_STAT_STAGE + 1); + EXPECT_EQ(player->statStages[STAT_SPEED], DEFAULT_STAT_STAGE + 1); + } +} + +SINGLE_BATTLE_TEST("Battle Bond increases a Stat even if only one can be increased (Gen9+)") +{ + GIVEN { + WITH_CONFIG(GEN_CONFIG_BATTLE_BOND, GEN_9); + PLAYER(SPECIES_GRENINJA_BATTLE_BOND) { Ability(ABILITY_BATTLE_BOND); } + OPPONENT(SPECIES_WOBBUFFET) { HP(1); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_DRAGON_DANCE); } + TURN { MOVE(player, MOVE_DRAGON_DANCE); } + TURN { MOVE(player, MOVE_DRAGON_DANCE); } + TURN { MOVE(player, MOVE_DRAGON_DANCE); } + TURN { MOVE(player, MOVE_DRAGON_DANCE); } + TURN { MOVE(player, MOVE_DRAGON_DANCE); } + TURN { MOVE(player, MOVE_WATER_GUN); SEND_OUT(opponent, 1); } + } SCENE { + HP_BAR(opponent); + MESSAGE("The opposing Wobbuffet fainted!"); + ABILITY_POPUP(player, ABILITY_BATTLE_BOND); + } THEN { + EXPECT(player->species != SPECIES_GRENINJA_ASH); + EXPECT_EQ(player->statStages[STAT_ATK], DEFAULT_STAT_STAGE + 6); + EXPECT_EQ(player->statStages[STAT_SPATK], DEFAULT_STAT_STAGE + 1); + EXPECT_EQ(player->statStages[STAT_SPEED], DEFAULT_STAT_STAGE + 6); + } +} diff --git a/test/battle/ability/beast_boost.c b/test/battle/ability/beast_boost.c index 3adb4eb9cd..d6691c2f8f 100644 --- a/test/battle/ability/beast_boost.c +++ b/test/battle/ability/beast_boost.c @@ -19,19 +19,19 @@ SINGLE_BATTLE_TEST("Beast Boost boosts the most proficient stat when knocking ou ABILITY_POPUP(player, ABILITY_BEAST_BOOST); switch(i) { case 0: - MESSAGE("Nihilego's Beast Boost raised its Attack!"); + MESSAGE("Nihilego's Attack rose!"); break; case 1: - MESSAGE("Nihilego's Beast Boost raised its Defense!"); + MESSAGE("Nihilego's Defense rose!"); break; case 2: - MESSAGE("Nihilego's Beast Boost raised its Sp. Atk!"); + MESSAGE("Nihilego's Sp. Atk rose!"); break; case 3: - MESSAGE("Nihilego's Beast Boost raised its Sp. Def!"); + MESSAGE("Nihilego's Sp. Def rose!"); break; case 4: - MESSAGE("Nihilego's Beast Boost raised its Speed!"); + MESSAGE("Nihilego's Speed rose!"); break; } } @@ -75,16 +75,16 @@ SINGLE_BATTLE_TEST("Beast Boost prioritizes stats in the case of a tie in the fo ABILITY_POPUP(player, ABILITY_BEAST_BOOST); switch(i) { case 0: - MESSAGE("Nihilego's Beast Boost raised its Attack!"); + MESSAGE("Nihilego's Attack rose!"); break; case 1: - MESSAGE("Nihilego's Beast Boost raised its Defense!"); + MESSAGE("Nihilego's Defense rose!"); break; case 2: - MESSAGE("Nihilego's Beast Boost raised its Sp. Atk!"); + MESSAGE("Nihilego's Sp. Atk rose!"); break; case 3: - MESSAGE("Nihilego's Beast Boost raised its Sp. Def!"); + MESSAGE("Nihilego's Sp. Def rose!"); break; } } diff --git a/test/battle/ability/corrosion.c b/test/battle/ability/corrosion.c index 8541c21f27..1e589967db 100644 --- a/test/battle/ability/corrosion.c +++ b/test/battle/ability/corrosion.c @@ -30,8 +30,10 @@ SINGLE_BATTLE_TEST("Corrosion can poison or badly poison a Steel type with a sta PARAMETRIZE { move = MOVE_TOXIC; } GIVEN { - ASSUME(GetMoveEffect(MOVE_POISON_POWDER) == EFFECT_POISON); - ASSUME(GetMoveEffect(MOVE_TOXIC) == EFFECT_TOXIC); + ASSUME(GetMoveEffect(MOVE_POISON_POWDER) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_POISON_POWDER) == MOVE_EFFECT_POISON); + ASSUME(GetMoveEffect(MOVE_TOXIC) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_TOXIC) == MOVE_EFFECT_TOXIC); PLAYER(SPECIES_SALANDIT) { Ability(ABILITY_CORROSION); } OPPONENT(SPECIES_BELDUM); } WHEN { @@ -73,7 +75,8 @@ SINGLE_BATTLE_TEST("Corrosion can poison Poison- and Steel-type targets if it us GIVEN { ASSUME(GetMoveEffect(MOVE_FLING) == EFFECT_FLING); - ASSUME(gItemsInfo[ITEM_POISON_BARB].holdEffect == HOLD_EFFECT_POISON_POWER); + ASSUME(gItemsInfo[ITEM_POISON_BARB].holdEffect == HOLD_EFFECT_TYPE_POWER); + ASSUME(gItemsInfo[ITEM_POISON_BARB].secondaryId == TYPE_POISON); ASSUME(gItemsInfo[ITEM_TOXIC_ORB].holdEffect == HOLD_EFFECT_TOXIC_ORB); PLAYER(SPECIES_SALANDIT) { Ability(ABILITY_CORROSION); Item(heldItem); } OPPONENT(SPECIES_ODDISH); @@ -110,8 +113,10 @@ SINGLE_BATTLE_TEST("If a Poison- or Steel-type Pokémon with Corrosion poisons a PARAMETRIZE { move = MOVE_TOXIC; } PARAMETRIZE { move = MOVE_POISON_POWDER; } GIVEN { - ASSUME(GetMoveEffect(MOVE_TOXIC) == EFFECT_TOXIC); - ASSUME(GetMoveEffect(MOVE_POISON_POWDER) == EFFECT_POISON); + ASSUME(GetMoveEffect(MOVE_TOXIC) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_TOXIC) == MOVE_EFFECT_TOXIC); + ASSUME(GetMoveEffect(MOVE_POISON_POWDER) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_POISON_POWDER) == MOVE_EFFECT_POISON); PLAYER(SPECIES_SALANDIT) { Ability(ABILITY_CORROSION); } OPPONENT(SPECIES_ABRA) { Ability(ABILITY_SYNCHRONIZE); } } WHEN { @@ -137,8 +142,10 @@ SINGLE_BATTLE_TEST("Corrosion cannot bypass moves that prevent poisoning such as PARAMETRIZE { move = MOVE_TOXIC; } PARAMETRIZE { move = MOVE_POISON_POWDER; } GIVEN { - ASSUME(GetMoveEffect(MOVE_TOXIC) == EFFECT_TOXIC); - ASSUME(GetMoveEffect(MOVE_POISON_POWDER) == EFFECT_POISON); + ASSUME(GetMoveEffect(MOVE_TOXIC) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_TOXIC) == MOVE_EFFECT_TOXIC); + ASSUME(GetMoveEffect(MOVE_POISON_POWDER) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_POISON_POWDER) == MOVE_EFFECT_POISON); PLAYER(SPECIES_SALANDIT) { Ability(ABILITY_CORROSION); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { @@ -159,8 +166,10 @@ SINGLE_BATTLE_TEST("Corrosion cannot bypass abilities that prevent poisoning suc PARAMETRIZE { move = MOVE_TOXIC; } PARAMETRIZE { move = MOVE_POISON_POWDER; } GIVEN { - ASSUME(GetMoveEffect(MOVE_TOXIC) == EFFECT_TOXIC); - ASSUME(GetMoveEffect(MOVE_POISON_POWDER) == EFFECT_POISON); + ASSUME(GetMoveEffect(MOVE_TOXIC) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_TOXIC) == MOVE_EFFECT_TOXIC); + ASSUME(GetMoveEffect(MOVE_POISON_POWDER) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_POISON_POWDER) == MOVE_EFFECT_POISON); PLAYER(SPECIES_SALANDIT) { Ability(ABILITY_CORROSION); } OPPONENT(SPECIES_SNORLAX) { Ability(ABILITY_IMMUNITY); } } WHEN { @@ -181,8 +190,10 @@ SINGLE_BATTLE_TEST("Corrosion allows the Pokémon with the ability to poison a S PARAMETRIZE { move = MOVE_TOXIC; } PARAMETRIZE { move = MOVE_POISON_POWDER; } GIVEN { - ASSUME(GetMoveEffect(MOVE_TOXIC) == EFFECT_TOXIC); - ASSUME(GetMoveEffect(MOVE_POISON_POWDER) == EFFECT_POISON); + ASSUME(GetMoveEffect(MOVE_TOXIC) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_TOXIC) == MOVE_EFFECT_TOXIC); + ASSUME(GetMoveEffect(MOVE_POISON_POWDER) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_POISON_POWDER) == MOVE_EFFECT_POISON); ASSUME(GetMoveEffect(MOVE_MAGIC_COAT) == EFFECT_MAGIC_COAT); PLAYER(SPECIES_SALANDIT) { Ability(ABILITY_CORROSION); } OPPONENT(SPECIES_BELDUM); @@ -205,8 +216,10 @@ SINGLE_BATTLE_TEST("Corrosion's effect is lost if the move used by the Pokémon PARAMETRIZE { move = MOVE_TOXIC; } PARAMETRIZE { move = MOVE_POISON_POWDER; } GIVEN { - ASSUME(GetMoveEffect(MOVE_TOXIC) == EFFECT_TOXIC); - ASSUME(GetMoveEffect(MOVE_POISON_POWDER) == EFFECT_POISON); + ASSUME(GetMoveEffect(MOVE_TOXIC) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_TOXIC) == MOVE_EFFECT_TOXIC); + ASSUME(GetMoveEffect(MOVE_POISON_POWDER) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_POISON_POWDER) == MOVE_EFFECT_POISON); ASSUME(GetMoveEffect(MOVE_MAGIC_COAT) == EFFECT_MAGIC_COAT); PLAYER(SPECIES_SALANDIT) { Ability(ABILITY_CORROSION); } OPPONENT(SPECIES_WOBBUFFET); diff --git a/test/battle/ability/emergency_exit.c b/test/battle/ability/emergency_exit.c index 0dbecb95e0..5027d929ec 100644 --- a/test/battle/ability/emergency_exit.c +++ b/test/battle/ability/emergency_exit.c @@ -66,3 +66,45 @@ DOUBLE_BATTLE_TEST("Only the fastest Wimp Out (Emergency Exit) user switches out ABILITY_POPUP(opponentRight, ABILITY_WIMP_OUT); } } + +SINGLE_BATTLE_TEST("Emergency Exit activates when taking residual damage and falling under 50% max-hp - Burn") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_GOLISOPOD) { Ability(ABILITY_EMERGENCY_EXIT); MaxHP(263); HP(134); Status1(STATUS1_BURN); }; + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { SEND_OUT(opponent, 1); } + } SCENE { + HP_BAR(opponent); + ABILITY_POPUP(opponent, ABILITY_EMERGENCY_EXIT); + } +} + +SINGLE_BATTLE_TEST("Emergency Exit activates when taking residual damage and falling under 50% max-hp - Weather") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_GOLISOPOD) { Ability(ABILITY_EMERGENCY_EXIT); MaxHP(263); HP(134); }; + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_SANDSTORM); SEND_OUT(opponent, 1); } + } SCENE { + HP_BAR(opponent); + ABILITY_POPUP(opponent, ABILITY_EMERGENCY_EXIT); + } +} + +SINGLE_BATTLE_TEST("Emergency Exit activates when taking residual damage and falling under 50% max-hp - Salt Cure") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_GOLISOPOD) { Ability(ABILITY_EMERGENCY_EXIT); MaxHP(263); HP(160); }; + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_SALT_CURE); SEND_OUT(opponent, 1); } + } SCENE { + HP_BAR(opponent); + ABILITY_POPUP(opponent, ABILITY_EMERGENCY_EXIT); + } +} diff --git a/test/battle/ability/flower_veil.c b/test/battle/ability/flower_veil.c index c1952360d1..2b36d08d60 100644 --- a/test/battle/ability/flower_veil.c +++ b/test/battle/ability/flower_veil.c @@ -1,4 +1,64 @@ #include "global.h" #include "test/battle.h" -TO_DO_BATTLE_TEST("TODO: Write Flower Veil (Ability) test titles") +ASSUMPTIONS +{ + ASSUME(GetMoveEffect(MOVE_TOXIC) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_TOXIC) == MOVE_EFFECT_TOXIC); + ASSUME(GetMoveEffect(MOVE_POISON_GAS) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_POISON_GAS) == MOVE_EFFECT_POISON); + ASSUME(GetMoveEffect(MOVE_WILL_O_WISP) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_WILL_O_WISP) == MOVE_EFFECT_BURN); + ASSUME(GetMoveEffect(MOVE_THUNDER_WAVE) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_THUNDER_WAVE) == MOVE_EFFECT_PARALYSIS); + ASSUME(GetMoveEffect(MOVE_HYPNOSIS) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_HYPNOSIS) == MOVE_EFFECT_SLEEP); +} + +DOUBLE_BATTLE_TEST("Flower Veil prevents Toxic bad poison on partner - right target") +{ + u32 move; + + PARAMETRIZE { move = MOVE_TOXIC; } + PARAMETRIZE { move = MOVE_POISON_GAS; } + PARAMETRIZE { move = MOVE_WILL_O_WISP; } + PARAMETRIZE { move = MOVE_THUNDER_WAVE; } + PARAMETRIZE { move = MOVE_HYPNOSIS; } + + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WYNAUT); + OPPONENT(SPECIES_COMFEY) { Ability(ABILITY_FLOWER_VEIL); } + OPPONENT(SPECIES_CHIKORITA); + } WHEN { + TURN { MOVE(playerLeft, move, target: opponentRight); } + } SCENE { + NOT ANIMATION(ANIM_TYPE_MOVE, move, playerLeft); + ABILITY_POPUP(opponentLeft, ABILITY_FLOWER_VEIL); + MESSAGE("The opposing Chikorita surrounded itself with a veil of petals!"); + } +} + +DOUBLE_BATTLE_TEST("Flower Veil prevents Toxic bad poison on partner - left target") +{ + u32 move; + + PARAMETRIZE { move = MOVE_TOXIC; } + PARAMETRIZE { move = MOVE_POISON_GAS; } + PARAMETRIZE { move = MOVE_WILL_O_WISP; } + PARAMETRIZE { move = MOVE_THUNDER_WAVE; } + PARAMETRIZE { move = MOVE_HYPNOSIS; } + + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WYNAUT); + OPPONENT(SPECIES_CHIKORITA); + OPPONENT(SPECIES_COMFEY) { Ability(ABILITY_FLOWER_VEIL); } + } WHEN { + TURN { MOVE(playerLeft, move, target: opponentLeft); } + } SCENE { + NOT ANIMATION(ANIM_TYPE_MOVE, move, playerLeft); + ABILITY_POPUP(opponentRight, ABILITY_FLOWER_VEIL); + MESSAGE("The opposing Chikorita surrounded itself with a veil of petals!"); + } +} diff --git a/test/battle/ability/galvanize.c b/test/battle/ability/galvanize.c index 33a2fe28f7..981b06d580 100644 --- a/test/battle/ability/galvanize.c +++ b/test/battle/ability/galvanize.c @@ -42,7 +42,128 @@ SINGLE_BATTLE_TEST("Galvanize can not turn certain moves into Electric type move } } -TO_DO_BATTLE_TEST("Galvanize boosts power of affected moves by 20% (Gen7+)"); -TO_DO_BATTLE_TEST("Galvanize boosts power of affected moves by 30% (Gen6)"); +SINGLE_BATTLE_TEST("Galvanize boosts power of affected moves by 20% (Gen7+) or 30% (Gen1-6)", s16 damage) +{ + u32 ability, genConfig; + PARAMETRIZE { ability = ABILITY_STURDY; genConfig = GEN_7; } + PARAMETRIZE { ability = ABILITY_STURDY; genConfig = GEN_6; } + PARAMETRIZE { ability = ABILITY_GALVANIZE; genConfig = GEN_7; } + PARAMETRIZE { ability = ABILITY_GALVANIZE; genConfig = GEN_6; } + + GIVEN { + WITH_CONFIG(GEN_CONFIG_ATE_MULTIPLIER, genConfig); + PLAYER(SPECIES_GEODUDE_ALOLA) { Ability(ability); Moves(MOVE_TACKLE); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_TACKLE); } + } SCENE { + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + if (genConfig >= GEN_7) + EXPECT_MUL_EQ(results[0].damage, Q_4_12(1.8), results[2].damage); // STAB + ate + else + EXPECT_MUL_EQ(results[1].damage, Q_4_12(1.95), results[3].damage); // STAB + ate + } +} + +SINGLE_BATTLE_TEST("Galvanize doesn't affect Weather Ball's type", s16 damage) +{ + u16 move, ability; + PARAMETRIZE { move = MOVE_CELEBRATE; ability = ABILITY_STURDY; } + PARAMETRIZE { move = MOVE_SUNNY_DAY; ability = ABILITY_STURDY; } + PARAMETRIZE { move = MOVE_CELEBRATE; ability = ABILITY_GALVANIZE; } + PARAMETRIZE { move = MOVE_SUNNY_DAY; ability = ABILITY_GALVANIZE; } + GIVEN { + ASSUME(GetMoveEffect(MOVE_WEATHER_BALL) == EFFECT_WEATHER_BALL); + ASSUME(GetMoveType(MOVE_WEATHER_BALL) == TYPE_NORMAL); + ASSUME(gSpeciesInfo[SPECIES_PINSIR].types[0] == TYPE_BUG); + PLAYER(SPECIES_GEODUDE_ALOLA) { Ability(ability); } + OPPONENT(SPECIES_PINSIR); + } WHEN { + TURN { MOVE(player, move); } + TURN { MOVE(player, MOVE_WEATHER_BALL); } + } SCENE { + HP_BAR(opponent, captureDamage: &results[i].damage); + if (move == MOVE_SUNNY_DAY) + MESSAGE("It's super effective!"); + } FINALLY { + EXPECT_MUL_EQ(results[0].damage, Q_4_12(6.0), results[1].damage); // double base power + type effectiveness + sun 50% boost + EXPECT_MUL_EQ(results[2].damage, Q_4_12(6.0), results[3].damage); + EXPECT_EQ(results[0].damage, results[2].damage); + EXPECT_EQ(results[1].damage, results[3].damage); + } +} + +SINGLE_BATTLE_TEST("Galvanize doesn't affect Natural Gift's type") +{ + u16 ability; + PARAMETRIZE { ability = ABILITY_STURDY; } + PARAMETRIZE { ability = ABILITY_GALVANIZE; } + GIVEN { + ASSUME(GetMoveEffect(MOVE_NATURAL_GIFT) == EFFECT_NATURAL_GIFT); + ASSUME(gNaturalGiftTable[ITEM_TO_BERRY(ITEM_ORAN_BERRY)].type == TYPE_POISON); + ASSUME(gSpeciesInfo[SPECIES_BELDUM].types[0] == TYPE_STEEL); + PLAYER(SPECIES_GEODUDE_ALOLA) { Ability(ability); Item(ITEM_ORAN_BERRY); } + OPPONENT(SPECIES_BELDUM); + } WHEN { + TURN { MOVE(player, MOVE_NATURAL_GIFT); } + } SCENE { + NOT { ANIMATION(ANIM_TYPE_MOVE, MOVE_NATURAL_GIFT, player); } + MESSAGE("It doesn't affect the opposing Beldum…"); + } +} + +SINGLE_BATTLE_TEST("Galvanize doesn't affect Judgment / Techno Blast / Multi-Attack's type") +{ + u16 move, item; + PARAMETRIZE { move = MOVE_JUDGMENT; item = ITEM_SPLASH_PLATE; } + PARAMETRIZE { move = MOVE_TECHNO_BLAST; item = ITEM_DOUSE_DRIVE; } + PARAMETRIZE { move = MOVE_MULTI_ATTACK; item = ITEM_WATER_MEMORY; } + GIVEN { + ASSUME(GetMoveEffect(MOVE_JUDGMENT) == EFFECT_CHANGE_TYPE_ON_ITEM); + ASSUME(GetMoveEffect(MOVE_TECHNO_BLAST) == EFFECT_CHANGE_TYPE_ON_ITEM); + ASSUME(GetMoveEffect(MOVE_MULTI_ATTACK) == EFFECT_CHANGE_TYPE_ON_ITEM); + ASSUME(gItemsInfo[ITEM_SPLASH_PLATE].holdEffect == HOLD_EFFECT_PLATE); + ASSUME(gItemsInfo[ITEM_SPLASH_PLATE].secondaryId == TYPE_WATER); + ASSUME(gItemsInfo[ITEM_DOUSE_DRIVE].holdEffect == HOLD_EFFECT_DRIVE); + ASSUME(gItemsInfo[ITEM_DOUSE_DRIVE].secondaryId == TYPE_WATER); + ASSUME(gItemsInfo[ITEM_WATER_MEMORY].holdEffect == HOLD_EFFECT_MEMORY); + ASSUME(gItemsInfo[ITEM_WATER_MEMORY].secondaryId == TYPE_WATER); + ASSUME(gSpeciesInfo[SPECIES_VAPOREON].types[0] == TYPE_WATER); + PLAYER(SPECIES_GEODUDE_ALOLA) { Ability(ABILITY_GALVANIZE); Item(item); } + OPPONENT(SPECIES_VAPOREON) { Ability(ABILITY_WATER_ABSORB); } + } WHEN { + TURN { MOVE(player, move); } + } SCENE { + NOT { ANIMATION(ANIM_TYPE_MOVE, move, player); } + if (move == MOVE_JUDGMENT) + MESSAGE("The opposing Vaporeon's Water Absorb made Judgment useless!"); + else if (move == MOVE_TECHNO_BLAST) + MESSAGE("The opposing Vaporeon's Water Absorb made Techno Blast useless!"); + else if (move == MOVE_MULTI_ATTACK) + MESSAGE("The opposing Vaporeon's Water Absorb made Multi-Attack useless!"); + } +} + +SINGLE_BATTLE_TEST("Galvanize doesn't affect Hidden Power's type") +{ + GIVEN { + ASSUME(GetMoveEffect(MOVE_HIDDEN_POWER) == EFFECT_HIDDEN_POWER); + ASSUME(gTypesInfo[TYPE_ELECTRIC].isHiddenPowerType == TRUE); + ASSUME(gSpeciesInfo[SPECIES_DIGLETT].types[0] == TYPE_GROUND); + PLAYER(SPECIES_GEODUDE_ALOLA) { Ability(ABILITY_GALVANIZE); HPIV(31); AttackIV(31); DefenseIV(31); SpAttackIV(30); SpDefenseIV(31); SpeedIV(30); } // HP Water + OPPONENT(SPECIES_VAPOREON) { Ability(ABILITY_WATER_ABSORB); } + } WHEN { + TURN { MOVE(player, MOVE_HIDDEN_POWER); } + } SCENE { + NOT { ANIMATION(ANIM_TYPE_MOVE, MOVE_HIDDEN_POWER, player); } + MESSAGE("The opposing Vaporeon's Water Absorb made Hidden Power useless!"); + } +} + +TO_DO_BATTLE_TEST("Galvanize doesn't affect Tera Starstorm's type"); +TO_DO_BATTLE_TEST("Galvanize doesn't affect Max Strike's type"); +TO_DO_BATTLE_TEST("Galvanize doesn't affect Terrain Pulse's type"); +TO_DO_BATTLE_TEST("Galvanize doesn't affect damaging Z-Move types"); TO_DO_BATTLE_TEST("(DYNAMAX) Galvanize turns Max Strike into Max Lightning when not used by Gigantamax Pikachu/Toxtricity"); //TO_DO_BATTLE_TEST("(DYNAMAX) Galvanize doesn't turn Max Strike into Max Lightning when used by Gigantamax Pikachu/Toxtricity, instead becoming G-Max Volt Crash/Stun Shock"); // Marked in Bulbapedia as "needs research", so this assumes that it behaves like Pixilate. diff --git a/test/battle/ability/grim_neigh.c b/test/battle/ability/grim_neigh.c index c58487722b..69d60db93e 100644 --- a/test/battle/ability/grim_neigh.c +++ b/test/battle/ability/grim_neigh.c @@ -16,22 +16,16 @@ DOUBLE_BATTLE_TEST("Grim Neigh raises Sp. Attack by one stage after directly cau } WHEN { TURN { MOVE(playerLeft, MOVE_DISCHARGE); SEND_OUT(opponentLeft, 2); } } SCENE { - int i; - ANIMATION(ANIM_TYPE_MOVE, MOVE_DISCHARGE, playerLeft); - for (i = 0; i < 3; i++) { - ONE_OF { - MESSAGE("Snorunt fainted!"); - MESSAGE("The opposing Glalie fainted!"); - MESSAGE("The opposing Abra fainted!"); - } - ABILITY_POPUP(playerLeft, abilityPopUp); - ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerLeft); - if (species == SPECIES_SPECTRIER) - MESSAGE("Spectrier's Grim Neigh raised its Sp. Atk!"); - else - MESSAGE("Calyrex's Grim Neigh raised its Sp. Atk!"); - } + MESSAGE("The opposing Glalie fainted!"); + MESSAGE("Snorunt fainted!"); + MESSAGE("The opposing Abra fainted!"); + ABILITY_POPUP(playerLeft, abilityPopUp); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerLeft); + if (species == SPECIES_SPECTRIER) + MESSAGE("Spectrier's Sp. Atk drastically rose!"); + else + MESSAGE("Calyrex's Sp. Atk drastically rose!"); } THEN { EXPECT_EQ(playerLeft->statStages[STAT_SPATK], DEFAULT_STAT_STAGE + 3); } @@ -98,9 +92,9 @@ DOUBLE_BATTLE_TEST("Grim Neigh does not increase damage done by the same move th ABILITY_POPUP(playerLeft, abilityPopUp); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerLeft); if (species == SPECIES_SPECTRIER) - MESSAGE("Spectrier's Grim Neigh raised its Sp. Atk!"); + MESSAGE("Spectrier's Sp. Atk rose!"); else - MESSAGE("Calyrex's Grim Neigh raised its Sp. Atk!"); + MESSAGE("Calyrex's Sp. Atk rose!"); } THEN { EXPECT_EQ(playerLeft->statStages[STAT_SPATK], DEFAULT_STAT_STAGE + 1); EXPECT_EQ(damage[0], damage[1]); diff --git a/test/battle/ability/harvest.c b/test/battle/ability/harvest.c index 8b9a445a0a..403d044f8f 100644 --- a/test/battle/ability/harvest.c +++ b/test/battle/ability/harvest.c @@ -135,7 +135,7 @@ SINGLE_BATTLE_TEST("Harvest doesn't restore a Berry when knocked off by Knock Of { PASSES_RANDOMLY(1, 1, RNG_HARVEST); GIVEN { - ASSUME(MoveHasAdditionalEffect(MOVE_KNOCK_OFF, MOVE_EFFECT_KNOCK_OFF)); + ASSUME(GetMoveEffect(MOVE_KNOCK_OFF) == EFFECT_KNOCK_OFF); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_EXEGGUTOR) { Ability(ABILITY_HARVEST); Item(ITEM_SITRUS_BERRY); } } WHEN { diff --git a/test/battle/ability/healer.c b/test/battle/ability/healer.c index 9626783ec5..6a113f407b 100644 --- a/test/battle/ability/healer.c +++ b/test/battle/ability/healer.c @@ -26,8 +26,6 @@ DOUBLE_BATTLE_TEST("Healer cures adjacent ally's status condition 30% of the tim DOUBLE_BATTLE_TEST("Healer cures status condition before burn or poison damage is dealt") { - KNOWN_FAILING; // According to Bulbapedia, Healer should trigger before status damage and Wobbuffet should live - // Source: https://bulbapedia.bulbagarden.net/wiki/Healer_(Ability)#Effect u16 status; PARAMETRIZE { status = STATUS1_POISON; } PARAMETRIZE { status = STATUS1_BURN; } @@ -42,10 +40,8 @@ DOUBLE_BATTLE_TEST("Healer cures status condition before burn or poison damage i } WHEN { TURN {} } SCENE { - NOT { - MESSAGE("The opposing Wobbuffet fainted!"); - } - MESSAGE("The opposing Chansey's Healer cured Foe Wobbuffet's problem!"); + NOT MESSAGE("The opposing Wobbuffet fainted!"); + MESSAGE("The opposing Chansey's Healer cured the opposing Wobbuffet's problem!"); } } diff --git a/test/battle/ability/hyper_cutter.c b/test/battle/ability/hyper_cutter.c index 696c2e136b..7b1070e613 100644 --- a/test/battle/ability/hyper_cutter.c +++ b/test/battle/ability/hyper_cutter.c @@ -43,7 +43,8 @@ SINGLE_BATTLE_TEST("Hyper Cutter prevents Attack stage reduction from moves") SINGLE_BATTLE_TEST("Hyper Cutter doesn't prevent Attack reduction from burn") { GIVEN { - ASSUME(GetMoveEffect(MOVE_WILL_O_WISP) == EFFECT_WILL_O_WISP); + ASSUME(GetMoveEffect(MOVE_WILL_O_WISP) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_WILL_O_WISP) == MOVE_EFFECT_BURN); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_KRABBY) { Ability(ABILITY_HYPER_CUTTER); } } WHEN { diff --git a/test/battle/ability/illusion.c b/test/battle/ability/illusion.c index c76b4f307e..56fad1b62e 100644 --- a/test/battle/ability/illusion.c +++ b/test/battle/ability/illusion.c @@ -14,7 +14,7 @@ SINGLE_BATTLE_TEST("Illusion can only imitate Normal Form terapagos") TURN { SWITCH(player, 1); } // Switch back to Zoroark, should not be Terastal Terapagos TURN { SWITCH(player, 0); MOVE(opponent, MOVE_SCRATCH);} - // Switch back to Terapagos + // 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); } @@ -27,7 +27,7 @@ SINGLE_BATTLE_TEST("Illusion breaks if the target faints") { GIVEN { PLAYER(SPECIES_ZOROARK) { HP(1); } - PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WYNAUT); OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(opponent, MOVE_SCRATCH); SEND_OUT(player, 1); } @@ -44,7 +44,7 @@ SINGLE_BATTLE_TEST("Illusion breaks if the attacker faints") GIVEN { ASSUME(GetMoveEffect(MOVE_FINAL_GAMBIT) == EFFECT_FINAL_GAMBIT); PLAYER(SPECIES_ZOROARK) { HP(1); } - PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WYNAUT); OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(player, MOVE_FINAL_GAMBIT); SEND_OUT(player, 1); } @@ -59,13 +59,57 @@ SINGLE_BATTLE_TEST("Illusion breaks if the attacker faints") SINGLE_BATTLE_TEST("Illusion cannot imitate if the user is on the last slot") { GIVEN { - PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WYNAUT); PLAYER(SPECIES_ZOROARK); OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { SWITCH(player, 1); } } THEN { EXPECT_EQ(player->species, SPECIES_ZOROARK); - EXPECT_EQ(gBattleStruct->illusion[0].on, FALSE); // Battler is Zoroark and not Illusioned + EXPECT_EQ(gBattleStruct->illusion[0].state, ILLUSION_OFF); // Battler is Zoroark and not Illusioned + } +} + +SINGLE_BATTLE_TEST("Illusion breaks in Neutralizing Gas") +{ + GIVEN { + PLAYER(SPECIES_ZOROARK); + PLAYER(SPECIES_WYNAUT); + OPPONENT(SPECIES_WEEZING) { Ability(ABILITY_NEUTRALIZING_GAS); } + } WHEN { + TURN { } + } SCENE { + ABILITY_POPUP(opponent, ABILITY_NEUTRALIZING_GAS); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_ILLUSION_OFF, player); + } +} + +SINGLE_BATTLE_TEST("Illusion breaks if affected by Gastro Acid") +{ + GIVEN { + ASSUME(GetMoveEffect(MOVE_GASTRO_ACID) == EFFECT_GASTRO_ACID); + PLAYER(SPECIES_ZOROARK); + PLAYER(SPECIES_WYNAUT); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_GASTRO_ACID); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_GASTRO_ACID, opponent); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_ILLUSION_OFF, player); + } +} + +SINGLE_BATTLE_TEST("Illusion breaks if user loses Illusion due to Worry Seed") +{ + GIVEN { + ASSUME(GetMoveEffect(MOVE_WORRY_SEED) == EFFECT_WORRY_SEED); + PLAYER(SPECIES_ZOROARK); + PLAYER(SPECIES_WYNAUT); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_WORRY_SEED); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_WORRY_SEED, opponent); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_ILLUSION_OFF, player); } } diff --git a/test/battle/ability/immunity.c b/test/battle/ability/immunity.c index 365b5d0d50..81fbe1b8c1 100644 --- a/test/battle/ability/immunity.c +++ b/test/battle/ability/immunity.c @@ -18,7 +18,8 @@ SINGLE_BATTLE_TEST("Immunity prevents Poison Sting poison") SINGLE_BATTLE_TEST("Immunity prevents Toxic bad poison") { GIVEN { - ASSUME(GetMoveEffect(MOVE_TOXIC) == EFFECT_TOXIC); + ASSUME(GetMoveEffect(MOVE_TOXIC) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_TOXIC) == MOVE_EFFECT_TOXIC); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_SNORLAX) { Ability(ABILITY_IMMUNITY); } } WHEN { diff --git a/test/battle/ability/insomnia.c b/test/battle/ability/insomnia.c index 533ca9ce85..61bb1931fa 100644 --- a/test/battle/ability/insomnia.c +++ b/test/battle/ability/insomnia.c @@ -4,7 +4,8 @@ SINGLE_BATTLE_TEST("Insomnia prevents sleep") { GIVEN { - ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP); + ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP); PLAYER(SPECIES_DROWZEE) { Ability(ABILITY_INSOMNIA); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { diff --git a/test/battle/ability/leaf_guard.c b/test/battle/ability/leaf_guard.c index e04881ecb4..94785bd29b 100644 --- a/test/battle/ability/leaf_guard.c +++ b/test/battle/ability/leaf_guard.c @@ -11,10 +11,14 @@ SINGLE_BATTLE_TEST("Leaf Guard prevents non-volatile status conditions in sun") PARAMETRIZE { move = MOVE_TOXIC; status = STATUS1_TOXIC_POISON; } // PARAMETRIZE { move = MOVE_POWDER_SNOW; status = STATUS1_FREEZE; } // Pointless since you can't freeze in sunlight anyway GIVEN { - ASSUME(GetMoveEffect(MOVE_WILL_O_WISP) == EFFECT_WILL_O_WISP); - ASSUME(GetMoveEffect(MOVE_HYPNOSIS) == EFFECT_SLEEP); - ASSUME(GetMoveEffect(MOVE_THUNDER_WAVE) == EFFECT_PARALYZE); - ASSUME(GetMoveEffect(MOVE_TOXIC) == EFFECT_TOXIC); + ASSUME(GetMoveEffect(MOVE_WILL_O_WISP) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_WILL_O_WISP) == MOVE_EFFECT_BURN); + ASSUME(GetMoveEffect(MOVE_HYPNOSIS) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_HYPNOSIS) == MOVE_EFFECT_SLEEP); + ASSUME(GetMoveEffect(MOVE_THUNDER_WAVE) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_THUNDER_WAVE) == MOVE_EFFECT_PARALYSIS); + ASSUME(GetMoveEffect(MOVE_TOXIC) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_TOXIC) == MOVE_EFFECT_TOXIC); PLAYER(SPECIES_LEAFEON) { Ability(ABILITY_LEAF_GUARD); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { diff --git a/test/battle/ability/lightning_rod.c b/test/battle/ability/lightning_rod.c index f2e9e434ce..ab2f0d89a0 100644 --- a/test/battle/ability/lightning_rod.c +++ b/test/battle/ability/lightning_rod.c @@ -97,3 +97,21 @@ DOUBLE_BATTLE_TEST("Lightning Rod redirects an ally's attack") } } } + +DOUBLE_BATTLE_TEST("Lightning Rod absorbs moves that targets all battlers but does not redirect") +{ + GIVEN { + ASSUME(GetMoveType(MOVE_DISCHARGE) == TYPE_ELECTRIC); + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_RAICHU) { Ability(ABILITY_LIGHTNING_ROD); } + } WHEN { + TURN { MOVE(playerLeft, MOVE_DISCHARGE); } + } SCENE { + NOT HP_BAR(opponentRight); + ABILITY_POPUP(opponentRight, ABILITY_LIGHTNING_ROD); + HP_BAR(opponentLeft); + HP_BAR(playerRight); + } +} diff --git a/test/battle/ability/limber.c b/test/battle/ability/limber.c index 9ba2760c87..f89f9a1e74 100644 --- a/test/battle/ability/limber.c +++ b/test/battle/ability/limber.c @@ -4,6 +4,7 @@ SINGLE_BATTLE_TEST("Limber prevents paralysis") { GIVEN { + ASSUME(MoveHasAdditionalEffect(MOVE_THUNDER_SHOCK, MOVE_EFFECT_PARALYSIS) == TRUE); PLAYER(SPECIES_PERSIAN) { Ability(ABILITY_LIMBER); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { @@ -16,3 +17,22 @@ SINGLE_BATTLE_TEST("Limber prevents paralysis") } } } + + +SINGLE_BATTLE_TEST("Limber prevents paralysis from Thunder Wave") +{ + GIVEN { + ASSUME(GetMoveEffect(MOVE_THUNDER_WAVE) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_THUNDER_WAVE) == MOVE_EFFECT_PARALYSIS); + PLAYER(SPECIES_PERSIAN) { Ability(ABILITY_LIMBER); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_THUNDER_WAVE); } + } SCENE { + MESSAGE("Persian's Limber prevents paralysis!"); + NONE_OF { + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PRZ, player); + STATUS_ICON(player, paralysis: TRUE); + } + } +} diff --git a/test/battle/ability/liquid_ooze.c b/test/battle/ability/liquid_ooze.c index bb2fc81afa..0e5a0c6cf7 100644 --- a/test/battle/ability/liquid_ooze.c +++ b/test/battle/ability/liquid_ooze.c @@ -142,7 +142,8 @@ SINGLE_BATTLE_TEST("Liquid Ooze causes Dream Eater users to lose HP instead of h { s16 damage; GIVEN { - ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP); + ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP); ASSUME(GetMoveEffect(MOVE_DREAM_EATER) == EFFECT_DREAM_EATER); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_TENTACRUEL) { Ability(ABILITY_LIQUID_OOZE); } diff --git a/test/battle/ability/magic_bounce.c b/test/battle/ability/magic_bounce.c index 2731a21fed..e04c018a33 100644 --- a/test/battle/ability/magic_bounce.c +++ b/test/battle/ability/magic_bounce.c @@ -5,7 +5,8 @@ SINGLE_BATTLE_TEST("Magic Bounce bounces back status moves") { GIVEN { - ASSUME(GetMoveEffect(MOVE_TOXIC) == EFFECT_TOXIC); + ASSUME(GetMoveEffect(MOVE_TOXIC) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_TOXIC) == MOVE_EFFECT_TOXIC); PLAYER(SPECIES_WYNAUT); OPPONENT(SPECIES_ESPEON) { Ability(ABILITY_MAGIC_BOUNCE); } } WHEN { @@ -23,7 +24,8 @@ SINGLE_BATTLE_TEST("Magic Bounce bounces back powder moves") { GIVEN { ASSUME(IsPowderMove(MOVE_STUN_SPORE)); - ASSUME(GetMoveEffect(MOVE_STUN_SPORE) == EFFECT_PARALYZE); + ASSUME(GetMoveEffect(MOVE_STUN_SPORE) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_STUN_SPORE) == MOVE_EFFECT_PARALYSIS); PLAYER(SPECIES_WYNAUT); OPPONENT(SPECIES_ESPEON) { Ability(ABILITY_MAGIC_BOUNCE); } } WHEN { @@ -118,7 +120,8 @@ DOUBLE_BATTLE_TEST("Magic Bounce bounces back moves hitting foes field") SINGLE_BATTLE_TEST("Magic Bounce bounced back status moves can not be bounced back by Magic Bounce") { GIVEN { - ASSUME(GetMoveEffect(MOVE_TOXIC) == EFFECT_TOXIC); + ASSUME(GetMoveEffect(MOVE_TOXIC) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_TOXIC) == MOVE_EFFECT_TOXIC); PLAYER(SPECIES_ESPEON) { Ability(ABILITY_MAGIC_BOUNCE); } OPPONENT(SPECIES_ESPEON) { Ability(ABILITY_MAGIC_BOUNCE); } } WHEN { diff --git a/test/battle/ability/minds_eye.c b/test/battle/ability/minds_eye.c index eac71e7740..0300c2e4d5 100644 --- a/test/battle/ability/minds_eye.c +++ b/test/battle/ability/minds_eye.c @@ -44,28 +44,29 @@ SINGLE_BATTLE_TEST("Mind's Eye doesn't bypass a Ghost-type's Wonder Guard") AI_SINGLE_BATTLE_TEST("AI doesn't use accuracy-lowering moves if it knows that the foe has Mind's Eye") { - u32 abilityAI = ABILITY_NONE, moveAI = MOVE_NONE, j = 0; + u32 abilityAI = ABILITY_NONE; - for (j = MOVE_NONE + 1; j < MOVES_COUNT; j++) - { - if (GetMoveEffect(j) == EFFECT_ACCURACY_DOWN || GetMoveEffect(j) == EFFECT_ACCURACY_DOWN_2) { - PARAMETRIZE { moveAI = j; abilityAI = ABILITY_SWIFT_SWIM; } - PARAMETRIZE { moveAI = j; abilityAI = ABILITY_MOLD_BREAKER; } - } - } + PARAMETRIZE { abilityAI = ABILITY_SWIFT_SWIM; } + PARAMETRIZE { abilityAI = ABILITY_MOLD_BREAKER; } GIVEN { + ASSUME(GetMoveEffect(MOVE_SAND_ATTACK) == EFFECT_ACCURACY_DOWN); AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); - PLAYER(SPECIES_WOBBUFFET) { Ability(ABILITY_MINDS_EYE); } - OPPONENT(SPECIES_BASCULEGION) { Moves(MOVE_CELEBRATE, moveAI); Ability(abilityAI); } + PLAYER(SPECIES_URSALUNA_BLOODMOON) { Ability(ABILITY_MINDS_EYE); } + OPPONENT(SPECIES_BASCULEGION) { Moves(MOVE_CELEBRATE, MOVE_SAND_ATTACK); Ability(abilityAI); } } WHEN { - TURN { MOVE(player, MOVE_SCRATCH); } - TURN { MOVE(player, MOVE_SCRATCH); - if (abilityAI == ABILITY_MOLD_BREAKER) { SCORE_GT(opponent, moveAI, MOVE_CELEBRATE); } - else { SCORE_EQ(opponent, moveAI, MOVE_CELEBRATE); } - } + TURN { MOVE(player, MOVE_SCRATCH); } + TURN { MOVE(player, MOVE_SCRATCH); + if (abilityAI == ABILITY_MOLD_BREAKER) { + SCORE_GT(opponent, MOVE_SAND_ATTACK, MOVE_CELEBRATE); + } else { + SCORE_EQ(opponent, MOVE_SAND_ATTACK, MOVE_CELEBRATE); + } + } } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player); - if (abilityAI == ABILITY_MOLD_BREAKER) { ANIMATION(ANIM_TYPE_MOVE, moveAI, opponent); } + if (abilityAI == ABILITY_MOLD_BREAKER) { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SAND_ATTACK, opponent); + } } } diff --git a/test/battle/ability/moody.c b/test/battle/ability/moody.c index 888e088f21..d52f6e9cee 100644 --- a/test/battle/ability/moody.c +++ b/test/battle/ability/moody.c @@ -4,7 +4,7 @@ SINGLE_BATTLE_TEST("Moody randomly raises the user's Attack, Defense, Sp. Atk, Sp. Def, or Speed by two stages") { u32 config, statsNum; - + PARAMETRIZE { config = GEN_8; statsNum = NUM_STATS; } PARAMETRIZE { config = GEN_7; statsNum = NUM_BATTLE_STATS; } @@ -29,7 +29,7 @@ SINGLE_BATTLE_TEST("Moody randomly raises the user's Attack, Defense, Sp. Atk, S SINGLE_BATTLE_TEST("Moody randomly lowers the user's Attack, Defense, Sp. Atk, Sp. Def, or Speed by one stage") { u32 config, statsNum; - + PARAMETRIZE { config = GEN_8; statsNum = NUM_STATS; } PARAMETRIZE { config = GEN_7; statsNum = NUM_BATTLE_STATS; } @@ -54,7 +54,7 @@ SINGLE_BATTLE_TEST("Moody randomly lowers the user's Attack, Defense, Sp. Atk, S SINGLE_BATTLE_TEST("Moody randomly raises the holder's Attack, Defense, Sp. Atk, Sp. Def, or Speed by two stages and lowers a different stat by one stage") { u32 config, statsNum; - + PARAMETRIZE { config = GEN_8; statsNum = NUM_STATS; } PARAMETRIZE { config = GEN_7; statsNum = NUM_BATTLE_STATS; } diff --git a/test/battle/ability/motor_drive.c b/test/battle/ability/motor_drive.c index 83dc2a37e1..7ee02328ee 100644 --- a/test/battle/ability/motor_drive.c +++ b/test/battle/ability/motor_drive.c @@ -12,3 +12,21 @@ SINGLE_BATTLE_TEST("Motor Drive absorbs status moves") ABILITY_POPUP(opponent, ABILITY_MOTOR_DRIVE); } } + +DOUBLE_BATTLE_TEST("Motor Drive absorbs moves that target all battlers but does not redirect") +{ + GIVEN { + ASSUME(GetMoveType(MOVE_DISCHARGE) == TYPE_ELECTRIC); + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_EMOLGA) { Ability(ABILITY_MOTOR_DRIVE); } + } WHEN { + TURN { MOVE(playerLeft, MOVE_DISCHARGE); } + } SCENE { + HP_BAR(opponentLeft); + HP_BAR(playerRight); + NOT HP_BAR(opponentRight); + ABILITY_POPUP(opponentRight, ABILITY_MOTOR_DRIVE); + } +} diff --git a/test/battle/ability/moxie.c b/test/battle/ability/moxie.c index 35ae64d164..a39fb91df8 100644 --- a/test/battle/ability/moxie.c +++ b/test/battle/ability/moxie.c @@ -17,24 +17,18 @@ DOUBLE_BATTLE_TEST("Moxie/Chilling Neigh raises Attack by one stage after direct } WHEN { TURN { MOVE(playerLeft, MOVE_EARTHQUAKE); SEND_OUT(opponentLeft, 2); } } SCENE { - int i; - ANIMATION(ANIM_TYPE_MOVE, MOVE_EARTHQUAKE, playerLeft); - for (i = 0; i < 3; i++) { - ONE_OF { - MESSAGE("Snorunt fainted!"); - MESSAGE("The opposing Glalie fainted!"); - MESSAGE("The opposing Abra fainted!"); - } - ABILITY_POPUP(playerLeft, abilityPopUp); - ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerLeft); - if (species == SPECIES_SALAMENCE) - MESSAGE("Salamence's Moxie raised its Attack!"); - else if (species == SPECIES_GLASTRIER) - MESSAGE("Glastrier's Chilling Neigh raised its Attack!"); - else - MESSAGE("Calyrex's Chilling Neigh raised its Attack!"); - } + MESSAGE("The opposing Glalie fainted!"); + MESSAGE("Snorunt fainted!"); + MESSAGE("The opposing Abra fainted!"); + ABILITY_POPUP(playerLeft, abilityPopUp); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerLeft); + if (species == SPECIES_SALAMENCE) + MESSAGE("Salamence's Attack drastically rose!"); + else if (species == SPECIES_GLASTRIER) + MESSAGE("Glastrier's Attack drastically rose!"); + else + MESSAGE("Calyrex's Attack drastically rose!"); } THEN { EXPECT_EQ(playerLeft->statStages[STAT_ATK], DEFAULT_STAT_STAGE + 3); } @@ -140,11 +134,11 @@ DOUBLE_BATTLE_TEST("Moxie/Chilling Neigh does not increase damage done by the sa ABILITY_POPUP(playerLeft, abilityPopUp); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerLeft); if (species == SPECIES_SALAMENCE) - MESSAGE("Salamence's Moxie raised its Attack!"); + MESSAGE("Salamence's Attack rose!"); else if (species == SPECIES_GLASTRIER) - MESSAGE("Glastrier's Chilling Neigh raised its Attack!"); + MESSAGE("Glastrier's Attack rose!"); else - MESSAGE("Calyrex's Chilling Neigh raised its Attack!"); + MESSAGE("Calyrex's Attack rose!"); } THEN { EXPECT_EQ(playerLeft->statStages[STAT_ATK], DEFAULT_STAT_STAGE + 1); EXPECT_EQ(damage[0], damage[1]); diff --git a/test/battle/ability/normalize.c b/test/battle/ability/normalize.c index d3e8df6bee..4858997421 100644 --- a/test/battle/ability/normalize.c +++ b/test/battle/ability/normalize.c @@ -1,16 +1,274 @@ #include "global.h" #include "test/battle.h" -TO_DO_BATTLE_TEST("Normalize tuns a move into a Normal-type move"); -TO_DO_BATTLE_TEST("Normalize boosts power of both affected and originally Normal-type moves by 20% (Gen7+)"); -TO_DO_BATTLE_TEST("Normalize affects status moves"); // Eg. Thunder Wave can affect Ground types +ASSUMPTIONS +{ + ASSUME(GetMoveType(MOVE_TACKLE) == TYPE_NORMAL); + ASSUME(GetMovePower(MOVE_TACKLE) > 0); + ASSUME(GetMoveType(MOVE_WATER_GUN) == TYPE_WATER); + ASSUME(GetMovePower(MOVE_WATER_GUN) > 0); +} + +SINGLE_BATTLE_TEST("Normalize turns a move into a Normal-type move") +{ + u16 ability; + PARAMETRIZE { ability = ABILITY_CUTE_CHARM; } + PARAMETRIZE { ability = ABILITY_NORMALIZE; } + GIVEN { + ASSUME(gSpeciesInfo[SPECIES_GASTLY].types[0] == TYPE_GHOST); + PLAYER(SPECIES_GASTLY); + OPPONENT(SPECIES_SKITTY) { Ability(ability); Moves(MOVE_WATER_GUN);} + } WHEN { + TURN { MOVE(opponent, MOVE_WATER_GUN); } + } SCENE { + if (ability == ABILITY_CUTE_CHARM) + { + ANIMATION(ANIM_TYPE_MOVE, MOVE_WATER_GUN, opponent); + NOT { MESSAGE("It doesn't affect Gastly…"); } + } + else + { + NOT { ANIMATION(ANIM_TYPE_MOVE, MOVE_WATER_GUN, opponent); } + MESSAGE("It doesn't affect Gastly…"); + } + } +} + +SINGLE_BATTLE_TEST("Normalize affects status moves") +{ + u16 ability; + PARAMETRIZE { ability = ABILITY_CUTE_CHARM; } + PARAMETRIZE { ability = ABILITY_NORMALIZE; } + GIVEN { + ASSUME(GetMoveType(MOVE_THUNDER_WAVE) == TYPE_ELECTRIC); + ASSUME(gSpeciesInfo[SPECIES_DRILBUR].types[0] == TYPE_GROUND); + PLAYER(SPECIES_DRILBUR); + OPPONENT(SPECIES_SKITTY) { Ability(ability); Moves(MOVE_THUNDER_WAVE);} + } WHEN { + TURN { MOVE(opponent, MOVE_THUNDER_WAVE); } + } SCENE { + if (ability == ABILITY_CUTE_CHARM) + { + NOT { ANIMATION(ANIM_TYPE_MOVE, MOVE_THUNDER_WAVE, opponent); } + MESSAGE("But it failed!"); + } + else + { + ANIMATION(ANIM_TYPE_MOVE, MOVE_THUNDER_WAVE, opponent); + NOT { MESSAGE("But it failed!"); } + } + } +} + +SINGLE_BATTLE_TEST("Normalize still makes Freeze-Dry do super effective damage to Water-type Pokémon", s16 damage) +{ + u16 ability; + PARAMETRIZE { ability = ABILITY_CUTE_CHARM; } + PARAMETRIZE { ability = ABILITY_NORMALIZE; } + GIVEN { + ASSUME(GetMoveType(MOVE_FREEZE_DRY) == TYPE_ICE); + ASSUME(GetMoveEffect(MOVE_FREEZE_DRY) == EFFECT_SUPER_EFFECTIVE_ON_ARG); + ASSUME(gSpeciesInfo[SPECIES_MUDKIP].types[0] == TYPE_WATER); + PLAYER(SPECIES_MUDKIP); + OPPONENT(SPECIES_SKITTY) { Ability(ability); Moves(MOVE_FREEZE_DRY);} + } WHEN { + TURN { MOVE(opponent, MOVE_FREEZE_DRY); } + } SCENE { + MESSAGE("It's super effective!"); + } FINALLY { + EXPECT_MUL_EQ(results[0].damage, Q_4_12(1.8), results[1].damage); // STAB + Ate + } +} + +SINGLE_BATTLE_TEST("Normalize boosts power of unaffected moves by 20% (Gen7+)", s16 damage) +{ + u32 ability, genConfig; + PARAMETRIZE { ability = ABILITY_CUTE_CHARM; genConfig = GEN_7; } + PARAMETRIZE { ability = ABILITY_CUTE_CHARM; genConfig = GEN_6; } + PARAMETRIZE { ability = ABILITY_NORMALIZE; genConfig = GEN_7; } + PARAMETRIZE { ability = ABILITY_NORMALIZE; genConfig = GEN_6; } + + GIVEN { + WITH_CONFIG(GEN_CONFIG_ATE_MULTIPLIER, genConfig); + PLAYER(SPECIES_SKITTY) { Ability(ability); Moves(MOVE_TACKLE); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_TACKLE); } + } SCENE { + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + if (genConfig >= GEN_7) + EXPECT_MUL_EQ(results[0].damage, Q_4_12(1.2), results[2].damage); // Ate + else + EXPECT_EQ(results[1].damage, results[3].damage); // No boost + } +} + +SINGLE_BATTLE_TEST("Normalize boosts power of affected moves by 20% (Gen7+)", s16 damage) +{ + u32 ability, genConfig; + PARAMETRIZE { ability = ABILITY_CUTE_CHARM; genConfig = GEN_7; } + PARAMETRIZE { ability = ABILITY_CUTE_CHARM; genConfig = GEN_6; } + PARAMETRIZE { ability = ABILITY_NORMALIZE; genConfig = GEN_7; } + PARAMETRIZE { ability = ABILITY_NORMALIZE; genConfig = GEN_6; } + + GIVEN { + WITH_CONFIG(GEN_CONFIG_ATE_MULTIPLIER, genConfig); + PLAYER(SPECIES_SKITTY) { Ability(ability); Moves(MOVE_WATER_GUN); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_WATER_GUN); } + } SCENE { + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + if (genConfig >= GEN_7) + EXPECT_MUL_EQ(results[0].damage, Q_4_12(1.8), results[2].damage); // STAB + ate + else + EXPECT_MUL_EQ(results[1].damage, Q_4_12(1.5), results[3].damage); // STAB + no ate + } +} + +SINGLE_BATTLE_TEST("Normalize-affected moves become Electric-type under Electrify's effect", s16 damage) +{ + u32 ability, genConfig; + PARAMETRIZE { ability = ABILITY_CUTE_CHARM; genConfig = GEN_7; } + PARAMETRIZE { ability = ABILITY_CUTE_CHARM; genConfig = GEN_6; } + PARAMETRIZE { ability = ABILITY_NORMALIZE; genConfig = GEN_7; } + PARAMETRIZE { ability = ABILITY_NORMALIZE; genConfig = GEN_6; } + + GIVEN { + ASSUME(GetMoveEffect(MOVE_ELECTRIFY) == EFFECT_ELECTRIFY); + WITH_CONFIG(GEN_CONFIG_ATE_MULTIPLIER, genConfig); + PLAYER(SPECIES_SKITTY) { Ability(ability); Moves(MOVE_WATER_GUN); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_ELECTRIFY); MOVE(player, MOVE_WATER_GUN); } + } SCENE { + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + if (genConfig >= GEN_7) + EXPECT_EQ(results[0].damage, results[2].damage); + else + EXPECT_EQ(results[1].damage, results[3].damage); + } +} + +SINGLE_BATTLE_TEST("Normalize-affected moves become Electric-type under Ion Deluge's effect", s16 damage) +{ + u32 ability, genConfig; + PARAMETRIZE { ability = ABILITY_CUTE_CHARM; genConfig = GEN_7; } + PARAMETRIZE { ability = ABILITY_CUTE_CHARM; genConfig = GEN_6; } + PARAMETRIZE { ability = ABILITY_NORMALIZE; genConfig = GEN_7; } + PARAMETRIZE { ability = ABILITY_NORMALIZE; genConfig = GEN_6; } + + GIVEN { + ASSUME(GetMoveEffect(MOVE_ION_DELUGE) == EFFECT_ION_DELUGE); + WITH_CONFIG(GEN_CONFIG_ATE_MULTIPLIER, genConfig); + PLAYER(SPECIES_SKITTY) { Ability(ability); Moves(MOVE_WATER_GUN); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_ION_DELUGE); MOVE(player, MOVE_WATER_GUN); } + } SCENE { + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + if (genConfig >= GEN_7) + EXPECT_EQ(results[0].damage, results[2].damage); + else + EXPECT_EQ(results[1].damage, results[3].damage); + } +} + +SINGLE_BATTLE_TEST("Normalize doesn't affect Weather Ball's type", s16 damage) +{ + u16 move, ability; + PARAMETRIZE { move = MOVE_CELEBRATE; ability = ABILITY_CUTE_CHARM; } + PARAMETRIZE { move = MOVE_SUNNY_DAY; ability = ABILITY_CUTE_CHARM; } + PARAMETRIZE { move = MOVE_CELEBRATE; ability = ABILITY_NORMALIZE; } + PARAMETRIZE { move = MOVE_SUNNY_DAY; ability = ABILITY_NORMALIZE; } + GIVEN { + ASSUME(GetMoveEffect(MOVE_WEATHER_BALL) == EFFECT_WEATHER_BALL); + ASSUME(GetMoveType(MOVE_WEATHER_BALL) == TYPE_NORMAL); + ASSUME(gSpeciesInfo[SPECIES_MEGANIUM].types[0] == TYPE_GRASS); + PLAYER(SPECIES_SKITTY) { Ability(ability); } + OPPONENT(SPECIES_MEGANIUM); + } WHEN { + TURN { MOVE(player, move); } + TURN { MOVE(player, MOVE_WEATHER_BALL); } + } SCENE { + HP_BAR(opponent, captureDamage: &results[i].damage); + if (move == MOVE_SUNNY_DAY) + MESSAGE("It's super effective!"); + } FINALLY { + EXPECT_MUL_EQ(results[0].damage, Q_4_12(4.0), results[1].damage); // double base power + type effectiveness + sun 50% boost - STAB + EXPECT_MUL_EQ(results[2].damage, Q_4_12(4.0), results[3].damage); + EXPECT_EQ(results[0].damage, results[2].damage); + EXPECT_EQ(results[1].damage, results[3].damage); + } +} + +SINGLE_BATTLE_TEST("Normalize doesn't affect Natural Gift's type") +{ + u16 ability; + PARAMETRIZE { ability = ABILITY_CUTE_CHARM; } + PARAMETRIZE { ability = ABILITY_NORMALIZE; } + GIVEN { + ASSUME(GetMoveEffect(MOVE_NATURAL_GIFT) == EFFECT_NATURAL_GIFT); + ASSUME(gNaturalGiftTable[ITEM_TO_BERRY(ITEM_ORAN_BERRY)].type == TYPE_POISON); + ASSUME(gSpeciesInfo[SPECIES_BELDUM].types[0] == TYPE_STEEL); + PLAYER(SPECIES_SKITTY) { Ability(ability); Item(ITEM_ORAN_BERRY); } + OPPONENT(SPECIES_BELDUM); + } WHEN { + TURN { MOVE(player, MOVE_NATURAL_GIFT); } + } SCENE { + NOT { ANIMATION(ANIM_TYPE_MOVE, MOVE_NATURAL_GIFT, player); } + MESSAGE("It doesn't affect the opposing Beldum…"); + } +} + +SINGLE_BATTLE_TEST("Normalize doesn't affect Judgment / Techno Blast / Multi-Attack's type") +{ + u16 move, item; + PARAMETRIZE { move = MOVE_JUDGMENT; item = ITEM_ZAP_PLATE; } + PARAMETRIZE { move = MOVE_TECHNO_BLAST; item = ITEM_SHOCK_DRIVE; } + PARAMETRIZE { move = MOVE_MULTI_ATTACK; item = ITEM_ELECTRIC_MEMORY; } + GIVEN { + ASSUME(GetMoveEffect(MOVE_JUDGMENT) == EFFECT_CHANGE_TYPE_ON_ITEM); + ASSUME(GetMoveEffect(MOVE_TECHNO_BLAST) == EFFECT_CHANGE_TYPE_ON_ITEM); + ASSUME(GetMoveEffect(MOVE_MULTI_ATTACK) == EFFECT_CHANGE_TYPE_ON_ITEM); + ASSUME(gItemsInfo[ITEM_ZAP_PLATE].holdEffect == HOLD_EFFECT_PLATE); + ASSUME(gItemsInfo[ITEM_ZAP_PLATE].secondaryId == TYPE_ELECTRIC); + ASSUME(gItemsInfo[ITEM_SHOCK_DRIVE].holdEffect == HOLD_EFFECT_DRIVE); + ASSUME(gItemsInfo[ITEM_SHOCK_DRIVE].secondaryId == TYPE_ELECTRIC); + ASSUME(gItemsInfo[ITEM_ELECTRIC_MEMORY].holdEffect == HOLD_EFFECT_MEMORY); + ASSUME(gItemsInfo[ITEM_ELECTRIC_MEMORY].secondaryId == TYPE_ELECTRIC); + ASSUME(gSpeciesInfo[SPECIES_DIGLETT].types[0] == TYPE_GROUND); + PLAYER(SPECIES_SKITTY) { Ability(ABILITY_NORMALIZE); Item(item); } + OPPONENT(SPECIES_DIGLETT); + } WHEN { + TURN { MOVE(player, move); } + } SCENE { + NOT { ANIMATION(ANIM_TYPE_MOVE, move, player); } + MESSAGE("It doesn't affect the opposing Diglett…"); + } +} + +SINGLE_BATTLE_TEST("Normalize doesn't affect Hidden Power's type") +{ + GIVEN { + ASSUME(GetMoveEffect(MOVE_HIDDEN_POWER) == EFFECT_HIDDEN_POWER); + ASSUME(gTypesInfo[TYPE_ELECTRIC].isHiddenPowerType == TRUE); + ASSUME(gSpeciesInfo[SPECIES_DIGLETT].types[0] == TYPE_GROUND); + PLAYER(SPECIES_SKITTY) { Ability(ABILITY_NORMALIZE); HPIV(31); AttackIV(31); DefenseIV(31); SpAttackIV(30); SpDefenseIV(31); SpeedIV(31); } // HP Electric + OPPONENT(SPECIES_DIGLETT); + } WHEN { + TURN { MOVE(player, MOVE_HIDDEN_POWER); } + } SCENE { + NOT { ANIMATION(ANIM_TYPE_MOVE, MOVE_HIDDEN_POWER, player); } + MESSAGE("It doesn't affect the opposing Diglett…"); + } +} + +TO_DO_BATTLE_TEST("Aerilate doesn't affect Tera Starstorm's type"); TO_DO_BATTLE_TEST("Normalize makes Flying Press do Normal/Flying damage"); -TO_DO_BATTLE_TEST("Normalize still makes Freeze-Dry do super effective damage to Water-type Pokémon"); -TO_DO_BATTLE_TEST("Normalize-affected moves become Electric-type under Electrify's effect"); -TO_DO_BATTLE_TEST("Normalize-affected moves become Electric-type under Ion Deluge's effect"); -TO_DO_BATTLE_TEST("Normalize doesn't affect Hidden Power's type"); -TO_DO_BATTLE_TEST("Normalize doesn't affect Weather Ball's type"); -TO_DO_BATTLE_TEST("Normalize doesn't affect Natural Gift's type"); -TO_DO_BATTLE_TEST("Normalize doesn't affect Judgment/Techno Blast/Multi-Attack's type"); TO_DO_BATTLE_TEST("Normalize doesn't affect Terrain Pulse's type"); TO_DO_BATTLE_TEST("Normalize doesn't affect damaging Z-Move types"); diff --git a/test/battle/ability/parental_bond.c b/test/battle/ability/parental_bond.c index ef97341aa9..2635c740df 100644 --- a/test/battle/ability/parental_bond.c +++ b/test/battle/ability/parental_bond.c @@ -254,9 +254,9 @@ SINGLE_BATTLE_TEST("Parental Bond has no affect on multi hit moves and they stil SINGLE_BATTLE_TEST("Parental Bond Smack Down effect triggers after 2nd hit") { GIVEN { + ASSUME(GetMoveEffect(MOVE_SMACK_DOWN) == EFFECT_SMACK_DOWN); ASSUME(GetMoveCategory(MOVE_SMACK_DOWN) != DAMAGE_CATEGORY_STATUS); ASSUME(GetMoveStrikeCount(MOVE_SMACK_DOWN) < 2); - ASSUME(MoveHasAdditionalEffect(MOVE_SMACK_DOWN, MOVE_EFFECT_SMACK_DOWN)); PLAYER(SPECIES_KANGASKHAN) { Item(ITEM_KANGASKHANITE); } OPPONENT(SPECIES_SKARMORY); } WHEN { diff --git a/test/battle/ability/pastel_veil.c b/test/battle/ability/pastel_veil.c index a97592fdb2..1c0926ac80 100644 --- a/test/battle/ability/pastel_veil.c +++ b/test/battle/ability/pastel_veil.c @@ -1,6 +1,12 @@ #include "global.h" #include "test/battle.h" +ASSUMPTIONS +{ + ASSUME(GetMoveEffect(MOVE_TOXIC) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_TOXIC) == MOVE_EFFECT_TOXIC); +} + SINGLE_BATTLE_TEST("Pastel Veil prevents Poison Sting poison") { GIVEN { @@ -34,7 +40,6 @@ DOUBLE_BATTLE_TEST("Pastel Veil prevents Poison Sting poison on partner") SINGLE_BATTLE_TEST("Pastel Veil immediately cures Mold Breaker poison") { GIVEN { - ASSUME(GetMoveEffect(MOVE_TOXIC) == EFFECT_TOXIC); PLAYER(SPECIES_PINSIR) { Ability(ABILITY_MOLD_BREAKER); } OPPONENT(SPECIES_PONYTA_GALAR) { Ability(ABILITY_PASTEL_VEIL); } } WHEN { @@ -52,7 +57,6 @@ SINGLE_BATTLE_TEST("Pastel Veil immediately cures Mold Breaker poison") DOUBLE_BATTLE_TEST("Pastel Veil does not cure Mold Breaker poison on partner") { GIVEN { - ASSUME(GetMoveEffect(MOVE_TOXIC) == EFFECT_TOXIC); PLAYER(SPECIES_PINSIR) { Ability(ABILITY_MOLD_BREAKER); } PLAYER(SPECIES_WYNAUT); OPPONENT(SPECIES_PONYTA_GALAR) { Ability(ABILITY_PASTEL_VEIL); } @@ -69,7 +73,6 @@ DOUBLE_BATTLE_TEST("Pastel Veil does not cure Mold Breaker poison on partner") SINGLE_BATTLE_TEST("Pastel Veil prevents Toxic bad poison") { GIVEN { - ASSUME(GetMoveEffect(MOVE_TOXIC) == EFFECT_TOXIC); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_PONYTA_GALAR) { Ability(ABILITY_PASTEL_VEIL); } } WHEN { @@ -82,10 +85,9 @@ SINGLE_BATTLE_TEST("Pastel Veil prevents Toxic bad poison") } } -DOUBLE_BATTLE_TEST("Pastel Veil prevents Toxic bad poison on partner") +DOUBLE_BATTLE_TEST("Pastel Veil prevents Toxic bad poison on partner - right target") { GIVEN { - ASSUME(GetMoveEffect(MOVE_TOXIC) == EFFECT_TOXIC); PLAYER(SPECIES_WOBBUFFET); PLAYER(SPECIES_WYNAUT); OPPONENT(SPECIES_PONYTA_GALAR) { Ability(ABILITY_PASTEL_VEIL); } @@ -100,6 +102,23 @@ DOUBLE_BATTLE_TEST("Pastel Veil prevents Toxic bad poison on partner") } } +DOUBLE_BATTLE_TEST("Pastel Veil prevents Toxic bad poison on partner - left target") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WYNAUT); + OPPONENT(SPECIES_WYNAUT); + OPPONENT(SPECIES_PONYTA_GALAR) { Ability(ABILITY_PASTEL_VEIL); } + } WHEN { + TURN { MOVE(playerLeft, MOVE_TOXIC, target: opponentLeft); } + } SCENE { + MESSAGE("Wobbuffet used Toxic!"); + ABILITY_POPUP(opponentRight, ABILITY_PASTEL_VEIL); + MESSAGE("The opposing Wynaut is protected by a pastel veil!"); + NOT STATUS_ICON(opponentLeft, badPoison: TRUE); + } +} + SINGLE_BATTLE_TEST("Pastel Veil prevents Toxic Spikes poison") { GIVEN { diff --git a/test/battle/ability/pickup.c b/test/battle/ability/pickup.c index 2ed7765dfa..9db7c0f2de 100644 --- a/test/battle/ability/pickup.c +++ b/test/battle/ability/pickup.c @@ -164,7 +164,7 @@ SINGLE_BATTLE_TEST("Pickup doesn't grant an item if it destroyed the item with I SINGLE_BATTLE_TEST("Pickup doesn't grant an item if it knocked off that item") { GIVEN { - ASSUME(MoveHasAdditionalEffect(MOVE_KNOCK_OFF, MOVE_EFFECT_KNOCK_OFF)); + ASSUME(GetMoveEffect(MOVE_KNOCK_OFF) == EFFECT_KNOCK_OFF); PLAYER(SPECIES_ZIGZAGOON) { Ability(ABILITY_PICKUP); } OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_SITRUS_BERRY); } } WHEN { @@ -276,7 +276,7 @@ DOUBLE_BATTLE_TEST("Pickup grants a random item used by another Pokémon") { PASSES_RANDOMLY(1, 3, RNG_PICKUP); GIVEN { - ASSUME(gItemsInfo[ITEM_WHITE_HERB].holdEffect == HOLD_EFFECT_RESTORE_STATS); + ASSUME(gItemsInfo[ITEM_WHITE_HERB].holdEffect == HOLD_EFFECT_WHITE_HERB); PLAYER(SPECIES_ZIGZAGOON) { Ability(ABILITY_PICKUP); } PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_WHITE_HERB); } OPPONENT(SPECIES_WOBBUFFET) { MaxHP(100); HP(51); Item(ITEM_SITRUS_BERRY); } diff --git a/test/battle/ability/pixilate.c b/test/battle/ability/pixilate.c index 4dd16b4abe..091b48f541 100644 --- a/test/battle/ability/pixilate.c +++ b/test/battle/ability/pixilate.c @@ -21,15 +21,127 @@ SINGLE_BATTLE_TEST("Pixilate turns a Normal-type move into a Fairy-type move") } } -TO_DO_BATTLE_TEST("Pixilate can not turn certain moves into Fairy type moves"); -TO_DO_BATTLE_TEST("Pixilate boosts power of affected moves by 20% (Gen7+)"); -TO_DO_BATTLE_TEST("Pixilate boosts power of affected moves by 30% (Gen6)"); +SINGLE_BATTLE_TEST("Pixilate boosts power of affected moves by 20% (Gen7+) or 30% (Gen1-6)", s16 damage) +{ + u32 ability, genConfig; + PARAMETRIZE { ability = ABILITY_CUTE_CHARM; genConfig = GEN_7; } + PARAMETRIZE { ability = ABILITY_CUTE_CHARM; genConfig = GEN_6; } + PARAMETRIZE { ability = ABILITY_PIXILATE; genConfig = GEN_7; } + PARAMETRIZE { ability = ABILITY_PIXILATE; genConfig = GEN_6; } + + GIVEN { + WITH_CONFIG(GEN_CONFIG_ATE_MULTIPLIER, genConfig); + PLAYER(SPECIES_SYLVEON) { Ability(ability); Moves(MOVE_TACKLE); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_TACKLE); } + } SCENE { + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + if (genConfig >= GEN_7) + EXPECT_MUL_EQ(results[0].damage, Q_4_12(1.8), results[2].damage); // STAB + ate + else + EXPECT_MUL_EQ(results[1].damage, Q_4_12(1.95), results[3].damage); // STAB + ate + } +} + +SINGLE_BATTLE_TEST("Pixilate doesn't affect Weather Ball's type", s16 damage) +{ + u16 move, ability; + PARAMETRIZE { move = MOVE_CELEBRATE; ability = ABILITY_STURDY; } + PARAMETRIZE { move = MOVE_SUNNY_DAY; ability = ABILITY_STURDY; } + PARAMETRIZE { move = MOVE_CELEBRATE; ability = ABILITY_PIXILATE; } + PARAMETRIZE { move = MOVE_SUNNY_DAY; ability = ABILITY_PIXILATE; } + GIVEN { + ASSUME(GetMoveEffect(MOVE_WEATHER_BALL) == EFFECT_WEATHER_BALL); + ASSUME(GetMoveType(MOVE_WEATHER_BALL) == TYPE_NORMAL); + ASSUME(gSpeciesInfo[SPECIES_PINSIR].types[0] == TYPE_BUG); + PLAYER(SPECIES_SYLVEON) { Level(5); Ability(ability); } + OPPONENT(SPECIES_PINSIR); + } WHEN { + TURN { MOVE(player, move); } + TURN { MOVE(player, MOVE_WEATHER_BALL); } + } SCENE { + HP_BAR(opponent, captureDamage: &results[i].damage); + if (move == MOVE_SUNNY_DAY) + MESSAGE("It's super effective!"); + } FINALLY { + EXPECT_MUL_EQ(results[0].damage, Q_4_12(6.0), results[1].damage); // double base power + type effectiveness + sun 50% boost + EXPECT_MUL_EQ(results[2].damage, Q_4_12(6.0), results[3].damage); + EXPECT_EQ(results[0].damage, results[2].damage); + EXPECT_EQ(results[1].damage, results[3].damage); + } +} + +SINGLE_BATTLE_TEST("Pixilate doesn't affect Natural Gift's type") +{ + u16 ability; + PARAMETRIZE { ability = ABILITY_CUTE_CHARM; } + PARAMETRIZE { ability = ABILITY_PIXILATE; } + GIVEN { + ASSUME(GetMoveEffect(MOVE_NATURAL_GIFT) == EFFECT_NATURAL_GIFT); + ASSUME(gNaturalGiftTable[ITEM_TO_BERRY(ITEM_ORAN_BERRY)].type == TYPE_POISON); + ASSUME(gSpeciesInfo[SPECIES_BELDUM].types[0] == TYPE_STEEL); + PLAYER(SPECIES_SYLVEON) { Ability(ability); Item(ITEM_ORAN_BERRY); } + OPPONENT(SPECIES_BELDUM); + } WHEN { + TURN { MOVE(player, MOVE_NATURAL_GIFT); } + } SCENE { + NOT { ANIMATION(ANIM_TYPE_MOVE, MOVE_NATURAL_GIFT, player); } + MESSAGE("It doesn't affect the opposing Beldum…"); + } +} + +SINGLE_BATTLE_TEST("Pixilate doesn't affect Judgment / Techno Blast / Multi-Attack's type") +{ + u16 move, item; + PARAMETRIZE { move = MOVE_JUDGMENT; item = ITEM_ZAP_PLATE; } + PARAMETRIZE { move = MOVE_TECHNO_BLAST; item = ITEM_SHOCK_DRIVE; } + PARAMETRIZE { move = MOVE_MULTI_ATTACK; item = ITEM_ELECTRIC_MEMORY; } + GIVEN { + ASSUME(GetMoveEffect(MOVE_JUDGMENT) == EFFECT_CHANGE_TYPE_ON_ITEM); + ASSUME(GetMoveEffect(MOVE_TECHNO_BLAST) == EFFECT_CHANGE_TYPE_ON_ITEM); + ASSUME(GetMoveEffect(MOVE_MULTI_ATTACK) == EFFECT_CHANGE_TYPE_ON_ITEM); + ASSUME(gItemsInfo[ITEM_ZAP_PLATE].holdEffect == HOLD_EFFECT_PLATE); + ASSUME(gItemsInfo[ITEM_ZAP_PLATE].secondaryId == TYPE_ELECTRIC); + ASSUME(gItemsInfo[ITEM_SHOCK_DRIVE].holdEffect == HOLD_EFFECT_DRIVE); + ASSUME(gItemsInfo[ITEM_SHOCK_DRIVE].secondaryId == TYPE_ELECTRIC); + ASSUME(gItemsInfo[ITEM_ELECTRIC_MEMORY].holdEffect == HOLD_EFFECT_MEMORY); + ASSUME(gItemsInfo[ITEM_ELECTRIC_MEMORY].secondaryId == TYPE_ELECTRIC); + ASSUME(gSpeciesInfo[SPECIES_DIGLETT].types[0] == TYPE_GROUND); + PLAYER(SPECIES_SYLVEON) { Ability(ABILITY_PIXILATE); Item(item); } + OPPONENT(SPECIES_DIGLETT); + } WHEN { + TURN { MOVE(player, move); } + } SCENE { + NOT { ANIMATION(ANIM_TYPE_MOVE, move, player); } + MESSAGE("It doesn't affect the opposing Diglett…"); + } +} + +SINGLE_BATTLE_TEST("Pixilate doesn't affect Hidden Power's type") +{ + GIVEN { + ASSUME(GetMoveEffect(MOVE_HIDDEN_POWER) == EFFECT_HIDDEN_POWER); + ASSUME(gTypesInfo[TYPE_ELECTRIC].isHiddenPowerType == TRUE); + ASSUME(gSpeciesInfo[SPECIES_DIGLETT].types[0] == TYPE_GROUND); + PLAYER(SPECIES_SYLVEON) { Ability(ABILITY_PIXILATE); HPIV(31); AttackIV(31); DefenseIV(31); SpAttackIV(30); SpDefenseIV(31); SpeedIV(31); } // HP Electric + OPPONENT(SPECIES_DIGLETT); + } WHEN { + TURN { MOVE(player, MOVE_HIDDEN_POWER); } + } SCENE { + NOT { ANIMATION(ANIM_TYPE_MOVE, MOVE_HIDDEN_POWER, player); } + MESSAGE("It doesn't affect the opposing Diglett…"); + } +} + +TO_DO_BATTLE_TEST("Pixilate doesn't override Electrify (Gen7+)"); +TO_DO_BATTLE_TEST("Pixilate doesn't override Ion Deluge (Gen7+)"); // Ion Deluge doesn't exist in Gen 8+, but we probably could assume it behaves similar to under Electrify. TODO: Test by hacking SV. +TO_DO_BATTLE_TEST("Pixilate overrides Electrify (Gen6)") +TO_DO_BATTLE_TEST("Pixilate overrides Ion Deluge (Gen6)") +TO_DO_BATTLE_TEST("Pixilate doesn't affect Tera Starstorm's type"); +TO_DO_BATTLE_TEST("Pixilate doesn't affect Max Strike's type"); +TO_DO_BATTLE_TEST("Pixilate doesn't affect Terrain Pulse's type"); +TO_DO_BATTLE_TEST("Pixilate doesn't affect damaging Z-Move types"); TO_DO_BATTLE_TEST("(DYNAMAX) Pixilate turns Max Strike into Max Starfall when not used by Gigantamax Alcremie"); TO_DO_BATTLE_TEST("(DYNAMAX) Pixilate doesn't turn Max Strike into Max Starfall when used by Gigantamax Alcremie, instead becoming G-Max Finale"); - -// Gen 6-7 -TO_DO_BATTLE_TEST("Pixilate overrides Electrify (Gen6-7)"); -TO_DO_BATTLE_TEST("Pixilate overrides Ion Deluge (Gen6-7)"); -// Gen 8+ -TO_DO_BATTLE_TEST("Pixilate doesn't override Electrify (Gen8+)"); -//TO_DO_BATTLE_TEST("Pixilate doesn't override Ion Deluge (Gen8+)"); // Ion Deluge doesn't exist in Gen 8+, but we probably could assume it behaves similar to under Electrify. TODO: Test by hacking SV. diff --git a/test/battle/ability/poison_point.c b/test/battle/ability/poison_point.c index 1ff89192a6..243ed51bb5 100644 --- a/test/battle/ability/poison_point.c +++ b/test/battle/ability/poison_point.c @@ -49,3 +49,22 @@ SINGLE_BATTLE_TEST("Poison Point triggers 30% of the time") STATUS_ICON(player, poison: TRUE); } } + +SINGLE_BATTLE_TEST("Poison Point will not poison Poison-Type targets with corrosion") +{ + GIVEN { + ASSUME(MoveMakesContact(MOVE_TACKLE)); + PLAYER(SPECIES_SALANDIT) { Ability(ABILITY_CORROSION); } + OPPONENT(SPECIES_NIDORAN_M) { Ability(ABILITY_POISON_POINT); } + } WHEN { + TURN { MOVE(player, MOVE_TACKLE); } + TURN {} + } SCENE { + NONE_OF { + ABILITY_POPUP(opponent, ABILITY_POISON_POINT); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PSN, player); + MESSAGE("Salandit was poisoned by the opposing Nidoran♂'s Poison Point!"); + STATUS_ICON(player, poison: TRUE); + } + } +} diff --git a/test/battle/ability/purifying_salt.c b/test/battle/ability/purifying_salt.c index 85d2e9c009..49060e6596 100644 --- a/test/battle/ability/purifying_salt.c +++ b/test/battle/ability/purifying_salt.c @@ -61,10 +61,14 @@ SINGLE_BATTLE_TEST("Purifying Salt grants immunity to status effects") PARAMETRIZE { move = MOVE_TOXIC; status = STATUS1_TOXIC_POISON; } PARAMETRIZE { move = MOVE_POWDER_SNOW; status = STATUS1_FREEZE; } GIVEN { - ASSUME(GetMoveEffect(MOVE_WILL_O_WISP) == EFFECT_WILL_O_WISP); - ASSUME(GetMoveEffect(MOVE_HYPNOSIS) == EFFECT_SLEEP); - ASSUME(GetMoveEffect(MOVE_THUNDER_WAVE) == EFFECT_PARALYZE); - ASSUME(GetMoveEffect(MOVE_TOXIC) == EFFECT_TOXIC); + ASSUME(GetMoveEffect(MOVE_WILL_O_WISP) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_WILL_O_WISP) == MOVE_EFFECT_BURN); + ASSUME(GetMoveEffect(MOVE_HYPNOSIS) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_HYPNOSIS) == MOVE_EFFECT_SLEEP); + ASSUME(GetMoveEffect(MOVE_THUNDER_WAVE) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_THUNDER_WAVE) == MOVE_EFFECT_PARALYSIS); + ASSUME(GetMoveEffect(MOVE_TOXIC) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_TOXIC) == MOVE_EFFECT_TOXIC); ASSUME(MoveHasAdditionalEffect(MOVE_POWDER_SNOW, MOVE_EFFECT_FREEZE_OR_FROSTBITE) == TRUE); PLAYER(SPECIES_WOBBUFFET) { Ability(ABILITY_PURIFYING_SALT); } OPPONENT(SPECIES_WOBBUFFET); @@ -117,3 +121,17 @@ SINGLE_BATTLE_TEST("Purifying Salt doesn't prevent pokemon from being poisoned b HP_BAR(player); } } + +SINGLE_BATTLE_TEST("Purifying Salt protects from secondary effect burn") +{ + GIVEN { + ASSUME(MoveHasAdditionalEffect(MOVE_EMBER, MOVE_EFFECT_BURN)); + PLAYER(SPECIES_GARGANACL) { Ability(ABILITY_PURIFYING_SALT); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_EMBER); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_EMBER, opponent); + NOT STATUS_ICON(player, STATUS1_BURN); + } +} diff --git a/test/battle/ability/refrigerate.c b/test/battle/ability/refrigerate.c index 9ee9744ba0..5f5092f93f 100644 --- a/test/battle/ability/refrigerate.c +++ b/test/battle/ability/refrigerate.c @@ -20,15 +20,126 @@ SINGLE_BATTLE_TEST("Refrigerate turns a Normal-type move into a Ice-type move") } } -TO_DO_BATTLE_TEST("Refrigerate can not turn certain moves into Ice type moves"); -TO_DO_BATTLE_TEST("Refrigerate boosts power of affected moves by 20% (Gen7+)"); -TO_DO_BATTLE_TEST("Refrigerate boosts power of affected moves by 30% (Gen6)"); +SINGLE_BATTLE_TEST("Refrigerate boosts power of affected moves by 20% (Gen7+) or 30% (Gen1-6)", s16 damage) +{ + u32 ability, genConfig; + PARAMETRIZE { ability = ABILITY_SNOW_WARNING; genConfig = GEN_7; } + PARAMETRIZE { ability = ABILITY_SNOW_WARNING; genConfig = GEN_6; } + PARAMETRIZE { ability = ABILITY_REFRIGERATE; genConfig = GEN_7; } + PARAMETRIZE { ability = ABILITY_REFRIGERATE; genConfig = GEN_6; } + + GIVEN { + WITH_CONFIG(GEN_CONFIG_ATE_MULTIPLIER, genConfig); + PLAYER(SPECIES_AMAURA) { Ability(ability); Moves(MOVE_TACKLE); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_TACKLE); } + } SCENE { + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + if (genConfig >= GEN_7) + EXPECT_MUL_EQ(results[0].damage, Q_4_12(1.8), results[2].damage); // STAB + ate + else + EXPECT_MUL_EQ(results[1].damage, Q_4_12(1.95), results[3].damage); // STAB + ate + } +} + +SINGLE_BATTLE_TEST("Refrigerate doesn't affect Weather Ball's type", s16 damage) +{ + u16 move, ability; + PARAMETRIZE { move = MOVE_CELEBRATE; ability = ABILITY_SNOW_WARNING; } + PARAMETRIZE { move = MOVE_SUNNY_DAY; ability = ABILITY_SNOW_WARNING; } + PARAMETRIZE { move = MOVE_CELEBRATE; ability = ABILITY_REFRIGERATE; } + PARAMETRIZE { move = MOVE_SUNNY_DAY; ability = ABILITY_REFRIGERATE; } + GIVEN { + ASSUME(GetMoveEffect(MOVE_WEATHER_BALL) == EFFECT_WEATHER_BALL); + ASSUME(gSpeciesInfo[SPECIES_PINSIR].types[0] == TYPE_BUG); + PLAYER(SPECIES_AMAURA) { Ability(ability); } + OPPONENT(SPECIES_PINSIR); + } WHEN { + TURN { MOVE(player, move); } + TURN { MOVE(player, MOVE_WEATHER_BALL); } + } SCENE { + HP_BAR(opponent, captureDamage: &results[i].damage); + if (move == MOVE_SUNNY_DAY) + MESSAGE("It's super effective!"); + } FINALLY { + EXPECT_MUL_EQ(results[0].damage, Q_4_12(2.0), results[1].damage); // double base power + type effectiveness + sun 50% boost vs hail no type effectiveness + EXPECT_MUL_EQ(results[2].damage, Q_4_12(6.0), results[3].damage); // double base power + type effectiveness + sun 50% boost + EXPECT_MUL_EQ(results[2].damage, Q_4_12(3.0), results[0].damage); // type effectiveness + sun 50% boost, both have double base power + EXPECT_EQ(results[1].damage, results[3].damage); + } +} + +SINGLE_BATTLE_TEST("Refrigerate doesn't affect Natural Gift's type") +{ + u16 ability; + PARAMETRIZE { ability = ABILITY_SNOW_WARNING; } + PARAMETRIZE { ability = ABILITY_REFRIGERATE; } + GIVEN { + ASSUME(GetMoveEffect(MOVE_NATURAL_GIFT) == EFFECT_NATURAL_GIFT); + ASSUME(gNaturalGiftTable[ITEM_TO_BERRY(ITEM_ORAN_BERRY)].type == TYPE_POISON); + ASSUME(gSpeciesInfo[SPECIES_BELDUM].types[0] == TYPE_STEEL); + PLAYER(SPECIES_AMAURA) { Ability(ability); Item(ITEM_ORAN_BERRY); } + OPPONENT(SPECIES_BELDUM); + } WHEN { + TURN { MOVE(player, MOVE_NATURAL_GIFT); } + } SCENE { + NOT { ANIMATION(ANIM_TYPE_MOVE, MOVE_NATURAL_GIFT, player); } + MESSAGE("It doesn't affect the opposing Beldum…"); + } +} + +SINGLE_BATTLE_TEST("Refrigerate doesn't affect Judgment / Techno Blast / Multi-Attack's type") +{ + u16 move, item; + PARAMETRIZE { move = MOVE_JUDGMENT; item = ITEM_ZAP_PLATE; } + PARAMETRIZE { move = MOVE_TECHNO_BLAST; item = ITEM_SHOCK_DRIVE; } + PARAMETRIZE { move = MOVE_MULTI_ATTACK; item = ITEM_ELECTRIC_MEMORY; } + GIVEN { + ASSUME(GetMoveEffect(MOVE_JUDGMENT) == EFFECT_CHANGE_TYPE_ON_ITEM); + ASSUME(GetMoveEffect(MOVE_TECHNO_BLAST) == EFFECT_CHANGE_TYPE_ON_ITEM); + ASSUME(GetMoveEffect(MOVE_MULTI_ATTACK) == EFFECT_CHANGE_TYPE_ON_ITEM); + ASSUME(gItemsInfo[ITEM_ZAP_PLATE].holdEffect == HOLD_EFFECT_PLATE); + ASSUME(gItemsInfo[ITEM_ZAP_PLATE].secondaryId == TYPE_ELECTRIC); + ASSUME(gItemsInfo[ITEM_SHOCK_DRIVE].holdEffect == HOLD_EFFECT_DRIVE); + ASSUME(gItemsInfo[ITEM_SHOCK_DRIVE].secondaryId == TYPE_ELECTRIC); + ASSUME(gItemsInfo[ITEM_ELECTRIC_MEMORY].holdEffect == HOLD_EFFECT_MEMORY); + ASSUME(gItemsInfo[ITEM_ELECTRIC_MEMORY].secondaryId == TYPE_ELECTRIC); + ASSUME(gSpeciesInfo[SPECIES_DIGLETT].types[0] == TYPE_GROUND); + PLAYER(SPECIES_AMAURA) { Ability(ABILITY_REFRIGERATE); Item(item); } + OPPONENT(SPECIES_DIGLETT); + } WHEN { + TURN { MOVE(player, move); } + } SCENE { + NOT { ANIMATION(ANIM_TYPE_MOVE, move, player); } + MESSAGE("It doesn't affect the opposing Diglett…"); + } +} + +SINGLE_BATTLE_TEST("Refrigerate doesn't affect Hidden Power's type") +{ + GIVEN { + ASSUME(GetMoveEffect(MOVE_HIDDEN_POWER) == EFFECT_HIDDEN_POWER); + ASSUME(gTypesInfo[TYPE_ELECTRIC].isHiddenPowerType == TRUE); + ASSUME(gSpeciesInfo[SPECIES_DIGLETT].types[0] == TYPE_GROUND); + PLAYER(SPECIES_AMAURA) { Ability(ABILITY_REFRIGERATE); HPIV(31); AttackIV(31); DefenseIV(31); SpAttackIV(30); SpDefenseIV(31); SpeedIV(31); } // HP Electric + OPPONENT(SPECIES_DIGLETT); + } WHEN { + TURN { MOVE(player, MOVE_HIDDEN_POWER); } + } SCENE { + NOT { ANIMATION(ANIM_TYPE_MOVE, MOVE_HIDDEN_POWER, player); } + MESSAGE("It doesn't affect the opposing Diglett…"); + } +} + +TO_DO_BATTLE_TEST("Refrigerate doesn't override Electrify (Gen7+)"); // No mon with Refrigerate exists in Gen8+, but probably behaves similar to Pixilate, which does. +TO_DO_BATTLE_TEST("Refrigerate doesn't override Ion Deluge (Gen7+)"); // Ion Deluge doesn't exist in Gen 8+, but we probably could assume it behaves similar to under Electrify. TODO: Test by hacking SV. +TO_DO_BATTLE_TEST("Refrigerate overrides Electrify (Gen6)") +TO_DO_BATTLE_TEST("Refrigerate overrides Ion Deluge (Gen6)") +TO_DO_BATTLE_TEST("Refrigerate doesn't affect Tera Starstorm's type"); +TO_DO_BATTLE_TEST("Refrigerate doesn't affect Max Strike's type"); +TO_DO_BATTLE_TEST("Refrigerate doesn't affect Terrain Pulse's type"); +TO_DO_BATTLE_TEST("Refrigerate doesn't affect damaging Z-Move types"); TO_DO_BATTLE_TEST("(DYNAMAX) Refrigerate turns Max Strike into Max Hailstorm when not used by Gigantamax Lapras"); //TO_DO_BATTLE_TEST("(DYNAMAX) Refrigerate doesn't turn Max Strike into Max Hailstorm when used by Gigantamax Lapras, instead becoming G-Max Resonance"); // Marked in Bulbapedia as "needs research", so this assumes that it behaves like Pixilate. - -// Gen 6-7 -TO_DO_BATTLE_TEST("Refrigerate overrides Electrify (Gen6-7)"); -TO_DO_BATTLE_TEST("Refrigerate overrides Ion Deluge (Gen6-7)"); -// Gen 8+ -//TO_DO_BATTLE_TEST("Refrigerate doesn't override Electrify (Gen8+)"); // Bulbapedia doesn't list this effect, so it assumes it behaves like Pixilate. -//TO_DO_BATTLE_TEST("Refrigerate doesn't override Ion Deluge (Gen8+)"); // Ion Deluge doesn't exist in Gen 8+, but we probably could assume it behaves similar to under Electrify. TODO: Test by hacking SV. diff --git a/test/battle/ability/sheer_force.c b/test/battle/ability/sheer_force.c index 23743eebe8..ee3e10d14e 100644 --- a/test/battle/ability/sheer_force.c +++ b/test/battle/ability/sheer_force.c @@ -672,6 +672,8 @@ DOUBLE_BATTLE_TEST("Sheer Force only boosts the damage of moves it's supposed to TURN { MOVE(opponentRight, MOVE_WATER_GUN, target: playerLeft); MOVE(playerRight, MOVE_WATER_GUN, target: opponentLeft); SKIP_TURN(playerLeft); SKIP_TURN(opponentLeft); } TURN { SKIP_TURN(playerLeft); SKIP_TURN(opponentLeft); } break; + default: + break; } } SCENE { if (GetMoveEffect(move) != EFFECT_FUTURE_SIGHT) @@ -750,6 +752,8 @@ DOUBLE_BATTLE_TEST("Sheer Force only boosts the damage of moves it's supposed to TURN { MOVE(opponentRight, MOVE_WATER_GUN, target: playerLeft); MOVE(playerRight, MOVE_WATER_GUN, target: opponentLeft); SKIP_TURN(playerLeft); SKIP_TURN(opponentLeft); } TURN { SKIP_TURN(playerLeft); SKIP_TURN(opponentLeft); } break; + default: + break; } } SCENE { if (GetMoveEffect(move) != EFFECT_FUTURE_SIGHT) @@ -828,6 +832,8 @@ DOUBLE_BATTLE_TEST("Sheer Force only boosts the damage of moves it's supposed to TURN { MOVE(opponentRight, MOVE_WATER_GUN, target: playerLeft); MOVE(playerRight, MOVE_WATER_GUN, target: opponentLeft); SKIP_TURN(playerLeft); SKIP_TURN(opponentLeft); } TURN { SKIP_TURN(playerLeft); SKIP_TURN(opponentLeft); } break; + default: + break; } } SCENE { if (GetMoveEffect(move) != EFFECT_FUTURE_SIGHT) @@ -908,6 +914,8 @@ DOUBLE_BATTLE_TEST("Sheer Force only boosts the damage of moves it's supposed to TURN { MOVE(opponentRight, MOVE_WATER_GUN, target: playerLeft); MOVE(playerRight, MOVE_WATER_GUN, target: opponentLeft); SKIP_TURN(playerLeft); SKIP_TURN(opponentLeft); } TURN { SKIP_TURN(playerLeft); SKIP_TURN(opponentLeft); } break; + default: + break; } } SCENE { if (GetMoveEffect(move) != EFFECT_FUTURE_SIGHT) diff --git a/test/battle/ability/shield_dust.c b/test/battle/ability/shield_dust.c index a2c0b16030..da6bbf87df 100644 --- a/test/battle/ability/shield_dust.c +++ b/test/battle/ability/shield_dust.c @@ -49,11 +49,11 @@ SINGLE_BATTLE_TEST("Shield Dust does not block primary effects") PARAMETRIZE { move = MOVE_PAY_DAY; } GIVEN { + ASSUME(GetMoveEffect(MOVE_THOUSAND_ARROWS) == EFFECT_SMACK_DOWN); + ASSUME(GetMoveEffect(MOVE_SMACK_DOWN) == EFFECT_SMACK_DOWN); ASSUME(MoveHasAdditionalEffectWithChance(MOVE_INFESTATION, MOVE_EFFECT_WRAP, 0) == TRUE); - ASSUME(MoveHasAdditionalEffectWithChance(MOVE_THOUSAND_ARROWS, MOVE_EFFECT_SMACK_DOWN, 0) == TRUE); ASSUME(MoveHasAdditionalEffectWithChance(MOVE_JAW_LOCK, MOVE_EFFECT_TRAP_BOTH, 0) == TRUE); ASSUME(MoveHasAdditionalEffectWithChance(MOVE_PAY_DAY, MOVE_EFFECT_PAYDAY, 0) == TRUE); - ASSUME(MoveHasAdditionalEffectWithChance(MOVE_SMACK_DOWN, MOVE_EFFECT_SMACK_DOWN, 0) == TRUE); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_VIVILLON) { Ability(ABILITY_SHIELD_DUST); } } WHEN { diff --git a/test/battle/ability/static.c b/test/battle/ability/static.c index b4290f8a5d..110cfbaa0e 100644 --- a/test/battle/ability/static.c +++ b/test/battle/ability/static.c @@ -47,3 +47,18 @@ SINGLE_BATTLE_TEST("Static triggers 30% of the time") STATUS_ICON(player, paralysis: TRUE); } } + +SINGLE_BATTLE_TEST("Static triggers even if attacker is under substitute") +{ + GIVEN { + ASSUME(MoveMakesContact(MOVE_TACKLE)); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_PIKACHU) { Ability(ABILITY_STATIC); } + } WHEN { + TURN { MOVE(player, MOVE_SUBSTITUTE); } + TURN { MOVE(player, MOVE_TACKLE); } + } SCENE { + ABILITY_POPUP(opponent, ABILITY_STATIC); + STATUS_ICON(player, paralysis: TRUE); + } +} diff --git a/test/battle/ability/steam_engine.c b/test/battle/ability/steam_engine.c index bda470af2e..1f487bf6bf 100644 --- a/test/battle/ability/steam_engine.c +++ b/test/battle/ability/steam_engine.c @@ -7,7 +7,7 @@ SINGLE_BATTLE_TEST("Steam Engine raises speed when hit by a Fire or Water move") PARAMETRIZE { move = MOVE_EMBER; } PARAMETRIZE { move = MOVE_WATER_GUN; } - + GIVEN { PLAYER(SPECIES_COALOSSAL) { Ability(ABILITY_STEAM_ENGINE); } OPPONENT(SPECIES_WOBBUFFET); diff --git a/test/battle/ability/sweet_veil.c b/test/battle/ability/sweet_veil.c index 2cedae3c14..56431055c6 100644 --- a/test/battle/ability/sweet_veil.c +++ b/test/battle/ability/sweet_veil.c @@ -1,4 +1,40 @@ #include "global.h" #include "test/battle.h" -TO_DO_BATTLE_TEST("TODO: Write Sweet Veil (Ability) test titles") +ASSUMPTIONS +{ + ASSUME(GetMoveEffect(MOVE_HYPNOSIS) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_HYPNOSIS) == MOVE_EFFECT_SLEEP); +} + +DOUBLE_BATTLE_TEST("Sweet Veil prevents Sleep on partner - right target") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WYNAUT); + OPPONENT(SPECIES_BOUNSWEET) { Ability(ABILITY_SWEET_VEIL); } + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { MOVE(playerLeft, MOVE_HYPNOSIS, target: opponentRight); } + } SCENE { + MESSAGE("Wobbuffet used Hypnosis!"); + ABILITY_POPUP(opponentLeft, ABILITY_SWEET_VEIL); + NOT STATUS_ICON(opponentRight, sleep: TRUE); + } +} + +DOUBLE_BATTLE_TEST("Sweet Veil prevents Sleep on partner - left target") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WYNAUT); + OPPONENT(SPECIES_WYNAUT); + OPPONENT(SPECIES_BOUNSWEET) { Ability(ABILITY_SWEET_VEIL); } + } WHEN { + TURN { MOVE(playerLeft, MOVE_HYPNOSIS, target: opponentLeft); } + } SCENE { + MESSAGE("Wobbuffet used Hypnosis!"); + ABILITY_POPUP(opponentRight, ABILITY_SWEET_VEIL); + NOT STATUS_ICON(opponentLeft, sleep: TRUE); + } +} diff --git a/test/battle/ability/synchronize.c b/test/battle/ability/synchronize.c index 43cf87d5fe..e150e2950e 100644 --- a/test/battle/ability/synchronize.c +++ b/test/battle/ability/synchronize.c @@ -1,4 +1,69 @@ #include "global.h" #include "test/battle.h" -TO_DO_BATTLE_TEST("TODO: Write Synchronize (Ability) test titles") +SINGLE_BATTLE_TEST("Synchronize will mirror back non volatile status back at opposing mon") +{ + + GIVEN { + ASSUME(GetMoveEffect(MOVE_TOXIC) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_TOXIC) == MOVE_EFFECT_TOXIC); + ASSUME(GetMoveNonVolatileStatus(MOVE_TOXIC) == MOVE_EFFECT_TOXIC); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_ABRA) { Ability(ABILITY_SYNCHRONIZE); } + } WHEN { + TURN { MOVE(player, MOVE_TOXIC); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_TOXIC, player); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PSN, opponent); + STATUS_ICON(opponent, badPoison: TRUE); + ABILITY_POPUP(opponent, ABILITY_SYNCHRONIZE); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PSN, player); + STATUS_ICON(player, badPoison: TRUE); + } +} + +SINGLE_BATTLE_TEST("Synchronize will still show up the ability pop up even if it fails") +{ + GIVEN { + ASSUME(MoveMakesContact(MOVE_TACKLE)); + PLAYER(SPECIES_PIKACHU) { Ability(ABILITY_STATIC); } + OPPONENT(SPECIES_ABRA) { Ability(ABILITY_SYNCHRONIZE); } + } WHEN { + TURN { MOVE(opponent, MOVE_TACKLE); MOVE(player, MOVE_CELEBRATE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ABILITY_POPUP(player, ABILITY_STATIC); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PRZ, opponent); + STATUS_ICON(opponent, paralysis: TRUE); + ABILITY_POPUP(opponent, ABILITY_SYNCHRONIZE); + NONE_OF { + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PRZ, player); + STATUS_ICON(player, paralysis: TRUE); + } + } +} + + +SINGLE_BATTLE_TEST("Synchronize will mirror back static activation") +{ + GIVEN { + ASSUME(MoveMakesContact(MOVE_TACKLE)); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_PIKACHU) { Ability(ABILITY_STATIC); } + OPPONENT(SPECIES_ABRA) { Ability(ABILITY_SYNCHRONIZE); } + } WHEN { + TURN { MOVE(player, MOVE_SKILL_SWAP); } + TURN { SWITCH(opponent, 1); } + TURN { MOVE(opponent, MOVE_TACKLE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SKILL_SWAP, player); + + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ABILITY_POPUP(player, ABILITY_STATIC); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PRZ, opponent); + STATUS_ICON(opponent, paralysis: TRUE); + ABILITY_POPUP(opponent, ABILITY_SYNCHRONIZE); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PRZ, player); + STATUS_ICON(player, paralysis: TRUE); + } +} diff --git a/test/battle/ability/tangling_hair.c b/test/battle/ability/tangling_hair.c index 36b14c5f47..13a0f27cb0 100644 --- a/test/battle/ability/tangling_hair.c +++ b/test/battle/ability/tangling_hair.c @@ -68,3 +68,20 @@ SINGLE_BATTLE_TEST("Tangling Hair Speed stat drop triggers defiant and keeps ori MESSAGE("The opposing Pawniard was hurt by Dugtrio's Rocky Helmet!"); } } + +SINGLE_BATTLE_TEST("Tangling Hair does not activate on confusion damage") +{ + GIVEN { + ASSUME(GetMoveEffect(MOVE_CONFUSE_RAY) == EFFECT_CONFUSE); + PLAYER(SPECIES_DUGTRIO) { Ability(ABILITY_TANGLING_HAIR); } + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { MOVE(opponent, MOVE_CONFUSE_RAY); MOVE(player, MOVE_CELEBRATE, WITH_RNG(RNG_CONFUSION, TRUE)); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_CONFUSE_RAY, opponent); + NONE_OF { + ABILITY_POPUP(player, ABILITY_TANGLING_HAIR); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + } + } +} diff --git a/test/battle/ability/thermal_exchange.c b/test/battle/ability/thermal_exchange.c index 90cf395f30..1eb621594f 100644 --- a/test/battle/ability/thermal_exchange.c +++ b/test/battle/ability/thermal_exchange.c @@ -4,7 +4,8 @@ SINGLE_BATTLE_TEST("Thermal Exchange makes Will-O-Wisp fail") { GIVEN { - ASSUME(GetMoveEffect(MOVE_WILL_O_WISP) == EFFECT_WILL_O_WISP); + ASSUME(GetMoveEffect(MOVE_WILL_O_WISP) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_WILL_O_WISP) == MOVE_EFFECT_BURN); PLAYER(SPECIES_BAXCALIBUR) { Ability(ABILITY_THERMAL_EXCHANGE); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { @@ -37,7 +38,8 @@ SINGLE_BATTLE_TEST("Thermal Exchange prevents the user from getting burned when SINGLE_BATTLE_TEST("Thermal Exchange cures burns when acquired") { GIVEN { - ASSUME(GetMoveEffect(MOVE_WILL_O_WISP) == EFFECT_WILL_O_WISP); + ASSUME(GetMoveEffect(MOVE_WILL_O_WISP) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_WILL_O_WISP) == MOVE_EFFECT_BURN); ASSUME(GetMoveEffect(MOVE_SKILL_SWAP) == EFFECT_SKILL_SWAP); PLAYER(SPECIES_BAXCALIBUR) { Ability(ABILITY_THERMAL_EXCHANGE); } OPPONENT(SPECIES_WOBBUFFET); @@ -56,7 +58,8 @@ SINGLE_BATTLE_TEST("Thermal Exchange cures burns when acquired") SINGLE_BATTLE_TEST("Thermal Exchange burn prevention can be bypassed with Mold Breaker but is cured after") { GIVEN { - ASSUME(GetMoveEffect(MOVE_WILL_O_WISP) == EFFECT_WILL_O_WISP); + ASSUME(GetMoveEffect(MOVE_WILL_O_WISP) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_WILL_O_WISP) == MOVE_EFFECT_BURN); PLAYER(SPECIES_BAXCALIBUR) { Ability(ABILITY_THERMAL_EXCHANGE); } OPPONENT(SPECIES_RAMPARDOS) { Ability(ABILITY_MOLD_BREAKER); } } WHEN { diff --git a/test/battle/ability/unburden.c b/test/battle/ability/unburden.c index 28f867622e..0ddce0f227 100644 --- a/test/battle/ability/unburden.c +++ b/test/battle/ability/unburden.c @@ -26,7 +26,7 @@ SINGLE_BATTLE_TEST("Unburden doubles speed once user uses item") SINGLE_BATTLE_TEST("Unburden doubles speed once user gets their item knocked off") { GIVEN { - ASSUME(MoveHasAdditionalEffect(MOVE_KNOCK_OFF, MOVE_EFFECT_KNOCK_OFF)); + ASSUME(GetMoveEffect(MOVE_KNOCK_OFF) == EFFECT_KNOCK_OFF); PLAYER(SPECIES_DRIFBLIM) { Ability(ABILITY_UNBURDEN); Item(ITEM_POTION); Speed(5); } OPPONENT(SPECIES_WOBBUFFET) { Speed(7); } } WHEN { @@ -46,7 +46,7 @@ SINGLE_BATTLE_TEST("Unburden doesn't activate when item is consumed in Neutraliz { GIVEN { ASSUME(GetMoveEffect(MOVE_U_TURN) == EFFECT_HIT_ESCAPE); - ASSUME(MoveHasAdditionalEffect(MOVE_KNOCK_OFF, MOVE_EFFECT_KNOCK_OFF)); + ASSUME(GetMoveEffect(MOVE_KNOCK_OFF) == EFFECT_KNOCK_OFF); PLAYER(SPECIES_DRIFBLIM) { Ability(ABILITY_UNBURDEN); Item(ITEM_POTION); Speed(5); } OPPONENT(SPECIES_WEEZING) { Speed(7); Ability(ABILITY_NEUTRALIZING_GAS); } OPPONENT(SPECIES_WOBBUFFET) { Speed(7); } @@ -73,7 +73,7 @@ SINGLE_BATTLE_TEST("Unburden doubling speed effect is ignored by Neutralizing Ga { GIVEN { ASSUME(GetMoveEffect(MOVE_U_TURN) == EFFECT_HIT_ESCAPE); - ASSUME(MoveHasAdditionalEffect(MOVE_KNOCK_OFF, MOVE_EFFECT_KNOCK_OFF)); + ASSUME(GetMoveEffect(MOVE_KNOCK_OFF) == EFFECT_KNOCK_OFF); PLAYER(SPECIES_DRIFBLIM) { Ability(ABILITY_UNBURDEN); Item(ITEM_POTION); Speed(5); } OPPONENT(SPECIES_WOBBUFFET) { Speed(7); } OPPONENT(SPECIES_WEEZING) { Speed(7); Ability(ABILITY_NEUTRALIZING_GAS); } diff --git a/test/battle/ability/water_bubble.c b/test/battle/ability/water_bubble.c index 2f04b18096..d140dac040 100644 --- a/test/battle/ability/water_bubble.c +++ b/test/battle/ability/water_bubble.c @@ -1,4 +1,21 @@ #include "global.h" #include "test/battle.h" -TO_DO_BATTLE_TEST("TODO: Write Water Bubble (Ability) test titles") +SINGLE_BATTLE_TEST("Water Bubble prevents burn from Will-o-Wisp") +{ + GIVEN { + ASSUME(GetMoveEffect(MOVE_WILL_O_WISP) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_WILL_O_WISP) == MOVE_EFFECT_BURN); + PLAYER(SPECIES_DEWPIDER) { Ability(ABILITY_WATER_BUBBLE); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_WILL_O_WISP); } + } SCENE { + ABILITY_POPUP(player, ABILITY_WATER_BUBBLE); + MESSAGE("Dewpider's Water Bubble prevents burns!"); + NONE_OF { + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_BRN, player); + STATUS_ICON(player, burn: TRUE); + } + } +} diff --git a/test/battle/ai/ai.c b/test/battle/ai/ai.c index dfd0e2eeda..249e686c16 100644 --- a/test/battle/ai/ai.c +++ b/test/battle/ai/ai.c @@ -45,7 +45,7 @@ AI_SINGLE_BATTLE_TEST("AI prefers Water Gun over Bubble if it knows that foe has } SCENE { MESSAGE("Shuckle's Defense fell!"); // Contrary activates } THEN { - EXPECT(gBattleResources->aiData->abilities[B_POSITION_PLAYER_LEFT] == ABILITY_CONTRARY); + EXPECT(gAiLogicData->abilities[B_POSITION_PLAYER_LEFT] == ABILITY_CONTRARY); } } @@ -369,88 +369,6 @@ AI_SINGLE_BATTLE_TEST("AI won't use ground type attacks against flying type Poke } } -AI_DOUBLE_BATTLE_TEST("AI won't use a Weather changing move if partner already chose such move") -{ - u32 j, k; - static const u16 weatherMoves[] = {MOVE_SUNNY_DAY, MOVE_HAIL, MOVE_RAIN_DANCE, MOVE_SANDSTORM, MOVE_SNOWSCAPE}; - u16 weatherMoveLeft = MOVE_NONE, weatherMoveRight = MOVE_NONE; - - for (j = 0; j < ARRAY_COUNT(weatherMoves); j++) - { - for (k = 0; k < ARRAY_COUNT(weatherMoves); k++) - { - PARAMETRIZE { weatherMoveLeft = weatherMoves[j]; weatherMoveRight = weatherMoves[k]; } - } - } - - GIVEN { - AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); - PLAYER(SPECIES_WOBBUFFET); - PLAYER(SPECIES_WOBBUFFET); - OPPONENT(SPECIES_WOBBUFFET) { Moves(weatherMoveLeft); } - OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_SCRATCH, weatherMoveRight); } - } WHEN { - TURN { NOT_EXPECT_MOVE(opponentRight, weatherMoveRight); - SCORE_LT_VAL(opponentRight, weatherMoveRight, AI_SCORE_DEFAULT, target:playerLeft); - SCORE_LT_VAL(opponentRight, weatherMoveRight, AI_SCORE_DEFAULT, target:playerRight); - SCORE_LT_VAL(opponentRight, weatherMoveRight, AI_SCORE_DEFAULT, target:opponentLeft); - } - } -} - -AI_DOUBLE_BATTLE_TEST("AI will not use Helping Hand if partner does not have any damage moves") -{ - u16 move1 = MOVE_NONE, move2 = MOVE_NONE, move3 = MOVE_NONE, move4 = MOVE_NONE; - - PARAMETRIZE { move1 = MOVE_LEER; move2 = MOVE_TOXIC; } - PARAMETRIZE { move1 = MOVE_HELPING_HAND; move2 = MOVE_PROTECT; } - PARAMETRIZE { move1 = MOVE_ACUPRESSURE; move2 = MOVE_DOUBLE_TEAM; move3 = MOVE_TOXIC; move4 = MOVE_PROTECT; } - - GIVEN { - AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); - PLAYER(SPECIES_WOBBUFFET); - PLAYER(SPECIES_WOBBUFFET); - OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_HELPING_HAND, MOVE_SCRATCH); } - OPPONENT(SPECIES_WOBBUFFET) { Moves(move1, move2, move3, move4); } - } WHEN { - TURN { NOT_EXPECT_MOVE(opponentLeft, MOVE_HELPING_HAND); - SCORE_LT_VAL(opponentLeft, MOVE_HELPING_HAND, AI_SCORE_DEFAULT, target:playerLeft); - SCORE_LT_VAL(opponentLeft, MOVE_HELPING_HAND, AI_SCORE_DEFAULT, target:playerRight); - SCORE_LT_VAL(opponentLeft, MOVE_HELPING_HAND, AI_SCORE_DEFAULT, target:opponentLeft); - } - } SCENE { - NOT MESSAGE("The opposing Wobbuffet used Helping Hand!"); - } -} - -AI_DOUBLE_BATTLE_TEST("AI will not use a status move if partner already chose Helping Hand") -{ - s32 j; - u32 statusMove = MOVE_NONE; - - for (j = MOVE_NONE + 1; j < MOVES_COUNT; j++) - { - if (GetMoveCategory(j) == DAMAGE_CATEGORY_STATUS) { - PARAMETRIZE { statusMove = j; } - } - } - - GIVEN { - AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); - PLAYER(SPECIES_WOBBUFFET); - PLAYER(SPECIES_WOBBUFFET); - OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_HELPING_HAND); } - OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_SCRATCH, statusMove); } - } WHEN { - TURN { NOT_EXPECT_MOVE(opponentRight, statusMove); - SCORE_LT_VAL(opponentRight, statusMove, AI_SCORE_DEFAULT, target:playerLeft); - SCORE_LT_VAL(opponentRight, statusMove, AI_SCORE_DEFAULT, target:playerRight); - SCORE_LT_VAL(opponentRight, statusMove, AI_SCORE_DEFAULT, target:opponentLeft); - } - } SCENE { - MESSAGE("The opposing Wobbuffet used Helping Hand!"); - } -} AI_SINGLE_BATTLE_TEST("AI without any flags chooses moves at random - singles") { @@ -641,79 +559,6 @@ AI_SINGLE_BATTLE_TEST("AI will choose Superpower over Outrage with Contrary") } } -AI_DOUBLE_BATTLE_TEST("AI will not choose Earthquake if it damages the partner") -{ - u32 species; - - PARAMETRIZE { species = SPECIES_CHARIZARD; } - PARAMETRIZE { species = SPECIES_CHARMANDER; } - PARAMETRIZE { species = SPECIES_CHIKORITA; } - - GIVEN { - ASSUME(GetMoveTarget(MOVE_EARTHQUAKE) == MOVE_TARGET_FOES_AND_ALLY); - AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); - PLAYER(SPECIES_WOBBUFFET); - PLAYER(SPECIES_WOBBUFFET); - OPPONENT(SPECIES_PHANPY) { Moves(MOVE_EARTHQUAKE, MOVE_SCRATCH); } - OPPONENT(species) { Moves(MOVE_CELEBRATE); } - } WHEN { - if (species == SPECIES_CHARIZARD) - TURN { EXPECT_MOVE(opponentLeft, MOVE_EARTHQUAKE); } - else - TURN { EXPECT_MOVE(opponentLeft, MOVE_SCRATCH, target: playerLeft); } - } -} - -AI_DOUBLE_BATTLE_TEST("AI will choose Earthquake if partner is not alive") -{ - GIVEN { - ASSUME(GetMoveTarget(MOVE_EARTHQUAKE) == MOVE_TARGET_FOES_AND_ALLY); - AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); - PLAYER(SPECIES_WOBBUFFET); - PLAYER(SPECIES_WOBBUFFET); - OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_EARTHQUAKE, MOVE_SCRATCH); } - OPPONENT(SPECIES_PIKACHU) { HP(1); Moves(MOVE_CELEBRATE); } - } WHEN { - TURN { MOVE(playerLeft, MOVE_SCRATCH, target: opponentRight); } - TURN { EXPECT_MOVE(opponentLeft, MOVE_EARTHQUAKE); } - } -} - -AI_DOUBLE_BATTLE_TEST("AI will choose Earthquake if it kill an opposing mon and does 1/3 of damage to AI") -{ - GIVEN { - ASSUME(GetMoveTarget(MOVE_EARTHQUAKE) == MOVE_TARGET_FOES_AND_ALLY); - AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); - PLAYER(SPECIES_WOBBUFFET); - PLAYER(SPECIES_WOBBUFFET) { HP(1); } - OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_EARTHQUAKE, MOVE_SCRATCH); } - OPPONENT(SPECIES_PARAS) { Moves(MOVE_CELEBRATE); } - } WHEN { - TURN { EXPECT_MOVE(opponentLeft, MOVE_EARTHQUAKE); } - } -} - -AI_DOUBLE_BATTLE_TEST("AI will the see a corresponding absorbing ability on partner to one of its moves") -{ - u32 ability; - PARAMETRIZE { ability = ABILITY_LIGHTNING_ROD; } - PARAMETRIZE { ability = ABILITY_STATIC; } - - GIVEN { - ASSUME(GetMoveTarget(MOVE_DISCHARGE) == MOVE_TARGET_FOES_AND_ALLY); - AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); - PLAYER(SPECIES_WOBBUFFET); - PLAYER(SPECIES_WOBBUFFET); - OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_DISCHARGE, MOVE_SCRATCH); } - OPPONENT(SPECIES_PIKACHU) { HP(1); Ability(ability); Moves(MOVE_CELEBRATE); } - } WHEN { - if (ability == ABILITY_LIGHTNING_ROD) - TURN { EXPECT_MOVE(opponentLeft, MOVE_DISCHARGE); } - else - TURN { EXPECT_MOVE(opponentLeft, MOVE_SCRATCH); } - } -} - AI_SINGLE_BATTLE_TEST("AI calculates guaranteed criticals and detects critical immunity") { u32 ability; @@ -737,22 +582,6 @@ AI_SINGLE_BATTLE_TEST("AI calculates guaranteed criticals and detects critical i } } -AI_DOUBLE_BATTLE_TEST("AI recognizes Volt Absorb received from Trace") -{ - KNOWN_FAILING; // MGriffin's PR that switched two turn charging moves in AI tests broke this test, waiting on a fix - GIVEN { - AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); - PLAYER(SPECIES_MAGNETON); - PLAYER(SPECIES_GARDEVOIR) { Ability(ABILITY_TRACE); } - OPPONENT(SPECIES_JOLTEON) { Ability(ABILITY_VOLT_ABSORB); Moves(MOVE_THUNDER_WAVE, MOVE_THUNDERSHOCK, MOVE_WATER_GUN); } - OPPONENT(SPECIES_JOLTEON) { Ability(ABILITY_VOLT_ABSORB); Moves(MOVE_THUNDER_WAVE, MOVE_THUNDERSHOCK, MOVE_WATER_GUN); } - } WHEN { - TURN { NOT_EXPECT_MOVE(opponentLeft, MOVE_THUNDERSHOCK); NOT_EXPECT_MOVE(opponentLeft, MOVE_THUNDER_WAVE); NOT_EXPECT_MOVE(opponentRight, MOVE_THUNDER_WAVE); } - } THEN { - EXPECT(gBattleResources->aiData->abilities[B_POSITION_PLAYER_RIGHT] == ABILITY_VOLT_ABSORB); - } -} - AI_SINGLE_BATTLE_TEST("AI avoids contact moves against rocky helmet") { u32 item; @@ -846,6 +675,45 @@ AI_SINGLE_BATTLE_TEST("AI won't use Sucker Punch if it expects a move of the sam } } +AI_SINGLE_BATTLE_TEST("AI won't use thawing moves if target is frozen unless it is super effective or it has no other options") +{ + u32 aiFlags = 0; u32 status = 0; u32 aiMove = 0; + PARAMETRIZE { status = STATUS1_FREEZE; aiMove = MOVE_SCALD; aiFlags = 0; } + PARAMETRIZE { status = STATUS1_FREEZE; aiMove = MOVE_SCALD; aiFlags = AI_FLAG_CHECK_BAD_MOVE; } + PARAMETRIZE { status = STATUS1_FROSTBITE; aiMove = MOVE_SCALD; aiFlags = 0; } + PARAMETRIZE { status = STATUS1_FROSTBITE; aiMove = MOVE_SCALD; aiFlags = AI_FLAG_CHECK_BAD_MOVE; } + PARAMETRIZE { status = STATUS1_FREEZE; aiMove = MOVE_EMBER; aiFlags = 0; } + PARAMETRIZE { status = STATUS1_FREEZE; aiMove = MOVE_EMBER; aiFlags = AI_FLAG_CHECK_BAD_MOVE; } + PARAMETRIZE { status = STATUS1_FROSTBITE; aiMove = MOVE_EMBER; aiFlags = 0; } + PARAMETRIZE { status = STATUS1_FROSTBITE; aiMove = MOVE_EMBER; aiFlags = AI_FLAG_CHECK_BAD_MOVE; } + + GIVEN { + ASSUME(GetMoveType(MOVE_EMBER) == TYPE_FIRE); + ASSUME(GetMoveCategory(MOVE_TACKLE) == DAMAGE_CATEGORY_PHYSICAL); + ASSUME(GetMoveCategory(MOVE_WATER_GUN) == DAMAGE_CATEGORY_SPECIAL); + ASSUME(gMovesInfo[MOVE_SCALD].thawsUser == TRUE); + AI_FLAGS(aiFlags | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); + PLAYER(SPECIES_WOBBUFFET) { Moves(MOVE_TACKLE); Status1(status); } + OPPONENT(SPECIES_VULPIX) { Moves(MOVE_TACKLE, aiMove); } + } WHEN { + if (aiFlags == AI_FLAG_CHECK_BAD_MOVE) + TURN { MOVE(player, MOVE_TACKLE); EXPECT_MOVE(opponent, MOVE_TACKLE); } + else + TURN { MOVE(player, MOVE_TACKLE); EXPECT_MOVE(opponent, aiMove); } + } +} + +AI_SINGLE_BATTLE_TEST("AI score for Mean Look will be decreased if target can escape") +{ + GIVEN { + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_OMNISCIENT); + PLAYER(SPECIES_BULBASAUR) { Item(ITEM_SHED_SHELL); } + OPPONENT(SPECIES_BULBASAUR) { Moves(MOVE_TACKLE, MOVE_MEAN_LOOK); } + } WHEN { + TURN { SCORE_EQ_VAL(opponent, MOVE_MEAN_LOOK, 90); } + } +} + AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_SWITCHING: AI considers Focus Sash when determining if it should switch out") { GIVEN { @@ -903,15 +771,48 @@ SINGLE_BATTLE_TEST("AI correctly records used moves") TURN { MOVE(player, MOVE_TORCH_SONG); MOVE(opponent, MOVE_PSYCHIC); } TURN { MOVE(player, MOVE_GROWL); MOVE(opponent, MOVE_RAGE_FIST); } } THEN { - EXPECT_EQ(BATTLE_HISTORY->usedMoves[B_POSITION_PLAYER_LEFT][0], MOVE_TACKLE); - EXPECT_EQ(BATTLE_HISTORY->usedMoves[B_POSITION_PLAYER_LEFT][1], MOVE_GROWL); - EXPECT_EQ(BATTLE_HISTORY->usedMoves[B_POSITION_PLAYER_LEFT][2], MOVE_FLOWER_TRICK); - EXPECT_EQ(BATTLE_HISTORY->usedMoves[B_POSITION_PLAYER_LEFT][3], MOVE_TORCH_SONG); + EXPECT_EQ(gBattleHistory->usedMoves[B_POSITION_PLAYER_LEFT][0], MOVE_TACKLE); + EXPECT_EQ(gBattleHistory->usedMoves[B_POSITION_PLAYER_LEFT][1], MOVE_GROWL); + EXPECT_EQ(gBattleHistory->usedMoves[B_POSITION_PLAYER_LEFT][2], MOVE_FLOWER_TRICK); + EXPECT_EQ(gBattleHistory->usedMoves[B_POSITION_PLAYER_LEFT][3], MOVE_TORCH_SONG); - EXPECT_EQ(BATTLE_HISTORY->usedMoves[B_POSITION_OPPONENT_LEFT][0], MOVE_RAGE_FIST); - EXPECT_EQ(BATTLE_HISTORY->usedMoves[B_POSITION_OPPONENT_LEFT][1], MOVE_PSYCHIC); - EXPECT_EQ(BATTLE_HISTORY->usedMoves[B_POSITION_OPPONENT_LEFT][2], MOVE_SCRATCH); - EXPECT_EQ(BATTLE_HISTORY->usedMoves[B_POSITION_OPPONENT_LEFT][3], MOVE_EARTHQUAKE); + EXPECT_EQ(gBattleHistory->usedMoves[B_POSITION_OPPONENT_LEFT][0], MOVE_RAGE_FIST); + EXPECT_EQ(gBattleHistory->usedMoves[B_POSITION_OPPONENT_LEFT][1], MOVE_PSYCHIC); + EXPECT_EQ(gBattleHistory->usedMoves[B_POSITION_OPPONENT_LEFT][2], MOVE_SCRATCH); + EXPECT_EQ(gBattleHistory->usedMoves[B_POSITION_OPPONENT_LEFT][3], MOVE_EARTHQUAKE); + } +} + +AI_SINGLE_BATTLE_TEST("AI won't boost stats against opponent with Unaware") +{ + GIVEN { + MoveHasAdditionalEffectSelf(MOVE_SWORDS_DANCE, MOVE_EFFECT_ATK_PLUS_2); + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY); + PLAYER(SPECIES_QUAGSIRE) { Ability(ABILITY_UNAWARE); Moves(MOVE_TACKLE); } + OPPONENT(SPECIES_ZIGZAGOON) { Moves(MOVE_BODY_SLAM, MOVE_SWORDS_DANCE); } + } WHEN { + TURN { MOVE(player, MOVE_TACKLE); EXPECT_MOVE(opponent, MOVE_BODY_SLAM); } + } +} + +AI_SINGLE_BATTLE_TEST("AI won't use status moves against opponents that would benefit") +{ + u32 aiMove; + PARAMETRIZE { aiMove = MOVE_WILL_O_WISP; } + PARAMETRIZE { aiMove = MOVE_TOXIC; } + PARAMETRIZE { aiMove = MOVE_THUNDER_WAVE; } + GIVEN { + ASSUME(GetMoveEffect(MOVE_WILL_O_WISP) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_WILL_O_WISP) == MOVE_EFFECT_BURN); + ASSUME(GetMoveEffect(MOVE_TOXIC) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_TOXIC) == MOVE_EFFECT_TOXIC); + ASSUME(GetMoveEffect(MOVE_THUNDER_WAVE) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_THUNDER_WAVE) == MOVE_EFFECT_PARALYSIS); + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_OMNISCIENT); + PLAYER(SPECIES_SWELLOW) { Ability(ABILITY_GUTS); Moves(MOVE_TACKLE); } + OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_TACKLE, aiMove); } + } WHEN { + TURN { MOVE(player, MOVE_TACKLE); EXPECT_MOVE(opponent, MOVE_TACKLE); } } } diff --git a/test/battle/ai/ai_check_viability.c b/test/battle/ai/ai_check_viability.c index 2f30c3df3a..f80597f476 100644 --- a/test/battle/ai/ai_check_viability.c +++ b/test/battle/ai/ai_check_viability.c @@ -241,21 +241,6 @@ AI_SINGLE_BATTLE_TEST("AI chooses moves that cure inactive party members") } } -AI_DOUBLE_BATTLE_TEST("AI prioritizes Skill Swapping Contrary to allied mons that would benefit from it") -{ - GIVEN { - ASSUME(GetMoveEffect(MOVE_SKILL_SWAP) == EFFECT_SKILL_SWAP); - ASSUME(GetMoveAdditionalEffectById(MOVE_OVERHEAT, 0)->moveEffect == MOVE_EFFECT_SP_ATK_MINUS_2); - AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY | AI_FLAG_DOUBLE_BATTLE); - PLAYER(SPECIES_WOBBUFFET) { Speed(3); } - PLAYER(SPECIES_WOBBUFFET) { Speed(3); } - OPPONENT(SPECIES_SPINDA) { Ability(ABILITY_CONTRARY); Speed(5); Moves(MOVE_SKILL_SWAP, MOVE_ENCORE, MOVE_FAKE_TEARS, MOVE_SWAGGER); } - OPPONENT(SPECIES_ARCANINE) { Ability(ABILITY_INTIMIDATE); Speed(4); Moves (MOVE_OVERHEAT); } - } WHEN { - TURN { EXPECT_MOVE(opponentLeft, MOVE_SKILL_SWAP, target:opponentRight); EXPECT_MOVE(opponentRight, MOVE_OVERHEAT); } - } -} - AI_SINGLE_BATTLE_TEST("AI prioritizes Pursuit if it would KO opponent") { GIVEN { diff --git a/test/battle/ai/ai_choice.c b/test/battle/ai/ai_choice.c index 4fae4debba..fc3706ca29 100644 --- a/test/battle/ai/ai_choice.c +++ b/test/battle/ai/ai_choice.c @@ -195,3 +195,58 @@ AI_SINGLE_BATTLE_TEST("Choiced Pokémon won't use status move if they are trappe } } } + +AI_SINGLE_BATTLE_TEST("Choiced Pokémon will switch if locked into a move the player is immune to") +{ + GIVEN { + ASSUME(gSpeciesInfo[SPECIES_GASTLY].types[0] == TYPE_GHOST); + ASSUME(GetMoveType(MOVE_SURF) == TYPE_WATER); + ASSUME(GetMoveType(MOVE_BODY_SLAM) == TYPE_NORMAL); + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_OMNISCIENT); + PLAYER(SPECIES_GASTLY) { Level(1); Moves(MOVE_CELEBRATE); } + PLAYER(SPECIES_VAPOREON) { Ability(ABILITY_WATER_ABSORB); Moves(MOVE_SURF); } + OPPONENT(SPECIES_ZIGZAGOON) { Item(ITEM_CHOICE_BAND); Moves(MOVE_SURF, MOVE_BODY_SLAM); } + OPPONENT(SPECIES_ZIGZAGOON) { Item(ITEM_CHOICE_BAND); Moves(MOVE_SURF, MOVE_BODY_SLAM); } + } WHEN { + TURN { MOVE(player, MOVE_CELEBRATE); EXPECT_MOVE(opponent, MOVE_SURF); SEND_OUT(player, 1); } + TURN { MOVE(player, MOVE_SURF); EXPECT_SWITCH(opponent, 1); } + } +} + +AI_SINGLE_BATTLE_TEST("Choiced Pokémon will only see choiced moves when considering switching with ShouldSwitchIfHasBadOdds") +{ + PASSES_RANDOMLY(SHOULD_SWITCH_HASBADODDS_PERCENTAGE, 100, RNG_AI_SWITCH_HASBADODDS); + GIVEN { + ASSUME(gSpeciesInfo[SPECIES_GASTLY].types[0] == TYPE_GHOST); + ASSUME(GetMoveType(MOVE_SURF) == TYPE_WATER); + ASSUME(GetMoveType(MOVE_BODY_SLAM) == TYPE_NORMAL); + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_OMNISCIENT | AI_FLAG_SMART_SWITCHING | AI_FLAG_SMART_MON_CHOICES); + PLAYER(SPECIES_GASTLY) { Level(1); Moves(MOVE_CELEBRATE); } + PLAYER(SPECIES_ZIGZAGOON) { Item(ITEM_CHOICE_BAND); Moves(MOVE_CLOSE_COMBAT); } + OPPONENT(SPECIES_ZIGZAGOON) { Item(ITEM_CHOICE_BAND); Moves(MOVE_SURF, MOVE_CLOSE_COMBAT); } + OPPONENT(SPECIES_BRONZONG) { Moves(MOVE_CLOSE_COMBAT); } + } WHEN { + TURN { MOVE(player, MOVE_CELEBRATE); EXPECT_MOVE(opponent, MOVE_SURF); SEND_OUT(player, 1); } + TURN { MOVE(player, MOVE_CLOSE_COMBAT); EXPECT_SWITCH(opponent, 1); } + } +} + +AI_SINGLE_BATTLE_TEST("Choiced Pokémon will only see choiced moves when considering switching with FindMonThatAbsorbsMove") +{ + PASSES_RANDOMLY(SHOULD_SWITCH_ABSORBS_MOVE_PERCENTAGE, 100, RNG_AI_SWITCH_ABSORBING); + GIVEN { + ASSUME(gSpeciesInfo[SPECIES_SANDSHREW].types[0] == TYPE_GROUND); + ASSUME(GetMoveType(MOVE_SCRATCH) == TYPE_NORMAL); + ASSUME(GetMoveType(MOVE_THUNDERBOLT) == TYPE_ELECTRIC); + ASSUME(GetMoveType(MOVE_WATER_GUN) == TYPE_WATER); + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_OMNISCIENT | AI_FLAG_SMART_SWITCHING | AI_FLAG_SMART_MON_CHOICES); + PLAYER(SPECIES_WOOPER) { Ability(ABILITY_WATER_ABSORB); Moves(MOVE_CELEBRATE); } + PLAYER(SPECIES_DWEBBLE) { Moves(MOVE_WATER_GUN); } + OPPONENT(SPECIES_MUDKIP) { Item(ITEM_CHOICE_SCARF); Moves(MOVE_SCRATCH, MOVE_WATER_GUN); } + OPPONENT(SPECIES_WOOPER) { Ability(ABILITY_WATER_ABSORB); Moves(MOVE_SCRATCH); } + } WHEN { + TURN { SWITCH(player, 1); EXPECT_MOVE(opponent, MOVE_SCRATCH); } + TURN { MOVE(player, MOVE_WATER_GUN); EXPECT_MOVE(opponent, MOVE_SCRATCH); } + TURN { MOVE(player, MOVE_WATER_GUN); EXPECT_SWITCH(opponent, 1); } + } +} diff --git a/test/battle/ai/ai_doubles.c b/test/battle/ai/ai_doubles.c new file mode 100644 index 0000000000..5edc271fff --- /dev/null +++ b/test/battle/ai/ai_doubles.c @@ -0,0 +1,412 @@ +#include "global.h" +#include "test/battle.h" +#include "battle_ai_util.h" + +AI_DOUBLE_BATTLE_TEST("AI won't use a Weather changing move if partner already chose such move") +{ + u32 j, k; + static const u16 weatherMoves[] = {MOVE_SUNNY_DAY, MOVE_HAIL, MOVE_RAIN_DANCE, MOVE_SANDSTORM, MOVE_SNOWSCAPE}; + u16 weatherMoveLeft = MOVE_NONE, weatherMoveRight = MOVE_NONE; + + for (j = 0; j < ARRAY_COUNT(weatherMoves); j++) + { + for (k = 0; k < ARRAY_COUNT(weatherMoves); k++) + { + PARAMETRIZE { weatherMoveLeft = weatherMoves[j]; weatherMoveRight = weatherMoves[k]; } + } + } + + GIVEN { + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET) { Moves(weatherMoveLeft); } + OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_SCRATCH, weatherMoveRight); } + } WHEN { + TURN { NOT_EXPECT_MOVE(opponentRight, weatherMoveRight); + SCORE_LT_VAL(opponentRight, weatherMoveRight, AI_SCORE_DEFAULT, target:playerLeft); + SCORE_LT_VAL(opponentRight, weatherMoveRight, AI_SCORE_DEFAULT, target:playerRight); + SCORE_LT_VAL(opponentRight, weatherMoveRight, AI_SCORE_DEFAULT, target:opponentLeft); + } + } +} + +AI_DOUBLE_BATTLE_TEST("AI will not use Helping Hand if partner does not have any damage moves") +{ + u16 move1 = MOVE_NONE, move2 = MOVE_NONE, move3 = MOVE_NONE, move4 = MOVE_NONE; + + PARAMETRIZE { move1 = MOVE_LEER; move2 = MOVE_TOXIC; } + PARAMETRIZE { move1 = MOVE_HELPING_HAND; move2 = MOVE_PROTECT; } + PARAMETRIZE { move1 = MOVE_ACUPRESSURE; move2 = MOVE_DOUBLE_TEAM; move3 = MOVE_TOXIC; move4 = MOVE_PROTECT; } + + GIVEN { + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_HELPING_HAND, MOVE_SCRATCH); } + OPPONENT(SPECIES_WOBBUFFET) { Moves(move1, move2, move3, move4); } + } WHEN { + TURN { NOT_EXPECT_MOVE(opponentLeft, MOVE_HELPING_HAND); + SCORE_LT_VAL(opponentLeft, MOVE_HELPING_HAND, AI_SCORE_DEFAULT, target:playerLeft); + SCORE_LT_VAL(opponentLeft, MOVE_HELPING_HAND, AI_SCORE_DEFAULT, target:playerRight); + SCORE_LT_VAL(opponentLeft, MOVE_HELPING_HAND, AI_SCORE_DEFAULT, target:opponentLeft); + } + } SCENE { + NOT MESSAGE("The opposing Wobbuffet used Helping Hand!"); + } +} + +AI_DOUBLE_BATTLE_TEST("AI will not use a status move if partner already chose Helping Hand") +{ + s32 j; + u32 statusMove = MOVE_NONE; + + for (j = MOVE_NONE + 1; j < MOVES_COUNT; j++) + { + if (GetMoveCategory(j) == DAMAGE_CATEGORY_STATUS) { + PARAMETRIZE { statusMove = j; } + } + } + + GIVEN { + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_HELPING_HAND); } + OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_SCRATCH, statusMove); } + } WHEN { + TURN { NOT_EXPECT_MOVE(opponentRight, statusMove); + SCORE_LT_VAL(opponentRight, statusMove, AI_SCORE_DEFAULT, target:playerLeft); + SCORE_LT_VAL(opponentRight, statusMove, AI_SCORE_DEFAULT, target:playerRight); + SCORE_LT_VAL(opponentRight, statusMove, AI_SCORE_DEFAULT, target:opponentLeft); + } + } SCENE { + MESSAGE("The opposing Wobbuffet used Helping Hand!"); + } +} + +AI_DOUBLE_BATTLE_TEST("AI will not choose Earthquake if it damages the partner without a positive effect") +{ + ASSUME(GetMoveTarget(MOVE_EARTHQUAKE) == MOVE_TARGET_FOES_AND_ALLY); + + u32 species; + + PARAMETRIZE { species = SPECIES_CHARIZARD; } + PARAMETRIZE { species = SPECIES_CHARMANDER; } + PARAMETRIZE { species = SPECIES_CHIKORITA; } + + GIVEN { + ASSUME(GetMoveTarget(MOVE_EARTHQUAKE) == MOVE_TARGET_FOES_AND_ALLY); + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_PHANPY) { Moves(MOVE_EARTHQUAKE, MOVE_SCRATCH); } + OPPONENT(species) { Moves(MOVE_CELEBRATE); } + } WHEN { + if (species == SPECIES_CHARIZARD) + TURN { EXPECT_MOVE(opponentLeft, MOVE_EARTHQUAKE); } + else + TURN { EXPECT_MOVE(opponentLeft, MOVE_SCRATCH, target: playerLeft); } + } +} + +AI_DOUBLE_BATTLE_TEST("AI recognizes its ally's Telepathy") +{ + ASSUME(GetMoveTarget(MOVE_EARTHQUAKE) == MOVE_TARGET_FOES_AND_ALLY); + + GIVEN { + ASSUME(GetMoveTarget(MOVE_EARTHQUAKE) == MOVE_TARGET_FOES_AND_ALLY); + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_PHANPY) { Moves(MOVE_EARTHQUAKE, MOVE_SCRATCH); } + OPPONENT(SPECIES_ELGYEM) { Level(1); Ability(ABILITY_TELEPATHY); } + } WHEN { + TURN { EXPECT_MOVE(opponentLeft, MOVE_EARTHQUAKE); } + } +} + +AI_DOUBLE_BATTLE_TEST("AI will choose Bulldoze if it triggers its ally's ability but will not KO the ally needlessly") +{ + ASSUME(GetMoveTarget(MOVE_BULLDOZE) == MOVE_TARGET_FOES_AND_ALLY); + ASSUME(GetMoveType(MOVE_BULLDOZE) == TYPE_GROUND); + ASSUME(MoveHasAdditionalEffect(MOVE_BULLDOZE, MOVE_EFFECT_SPD_MINUS_1)); + + u32 species, ability, currentHP; + + PARAMETRIZE { species = SPECIES_KINGAMBIT; ability = ABILITY_DEFIANT; currentHP = 400; } + PARAMETRIZE { species = SPECIES_SHUCKLE; ability = ABILITY_CONTRARY; currentHP = 400; } + PARAMETRIZE { species = SPECIES_PAWNIARD; ability = ABILITY_PRESSURE; currentHP = 1; } + PARAMETRIZE { species = SPECIES_PAWNIARD; ability = ABILITY_DEFIANT; currentHP = 1; } + PARAMETRIZE { species = SPECIES_SHUCKLE; ability = ABILITY_CONTRARY; currentHP = 1; } + + GIVEN { + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_PHANPY) { Moves(MOVE_BULLDOZE, MOVE_HIGH_HORSEPOWER); } + OPPONENT(species) { Moves(MOVE_CELEBRATE, MOVE_POUND); HP(currentHP); Ability(ability); } + } WHEN { + if (currentHP != 1) + TURN { EXPECT_MOVE(opponentLeft, MOVE_BULLDOZE); } + else + TURN { EXPECT_MOVE(opponentLeft, MOVE_HIGH_HORSEPOWER); } + } +} + +AI_DOUBLE_BATTLE_TEST("AI will choose Beat Up on an ally with Justified if it will benefit the ally") +{ + ASSUME(GetMoveEffect(MOVE_BEAT_UP) == EFFECT_BEAT_UP); + ASSUME(GetMoveType(MOVE_BEAT_UP) == TYPE_DARK); + + u32 defAbility, atkAbility, currentHP; + + PARAMETRIZE { defAbility = ABILITY_FLASH_FIRE; atkAbility = ABILITY_SCRAPPY; currentHP = 400; } + PARAMETRIZE { defAbility = ABILITY_JUSTIFIED; atkAbility = ABILITY_SCRAPPY; currentHP = 400; } + PARAMETRIZE { defAbility = ABILITY_JUSTIFIED; atkAbility = ABILITY_MOLD_BREAKER; currentHP = 400; } + PARAMETRIZE { defAbility = ABILITY_JUSTIFIED; atkAbility = ABILITY_SCRAPPY; currentHP = 1; } + + GIVEN { + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_CLEFABLE); + OPPONENT(SPECIES_PANGORO) { Ability(atkAbility); Moves(MOVE_BEAT_UP); } + OPPONENT(SPECIES_GROWLITHE) { Moves(MOVE_CELEBRATE, MOVE_TACKLE); HP(currentHP); Ability(defAbility); } + } WHEN { + if (!(currentHP == 1) && (defAbility == ABILITY_JUSTIFIED) && (atkAbility != ABILITY_MOLD_BREAKER)) + TURN { EXPECT_MOVE(opponentLeft, MOVE_BEAT_UP, target: opponentRight); } + else + TURN { EXPECT_MOVE(opponentLeft, MOVE_BEAT_UP, target: playerLeft); } + } +} + +AI_DOUBLE_BATTLE_TEST("AI will choose Earthquake if partner is not alive") +{ + ASSUME(GetMoveTarget(MOVE_EARTHQUAKE) == MOVE_TARGET_FOES_AND_ALLY); + ASSUME(GetMoveType(MOVE_EARTHQUAKE) == TYPE_GROUND); + + GIVEN { + ASSUME(GetMoveTarget(MOVE_EARTHQUAKE) == MOVE_TARGET_FOES_AND_ALLY); + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_EARTHQUAKE, MOVE_SCRATCH); } + OPPONENT(SPECIES_PIKACHU) { HP(1); Moves(MOVE_CELEBRATE); } + } WHEN { + TURN { MOVE(playerLeft, MOVE_SCRATCH, target: opponentRight); } + TURN { EXPECT_MOVE(opponentLeft, MOVE_EARTHQUAKE); } + } +} + +AI_DOUBLE_BATTLE_TEST("AI will choose Earthquake if it kills one opposing mon and does not kill the partner needlessly") +{ + ASSUME(GetMoveTarget(MOVE_EARTHQUAKE) == MOVE_TARGET_FOES_AND_ALLY); + ASSUME(GetMoveType(MOVE_EARTHQUAKE) == TYPE_GROUND); + + u32 currentHP; + PARAMETRIZE { currentHP = 1; } + PARAMETRIZE { currentHP = 200; } + + GIVEN { + ASSUME(GetMoveTarget(MOVE_EARTHQUAKE) == MOVE_TARGET_FOES_AND_ALLY); + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WOBBUFFET) { HP(1); } + OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_EARTHQUAKE, MOVE_SCRATCH); } + OPPONENT(SPECIES_PARAS) { Moves(MOVE_CELEBRATE); HP(currentHP); } + } WHEN { + if (currentHP == 1) + TURN { EXPECT_MOVE(opponentLeft, MOVE_SCRATCH); } + else + TURN { EXPECT_MOVE(opponentLeft, MOVE_EARTHQUAKE); } + } +} + +AI_DOUBLE_BATTLE_TEST("AI will choose Earthquake if it kills one opposing mon and a partner it believes is about to die") +{ + ASSUME(GetMoveTarget(MOVE_EARTHQUAKE) == MOVE_TARGET_FOES_AND_ALLY); + ASSUME(GetMoveType(MOVE_EARTHQUAKE) == TYPE_GROUND); + + GIVEN { + ASSUME(GetMoveTarget(MOVE_EARTHQUAKE) == MOVE_TARGET_FOES_AND_ALLY); + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_OMNISCIENT); + PLAYER(SPECIES_WOBBUFFET) { Moves(MOVE_CELEBRATE, MOVE_SCRATCH); } + PLAYER(SPECIES_WOBBUFFET) { HP(1); Moves(MOVE_CELEBRATE, MOVE_SCRATCH); } + OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_EARTHQUAKE, MOVE_SCRATCH); } + OPPONENT(SPECIES_PARAS) { Moves(MOVE_CELEBRATE); HP(1); } + } WHEN { + TURN { MOVE(playerLeft, MOVE_SCRATCH); } + TURN { MOVE(playerRight, MOVE_SCRATCH); } + TURN { EXPECT_MOVE(opponentLeft, MOVE_EARTHQUAKE); } + } +} + +AI_DOUBLE_BATTLE_TEST("AI will choose Earthquake if it kills both opposing mons") +{ + ASSUME(GetMoveTarget(MOVE_EARTHQUAKE) == MOVE_TARGET_FOES_AND_ALLY); + ASSUME(GetMoveType(MOVE_EARTHQUAKE) == TYPE_GROUND); + + GIVEN { + ASSUME(GetMoveTarget(MOVE_EARTHQUAKE) == MOVE_TARGET_FOES_AND_ALLY); + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); + PLAYER(SPECIES_WOBBUFFET) { HP(1); } + PLAYER(SPECIES_WOBBUFFET) { HP(1); } + OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_EARTHQUAKE, MOVE_SCRATCH); } + OPPONENT(SPECIES_PARAS) { Moves(MOVE_CELEBRATE); HP(1); } + } WHEN { + TURN { EXPECT_MOVE(opponentLeft, MOVE_EARTHQUAKE); } + } +} + +AI_DOUBLE_BATTLE_TEST("AI will trigger its ally's Weakness Policy") +{ + ASSUME(gItemsInfo[ITEM_WEAKNESS_POLICY].holdEffect == HOLD_EFFECT_WEAKNESS_POLICY); + ASSUME(GetMoveTarget(MOVE_EARTHQUAKE) == MOVE_TARGET_FOES_AND_ALLY); + ASSUME(GetMoveType(MOVE_EARTHQUAKE) == TYPE_GROUND); + + u32 species; + PARAMETRIZE { species = SPECIES_INCINEROAR; } + PARAMETRIZE { species = SPECIES_CLEFFA; } + + GIVEN { + ASSUME(GetMoveTarget(MOVE_EARTHQUAKE) == MOVE_TARGET_FOES_AND_ALLY); + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_EARTHQUAKE, MOVE_STOMPING_TANTRUM); } + OPPONENT(species) { Moves(MOVE_CELEBRATE); Item(ITEM_WEAKNESS_POLICY); } + } WHEN { + if (species == SPECIES_INCINEROAR) + TURN { EXPECT_MOVE(opponentLeft, MOVE_EARTHQUAKE); } + else + TURN { NOT_EXPECT_MOVE(opponentLeft, MOVE_EARTHQUAKE); } + } +} + +AI_DOUBLE_BATTLE_TEST("AI will only explode and kill everything on the field with Risky or Will Suicide") +{ + ASSUME(GetMoveTarget(MOVE_EXPLOSION) == MOVE_TARGET_FOES_AND_ALLY); + ASSUME(GetMoveEffect(MOVE_EXPLOSION) == EFFECT_EXPLOSION); + + u32 aiFlags; + + PARAMETRIZE { aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT; } + PARAMETRIZE { aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_RISKY; } + PARAMETRIZE { aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_WILL_SUICIDE; } + + GIVEN { + AI_FLAGS(aiFlags); + PLAYER(SPECIES_WOBBUFFET) { HP(1); } + PLAYER(SPECIES_WOBBUFFET) { HP(1); } + OPPONENT(SPECIES_ELECTRODE) { Moves(MOVE_EXPLOSION, MOVE_ELECTRO_BALL); } + OPPONENT(SPECIES_ELECTRODE) { Moves(MOVE_CELEBRATE); HP(1); } + } WHEN { + if (aiFlags == (AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT)) + TURN { EXPECT_MOVE(opponentLeft, MOVE_ELECTRO_BALL); } + else + TURN { EXPECT_MOVE(opponentLeft, MOVE_EXPLOSION); } + } +} + +AI_DOUBLE_BATTLE_TEST("AI sees corresponding absorbing abilities on partners") +{ + ASSUME(GetMoveTarget(MOVE_DISCHARGE) == MOVE_TARGET_FOES_AND_ALLY); + ASSUME(GetMoveType(MOVE_DISCHARGE) == TYPE_ELECTRIC); + ASSUME(GetMoveTarget(MOVE_LAVA_PLUME) == MOVE_TARGET_FOES_AND_ALLY); + ASSUME(GetMoveType(MOVE_LAVA_PLUME) == TYPE_FIRE); + ASSUME(GetMoveTarget(MOVE_SURF) == MOVE_TARGET_FOES_AND_ALLY); + ASSUME(GetMoveType(MOVE_SURF) == TYPE_WATER); + ASSUME(GetMoveTarget(MOVE_EARTHQUAKE) == MOVE_TARGET_FOES_AND_ALLY); + ASSUME(GetMoveType(MOVE_EARTHQUAKE) == TYPE_GROUND); + + u32 ability, move, species; + + PARAMETRIZE { species = SPECIES_PSYDUCK; ability = ABILITY_CLOUD_NINE; move = MOVE_DISCHARGE; } + PARAMETRIZE { species = SPECIES_PIKACHU; ability = ABILITY_LIGHTNING_ROD; move = MOVE_DISCHARGE; } + PARAMETRIZE { species = SPECIES_LANTURN; ability = ABILITY_VOLT_ABSORB; move = MOVE_DISCHARGE; } + PARAMETRIZE { species = SPECIES_EMOLGA; ability = ABILITY_MOTOR_DRIVE; move = MOVE_DISCHARGE; } + PARAMETRIZE { species = SPECIES_SEAKING; ability = ABILITY_LIGHTNING_ROD; move = MOVE_DISCHARGE; } + PARAMETRIZE { species = SPECIES_GROWLITHE; ability = ABILITY_FLASH_FIRE; move = MOVE_LAVA_PLUME; } + PARAMETRIZE { species = SPECIES_DACHSBUN; ability = ABILITY_WELL_BAKED_BODY; move = MOVE_LAVA_PLUME; } + PARAMETRIZE { species = SPECIES_QUAGSIRE; ability = ABILITY_WATER_ABSORB; move = MOVE_SURF; } + PARAMETRIZE { species = SPECIES_SHELLOS; ability = ABILITY_STORM_DRAIN; move = MOVE_SURF; } + PARAMETRIZE { species = SPECIES_UNOWN; ability = ABILITY_LEVITATE; move = MOVE_EARTHQUAKE; } + PARAMETRIZE { species = SPECIES_ORTHWORM; ability = ABILITY_EARTH_EATER; move = MOVE_EARTHQUAKE; } + + GIVEN { + ASSUME(GetMoveTarget(MOVE_DISCHARGE) == MOVE_TARGET_FOES_AND_ALLY); + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_HP_AWARE); + PLAYER(SPECIES_ZIGZAGOON); + PLAYER(SPECIES_ZIGZAGOON); + OPPONENT(SPECIES_SLAKING) { Moves(move, MOVE_SCRATCH); } + OPPONENT(species) { HP(1); Ability(ability); Moves(MOVE_POUND, MOVE_EMBER, MOVE_ROUND); } + } WHEN { + if (ability != ABILITY_CLOUD_NINE) + TURN { EXPECT_MOVE(opponentLeft, move); } + else + TURN { EXPECT_MOVE(opponentLeft, MOVE_SCRATCH); } + } +} + +AI_DOUBLE_BATTLE_TEST("AI knows if redirection abilities provide immunity to allies") +{ + KNOWN_FAILING; + ASSUME(GetMoveTarget(MOVE_DISCHARGE) == MOVE_TARGET_FOES_AND_ALLY); + ASSUME(GetMoveType(MOVE_DISCHARGE) == TYPE_ELECTRIC); + ASSUME(GetMoveTarget(MOVE_SURF) == MOVE_TARGET_FOES_AND_ALLY); + ASSUME(GetMoveType(MOVE_SURF) == TYPE_WATER); + + u32 ability, move, species, config; + + PARAMETRIZE { species = SPECIES_SEAKING; ability = ABILITY_LIGHTNING_ROD; move = MOVE_DISCHARGE; config = GEN_4; } + PARAMETRIZE { species = SPECIES_SEAKING; ability = ABILITY_LIGHTNING_ROD; move = MOVE_DISCHARGE; config = GEN_5; } + PARAMETRIZE { species = SPECIES_SHELLOS; ability = ABILITY_STORM_DRAIN; move = MOVE_SURF; config = GEN_4; } + PARAMETRIZE { species = SPECIES_SHELLOS; ability = ABILITY_STORM_DRAIN; move = MOVE_SURF; config = GEN_5; } + + GIVEN { + ASSUME(GetMoveTarget(MOVE_DISCHARGE) == MOVE_TARGET_FOES_AND_ALLY); + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_HP_AWARE); + WITH_CONFIG(B_REDIRECT_ABILITY_IMMUNITY, config); + PLAYER(SPECIES_ZIGZAGOON); + PLAYER(SPECIES_ZIGZAGOON); + OPPONENT(SPECIES_SLAKING) { Moves(move, MOVE_SCRATCH); } + OPPONENT(species) { HP(1); Ability(ability); Moves(MOVE_ROUND); } + } WHEN { + if (config == GEN_5) + TURN { EXPECT_MOVE(opponentLeft, move); } + else + TURN { EXPECT_MOVE(opponentLeft, MOVE_SCRATCH); } + } +} + +AI_DOUBLE_BATTLE_TEST("AI recognizes Volt Absorb received from Trace") +{ + KNOWN_FAILING; // MGriffin's PR that switched two turn charging moves in AI tests broke this test, waiting on a fix + GIVEN { + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); + PLAYER(SPECIES_MAGNETON); + PLAYER(SPECIES_GARDEVOIR) { Ability(ABILITY_TRACE); } + OPPONENT(SPECIES_JOLTEON) { Ability(ABILITY_VOLT_ABSORB); Moves(MOVE_THUNDER_WAVE, MOVE_THUNDERSHOCK, MOVE_WATER_GUN); } + OPPONENT(SPECIES_JOLTEON) { Ability(ABILITY_VOLT_ABSORB); Moves(MOVE_THUNDER_WAVE, MOVE_THUNDERSHOCK, MOVE_WATER_GUN); } + } WHEN { + TURN { NOT_EXPECT_MOVE(opponentLeft, MOVE_THUNDERSHOCK); NOT_EXPECT_MOVE(opponentLeft, MOVE_THUNDER_WAVE); NOT_EXPECT_MOVE(opponentRight, MOVE_THUNDER_WAVE); } + } THEN { + EXPECT(gAiLogicData->abilities[B_POSITION_PLAYER_RIGHT] == ABILITY_VOLT_ABSORB); + } +} + +AI_DOUBLE_BATTLE_TEST("AI prioritizes Skill Swapping Contrary to allied mons that would benefit from it") +{ + GIVEN { + ASSUME(GetMoveEffect(MOVE_SKILL_SWAP) == EFFECT_SKILL_SWAP); + ASSUME(GetMoveAdditionalEffectById(MOVE_OVERHEAT, 0)->moveEffect == MOVE_EFFECT_SP_ATK_MINUS_2); + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY | AI_FLAG_DOUBLE_BATTLE); + PLAYER(SPECIES_WOBBUFFET) { Speed(3); } + PLAYER(SPECIES_WOBBUFFET) { Speed(3); } + OPPONENT(SPECIES_SPINDA) { Ability(ABILITY_CONTRARY); Speed(5); Moves(MOVE_SKILL_SWAP, MOVE_ENCORE, MOVE_FAKE_TEARS, MOVE_SWAGGER); } + OPPONENT(SPECIES_ARCANINE) { Ability(ABILITY_INTIMIDATE); Speed(4); Moves (MOVE_OVERHEAT); } + } WHEN { + TURN { EXPECT_MOVE(opponentLeft, MOVE_SKILL_SWAP, target:opponentRight); EXPECT_MOVE(opponentRight, MOVE_OVERHEAT); } + } +} + diff --git a/test/battle/ai/ai_flag_predict_move.c b/test/battle/ai/ai_flag_predict_move.c new file mode 100644 index 0000000000..97a7c12afa --- /dev/null +++ b/test/battle/ai/ai_flag_predict_move.c @@ -0,0 +1,29 @@ +#include "global.h" +#include "test/battle.h" +#include "battle_ai_util.h" + +AI_SINGLE_BATTLE_TEST("AI_FLAG_PREDICT_MOVE: AI will predict player's move") +{ + PASSES_RANDOMLY(PREDICT_MOVE_CHANCE, 100, RNG_AI_PREDICT_MOVE); + GIVEN { + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY | AI_FLAG_OMNISCIENT | AI_FLAG_SMART_SWITCHING | AI_FLAG_SMART_MON_CHOICES | AI_FLAG_PREDICT_MOVE); + PLAYER(SPECIES_VAPOREON) { Ability(ABILITY_WATER_ABSORB); Moves(MOVE_SURF, MOVE_TACKLE); } + OPPONENT(SPECIES_NUMEL) { Moves(MOVE_TACKLE); } + OPPONENT(SPECIES_VAPOREON) { Ability(ABILITY_WATER_ABSORB); Moves(MOVE_TACKLE); } + } WHEN { + TURN { MOVE(player, MOVE_SURF); EXPECT_SWITCH(opponent, 1); } + } +} + +AI_SINGLE_BATTLE_TEST("AI_FLAG_PREDICT_MOVE: AI will still attack you when it should") +{ + PASSES_RANDOMLY(PREDICT_MOVE_CHANCE, 100, RNG_AI_PREDICT_MOVE); + GIVEN { + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY | AI_FLAG_OMNISCIENT | AI_FLAG_SMART_SWITCHING | AI_FLAG_SMART_MON_CHOICES | AI_FLAG_PREDICT_MOVE); + PLAYER(SPECIES_VAPOREON) { Ability(ABILITY_WATER_ABSORB); Moves(MOVE_SURF, MOVE_TACKLE); } + OPPONENT(SPECIES_SCEPTILE) { Moves(MOVE_LEAF_BLADE); } + OPPONENT(SPECIES_RHYDON) { Ability(ABILITY_ROCK_HEAD); Moves(MOVE_EARTHQUAKE); } + } WHEN { + TURN { MOVE(player, MOVE_SURF); EXPECT_MOVE(opponent, MOVE_LEAF_BLADE); } + } +} diff --git a/test/battle/ai/ai_pp_stall_prevention.c b/test/battle/ai/ai_pp_stall_prevention.c new file mode 100644 index 0000000000..1c7aa8a49d --- /dev/null +++ b/test/battle/ai/ai_pp_stall_prevention.c @@ -0,0 +1,18 @@ +#include "global.h" +#include "test/battle.h" +#include "battle_ai_util.h" + +AI_SINGLE_BATTLE_TEST("AI_FLAG_PP_STALL_PREVENTION: AI will stop using moves that has hit into immunities due to switches sometimes") +{ + PASSES_RANDOMLY(PP_STALL_DISREGARD_MOVE_PERCENTAGE, 100, RNG_AI_PP_STALL_DISREGARD_MOVE); + GIVEN { + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY | AI_FLAG_PP_STALL_PREVENTION); + PLAYER(SPECIES_RATICATE); + PLAYER(SPECIES_GENGAR); + OPPONENT(SPECIES_KARTANA) { Moves(MOVE_SHADOW_CLAW, MOVE_SACRED_SWORD, MOVE_ROCK_SLIDE); } + } WHEN { + TURN { SWITCH(player, 1); EXPECT_MOVE(opponent, MOVE_SACRED_SWORD); } + TURN { SWITCH(player, 0); EXPECT_MOVE(opponent, MOVE_SHADOW_CLAW); } + TURN { SWITCH(player, 1); EXPECT_MOVE(opponent, MOVE_SACRED_SWORD); } + } +} diff --git a/test/battle/ai/ai_switching.c b/test/battle/ai/ai_switching.c index a4ddef6735..46c419f211 100644 --- a/test/battle/ai/ai_switching.c +++ b/test/battle/ai/ai_switching.c @@ -82,6 +82,22 @@ AI_SINGLE_BATTLE_TEST("AI will switch out if it has no move that affects the pla } } +AI_SINGLE_BATTLE_TEST("When AI switches out due to having no move that affects the player, AI will send in a mon that can hit the player, even if not ideal") +{ + GIVEN { + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_SMART_MON_CHOICES); + PLAYER(SPECIES_GENGAR) { Moves(MOVE_SHADOW_BALL, MOVE_CELEBRATE); } + OPPONENT(SPECIES_ABRA) { Moves(MOVE_TACKLE); } + OPPONENT(SPECIES_ABRA) { Moves(MOVE_TACKLE); } + OPPONENT(SPECIES_ABRA) { Level(5); Moves(MOVE_CONFUSION); } + OPPONENT(SPECIES_ABRA) { Moves(MOVE_TACKLE); } + OPPONENT(SPECIES_ABRA) { Moves(MOVE_TACKLE); } + } WHEN { + TURN { MOVE(player, MOVE_SHADOW_BALL); EXPECT_SWITCH(opponent, 2); EXPECT_SEND_OUT(opponent, 4); } + TURN { MOVE(player, MOVE_SHADOW_BALL); EXPECT_MOVE(opponent, MOVE_TACKLE); } + } +} + AI_DOUBLE_BATTLE_TEST("AI will not try to switch for the same pokemon for 2 spots in a double battle (Wonder Guard)") { PASSES_RANDOMLY(SHOULD_SWITCH_WONDER_GUARD_PERCENTAGE, 100, RNG_AI_SWITCH_WONDER_GUARD); @@ -280,7 +296,7 @@ AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_MON_CHOICES: Mid-battle switches prioritize PARAMETRIZE { expectedIndex = 3; move1 = MOVE_SCRATCH; move2 = MOVE_SCRATCH; 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_SCRATCH; aiSmartSwitchFlags = 0; } - PARAMETRIZE { expectedIndex = 2; move1 = MOVE_SCRATCH; move2 = MOVE_SCRATCH; 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 = 2; move1 = MOVE_SCRATCH; move2 = MOVE_WATER_PULSE; 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_SCRATCH; aiSmartSwitchFlags = AI_FLAG_SMART_MON_CHOICES; } GIVEN { @@ -596,7 +612,8 @@ AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_SWITCHING: AI will switch out if it has bee PARAMETRIZE { species = SPECIES_HARIYAMA, odds = SHOULD_SWITCH_BADLY_POISONED_PERCENTAGE; } PASSES_RANDOMLY(odds, 100, RNG_AI_SWITCH_BADLY_POISONED); GIVEN { - ASSUME(GetMoveEffect(MOVE_TOXIC) == EFFECT_TOXIC); + ASSUME(GetMoveEffect(MOVE_TOXIC) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_TOXIC) == MOVE_EFFECT_TOXIC); AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_SMART_SWITCHING); PLAYER(SPECIES_ZIGZAGOON) { Moves(MOVE_SCRATCH, MOVE_CELEBRATE, MOVE_TOXIC, MOVE_AURA_SPHERE); } OPPONENT(SPECIES_ZIGZAGOON) { Moves(MOVE_SCRATCH); } @@ -821,9 +838,10 @@ AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_SWITCHING: AI will switch out if it has an PARAMETRIZE { aiMon = SPECIES_ORTHWORM; absorbingAbility = ABILITY_EARTH_EATER; move = MOVE_EARTHQUAKE;} PARAMETRIZE { aiMon = SPECIES_BRONZONG; absorbingAbility = ABILITY_LEVITATE; move = MOVE_EARTHQUAKE;} PARAMETRIZE { aiMon = SPECIES_ELECTRODE; absorbingAbility = ABILITY_SOUNDPROOF; move = MOVE_HYPER_VOICE;} + PARAMETRIZE { aiMon = SPECIES_CHESNAUGHT; absorbingAbility = ABILITY_BULLETPROOF; move = MOVE_SLUDGE_BOMB;} + PARAMETRIZE { aiMon = SPECIES_SHIFTRY; absorbingAbility = ABILITY_WIND_RIDER; move = MOVE_HURRICANE;} GIVEN { ASSUME(B_REDIRECT_ABILITY_IMMUNITY >= GEN_5); - ASSUME(GetMoveType(MOVE_WATER_GUN) == TYPE_WATER); AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_SMART_SWITCHING); PLAYER(SPECIES_ZIGZAGOON) { Moves(move); } OPPONENT(SPECIES_ZIGZAGOON) { Moves(MOVE_SCRATCH); } @@ -1099,3 +1117,125 @@ AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_SWITCHING: AI won't switch in absorbing mon TURN { MOVE(player, MOVE_CLOSE_COMBAT); EXPECT_MOVE(opponent, MOVE_DRACO_METEOR); } } } + +AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_MON_CHOICES: AI will consider choice-locked player when determining which mon to send out") +{ + u32 item; + PARAMETRIZE { item = ITEM_NONE; } + PARAMETRIZE { item = ITEM_CHOICE_BAND; } + GIVEN { + ASSUME(gItemsInfo[ITEM_CHOICE_BAND].holdEffect == HOLD_EFFECT_CHOICE_BAND); + 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 | AI_FLAG_OMNISCIENT); + PLAYER(SPECIES_JOLTEON) { Speed(5); Moves(MOVE_EARTHQUAKE, MOVE_THUNDERBOLT); Item(item); } + OPPONENT(SPECIES_WOBBUFFET) { Speed(4); HP(1); Moves(MOVE_TACKLE); } + OPPONENT(SPECIES_MACHAMP) { Speed(4); Moves(MOVE_REVENGE); } + OPPONENT(SPECIES_GYARADOS) { Speed(4); Moves(MOVE_EARTHQUAKE); } + } WHEN { + TURN { MOVE(player, MOVE_EARTHQUAKE); EXPECT_MOVE(opponent, MOVE_TACKLE); item == ITEM_NONE ? EXPECT_SEND_OUT(opponent, 1) : EXPECT_SEND_OUT(opponent, 2); } + } +} + +AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_SWITCHING: AI will switch out if all moves deal zero damage") +{ + PASSES_RANDOMLY(SHOULD_SWITCH_ALL_SCORES_BAD_PERCENTAGE, 100, RNG_AI_SWITCH_ALL_SCORES_BAD); + GIVEN { + ASSUME(GetMoveEffect(MOVE_WILL_O_WISP) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_WILL_O_WISP) == MOVE_EFFECT_BURN); + ASSUME(GetMoveEffect(MOVE_POLTERGEIST) == EFFECT_POLTERGEIST); + ASSUME(GetMoveType(MOVE_SCALD) == TYPE_WATER); + ASSUME(GetMoveType(MOVE_EARTHQUAKE) == TYPE_GROUND); + ASSUME(gSpeciesInfo[SPECIES_MANTINE].types[1] == TYPE_FLYING); + ASSUME(GetItemHoldEffect(ITEM_WATER_GEM) == HOLD_EFFECT_GEMS); + ASSUME(GetItemSecondaryId(ITEM_WATER_GEM) == TYPE_WATER); + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY | AI_FLAG_SMART_SWITCHING | AI_FLAG_OMNISCIENT); + PLAYER(SPECIES_MANTINE) { Speed(5); Moves(MOVE_ROOST, MOVE_SCALD); Ability(ABILITY_WATER_VEIL); Item(ITEM_WATER_GEM); } + OPPONENT(SPECIES_DUSKNOIR) { Speed(6); Moves(MOVE_WILL_O_WISP, MOVE_POLTERGEIST, MOVE_EARTHQUAKE); } + OPPONENT(SPECIES_ZIGZAGOON) { Speed(6); Moves(MOVE_TACKLE); } + } WHEN { + TURN { EXPECT_MOVE(opponent, MOVE_POLTERGEIST); MOVE(player, MOVE_SCALD); } + TURN { EXPECT_SWITCH(opponent, 1); MOVE(player, MOVE_ROOST); } + } +} + +AI_SINGLE_BATTLE_TEST("Switch AI: AI will switch out if Palafin-Zero isn't transformed yet") +{ + GIVEN { + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); + PLAYER(SPECIES_FINIZEN); + OPPONENT(SPECIES_PALAFIN_ZERO); + OPPONENT(SPECIES_FINIZEN); + } WHEN { + TURN { MOVE(player, MOVE_CELEBRATE); EXPECT_SWITCH(opponent, 1); } + } +} + +AI_SINGLE_BATTLE_TEST("Switch AI: AI will use pivot move to activate Palafin's Zero to Hero rather than hard switching") +{ + GIVEN { + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); + PLAYER(SPECIES_FINIZEN); + OPPONENT(SPECIES_PALAFIN_ZERO) { Moves(MOVE_FLIP_TURN); } + OPPONENT(SPECIES_FINIZEN); + } WHEN { + TURN { MOVE(player, MOVE_CELEBRATE); EXPECT_MOVE(opponent, MOVE_FLIP_TURN); EXPECT_SEND_OUT(opponent, 1); } + } +} + +AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_SWITCHING: AI won't send out defensive mon that can lose 1v1, or switch out a mon that can win 1v1 even with bad type matchup") +{ + PASSES_RANDOMLY(100, 100, RNG_AI_SWITCH_HASBADODDS); + GIVEN { + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_SMART_SWITCHING | AI_FLAG_SMART_MON_CHOICES | AI_FLAG_OMNISCIENT); + PLAYER(SPECIES_PANPOUR) { + Level(15); + Moves(MOVE_WATER_PULSE, MOVE_PLAY_NICE, MOVE_FURY_SWIPES, MOVE_LICK); + Item(ITEM_MYSTIC_WATER); + Ability(ABILITY_GLUTTONY); + Nature(NATURE_MODEST); + HPIV(31); + AttackIV(31); + DefenseIV(31); + SpAttackIV(31); + SpDefenseIV(31); + SpeedIV(31); } + OPPONENT(SPECIES_RHYHORN) { + Level(14); + Moves(MOVE_ROCK_TOMB, MOVE_HORN_ATTACK, MOVE_BULLDOZE, MOVE_ROCK_SMASH); + Item(ITEM_RINDO_BERRY); + Ability(ABILITY_LIGHTNING_ROD); + Nature(NATURE_ADAMANT); + HPIV(31); + AttackIV(31); + DefenseIV(31); + SpAttackIV(31); + SpDefenseIV(31); + SpeedIV(31); } + OPPONENT(SPECIES_GLIGAR) { + Level(15); + Moves(MOVE_WING_ATTACK, MOVE_QUICK_ATTACK, MOVE_BULLDOZE); + Item(ITEM_ORAN_BERRY); + Ability(ABILITY_SAND_VEIL); + Nature(NATURE_ADAMANT); + HPIV(31); + AttackIV(31); + DefenseIV(31); + SpAttackIV(31); + SpDefenseIV(31); + SpeedIV(31); } + OPPONENT(SPECIES_WOOPER_PALDEA) { + Level(15); + Moves(MOVE_MUD_SHOT, MOVE_ACID_SPRAY, MOVE_YAWN, MOVE_SANDSTORM); + Item(ITEM_ORAN_BERRY); + Ability(ABILITY_WATER_ABSORB); + Nature(NATURE_MODEST); + HPIV(31); + AttackIV(31); + DefenseIV(31); + SpAttackIV(31); + SpDefenseIV(31); + SpeedIV(31); } + } WHEN { + TURN { MOVE(player, MOVE_WATER_PULSE); EXPECT_MOVE(opponent, MOVE_BULLDOZE); EXPECT_SEND_OUT(opponent, 1); } + TURN { MOVE(player, MOVE_WATER_PULSE); EXPECT_MOVE(opponent, MOVE_BULLDOZE); } + } +} diff --git a/test/battle/ai/check_bad_move.c b/test/battle/ai/check_bad_move.c new file mode 100644 index 0000000000..79b960ec60 --- /dev/null +++ b/test/battle/ai/check_bad_move.c @@ -0,0 +1,48 @@ +#include "global.h" +#include "test/battle.h" +#include "battle_ai_util.h" + +AI_SINGLE_BATTLE_TEST("AI will not try to lower opposing stats if target is protected by it's ability") +{ + u16 ability, species, move; + + PARAMETRIZE { ability = ABILITY_SPEED_BOOST; species = SPECIES_TORCHIC; move = MOVE_SCARY_FACE; } + PARAMETRIZE { ability = ABILITY_HYPER_CUTTER; species = SPECIES_KRABBY; move = MOVE_GROWL; } + PARAMETRIZE { ability = ABILITY_BIG_PECKS; species = SPECIES_PIDGEY; move = MOVE_SCREECH; } + PARAMETRIZE { ability = ABILITY_ILLUMINATE; species = SPECIES_STARYU; move = MOVE_SAND_ATTACK; } + PARAMETRIZE { ability = ABILITY_KEEN_EYE; species = SPECIES_PIDGEY; move = MOVE_SAND_ATTACK; } + PARAMETRIZE { ability = ABILITY_CONTRARY; species = SPECIES_SNIVY; move = MOVE_NOBLE_ROAR; } + PARAMETRIZE { ability = ABILITY_CLEAR_BODY; species = SPECIES_BELDUM; move = MOVE_NOBLE_ROAR; } + + GIVEN { + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_OMNISCIENT); + PLAYER(species) { Ability(ability); } + OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_TACKLE, move); } + } WHEN { + TURN { SCORE_LT_VAL(opponent, move, AI_SCORE_DEFAULT); } + } +} + + +AI_DOUBLE_BATTLE_TEST("AI will not try to lower opposing stats if target is protected by Flower Veil") +{ + u16 move; + + PARAMETRIZE { move = MOVE_SCARY_FACE; } + PARAMETRIZE { move = MOVE_GROWL; } + PARAMETRIZE { move = MOVE_SCREECH; } + PARAMETRIZE { move = MOVE_SAND_ATTACK; } + PARAMETRIZE { move = MOVE_SAND_ATTACK; } + PARAMETRIZE { move = MOVE_NOBLE_ROAR; } + PARAMETRIZE { move = MOVE_NOBLE_ROAR; } + + GIVEN { + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_OMNISCIENT); + PLAYER(SPECIES_COMFEY) { Ability(ABILITY_FLOWER_VEIL); } + PLAYER(SPECIES_BULBASAUR); + OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_TACKLE, move); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { SCORE_LT_VAL(opponentLeft, move, AI_SCORE_DEFAULT, target: playerRight); } + } +} diff --git a/test/battle/end_turn_effects.c b/test/battle/end_turn_effects.c new file mode 100644 index 0000000000..51aa1e79bf --- /dev/null +++ b/test/battle/end_turn_effects.c @@ -0,0 +1,31 @@ +#include "global.h" +#include "test/battle.h" + +DOUBLE_BATTLE_TEST("End Turn Effects: First Event Block is executed correctly") +{ + s16 healed; + s16 damage; + + GIVEN { + PLAYER(SPECIES_WYNAUT) { HP(100); Speed(1); } + PLAYER(SPECIES_EKANS) { HP(100); Ability(ABILITY_SHED_SKIN); Status1(STATUS1_BURN); Speed(2); } + OPPONENT(SPECIES_WYNAUT) { HP(100); Item(ITEM_LEFTOVERS); Speed(3); } + OPPONENT(SPECIES_WOBBUFFET) { HP(100); Item(ITEM_BLACK_SLUDGE); Speed(4); } + } WHEN { + TURN { MOVE(playerLeft, MOVE_GRASSY_TERRAIN); } + } SCENE { + MESSAGE("The opposing Wobbuffet is healed by the grassy terrain!"); + HP_BAR(opponentRight, captureDamage: &healed); + HP_BAR(opponentRight, captureDamage: &damage); + MESSAGE("The opposing Wobbuffet was hurt by the Black Sludge!"); + MESSAGE("The opposing Wynaut is healed by the grassy terrain!"); + MESSAGE("The opposing Wynaut restored a little HP using its Leftovers!"); + MESSAGE("Ekans is healed by the grassy terrain!"); + MESSAGE("Ekans's Shed Skin cured its burn problem!"); + MESSAGE("Wynaut is healed by the grassy terrain!"); + } THEN { + EXPECT_GT(0, healed); + EXPECT_GT(damage, 0); + } +} + diff --git a/test/battle/gimmick/dynamax.c b/test/battle/gimmick/dynamax.c index e8c4c63a10..a929c82068 100644 --- a/test/battle/gimmick/dynamax.c +++ b/test/battle/gimmick/dynamax.c @@ -164,6 +164,24 @@ SINGLE_BATTLE_TEST("Dynamax: Dynamax expires after three turns and correctly con } } +// Visual test to make sure Zoroark appears as Wobbuffet/Zigzagoon until illusion breaks +SINGLE_BATTLE_TEST("Dynamax: Illusion doesn't break upon Dynamaxing when illusioned") +{ + u32 species; + PARAMETRIZE { species = SPECIES_WOBBUFFET; } + PARAMETRIZE { species = SPECIES_ZIGZAGOON; } + GIVEN { + PLAYER(SPECIES_ZOROARK); + PLAYER(species); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_SCRATCH, gimmick: GIMMICK_DYNAMAX); MOVE(opponent, MOVE_SCRATCH); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_ILLUSION_OFF, player); + } +} + SINGLE_BATTLE_TEST("Dynamax: Dynamaxed Pokemon cannot be flinched") { GIVEN { @@ -405,6 +423,7 @@ SINGLE_BATTLE_TEST("Dynamax: Dynamaxed Pokemon that changes forms does not gain { u16 capturedHP, finalHP; GIVEN { + WITH_CONFIG(GEN_CONFIG_BATTLE_BOND, GEN_8); PLAYER(SPECIES_GRENINJA_BATTLE_BOND) { Ability(ABILITY_BATTLE_BOND); HP(100); Speed(100); } OPPONENT(SPECIES_CATERPIE) { HP(1); Speed(1000); } OPPONENT(SPECIES_WOBBUFFET) { Speed(10); } @@ -436,7 +455,7 @@ SINGLE_BATTLE_TEST("Dynamax: Dynamaxed Pokemon that changes forms does not gain } SCENE { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_DYNAMAX_GROWTH, player); ANIMATION(ANIM_TYPE_MOVE, MOVE_MAX_STRIKE, player); - ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_POWER_CONSTRUCT, player); } THEN { EXPECT_MUL_EQ(maxHP - hp, GetDynamaxLevelHPMultiplier(0, FALSE), player->maxHP - player->hp); } @@ -1560,7 +1579,7 @@ SINGLE_BATTLE_TEST("Dynamax: Moxie clones can be triggered by Max Moves fainting } SCENE { MESSAGE("The opposing Wobbuffet fainted!"); ABILITY_POPUP(player, ABILITY_MOXIE); - MESSAGE("Gyarados's Moxie raised its Attack!"); + MESSAGE("Gyarados's Attack rose!"); } } diff --git a/test/battle/gimmick/terastal.c b/test/battle/gimmick/terastal.c index a021fbf343..19f42fbc9d 100644 --- a/test/battle/gimmick/terastal.c +++ b/test/battle/gimmick/terastal.c @@ -777,20 +777,39 @@ SINGLE_BATTLE_TEST("(TERA) Terapagos retains its base defensive profile when Ter } } -SINGLE_BATTLE_TEST("(TERA) Illusion breaks if the pokemon Terastalizes") +SINGLE_BATTLE_TEST("(TERA) Illusion breaks if the pokemon Terastallizes when illusioned as a mon that changes forms by Terastallizing") { - KNOWN_FAILING; // #5015 u32 species; PARAMETRIZE { species = SPECIES_TERAPAGOS; } - PARAMETRIZE { species = SPECIES_WOBBUFFET; } + PARAMETRIZE { species = SPECIES_OGERPON; } GIVEN { - PLAYER(SPECIES_ZOROARK) { TeraType(TYPE_DARK); } + ASSUME(DoesSpeciesHaveFormChangeMethod(species, FORM_CHANGE_BATTLE_TERASTALLIZATION)); + PLAYER(SPECIES_ZOROARK) { TeraType(TYPE_BUG); } PLAYER(species); OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(player, MOVE_CELEBRATE, gimmick: GIMMICK_TERA); } } SCENE { - MESSAGE("Zoroark's Illusion wore off!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_ILLUSION_OFF, player); + } +} + +// Visual test to make sure Zoroark appears as Wobbuffet/Zigzagoon until illusion breaks +SINGLE_BATTLE_TEST("(TERA) Illusion doesn't break upon Terastallizing when illusioned as a mon that doesn't change forms by Terastallizing") +{ + u32 species; + PARAMETRIZE { species = SPECIES_WOBBUFFET; } + PARAMETRIZE { species = SPECIES_ZIGZAGOON; } + GIVEN { + ASSUME(!DoesSpeciesHaveFormChangeMethod(species, FORM_CHANGE_BATTLE_TERASTALLIZATION)); + PLAYER(SPECIES_ZOROARK) { TeraType(TYPE_BUG); } + PLAYER(species); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_CELEBRATE, gimmick: GIMMICK_TERA); MOVE(opponent, MOVE_SCRATCH); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_ILLUSION_OFF, player); } } diff --git a/test/battle/hold_effect/covert_cloak.c b/test/battle/hold_effect/covert_cloak.c index 47c5f3f358..90593e7cc5 100644 --- a/test/battle/hold_effect/covert_cloak.c +++ b/test/battle/hold_effect/covert_cloak.c @@ -54,11 +54,11 @@ SINGLE_BATTLE_TEST("Covert Cloak does not block primary effects") PARAMETRIZE { move = MOVE_PAY_DAY; } GIVEN { + ASSUME(GetMoveEffect(MOVE_THOUSAND_ARROWS) == EFFECT_SMACK_DOWN); + ASSUME(GetMoveEffect(MOVE_SMACK_DOWN) == EFFECT_SMACK_DOWN); ASSUME(MoveHasAdditionalEffectWithChance(MOVE_INFESTATION, MOVE_EFFECT_WRAP, 0) == TRUE); - ASSUME(MoveHasAdditionalEffectWithChance(MOVE_THOUSAND_ARROWS, MOVE_EFFECT_SMACK_DOWN, 0) == TRUE); ASSUME(MoveHasAdditionalEffectWithChance(MOVE_JAW_LOCK, MOVE_EFFECT_TRAP_BOTH, 0) == TRUE); ASSUME(MoveHasAdditionalEffectWithChance(MOVE_PAY_DAY, MOVE_EFFECT_PAYDAY, 0) == TRUE); - ASSUME(MoveHasAdditionalEffectWithChance(MOVE_SMACK_DOWN, MOVE_EFFECT_SMACK_DOWN, 0) == TRUE); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_SKARMORY) { Item(ITEM_COVERT_CLOAK); } } WHEN { diff --git a/test/battle/hold_effect/restore_hp.c b/test/battle/hold_effect/restore_hp.c index ef96ead7e4..9db149c023 100644 --- a/test/battle/hold_effect/restore_hp.c +++ b/test/battle/hold_effect/restore_hp.c @@ -63,3 +63,20 @@ DOUBLE_BATTLE_TEST("Restore HP Item effects do not miss timing after a recoil mo ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, playerRight); } } + +#if B_HP_BERRIES <= GEN_3 +SINGLE_BATTLE_TEST("Restore HP Berry triggers only during the end turn") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WYNAUT) { MaxHP(100); HP(51); Item(ITEM_ORAN_BERRY); } + } WHEN { + TURN { MOVE(player, MOVE_TACKLE); } + TURN {} + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, opponent); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent); + } +} +#endif diff --git a/test/battle/hold_effect/restore_stats.c b/test/battle/hold_effect/restore_stats.c index f0f7bc5908..7f48a05f13 100644 --- a/test/battle/hold_effect/restore_stats.c +++ b/test/battle/hold_effect/restore_stats.c @@ -3,7 +3,7 @@ ASSUMPTIONS { - ASSUME(gItemsInfo[ITEM_WHITE_HERB].holdEffect == HOLD_EFFECT_RESTORE_STATS); + ASSUME(gItemsInfo[ITEM_WHITE_HERB].holdEffect == HOLD_EFFECT_WHITE_HERB); } SINGLE_BATTLE_TEST("White Herb restores stats when they're lowered") diff --git a/test/battle/hold_effect/seeds.c b/test/battle/hold_effect/seeds.c index e70d302f75..35b89c0085 100644 --- a/test/battle/hold_effect/seeds.c +++ b/test/battle/hold_effect/seeds.c @@ -11,7 +11,7 @@ ASSUMPTIONS ASSUME(gItemsInfo[ITEM_MISTY_SEED].holdEffectParam == HOLD_EFFECT_PARAM_MISTY_TERRAIN); ASSUME(gItemsInfo[ITEM_PSYCHIC_SEED].holdEffect == HOLD_EFFECT_SEEDS); ASSUME(gItemsInfo[ITEM_PSYCHIC_SEED].holdEffectParam == HOLD_EFFECT_PARAM_PSYCHIC_TERRAIN); - + } SINGLE_BATTLE_TEST("Electric Seed raises the holder's Defense on Electric Terrain") diff --git a/test/battle/hold_effect/throat_spray.c b/test/battle/hold_effect/throat_spray.c new file mode 100644 index 0000000000..67e596c277 --- /dev/null +++ b/test/battle/hold_effect/throat_spray.c @@ -0,0 +1,90 @@ +#include "global.h" +#include "test/battle.h" + +ASSUMPTIONS +{ + ASSUME(GetItemHoldEffect(ITEM_THROAT_SPRAY) == HOLD_EFFECT_THROAT_SPRAY); + ASSUME(IsSoundMove(MOVE_HYPER_VOICE) == TRUE); +} + +DOUBLE_BATTLE_TEST("Throat Spray activates after both hits of a spread move") +{ + s16 firstHit, secondHit; + + GIVEN { + ASSUME(GetMoveTarget(MOVE_HYPER_VOICE) == MOVE_TARGET_BOTH); + PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_THROAT_SPRAY); } + PLAYER(SPECIES_WYNAUT); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(playerLeft, MOVE_HYPER_VOICE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_HYPER_VOICE, playerLeft); + HP_BAR(opponentLeft, captureDamage: &firstHit); + HP_BAR(opponentRight, captureDamage: &secondHit); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, playerLeft); + } THEN { + EXPECT_EQ(firstHit, secondHit); + } +} + +SINGLE_BATTLE_TEST("Throat Spray increases Sp. Atk by one stage") +{ + s16 normalHit; + s16 boostedHit; + + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_THROAT_SPRAY); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_HYPER_VOICE); } + TURN { MOVE(player, MOVE_HYPER_VOICE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_HYPER_VOICE, player); + HP_BAR(opponent, captureDamage: &normalHit); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_HYPER_VOICE, player); + HP_BAR(opponent, captureDamage: &boostedHit); + } THEN { + EXPECT_MUL_EQ(normalHit, Q_4_12(1.5), boostedHit); + } +} + +SINGLE_BATTLE_TEST("Throat Spray activates when a sound move is used") +{ + u32 move; + + PARAMETRIZE { move = MOVE_SWIFT; } + PARAMETRIZE { move = MOVE_HYPER_VOICE; } + + GIVEN { + ASSUME(IsSoundMove(MOVE_SWIFT) != IsSoundMove(MOVE_HYPER_VOICE)); + PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_THROAT_SPRAY); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, move); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, move, player); + if (move == MOVE_HYPER_VOICE) + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); + else + NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); + } +} + +SINGLE_BATTLE_TEST("Throat Spray does not activate if move fails") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_THROAT_SPRAY); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_PROTECT); MOVE(player, MOVE_HYPER_VOICE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_PROTECT, opponent); + NONE_OF { + ANIMATION(ANIM_TYPE_MOVE, MOVE_HYPER_VOICE, player); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); + } + } +} diff --git a/test/battle/hold_effect/type_power.c b/test/battle/hold_effect/type_power.c new file mode 100644 index 0000000000..5afe2a39c8 --- /dev/null +++ b/test/battle/hold_effect/type_power.c @@ -0,0 +1,55 @@ +#include "global.h" +#include "test/battle.h" + +static const u16 sMoveItemTable[][18] = +{ + { TYPE_NORMAL, MOVE_SCRATCH, ITEM_SILK_SCARF }, + { TYPE_FIGHTING, MOVE_KARATE_CHOP, ITEM_BLACK_BELT }, + { TYPE_FLYING, MOVE_WING_ATTACK, ITEM_SHARP_BEAK }, + { TYPE_POISON, MOVE_POISON_STING, ITEM_POISON_BARB }, + { TYPE_GROUND, MOVE_MUD_SHOT, ITEM_SOFT_SAND }, + { TYPE_ROCK, MOVE_ROCK_THROW, ITEM_HARD_STONE }, + { TYPE_BUG, MOVE_BUG_BITE, ITEM_SILVER_POWDER }, + { TYPE_GHOST, MOVE_SHADOW_PUNCH, ITEM_SPELL_TAG }, + { TYPE_STEEL, MOVE_METAL_CLAW, ITEM_METAL_COAT }, + { TYPE_FIRE, MOVE_EMBER, ITEM_CHARCOAL }, + { TYPE_WATER, MOVE_WATER_GUN, ITEM_MYSTIC_WATER }, + { TYPE_GRASS, MOVE_VINE_WHIP, ITEM_MIRACLE_SEED }, + { TYPE_ELECTRIC, MOVE_THUNDER_SHOCK, ITEM_MAGNET }, + { TYPE_PSYCHIC, MOVE_CONFUSION, ITEM_TWISTED_SPOON }, + { TYPE_ICE, MOVE_AURORA_BEAM, ITEM_NEVER_MELT_ICE }, + { TYPE_DRAGON, MOVE_DRAGON_BREATH, ITEM_DRAGON_FANG }, + { TYPE_DARK, MOVE_BITE, ITEM_BLACK_GLASSES }, + { TYPE_FAIRY, MOVE_DISARMING_VOICE, ITEM_FAIRY_FEATHER }, +}; + +SINGLE_BATTLE_TEST("Type-enhancing items increase the base power of moves by 20%", s16 damage) +{ + u32 move = 0, item = 0, type = 0; + + for (u32 j = 0; j < ARRAY_COUNT(sMoveItemTable); j++) { + PARAMETRIZE { type = sMoveItemTable[j][0]; move = sMoveItemTable[j][1]; item = ITEM_NONE; } + PARAMETRIZE { type = sMoveItemTable[j][0]; move = sMoveItemTable[j][1]; item = sMoveItemTable[j][2]; } + } + + GIVEN { + ASSUME(GetMovePower(move) > 0); + if (item != ITEM_NONE) { + ASSUME(GetItemHoldEffect(item) == HOLD_EFFECT_TYPE_POWER); + ASSUME(GetItemSecondaryId(item) == type); + } + PLAYER(SPECIES_WOBBUFFET) { Item(item); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, move); } + } SCENE { + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + for (u32 j = 0; j < ARRAY_COUNT(sMoveItemTable); j++) { + if (I_TYPE_BOOST_POWER >= GEN_4) + EXPECT_MUL_EQ(results[j*2].damage, Q_4_12(1.2), results[(j*2)+1].damage); + else + EXPECT_MUL_EQ(results[j*2].damage, Q_4_12(1.1), results[(j*2)+1].damage); + } + } +} diff --git a/test/battle/move_animations/all_anims.c b/test/battle/move_animations/all_anims.c new file mode 100644 index 0000000000..778b407937 --- /dev/null +++ b/test/battle/move_animations/all_anims.c @@ -0,0 +1,1503 @@ +#include "global.h" +#include "test/battle.h" + +// These tests are very heavy computationally. Only use them to review animation PRs. + +#if T_SHOULD_RUN_MOVE_ANIM + +#define ANIM_TEST_START_MOVE 1 // First move to test +#define ANIM_TEST_END_MOVE MOVES_COUNT-1 // Last move to test + + +static void ParametrizeMovesAndSpecies(u32 j, u32 *pMove, u32 *pSpecies) +{ + if (gMovesInfo[j].effect == EFFECT_DARK_VOID) // User needs to be Darkrai + { + *pMove = j; + *pSpecies = SPECIES_DARKRAI; + } + else if (gMovesInfo[j].effect == EFFECT_HYPERSPACE_FURY) // User needs to be Hoopa Unbound + { + *pMove = j; + *pSpecies = SPECIES_HOOPA_UNBOUND; + } + else if (gMovesInfo[j].effect == EFFECT_AURA_WHEEL) // User needs to be Morpeko + { + *pMove = j; + *pSpecies = SPECIES_MORPEKO_FULL_BELLY; + } + else if (gMovesInfo[j].effect == EFFECT_ROTOTILLER || gMovesInfo[j].effect == EFFECT_FLOWER_SHIELD) // User needs to be Grass-type + { + *pMove = j; + *pSpecies = SPECIES_TANGELA; + } + else if (gMovesInfo[j].effect == EFFECT_FAIL_IF_NOT_ARG_TYPE && gMovesInfo[j].argument.type == TYPE_FIRE) // User needs to be Fire-type + { + *pMove = j; + *pSpecies = SPECIES_FLAREON; + } + else if (gMovesInfo[j].effect == EFFECT_FAIL_IF_NOT_ARG_TYPE && gMovesInfo[j].argument.type == TYPE_ELECTRIC) // User needs to be Electric-type + { + *pMove = j; + *pSpecies = SPECIES_JOLTEON; + } + else if (gMovesInfo[j].effect == EFFECT_MAGNETIC_FLUX || gMovesInfo[j].effect == EFFECT_GEAR_UP) // User needs to have Plus + { + *pMove = j; + *pSpecies = SPECIES_KLINKLANG; + } + else if (gMovesInfo[j].effect == EFFECT_PLACEHOLDER) // Ignore placeholder *pMoves + { + *pMove = MOVE_POUND; + *pSpecies = SPECIES_WOBBUFFET; + } + else // Everything else + { + *pMove = j; + *pSpecies = SPECIES_WOBBUFFET; + } +} + +static bool32 TargetHasToMove(u32 move) // Opponent needs to hit the player first +{ + if (gMovesInfo[move].effect == EFFECT_COUNTER + || gMovesInfo[move].effect == EFFECT_MIRROR_MOVE + || gMovesInfo[move].effect == EFFECT_CONVERSION_2 + || gMovesInfo[move].effect == EFFECT_MIRROR_COAT + || gMovesInfo[move].effect == EFFECT_METAL_BURST + || gMovesInfo[move].effect == EFFECT_COPYCAT + || gMovesInfo[move].effect == EFFECT_SUCKER_PUNCH + || gMovesInfo[move].effect == EFFECT_INSTRUCT) + return TRUE; + return FALSE; +} + +static bool32 AttackerHasToSwitch(u32 move) // User needs to send out a different team member +{ + if (gMovesInfo[move].effect == EFFECT_TELEPORT + || gMovesInfo[move].effect == EFFECT_EXPLOSION + || gMovesInfo[move].effect == EFFECT_BATON_PASS + || gMovesInfo[move].effect == EFFECT_MEMENTO + || gMovesInfo[move].effect == EFFECT_HEALING_WISH + || gMovesInfo[move].effect == EFFECT_HIT_ESCAPE + || gMovesInfo[move].effect == EFFECT_FINAL_GAMBIT + || gMovesInfo[move].effect == EFFECT_PARTING_SHOT + || gMovesInfo[move].effect == EFFECT_SHED_TAIL + || gMovesInfo[move].effect == EFFECT_CHILLY_RECEPTION) + return TRUE; + return FALSE; +} + +static bool32 UserHasToGoFirst(u32 move) // Player needs to go first +{ + if (gMovesInfo[move].effect == EFFECT_PROTECT + || gMovesInfo[move].effect == EFFECT_ENDURE + || gMovesInfo[move].effect == EFFECT_FOLLOW_ME + || gMovesInfo[move].effect == EFFECT_MAGIC_COAT + || gMovesInfo[move].effect == EFFECT_ME_FIRST + || gMovesInfo[move].effect == EFFECT_QUASH + || gMovesInfo[move].effect == EFFECT_MAT_BLOCK + || gMovesInfo[move].effect == EFFECT_ELECTRIFY + || gMovesInfo[move].effect == EFFECT_SHELL_TRAP) + return TRUE; + return FALSE; +} + +static void WhenSingles(u32 move, struct BattlePokemon *attacker, struct BattlePokemon *defender) +{ + // Setup turn + if (gMovesInfo[move].effect == EFFECT_SNORE + || gMovesInfo[move].effect == EFFECT_SLEEP_TALK) + { // attacker needs to be asleep + TURN { MOVE(attacker, MOVE_REST); } + } + else if (gMovesInfo[move].effect == EFFECT_SPIT_UP + || gMovesInfo[move].effect == EFFECT_SWALLOW) + { // attacker needs to have used Stockpile + TURN { MOVE(attacker, MOVE_STOCKPILE); } + } + else if ((gMovesInfo[move].effect == EFFECT_DOUBLE_POWER_ON_ARG_STATUS && gMovesInfo[move].argument.status == STATUS1_PARALYSIS)) + { // defender needs to be paralyzed + TURN { MOVE(attacker, MOVE_THUNDER_WAVE); } + } + else if (gMovesInfo[move].effect == EFFECT_RECYCLE + || gMovesInfo[move].effect == EFFECT_BELCH) + { // attacker needs to have eaten its Berry + TURN { MOVE(attacker, MOVE_STUFF_CHEEKS); } + } + else if (gMovesInfo[move].effect == EFFECT_REFRESH + || gMovesInfo[move].effect == EFFECT_PSYCHO_SHIFT) + { // attacker needs to be paralyzed + TURN { MOVE(defender, MOVE_THUNDER_WAVE); } + } + else if (gMovesInfo[move].effect == EFFECT_LAST_RESORT) + { // attacker needs to have used all other moves + TURN { MOVE(attacker, MOVE_POUND); } + } + else if (gMovesInfo[move].effect == EFFECT_DREAM_EATER + || gMovesInfo[move].effect == EFFECT_NIGHTMARE) + { // defender needs to be asleep + TURN { MOVE(defender, MOVE_REST); } + } + else if (gMovesInfo[move].effect == EFFECT_VENOM_DRENCH + || gMovesInfo[move].effect == EFFECT_PURIFY) + { // defender needs to be poisoned + TURN { MOVE(attacker, MOVE_POISON_POWDER); } + } + else if (gMovesInfo[move].effect == EFFECT_TOPSY_TURVY) + { // defender needs to have its stats buffed + TURN { MOVE(defender, MOVE_SWORDS_DANCE); } + } + else if (gMovesInfo[move].effect == EFFECT_AURORA_VEIL) + { // Has to be hailing + TURN { MOVE(attacker, MOVE_HAIL); } + } + else if (gMovesInfo[move].effect == EFFECT_HIT_SET_REMOVE_TERRAIN && gMovesInfo[move].argument.moveProperty == ARG_TRY_REMOVE_TERRAIN_FAIL) + { // Needs a terrain + TURN { MOVE(attacker, MOVE_ELECTRIC_TERRAIN); } + } + // Effective turn + TURN { + if (TargetHasToMove(move)) + { + MOVE(defender, gMovesInfo[move].effect == EFFECT_MIRROR_COAT ? MOVE_SWIFT : MOVE_POUND); + MOVE(attacker, move); + } + else if (gMovesInfo[move].effect == EFFECT_SNATCH) + { // defender needs to steal the defender's buffing move + MOVE(attacker, move); + MOVE(defender, MOVE_SWORDS_DANCE); + } + else if (gMovesInfo[move].effect == EFFECT_OHKO) + { // defender needs to send out a different team member + MOVE(attacker, move); + SEND_OUT(defender, 1); + } + else if (AttackerHasToSwitch(move)) + { // attacker needs to send out a different team member + MOVE(attacker, move); + SEND_OUT(attacker, 1); + } + else if (UserHasToGoFirst(move)) + { // attacker needs to go first + MOVE(attacker, move); + MOVE(defender, MOVE_POUND); + } + else if (gMovesInfo[move].effect == EFFECT_REVIVAL_BLESSING) + { // attacker selects party member + MOVE(attacker, move, partyIndex: 1); + MOVE(defender, MOVE_HELPING_HAND); + } + else if (gMovesInfo[move].effect == EFFECT_UPPER_HAND) + { // defender needs to choose priority move + MOVE(attacker, move); + MOVE(defender, MOVE_QUICK_ATTACK); + } + else if (gMovesInfo[move].effect == EFFECT_ACUPRESSURE) + { + MOVE(attacker, move, target: attacker); + } + else + { // All other moves + MOVE(defender, MOVE_HELPING_HAND); // Helping Hand, so there's no anim on the defender's side. + MOVE(attacker, move); + } + } +} + +static void SceneSingles(u32 move, struct BattlePokemon *mon) +{ + if (gMovesInfo[move].effect == EFFECT_FOLLOW_ME + || gMovesInfo[move].effect == EFFECT_HELPING_HAND + || gMovesInfo[move].effect == EFFECT_AFTER_YOU + || gMovesInfo[move].effect == EFFECT_ALLY_SWITCH + || gMovesInfo[move].effect == EFFECT_AROMATIC_MIST + || move == MOVE_HOLD_HANDS // Hack here because it shares its effect with Splash and Celebrate + || gMovesInfo[move].effect == EFFECT_COACHING + || gMovesInfo[move].effect == EFFECT_DRAGON_CHEER) + { + // Moves that fail in Single Battles + } + else if (gMovesInfo[move].effect == EFFECT_MIRROR_MOVE) // Copy the opponent's move + { + ANIMATION(ANIM_TYPE_MOVE, MOVE_POUND, mon); + } + else if (gMovesInfo[move].effect == EFFECT_NATURE_POWER) // Recorded battles always use BATTLE_TERRAIN_BUILDING + { + ANIMATION(ANIM_TYPE_MOVE, B_NATURE_POWER_MOVES >= GEN_4 ? MOVE_TRI_ATTACK : MOVE_SWIFT, mon); + } + else // All other moves + { + ANIMATION(ANIM_TYPE_MOVE, move, mon); + } +} + +static void DoublesWhen(u32 move, struct BattlePokemon *attacker, struct BattlePokemon *target, struct BattlePokemon *ignore1, struct BattlePokemon *ignore2) +{ + // Setup turn + if (gMovesInfo[move].effect == EFFECT_SNORE + || gMovesInfo[move].effect == EFFECT_SLEEP_TALK) + { // Player needs to be asleep + TURN { MOVE(attacker, MOVE_REST); } + } + else if (gMovesInfo[move].effect == EFFECT_SPIT_UP + || gMovesInfo[move].effect == EFFECT_SWALLOW) + { // Player needs to have used Stockpile + TURN { MOVE(attacker, MOVE_STOCKPILE); } + } + else if ((gMovesInfo[move].effect == EFFECT_DOUBLE_POWER_ON_ARG_STATUS && gMovesInfo[move].argument.status == STATUS1_PARALYSIS)) + { // Opponent needs to be paralyzed + TURN { MOVE(attacker, MOVE_THUNDER_WAVE, target: target); } + } + else if (gMovesInfo[move].effect == EFFECT_RECYCLE + || gMovesInfo[move].effect == EFFECT_BELCH) + { // Player needs to have eaten its Berry + TURN { MOVE(attacker, MOVE_STUFF_CHEEKS); } + } + else if (gMovesInfo[move].effect == EFFECT_REFRESH + || gMovesInfo[move].effect == EFFECT_PSYCHO_SHIFT) + { // Player needs to be paralyzed + TURN { MOVE(target, MOVE_THUNDER_WAVE, target: attacker); } + } + else if (gMovesInfo[move].effect == EFFECT_LAST_RESORT) + { // Player needs to have used all other moves + TURN { MOVE(attacker, MOVE_POUND, target: target); } + } + else if (gMovesInfo[move].effect == EFFECT_DREAM_EATER + || gMovesInfo[move].effect == EFFECT_NIGHTMARE) + { // Opponent needs to be asleep + TURN { MOVE(target, MOVE_REST); } + } + else if (gMovesInfo[move].effect == EFFECT_VENOM_DRENCH + || gMovesInfo[move].effect == EFFECT_PURIFY) + { // Opponent needs to be poisoned + TURN { MOVE(attacker, MOVE_POISON_POWDER, target: target); } + } + else if (gMovesInfo[move].effect == EFFECT_TOPSY_TURVY) + { // Opponent needs to have its stats buffed + TURN { MOVE(target, MOVE_SWORDS_DANCE); } + } + else if (gMovesInfo[move].effect == EFFECT_AURORA_VEIL) + { // Has to be hailing + TURN { MOVE(attacker, MOVE_HAIL); } + } + else if (gMovesInfo[move].effect == EFFECT_HIT_SET_REMOVE_TERRAIN && gMovesInfo[move].argument.moveProperty == ARG_TRY_REMOVE_TERRAIN_FAIL) + { // Needs a terrain + TURN { MOVE(attacker, MOVE_ELECTRIC_TERRAIN); } + } + // Effective turn + TURN { + if (TargetHasToMove(move)) + { // Opponent needs to hit the player first + MOVE(target, gMovesInfo[move].effect == EFFECT_MIRROR_COAT ? MOVE_SWIFT : MOVE_POUND, target: attacker); + MOVE(attacker, move, target: target); + } + else if (gMovesInfo[move].effect == EFFECT_SNATCH) + { // Opponent needs to steal the opponent's buffing move + MOVE(attacker, move, target: target); + MOVE(target, MOVE_SWORDS_DANCE); + } + else if (gMovesInfo[move].effect == EFFECT_OHKO) + { // Opponent needs to send out a different team member + MOVE(attacker, move, target: target); + SEND_OUT(target, 2); + } + else if (AttackerHasToSwitch(move)) + { // Player needs to send out a different team member + MOVE(attacker, move, target: target); + SEND_OUT(attacker, 2); + } + else if (UserHasToGoFirst(move)) + { // Player needs to go first + MOVE(attacker, move, target: target); + MOVE(target, MOVE_POUND, target: attacker); + } + else if (gMovesInfo[move].effect == EFFECT_AFTER_YOU) + { // Player goes first, opponent third + MOVE(attacker, move, target: target); + MOVE(ignore1, MOVE_CELEBRATE); + MOVE(target, MOVE_POUND, target: attacker); + MOVE(ignore2, MOVE_CELEBRATE); + } + else if (gMovesInfo[move].effect == EFFECT_REVIVAL_BLESSING) + { // Player selects party member + MOVE(attacker, move, partyIndex: 2); + MOVE(target, MOVE_LAST_RESORT, target: attacker); // Last Resort, so there's no anim on the opponent's side. + } + else if (gMovesInfo[move].effect == EFFECT_UPPER_HAND) + { // Opponent needs to choose priority move + MOVE(attacker, move, target: target); + MOVE(target, MOVE_QUICK_ATTACK, target: attacker); + } + else + { // All other moves + MOVE(target, MOVE_LAST_RESORT, target: attacker); // Last Resort, so there's no anim on the opponent's side. + MOVE(attacker, move, target: target); + } + if (gMovesInfo[move].effect != EFFECT_AFTER_YOU) + { + // Actions for the remaining battlers + MOVE(ignore1, MOVE_CELEBRATE); + MOVE(ignore2, MOVE_CELEBRATE); + } + } +} + +static void DoublesScene(u32 move, struct BattlePokemon *attacker) +{ + if (gMovesInfo[move].effect == EFFECT_MAGNETIC_FLUX || gMovesInfo[move].effect == EFFECT_GEAR_UP) // For some reason, Magnetic Flux and Gear Up are failing in Double Battles here + { + // Moves that fail in Double Battles + } + else if (gMovesInfo[move].effect == EFFECT_MIRROR_MOVE) + { // Copy the opponent's move + ANIMATION(ANIM_TYPE_MOVE, MOVE_POUND, attacker); + } + else if (gMovesInfo[move].effect == EFFECT_NATURE_POWER) + { // Recorded battles always use BATTLE_TERRAIN_BUILDING + ANIMATION(ANIM_TYPE_MOVE, B_NATURE_POWER_MOVES >= GEN_4 ? MOVE_TRI_ATTACK : MOVE_SWIFT, attacker); + } + else + { // All other moves + ANIMATION(ANIM_TYPE_MOVE, move, attacker); + } +} + +//static void SameSideTargeting(u32 move, struct BattlePokemon *attacker) +//{ +// // Don't know how to make sure this is correct, some moves don't display +//} + +SINGLE_BATTLE_TEST("Move Animations don't leak when used - Singles (player to opponent)") +{ + u32 j = ANIM_TEST_START_MOVE, move = 0, species = 0; + u32 tempMove, tempSpecies; + FORCE_MOVE_ANIM(TRUE); + for (; j <= ANIM_TEST_END_MOVE; j++) { + ParametrizeMovesAndSpecies(j, &tempMove, &tempSpecies); + PARAMETRIZE { move = tempMove; species = tempSpecies; } + } + GIVEN { + PLAYER(species) { + HP(9997); MaxHP(9999); Item(ITEM_ORAN_BERRY); + if (species == SPECIES_WOBBUFFET) Gender(MON_FEMALE); + if (gMovesInfo[move].effect == EFFECT_LAST_RESORT) Moves(move, MOVE_POUND); + if (species == SPECIES_KLINKLANG) Ability(ABILITY_PLUS); + } + PLAYER(SPECIES_WOBBUFFET) { + Gender(MON_MALE); MaxHP(9999); Moves(MOVE_POUND); + HP(gMovesInfo[move].effect == EFFECT_REVIVAL_BLESSING ? 0 : 9998); + } + OPPONENT(SPECIES_WOBBUFFET) { + Gender(MON_MALE); HP(9998); MaxHP(9999); SpDefense(9999); Defense(9999); Ability(ABILITY_TELEPATHY); + if (gMovesInfo[move].effect != EFFECT_BESTOW) + Item(ITEM_ORAN_BERRY); + } + OPPONENT(SPECIES_WOBBUFFET) { Gender(MON_FEMALE); HP(9998); MaxHP(9999); SpDefense(9999); Defense(9999); } + } WHEN { + WhenSingles(move, player, opponent); + } SCENE { + SceneSingles(move, player); + } THEN { + FORCE_MOVE_ANIM(FALSE); + if (gLoadFail) + DebugPrintf("Move failed: %S (%u)", gMovesInfo[move].name, move); + EXPECT_EQ(gLoadFail, FALSE); + } +} + +SINGLE_BATTLE_TEST("Move Animations don't leak when used - Singles (opponent to player)") +{ + u32 j = ANIM_TEST_START_MOVE, move = 0, species = 0; + u32 tempMove, tempSpecies; + FORCE_MOVE_ANIM(TRUE); + for (; j <= ANIM_TEST_END_MOVE; j++) { + ParametrizeMovesAndSpecies(j, &tempMove, &tempSpecies); + PARAMETRIZE { move = tempMove; species = tempSpecies; } + } + GIVEN { + OPPONENT(species) { + HP(9997); MaxHP(9999); Item(ITEM_ORAN_BERRY); + if (species == SPECIES_WOBBUFFET) Gender(MON_FEMALE); + if (gMovesInfo[move].effect == EFFECT_LAST_RESORT) Moves(move, MOVE_POUND); + if (species == SPECIES_KLINKLANG) Ability(ABILITY_PLUS); + } + OPPONENT(SPECIES_WOBBUFFET) { + Gender(MON_MALE); MaxHP(9999); Moves(MOVE_POUND); + HP(gMovesInfo[move].effect == EFFECT_REVIVAL_BLESSING ? 0 : 9998); + } + PLAYER(SPECIES_WOBBUFFET) { + Gender(MON_MALE); HP(9998); MaxHP(9999); SpDefense(9999); Defense(9999); Ability(ABILITY_TELEPATHY); + if (gMovesInfo[move].effect != EFFECT_BESTOW) + Item(ITEM_ORAN_BERRY); + } + PLAYER(SPECIES_WOBBUFFET) { Gender(MON_FEMALE); HP(9998); MaxHP(9999); SpDefense(9999); Defense(9999); } + } WHEN { + WhenSingles(move, opponent, player); + } SCENE { + SceneSingles(move, opponent); + } THEN { + FORCE_MOVE_ANIM(FALSE); + if (gLoadFail) + DebugPrintf("Move failed: %S (%u)", gMovesInfo[move].name, move); + EXPECT_EQ(gLoadFail, FALSE); + } +} + +DOUBLE_BATTLE_TEST("Move Animations don't leak when used - Doubles (playerLeft to opponentLeft)") +{ + u32 j = ANIM_TEST_START_MOVE, move = 0, species = 0; + u32 tempMove, tempSpecies; + FORCE_MOVE_ANIM(TRUE); + struct BattlePokemon *attacker = playerLeft; + struct BattlePokemon *target = opponentLeft; + struct BattlePokemon *ignore1 = playerRight; + struct BattlePokemon *ignore2 = opponentRight; + for (; j <= ANIM_TEST_END_MOVE; j++) { + ParametrizeMovesAndSpecies(j, &tempMove, &tempSpecies); + PARAMETRIZE { move = tempMove; species = tempSpecies; } + } + GIVEN { + PLAYER(species) { + HP(9997); MaxHP(9999); Item(ITEM_ORAN_BERRY); + if (attacker == playerLeft) { + if (species == SPECIES_WOBBUFFET) Gender(MON_FEMALE); + if (gMovesInfo[move].effect == EFFECT_LAST_RESORT) Moves(move, MOVE_POUND); + if (species == SPECIES_KLINKLANG) Ability(ABILITY_PLUS); + } + } + PLAYER(species) { + HP(9997); MaxHP(9999); Item(ITEM_ORAN_BERRY); + if (attacker == playerRight) + { + if (species == SPECIES_WOBBUFFET) Gender(MON_FEMALE); + if (gMovesInfo[move].effect == EFFECT_LAST_RESORT) Moves(move, MOVE_POUND); + if (species == SPECIES_KLINKLANG) Ability(ABILITY_PLUS); + } + } + PLAYER(SPECIES_WOBBUFFET) { + Gender(MON_MALE); MaxHP(9999); Moves(MOVE_POUND, MOVE_CELEBRATE); + HP(gMovesInfo[move].effect == EFFECT_REVIVAL_BLESSING ? 0 : 9998); + } + OPPONENT(SPECIES_WOBBUFFET) { + Gender(MON_MALE); HP(9998); MaxHP(9999); SpDefense(9999); Defense(9999); Ability(ABILITY_TELEPATHY); + if (gMovesInfo[move].effect != EFFECT_BESTOW) + Item(ITEM_ORAN_BERRY); + } + OPPONENT(SPECIES_WOBBUFFET) { + Gender(MON_MALE); HP(9998); MaxHP(9999); SpDefense(9999); Defense(9999); Ability(ABILITY_TELEPATHY); + if (gMovesInfo[move].effect != EFFECT_BESTOW) + Item(ITEM_ORAN_BERRY); + } + OPPONENT(SPECIES_WOBBUFFET) { Gender(MON_FEMALE); HP(9998); MaxHP(9999); SpDefense(9999); Defense(9999); } + } WHEN { + DoublesWhen(move, attacker, target, ignore1, ignore2); + } SCENE { + DoublesScene(move, attacker); + } THEN { + FORCE_MOVE_ANIM(FALSE); + if (gLoadFail) + DebugPrintf("Move failed: %S (%u)", gMovesInfo[move].name, move); + EXPECT_EQ(gLoadFail, FALSE); + } +} + +DOUBLE_BATTLE_TEST("Move Animations don't leak when used - Doubles (opponentLeft to playerLeft)") +{ + u32 j = ANIM_TEST_START_MOVE, move = 0, species = 0; + u32 tempMove, tempSpecies; + FORCE_MOVE_ANIM(TRUE); + struct BattlePokemon *attacker = opponentLeft; + struct BattlePokemon *target = playerLeft; + struct BattlePokemon *ignore1 = opponentRight; + struct BattlePokemon *ignore2 = playerRight; + for (; j <= ANIM_TEST_END_MOVE; j++) { + ParametrizeMovesAndSpecies(j, &tempMove, &tempSpecies); + PARAMETRIZE { move = tempMove; species = tempSpecies; } + } + GIVEN { + OPPONENT(species) { + HP(9997); MaxHP(9999); Item(ITEM_ORAN_BERRY); + if (attacker == opponentLeft) { + if (species == SPECIES_WOBBUFFET) Gender(MON_FEMALE); + if (gMovesInfo[move].effect == EFFECT_LAST_RESORT) Moves(move, MOVE_POUND); + if (species == SPECIES_KLINKLANG) Ability(ABILITY_PLUS); + } + } + OPPONENT(species) { + HP(9997); MaxHP(9999); Item(ITEM_ORAN_BERRY); + if (attacker == opponentRight) { + if (species == SPECIES_WOBBUFFET) Gender(MON_FEMALE); + if (gMovesInfo[move].effect == EFFECT_LAST_RESORT) Moves(move, MOVE_POUND); + if (species == SPECIES_KLINKLANG) Ability(ABILITY_PLUS); + } + } + OPPONENT(SPECIES_WOBBUFFET) { + Gender(MON_MALE); MaxHP(9999); Moves(MOVE_POUND, MOVE_CELEBRATE); + HP(gMovesInfo[move].effect == EFFECT_REVIVAL_BLESSING ? 0 : 9998); + } + PLAYER(SPECIES_WOBBUFFET) { + Gender(MON_MALE); HP(9998); MaxHP(9999); SpDefense(9999); Defense(9999); Ability(ABILITY_TELEPATHY); + if (gMovesInfo[move].effect != EFFECT_BESTOW) { + Item(ITEM_ORAN_BERRY); + } + } + PLAYER(SPECIES_WOBBUFFET) { + Gender(MON_MALE); HP(9998); MaxHP(9999); SpDefense(9999); Defense(9999); Ability(ABILITY_TELEPATHY); + if (gMovesInfo[move].effect != EFFECT_BESTOW) { + Item(ITEM_ORAN_BERRY); + } + } + PLAYER(SPECIES_WOBBUFFET) { Gender(MON_FEMALE); HP(9998); MaxHP(9999); SpDefense(9999); Defense(9999); } + } WHEN { + DoublesWhen(move, attacker, target, ignore1, ignore2); + } SCENE { + DoublesScene(move, attacker); + } THEN { + FORCE_MOVE_ANIM(FALSE); + if (gLoadFail) + DebugPrintf("Move failed: %S (%u)", gMovesInfo[move].name, move); + EXPECT_EQ(gLoadFail, FALSE); + } +} + +DOUBLE_BATTLE_TEST("Move Animations don't leak when used - Doubles (playerLeft to opponentRight)") +{ + u32 j = ANIM_TEST_START_MOVE, move = 0, species = 0; + u32 tempMove, tempSpecies; + FORCE_MOVE_ANIM(TRUE); + struct BattlePokemon *attacker = playerLeft; + struct BattlePokemon *target = opponentRight; + struct BattlePokemon *ignore1 = playerRight; + struct BattlePokemon *ignore2 = opponentLeft; + for (; j <= ANIM_TEST_END_MOVE; j++) { + ParametrizeMovesAndSpecies(j, &tempMove, &tempSpecies); + PARAMETRIZE { move = tempMove; species = tempSpecies; } + } + GIVEN { + PLAYER(species) { + HP(9997); MaxHP(9999); Item(ITEM_ORAN_BERRY); + if (attacker == playerLeft) { + if (species == SPECIES_WOBBUFFET) Gender(MON_FEMALE); + if (gMovesInfo[move].effect == EFFECT_LAST_RESORT) Moves(move, MOVE_POUND); + if (species == SPECIES_KLINKLANG) Ability(ABILITY_PLUS); + } + } + PLAYER(species) { + HP(9997); MaxHP(9999); Item(ITEM_ORAN_BERRY); + if (attacker == playerRight) { + if (species == SPECIES_WOBBUFFET) Gender(MON_FEMALE); + if (gMovesInfo[move].effect == EFFECT_LAST_RESORT) Moves(move, MOVE_POUND); + if (species == SPECIES_KLINKLANG) Ability(ABILITY_PLUS); + } + } + PLAYER(SPECIES_WOBBUFFET) { + Gender(MON_MALE); MaxHP(9999); Moves(MOVE_POUND, MOVE_CELEBRATE); + HP(gMovesInfo[move].effect == EFFECT_REVIVAL_BLESSING ? 0 : 9998); + } + OPPONENT(SPECIES_WOBBUFFET) { + Gender(MON_MALE); HP(9998); MaxHP(9999); SpDefense(9999); Defense(9999); Ability(ABILITY_TELEPATHY); + if (gMovesInfo[move].effect != EFFECT_BESTOW) { + Item(ITEM_ORAN_BERRY); + } + } + OPPONENT(SPECIES_WOBBUFFET) { + Gender(MON_MALE); HP(9998); MaxHP(9999); SpDefense(9999); Defense(9999); Ability(ABILITY_TELEPATHY); + if (gMovesInfo[move].effect != EFFECT_BESTOW) { + Item(ITEM_ORAN_BERRY); + } + } + OPPONENT(SPECIES_WOBBUFFET) { Gender(MON_FEMALE); HP(9998); MaxHP(9999); SpDefense(9999); Defense(9999); } + } WHEN { + DoublesWhen(move, attacker, target, ignore1, ignore2); + } SCENE { + DoublesScene(move, attacker); + } THEN { + FORCE_MOVE_ANIM(FALSE); + if (gLoadFail) + DebugPrintf("Move failed: %S (%u)", gMovesInfo[move].name, move); + EXPECT_EQ(gLoadFail, FALSE); + } +} + +DOUBLE_BATTLE_TEST("Move Animations don't leak when used - Doubles (opponentRight to playerLeft)") +{ + u32 j = ANIM_TEST_START_MOVE, move = 0, species = 0; + u32 tempMove, tempSpecies; + FORCE_MOVE_ANIM(TRUE); + struct BattlePokemon *attacker = opponentRight; + struct BattlePokemon *target = playerLeft; + struct BattlePokemon *ignore1 = opponentLeft; + struct BattlePokemon *ignore2 = playerRight; + for (; j <= ANIM_TEST_END_MOVE; j++) { + ParametrizeMovesAndSpecies(j, &tempMove, &tempSpecies); + PARAMETRIZE { move = tempMove; species = tempSpecies; } + } + GIVEN { + OPPONENT(species) { + HP(9997); MaxHP(9999); Item(ITEM_ORAN_BERRY); + if (attacker == opponentLeft) { + if (species == SPECIES_WOBBUFFET) Gender(MON_FEMALE); + if (gMovesInfo[move].effect == EFFECT_LAST_RESORT) Moves(move, MOVE_POUND); + if (species == SPECIES_KLINKLANG) Ability(ABILITY_PLUS); + } + } + OPPONENT(species) { + HP(9997); MaxHP(9999); Item(ITEM_ORAN_BERRY); + if (attacker == opponentRight) { + if (species == SPECIES_WOBBUFFET) Gender(MON_FEMALE); + if (gMovesInfo[move].effect == EFFECT_LAST_RESORT) Moves(move, MOVE_POUND); + if (species == SPECIES_KLINKLANG) Ability(ABILITY_PLUS); + } + } + OPPONENT(SPECIES_WOBBUFFET) { + Gender(MON_MALE); MaxHP(9999); Moves(MOVE_POUND, MOVE_CELEBRATE); + HP(gMovesInfo[move].effect == EFFECT_REVIVAL_BLESSING ? 0 : 9998); + } + PLAYER(SPECIES_WOBBUFFET) { + Gender(MON_MALE); HP(9998); MaxHP(9999); SpDefense(9999); Defense(9999); Ability(ABILITY_TELEPATHY); + if (gMovesInfo[move].effect != EFFECT_BESTOW) { + Item(ITEM_ORAN_BERRY); + } + } + PLAYER(SPECIES_WOBBUFFET) { + Gender(MON_MALE); HP(9998); MaxHP(9999); SpDefense(9999); Defense(9999); Ability(ABILITY_TELEPATHY); + if (gMovesInfo[move].effect != EFFECT_BESTOW) { + Item(ITEM_ORAN_BERRY); + } + } + PLAYER(SPECIES_WOBBUFFET) { Gender(MON_FEMALE); HP(9998); MaxHP(9999); SpDefense(9999); Defense(9999); } + } WHEN { + DoublesWhen(move, attacker, target, ignore1, ignore2); + } SCENE { + DoublesScene(move, attacker); + } THEN { + FORCE_MOVE_ANIM(FALSE); + if (gLoadFail) + DebugPrintf("Move failed: %S (%u)", gMovesInfo[move].name, move); + EXPECT_EQ(gLoadFail, FALSE); + } +} + +DOUBLE_BATTLE_TEST("Move Animations don't leak when used - Doubles (playerRight to opponentLeft)") +{ + u32 j = ANIM_TEST_START_MOVE, move = 0, species = 0; + u32 tempMove, tempSpecies; + FORCE_MOVE_ANIM(TRUE); + struct BattlePokemon *attacker = playerRight; + struct BattlePokemon *target = opponentLeft; + struct BattlePokemon *ignore1 = playerLeft; + struct BattlePokemon *ignore2 = opponentRight; + for (; j <= ANIM_TEST_END_MOVE; j++) { + ParametrizeMovesAndSpecies(j, &tempMove, &tempSpecies); + PARAMETRIZE { move = tempMove; species = tempSpecies; } + } + GIVEN { + PLAYER(species) { + HP(9997); MaxHP(9999); Item(ITEM_ORAN_BERRY); + if (attacker == playerLeft) { + if (species == SPECIES_WOBBUFFET) Gender(MON_FEMALE); + if (gMovesInfo[move].effect == EFFECT_LAST_RESORT) Moves(move, MOVE_POUND); + if (species == SPECIES_KLINKLANG) Ability(ABILITY_PLUS); + } + } + PLAYER(species) { + HP(9997); MaxHP(9999); Item(ITEM_ORAN_BERRY); + if (attacker == playerRight) { + if (species == SPECIES_WOBBUFFET) Gender(MON_FEMALE); + if (gMovesInfo[move].effect == EFFECT_LAST_RESORT) Moves(move, MOVE_POUND); + if (species == SPECIES_KLINKLANG) Ability(ABILITY_PLUS); + } + } + PLAYER(SPECIES_WOBBUFFET) { + Gender(MON_MALE); MaxHP(9999); Moves(MOVE_POUND, MOVE_CELEBRATE); + HP(gMovesInfo[move].effect == EFFECT_REVIVAL_BLESSING ? 0 : 9998); + } + OPPONENT(SPECIES_WOBBUFFET) { + Gender(MON_MALE); HP(9998); MaxHP(9999); SpDefense(9999); Defense(9999); Ability(ABILITY_TELEPATHY); + if (gMovesInfo[move].effect != EFFECT_BESTOW) { + Item(ITEM_ORAN_BERRY); + } + } + OPPONENT(SPECIES_WOBBUFFET) { + Gender(MON_MALE); HP(9998); MaxHP(9999); SpDefense(9999); Defense(9999); Ability(ABILITY_TELEPATHY); + if (gMovesInfo[move].effect != EFFECT_BESTOW) { + Item(ITEM_ORAN_BERRY); + } + } + OPPONENT(SPECIES_WOBBUFFET) { Gender(MON_FEMALE); HP(9998); MaxHP(9999); SpDefense(9999); Defense(9999); } + } WHEN { + DoublesWhen(move, attacker, target, ignore1, ignore2); + } SCENE { + DoublesScene(move, attacker); + } THEN { + FORCE_MOVE_ANIM(FALSE); + if (gLoadFail) + DebugPrintf("Move failed: %S (%u)", gMovesInfo[move].name, move); + EXPECT_EQ(gLoadFail, FALSE); + } +} + +DOUBLE_BATTLE_TEST("Move Animations don't leak when used - Doubles (opponentLeft to playerRight)") +{ + u32 j = ANIM_TEST_START_MOVE, move = 0, species = 0; + u32 tempMove, tempSpecies; + FORCE_MOVE_ANIM(TRUE); + struct BattlePokemon *attacker = opponentLeft; + struct BattlePokemon *target = playerRight; + struct BattlePokemon *ignore1 = playerLeft; + struct BattlePokemon *ignore2 = opponentRight; + for (; j <= ANIM_TEST_END_MOVE; j++) { + ParametrizeMovesAndSpecies(j, &tempMove, &tempSpecies); + PARAMETRIZE { move = tempMove; species = tempSpecies; } + } + GIVEN { + OPPONENT(species) { + HP(9997); MaxHP(9999); Item(ITEM_ORAN_BERRY); + if (attacker == opponentLeft) { + if (species == SPECIES_WOBBUFFET) Gender(MON_FEMALE); + if (gMovesInfo[move].effect == EFFECT_LAST_RESORT) Moves(move, MOVE_POUND); + if (species == SPECIES_KLINKLANG) Ability(ABILITY_PLUS); + } + } + OPPONENT(species) { + HP(9997); MaxHP(9999); Item(ITEM_ORAN_BERRY); + if (attacker == opponentRight) { + if (species == SPECIES_WOBBUFFET) Gender(MON_FEMALE); + if (gMovesInfo[move].effect == EFFECT_LAST_RESORT) Moves(move, MOVE_POUND); + if (species == SPECIES_KLINKLANG) Ability(ABILITY_PLUS); + } + } + OPPONENT(SPECIES_WOBBUFFET) { + Gender(MON_MALE); MaxHP(9999); Moves(MOVE_POUND, MOVE_CELEBRATE); + HP(gMovesInfo[move].effect == EFFECT_REVIVAL_BLESSING ? 0 : 9998); + } + PLAYER(SPECIES_WOBBUFFET) { + Gender(MON_MALE); HP(9998); MaxHP(9999); SpDefense(9999); Defense(9999); Ability(ABILITY_TELEPATHY); + if (gMovesInfo[move].effect != EFFECT_BESTOW) { + Item(ITEM_ORAN_BERRY); + } + } + PLAYER(SPECIES_WOBBUFFET) { + Gender(MON_MALE); HP(9998); MaxHP(9999); SpDefense(9999); Defense(9999); Ability(ABILITY_TELEPATHY); + if (gMovesInfo[move].effect != EFFECT_BESTOW) { + Item(ITEM_ORAN_BERRY); + } + } + PLAYER(SPECIES_WOBBUFFET) { Gender(MON_FEMALE); HP(9998); MaxHP(9999); SpDefense(9999); Defense(9999); } + } WHEN { + DoublesWhen(move, attacker, target, ignore1, ignore2); + } SCENE { + DoublesScene(move, attacker); + } THEN { + FORCE_MOVE_ANIM(FALSE); + if (gLoadFail) + DebugPrintf("Move failed: %S (%u)", gMovesInfo[move].name, move); + EXPECT_EQ(gLoadFail, FALSE); + } +} + +DOUBLE_BATTLE_TEST("Move Animations don't leak when used - Doubles (playerRight to opponentRight)") +{ + u32 j = ANIM_TEST_START_MOVE, move = 0, species = 0; + u32 tempMove, tempSpecies; + FORCE_MOVE_ANIM(TRUE); + struct BattlePokemon *attacker = playerRight; + struct BattlePokemon *target = opponentRight; + struct BattlePokemon *ignore1 = playerLeft; + struct BattlePokemon *ignore2 = opponentLeft; + for (; j <= ANIM_TEST_END_MOVE; j++) { + ParametrizeMovesAndSpecies(j, &tempMove, &tempSpecies); + PARAMETRIZE { move = tempMove; species = tempSpecies; } + } + GIVEN { + PLAYER(species) { + HP(9997); MaxHP(9999); Item(ITEM_ORAN_BERRY); + if (attacker == playerLeft) { + if (species == SPECIES_WOBBUFFET) Gender(MON_FEMALE); + if (gMovesInfo[move].effect == EFFECT_LAST_RESORT) Moves(move, MOVE_POUND); + if (species == SPECIES_KLINKLANG) Ability(ABILITY_PLUS); + } + } + PLAYER(species) { + HP(9997); MaxHP(9999); Item(ITEM_ORAN_BERRY); + if (attacker == playerRight) { + if (species == SPECIES_WOBBUFFET) Gender(MON_FEMALE); + if (gMovesInfo[move].effect == EFFECT_LAST_RESORT) Moves(move, MOVE_POUND); + if (species == SPECIES_KLINKLANG) Ability(ABILITY_PLUS); + } + } + PLAYER(SPECIES_WOBBUFFET) { + Gender(MON_MALE); MaxHP(9999); Moves(MOVE_POUND, MOVE_CELEBRATE); + HP(gMovesInfo[move].effect == EFFECT_REVIVAL_BLESSING ? 0 : 9998); + } + OPPONENT(SPECIES_WOBBUFFET) { + Gender(MON_MALE); HP(9998); MaxHP(9999); SpDefense(9999); Defense(9999); Ability(ABILITY_TELEPATHY); + if (gMovesInfo[move].effect != EFFECT_BESTOW) { + Item(ITEM_ORAN_BERRY); + } + } + OPPONENT(SPECIES_WOBBUFFET) { + Gender(MON_MALE); HP(9998); MaxHP(9999); SpDefense(9999); Defense(9999); Ability(ABILITY_TELEPATHY); + if (gMovesInfo[move].effect != EFFECT_BESTOW) { + Item(ITEM_ORAN_BERRY); + } + } + OPPONENT(SPECIES_WOBBUFFET) { Gender(MON_FEMALE); HP(9998); MaxHP(9999); SpDefense(9999); Defense(9999); } + } WHEN { + DoublesWhen(move, attacker, target, ignore1, ignore2); + } SCENE { + DoublesScene(move, attacker); + } THEN { + FORCE_MOVE_ANIM(FALSE); + if (gLoadFail) + DebugPrintf("Move failed: %S (%u)", gMovesInfo[move].name, move); + EXPECT_EQ(gLoadFail, FALSE); + } +} + +DOUBLE_BATTLE_TEST("Move Animations don't leak when used - Doubles (opponentRight to playerRight)") +{ + u32 j = ANIM_TEST_START_MOVE, move = 0, species = 0; + u32 tempMove, tempSpecies; + FORCE_MOVE_ANIM(TRUE); + struct BattlePokemon *attacker = opponentRight; + struct BattlePokemon *target = playerRight; + struct BattlePokemon *ignore1 = playerLeft; + struct BattlePokemon *ignore2 = opponentLeft; + for (; j <= ANIM_TEST_END_MOVE; j++) { + ParametrizeMovesAndSpecies(j, &tempMove, &tempSpecies); + PARAMETRIZE { move = tempMove; species = tempSpecies; } + } + GIVEN { + OPPONENT(species) { + HP(9997); MaxHP(9999); Item(ITEM_ORAN_BERRY); + if (attacker == opponentLeft) { + if (species == SPECIES_WOBBUFFET) Gender(MON_FEMALE); + if (gMovesInfo[move].effect == EFFECT_LAST_RESORT) Moves(move, MOVE_POUND); + if (species == SPECIES_KLINKLANG) Ability(ABILITY_PLUS); + } + } + OPPONENT(species) { + HP(9997); MaxHP(9999); Item(ITEM_ORAN_BERRY); + if (attacker == opponentRight) { + if (species == SPECIES_WOBBUFFET) Gender(MON_FEMALE); + if (gMovesInfo[move].effect == EFFECT_LAST_RESORT) Moves(move, MOVE_POUND); + if (species == SPECIES_KLINKLANG) Ability(ABILITY_PLUS); + } + } + OPPONENT(SPECIES_WOBBUFFET) { + Gender(MON_MALE); MaxHP(9999); Moves(MOVE_POUND, MOVE_CELEBRATE); + HP(gMovesInfo[move].effect == EFFECT_REVIVAL_BLESSING ? 0 : 9998); + } + PLAYER(SPECIES_WOBBUFFET) { + Gender(MON_MALE); HP(9998); MaxHP(9999); SpDefense(9999); Defense(9999); Ability(ABILITY_TELEPATHY); + if (gMovesInfo[move].effect != EFFECT_BESTOW) { + Item(ITEM_ORAN_BERRY); + } + } + PLAYER(SPECIES_WOBBUFFET) { + Gender(MON_MALE); HP(9998); MaxHP(9999); SpDefense(9999); Defense(9999); Ability(ABILITY_TELEPATHY); + if (gMovesInfo[move].effect != EFFECT_BESTOW) { + Item(ITEM_ORAN_BERRY); + } + } + PLAYER(SPECIES_WOBBUFFET) { Gender(MON_FEMALE); HP(9998); MaxHP(9999); SpDefense(9999); Defense(9999); } + } WHEN { + DoublesWhen(move, attacker, target, ignore1, ignore2); + } SCENE { + DoublesScene(move, attacker); + } THEN { + FORCE_MOVE_ANIM(FALSE); + if (gLoadFail) + DebugPrintf("Move failed: %S (%u)", gMovesInfo[move].name, move); + EXPECT_EQ(gLoadFail, FALSE); + } +} + +/* +DOUBLE_BATTLE_TEST("Move Animations don't leak when used - Doubles (playerLeft to playerRight)") +{ + u32 j = ANIM_TEST_START_MOVE, move = 0, species = 0; + u32 tempMove, tempSpecies; + FORCE_MOVE_ANIM(TRUE); + struct BattlePokemon *attacker = playerLeft; + struct BattlePokemon *target = playerRight; + struct BattlePokemon *ignore1 = opponentRight; + struct BattlePokemon *ignore2 = opponentLeft; + for (; j <= ANIM_TEST_END_MOVE; j++) { + ParametrizeMovesAndSpecies(j, &tempMove, &tempSpecies); + PARAMETRIZE { move = tempMove; species = tempSpecies; } + } + GIVEN { + OPPONENT(species) { + HP(9997); MaxHP(9999); Item(ITEM_ORAN_BERRY); + if (attacker == opponentLeft) { + if (species == SPECIES_WOBBUFFET) Gender(MON_FEMALE); + if (gMovesInfo[move].effect == EFFECT_LAST_RESORT) Moves(move, MOVE_POUND); + if (species == SPECIES_KLINKLANG) Ability(ABILITY_PLUS); + } + } + OPPONENT(species) { + HP(9997); MaxHP(9999); Item(ITEM_ORAN_BERRY); + if (attacker == opponentRight) { + if (species == SPECIES_WOBBUFFET) Gender(MON_FEMALE); + if (gMovesInfo[move].effect == EFFECT_LAST_RESORT) Moves(move, MOVE_POUND); + if (species == SPECIES_KLINKLANG) Ability(ABILITY_PLUS); + } + } + OPPONENT(SPECIES_WOBBUFFET) { + Gender(MON_MALE); MaxHP(9999); Moves(MOVE_POUND, MOVE_CELEBRATE); + HP(gMovesInfo[move].effect == EFFECT_REVIVAL_BLESSING ? 0 : 9998); + } + PLAYER(SPECIES_WOBBUFFET) { + Gender(MON_MALE); HP(9998); MaxHP(9999); SpDefense(9999); Defense(9999); Ability(ABILITY_TELEPATHY); + if (gMovesInfo[move].effect != EFFECT_BESTOW) { + Item(ITEM_ORAN_BERRY); + } + } + PLAYER(SPECIES_WOBBUFFET) { + Gender(MON_MALE); HP(9998); MaxHP(9999); SpDefense(9999); Defense(9999); Ability(ABILITY_TELEPATHY); + if (gMovesInfo[move].effect != EFFECT_BESTOW) { + Item(ITEM_ORAN_BERRY); + } + } + PLAYER(SPECIES_WOBBUFFET) { Gender(MON_FEMALE); HP(9998); MaxHP(9999); SpDefense(9999); Defense(9999); } + } WHEN { + DoublesWhen(move, attacker, target, ignore1, ignore2); + } SCENE { + SameSideTargeting(move, attacker); + } THEN { + FORCE_MOVE_ANIM(FALSE); + if (gLoadFail) + DebugPrintf("Move failed: %S (%u)", gMovesInfo[move].name, move); + EXPECT_EQ(gLoadFail, FALSE); + } +} + +DOUBLE_BATTLE_TEST("Move Animations don't leak when used - Doubles (playerRight to playerLeft)") +{ + u32 j = ANIM_TEST_START_MOVE, move = 0, species = 0; + u32 tempMove, tempSpecies; + FORCE_MOVE_ANIM(TRUE); + struct BattlePokemon *attacker = playerRight; + struct BattlePokemon *target = playerLeft; + struct BattlePokemon *ignore1 = opponentRight; + struct BattlePokemon *ignore2 = opponentLeft; + for (; j <= ANIM_TEST_END_MOVE; j++) { + ParametrizeMovesAndSpecies(j, &tempMove, &tempSpecies); + PARAMETRIZE { move = tempMove; species = tempSpecies; } + } + GIVEN { + OPPONENT(species) { + HP(9997); MaxHP(9999); Item(ITEM_ORAN_BERRY); + if (attacker == opponentLeft) { + if (species == SPECIES_WOBBUFFET) Gender(MON_FEMALE); + if (gMovesInfo[move].effect == EFFECT_LAST_RESORT) Moves(move, MOVE_POUND); + if (species == SPECIES_KLINKLANG) Ability(ABILITY_PLUS); + } + } + OPPONENT(species) { + HP(9997); MaxHP(9999); Item(ITEM_ORAN_BERRY); + if (attacker == opponentRight) { + if (species == SPECIES_WOBBUFFET) Gender(MON_FEMALE); + if (gMovesInfo[move].effect == EFFECT_LAST_RESORT) Moves(move, MOVE_POUND); + if (species == SPECIES_KLINKLANG) Ability(ABILITY_PLUS); + } + } + OPPONENT(SPECIES_WOBBUFFET) { + Gender(MON_MALE); MaxHP(9999); Moves(MOVE_POUND, MOVE_CELEBRATE); + HP(gMovesInfo[move].effect == EFFECT_REVIVAL_BLESSING ? 0 : 9998); + } + PLAYER(SPECIES_WOBBUFFET) { + Gender(MON_MALE); HP(9998); MaxHP(9999); SpDefense(9999); Defense(9999); Ability(ABILITY_TELEPATHY); + if (gMovesInfo[move].effect != EFFECT_BESTOW) { + Item(ITEM_ORAN_BERRY); + } + } + PLAYER(SPECIES_WOBBUFFET) { + Gender(MON_MALE); HP(9998); MaxHP(9999); SpDefense(9999); Defense(9999); Ability(ABILITY_TELEPATHY); + if (gMovesInfo[move].effect != EFFECT_BESTOW) { + Item(ITEM_ORAN_BERRY); + } + } + PLAYER(SPECIES_WOBBUFFET) { Gender(MON_FEMALE); HP(9998); MaxHP(9999); SpDefense(9999); Defense(9999); } + } WHEN { + DoublesWhen(move, attacker, target, ignore1, ignore2); + } SCENE { + SameSideTargeting(move, attacker); + } THEN { + FORCE_MOVE_ANIM(FALSE); + if (gLoadFail) + DebugPrintf("Move failed: %S (%u)", gMovesInfo[move].name, move); + EXPECT_EQ(gLoadFail, FALSE); + } +} + +DOUBLE_BATTLE_TEST("Move Animations don't leak when used - Doubles (opponentleft to opponentRight)") +{ + u32 j = ANIM_TEST_START_MOVE, move = 0, species = 0; + u32 tempMove, tempSpecies; + FORCE_MOVE_ANIM(TRUE); + struct BattlePokemon *attacker = opponentLeft; + struct BattlePokemon *target = opponentRight; + struct BattlePokemon *ignore1 = playerLeft; + struct BattlePokemon *ignore2 = playerRight; + for (; j <= ANIM_TEST_END_MOVE; j++) { + ParametrizeMovesAndSpecies(j, &tempMove, &tempSpecies); + PARAMETRIZE { move = tempMove; species = tempSpecies; } + } + GIVEN { + OPPONENT(species) { + HP(9997); MaxHP(9999); Item(ITEM_ORAN_BERRY); + if (attacker == opponentLeft) { + if (species == SPECIES_WOBBUFFET) Gender(MON_FEMALE); + if (gMovesInfo[move].effect == EFFECT_LAST_RESORT) Moves(move, MOVE_POUND); + if (species == SPECIES_KLINKLANG) Ability(ABILITY_PLUS); + } + } + OPPONENT(species) { + HP(9997); MaxHP(9999); Item(ITEM_ORAN_BERRY); + if (attacker == opponentRight) { + if (species == SPECIES_WOBBUFFET) Gender(MON_FEMALE); + if (gMovesInfo[move].effect == EFFECT_LAST_RESORT) Moves(move, MOVE_POUND); + if (species == SPECIES_KLINKLANG) Ability(ABILITY_PLUS); + } + } + OPPONENT(SPECIES_WOBBUFFET) { + Gender(MON_MALE); MaxHP(9999); Moves(MOVE_POUND, MOVE_CELEBRATE); + HP(gMovesInfo[move].effect == EFFECT_REVIVAL_BLESSING ? 0 : 9998); + } + PLAYER(SPECIES_WOBBUFFET) { + Gender(MON_MALE); HP(9998); MaxHP(9999); SpDefense(9999); Defense(9999); Ability(ABILITY_TELEPATHY); + if (gMovesInfo[move].effect != EFFECT_BESTOW) { + Item(ITEM_ORAN_BERRY); + } + } + PLAYER(SPECIES_WOBBUFFET) { + Gender(MON_MALE); HP(9998); MaxHP(9999); SpDefense(9999); Defense(9999); Ability(ABILITY_TELEPATHY); + if (gMovesInfo[move].effect != EFFECT_BESTOW) { + Item(ITEM_ORAN_BERRY); + } + } + PLAYER(SPECIES_WOBBUFFET) { Gender(MON_FEMALE); HP(9998); MaxHP(9999); SpDefense(9999); Defense(9999); } + } WHEN { + DoublesWhen(move, attacker, target, ignore1, ignore2); + } SCENE { + SameSideTargeting(move, attacker); + } THEN { + FORCE_MOVE_ANIM(FALSE); + if (gLoadFail) + DebugPrintf("Move failed: %S (%u)", gMovesInfo[move].name, move); + EXPECT_EQ(gLoadFail, FALSE); + } +} + +DOUBLE_BATTLE_TEST("Move Animations don't leak when used - Doubles (opponentRight to opponentLeft)") +{ + u32 j = ANIM_TEST_START_MOVE, move = 0, species = 0; + u32 tempMove, tempSpecies; + FORCE_MOVE_ANIM(TRUE); + struct BattlePokemon *attacker = opponentRight; + struct BattlePokemon *target = opponentLeft; + struct BattlePokemon *ignore1 = playerLeft; + struct BattlePokemon *ignore2 = playerRight; + for (; j <= ANIM_TEST_END_MOVE; j++) { + ParametrizeMovesAndSpecies(j, &tempMove, &tempSpecies); + PARAMETRIZE { move = tempMove; species = tempSpecies; } + } + GIVEN { + OPPONENT(species) { + HP(9997); MaxHP(9999); Item(ITEM_ORAN_BERRY); + if (attacker == opponentLeft) { + if (species == SPECIES_WOBBUFFET) Gender(MON_FEMALE); + if (gMovesInfo[move].effect == EFFECT_LAST_RESORT) Moves(move, MOVE_POUND); + if (species == SPECIES_KLINKLANG) Ability(ABILITY_PLUS); + } + } + OPPONENT(species) { + HP(9997); MaxHP(9999); Item(ITEM_ORAN_BERRY); + if (attacker == opponentRight) { + if (species == SPECIES_WOBBUFFET) Gender(MON_FEMALE); + if (gMovesInfo[move].effect == EFFECT_LAST_RESORT) Moves(move, MOVE_POUND); + if (species == SPECIES_KLINKLANG) Ability(ABILITY_PLUS); + } + } + OPPONENT(SPECIES_WOBBUFFET) { + Gender(MON_MALE); MaxHP(9999); Moves(MOVE_POUND, MOVE_CELEBRATE); + HP(gMovesInfo[move].effect == EFFECT_REVIVAL_BLESSING ? 0 : 9998); + } + PLAYER(SPECIES_WOBBUFFET) { + Gender(MON_MALE); HP(9998); MaxHP(9999); SpDefense(9999); Defense(9999); Ability(ABILITY_TELEPATHY); + if (gMovesInfo[move].effect != EFFECT_BESTOW) { + Item(ITEM_ORAN_BERRY); + } + } + PLAYER(SPECIES_WOBBUFFET) { + Gender(MON_MALE); HP(9998); MaxHP(9999); SpDefense(9999); Defense(9999); Ability(ABILITY_TELEPATHY); + if (gMovesInfo[move].effect != EFFECT_BESTOW) { + Item(ITEM_ORAN_BERRY); + } + } + PLAYER(SPECIES_WOBBUFFET) { Gender(MON_FEMALE); HP(9998); MaxHP(9999); SpDefense(9999); Defense(9999); } + } WHEN { + DoublesWhen(move, attacker, target, ignore1, ignore2); + } SCENE { + SameSideTargeting(move, attacker); + } THEN { + FORCE_MOVE_ANIM(FALSE); + if (gLoadFail) + DebugPrintf("Move failed: %S (%u)", gMovesInfo[move].name, move); + EXPECT_EQ(gLoadFail, FALSE); + } +} +*/ + +// Z-Moves +#define Z_MOVE_PARAMETERS PARAMETRIZE { zmove = MOVE_BREAKNECK_BLITZ; species = SPECIES_WOBBUFFET; move = MOVE_TACKLE; item = ITEM_NORMALIUM_Z; } \ + PARAMETRIZE { zmove = MOVE_INFERNO_OVERDRIVE; species = SPECIES_WOBBUFFET; move = MOVE_EMBER; item = ITEM_FIRIUM_Z; } \ + PARAMETRIZE { zmove = MOVE_HYDRO_VORTEX; species = SPECIES_WOBBUFFET; move = MOVE_BUBBLE; item = ITEM_WATERIUM_Z; } \ + PARAMETRIZE { zmove = MOVE_GIGAVOLT_HAVOC; species = SPECIES_WOBBUFFET; move = MOVE_THUNDERBOLT; item = ITEM_ELECTRIUM_Z; } \ + PARAMETRIZE { zmove = MOVE_BLOOM_DOOM; species = SPECIES_WOBBUFFET; move = MOVE_RAZOR_LEAF; item = ITEM_GRASSIUM_Z; } \ + PARAMETRIZE { zmove = MOVE_SUBZERO_SLAMMER; species = SPECIES_WOBBUFFET; move = MOVE_ICE_BEAM; item = ITEM_ICIUM_Z; } \ + PARAMETRIZE { zmove = MOVE_ALL_OUT_PUMMELING; species = SPECIES_WOBBUFFET; move = MOVE_KARATE_CHOP; item = ITEM_FIGHTINIUM_Z; } \ + PARAMETRIZE { zmove = MOVE_ACID_DOWNPOUR; species = SPECIES_WOBBUFFET; move = MOVE_SLUDGE_BOMB; item = ITEM_POISONIUM_Z; } \ + PARAMETRIZE { zmove = MOVE_TECTONIC_RAGE; species = SPECIES_WOBBUFFET; move = MOVE_MUD_SLAP; item = ITEM_GROUNDIUM_Z; } \ + PARAMETRIZE { zmove = MOVE_SUPERSONIC_SKYSTRIKE; species = SPECIES_WOBBUFFET; move = MOVE_AERIAL_ACE; item = ITEM_FLYINIUM_Z; } \ + PARAMETRIZE { zmove = MOVE_SHATTERED_PSYCHE; species = SPECIES_WOBBUFFET; move = MOVE_CONFUSION; item = ITEM_PSYCHIUM_Z; } \ + PARAMETRIZE { zmove = MOVE_SAVAGE_SPIN_OUT; species = SPECIES_WOBBUFFET; move = MOVE_BUG_BUZZ; item = ITEM_BUGINIUM_Z; } \ + PARAMETRIZE { zmove = MOVE_CONTINENTAL_CRUSH; species = SPECIES_WOBBUFFET; move = MOVE_ROCK_SLIDE; item = ITEM_ROCKIUM_Z; } \ + PARAMETRIZE { zmove = MOVE_NEVER_ENDING_NIGHTMARE; species = SPECIES_WOBBUFFET; move = MOVE_SHADOW_BALL; item = ITEM_GHOSTIUM_Z; } \ + PARAMETRIZE { zmove = MOVE_DEVASTATING_DRAKE; species = SPECIES_WOBBUFFET; move = MOVE_DRAGON_PULSE; item = ITEM_DRAGONIUM_Z; } \ + PARAMETRIZE { zmove = MOVE_BLACK_HOLE_ECLIPSE; species = SPECIES_WOBBUFFET; move = MOVE_BITE; item = ITEM_DARKINIUM_Z; } \ + PARAMETRIZE { zmove = MOVE_CORKSCREW_CRASH; species = SPECIES_WOBBUFFET; move = MOVE_METAL_CLAW; item = ITEM_STEELIUM_Z; } \ + PARAMETRIZE { zmove = MOVE_TWINKLE_TACKLE; species = SPECIES_WOBBUFFET; move = MOVE_MOONBLAST; item = ITEM_FAIRIUM_Z; } \ + PARAMETRIZE { zmove = MOVE_CATASTROPIKA; species = SPECIES_PIKACHU; move = MOVE_VOLT_TACKLE; item = ITEM_PIKANIUM_Z; } \ + PARAMETRIZE { zmove = MOVE_EXTREME_EVOBOOST; species = SPECIES_EEVEE; move = MOVE_LAST_RESORT; item = ITEM_EEVIUM_Z; } \ + PARAMETRIZE { zmove = MOVE_PULVERIZING_PANCAKE; species = SPECIES_SNORLAX; move = MOVE_GIGA_IMPACT; item = ITEM_SNORLIUM_Z; } \ + PARAMETRIZE { zmove = MOVE_GENESIS_SUPERNOVA; species = SPECIES_MEW; move = MOVE_PSYCHIC; item = ITEM_MEWNIUM_Z; } \ + PARAMETRIZE { zmove = MOVE_SINISTER_ARROW_RAID; species = SPECIES_DECIDUEYE; move = MOVE_SPIRIT_SHACKLE; item = ITEM_DECIDIUM_Z; } \ + PARAMETRIZE { zmove = MOVE_MALICIOUS_MOONSAULT; species = SPECIES_INCINEROAR; move = MOVE_DARKEST_LARIAT; item = ITEM_INCINIUM_Z; } \ + PARAMETRIZE { zmove = MOVE_OCEANIC_OPERETTA; species = SPECIES_PRIMARINA; move = MOVE_SPARKLING_ARIA; item = ITEM_PRIMARIUM_Z; } \ + PARAMETRIZE { zmove = MOVE_SPLINTERED_STORMSHARDS; species = SPECIES_LYCANROC_MIDNIGHT; move = MOVE_STONE_EDGE; item = ITEM_LYCANIUM_Z; } \ + PARAMETRIZE { zmove = MOVE_SPLINTERED_STORMSHARDS; species = SPECIES_LYCANROC_MIDDAY; move = MOVE_STONE_EDGE; item = ITEM_LYCANIUM_Z; } \ + PARAMETRIZE { zmove = MOVE_SPLINTERED_STORMSHARDS; species = SPECIES_LYCANROC_DUSK; move = MOVE_STONE_EDGE; item = ITEM_LYCANIUM_Z; } \ + PARAMETRIZE { zmove = MOVE_LETS_SNUGGLE_FOREVER; species = SPECIES_MIMIKYU; move = MOVE_PLAY_ROUGH; item = ITEM_MIMIKIUM_Z; } \ + PARAMETRIZE { zmove = MOVE_CLANGOROUS_SOULBLAZE; species = SPECIES_KOMMO_O; move = MOVE_CLANGING_SCALES; item = ITEM_KOMMONIUM_Z; } \ + PARAMETRIZE { zmove = MOVE_GUARDIAN_OF_ALOLA; species = SPECIES_TAPU_KOKO; move = MOVE_NATURES_MADNESS; item = ITEM_TAPUNIUM_Z; } \ + PARAMETRIZE { zmove = MOVE_SEARING_SUNRAZE_SMASH; species = SPECIES_SOLGALEO; move = MOVE_SUNSTEEL_STRIKE; item = ITEM_SOLGANIUM_Z; } \ + PARAMETRIZE { zmove = MOVE_MENACING_MOONRAZE_MAELSTROM; species = SPECIES_LUNALA; move = MOVE_MOONGEIST_BEAM; item = ITEM_LUNALIUM_Z; } \ + PARAMETRIZE { zmove = MOVE_SOUL_STEALING_7_STAR_STRIKE; species = SPECIES_MARSHADOW; move = MOVE_SPECTRAL_THIEF; item = ITEM_MARSHADIUM_Z; } \ + PARAMETRIZE { zmove = MOVE_STOKED_SPARKSURFER; species = SPECIES_RAICHU_ALOLA; move = MOVE_THUNDERBOLT; item = ITEM_ALORAICHIUM_Z; } \ + PARAMETRIZE { zmove = MOVE_10_000_000_VOLT_THUNDERBOLT; species = SPECIES_PIKACHU_ALOLA; move = MOVE_THUNDERBOLT; item = ITEM_PIKASHUNIUM_Z; } \ + PARAMETRIZE { zmove = MOVE_LIGHT_THAT_BURNS_THE_SKY; species = SPECIES_NECROZMA_DAWN_WINGS; move = MOVE_PHOTON_GEYSER; item = ITEM_ULTRANECROZIUM_Z; } + +SINGLE_BATTLE_TEST("Z-Moves don't leak when used - Singles (player to opponent)") +{ + FORCE_MOVE_ANIM(TRUE); + u32 species, move, item, zmove; + Z_MOVE_PARAMETERS; + GIVEN { + PLAYER(species) { Item(item); } + OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_FOCUS_SASH); } + } WHEN { + if (species == SPECIES_NECROZMA_DAWN_WINGS) + { + TURN { MOVE(player, MOVE_CELEBRATE, gimmick: GIMMICK_ULTRA_BURST); } + TURN { MOVE(player, move, gimmick: GIMMICK_Z_MOVE); } + } + else + { + TURN { MOVE(player, move, gimmick: GIMMICK_Z_MOVE); } + } + } SCENE { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_ZMOVE_ACTIVATE, player); + ANIMATION(ANIM_TYPE_MOVE, zmove, player); + } THEN { + FORCE_MOVE_ANIM(FALSE); + if (gLoadFail) + DebugPrintf("Move failed: %S (%u)", gMovesInfo[move].name, move); + EXPECT_EQ(gLoadFail, FALSE); + } +} + +SINGLE_BATTLE_TEST("Z-Moves don't leak when used - Singles (opponent to player)") +{ + FORCE_MOVE_ANIM(TRUE); + u32 species, move, item, zmove; + Z_MOVE_PARAMETERS; + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_FOCUS_SASH); } + OPPONENT(species) { Item(item); } + } WHEN { + if (species == SPECIES_NECROZMA_DAWN_WINGS) + { + TURN { MOVE(opponent, MOVE_CELEBRATE, gimmick: GIMMICK_ULTRA_BURST); } + TURN { MOVE(opponent, move, gimmick: GIMMICK_Z_MOVE); } + } + else + { + TURN { MOVE(opponent, move, gimmick: GIMMICK_Z_MOVE); } + } + } SCENE { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_ZMOVE_ACTIVATE, opponent); + ANIMATION(ANIM_TYPE_MOVE, zmove, opponent); + } THEN { + FORCE_MOVE_ANIM(FALSE); + if (gLoadFail) + DebugPrintf("Move failed: %S (%u)", gMovesInfo[move].name, move); + EXPECT_EQ(gLoadFail, FALSE); + } +} + +DOUBLE_BATTLE_TEST("Z-Moves don't leak when used - Doubles (playerLeft to opponentLeft)") +{ + FORCE_MOVE_ANIM(TRUE); + u32 species, move, item, zmove; + Z_MOVE_PARAMETERS; + GIVEN { + PLAYER(species) { Item(item); } + PLAYER(SPECIES_WYNAUT); + OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_FOCUS_SASH); } + OPPONENT(SPECIES_WYNAUT) { Item(ITEM_FOCUS_SASH); } + } WHEN { + if (species == SPECIES_NECROZMA_DAWN_WINGS) + { + TURN { MOVE(playerLeft, MOVE_CELEBRATE, gimmick: GIMMICK_ULTRA_BURST); } + TURN { MOVE(playerLeft, move, gimmick: GIMMICK_Z_MOVE, target: opponentLeft); } + } + else + { + TURN { MOVE(playerLeft, move, gimmick: GIMMICK_Z_MOVE, target: opponentLeft); } + } + } SCENE { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_ZMOVE_ACTIVATE, playerLeft); + ANIMATION(ANIM_TYPE_MOVE, zmove, playerLeft); + } THEN { + FORCE_MOVE_ANIM(FALSE); + if (gLoadFail) + DebugPrintf("Move failed: %S (%u)", gMovesInfo[move].name, move); + EXPECT_EQ(gLoadFail, FALSE); + } +} + +DOUBLE_BATTLE_TEST("Z-Moves don't leak when used - Doubles (playerLeft to opponentRight)") +{ + FORCE_MOVE_ANIM(TRUE); + u32 species, move, item, zmove; + Z_MOVE_PARAMETERS; + GIVEN { + PLAYER(species) { Item(item); } + PLAYER(SPECIES_WYNAUT); + OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_FOCUS_SASH); } + OPPONENT(SPECIES_WYNAUT) { Item(ITEM_FOCUS_SASH); } + } WHEN { + if (species == SPECIES_NECROZMA_DAWN_WINGS) + { + TURN { MOVE(playerLeft, MOVE_CELEBRATE, gimmick: GIMMICK_ULTRA_BURST); } + TURN { MOVE(playerLeft, move, gimmick: GIMMICK_Z_MOVE, target: opponentRight); } + } + else + { + TURN { MOVE(playerLeft, move, gimmick: GIMMICK_Z_MOVE, target: opponentRight); } + } + } SCENE { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_ZMOVE_ACTIVATE, playerLeft); + ANIMATION(ANIM_TYPE_MOVE, zmove, playerLeft); + } THEN { + FORCE_MOVE_ANIM(FALSE); + if (gLoadFail) + DebugPrintf("Move failed: %S (%u)", gMovesInfo[move].name, move); + EXPECT_EQ(gLoadFail, FALSE); + } +} + +DOUBLE_BATTLE_TEST("Z-Moves don't leak when used - Doubles (playerRight to opponentLeft)") +{ + FORCE_MOVE_ANIM(TRUE); + u32 species, move, item, zmove; + Z_MOVE_PARAMETERS; + GIVEN { + PLAYER(SPECIES_WYNAUT); + PLAYER(species) { Item(item); } + OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_FOCUS_SASH); } + OPPONENT(SPECIES_WYNAUT) { Item(ITEM_FOCUS_SASH); } + } WHEN { + if (species == SPECIES_NECROZMA_DAWN_WINGS) + { + TURN { MOVE(playerRight, MOVE_CELEBRATE, gimmick: GIMMICK_ULTRA_BURST); } + TURN { MOVE(playerRight, move, gimmick: GIMMICK_Z_MOVE, target: opponentLeft); } + } + else + { + TURN { MOVE(playerRight, move, gimmick: GIMMICK_Z_MOVE, target: opponentLeft); } + } + } SCENE { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_ZMOVE_ACTIVATE, playerRight); + ANIMATION(ANIM_TYPE_MOVE, zmove, playerRight); + } THEN { + FORCE_MOVE_ANIM(FALSE); + if (gLoadFail) + DebugPrintf("Move failed: %S (%u)", gMovesInfo[move].name, move); + EXPECT_EQ(gLoadFail, FALSE); + } +} + +DOUBLE_BATTLE_TEST("Z-Moves don't leak when used - Doubles (playerRight to opponentRight)") +{ + FORCE_MOVE_ANIM(TRUE); + u32 species, move, item, zmove; + Z_MOVE_PARAMETERS; + GIVEN { + PLAYER(SPECIES_WYNAUT); + PLAYER(species) { Item(item); } + OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_FOCUS_SASH); } + OPPONENT(SPECIES_WYNAUT) { Item(ITEM_FOCUS_SASH); } + } WHEN { + if (species == SPECIES_NECROZMA_DAWN_WINGS) + { + TURN { MOVE(playerRight, MOVE_CELEBRATE, gimmick: GIMMICK_ULTRA_BURST); } + TURN { MOVE(playerRight, move, gimmick: GIMMICK_Z_MOVE, target: opponentRight); } + } + else + { + TURN { MOVE(playerRight, move, gimmick: GIMMICK_Z_MOVE, target: opponentRight); } + } + } SCENE { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_ZMOVE_ACTIVATE, playerRight); + ANIMATION(ANIM_TYPE_MOVE, zmove, playerRight); + } THEN { + FORCE_MOVE_ANIM(FALSE); + if (gLoadFail) + DebugPrintf("Move failed: %S (%u)", gMovesInfo[move].name, move); + EXPECT_EQ(gLoadFail, FALSE); + } +} + +DOUBLE_BATTLE_TEST("Z-Moves don't leak when used - Doubles (opponentLeft to playerLeft)") +{ + FORCE_MOVE_ANIM(TRUE); + u32 species, move, item, zmove; + Z_MOVE_PARAMETERS; + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_FOCUS_SASH); } + PLAYER(SPECIES_WYNAUT) { Item(ITEM_FOCUS_SASH); } + OPPONENT(species) { Item(item); } + OPPONENT(SPECIES_WYNAUT); + } WHEN { + if (species == SPECIES_NECROZMA_DAWN_WINGS) + { + TURN { MOVE(opponentLeft, MOVE_CELEBRATE, gimmick: GIMMICK_ULTRA_BURST); } + TURN { MOVE(opponentLeft, move, gimmick: GIMMICK_Z_MOVE, target: playerLeft); } + } + else + { + TURN { MOVE(opponentLeft, move, gimmick: GIMMICK_Z_MOVE, target: playerLeft); } + } + } SCENE { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_ZMOVE_ACTIVATE, opponentLeft); + ANIMATION(ANIM_TYPE_MOVE, zmove, opponentLeft); + } THEN { + FORCE_MOVE_ANIM(FALSE); + if (gLoadFail) + DebugPrintf("Move failed: %S (%u)", gMovesInfo[move].name, move); + EXPECT_EQ(gLoadFail, FALSE); + } +} + +DOUBLE_BATTLE_TEST("Z-Moves don't leak when used - Doubles (opponentLeft to playerRight)") +{ + FORCE_MOVE_ANIM(TRUE); + u32 species, move, item, zmove; + Z_MOVE_PARAMETERS; + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_FOCUS_SASH); } + PLAYER(SPECIES_WYNAUT) { Item(ITEM_FOCUS_SASH); } + OPPONENT(species) { Item(item); } + OPPONENT(SPECIES_WYNAUT); + } WHEN { + if (species == SPECIES_NECROZMA_DAWN_WINGS) + { + TURN { MOVE(opponentLeft, MOVE_CELEBRATE, gimmick: GIMMICK_ULTRA_BURST); } + TURN { MOVE(opponentLeft, move, gimmick: GIMMICK_Z_MOVE, target: playerRight); } + } + else + { + TURN { MOVE(opponentLeft, move, gimmick: GIMMICK_Z_MOVE, target: playerRight); } + } + } SCENE { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_ZMOVE_ACTIVATE, opponentLeft); + ANIMATION(ANIM_TYPE_MOVE, zmove, opponentLeft); + } THEN { + FORCE_MOVE_ANIM(FALSE); + if (gLoadFail) + DebugPrintf("Move failed: %S (%u)", gMovesInfo[move].name, move); + EXPECT_EQ(gLoadFail, FALSE); + } +} + +DOUBLE_BATTLE_TEST("Z-Moves don't leak when used - Doubles (opponentRight to playerLeft)") +{ + FORCE_MOVE_ANIM(TRUE); + u32 species, move, item, zmove; + Z_MOVE_PARAMETERS; + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_FOCUS_SASH); } + PLAYER(SPECIES_WYNAUT) { Item(ITEM_FOCUS_SASH); } + OPPONENT(SPECIES_WYNAUT); + OPPONENT(species) { Item(item); } + } WHEN { + if (species == SPECIES_NECROZMA_DAWN_WINGS) + { + TURN { MOVE(opponentRight, MOVE_CELEBRATE, gimmick: GIMMICK_ULTRA_BURST); } + TURN { MOVE(opponentRight, move, gimmick: GIMMICK_Z_MOVE, target: playerLeft); } + } + else + { + TURN { MOVE(opponentRight, move, gimmick: GIMMICK_Z_MOVE, target: playerLeft); } + } + } SCENE { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_ZMOVE_ACTIVATE, opponentRight); + ANIMATION(ANIM_TYPE_MOVE, zmove, opponentRight); + } THEN { + FORCE_MOVE_ANIM(FALSE); + if (gLoadFail) + DebugPrintf("Move failed: %S (%u)", gMovesInfo[move].name, move); + EXPECT_EQ(gLoadFail, FALSE); + } +} + +DOUBLE_BATTLE_TEST("Z-Moves don't leak when used - Doubles (opponentRight to playerRight)") +{ + FORCE_MOVE_ANIM(TRUE); + u32 species, move, item, zmove; + Z_MOVE_PARAMETERS; + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_FOCUS_SASH); } + PLAYER(SPECIES_WYNAUT) { Item(ITEM_FOCUS_SASH); } + OPPONENT(SPECIES_WYNAUT); + OPPONENT(species) { Item(item); } + } WHEN { + if (species == SPECIES_NECROZMA_DAWN_WINGS) + { + TURN { MOVE(opponentRight, MOVE_CELEBRATE, gimmick: GIMMICK_ULTRA_BURST); } + TURN { MOVE(opponentRight, move, gimmick: GIMMICK_Z_MOVE, target: playerRight); } + } + else + { + TURN { MOVE(opponentRight, move, gimmick: GIMMICK_Z_MOVE, target: playerRight); } + } + } SCENE { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_ZMOVE_ACTIVATE, opponentRight); + ANIMATION(ANIM_TYPE_MOVE, zmove, opponentRight); + } THEN { + FORCE_MOVE_ANIM(FALSE); + if (gLoadFail) + DebugPrintf("Move failed: %S (%u)", gMovesInfo[move].name, move); + EXPECT_EQ(gLoadFail, FALSE); + } +} + +// Max Moves + +#endif diff --git a/test/battle/move_effect/charge.c b/test/battle/move_effect/charge.c index b97b1d0719..35f491254d 100644 --- a/test/battle/move_effect/charge.c +++ b/test/battle/move_effect/charge.c @@ -134,7 +134,7 @@ SINGLE_BATTLE_TEST("Charge will not expire if it flinches twice in a row") { s16 damage[2]; GIVEN { - ASSUME(GetMoveAdditionalEffectById(MOVE_IRON_HEAD, 0)->moveEffect == MOVE_EFFECT_FLINCH); + ASSUME(GetMoveAdditionalEffectById(MOVE_IRON_HEAD, 0)->moveEffect == MOVE_EFFECT_FLINCH); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_LUM_BERRY); } } WHEN { diff --git a/test/battle/move_effect/chilly_reception.c b/test/battle/move_effect/chilly_reception.c index 9b464f0d03..0361f9db4f 100644 --- a/test/battle/move_effect/chilly_reception.c +++ b/test/battle/move_effect/chilly_reception.c @@ -5,8 +5,11 @@ ASSUMPTIONS { ASSUME(GetMoveEffect(MOVE_CHILLY_RECEPTION) == EFFECT_CHILLY_RECEPTION); } - +#if B_PREFERRED_ICE_WEATHER == B_ICE_WEATHER_HAIL +SINGLE_BATTLE_TEST("Chilly Reception sets up hail and switches the user out") +#else SINGLE_BATTLE_TEST("Chilly Reception sets up snow and switches the user out") +#endif { GIVEN { PLAYER(SPECIES_SLOWKING_GALAR); @@ -17,13 +20,23 @@ SINGLE_BATTLE_TEST("Chilly Reception sets up snow and switches the user out") } SCENE { MESSAGE("Slowking is preparing to tell a chillingly bad joke!"); ANIMATION(ANIM_TYPE_MOVE, MOVE_CHILLY_RECEPTION, player); +#if B_PREFERRED_ICE_WEATHER == B_ICE_WEATHER_HAIL + MESSAGE("It started to hail!"); +#else MESSAGE("It started to snow!"); +#endif MESSAGE("Slowking went back to 1!"); SEND_IN_MESSAGE("Slowpoke"); +#if B_PREFERRED_ICE_WEATHER == B_ICE_WEATHER_HAIL + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HAIL_CONTINUES); +#else ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_SNOW_CONTINUES); +#endif } } + + SINGLE_BATTLE_TEST("Chilly Reception switches the user out, even if the weather does not change") { GIVEN { @@ -83,7 +96,11 @@ SINGLE_BATTLE_TEST("Chilly Reception changes the weather, even if the user canno } SCENE { MESSAGE("Slowking is preparing to tell a chillingly bad joke!"); ANIMATION(ANIM_TYPE_MOVE, MOVE_CHILLY_RECEPTION, player); +#if B_PREFERRED_ICE_WEATHER == B_ICE_WEATHER_HAIL + MESSAGE("It started to hail!"); +#else MESSAGE("It started to snow!"); +#endif NOT MESSAGE("Slowking went back to 1!"); } } diff --git a/test/battle/move_effect/court_change.c b/test/battle/move_effect/court_change.c index 817ab134ca..41381df18c 100644 --- a/test/battle/move_effect/court_change.c +++ b/test/battle/move_effect/court_change.c @@ -107,11 +107,11 @@ DOUBLE_BATTLE_TEST("Court Change used by the player swaps Mist, Safeguard, Auror MESSAGE("Wynaut used Court Change!"); MESSAGE("Wynaut swapped the battle effects affecting each side of the field!"); // The effects now end for the player side. - MESSAGE("Your team's Mist wore off!"); MESSAGE("Your team is no longer protected by Safeguard!"); + MESSAGE("Your team's Mist wore off!"); MESSAGE("Your team's Reflect wore off!"); - MESSAGE("Your team's Aurora Veil wore off!"); MESSAGE("Your team's Tailwind petered out!"); + MESSAGE("Your team's Aurora Veil wore off!"); MESSAGE("Your team's Light Screen wore off!"); } } @@ -144,11 +144,12 @@ DOUBLE_BATTLE_TEST("Court Change used by the opponent swaps Mist, Safeguard, Aur MESSAGE("The opposing Wynaut used Court Change!"); MESSAGE("The opposing Wynaut swapped the battle effects affecting each side of the field!"); // The effects now end for the player side. - MESSAGE("The opposing team's Mist wore off!"); + MESSAGE("The snow stopped."); MESSAGE("The opposing team is no longer protected by Safeguard!"); + MESSAGE("The opposing team's Mist wore off!"); MESSAGE("The opposing team's Reflect wore off!"); - MESSAGE("The opposing team's Aurora Veil wore off!"); MESSAGE("The opposing team's Tailwind petered out!"); + MESSAGE("The opposing team's Aurora Veil wore off!"); MESSAGE("The opposing team's Light Screen wore off!"); } } diff --git a/test/battle/move_effect/defog.c b/test/battle/move_effect/defog.c index 6f9acc7dfc..d4c6650c72 100644 --- a/test/battle/move_effect/defog.c +++ b/test/battle/move_effect/defog.c @@ -13,7 +13,8 @@ ASSUMPTIONS ASSUME(GetMoveEffect(MOVE_SPIKES) == EFFECT_SPIKES); ASSUME(GetMoveEffect(MOVE_TOXIC_SPIKES) == EFFECT_TOXIC_SPIKES); ASSUME(GetMoveEffect(MOVE_STICKY_WEB) == EFFECT_STICKY_WEB); - ASSUME(GetMoveEffect(MOVE_TOXIC) == EFFECT_TOXIC); + ASSUME(GetMoveEffect(MOVE_TOXIC) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_TOXIC) == MOVE_EFFECT_TOXIC); ASSUME(GetMoveEffect(MOVE_SCREECH) == EFFECT_DEFENSE_DOWN_2); ASSUME(GetMoveCategory(MOVE_SCRATCH) == DAMAGE_CATEGORY_PHYSICAL); ASSUME(GetMoveCategory(MOVE_GUST) == DAMAGE_CATEGORY_SPECIAL); diff --git a/test/battle/move_effect/fell_stinger.c b/test/battle/move_effect/fell_stinger.c index 2613dc2d9d..994cba3457 100644 --- a/test/battle/move_effect/fell_stinger.c +++ b/test/battle/move_effect/fell_stinger.c @@ -1,4 +1,43 @@ #include "global.h" #include "test/battle.h" -TO_DO_BATTLE_TEST("TODO: Write Fell Stinger (Move Effect) test titles") +SINGLE_BATTLE_TEST("Fell Stinger raises user's Attack by 3 stages if it faints target") +{ + u32 config; + + PARAMETRIZE { config = GEN_7; } + PARAMETRIZE { config = GEN_6; } + + GIVEN { + WITH_CONFIG(GEN_CONFIG_FELL_STINGER_STAT_RAISE, config); + PLAYER(SPECIES_WOBBUFFET) { Moves(MOVE_FELL_STINGER); } + OPPONENT(SPECIES_WOBBUFFET) { HP(1); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_FELL_STINGER); SEND_OUT(opponent, 1); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_FELL_STINGER, player); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + } THEN { + if (config == GEN_7) + EXPECT_EQ(player->statStages[STAT_ATK], DEFAULT_STAT_STAGE + 3); + else + EXPECT_EQ(player->statStages[STAT_ATK], DEFAULT_STAT_STAGE + 2); + } +} + +SINGLE_BATTLE_TEST("Fell Stinger doesn't raise user's Attack if it doesn't faint target") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Moves(MOVE_FELL_STINGER); } + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_FELL_STINGER); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_FELL_STINGER, player); + NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + } THEN { + EXPECT_EQ(player->statStages[STAT_ATK], DEFAULT_STAT_STAGE); + } +} diff --git a/test/battle/move_effect/focus_punch.c b/test/battle/move_effect/focus_punch.c index a499a1867f..7696831dab 100644 --- a/test/battle/move_effect/focus_punch.c +++ b/test/battle/move_effect/focus_punch.c @@ -99,3 +99,17 @@ AI_SINGLE_BATTLE_TEST("AI will Incapacitate -> Substitute -> Focus Punch if able TURN { MOVE(player, MOVE_DISCHARGE); EXPECT_MOVE(opponent, MOVE_FOCUS_PUNCH); } } } + +AI_SINGLE_BATTLE_TEST("AI won't use status moves if the player's best attacking move is Focus Punch") +{ + PASSES_RANDOMLY(STATUS_MOVE_FOCUS_PUNCH_CHANCE, 100, RNG_AI_STATUS_FOCUS_PUNCH); + GIVEN { + ASSUME(GetMoveEffect(MOVE_FOCUS_PUNCH) == EFFECT_FOCUS_PUNCH); + ASSUME(GetMoveCategory(MOVE_SWORDS_DANCE) == DAMAGE_CATEGORY_STATUS); + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_OMNISCIENT); + PLAYER(SPECIES_SNORLAX) { Moves(MOVE_FOCUS_PUNCH, MOVE_TACKLE); } + OPPONENT(SPECIES_CLEFABLE) { Moves(MOVE_PLAY_ROUGH, MOVE_SWORDS_DANCE); } + } WHEN { + TURN { MOVE(player, MOVE_FOCUS_PUNCH); EXPECT_MOVE(opponent, MOVE_PLAY_ROUGH); } + } +} diff --git a/test/battle/move_effect/grassy_terrain.c b/test/battle/move_effect/grassy_terrain.c index 90e878b6dd..8b1895928b 100644 --- a/test/battle/move_effect/grassy_terrain.c +++ b/test/battle/move_effect/grassy_terrain.c @@ -8,9 +8,20 @@ SINGLE_BATTLE_TEST("Grassy Terrain recovers 1/16th HP at end of turn") OPPONENT(SPECIES_WOBBUFFET) { MaxHP(100); HP(1); }; } WHEN { TURN { MOVE(player, MOVE_GRASSY_TERRAIN); } + TURN {} } SCENE { s32 maxHPPlayer = GetMonData(&PLAYER_PARTY[0], MON_DATA_MAX_HP); s32 maxHPOpponent = GetMonData(&OPPONENT_PARTY[0], MON_DATA_MAX_HP); + + ANIMATION(ANIM_TYPE_MOVE, MOVE_GRASSY_TERRAIN, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, opponent); + MESSAGE("Wobbuffet is healed by the grassy terrain!"); + HP_BAR(player, damage: -maxHPPlayer / 16); + MESSAGE("The opposing Wobbuffet is healed by the grassy terrain!"); + HP_BAR(opponent, damage: -maxHPOpponent / 16); + + ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, opponent); MESSAGE("Wobbuffet is healed by the grassy terrain!"); HP_BAR(player, damage: -maxHPPlayer / 16); MESSAGE("The opposing Wobbuffet is healed by the grassy terrain!"); diff --git a/test/battle/move_effect/hit_escape.c b/test/battle/move_effect/hit_escape.c index d0ef3d40f3..a268f991b4 100644 --- a/test/battle/move_effect/hit_escape.c +++ b/test/battle/move_effect/hit_escape.c @@ -195,3 +195,17 @@ SINGLE_BATTLE_TEST("Hit Escape: U-turn triggers before Eject Pack") SEND_IN_MESSAGE("Wynaut"); } } + +SINGLE_BATTLE_TEST("Hit Escape: U-turn will fail to switch if the user faints") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { HP(1); } + PLAYER(SPECIES_WYNAUT); + OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_ROCKY_HELMET); } + } WHEN { + TURN { MOVE(player, MOVE_U_TURN); SEND_OUT(player, 1); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_U_TURN, player); + HP_BAR(opponent); + } +} diff --git a/test/battle/move_effect/instruct.c b/test/battle/move_effect/instruct.c index e79439d336..03a39fe154 100644 --- a/test/battle/move_effect/instruct.c +++ b/test/battle/move_effect/instruct.c @@ -60,7 +60,8 @@ DOUBLE_BATTLE_TEST("Instruct-called move targets the target of the move picked o DOUBLE_BATTLE_TEST("Instruct doesn't bypass sleep") { GIVEN { - ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP); + ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP); PLAYER(SPECIES_WOBBUFFET); PLAYER(SPECIES_WOBBUFFET) { Moves(MOVE_SCRATCH, MOVE_POUND, MOVE_SCRATCH, MOVE_GROWL); } OPPONENT(SPECIES_WOBBUFFET); diff --git a/test/battle/move_effect/knock_off.c b/test/battle/move_effect/knock_off.c index 4eb1269717..626e0cde28 100644 --- a/test/battle/move_effect/knock_off.c +++ b/test/battle/move_effect/knock_off.c @@ -90,8 +90,7 @@ SINGLE_BATTLE_TEST("Knock Off does not remove items through Substitute") PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_LEFTOVERS); }; } WHEN { - TURN { MOVE(opponent, MOVE_SUBSTITUTE); - MOVE(player, MOVE_KNOCK_OFF); } + 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); } @@ -100,6 +99,42 @@ SINGLE_BATTLE_TEST("Knock Off does not remove items through Substitute") } } +SINGLE_BATTLE_TEST("Knock Off does not remove items through Protect") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_LEFTOVERS); }; + } WHEN { + TURN { MOVE(opponent, MOVE_PROTECT); MOVE(player, MOVE_KNOCK_OFF); } + } SCENE { + NONE_OF { + ANIMATION(ANIM_TYPE_MOVE, MOVE_KNOCK_OFF, player); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_ITEM_KNOCKOFF); + } + } THEN { + EXPECT(opponent->item == ITEM_LEFTOVERS); + } +} + +SINGLE_BATTLE_TEST("Knock Off does not remove items if target is immune") +{ + GIVEN { + ASSUME(GetMoveEffect(MOVE_ELECTRIFY) == EFFECT_ELECTRIFY); + ASSUME(gSpeciesInfo[SPECIES_DONPHAN].types[0] == TYPE_GROUND || gSpeciesInfo[SPECIES_DONPHAN].types[1] == TYPE_GROUND); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_DONPHAN) { Item(ITEM_LEFTOVERS); }; + } WHEN { + TURN { MOVE(opponent, MOVE_ELECTRIFY); MOVE(player, MOVE_KNOCK_OFF); } + } SCENE { + NONE_OF { + ANIMATION(ANIM_TYPE_MOVE, MOVE_KNOCK_OFF, player); + 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 { diff --git a/test/battle/move_effect/leech_seed.c b/test/battle/move_effect/leech_seed.c index d363e98009..56da50a12b 100644 --- a/test/battle/move_effect/leech_seed.c +++ b/test/battle/move_effect/leech_seed.c @@ -58,6 +58,36 @@ SINGLE_BATTLE_TEST("Leech Seed recovery is prevented by Heal Block") } } +DOUBLE_BATTLE_TEST("Leech Seed will drain HP based on speed of the drained mon") +{ + GIVEN { + PLAYER(SPECIES_WYNAUT) { Speed(1); } + PLAYER(SPECIES_WOBBUFFET) { Speed(2); } + OPPONENT(SPECIES_WYNAUT) { Speed(3); } + OPPONENT(SPECIES_WOBBUFFET) { Speed(4); } + } WHEN { + TURN { + MOVE(playerLeft, MOVE_LEECH_SEED, target: opponentLeft); + MOVE(playerRight, MOVE_LEECH_SEED, target: opponentRight); + MOVE(opponentLeft, MOVE_LEECH_SEED, target: playerLeft); + MOVE(opponentRight, MOVE_LEECH_SEED, target: playerRight); + } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_LEECH_SEED, opponentRight); + ANIMATION(ANIM_TYPE_MOVE, MOVE_LEECH_SEED, opponentLeft); + ANIMATION(ANIM_TYPE_MOVE, MOVE_LEECH_SEED, playerRight); + ANIMATION(ANIM_TYPE_MOVE, MOVE_LEECH_SEED, playerLeft); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_LEECH_SEED_DRAIN, opponentRight); + HP_BAR(opponentRight); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_LEECH_SEED_DRAIN, opponentLeft); + HP_BAR(opponentLeft); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_LEECH_SEED_DRAIN, playerRight); + HP_BAR(playerRight); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_LEECH_SEED_DRAIN, playerLeft); + HP_BAR(playerLeft); + } +} + TO_DO_BATTLE_TEST("Leech Seed doesn't affect already seeded targets") TO_DO_BATTLE_TEST("Leech Seed's effect is paused until a new battler replaces the original user's position") // Faint, can't be replaced, then revived. TO_DO_BATTLE_TEST("Leech Seed's effect pause still prevents it from being seeded again") diff --git a/test/battle/move_effect/level_damage.c b/test/battle/move_effect/level_damage.c index 63bd121577..2ccf1ae964 100644 --- a/test/battle/move_effect/level_damage.c +++ b/test/battle/move_effect/level_damage.c @@ -1,4 +1,23 @@ #include "global.h" #include "test/battle.h" -TO_DO_BATTLE_TEST("TODO: Write Seismic Toss/Night Shade (Move Effect) test titles") +ASSUMPTIONS +{ + ASSUME(GetMoveEffect(MOVE_SEISMIC_TOSS) == EFFECT_LEVEL_DAMAGE); +} + +SINGLE_BATTLE_TEST("Level Damage: Seismic Toss deals damage based on user's level") +{ + s16 dmg; + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Level(50); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_SEISMIC_TOSS); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SEISMIC_TOSS, player); + HP_BAR(opponent, captureDamage: &dmg); + } THEN { + EXPECT(dmg == 50); + } +} diff --git a/test/battle/move_effect/magic_coat.c b/test/battle/move_effect/magic_coat.c index 343322408d..50ed79e194 100644 --- a/test/battle/move_effect/magic_coat.c +++ b/test/battle/move_effect/magic_coat.c @@ -9,7 +9,8 @@ ASSUMPTIONS SINGLE_BATTLE_TEST("Magic Coat prints the correct message when bouncing back a move") { GIVEN { - ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP); + ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP); PLAYER(SPECIES_ZIGZAGOON); PLAYER(SPECIES_ZIGZAGOON); OPPONENT(SPECIES_ZIGZAGOON); diff --git a/test/battle/move_effect/magic_room.c b/test/battle/move_effect/magic_room.c index 9fde0046fd..b1be6ac5bc 100644 --- a/test/battle/move_effect/magic_room.c +++ b/test/battle/move_effect/magic_room.c @@ -1,4 +1,37 @@ #include "global.h" #include "test/battle.h" -TO_DO_BATTLE_TEST("TODO: Write Magic Room (Move Effect) test titles") +ASSUMPTIONS +{ + ASSUME(GetMoveEffect(MOVE_MAGIC_ROOM) == EFFECT_MAGIC_ROOM); +} + +DOUBLE_BATTLE_TEST("Magic Room prevents item hold effects") +{ + GIVEN { + ASSUME(gItemsInfo[ITEM_BERRY_JUICE].holdEffect == HOLD_EFFECT_RESTORE_HP); + ASSUME(GetMoveEffect(MOVE_DRAGON_RAGE) == EFFECT_FIXED_DAMAGE_ARG); + ASSUME(GetMoveFixedDamage(MOVE_DRAGON_RAGE) == 40); + + PLAYER(SPECIES_WOBBUFFET) { MaxHP(100); HP(60); Item(ITEM_BERRY_JUICE); } + PLAYER(SPECIES_WOBBUFFET) { MaxHP(100); HP(60); Item(ITEM_BERRY_JUICE); } + OPPONENT(SPECIES_WOBBUFFET) { MaxHP(100); HP(60); Item(ITEM_BERRY_JUICE); } + OPPONENT(SPECIES_WOBBUFFET) { MaxHP(100); HP(60); Item(ITEM_BERRY_JUICE); } + } WHEN { + TURN { MOVE(playerLeft, MOVE_MAGIC_ROOM); } + TURN { + MOVE(playerLeft, MOVE_DRAGON_RAGE, target: opponentLeft); + MOVE(opponentLeft, MOVE_DRAGON_RAGE, target: playerLeft); + MOVE(playerRight, MOVE_DRAGON_RAGE, target: opponentRight); + MOVE(opponentRight, MOVE_DRAGON_RAGE, target: playerRight); + } + TURN { MOVE(playerLeft, MOVE_MAGIC_ROOM); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_MAGIC_ROOM, playerLeft); + ANIMATION(ANIM_TYPE_MOVE, MOVE_MAGIC_ROOM, playerLeft); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, playerLeft); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponentLeft); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, playerRight); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponentRight); + } +} diff --git a/test/battle/move_effect/me_first.c b/test/battle/move_effect/me_first.c index e5fbd2a7fb..f351c1a498 100644 --- a/test/battle/move_effect/me_first.c +++ b/test/battle/move_effect/me_first.c @@ -1,4 +1,80 @@ #include "global.h" #include "test/battle.h" -TO_DO_BATTLE_TEST("TODO: Write Me First (Move Effect) test titles") +SINGLE_BATTLE_TEST("Me First copies the move from the target and increases it's power by 1.5", s16 damage) +{ + u32 move; + + PARAMETRIZE { move = MOVE_TACKLE; } + PARAMETRIZE { move = MOVE_ME_FIRST; } + + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, move); MOVE(opponent, MOVE_TACKLE); } + } SCENE { + 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("Me First fails if target uses a status move") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_ME_FIRST); MOVE(opponent, MOVE_GROWL); } + } SCENE { + MESSAGE("Wobbuffet used Me First!"); + MESSAGE("But it failed!"); + } +} + +SINGLE_BATTLE_TEST("Me First fails if target moves first") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Speed(50); } + OPPONENT(SPECIES_WOBBUFFET) { Speed(100); } + } WHEN { + TURN { MOVE(opponent, MOVE_TACKLE); MOVE(player, MOVE_ME_FIRST); } + } SCENE { + MESSAGE("Wobbuffet used Me First!"); + MESSAGE("But it failed!"); + } +} + +SINGLE_BATTLE_TEST("Me First: If a Consecutively Executed Move is copied, the boost only applies to the first hit") +{ + s16 dmg[2]; + + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Speed(100); } + OPPONENT(SPECIES_WOBBUFFET) { Speed(50); } + } WHEN { + TURN { MOVE(player, MOVE_ME_FIRST); MOVE(opponent, MOVE_OUTRAGE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_ME_FIRST, player); + HP_BAR(opponent, captureDamage: &dmg[0]); + ANIMATION(ANIM_TYPE_MOVE, MOVE_OUTRAGE, player); + HP_BAR(opponent, captureDamage: &dmg[1]); + } THEN { + EXPECT_MUL_EQ(dmg[1], Q_4_12(1.5), dmg[0]); + } +} + +SINGLE_BATTLE_TEST("Me First can be selected if users holds Assault Vest") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Speed(100); Item(ITEM_ASSAULT_VEST); } + OPPONENT(SPECIES_WOBBUFFET) { Speed(50); } + } WHEN { + TURN { MOVE(player, MOVE_ME_FIRST); MOVE(opponent, MOVE_TACKLE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_ME_FIRST, player); + } +} + +// TO_DO_BATTLE_TEST: Not everything has been tested diff --git a/test/battle/move_effect/metronome.c b/test/battle/move_effect/metronome.c index 1a5d4aeb9d..3bb178e2f2 100644 --- a/test/battle/move_effect/metronome.c +++ b/test/battle/move_effect/metronome.c @@ -27,7 +27,8 @@ SINGLE_BATTLE_TEST("Metronome's called powder move fails against Grass Types") GIVEN { ASSUME(IsPowderMove(MOVE_POISON_POWDER)); ASSUME(gSpeciesInfo[SPECIES_TANGELA].types[0] == TYPE_GRASS); - ASSUME(GetMoveEffect(MOVE_POISON_POWDER) == EFFECT_POISON); + ASSUME(GetMoveEffect(MOVE_POISON_POWDER) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_POISON_POWDER) == MOVE_EFFECT_POISON); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_TANGELA); } WHEN { diff --git a/test/battle/move_effect/mirror_move.c b/test/battle/move_effect/mirror_move.c index 2df8c91fba..905fb32d31 100644 --- a/test/battle/move_effect/mirror_move.c +++ b/test/battle/move_effect/mirror_move.c @@ -43,7 +43,8 @@ SINGLE_BATTLE_TEST("Mirror Move's called powder move fails against Grass Types") GIVEN { ASSUME(IsPowderMove(MOVE_STUN_SPORE)); ASSUME(gSpeciesInfo[SPECIES_ODDISH].types[0] == TYPE_GRASS); - ASSUME(GetMoveEffect(MOVE_STUN_SPORE) == EFFECT_PARALYZE); + ASSUME(GetMoveEffect(MOVE_STUN_SPORE) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_STUN_SPORE) == MOVE_EFFECT_PARALYSIS); PLAYER(SPECIES_ODDISH); OPPONENT(SPECIES_WOBBUFFET); } WHEN { diff --git a/test/battle/move_effect/ohko.c b/test/battle/move_effect/ohko.c index 11dbb78f1f..415f36e752 100644 --- a/test/battle/move_effect/ohko.c +++ b/test/battle/move_effect/ohko.c @@ -24,7 +24,7 @@ SINGLE_BATTLE_TEST("Sheer Cold doesn't affect Ice-type Pokémon") SINGLE_BATTLE_TEST("OHKO moves can hit semi-invulnerable mons when the user has No-Guard") { GIVEN { - ASSUME(GetMoveEffect(MOVE_SHEER_COLD) == EFFECT_OHKO); + ASSUME(GetItemHoldEffect(ITEM_FOCUS_SASH) == HOLD_EFFECT_FOCUS_SASH); PLAYER(SPECIES_WOBBUFFET) { Ability(ABILITY_NO_GUARD); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { @@ -36,6 +36,34 @@ SINGLE_BATTLE_TEST("OHKO moves can hit semi-invulnerable mons when the user has } } +SINGLE_BATTLE_TEST("OHKO moves can can be endured by Focus Sash") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_FOCUS_SASH); } + } WHEN { + TURN { MOVE(player, MOVE_SHEER_COLD); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SHEER_COLD, player); + HP_BAR(opponent, hp: 1); + MESSAGE("The opposing Wobbuffet hung on using its Focus Sash!"); + } +} + +SINGLE_BATTLE_TEST("OHKO moves can can be endured by Sturdy") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_GEODUDE) { Ability(ABILITY_STURDY); } + } WHEN { + TURN { MOVE(player, MOVE_SHEER_COLD); } + } SCENE { + NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_SHEER_COLD, player); + ABILITY_POPUP(opponent, ABILITY_STURDY); + MESSAGE("The opposing Geodude was protected by Sturdy!"); + } +} + TO_DO_BATTLE_TEST("Fissure faints the target, skipping regular damage calculations") TO_DO_BATTLE_TEST("Fissure always fails if the target has a higher level than the user") TO_DO_BATTLE_TEST("Fissure's accuracy increases by 1% for every level the user has over the target") diff --git a/test/battle/move_effect/pursuit.c b/test/battle/move_effect/pursuit.c index 3b48fa4ded..649b331eec 100644 --- a/test/battle/move_effect/pursuit.c +++ b/test/battle/move_effect/pursuit.c @@ -606,7 +606,7 @@ SINGLE_BATTLE_TEST("Pursuit attacks a switching foe and switchin is correctly st case 4: SEND_IN_MESSAGE("Venipede"); break; - } + } } } diff --git a/test/battle/move_effect/refresh.c b/test/battle/move_effect/refresh.c index 7d0ba0273e..f11a8dfca1 100644 --- a/test/battle/move_effect/refresh.c +++ b/test/battle/move_effect/refresh.c @@ -45,7 +45,8 @@ SINGLE_BATTLE_TEST("Refresh does not cure the user of Freeze") SINGLE_BATTLE_TEST("Refresh does not cure sleep when used by Sleep Talk") { GIVEN { - ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP); + ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP); ASSUME(GetMoveEffect(MOVE_SLEEP_TALK) == EFFECT_SLEEP_TALK); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_SLEEP_TALK, MOVE_REFRESH); } diff --git a/test/battle/move_effect/retaliate.c b/test/battle/move_effect/retaliate.c index 34843da04e..47b1c3325d 100644 --- a/test/battle/move_effect/retaliate.c +++ b/test/battle/move_effect/retaliate.c @@ -63,9 +63,12 @@ DOUBLE_BATTLE_TEST("Retaliate works with passive damage") PARAMETRIZE { move = MOVE_FLAME_BURST; moveTarget = playerRight; } PARAMETRIZE { move = MOVE_FIRE_PLEDGE; moveTarget = playerRight; move2 = MOVE_GRASS_PLEDGE; } GIVEN { - ASSUME(GetMoveEffect(MOVE_TOXIC) == EFFECT_TOXIC); - ASSUME(GetMoveEffect(MOVE_POISON_POWDER) == EFFECT_POISON); - ASSUME(GetMoveEffect(MOVE_WILL_O_WISP) == EFFECT_WILL_O_WISP); + ASSUME(GetMoveEffect(MOVE_TOXIC) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_TOXIC) == MOVE_EFFECT_TOXIC); + ASSUME(GetMoveEffect(MOVE_POISON_POWDER) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_POISON_POWDER) == MOVE_EFFECT_POISON); + ASSUME(GetMoveEffect(MOVE_WILL_O_WISP) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_WILL_O_WISP) == MOVE_EFFECT_BURN); #if B_USE_FROSTBITE == TRUE ASSUME(GetMoveAdditionalEffectById(MOVE_ICE_BEAM, 0)->moveEffect == MOVE_EFFECT_FREEZE_OR_FROSTBITE); #endif diff --git a/test/battle/move_effect/roar.c b/test/battle/move_effect/roar.c index 525e75b6df..5b1230f253 100644 --- a/test/battle/move_effect/roar.c +++ b/test/battle/move_effect/roar.c @@ -78,7 +78,7 @@ SINGLE_BATTLE_TEST("Roar fails against target with Guard Dog") } WHEN { TURN { MOVE(player, MOVE_ROAR); } } SCENE { - NONE_OF { + NONE_OF { ANIMATION(ANIM_TYPE_MOVE, MOVE_ROAR, player); MESSAGE("The opposing Charmander was dragged out!"); } diff --git a/test/battle/move_effect/sky_drop.c b/test/battle/move_effect/sky_drop.c index f0482788dd..c2a1e104e1 100644 --- a/test/battle/move_effect/sky_drop.c +++ b/test/battle/move_effect/sky_drop.c @@ -1,4 +1,124 @@ #include "global.h" #include "test/battle.h" -TO_DO_BATTLE_TEST("TODO: Write Sky Drop (Move Effect) test titles") +ASSUMPTIONS +{ + ASSUME(GetMoveEffect(MOVE_SKY_DROP) == EFFECT_SKY_DROP); +} + +SINGLE_BATTLE_TEST("Sky Drop does no damage to Flying type Pokémon") +{ + GIVEN { + ASSUME(gSpeciesInfo[SPECIES_PIDGEY].weight < 2000); + ASSUME(gSpeciesInfo[SPECIES_PIDGEY].types[1] == TYPE_FLYING); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_PIDGEY); + } WHEN { + TURN { MOVE(player, MOVE_SKY_DROP); } + TURN { SKIP_TURN(player); } + } SCENE { + MESSAGE("Wobbuffet took the opposing Pidgey into the sky!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SKY_DROP, player); + NOT HP_BAR(opponent); + } +} + +SINGLE_BATTLE_TEST("Sky Drop fails if target is behind a substitute") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_SUBSTITUTE); MOVE(player, MOVE_SKY_DROP); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SUBSTITUTE, opponent); + NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_SKY_DROP, player); + } +} + +SINGLE_BATTLE_TEST("Sky Drop fails if target is in a Semi-Invulnerable state") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_FLY); MOVE(player, MOVE_SKY_DROP); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_FLY, opponent); + NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_SKY_DROP, player); + } +} + +DOUBLE_BATTLE_TEST("Sky Drop is cancelled if Gravity activated") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { + MOVE(playerLeft, MOVE_SKY_DROP, target: opponentLeft); + MOVE(playerRight, MOVE_GRAVITY); + } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SKY_DROP, playerLeft); + ANIMATION(ANIM_TYPE_MOVE, MOVE_GRAVITY, playerRight); + MESSAGE("Wobbuffet fell from the sky due to the gravity!"); + } +} + +SINGLE_BATTLE_TEST("Sky Drop fails on heavy targets") +{ + GIVEN { + ASSUME(gSpeciesInfo[SPECIES_METAGROSS].weight >= 2000); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_METAGROSS); + } WHEN { + TURN { MOVE(player, MOVE_SKY_DROP); } + } SCENE { + NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_SKY_DROP, player); + MESSAGE("The opposing Metagross is too heavy to be lifted!"); + } +} + +SINGLE_BATTLE_TEST("Sky Drop cancels targets two turn moves") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { + MOVE(opponent, MOVE_SOLAR_BEAM); + MOVE(player, MOVE_SKY_DROP); + } + TURN { SKIP_TURN(player); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SOLAR_BEAM, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SKY_DROP, player); + NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_SOLAR_BEAM, opponent); + HP_BAR(opponent); + } +} + +SINGLE_BATTLE_TEST("Sky Drop stops the confusion count until the target is dropped") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_THRASH); } + TURN { SKIP_TURN(player); } + TURN { SKIP_TURN(player); } + TURN { MOVE(opponent, MOVE_SKY_DROP); } + TURN { SKIP_TURN(opponent); } + TURN {} + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_THRASH, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_THRASH, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_THRASH, player); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_CONFUSION, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SKY_DROP, opponent); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_CONFUSION, player); + } +} diff --git a/test/battle/move_effect/sleep.c b/test/battle/move_effect/sleep.c index 702044d331..524db0cf08 100644 --- a/test/battle/move_effect/sleep.c +++ b/test/battle/move_effect/sleep.c @@ -3,7 +3,8 @@ ASSUMPTIONS { - ASSUME(GetMoveEffect(MOVE_HYPNOSIS) == EFFECT_SLEEP); + ASSUME(GetMoveEffect(MOVE_HYPNOSIS) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_HYPNOSIS) == MOVE_EFFECT_SLEEP); } SINGLE_BATTLE_TEST("Hypnosis inflicts 1-3 turns of sleep") diff --git a/test/battle/move_effect/smack_down.c b/test/battle/move_effect/smack_down.c new file mode 100644 index 0000000000..e69de29bb2 diff --git a/test/battle/move_effect/take_heart.c b/test/battle/move_effect/take_heart.c index e029439103..69560de74d 100644 --- a/test/battle/move_effect/take_heart.c +++ b/test/battle/move_effect/take_heart.c @@ -50,7 +50,8 @@ SINGLE_BATTLE_TEST("Take Heart cures the user of all status conditions") SINGLE_BATTLE_TEST("Take Heart cures sleep when used by Sleep Talk") { GIVEN { - ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP); + ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP); ASSUME(GetMoveEffect(MOVE_SLEEP_TALK) == EFFECT_SLEEP_TALK); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_SLEEP_TALK, MOVE_TAKE_HEART); } diff --git a/test/battle/move_effect/toxic.c b/test/battle/move_effect/toxic.c index 7b8274a441..c25b4fc640 100644 --- a/test/battle/move_effect/toxic.c +++ b/test/battle/move_effect/toxic.c @@ -3,7 +3,8 @@ ASSUMPTIONS { - ASSUME(GetMoveEffect(MOVE_TOXIC) == EFFECT_TOXIC); + ASSUME(GetMoveEffect(MOVE_TOXIC) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_TOXIC) == MOVE_EFFECT_TOXIC); } SINGLE_BATTLE_TEST("Toxic inflicts bad poison") @@ -21,6 +22,27 @@ SINGLE_BATTLE_TEST("Toxic inflicts bad poison") } } +SINGLE_BATTLE_TEST("Toxic can't bad poison a poison or steel type") +{ + u32 species; + + PARAMETRIZE { species = SPECIES_BELDUM; } + PARAMETRIZE { species = SPECIES_BULBASAUR; } + + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(species); + } WHEN { + TURN { MOVE(player, MOVE_TOXIC); } + } SCENE { + NONE_OF { + ANIMATION(ANIM_TYPE_MOVE, MOVE_TOXIC, player); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PSN, opponent); + STATUS_ICON(opponent, badPoison: TRUE); + } + } +} + SINGLE_BATTLE_TEST("Toxic cannot miss if used by a Poison-type") { u32 species; diff --git a/test/battle/move_effect/wish.c b/test/battle/move_effect/wish.c index a38529d792..8fa3842123 100644 --- a/test/battle/move_effect/wish.c +++ b/test/battle/move_effect/wish.c @@ -1,6 +1,28 @@ #include "global.h" #include "test/battle.h" +ASSUMPTIONS +{ + ASSUME(GetMoveEffect(MOVE_WISH) == EFFECT_WISH); +} + +SINGLE_BATTLE_TEST("Wish restores 50% of max player HP") +{ + GIVEN { + PLAYER(SPECIES_WYNAUT) { HP(50); MaxHP(100); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_WISH); } + TURN { } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_WISH, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, player); + MESSAGE("Wynaut's wish came true!"); + HP_BAR(player, hp: 100); + MESSAGE("Wynaut's HP was restored."); + } +} + SINGLE_BATTLE_TEST("Wish heals the user at the end of the next turn") { GIVEN { @@ -38,4 +60,5 @@ SINGLE_BATTLE_TEST("Wish is blocked by Heal Block") NOT HP_BAR(player); } } + TO_DO_BATTLE_TEST("TODO: Write Wish (Move Effect) test titles") diff --git a/test/battle/move_effect_secondary/freeze.c b/test/battle/move_effect_secondary/freeze.c index bfaadcebe1..645c134a81 100644 --- a/test/battle/move_effect_secondary/freeze.c +++ b/test/battle/move_effect_secondary/freeze.c @@ -4,7 +4,6 @@ ASSUMPTIONS { ASSUME(MoveHasAdditionalEffect(MOVE_POWDER_SNOW, MOVE_EFFECT_FREEZE_OR_FROSTBITE) == TRUE); - ASSUME(GetMoveAccuracy(MOVE_BLIZZARD) == 70); } #if B_USE_FROSTBITE == TRUE @@ -60,21 +59,6 @@ SINGLE_BATTLE_TEST("Freeze cannot be inflicted in Sunlight") } } -SINGLE_BATTLE_TEST("Blizzard bypasses accuracy checks in Hail and Snow") -{ - u32 move; - PARAMETRIZE { move = MOVE_HAIL; } - PARAMETRIZE { move = MOVE_SNOWSCAPE; } - GIVEN { - PLAYER(SPECIES_WOBBUFFET); - OPPONENT(SPECIES_WOBBUFFET); - } WHEN { - TURN { MOVE(opponent, move); MOVE(player, MOVE_BLIZZARD); } - } SCENE { - NOT MESSAGE("Wobbuffet's attack missed!"); - } -} - #if B_STATUS_TYPE_IMMUNITY > GEN_1 #if B_USE_FROSTBITE == TRUE SINGLE_BATTLE_TEST("Freezing Glare should frostbite Psychic-types") diff --git a/test/battle/move_effect_secondary/smack_down.c b/test/battle/move_effect_secondary/smack_down.c index 64eba3889c..c0d0e55eca 100644 --- a/test/battle/move_effect_secondary/smack_down.c +++ b/test/battle/move_effect_secondary/smack_down.c @@ -1,10 +1,14 @@ #include "global.h" #include "test/battle.h" +ASSUMPTIONS +{ + ASSUME(GetMoveEffect(MOVE_SMACK_DOWN) == EFFECT_SMACK_DOWN); +} + SINGLE_BATTLE_TEST("Smack Down does not ground mons behind substitutes") { GIVEN { - ASSUME(MoveHasAdditionalEffect(MOVE_SMACK_DOWN, MOVE_EFFECT_SMACK_DOWN) == TRUE); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_SKARMORY); } WHEN { @@ -17,7 +21,7 @@ SINGLE_BATTLE_TEST("Smack Down does not ground mons behind substitutes") SINGLE_BATTLE_TEST("Thousand Arrows does not ground mons behind substitutes") { GIVEN { - ASSUME(MoveHasAdditionalEffect(MOVE_THOUSAND_ARROWS, MOVE_EFFECT_SMACK_DOWN)); + ASSUME(GetMoveEffect(MOVE_THOUSAND_ARROWS) == EFFECT_SMACK_DOWN); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_SKARMORY); } WHEN { @@ -26,3 +30,30 @@ SINGLE_BATTLE_TEST("Thousand Arrows does not ground mons behind substitutes") NOT MESSAGE("The opposing Skarmory fell straight down!"); } } + +SINGLE_BATTLE_TEST("Smack Down does not ground mons through Protect") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_SKARMORY); + } WHEN { + TURN { MOVE(opponent, MOVE_PROTECT); MOVE(player, MOVE_SMACK_DOWN); } + } SCENE { + NOT MESSAGE("The opposing Skarmory fell straight down!"); + } +} + +SINGLE_BATTLE_TEST("Smack Down does not ground target if target is immune") +{ + GIVEN { + ASSUME(GetMoveEffect(MOVE_ELECTRIFY) == EFFECT_ELECTRIFY); + ASSUME(gSpeciesInfo[SPECIES_GLISCOR].types[0] == TYPE_GROUND || gSpeciesInfo[SPECIES_GLISCOR].types[1] == TYPE_GROUND); + ASSUME(gSpeciesInfo[SPECIES_GLISCOR].types[0] == TYPE_FLYING || gSpeciesInfo[SPECIES_GLISCOR].types[1] == TYPE_FLYING); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_GLISCOR); + } WHEN { + TURN { MOVE(opponent, MOVE_ELECTRIFY); MOVE(player, MOVE_SMACK_DOWN); } + } SCENE { + NOT MESSAGE("The opposing Gliscor fell straight down!"); + } +} diff --git a/test/battle/move_effect_secondary/throat_chop.c b/test/battle/move_effect_secondary/throat_chop.c index e640948c95..c2724a0f38 100644 --- a/test/battle/move_effect_secondary/throat_chop.c +++ b/test/battle/move_effect_secondary/throat_chop.c @@ -24,22 +24,24 @@ SINGLE_BATTLE_TEST("Throat Chop prevents the usage of sound moves") } } -SINGLE_BATTLE_TEST("Throat Chop won't work through a substitute") +SINGLE_BATTLE_TEST("Throat Chop prevents sound base moves for 2 turns") { GIVEN { - PLAYER(SPECIES_INCINEROAR) { Speed(100); }; - OPPONENT(SPECIES_WOBBUFFET) { Speed(50); }; + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_HYPER_VOICE, MOVE_ALLURING_VOICE, MOVE_OVERDRIVE, MOVE_ROUND); } } WHEN { - TURN { MOVE(opponent, MOVE_SUBSTITUTE); } - TURN { MOVE(player, MOVE_THROAT_CHOP); MOVE(opponent, MOVE_HYPER_VOICE); } - TURN {} + TURN { MOVE(opponent, MOVE_HYPER_VOICE); MOVE(player, MOVE_THROAT_CHOP); } + TURN { FORCED_MOVE(opponent); } + TURN { MOVE(opponent, MOVE_HYPER_VOICE); MOVE(player, MOVE_THROAT_CHOP); } + TURN { FORCED_MOVE(opponent); } + TURN { MOVE(opponent, MOVE_HYPER_VOICE); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_SUBSTITUTE, opponent); - HP_BAR(opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_HYPER_VOICE, opponent); ANIMATION(ANIM_TYPE_MOVE, MOVE_THROAT_CHOP, player); - NONE_OF { - MESSAGE("The effects of Throat Chop prevent the opposing Wobbuffet from using certain moves!"); - } + ANIMATION(ANIM_TYPE_MOVE, MOVE_STRUGGLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_HYPER_VOICE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_THROAT_CHOP, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_STRUGGLE, opponent); ANIMATION(ANIM_TYPE_MOVE, MOVE_HYPER_VOICE, opponent); } } diff --git a/test/battle/move_effects_combined/hurricane.c b/test/battle/move_effects_combined/hurricane.c index 02620f4d05..91a3435cf4 100644 --- a/test/battle/move_effects_combined/hurricane.c +++ b/test/battle/move_effects_combined/hurricane.c @@ -3,8 +3,9 @@ ASSUMPTIONS { - ASSUME(GetMoveEffect(MOVE_HURRICANE) == EFFECT_THUNDER); ASSUME(GetMoveAccuracy(MOVE_HURRICANE) == 70); + ASSUME(MoveAlwaysHitsInRain(MOVE_HURRICANE) == TRUE); + ASSUME(MoveHas50AccuracyInSun(MOVE_HURRICANE) == TRUE); } SINGLE_BATTLE_TEST("Hurricane's accuracy is lowered to 50% in Sunlight") diff --git a/test/battle/move_effect/thunder.c b/test/battle/move_flags/accuracy_50_in_sun.c similarity index 53% rename from test/battle/move_effect/thunder.c rename to test/battle/move_flags/accuracy_50_in_sun.c index 81ebd416ca..50a2911d31 100644 --- a/test/battle/move_effect/thunder.c +++ b/test/battle/move_flags/accuracy_50_in_sun.c @@ -3,8 +3,8 @@ ASSUMPTIONS { - ASSUME(GetMoveEffect(MOVE_THUNDER) == EFFECT_THUNDER); ASSUME(GetMoveAccuracy(MOVE_THUNDER) == 70); + ASSUME(MoveHas50AccuracyInSun(MOVE_HURRICANE) == TRUE); } SINGLE_BATTLE_TEST("Thunder's accuracy is lowered to 50% in Sunlight") @@ -19,16 +19,3 @@ SINGLE_BATTLE_TEST("Thunder's accuracy is lowered to 50% in Sunlight") ANIMATION(ANIM_TYPE_MOVE, MOVE_THUNDER, opponent); } } - -SINGLE_BATTLE_TEST("Thunder bypasses accuracy checks in Rain") -{ - PASSES_RANDOMLY(100, 100, RNG_ACCURACY); - GIVEN { - PLAYER(SPECIES_WOBBUFFET); - OPPONENT(SPECIES_WOBBUFFET); - } WHEN { - TURN { MOVE(opponent, MOVE_RAIN_DANCE); MOVE(player, MOVE_THUNDER); } - } SCENE { - NONE_OF { MESSAGE("Wobbuffet's attack missed!"); } - } -} diff --git a/test/battle/move_flags/always_hits_in_hail_snow.c b/test/battle/move_flags/always_hits_in_hail_snow.c new file mode 100644 index 0000000000..5673c0df8a --- /dev/null +++ b/test/battle/move_flags/always_hits_in_hail_snow.c @@ -0,0 +1,19 @@ +#include "global.h" +#include "test/battle.h" + +SINGLE_BATTLE_TEST("Blizzard bypasses accuracy checks in Hail and Snow") +{ + u32 move; + PARAMETRIZE { move = MOVE_HAIL; } + PARAMETRIZE { move = MOVE_SNOWSCAPE; } + GIVEN { + ASSUME(GetMoveAccuracy(MOVE_BLIZZARD) == 70); + ASSUME(MoveAlwaysHitsInHailSnow(MOVE_BLIZZARD)); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, move); MOVE(player, MOVE_BLIZZARD); } + } SCENE { + NOT MESSAGE("Wobbuffet's attack missed!"); + } +} diff --git a/test/battle/move_flags/always_hits_in_rain.c b/test/battle/move_flags/always_hits_in_rain.c new file mode 100644 index 0000000000..c4c5b5138b --- /dev/null +++ b/test/battle/move_flags/always_hits_in_rain.c @@ -0,0 +1,16 @@ +#include "global.h" +#include "test/battle.h" + +SINGLE_BATTLE_TEST("Thunder bypasses accuracy checks in Rain") +{ + PASSES_RANDOMLY(100, 100, RNG_ACCURACY); + GIVEN { + ASSUME(MoveAlwaysHitsInRain(MOVE_THUNDER) == TRUE); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_RAIN_DANCE); MOVE(player, MOVE_THUNDER); } + } SCENE { + NONE_OF { MESSAGE("Wobbuffet's attack missed!"); } + } +} diff --git a/test/battle/move_flags/recoil.c b/test/battle/move_flags/recoil.c index 8516fd1de3..42b8b1a76b 100644 --- a/test/battle/move_flags/recoil.c +++ b/test/battle/move_flags/recoil.c @@ -1,7 +1,7 @@ #include "global.h" #include "test/battle.h" -SINGLE_BATTLE_TEST("Take Down deals 25% of recoil damage to the user") +SINGLE_BATTLE_TEST("Recoil: Take Down deals 25% of recoil damage to the user") { s16 directDamage; s16 recoilDamage; @@ -21,7 +21,7 @@ SINGLE_BATTLE_TEST("Take Down deals 25% of recoil damage to the user") } } -SINGLE_BATTLE_TEST("Double Edge deals 33% of recoil damage to the user") +SINGLE_BATTLE_TEST("Recoil: Double Edge deals 33% of recoil damage to the user") { s16 directDamage; s16 recoilDamage; @@ -41,7 +41,7 @@ SINGLE_BATTLE_TEST("Double Edge deals 33% of recoil damage to the user") } } -SINGLE_BATTLE_TEST("Head Smash deals 50% of recoil damage to the user") +SINGLE_BATTLE_TEST("Recoil: Head Smash deals 50% of recoil damage to the user") { s16 directDamage; s16 recoilDamage; @@ -61,7 +61,7 @@ SINGLE_BATTLE_TEST("Head Smash deals 50% of recoil damage to the user") } } -SINGLE_BATTLE_TEST("Flare Blitz deals 33% of recoil damage to the user and can burn target") +SINGLE_BATTLE_TEST("Recoil: Flare Blitz deals 33% of recoil damage to the user and can burn target") { s16 directDamage; s16 recoilDamage; @@ -84,7 +84,7 @@ SINGLE_BATTLE_TEST("Flare Blitz deals 33% of recoil damage to the user and can b } } -SINGLE_BATTLE_TEST("Flare Blitz is absorbed by Flash Fire and no recoil damage is dealt") +SINGLE_BATTLE_TEST("Recoil: Flare Blitz is absorbed by Flash Fire and no recoil damage is dealt") { GIVEN { ASSUME(GetMoveRecoil(MOVE_FLARE_BLITZ) > 0); diff --git a/test/battle/sleep_clause.c b/test/battle/sleep_clause.c index b6c1224755..c2c74314e5 100644 --- a/test/battle/sleep_clause.c +++ b/test/battle/sleep_clause.c @@ -5,7 +5,8 @@ AI_SINGLE_BATTLE_TEST("Sleep Clause: AI will not use sleep moves while sleep cla { GIVEN { FLAG_SET(B_FLAG_SLEEP_CLAUSE); - ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP); + ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP); AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); PLAYER(SPECIES_WOBBUFFET); PLAYER(SPECIES_WOBBUFFET); @@ -21,7 +22,8 @@ AI_DOUBLE_BATTLE_TEST("Sleep Clause: AI will not use sleep moves while sleep cla { GIVEN { FLAG_SET(B_FLAG_SLEEP_CLAUSE); - ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP); + ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP); AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); PLAYER(SPECIES_WOBBUFFET); PLAYER(SPECIES_WOBBUFFET); @@ -39,7 +41,8 @@ AI_DOUBLE_BATTLE_TEST("Sleep Clause: AI will not use sleep move if partner is al { GIVEN { FLAG_SET(B_FLAG_SLEEP_CLAUSE); - ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP); + ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP); AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); PLAYER(SPECIES_WOBBUFFET); PLAYER(SPECIES_WOBBUFFET); @@ -55,7 +58,8 @@ SINGLE_BATTLE_TEST("Sleep Clause: Sleep moves fail when sleep clause is active") { GIVEN { FLAG_SET(B_FLAG_SLEEP_CLAUSE); - ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP); + ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); @@ -82,7 +86,8 @@ DOUBLE_BATTLE_TEST("Sleep Clause: Sleep moves fail when sleep clause is active ( { GIVEN { FLAG_SET(B_FLAG_SLEEP_CLAUSE); - ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP); + ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP); PLAYER(SPECIES_WOBBUFFET); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET) { HP(1); MaxHP(100); } @@ -108,7 +113,8 @@ SINGLE_BATTLE_TEST("Sleep Clause: Rest does not activate sleep clause") { GIVEN { FLAG_SET(B_FLAG_SLEEP_CLAUSE); - ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP); + ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP); ASSUME(GetMoveEffect(MOVE_REST) == EFFECT_REST); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); @@ -128,7 +134,8 @@ DOUBLE_BATTLE_TEST("Sleep Clause: Rest does not activate sleep clause (Doubles)" { GIVEN { FLAG_SET(B_FLAG_SLEEP_CLAUSE); - ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP); + ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP); ASSUME(GetMoveEffect(MOVE_REST) == EFFECT_REST); PLAYER(SPECIES_WOBBUFFET); PLAYER(SPECIES_WOBBUFFET); @@ -150,7 +157,8 @@ SINGLE_BATTLE_TEST("Sleep Clause: Rest can still be used when sleep clause is ac { GIVEN { FLAG_SET(B_FLAG_SLEEP_CLAUSE); - ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP); + ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP); ASSUME(GetMoveEffect(MOVE_REST) == EFFECT_REST); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); @@ -174,7 +182,8 @@ DOUBLE_BATTLE_TEST("Sleep Clause: Rest can still be used when sleep clause is ac { GIVEN { FLAG_SET(B_FLAG_SLEEP_CLAUSE); - ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP); + ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP); ASSUME(GetMoveEffect(MOVE_REST) == EFFECT_REST); PLAYER(SPECIES_WOBBUFFET); PLAYER(SPECIES_WOBBUFFET); @@ -196,7 +205,8 @@ SINGLE_BATTLE_TEST("Sleep Clause: Psycho Shift'ing sleep will fail if sleep clau { GIVEN { FLAG_SET(B_FLAG_SLEEP_CLAUSE); - ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP); + ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP); ASSUME(GetMoveEffect(MOVE_SLEEP_TALK) == EFFECT_SLEEP_TALK); ASSUME(GetMoveEffect(MOVE_PSYCHO_SHIFT) == EFFECT_PSYCHO_SHIFT); PLAYER(SPECIES_WOBBUFFET) @@ -222,7 +232,8 @@ SINGLE_BATTLE_TEST("Sleep Clause: Psycho Shift'ing sleep will activate sleep cla { GIVEN { FLAG_SET(B_FLAG_SLEEP_CLAUSE); - ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP); + ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP); ASSUME(GetMoveEffect(MOVE_SLEEP_TALK) == EFFECT_SLEEP_TALK); ASSUME(GetMoveEffect(MOVE_PSYCHO_SHIFT) == EFFECT_PSYCHO_SHIFT); PLAYER(SPECIES_ZIGZAGOON) @@ -298,7 +309,8 @@ SINGLE_BATTLE_TEST("Sleep Clause: Effect Spore causes sleep 11% of the time with FLAG_SET(B_FLAG_SLEEP_CLAUSE); ASSUME(B_ABILITY_TRIGGER_CHANCE >= GEN_5); ASSUME(MoveMakesContact(MOVE_SCRATCH)); - ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP); + ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP); PLAYER(SPECIES_WOBBUFFET); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_BRELOOM) { Ability(ABILITY_EFFECT_SPORE); } @@ -322,7 +334,8 @@ DOUBLE_BATTLE_TEST("Sleep Clause: Effect Spore causes sleep 11% of the time with FLAG_SET(B_FLAG_SLEEP_CLAUSE); ASSUME(B_ABILITY_TRIGGER_CHANCE >= GEN_5); ASSUME(MoveMakesContact(MOVE_SCRATCH)); - ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP); + ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP); PLAYER(SPECIES_WOBBUFFET); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_BRELOOM) { Ability(ABILITY_EFFECT_SPORE); } @@ -349,7 +362,8 @@ SINGLE_BATTLE_TEST("Sleep Clause: Sleep from Effect Spore will not activate slee FLAG_SET(B_FLAG_SLEEP_CLAUSE); ASSUME(B_ABILITY_TRIGGER_CHANCE >= GEN_5); ASSUME(MoveMakesContact(MOVE_SCRATCH)); - ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP); + ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP); PLAYER(SPECIES_WOBBUFFET); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_BRELOOM) { Ability(ABILITY_EFFECT_SPORE); } @@ -376,7 +390,8 @@ DOUBLE_BATTLE_TEST("Sleep Clause: Sleep from Effect Spore will not activate slee FLAG_SET(B_FLAG_SLEEP_CLAUSE); ASSUME(B_ABILITY_TRIGGER_CHANCE >= GEN_5); ASSUME(MoveMakesContact(MOVE_SCRATCH)); - ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP); + ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP); PLAYER(SPECIES_WOBBUFFET); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_BRELOOM) { Ability(ABILITY_EFFECT_SPORE); } @@ -401,7 +416,8 @@ SINGLE_BATTLE_TEST("Sleep Clause: Moves with sleep effect chance will activate s GIVEN { FLAG_SET(B_FLAG_SLEEP_CLAUSE); ASSUME(MoveHasAdditionalEffect(MOVE_RELIC_SONG, MOVE_EFFECT_SLEEP)); - ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP); + ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); @@ -429,7 +445,8 @@ SINGLE_BATTLE_TEST("Sleep Clause: Moves with sleep effect chance will still do d GIVEN { FLAG_SET(B_FLAG_SLEEP_CLAUSE); ASSUME(MoveHasAdditionalEffect(MOVE_RELIC_SONG, MOVE_EFFECT_SLEEP)); - ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP); + ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); @@ -456,7 +473,8 @@ SINGLE_BATTLE_TEST("Sleep Clause: Dire Claw cannot sleep a mon when sleep clause GIVEN { FLAG_SET(B_FLAG_SLEEP_CLAUSE); ASSUME(MoveHasAdditionalEffect(MOVE_DIRE_CLAW, MOVE_EFFECT_DIRE_CLAW)); - ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP); + ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); @@ -532,7 +550,8 @@ SINGLE_BATTLE_TEST("Sleep Clause: Sleep clause is deactivated when a sleeping mo { GIVEN { FLAG_SET(B_FLAG_SLEEP_CLAUSE); - ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP); + ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP); ASSUME(B_SLEEP_TURNS >= GEN_5); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); @@ -564,7 +583,8 @@ DOUBLE_BATTLE_TEST("Sleep Clause: Sleep clause is deactivated when a sleeping mo PARAMETRIZE { move = MOVE_SPARKLY_SWIRL; healingSlot = opponentLeft; sporedSlot = opponentRight; switchIndex = 1; } GIVEN { FLAG_SET(B_FLAG_SLEEP_CLAUSE); - ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP); + ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP); ASSUME(GetMoveEffect(MOVE_AROMATHERAPY) == EFFECT_HEAL_BELL); ASSUME(GetMoveEffect(MOVE_HEAL_BELL) == EFFECT_HEAL_BELL); ASSUME(MoveHasAdditionalEffect(MOVE_SPARKLY_SWIRL, MOVE_EFFECT_AROMATHERAPY)); @@ -622,7 +642,8 @@ DOUBLE_BATTLE_TEST("Sleep Clause: Sleep clause is deactivated when a sleeping mo { GIVEN { FLAG_SET(B_FLAG_SLEEP_CLAUSE); - ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP); + ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP); ASSUME(MoveHasAdditionalEffect(MOVE_WAKE_UP_SLAP, MOVE_EFFECT_REMOVE_STATUS)); PLAYER(SPECIES_ZIGZAGOON); PLAYER(SPECIES_ZIGZAGOON); @@ -664,7 +685,8 @@ DOUBLE_BATTLE_TEST("Sleep Clause: Sleep clause is deactivated when a sleeping mo { GIVEN { FLAG_SET(B_FLAG_SLEEP_CLAUSE); - ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP); + ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP); ASSUME(GetMoveEffect(MOVE_UPROAR) == EFFECT_UPROAR); PLAYER(SPECIES_ZIGZAGOON); PLAYER(SPECIES_ZIGZAGOON); @@ -705,7 +727,8 @@ SINGLE_BATTLE_TEST("Sleep Clause: Sleep clause is deactivated when a sleeping mo PARAMETRIZE { move = MOVE_AROMATHERAPY; } GIVEN { FLAG_SET(B_FLAG_SLEEP_CLAUSE); - ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP); + ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP); ASSUME(GetMoveEffect(MOVE_SLEEP_TALK) == EFFECT_SLEEP_TALK); ASSUME(GetMoveEffect(MOVE_PSYCHO_SHIFT) == EFFECT_PSYCHO_SHIFT); ASSUME(GetMoveEffect(MOVE_JUNGLE_HEALING) == EFFECT_JUNGLE_HEALING); @@ -761,7 +784,8 @@ SINGLE_BATTLE_TEST("Sleep Clause: Sleep clause is deactivated when a sleeping mo { GIVEN { FLAG_SET(B_FLAG_SLEEP_CLAUSE); - ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP); + ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP); PLAYER(SPECIES_PELIPPER) { Ability(ABILITY_DRIZZLE); } OPPONENT(SPECIES_LUVDISC) { Ability(ABILITY_HYDRATION); } } WHEN { @@ -785,7 +809,8 @@ SINGLE_BATTLE_TEST("Sleep Clause: Sleep clause is deactivated when a sleeping mo { GIVEN { FLAG_SET(B_FLAG_SLEEP_CLAUSE); - ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP); + ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP); PLAYER(SPECIES_ZIGZAGOON); OPPONENT(SPECIES_SWABLU) { Ability(ABILITY_NATURAL_CURE); } OPPONENT(SPECIES_ZIGZAGOON); @@ -815,7 +840,8 @@ SINGLE_BATTLE_TEST("Sleep Clause: Sleep clause is deactivated when a sleeping mo PASSES_RANDOMLY(33, 100, RNG_SHED_SKIN); GIVEN { FLAG_SET(B_FLAG_SLEEP_CLAUSE); - ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP); + ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP); PLAYER(SPECIES_ZIGZAGOON); OPPONENT(SPECIES_DRATINI) { Ability(ABILITY_SHED_SKIN); } } WHEN { @@ -839,7 +865,8 @@ DOUBLE_BATTLE_TEST("Sleep Clause: Sleep clause is deactivated when a sleeping mo PASSES_RANDOMLY(30, 100, RNG_HEALER); GIVEN { FLAG_SET(B_FLAG_SLEEP_CLAUSE); - ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP); + ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP); PLAYER(SPECIES_ZIGZAGOON); PLAYER(SPECIES_ZIGZAGOON); OPPONENT(SPECIES_ZIGZAGOON); @@ -867,7 +894,8 @@ SINGLE_BATTLE_TEST("Sleep Clause: Sleep clause is deactivated when a sleeping mo PARAMETRIZE { heldItem = ITEM_LUM_BERRY; } GIVEN { FLAG_SET(B_FLAG_SLEEP_CLAUSE); - ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP); + ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP); ASSUME(gItemsInfo[ITEM_CHESTO_BERRY].holdEffect == HOLD_EFFECT_CURE_SLP); ASSUME(gItemsInfo[ITEM_LUM_BERRY].holdEffect == HOLD_EFFECT_CURE_STATUS); PLAYER(SPECIES_ZIGZAGOON); @@ -898,7 +926,8 @@ DOUBLE_BATTLE_TEST("Sleep Clause: Sleep clause is deactivated when a sleeping mo PARAMETRIZE { heldItem = ITEM_LUM_BERRY; } GIVEN { FLAG_SET(B_FLAG_SLEEP_CLAUSE); - ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP); + ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP); ASSUME(GetMoveEffect(MOVE_FLING) == EFFECT_FLING); ASSUME(gItemsInfo[ITEM_CHESTO_BERRY].holdEffect == HOLD_EFFECT_CURE_SLP); ASSUME(gItemsInfo[ITEM_LUM_BERRY].holdEffect == HOLD_EFFECT_CURE_STATUS); @@ -931,7 +960,8 @@ SINGLE_BATTLE_TEST("Sleep Clause: Sleep clause is deactivated when a sleeping mo { GIVEN { FLAG_SET(B_FLAG_SLEEP_CLAUSE); - ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP); + ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP); ASSUME(gItemsInfo[ITEM_AWAKENING].battleUsage == EFFECT_ITEM_CURE_STATUS); PLAYER(SPECIES_ZIGZAGOON); OPPONENT(SPECIES_ZIGZAGOON); @@ -955,7 +985,8 @@ SINGLE_BATTLE_TEST("Sleep Clause: Sleep clause is deactivated when a sleeping mo { GIVEN { FLAG_SET(B_FLAG_SLEEP_CLAUSE); - ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP); + ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP); PLAYER(SPECIES_ZIGZAGOON); OPPONENT(SPECIES_ZIGZAGOON) { Level(5); } OPPONENT(SPECIES_ZIGZAGOON); @@ -980,7 +1011,8 @@ DOUBLE_BATTLE_TEST("Sleep Clause: Sleep clause is deactivated when a sleeping mo { GIVEN { FLAG_SET(B_FLAG_SLEEP_CLAUSE); - ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP); + ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP); PLAYER(SPECIES_ZIGZAGOON); PLAYER(SPECIES_ZIGZAGOON); OPPONENT(SPECIES_ZIGZAGOON) { Level(5); } @@ -1008,7 +1040,8 @@ SINGLE_BATTLE_TEST("Sleep Clause: Sleep clause is deactivated when a sleeping mo PARAMETRIZE { ability = ABILITY_INSOMNIA; } GIVEN { FLAG_SET(B_FLAG_SLEEP_CLAUSE); - ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP); + ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP); PLAYER(SPECIES_DELIBIRD) { Ability(ability); } OPPONENT(SPECIES_ZIGZAGOON) { Moves(MOVE_SLEEP_TALK, MOVE_SKILL_SWAP); } } WHEN { @@ -1044,7 +1077,8 @@ SINGLE_BATTLE_TEST("Sleep Clause: Sleep clause is deactivated when a sleeping mo PARAMETRIZE { ability = ABILITY_INSOMNIA; } GIVEN { FLAG_SET(B_FLAG_SLEEP_CLAUSE); - ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP); + ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP); PLAYER(SPECIES_ZIGZAGOON) PLAYER(SPECIES_DELIBIRD) { Ability(ability); } OPPONENT(SPECIES_RALTS) { Ability(ABILITY_TRACE); } @@ -1081,7 +1115,8 @@ SINGLE_BATTLE_TEST("Sleep Clause: Sleep clause is deactivated when a sleeping mo KNOWN_FAILING; // Sleep Clause parts work, but Imposter seems broken with battle messages / targeting. Issue #5565 https://github.com/rh-hideout/pokeemerald-expansion/issues/5565 GIVEN { FLAG_SET(B_FLAG_SLEEP_CLAUSE); - ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP); + ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP); ASSUME(gItemsInfo[ITEM_LAGGING_TAIL].holdEffect == HOLD_EFFECT_LAGGING_TAIL); PLAYER(SPECIES_ZIGZAGOON) PLAYER(SPECIES_DELIBIRD) { Ability(ability); } @@ -1116,7 +1151,8 @@ AI_SINGLE_BATTLE_TEST("Sleep Clause: AI will use sleep moves again when sleep cl { GIVEN { FLAG_SET(B_FLAG_SLEEP_CLAUSE); - ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP); + ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP); ASSUME(gItemsInfo[ITEM_CHESTO_BERRY].holdEffect == HOLD_EFFECT_CURE_SLP); AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_CHESTO_BERRY); } @@ -1132,7 +1168,8 @@ DOUBLE_BATTLE_TEST("Sleep Clause: Sleep clause is deactivated when a sleeping mo GIVEN { FLAG_SET(B_FLAG_SLEEP_CLAUSE); ASSUME(MoveHasAdditionalEffect(MOVE_G_MAX_SWEETNESS, MOVE_EFFECT_AROMATHERAPY)); - ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP); + ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP); PLAYER(SPECIES_APPLETUN) { GigantamaxFactor(TRUE); } PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); @@ -1158,7 +1195,8 @@ SINGLE_BATTLE_TEST("Sleep Clause: Pre-existing sleep condition doesn't activate { GIVEN { FLAG_SET(B_FLAG_SLEEP_CLAUSE); - ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP); + ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP); PLAYER(SPECIES_ZIGZAGOON); OPPONENT(SPECIES_ZIGZAGOON) { Status1(STATUS1_SLEEP); } OPPONENT(SPECIES_ZIGZAGOON); @@ -1178,7 +1216,8 @@ SINGLE_BATTLE_TEST("Sleep Clause: Sleep caused by Effect Spore does not prevent GIVEN { FLAG_SET(B_FLAG_SLEEP_CLAUSE); ASSUME(B_ABILITY_TRIGGER_CHANCE >= GEN_5); - ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP); + ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP); ASSUME(GetMoveEffect(MOVE_AROMATHERAPY) == EFFECT_HEAL_BELL); ASSUME(MoveMakesContact(MOVE_SCRATCH)); PLAYER(SPECIES_ZIGZAGOON); @@ -1214,7 +1253,8 @@ SINGLE_BATTLE_TEST("Sleep Clause: Waking up after Effect Spore doesn't deactivat GIVEN { FLAG_SET(B_FLAG_SLEEP_CLAUSE); ASSUME(B_ABILITY_TRIGGER_CHANCE >= GEN_5); - ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP); + ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP); ASSUME(MoveMakesContact(MOVE_SCRATCH)); PLAYER(SPECIES_ZIGZAGOON); PLAYER(SPECIES_ZIGZAGOON); @@ -1251,7 +1291,8 @@ DOUBLE_BATTLE_TEST("Sleep Clause: Waking up after Effect Spore doesn't deactivat GIVEN { FLAG_SET(B_FLAG_SLEEP_CLAUSE); ASSUME(B_ABILITY_TRIGGER_CHANCE >= GEN_5); - ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP); + ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP); ASSUME(GetMoveEffect(MOVE_AROMATHERAPY) == EFFECT_HEAL_BELL); ASSUME(MoveMakesContact(MOVE_SCRATCH)); PLAYER(SPECIES_ZIGZAGOON); @@ -1291,7 +1332,8 @@ SINGLE_BATTLE_TEST("Sleep Clause: Waking up after Rest doesn't deactivate sleep { GIVEN { FLAG_SET(B_FLAG_SLEEP_CLAUSE); - ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP); + ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP); ASSUME(GetMoveEffect(MOVE_REST) == EFFECT_REST); PLAYER(SPECIES_ZIGZAGOON) { HP(1); MaxHP(100); } PLAYER(SPECIES_ZIGZAGOON); @@ -1327,7 +1369,8 @@ DOUBLE_BATTLE_TEST("Sleep Clause: Waking up after Rest doesn't deactivate sleep { GIVEN { FLAG_SET(B_FLAG_SLEEP_CLAUSE); - ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP); + ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP); ASSUME(GetMoveEffect(MOVE_REST) == EFFECT_REST); PLAYER(SPECIES_ZIGZAGOON) { HP(1); MaxHP(100); } PLAYER(SPECIES_ZIGZAGOON); @@ -1365,7 +1408,8 @@ SINGLE_BATTLE_TEST("Sleep Clause: Suppressing and then sleeping Vital Spirit / I PARAMETRIZE { ability = ABILITY_INSOMNIA; } GIVEN { FLAG_SET(B_FLAG_SLEEP_CLAUSE); - ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP); + ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP); PLAYER(SPECIES_ZIGZAGOON); OPPONENT(SPECIES_DELIBIRD) { Ability(ability); } OPPONENT(SPECIES_ZIGZAGOON); @@ -1395,7 +1439,8 @@ SINGLE_BATTLE_TEST("Sleep Clause: Mold Breaker Pokémon sleeping Vital Spirit / PARAMETRIZE { ability = ABILITY_INSOMNIA; } GIVEN { FLAG_SET(B_FLAG_SLEEP_CLAUSE); - ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP); + ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP); PLAYER(SPECIES_PANCHAM) { Ability(ABILITY_MOLD_BREAKER); } OPPONENT(SPECIES_DELIBIRD) { Ability(ability); } OPPONENT(SPECIES_ZIGZAGOON); @@ -1422,7 +1467,8 @@ SINGLE_BATTLE_TEST("Sleep Clause: Yawn'd Pokémon slept due to Effect Spore befo PASSES_RANDOMLY(11, 100, RNG_EFFECT_SPORE); GIVEN { FLAG_SET(B_FLAG_SLEEP_CLAUSE); - ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP); + ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP); ASSUME(GetMoveEffect(MOVE_YAWN) == EFFECT_YAWN); ASSUME(MoveMakesContact(MOVE_SCRATCH)); PLAYER(SPECIES_BRELOOM) { Ability(ABILITY_EFFECT_SPORE); } @@ -1449,7 +1495,8 @@ DOUBLE_BATTLE_TEST("Sleep Clause: Yawn'd Pokémon who's partner is slept before { GIVEN { FLAG_SET(B_FLAG_SLEEP_CLAUSE); - ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP); + ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP); ASSUME(GetMoveEffect(MOVE_YAWN) == EFFECT_YAWN); PLAYER(SPECIES_ZIGZAGOON); PLAYER(SPECIES_ZIGZAGOON); @@ -1476,7 +1523,8 @@ DOUBLE_BATTLE_TEST("Sleep Clause: If both Pokémon on one side are Yawn'd at the { GIVEN { FLAG_SET(B_FLAG_SLEEP_CLAUSE); - ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP); + ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP); ASSUME(GetMoveEffect(MOVE_YAWN) == EFFECT_YAWN); PLAYER(SPECIES_ZIGZAGOON) { Speed(5); } PLAYER(SPECIES_ZIGZAGOON) { Speed(4); } @@ -1501,7 +1549,8 @@ SINGLE_BATTLE_TEST("Sleep Clause: Reflection moves (ie. Magic Coat) fail if slee { GIVEN { FLAG_SET(B_FLAG_SLEEP_CLAUSE); - ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP); + ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP); ASSUME(GetMoveEffect(MOVE_MAGIC_COAT) == EFFECT_MAGIC_COAT); PLAYER(SPECIES_ZIGZAGOON); PLAYER(SPECIES_ZIGZAGOON); @@ -1526,7 +1575,8 @@ SINGLE_BATTLE_TEST("Sleep Clause: Reflection moves (ie. Magic Coat) that reflect { GIVEN { FLAG_SET(B_FLAG_SLEEP_CLAUSE); - ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP); + ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP); ASSUME(GetMoveEffect(MOVE_MAGIC_COAT) == EFFECT_MAGIC_COAT); PLAYER(SPECIES_ZIGZAGOON); PLAYER(SPECIES_ZIGZAGOON); @@ -1581,7 +1631,8 @@ SINGLE_BATTLE_TEST("Sleep Clause: Magic Bounce'ing a sleep move activates sleep { GIVEN { FLAG_SET(B_FLAG_SLEEP_CLAUSE); - ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP); + ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP); PLAYER(SPECIES_ESPEON) { Ability(ABILITY_MAGIC_BOUNCE); } PLAYER(SPECIES_ZIGZAGOON); OPPONENT(SPECIES_ZIGZAGOON); @@ -1634,7 +1685,8 @@ DOUBLE_BATTLE_TEST("Sleep Clause: Sleep Clause does not prevent sleeping your pa { GIVEN { FLAG_SET(B_FLAG_SLEEP_CLAUSE); - ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP); + ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP); PLAYER(SPECIES_ZIGZAGOON); PLAYER(SPECIES_ZIGZAGOON); PLAYER(SPECIES_ZIGZAGOON); @@ -1720,7 +1772,8 @@ DOUBLE_BATTLE_TEST("Sleep Clause: Sleep moves used after being Encore'd are prev { GIVEN { FLAG_SET(B_FLAG_SLEEP_CLAUSE); - ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP); + ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP); PLAYER(SPECIES_ZIGZAGOON); PLAYER(SPECIES_ZIGZAGOON); PLAYER(SPECIES_ZIGZAGOON); @@ -1749,7 +1802,8 @@ DOUBLE_BATTLE_TEST("Sleep Clause: Spore'ing opponent after Yawn'ing partner does { GIVEN { FLAG_SET(B_FLAG_SLEEP_CLAUSE); - ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP); + ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP); ASSUME(GetMoveEffect(MOVE_YAWN) == EFFECT_YAWN); PLAYER(SPECIES_ZIGZAGOON); PLAYER(SPECIES_ZIGZAGOON); @@ -1786,7 +1840,8 @@ DOUBLE_BATTLE_TEST("Sleep Clause: Opponent Spore'ing player's partner after part { GIVEN { FLAG_SET(B_FLAG_SLEEP_CLAUSE); - ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP); + ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP); ASSUME(GetMoveEffect(MOVE_YAWN) == EFFECT_YAWN); PLAYER(SPECIES_ZIGZAGOON); PLAYER(SPECIES_ZIGZAGOON); diff --git a/test/battle/status1/burn.c b/test/battle/status1/burn.c index f6cebcac44..689338cce8 100644 --- a/test/battle/status1/burn.c +++ b/test/battle/status1/burn.c @@ -1,6 +1,12 @@ #include "global.h" #include "test/battle.h" +ASSUMPTIONS +{ + ASSUME(GetMoveEffect(MOVE_WILL_O_WISP) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_WILL_O_WISP) == MOVE_EFFECT_BURN); +} + SINGLE_BATTLE_TEST("Burn deals 1/16th (Gen7+) or 1/8th damage per turn") { u32 j; @@ -35,6 +41,37 @@ SINGLE_BATTLE_TEST("Burn reduces Attack by 50%", s16 damage) } } +SINGLE_BATTLE_TEST("Will-O-Wisp burns target") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_WILL_O_WISP); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_WILL_O_WISP, player); + MESSAGE("The opposing Wobbuffet was burned!"); + STATUS_ICON(opponent, burn: TRUE); + } +} + + +SINGLE_BATTLE_TEST("Will-O-Wisp can't burn a fire type") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_CHARMANDER); + } WHEN { + TURN { MOVE(player, MOVE_WILL_O_WISP); } + } SCENE { + NONE_OF { + ANIMATION(ANIM_TYPE_MOVE, MOVE_WILL_O_WISP, player); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_BRN, opponent); + STATUS_ICON(opponent, burn: TRUE); + } + } +} + AI_SINGLE_BATTLE_TEST("AI avoids Will-o-Wisp when it can not burn target") { u32 species, ability; diff --git a/test/battle/status1/poison.c b/test/battle/status1/poison.c index 12f6ffa95f..0a749ea96d 100644 --- a/test/battle/status1/poison.c +++ b/test/battle/status1/poison.c @@ -16,3 +16,27 @@ SINGLE_BATTLE_TEST("Poison deals 1/8th damage per turn") HP_BAR(player, damage: maxHP / 8); } } + +SINGLE_BATTLE_TEST("Poison can't bad poison a poison or steel type") +{ + u32 species; + + PARAMETRIZE { species = SPECIES_BELDUM; } + PARAMETRIZE { species = SPECIES_BULBASAUR; } + + GIVEN { + ASSUME(GetMoveEffect(MOVE_POISON_GAS) == EFFECT_NON_VOLATILE_STATUS); + ASSUME(GetMoveNonVolatileStatus(MOVE_POISON_GAS) == MOVE_EFFECT_POISON); + ASSUME(GetMoveNonVolatileStatus(MOVE_POISON_GAS) == MOVE_EFFECT_POISON); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(species); + } WHEN { + TURN { MOVE(player, MOVE_POISON_GAS); } + } SCENE { + NONE_OF { + ANIMATION(ANIM_TYPE_MOVE, MOVE_POISON_GAS, player); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PSN, opponent); + STATUS_ICON(opponent, poison: TRUE); + } + } +} diff --git a/test/battle/status1/sleep.c b/test/battle/status1/sleep.c index f42f4bd714..401c0d0bcd 100644 --- a/test/battle/status1/sleep.c +++ b/test/battle/status1/sleep.c @@ -22,6 +22,20 @@ SINGLE_BATTLE_TEST("Sleep prevents the battler from using a move") } } +SINGLE_BATTLE_TEST("Sleep: Spore doesn't affect grass types (Gen 6+)") +{ + GIVEN { + ASSUME(IsPowderMove(MOVE_SPORE)); + ASSUME(B_POWDER_GRASS >= GEN_6); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_CHIKORITA); + } WHEN { + TURN { MOVE(player, MOVE_SPORE); } + } SCENE { + NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_SPORE, player); + } +} + AI_SINGLE_BATTLE_TEST("AI avoids hypnosis when it can not put target to sleep") { u32 species, ability; diff --git a/test/battle/trainer_control.c b/test/battle/trainer_control.c index 89a5c905a9..b42c89196c 100644 --- a/test/battle/trainer_control.c +++ b/test/battle/trainer_control.c @@ -12,7 +12,7 @@ #include "constants/trainers.h" #include "constants/battle.h" -#define NUM_TEST_TRAINERS 9 +#define NUM_TEST_TRAINERS 11 static const struct Trainer sTestTrainers[DIFFICULTY_COUNT][NUM_TEST_TRAINERS] = { @@ -282,3 +282,12 @@ TEST("Trainer Party Pool can choose which functions to use for picking mons") EXPECT(GetMonData(&testParty[1], MON_DATA_SPECIES) == SPECIES_WOBBUFFET); Free(testParty); } + +TEST("trainerproc supports both Double Battle: Yes and Battle Type: Doubles") +{ + u32 currTrainer; + PARAMETRIZE { currTrainer = 9; } + PARAMETRIZE { currTrainer = 10; } + const struct Trainer trainer = sTestTrainers[GetTrainerDifficultyLevelTest(currTrainer)][currTrainer]; + EXPECT(trainer.battleType == TRAINER_BATTLE_TYPE_DOUBLES); +} diff --git a/test/battle/trainer_control.h b/test/battle/trainer_control.h index fb51e78f70..482e7a0a6e 100644 --- a/test/battle/trainer_control.h +++ b/test/battle/trainer_control.h @@ -21,7 +21,7 @@ #line 6 TRAINER_ENCOUNTER_MUSIC_MALE, #line 7 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, .partySize = 3, .party = (const struct TrainerMon[]) { @@ -101,7 +101,7 @@ #line 38 TRAINER_ENCOUNTER_MUSIC_MALE, #line 39 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, .partySize = 1, .party = (const struct TrainerMon[]) { @@ -132,7 +132,7 @@ #line 50 TRAINER_ENCOUNTER_MUSIC_MALE, #line 51 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, .partySize = 1, .party = (const struct TrainerMon[]) { @@ -163,7 +163,7 @@ #line 62 TRAINER_ENCOUNTER_MUSIC_MALE, #line 63 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, .partySize = 1, .party = (const struct TrainerMon[]) { @@ -194,7 +194,7 @@ #line 74 TRAINER_ENCOUNTER_MUSIC_MALE, #line 75 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, .partySize = 1, .party = (const struct TrainerMon[]) { @@ -224,7 +224,7 @@ #line 86 TRAINER_ENCOUNTER_MUSIC_MALE, #line 87 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 88 .partySize = 1, .poolSize = 4, @@ -289,7 +289,7 @@ #line 103 TRAINER_ENCOUNTER_MUSIC_MALE, #line 104 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 105 .partySize = 3, .poolSize = 6, @@ -384,7 +384,7 @@ #line 128 TRAINER_ENCOUNTER_MUSIC_MALE, #line 129 - .doubleBattle = TRUE, + .battleType = TRAINER_BATTLE_TYPE_DOUBLES, #line 131 .poolRuleIndex = POOL_RULESET_WEATHER_DOUBLES, #line 130 @@ -533,7 +533,7 @@ #line 166 TRAINER_ENCOUNTER_MUSIC_MALE, #line 167 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 169 .poolRuleIndex = POOL_RULESET_BASIC, #line 168 @@ -595,7 +595,7 @@ #line 185 TRAINER_ENCOUNTER_MUSIC_MALE, #line 186 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 188 .poolRuleIndex = POOL_RULESET_BASIC, #line 189 @@ -655,7 +655,7 @@ #line 203 TRAINER_ENCOUNTER_MUSIC_MALE, #line 204 - .doubleBattle = FALSE, + .battleType = TRAINER_BATTLE_TYPE_SINGLES, #line 206 .poolRuleIndex = POOL_RULESET_BASIC, #line 207 @@ -704,3 +704,89 @@ }, }, }, +#line 217 + [DIFFICULTY_NORMAL][9] = + { +#line 218 + .trainerName = _("Test9"), +#line 219 + .trainerClass = TRAINER_CLASS_PKMN_TRAINER_1, +#line 220 + .trainerPic = TRAINER_PIC_RED, + .encounterMusic_gender = +#line 222 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 223 + .battleType = TRAINER_BATTLE_TYPE_DOUBLES, +#line 224 + .partySize = 2, + .poolSize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 226 + .species = SPECIES_WYNAUT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 227 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 227 + .lvl = 100, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 228 + .species = SPECIES_WOBBUFFET, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 229 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 229 + .lvl = 100, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 230 + [DIFFICULTY_NORMAL][10] = + { +#line 231 + .trainerName = _("Test10"), +#line 232 + .trainerClass = TRAINER_CLASS_PKMN_TRAINER_1, +#line 233 + .trainerPic = TRAINER_PIC_RED, + .encounterMusic_gender = +#line 235 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 236 + .battleType = TRAINER_BATTLE_TYPE_DOUBLES, +#line 237 + .partySize = 2, + .poolSize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 239 + .species = SPECIES_WYNAUT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 240 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 240 + .lvl = 100, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 241 + .species = SPECIES_WOBBUFFET, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 242 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 242 + .lvl = 100, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, diff --git a/test/battle/trainer_control.party b/test/battle/trainer_control.party index b4ba68c6b1..dbb7ac88ab 100644 --- a/test/battle/trainer_control.party +++ b/test/battle/trainer_control.party @@ -4,7 +4,7 @@ Class: Pkmn Trainer 1 Pic: Red Gender: Male Music: Male -Double Battle: No +Battle Type: Singles Bubbles (Wobbuffet) (F) @ Assault Vest Hasty Nature @@ -36,7 +36,7 @@ Class: Pkmn Trainer 1 Pic: Red Gender: Male Music: Male -Double Battle: No +Battle Type: Singles Difficulty: Normal Mewtwo @@ -48,7 +48,7 @@ Class: Pkmn Trainer 1 Pic: Red Gender: Male Music: Male -Double Battle: No +Battle Type: Singles Difficulty: Normal Mewtwo @@ -60,7 +60,7 @@ Class: Pkmn Trainer 1 Pic: Red Gender: Male Music: Male -Double Battle: No +Battle Type: Singles Difficulty: Easy Metapod @@ -72,7 +72,7 @@ Class: Pkmn Trainer 1 Pic: Red Gender: Male Music: Male -Double Battle: No +Battle Type: Singles Difficulty: Hard Arceus @@ -84,7 +84,7 @@ Class: Pkmn Trainer 1 Pic: Red Gender: Male Music: Male -Double Battle: No +Battle Type: Singles Party Size: 1 Wynaut @@ -101,7 +101,7 @@ Class: Pkmn Trainer 1 Pic: Red Gender: Male Music: Male -Double Battle: No +Battle Type: Singles Party Size: 3 Wynaut @@ -126,7 +126,7 @@ Class: Pkmn Trainer 1 Pic: Red Gender: Male Music: Male -Double Battle: Yes +Battle Type: Doubles Party Size: 3 Pool Rules: Weather Doubles @@ -164,7 +164,7 @@ Class: Pkmn Trainer 1 Pic: Red Gender: Male Music: Male -Double Battle: No +Battle Type: Singles Party Size: 2 Pool Rules: Basic @@ -183,7 +183,7 @@ Class: Pkmn Trainer 1 Pic: Red Gender: Male Music: Male -Double Battle: No +Battle Type: Singles Party Size: 2 Pool Rules: Basic Pool Prune: Test @@ -201,7 +201,7 @@ Class: Pkmn Trainer 1 Pic: Red Gender: Male Music: Male -Double Battle: No +Battle Type: Singles Party Size: 2 Pool Rules: Basic Pool Pick Functions: Lowest @@ -213,3 +213,29 @@ Wobbuffet Eevee Tags: Lead + +=== 9 === +Name: Test9 +Class: Pkmn Trainer 1 +Pic: Red +Gender: Male +Music: Male +Double Battle: Yes +Party Size: 2 + +Wynaut + +Wobbuffet + +=== 10 === +Name: Test10 +Class: Pkmn Trainer 1 +Pic: Red +Gender: Male +Music: Male +Battle Type: Doubles +Party Size: 2 + +Wynaut + +Wobbuffet diff --git a/test/battle/weather/hail.c b/test/battle/weather/hail.c index 100692de20..df5a34469c 100644 --- a/test/battle/weather/hail.c +++ b/test/battle/weather/hail.c @@ -2,6 +2,14 @@ #include "test/battle.h" // Please add Hail interactions with move, item and ability effects on their respective files. +ASSUMPTIONS +{ + ASSUME(GetMoveEffect(MOVE_HAIL) == EFFECT_HAIL); + ASSUME(gSpeciesInfo[SPECIES_WOBBUFFET].types[0] != TYPE_ICE && gSpeciesInfo[SPECIES_WOBBUFFET].types[1] != TYPE_ICE); + ASSUME(gSpeciesInfo[SPECIES_WYNAUT].types[0] != TYPE_ICE && gSpeciesInfo[SPECIES_WYNAUT].types[1] != TYPE_ICE); + ASSUME(gSpeciesInfo[SPECIES_GLALIE].types[0] == TYPE_ICE || gSpeciesInfo[SPECIES_GLALIE].types[1] == TYPE_ICE); +} + SINGLE_BATTLE_TEST("Hail deals 1/16 damage per turn") { s16 hailDamage; diff --git a/test/species.c b/test/species.c index 2d702b6c45..06351f179e 100644 --- a/test/species.c +++ b/test/species.c @@ -98,10 +98,10 @@ TEST("Form change targets have the appropriate species flags") TEST("No species has two evolutions that use the evolution tracker") { - u32 i; + u32 i, j; u32 species = SPECIES_NONE; u32 evolutionTrackerEvolutions; - bool32 hasGenderBasedRecoil; + bool32 hasRecoilEvo; const struct Evolution *evolutions; for (i = 0; i < NUM_SPECIES; i++) @@ -110,24 +110,28 @@ TEST("No species has two evolutions that use the evolution tracker") } evolutionTrackerEvolutions = 0; - hasGenderBasedRecoil = FALSE; + hasRecoilEvo = FALSE; evolutions = GetSpeciesEvolutions(species); for (i = 0; evolutions[i].method != EVOLUTIONS_END; i++) { - if (evolutions[i].method == EVO_USE_MOVE_TWENTY_TIMES - || evolutions[i].method == EVO_DEFEAT_THREE_WITH_ITEM - ) - evolutionTrackerEvolutions++; - - if (evolutions[i].method == EVO_RECOIL_DAMAGE_MALE - || evolutions[i].method == EVO_RECOIL_DAMAGE_FEMALE) + if (evolutions[i].params == NULL) + continue; + for (j = 0; evolutions[i].params[j].condition != CONDITIONS_END; j++) { - // Special handling for these since they can be combined as the evolution tracker field is used for the same purpose - if (!hasGenderBasedRecoil) - { - hasGenderBasedRecoil = TRUE; + if (evolutions[i].params[j].condition == IF_USED_MOVE_X_TIMES + || evolutions[i].params[j].condition == IF_DEFEAT_X_WITH_ITEMS + ) evolutionTrackerEvolutions++; + + if (evolutions[i].params[j].condition == IF_RECOIL_DAMAGE_GE) + { + // Special handling for these since they can be combined as the evolution tracker field is used for the same purpose + if (!hasRecoilEvo) + { + hasRecoilEvo = TRUE; + evolutionTrackerEvolutions++; + } } } } diff --git a/test/test_runner_battle.c b/test/test_runner_battle.c index cba0d95e59..981683b35a 100644 --- a/test/test_runner_battle.c +++ b/test/test_runner_battle.c @@ -771,7 +771,7 @@ static u32 CountAiExpectMoves(struct ExpectedAIAction *expectedAction, u32 battl if ((1u << i) & expectedAction->moveSlots) { if (printLog) - PrintAiMoveLog(battlerId, i, gBattleMons[battlerId].moves[i], gBattleStruct->aiFinalScore[battlerId][expectedAction->target][i]); + PrintAiMoveLog(battlerId, i, gBattleMons[battlerId].moves[i], gAiBattleData->finalScore[battlerId][expectedAction->target][i]); countExpected++; } } @@ -830,7 +830,7 @@ void TestRunner_Battle_CheckChosenMove(u32 battlerId, u32 moveId, u32 target) if (!expectedAction->notMove && !movePasses) { u32 moveSlot = GetMoveSlot(gBattleMons[battlerId].moves, moveId); - PrintAiMoveLog(battlerId, moveSlot, moveId, gBattleStruct->aiFinalScore[battlerId][expectedAction->target][moveSlot]); + PrintAiMoveLog(battlerId, moveSlot, moveId, gAiBattleData->finalScore[battlerId][expectedAction->target][moveSlot]); if (countExpected > 1) Test_ExitWithResult(TEST_RESULT_FAIL, SourceLine(0), ":L%s:%d: Unmatched EXPECT_MOVES %S, got %S", filename, expectedAction->sourceLine, GetMoveName(expectedMoveId), GetMoveName(moveId)); else @@ -904,7 +904,7 @@ static const char *const sCmpToStringTable[] = static void CheckIfMaxScoreEqualExpectMove(u32 battlerId, s32 target, struct ExpectedAIAction *aiAction, const char *filename) { u32 i; - s32 *scores = gBattleStruct->aiFinalScore[battlerId][target]; + s32 *scores = gAiBattleData->finalScore[battlerId][target]; s32 bestScore = 0, bestScoreId = 0; u16 *moves = gBattleMons[battlerId].moves; for (i = 0; i < MAX_MON_MOVES; i++) @@ -1006,7 +1006,7 @@ void TestRunner_Battle_CheckAiMoveScores(u32 battlerId) { u32 moveId1 = gBattleMons[battlerId].moves[scoreCtx->moveSlot1]; s32 target = scoreCtx->target; - s32 *scores = gBattleStruct->aiFinalScore[battlerId][target]; + s32 *scores = gAiBattleData->finalScore[battlerId][target]; if (scoreCtx->toValue) { @@ -1485,7 +1485,7 @@ void RNGSeed_(u32 sourceLine, rng_value_t seed) DATA.recordedBattle.rngSeed = seed; } -void AIFlags_(u32 sourceLine, u32 flags) +void AIFlags_(u32 sourceLine, u64 flags) { INVALID_IF(!IsAITest(), "AI_FLAGS is usable only in AI_SINGLE_BATTLE_TEST & AI_DOUBLE_BATTLE_TEST"); DATA.recordedBattle.AI_scripts = flags; @@ -2116,7 +2116,7 @@ void MoveGetIdAndSlot(s32 battlerId, struct MoveContext *ctx, u32 *moveId, u32 * if (ctx->explicitGimmick && ctx->gimmick != GIMMICK_NONE) { u32 item = GetMonData(mon, MON_DATA_HELD_ITEM); - u32 holdEffect = GetItemHoldEffect(item); + enum ItemHoldEffect holdEffect = GetItemHoldEffect(item); u32 species = GetMonData(mon, MON_DATA_SPECIES); u32 side = battlerId & BIT_SIDE; diff --git a/test/text.c b/test/text.c index 981d03fdc0..e2eed3af93 100644 --- a/test/text.c +++ b/test/text.c @@ -67,7 +67,7 @@ TEST("Move names fit on Contest Screen") TEST("Move names fit on TMs & HMs Bag Screen") { u32 i; - const u32 fontId = FONT_NARROWER, widthPx = 61; + const u32 fontId = FONT_NARROWER, widthPx = 61; u32 move = MOVE_NONE; for (i = 1; i < MOVES_COUNT; i++) { @@ -561,10 +561,10 @@ extern u16 sBattlerAbilities[MAX_BATTLERS_COUNT]; TEST("Battle strings fit on the battle message window") { u32 i, j, strWidth; - u32 start = BATTLESTRINGS_TABLE_START; - u32 end = BATTLESTRINGS_COUNT - 1; + u32 start = STRINGID_TABLE_START + 1; + u32 end = STRINGID_COUNT - 1; const u32 fontId = FONT_NORMAL; - u32 battleStringId = 0; + enum StringID battleStringId = 0; u8 *battleString = Alloc(BATTLE_STRING_BUFFER_SIZE); s32 sixDigitNines = 999999; // 36 pixels. @@ -713,7 +713,6 @@ TEST("Battle strings fit on the battle message window") case STRINGID_TARGETABILITYSTATRAISE: case STRINGID_TARGETSSTATWASMAXEDOUT: case STRINGID_ATTACKERABILITYSTATRAISE: - case STRINGID_LASTABILITYRAISEDSTAT: case STRINGID_TARGETABILITYSTATLOWER: case STRINGID_SCRIPTINGABILITYSTATRAISE: case STRINGID_BATTLERABILITYRAISEDSTAT: diff --git a/tools/gbagfx/gfx.c b/tools/gbagfx/gfx.c index 1dfc38e2d0..c413e4b0f0 100644 --- a/tools/gbagfx/gfx.c +++ b/tools/gbagfx/gfx.c @@ -14,6 +14,7 @@ #define GET_GBA_PAL_BLUE(x) (((x) >> 10) & 0x1F) #define SET_GBA_PAL(r, g, b) (((b) << 10) | ((g) << 5) | (r)) +#define SET_GBA_PAL_RGBA(r, g, b, a) (((a) << 15) | ((b) << 10) | ((g) << 5) | (r)) #define UPCONVERT_BIT_DEPTH(x) (((x) * 255) / 31) @@ -578,8 +579,9 @@ void WriteGbaPalette(char *path, struct Palette *palette) unsigned char red = DOWNCONVERT_BIT_DEPTH(palette->colors[i].red); unsigned char green = DOWNCONVERT_BIT_DEPTH(palette->colors[i].green); unsigned char blue = DOWNCONVERT_BIT_DEPTH(palette->colors[i].blue); + bool alpha = palette->colors[i].alpha; - uint16_t paletteEntry = SET_GBA_PAL(red, green, blue); + uint16_t paletteEntry = SET_GBA_PAL_RGBA(red, green, blue, alpha); fputc(paletteEntry & 0xFF, fp); fputc(paletteEntry >> 8, fp); diff --git a/tools/gbagfx/gfx.h b/tools/gbagfx/gfx.h index 1797d84dfd..30bbfeb8df 100644 --- a/tools/gbagfx/gfx.h +++ b/tools/gbagfx/gfx.h @@ -10,6 +10,7 @@ struct Color { unsigned char red; unsigned char green; unsigned char blue; + bool alpha; }; struct Palette { diff --git a/tools/gbagfx/jasc_pal.c b/tools/gbagfx/jasc_pal.c index 8d4bb137d5..3ae7f8b905 100644 --- a/tools/gbagfx/jasc_pal.c +++ b/tools/gbagfx/jasc_pal.c @@ -22,7 +22,7 @@ // Blue - "0 0 255\r\n" // Brown - "150 75 0\r\n" -#define MAX_LINE_LENGTH 11 +#define MAX_LINE_LENGTH 64 void ReadJascPaletteLine(FILE *fp, char *line) { @@ -156,6 +156,42 @@ void ReadJascPalette(char *path, struct Palette *palette) FATAL_ERROR("Garbage after color data.\n"); fclose(fp); + + // Try to parse alpha/high bit info for colors from auxiliary .pla file + char *dot = strrchr(path, '.'); + if (strcmp(dot, ".pal") != 0) + return; + strcpy(dot, ".pla"); // replace .pal with .pla + fp = fopen(path, "rb"); + + if (fp == NULL) + return; + + int i = 0; + // Keep reading lines until number of colors is reached or we run out + while (i < palette->numColors && fgets(line, MAX_LINE_LENGTH, fp) != NULL) + { + if (line[0] == '#') // comment line; ignore + continue; + + char *s = line; + char *end; + int colorIndex; + + if (!ParseNumber(s, &end, 10, &colorIndex)) + FATAL_ERROR("Failed to parse aux color index.\n"); + + s = end; + + if (colorIndex >= palette->numColors) + FATAL_ERROR("Aux color index %d out of bounds.\n", colorIndex); + + palette->colors[colorIndex].alpha = 1; // set alpha color + // fprintf(stderr, "Color index: %d\n", colorIndex); + i++; + } + + fclose(fp); } void WriteJascPalette(char *path, struct Palette *palette) diff --git a/tools/gbagfx/main.c b/tools/gbagfx/main.c index 98a1a1edf9..bb1691c59a 100644 --- a/tools/gbagfx/main.c +++ b/tools/gbagfx/main.c @@ -291,7 +291,7 @@ void HandlePngToGbaCommand(char *inputPath, char *outputPath, int argc, char **a void HandlePngToJascPaletteCommand(char *inputPath, char *outputPath, int argc UNUSED, char **argv UNUSED) { - struct Palette palette = {}; + struct Palette palette = {0}; ReadPngPalette(inputPath, &palette); WriteJascPalette(outputPath, &palette); @@ -299,7 +299,7 @@ void HandlePngToJascPaletteCommand(char *inputPath, char *outputPath, int argc U void HandlePngToGbaPaletteCommand(char *inputPath, char *outputPath, int argc UNUSED, char **argv UNUSED) { - struct Palette palette = {}; + struct Palette palette = {0}; ReadPngPalette(inputPath, &palette); WriteGbaPalette(outputPath, &palette); @@ -307,7 +307,7 @@ void HandlePngToGbaPaletteCommand(char *inputPath, char *outputPath, int argc UN void HandleGbaToJascPaletteCommand(char *inputPath, char *outputPath, int argc UNUSED, char **argv UNUSED) { - struct Palette palette = {}; + struct Palette palette = {0}; ReadGbaPalette(inputPath, &palette); WriteJascPalette(outputPath, &palette); @@ -340,7 +340,7 @@ void HandleJascToGbaPaletteCommand(char *inputPath, char *outputPath, int argc, } } - struct Palette palette = {}; + struct Palette palette = {0}; ReadJascPalette(inputPath, &palette); diff --git a/tools/learnset_helpers/make_learnables.py b/tools/learnset_helpers/make_learnables.py new file mode 100755 index 0000000000..347e189347 --- /dev/null +++ b/tools/learnset_helpers/make_learnables.py @@ -0,0 +1,62 @@ +#!/usr/bin/env python3 + +""" +Usage: python3 make_learnables.py INPUTS_DIR OUTPUT_FILE + +Build a primary store of learnable moves for each species based on input documents. This script +is meant to be run to generate a pre-processed store of data that should not change very much; +thus, it can safely be pre-computed in order to speed up incremental builds for end-users. +""" + +from functools import reduce + +import json +import pathlib +import sys + + +def from_single(fname: pathlib.Path) -> dict[str, set[str]]: + with open(fname, "r") as fp: + return { + species: set([level_up["Move"] for level_up in by_method["LevelMoves"]]) + | set([move for move in by_method["TMMoves"]]) + | set([move for move in by_method["EggMoves"]]) + | set([move for move in by_method["TutorMoves"]]) + for species, by_method in json.load(fp).items() + } + + +def from_batch(dir: pathlib.Path) -> dict[str, set[str]]: + return reduce( + lambda acc, single: { + species: acc.get(species, set()) | single.get(species, set()) + for species in acc.keys() | single.keys() + }, + map(from_single, dir.glob("*.json")), + {}, + ) + + +def main(): + if len(sys.argv) < 3: + print("Missing required arguments", file=sys.stderr) + print(__doc__, file=sys.stderr) + quit(1) + + INPUTS_DIR = pathlib.Path(sys.argv[1]) + OUTPUT_FILE = pathlib.Path(sys.argv[2]) + + assert INPUTS_DIR.exists(), f"{INPUTS_DIR=} does not exist" + assert INPUTS_DIR.is_dir(), f"{INPUTS_DIR=} is not a directory" + assert OUTPUT_FILE.parent.exists(), f"parent of {OUTPUT_FILE=} does not exist" + + batch = { + species: list(sorted(learnables)) + for species, learnables in from_batch(INPUTS_DIR).items() + } + with open(OUTPUT_FILE, "w") as fp: + json.dump(batch, fp, indent=2) + + +if __name__ == "__main__": + main() diff --git a/tools/learnset_helpers/make_teachables.py b/tools/learnset_helpers/make_teachables.py new file mode 100644 index 0000000000..6f3b186b68 --- /dev/null +++ b/tools/learnset_helpers/make_teachables.py @@ -0,0 +1,233 @@ +#!/usr/bin/env python3 + +""" +Usage: python3 make_teachable.py SOURCE_LEARNSETS_JSON + +Build a C-header defining the set of teachable moves for each configured-on +species-family based on the learnable moves defined in SOURCE_LEARNSETS_JSON. + +A move is "teachable" if it is: + 1. Can be taught by some Move Tutor in the overworld, which is identified by + using the ChooseMonForMoveTutor special in a script and setting VAR_0x8005 + to the offered MOVE constant. (e.g., MOVE_SWAGGER) + 2. Assigned to some TM or HM in include/constants/tms_hms.h using the + FOREACH_TM macro. + 3. Not a universal move, as defined by sUniversalMoves in src/pokemon.c. + +For a given species, a move is considered teachable to that species if: + 1. The species is not NONE -- which learns nothing -- nor MEW -- which + learns everything. + 2. The species can learn the move via *any* method within any Expansion- + supported game. +""" + +from itertools import chain +from textwrap import dedent + +import glob +import json +import pathlib +import re +import sys +import typing + + +CONFIG_ENABLED_PAT = re.compile(r"#define P_LEARNSET_HELPER_TEACHABLE\s+(?P[^ ]*)") +INCFILE_HAS_TUTOR_PAT = re.compile(r"special ChooseMonForMoveTutor") +INCFILE_MOVE_PAT = re.compile(r"setvar VAR_0x8005, (MOVE_.*)") +TMHM_MACRO_PAT = re.compile(r"F\((\w+)\)") +UNIVERSAL_MOVES_PAT = re.compile(r"static const u16 sUniversalMoves\[\]\s*=\s*{((.|\n)*?)\n};") +TEACHABLE_ARRAY_DECL_PAT = re.compile(r"(?Pstatic const u16 s(?P\w+)TeachableLearnset\[\]) = {[\s\S]*?};") +SNAKIFY_PAT = re.compile(r"(?!^)([A-Z]+)") +TUTOR_ARRAY_ENABLED_PAT = re.compile(r"#define\s+P_TUTOR_MOVES_ARRAY\s+(?P[^ ]*)") + + +def enabled() -> bool: + """ + Check if the user has explicitly enabled this opt-in helper. + """ + with open("./include/config/pokemon.h", "r") as cfg_pokemon_fp: + cfg_pokemon = cfg_pokemon_fp.read() + cfg_defined = CONFIG_ENABLED_PAT.search(cfg_pokemon) + return cfg_defined is not None and cfg_defined.group("cfg_val") in ("TRUE", "1") + + +def extract_repo_tutors() -> typing.Generator[str, None, None]: + """ + Yield MOVE constants which are *likely* assigned to a move tutor. This isn't + foolproof, but it's suitable. + """ + for inc_fname in chain(glob.glob("./data/scripts/*.inc"), glob.glob("./data/maps/*/scripts.inc")): + with open(inc_fname, "r") as inc_fp: + incfile = inc_fp.read() + if not INCFILE_HAS_TUTOR_PAT.search(incfile): + continue + + for move in INCFILE_MOVE_PAT.finditer(incfile): + yield move.group(1) + + +def extract_repo_tms() -> typing.Generator[str, None, None]: + """ + Yield MOVE constants assigned to a TM or HM in the user's repo. + """ + with open("./include/constants/tms_hms.h", "r") as tmshms_fp: + tmshms = tmshms_fp.read() + match_it = TMHM_MACRO_PAT.finditer(tmshms) + if not match_it: + return + + for match in match_it: + yield f"MOVE_{match.group(1)}" + + +def extract_repo_universals() -> list[str]: + """ + Return a list of MOVE constants which are deemed to be universal and can + thus be learned by any species. + """ + with open("./src/pokemon.c", "r") as pokemon_fp: + if match := UNIVERSAL_MOVES_PAT.search(pokemon_fp.read()): + return list(filter(lambda s: s, map(lambda s: s.strip(), match.group(1).split(',')))) + return list() + + +def prepare_output(all_learnables: dict[str, set[str]], repo_teachables: set[str], header: str) -> str: + """ + Build the file content for teachable_learnsets.h. + """ + with open("./src/data/pokemon/teachable_learnsets.h", "r") as teachables_fp: + old = teachables_fp.read() + + cursor = 0 + new = header + dedent(""" + static const u16 sNoneTeachableLearnset[] = { + MOVE_UNAVAILABLE, + }; + """) + + joinpat = ",\n " + for species in TEACHABLE_ARRAY_DECL_PAT.finditer(old): + match_b, match_e = species.span() + species_upper = SNAKIFY_PAT.sub(r"_\1", species.group("name")).upper() + if species_upper == "NONE": + # NONE is hard-coded to be at the start of the file to keep this code simple. + cursor = match_e + 1 + continue + + if species_upper == "MEW": + new += old[cursor:match_e + 1] # copy the original content and skip. + cursor = match_e + 1 + continue + + repo_species_teachables = filter(lambda m: m in repo_teachables, all_learnables[species_upper]) + + new += old[cursor:match_b] + new += "\n".join([ + f"{species.group('decl')} = {{", + f" {joinpat.join(chain(repo_species_teachables, ('MOVE_UNAVAILABLE',)))},", + "};\n", + ]) + cursor = match_e + 1 + + new += old[cursor:] + + return new + + +def create_tutor_moves_array(tutors: list[str]) -> None: + """ + Generate gTutorMoves[] if P_TUTOR_MOVES_ARRAY is enabled. + """ + # Check if the config is enabled + with open("./include/config/pokemon.h", "r") as cfg_pokemon_fp: + cfg_pokemon = cfg_pokemon_fp.read() + cfg_defined = TUTOR_ARRAY_ENABLED_PAT.search(cfg_pokemon) + if not (cfg_defined and cfg_defined.group("cfg_val") in ("TRUE", "1")): + return + + # If enabled, generate the tutor moves array + header = dedent("""\ + // DO NOT MODIFY THIS FILE! It is auto-generated by tools/learnset_helpers/make_teachables.py + // Set the config P_TUTOR_MOVES_ARRAY in include/config/pokemon.h to TRUE to enable this array! + + const u16 gTutorMoves[] = { + """) + + lines = [f" {move}," for move in sorted(tutors)] + lines.append(" MOVE_UNAVAILABLE\n};\n") + + with open("./src/data/tutor_moves.h", "w") as f: + f.write(header + "\n".join(lines)) + + +def prepare_header(h_align: int, tmshms: list[str], tutors: list[str], universals: list[str]) -> str: + universals_title = "Near-universal moves found from sUniversalMoves:" + tmhm_title = "TM/HM moves found in \"include/constants/tms_hms.h\":" + tutor_title = "Tutor moves found from map scripts:" + h_align = max(h_align, len(universals_title), len(tmhm_title), len(tutor_title)) + + lines = [ + "//", + "// DO NOT MODIFY THIS FILE! It is auto-generated by tools/learnset_helpers/make_teachables.py", + "//", + "", + f"// {'*' * h_align} //", + f"// {tmhm_title: >{h_align}} //", + ] + lines.extend([f"// - {move: <{h_align - 2}} //" for move in tmshms]) + lines.extend([ + f"// {'*' * h_align} //", + f"// {tutor_title: <{h_align}} //", + ]) + lines.extend([f"// - {move: <{h_align - 2}} //" for move in sorted(tutors)]) + lines.extend([ + f"// {'*' * h_align} //", + f"// {universals_title: <{h_align}} //", + ]) + lines.extend([f"// - {move: <{h_align - 2}} //" for move in universals]) + lines.extend([ + f"// {'*' * h_align} //", + "", + ]) + + return "\n".join(lines) + + +def main(): + if not enabled(): + quit() + + if len(sys.argv) < 2: + print("Missing required arguments", file=sys.stderr) + print(__doc__, file=sys.stderr) + quit(1) + + SOURCE_LEARNSETS_JSON = pathlib.Path(sys.argv[1]) + + assert SOURCE_LEARNSETS_JSON.exists(), f"{SOURCE_LEARNSETS_JSON=} does not exist" + assert SOURCE_LEARNSETS_JSON.is_file(), f"{SOURCE_LEARNSETS_JSON=} is not a file" + + repo_universals = extract_repo_universals() + repo_tms = list(extract_repo_tms()) + repo_tutors = list(extract_repo_tutors()) + repo_teachables = set(filter( + lambda move: move not in set(repo_universals), + chain(repo_tms, repo_tutors) + )) + + create_tutor_moves_array(repo_tutors) + + h_align = max(map(lambda move: len(move), chain(repo_universals, repo_teachables))) + 2 + header = prepare_header(h_align, repo_tms, repo_tutors, repo_universals) + + with open(SOURCE_LEARNSETS_JSON, "r") as source_fp: + all_learnables = json.load(source_fp) + + content = prepare_output(all_learnables, repo_teachables, header) + with open("./src/data/pokemon/teachable_learnsets.h", "w") as teachables_fp: + teachables_fp.write(content) + + +if __name__ == "__main__": + main() diff --git a/tools/learnset_helpers/teachable.py b/tools/learnset_helpers/teachable.py deleted file mode 100644 index eb109e7a46..0000000000 --- a/tools/learnset_helpers/teachable.py +++ /dev/null @@ -1,214 +0,0 @@ -import glob -import re -import json -import os - -# before all else, abort if the config is off -with open("./include/config/pokemon.h", "r") as file: - learnset_config = re.findall(r"#define P_LEARNSET_HELPER_TEACHABLE *([^ ]*)", file.read()) - if len(learnset_config) != 1: - quit() - if learnset_config[0] != "TRUE": - quit() - -def parse_mon_name(name): - return re.sub(r'(?!^)([A-Z]+)', r'_\1', name).upper() - -tm_moves = [] -tutor_moves = [] - -# scan incs -incs_to_check = glob.glob('./data/scripts/*.inc') # all .incs in the script folder -incs_to_check += glob.glob('./data/maps/*/scripts.inc') # all map scripts - -if len(incs_to_check) == 0: # disabled if no jsons present - quit() - -for file in incs_to_check: - with open(file, 'r') as f2: - raw = f2.read() - if 'special ChooseMonForMoveTutor' in raw: - for x in re.findall(r'setvar VAR_0x8005, (MOVE_.*)', raw): - if not x in tutor_moves: - tutor_moves.append(x) - -# scan TMs and HMs -with open("./include/constants/tms_hms.h", 'r') as file: - for x in re.findall(r'F\((.*)\)', file.read()): - if not 'MOVE_' + x in tm_moves: - tm_moves.append('MOVE_' + x) - -# look up universal moves to exclude them -universal_moves = [] -with open("./src/pokemon.c", "r") as file: - for x in re.findall(r"static const u16 sUniversalMoves\[\] =(.|\n)*?{((.|\n)*?)};", file.read())[0]: - x = x.replace("\n", "") - for y in x.split(","): - y = y.strip() - if y == "": - continue - universal_moves.append(y) - -# get compatibility from jsons -def construct_compatibility_dict(force_custom_check): - dict_out = {} - for pth in glob.glob('./tools/learnset_helpers/porymoves_files/*.json'): - f = open(pth, 'r') - data = json.load(f) - for mon in data.keys(): - if not mon in dict_out: - dict_out[mon] = [] - for move in data[mon]['LevelMoves']: - if not move['Move'] in dict_out[mon]: - dict_out[mon].append(move['Move']) - #for move in data[mon]['PreEvoMoves']: - # if not move in dict_out[mon]: - # dict_out[mon].append(move) - for move in data[mon]['TMMoves']: - if not move in dict_out[mon]: - dict_out[mon].append(move) - for move in data[mon]['EggMoves']: - if not move in dict_out[mon]: - dict_out[mon].append(move) - for move in data[mon]['TutorMoves']: - if not move in dict_out[mon]: - dict_out[mon].append(move) - - # if the file was not previously generated, check if there is custom data there that needs to be preserved - with open("./src/data/pokemon/teachable_learnsets.h", 'r') as file: - raw = file.read() - if not "// DO NOT MODIFY THIS FILE!" in raw and force_custom_check == True: - custom_teachable_compatibilities = {} - for entry in re.findall(r"static const u16 s(.*)TeachableLearnset\[\] = {\n((.|\n)*?)\n};", raw): - monname = parse_mon_name(entry[0]) - if monname == "NONE": - continue - compatibility = entry[1].split("\n") - if not monname in custom_teachable_compatibilities: - custom_teachable_compatibilities[monname] = [] - if not monname in dict_out: - # this mon is unknown, so all data needs to be preserved - for move in compatibility: - move = move.replace(",", "").strip() - if move == "" or move == "MOVE_UNAVAILABLE": - continue - custom_teachable_compatibilities[monname].append(move) - else: - # this mon is known, so check if the moves in the old teachable_learnsets.h are not in the jsons - for move in compatibility: - move = move.replace(",", "").strip() - if move == "" or move == "MOVE_UNAVAILABLE": - continue - if not move in dict_out[monname]: - custom_teachable_compatibilities[monname].append(move) - # actually store the data in custom.json - if os.path.exists("./tools/learnset_helpers/porymoves_files/custom.json"): - f2 = open("./tools/learnset_helpers/porymoves_files/custom.json", "r") - custom_json = json.load(f2) - f2.close() - else: - custom_json = {} - for x in custom_teachable_compatibilities: - if len(custom_teachable_compatibilities[x]) == 0: - continue - if not x in custom_json: - custom_json[x] = {"LevelMoves": [], "PreEvoMoves": [], "TMMoves": [], "EggMoves": [], "TutorMoves": []} - for move in custom_teachable_compatibilities[x]: - custom_json[x]["TutorMoves"].append(move) - f2 = open("./tools/learnset_helpers/porymoves_files/custom.json", "w") - f2.write(json.dumps(custom_json, indent=2)) - f2.close() - print("FIRST RUN: Updated custom.json with teachable_learnsets.h's data") - # rerun the process - dict_out = construct_compatibility_dict(False) - return dict_out - -compatibility_dict = construct_compatibility_dict(True) - -# actually prepare the file -with open("./src/data/pokemon/teachable_learnsets.h", 'r') as file: - out = file.read() - list_of_mons = re.findall(r'static const u16 s(.*)TeachableLearnset', out) -for mon in list_of_mons: - mon_parsed = parse_mon_name(mon) - tm_learnset = [] - tutor_learnset = [] - if mon_parsed == "NONE" or mon_parsed == "MEW": - continue - if not mon_parsed in compatibility_dict: - print("Unable to find %s in json" % mon) - continue - for move in tm_moves: - if move in universal_moves: - continue - if move in tm_learnset: - continue - if move in compatibility_dict[mon_parsed]: - tm_learnset.append(move) - continue - for move in tutor_moves: - if move in universal_moves: - continue - if move in tutor_learnset: - continue - if move in compatibility_dict[mon_parsed]: - tutor_learnset.append(move) - continue - tm_learnset.sort() - tutor_learnset.sort() - tm_learnset += tutor_learnset - repl = "static const u16 s%sTeachableLearnset[] = {\n " % mon - if len(tm_learnset) > 0: - repl += ",\n ".join(tm_learnset) + ",\n " - repl += "MOVE_UNAVAILABLE,\n};" - newout = re.sub(r'static const u16 s%sTeachableLearnset\[\] = {[\s\S]*?};' % mon, repl, out) - if newout != out: - out = newout - print("Updated %s" % mon) - -# add/update header -header = "//\n// DO NOT MODIFY THIS FILE! It is auto-generated from tools/learnset_helpers/teachable.py\n//\n\n" -longest_move_name = 0 -for move in tm_moves + tutor_moves: - if len(move) > longest_move_name: - longest_move_name = len(move) -longest_move_name += 2 # + 2 for a hyphen and a space - -universal_title = "Near-universal moves found in sUniversalMoves:" -tmhm_title = "TM/HM moves found in \"include/constants/tms_hms.h\":" -tutor_title = "Tutor moves found in map scripts:" - -if longest_move_name < len(universal_title): - longest_move_name = len(universal_title) -if longest_move_name < len(tmhm_title): - longest_move_name = len(tmhm_title) -if longest_move_name < len(tutor_title): - longest_move_name = len(tutor_title) - -def header_print(str): - global header - header += "// " + str + " " * (longest_move_name - len(str)) + " //\n" - -header += "// " + longest_move_name * "*" + " //\n" -header_print(tmhm_title) -for move in tm_moves: - header_print("- " + move) -header += "// " + longest_move_name * "*" + " //\n" -header_print(tutor_title) -tutor_moves.sort() # alphabetically sort tutor moves for easier referencing -for move in tutor_moves: - header_print("- " + move) -header += "// " + longest_move_name * "*" + " //\n" -header_print(universal_title) -universal_moves.sort() # alphabetically sort near-universal moves for easier referencing -for move in universal_moves: - header_print("- " + move) -header += "// " + longest_move_name * "*" + " //\n\n" - -if not "// DO NOT MODIFY THIS FILE!" in out: - out = header + out -else: - out = re.sub(r"\/\/\n\/\/ DO NOT MODIFY THIS FILE!(.|\n)*\* \/\/\n\n", header, out) - -with open("./src/data/pokemon/teachable_learnsets.h", 'w') as file: - file.write(out) diff --git a/tools/mid2agb/Makefile b/tools/mid2agb/Makefile index 553b7859ed..7c1612dbb6 100644 --- a/tools/mid2agb/Makefile +++ b/tools/mid2agb/Makefile @@ -6,6 +6,9 @@ SRCS := agb.cpp error.cpp main.cpp midi.cpp tables.cpp HEADERS := agb.h error.h main.h midi.h tables.h +# Needs to recompile for B_NUM_LOW_HEALTH_BEEPS in battle.h +EXPANSION_BATTLE_CONFIG := ../../include/config/battle.h + ifeq ($(OS),Windows_NT) EXE := .exe else @@ -17,7 +20,7 @@ endif all: mid2agb$(EXE) @: -mid2agb$(EXE): $(SRCS) $(HEADERS) +mid2agb$(EXE): $(SRCS) $(HEADERS) $(EXPANSION_BATTLE_CONFIG) $(CXX) $(CXXFLAGS) $(SRCS) -o $@ $(LDFLAGS) clean: diff --git a/tools/mid2agb/agb.cpp b/tools/mid2agb/agb.cpp index caa6f0ecd9..3bc4f601ac 100644 --- a/tools/mid2agb/agb.cpp +++ b/tools/mid2agb/agb.cpp @@ -525,6 +525,117 @@ void PrintAgbTrack(std::vector& events) PrintByte("FINE"); } +void PrintAgbTrackLoop(std::vector& events, int trackLoops) +{ + std::fprintf(g_outputFile, "\n@**************** Track %u (Midi-Chn.%u) ****************@\n\n", g_agbTrack, g_midiChan + 1); + std::fprintf(g_outputFile, "%s_%u:\n", g_asmLabel.c_str(), g_agbTrack); + int wholeNoteCount = 0; + + ResetTrackVars(); + + bool foundVolBeforeNote = false; + + for (const Event& event : events) + { + if (event.type == EventType::Note) + break; + + if (event.type == EventType::Controller && event.param1 == 0x07) + { + foundVolBeforeNote = true; + break; + } + } + + if (!foundVolBeforeNote) + PrintByte("\tVOL , 127*%s_mvl/mxv", g_asmLabel.c_str()); + + PrintWait(g_initialWait); + if (trackLoops > 0) + PrintByte("KEYSH , %s_key%+d", g_asmLabel.c_str(), 0); + + for (int k = 0; k < trackLoops; k++) + { + for (unsigned i = 0; events[i].type != EventType::EndOfTrack; i++) + { + const Event& event = events[i]; + + if (IsPatternBoundary(event.type)) + { + if (s_inPattern) + PrintByte("PEND"); + s_inPattern = false; + } + + // added `&& (i % 2 == 0)` to cut down on excess comments created in the .s file + if ((event.type == EventType::WholeNoteMark || event.type == EventType::Pattern) && (i % 2 == 0)) + std::fprintf(g_outputFile, "@ %03d ----------------------------------------\n", wholeNoteCount++); + + switch (event.type) + { + case EventType::Note: + PrintNote(event); + break; + case EventType::EndOfTie: + PrintEndOfTieOp(event); + break; + case EventType::Label: + if (k == 0) + PrintSeqLoopLabel(event); + break; + case EventType::LoopEnd: + case EventType::LoopEndBegin: + break; + case EventType::LoopBegin: + if (k == 0) + PrintSeqLoopLabel(event); + break; + case EventType::WholeNoteMark: + if (event.param2 & 0x80000000) + { + std::fprintf(g_outputFile, "%s_%u_%03lu:\n", g_asmLabel.c_str(), g_agbTrack, (unsigned long)(event.param2 & 0x7FFFFFFF)); + ResetTrackVars(); + s_inPattern = true; + } + PrintWait(event.time); + break; + case EventType::Pattern: + PrintByte("PATT"); + PrintWord("%s_%u_%03lu", g_asmLabel.c_str(), g_agbTrack, event.param2); + + while (!IsPatternBoundary(events[i + 1].type)) + i++; + + ResetTrackVars(); + break; + case EventType::Tempo: + if (k == 0) + { + PrintByte("TEMPO , %u*%s_tbs/2", static_cast(round(60000000.0f / static_cast(event.param2))), g_asmLabel.c_str()); + PrintWait(event.time); + } + break; + case EventType::InstrumentChange: + if (k == 0) + PrintOp(event.time, "VOICE ", "%u", event.param1); + break; + case EventType::PitchBend: + PrintOp(event.time, "BEND ", "c_v%+d", event.param2 - 64); + break; + case EventType::Controller: + if (k == 0) + PrintControllerOp(event); + break; + default: + PrintWait(event.time); + break; + } + } + } + + PrintByte("FINE"); +} + void PrintAgbFooter() { int trackCount = g_agbTrack - 1; diff --git a/tools/mid2agb/agb.h b/tools/mid2agb/agb.h index 7eab3c1433..d096b1bc27 100644 --- a/tools/mid2agb/agb.h +++ b/tools/mid2agb/agb.h @@ -26,6 +26,7 @@ void PrintAgbHeader(); void PrintAgbTrack(std::vector& events); +void PrintAgbTrackLoop(std::vector& events, int trackLoops); void PrintAgbFooter(); extern int g_agbTrack; diff --git a/tools/mid2agb/midi.cpp b/tools/mid2agb/midi.cpp index fa7d9ce285..e2e7741cb3 100644 --- a/tools/mid2agb/midi.cpp +++ b/tools/mid2agb/midi.cpp @@ -21,6 +21,7 @@ #include #include #include +#include #include #include #include @@ -30,6 +31,10 @@ #include "agb.h" #include "tables.h" +// expansion headers +#include "../../include/config/battle.h" +#include "../../include/config/general.h" + enum class MidiEventCategory { Control, @@ -916,6 +921,7 @@ void Compress(std::vector& events) void ReadMidiTracks() { long trackHeaderStart = 14; + int trackLoops = B_NUM_LOW_HEALTH_BEEPS; ReadMidiTrackHeader(trackHeaderStart); ReadSeqEvents(); @@ -955,7 +961,10 @@ void ReadMidiTracks() if (g_compressionEnabled) Compress(*events); - PrintAgbTrack(*events); + if ((strcmp(g_asmLabel.c_str(), "se_low_health") == 0) && trackLoops >= 0) + PrintAgbTrackLoop(*events, trackLoops); + else + PrintAgbTrack(*events); g_agbTrack++; } diff --git a/tools/trainerproc/main.c b/tools/trainerproc/main.c index 5823facaca..478f35dd3d 100644 --- a/tools/trainerproc/main.c +++ b/tools/trainerproc/main.c @@ -14,7 +14,7 @@ #include #include -#define MAX_TRAINER_AI_FLAGS 32 +#define MAX_TRAINER_AI_FLAGS 64 #define MAX_TRAINER_ITEMS 4 #define PARTY_SIZE 255 #define MAX_MON_MOVES 4 @@ -38,6 +38,12 @@ enum Gender GENDER_FEMALE, }; +enum BattleType +{ + BATTLE_TYPE_SINGLE, + BATTLE_TYPE_DOUBLE, +}; + // TODO: Support Hidden Power. struct Pokemon { @@ -117,8 +123,8 @@ struct Trainer struct String name; int name_line; - bool double_battle; - int double_battle_line; + enum BattleType battle_type; + int battle_type_line; struct Pokemon pokemon[PARTY_SIZE]; int pokemon_n; @@ -841,12 +847,7 @@ static struct String token_string(const struct Token *t) 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")) + if (is_literal_token(t, "M") || is_literal_token(t, "Male")) { *g = GENDER_MALE; return true; @@ -862,6 +863,24 @@ static bool token_gender(struct Parser *p, const struct Token *t, enum Gender *g } } +static bool token_battle_type(struct Parser *p, const struct Token *t, enum BattleType *g) +{ + if (is_literal_token(t, "Single") || is_literal_token(t, "Singles")) + { + *g = BATTLE_TYPE_SINGLE; + return true; + } + else if (is_literal_token(t, "Double") || is_literal_token(t, "Doubles")) + { + *g = BATTLE_TYPE_DOUBLE; + return true; + } + else + { + return set_parse_error(p, t->location, "invalid battle type"); + } +} + static bool token_stats(struct Parser *p, const struct Token *t, struct Stats *stats, bool require_all) { struct Source source = { @@ -1195,10 +1214,20 @@ static bool parse_trainer(struct Parser *p, const struct Parsed *parsed, struct } 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)) + if (trainer->battle_type_line) + any_error = !set_show_parse_error(p, key.location, "duplicate 'Double Battle' or 'Battle Type'"); + trainer->battle_type_line = value.location.line; + bool is_double_battle; + if (!token_bool(p, &value, &is_double_battle)) + any_error = !show_parse_error(p); + trainer->battle_type = is_double_battle ? BATTLE_TYPE_DOUBLE : BATTLE_TYPE_SINGLE; + } + else if (is_literal_token(&key, "Battle Type")) + { + if (trainer->battle_type_line) + any_error = !set_show_parse_error(p, key.location, "duplicate 'Double Battle' or 'Battle Type'"); + trainer->battle_type_line = value.location.line; + if (!token_battle_type(p, &value, &trainer->battle_type)) any_error = !show_parse_error(p); } else if (is_literal_token(&key, "Mugshot")) @@ -1253,7 +1282,7 @@ static bool parse_trainer(struct Parser *p, const struct Parsed *parsed, struct } else { - any_error = !set_show_parse_error(p, key.location, "expected one of 'Name', 'Class', 'Pic', 'Gender', 'Music', 'Items', 'Double Battle', 'Difficulty', 'Party Size', 'Pool Rules', 'Pool Pick Functions', 'Pool Prune' or 'AI'"); + any_error = !set_show_parse_error(p, key.location, "expected one of 'Name', 'Class', 'Pic', 'Gender', 'Music', 'Items', 'Battle Type', 'Difficulty', 'Party Size', 'Pool Rules', 'Pool Pick Functions', 'Pool Prune' or 'AI'"); } } if (!trainer->pic_line) @@ -1294,7 +1323,9 @@ static bool parse_trainer(struct Parser *p, const struct Parsed *parsed, struct pokemon->nickname = token_string(&nickname); pokemon->species = token_string(&species); - if (!token_gender(p, &gender, &pokemon->gender)) + if (is_empty_token(&gender)) + pokemon->gender = GENDER_ANY; + else if (!token_gender(p, &gender, &pokemon->gender)) any_error = !show_parse_error(p); pokemon->item = token_string(&item); pokemon->header_line = species.location.line; @@ -1759,12 +1790,14 @@ static void fprint_trainers(const char *output_path, FILE *f, struct Parsed *par fprintf(f, " },\n"); } - if (trainer->double_battle_line) + if (trainer->battle_type_line) { - fprintf(f, "#line %d\n", trainer->double_battle_line); - fprintf(f, " .doubleBattle = "); - fprint_bool(f, trainer->double_battle); - fprintf(f, ",\n"); + fprintf(f, "#line %d\n", trainer->battle_type_line); + fprintf(f, " .battleType = "); + if (trainer->battle_type == BATTLE_TYPE_DOUBLE) + fprintf(f, "TRAINER_BATTLE_TYPE_DOUBLES,\n"); + else + fprintf(f, "TRAINER_BATTLE_TYPE_SINGLES,\n"); } if (trainer->ai_flags_n > 0) diff --git a/tools/wild_encounters/wild_encounters_to_header.py b/tools/wild_encounters/wild_encounters_to_header.py new file mode 100644 index 0000000000..5de52fbea9 --- /dev/null +++ b/tools/wild_encounters/wild_encounters_to_header.py @@ -0,0 +1,722 @@ +import json +import re +import os + + +IS_ENABLED = False +DEXNAV_ENABLED = False + +# C string vars +define = "#define" +ENCOUNTER_CHANCE = "ENCOUNTER_CHANCE" +SLOT = "SLOT" +TOTAL = "TOTAL" +NULL = "NULL" +UNDEFINED = "UNDEFINED" +MAP_UNDEFINED = "MAP_UNDEFINED" + +# encounter group header types, filled out programmatically +MON_HEADERS = [] + +# mon encounter group types +fieldData = [] +fieldInfoStrings = [] +fieldStrings = [] + +# time of day encounter data +TIME_DEFAULT = "" +TIME_DEFAULT_LABEL = "TIME_OF_DAY_DEFAULT" +TIME_DEFAULT_INDEX = 0 +TIMES_OF_DAY_COUNT = TIME_DEFAULT_INDEX + 1 + +# struct building blocks +baseStruct = "const struct WildPokemon" +structLabel = "" +structMonType = "" +structTime = "" +structMap = "" + +structInfo = "Info" +structHeader = "Header" +structArrayAssign = "[] =" + +baseStructLabel = "" +baseStructContent = [] +infoStructString = "" +infoStructRate = 0 +infoStructContent = [] +headerStructLabel = "" +headerStructContent = {} +headerStructTable = {} +headerIndex = 0 + +# map header data variables +hLabel = "" +hForMaps = True +headersArray = [headerIndex] + +# debug output control +mainSwitch = True +printWarningAndInclude = mainSwitch +printEncounterHeaders = mainSwitch +printEncounterRateMacros = mainSwitch +printEncounterStructsInfoString = mainSwitch +printEncounterStructs = mainSwitch + + +class TimeOfDay(): + def __init__(self): + self.vals = [] + self.lvals = [] + self.fvals = [] + self.count = 0 + + def __len__(self): + return self.count + + # for debugging purposes + def __str__(self): + return str([self.vals, self.lvals, self.fvals, self.count]) + + def add(self, val): + self.vals.append(val) + self.lvals.append(val.lower()) + self.fvals.append(GetTimeLabelFromString(val).capitalize()) + self.count += 1 + + def indexOf(self, val): + tempArr = [self.vals, self.lvals, self.fvals] + + for tvals in tempArr: + i = 0 + for time in tvals: + if val in time: + return i + + i += 1 + # return -1 here so it returns a consistent type and can be checked against < 0 + return -1 + + +def ImportWildEncounterFile(): + # make sure we're in the right directory before anything else + if not os.path.exists("Makefile"): + print("Please run this script from the project's root folder.") + quit() + + global MON_HEADERS + + global TIME_OF_DAY + TIME_OF_DAY = SetupUserTimeEnum(TimeOfDay()) + + global IS_ENABLED + global TIMES_OF_DAY_COUNT + if IsConfigEnabled(): + IS_ENABLED = True + TIMES_OF_DAY_COUNT = len(TIME_OF_DAY) + + global DEXNAV_ENABLED + DEXNAV_ENABLED = IsDexnavEnabled() + + global fieldInfoStrings + global fieldStrings + global structLabel + global structMonType + global structTime + global structMap + global baseStructLabel + global baseStructContent + global infoStructString + global infoStructRate + global headerStructLabel + global headerStructContent + global hLabel + global headersArray + global encounterTotalCount + global encounterCount + global headerIndex + global fieldData + global tabStr + tabStr = " " + + wFile = open("src/data/wild_encounters.json") + wData = json.load(wFile) + + encounterTotalCount = [] + encounterCount = [] + groupCount = 0 + while groupCount < len(wData["wild_encounter_groups"]): + encounterTotalCount.append(0) + encounterCount.append(0) + groupCount += 1 + + for data in wData["wild_encounter_groups"]: + wEncounters = wData["wild_encounter_groups"][headerIndex]["encounters"] + headerSuffix = structHeader + "s" + + if data["label"]: + hLabel = wData["wild_encounter_groups"][headerIndex]["label"] + if headerSuffix in hLabel: + hLabel = hLabel[:len(hLabel) - len(headerSuffix)] + MON_HEADERS.append(hLabel) + + if data["for_maps"]: + hForMaps = wData["wild_encounter_groups"][headerIndex]["for_maps"] + + if headerIndex == 0: + wFields = wData["wild_encounter_groups"][headerIndex]["fields"] + fieldCounter = 0 + for field in wFields: + if not CheckFieldDataDupes(field["type"]): + AddFieldData(fieldCounter, field["type"], field["encounter_rates"]) + + if "groups" in field: + fieldData[fieldCounter]["groups"] = field["groups"] + + """ + hidden mons need a special bit of logic since they're not in the vanilla + wild_encounters.json file, but the code expects them to be there + """ + hidden_mons = "hidden_mons" + if (fieldCounter == len(wFields) - 1) and not CheckFieldDataDupes(hidden_mons): + hidden_dummy_rates = [1, 0] + AddFieldData(fieldCounter + 1, hidden_mons, hidden_dummy_rates) + + fieldCounter += 1 + + if printWarningAndInclude: + PrintGeneratedWarningText() + print('#include "rtc.h"') + print("\n") + + PrintEncounterRateMacros() + + for encounter in wEncounters: + if "map" in encounter: + structMap = encounter["map"] + else: + structMap = encounter["base_label"] + + structLabel = encounter["base_label"] + + if encounterTotalCount[headerIndex] != len(wEncounters): + encounterTotalCount[headerIndex] = len(wEncounters) + + encounterCount[headerIndex] += 1 + headersArray = [] + + structTime = TIME_DEFAULT_INDEX + if IS_ENABLED: + timeCounter = 0 + while timeCounter < TIMES_OF_DAY_COUNT: + tempfTime = f"_{TIME_OF_DAY.fvals[timeCounter]}" + tempTime = TIME_OF_DAY.vals[timeCounter] + if tempfTime in structLabel or tempTime in structLabel: + structTime = timeCounter + + timeCounter += 1 + + fieldCounter = 0 + fieldInfoStrings = [] + while fieldCounter < len(fieldData): + fieldInfoStrings.append("") + fieldStrings.append("") + fieldCounter += 1 + + fieldCounter = 0 + while fieldCounter < len(fieldData): + for areaTable in encounter: + if fieldData[fieldCounter]["name"] in areaTable: + structMonType = fieldData[fieldCounter]["pascalName"] + if f"_{TIME_OF_DAY.fvals[structTime]}" in structLabel: + fieldInfoStrings[fieldCounter] = f"{structLabel}_{structMonType}{structInfo}" + fieldStrings[fieldCounter] = f"{structLabel}_{structMonType}" + else: + fieldInfoStrings[fieldCounter] = f"{structLabel}_{TIME_OF_DAY.fvals[structTime]}_{structMonType}{structInfo}" + fieldStrings[fieldCounter] = f"{structLabel}_{TIME_OF_DAY.fvals[structTime]}_{structMonType}" + else: + structMonType = "" + continue + + baseStructContent = [] + for group in encounter[areaTable]: + if "mons" in group: + for mon in encounter[areaTable][group]: + baseStructContent.append(list(mon.values())) + + if "encounter_rate" in group: + infoStructRate = encounter[areaTable][group] + + baseStructLabel = f"{baseStruct} {fieldStrings[fieldCounter]}{structArrayAssign}" + if printEncounterStructs: + print() + print(baseStructLabel) + print("{") + PrintStructContent(baseStructContent) + print("};") + + if printEncounterStructsInfoString: + infoStructString = f"{baseStruct}{structInfo} {fieldInfoStrings[fieldCounter]} = {{ {infoStructRate}, {fieldStrings[fieldCounter]} }};" + print(infoStructString) + + fieldCounter += 1 + AssembleMonHeaderContent() + headerIndex += 1 + PrintWildMonHeadersContent() + + +def PrintStructContent(contentList): + for monList in contentList: + print(f"{tabStr}{{ {monList[0]}, {monList[1]}, {monList[2]} }},") + return + + +def GetStructLabelWithoutTime(label): + labelLength = len(label) + timeLength = 0 + + if not IS_ENABLED: + return label + + timeCounter = 0 + while timeCounter < TIMES_OF_DAY_COUNT: + tempTime = TIME_OF_DAY.fvals[timeCounter] + if tempTime in label: + timeLength = len(tempTime) + return label[:(labelLength - (timeLength + 1))] + + timeCounter += 1 + return label + + +def GetStructTimeWithoutLabel(label): + if not IS_ENABLED: + return TIME_DEFAULT_INDEX + + timeCounter = 0 + while timeCounter < TIMES_OF_DAY_COUNT: + tempTime = f"_{TIME_OF_DAY.fvals[timeCounter]}" + if tempTime in label: + return timeCounter + + timeCounter += 1 + return TIME_DEFAULT_INDEX + + +def AssembleMonHeaderContent(): + SetupMonInfoVars() + + tempHeaderLabel = GetWildMonHeadersLabel() + tempHeaderTimeIndex = GetStructTimeWithoutLabel(structLabel) + structLabelNoTime = GetStructLabelWithoutTime(structLabel) + + if tempHeaderLabel not in headerStructTable: + headerStructTable[tempHeaderLabel] = {} + headerStructTable[tempHeaderLabel]["groupNum"] = headerIndex + + if structLabelNoTime not in headerStructTable[tempHeaderLabel]: + headerStructTable[tempHeaderLabel][structLabelNoTime] = {} + headerStructTable[tempHeaderLabel][structLabelNoTime]["headerType"] = GetWildMonHeadersLabel() + headerStructTable[tempHeaderLabel][structLabelNoTime]["mapGroup"] = structMap + headerStructTable[tempHeaderLabel][structLabelNoTime]["mapNum"] = structMap + headerStructTable[tempHeaderLabel][structLabelNoTime]["encounterTotalCount"] = encounterTotalCount[headerIndex] + headerStructTable[tempHeaderLabel][structLabelNoTime]["encounter_types"] = [] + + timeCounter = 0 + while timeCounter < TIMES_OF_DAY_COUNT: + headerStructTable[tempHeaderLabel][structLabelNoTime]["encounter_types"].append([]) + timeCounter += 1 + + fieldCounter = 0 + while fieldCounter < len(fieldData): + headerStructTable[tempHeaderLabel][structLabelNoTime]["encounter_types"][tempHeaderTimeIndex].append(fieldInfoStrings[fieldCounter]) + fieldCounter += 1 + + +def SetupMonInfoVars(): + i = 0 + while i < len(fieldData): + fieldData[i]["infoStringBase"] = "." + fieldData[i]["snakeName"] + structInfo + if CheckEmpty(fieldInfoStrings[i]): + fieldInfoStrings[i] = NULL + else: + fieldInfoStrings[i] = "&" + fieldInfoStrings[i] + + i += 1 + + +def PrintWildMonHeadersContent(): + groupCount = 0 + for group in headerStructTable: + labelCount = 0 + for label in headerStructTable[group]: + if label != "groupNum": + if labelCount == 0: + PrintEncounterHeaders("\n") + PrintEncounterHeaders(headerStructTable[group][label]["headerType"]) + + PrintEncounterHeaders(tabStr + "{") + + for stat in headerStructTable[group][label]: + mapData = headerStructTable[group][label][stat] + + if stat == "mapGroup": + PrintEncounterHeaders(f"{TabStr(2)}.mapGroup = {GetMapGroupEnum(mapData)},") + elif stat == "mapNum": + PrintEncounterHeaders(f"{TabStr(2)}.mapNum = {GetMapGroupEnum(mapData, labelCount + 1)},") + + if type(headerStructTable[group][label][stat]) == list: + PrintEncounterHeaders(f"{TabStr(2)}.encounterTypes =") + PrintEncounterHeaders(TabStr(2) + "{") + + timeCounter = 0 + while timeCounter < TIMES_OF_DAY_COUNT: + monInfo = headerStructTable[group][label][stat][timeCounter] + PrintEncounterHeaders(f"{TabStr(3)}[{TIME_OF_DAY.vals[timeCounter]}] = ") + + infoIndex = 0 + while infoIndex < len(fieldData): + if infoIndex == 0: + PrintEncounterHeaders(TabStr(3) + "{") + + if len(monInfo) == 0: + PrintEncounterHeaders(f"{TabStr(4)}{GetIMonInfoStringFromIndex(infoIndex)} = NULL,") + else: + PrintEncounterHeaders(f"{TabStr(4)}{GetIMonInfoStringFromIndex(infoIndex)} = {monInfo[infoIndex]},") + + if infoIndex == len(fieldData) - 1: + PrintEncounterHeaders(TabStr(3) + "},") + + infoIndex += 1 + timeCounter += 1 + PrintEncounterHeaders(TabStr(2) + "},") + PrintEncounterHeaders(tabStr + "},") + + if labelCount + 1 == headerStructTable[group][label]["encounterTotalCount"]: + PrintEncounterHeaders(tabStr + "{") + PrintEncounterHeaders(f"{TabStr(2)}.mapGroup = {GetMapGroupEnum(MAP_UNDEFINED)},") + PrintEncounterHeaders(f"{TabStr(2)}.mapNum = {GetMapGroupEnum(MAP_UNDEFINED, labelCount + 1)},") + + nullCount = 0 + while nullCount < TIMES_OF_DAY_COUNT: + if nullCount == 0: + PrintEncounterHeaders(f"{TabStr(2)}.encounterTypes =") + PrintEncounterHeaders(TabStr(2)+ "{") + + PrintEncounterHeaders(f"{TabStr(3)}[{TIME_OF_DAY.vals[nullCount]}] = ") + + nullIndex = 0 + while nullIndex <= len(fieldData) - 1: + if nullIndex == 0: + PrintEncounterHeaders(TabStr(3) + "{") + + PrintEncounterHeaders(f"{TabStr(4)}{GetIMonInfoStringFromIndex(nullIndex)} = NULL,") + + if nullIndex == len(fieldData) - 1: + PrintEncounterHeaders(TabStr(3) + "},") + + nullIndex += 1 + nullCount += 1 + PrintEncounterHeaders(TabStr(2) + "},") + PrintEncounterHeaders(tabStr + "},") + labelCount += 1 + groupCount += 1 + PrintEncounterHeaders("};") + + +def GetWildMonHeadersLabel(): + return f"{baseStruct}{structHeader} {MON_HEADERS[headerIndex]}{structHeader}s{structArrayAssign}" + "\n{" + + +def PrintEncounterHeaders(content): + if printEncounterHeaders: + print(content) + + +def PrintEncounterRateMacros(): + if not printEncounterRateMacros: + return + + fieldCounter = 0 + while fieldCounter < len(fieldData): + tempName = fieldData[fieldCounter]["name"].upper() + if "groups" not in fieldData[fieldCounter]: + rateCount = 0 + if fieldData[fieldCounter]["encounter_rates"]: + for percent in fieldData[fieldCounter]["encounter_rates"]: + if not DEXNAV_ENABLED and tempName == "HIDDEN_MONS": + break + + if rateCount == 0: + print(f"{define} {ENCOUNTER_CHANCE}_{tempName}_{SLOT}_{rateCount} {percent}") + else: + print( + f"{define} {ENCOUNTER_CHANCE}_{tempName}_{SLOT}_{rateCount} {ENCOUNTER_CHANCE}_{tempName}_{SLOT}_{rateCount - 1} + {percent}" + ) + + if rateCount + 1 == len(fieldData[fieldCounter]["encounter_rates"]): + print( + f"{define} {ENCOUNTER_CHANCE}_{tempName}_{TOTAL} ({ENCOUNTER_CHANCE}_{tempName}_{SLOT}_{rateCount})" + ) + + rateCount += 1 + else: + rates = fieldData[fieldCounter]["encounter_rates"] + groups = fieldData[fieldCounter]["groups"] + + for method in groups: + method_indices = groups[method] + if not method_indices: + continue + + for i, methodPercentIndex in enumerate(method_indices): + if methodPercentIndex < 0 or methodPercentIndex >= len(rates): + print(f"#error Invalid fishing encounter rate index {methodPercentIndex} for {method.upper()}") + continue + + rate_value = rates[methodPercentIndex] + if i == 0: + print(f"{define} {ENCOUNTER_CHANCE}_{tempName}_{method.upper()}_{SLOT}_{methodPercentIndex} {rate_value}") + else: + previous_method_index = method_indices[i - 1] + print(f"{define} {ENCOUNTER_CHANCE}_{tempName}_{method.upper()}_{SLOT}_{methodPercentIndex} {ENCOUNTER_CHANCE}_{tempName}_{method.upper()}_{SLOT}_{previous_method_index} + {rate_value}") + + if i == len(method_indices) - 1: + print(f"{define} {ENCOUNTER_CHANCE}_{tempName}_{method.upper()}_{TOTAL} ({ENCOUNTER_CHANCE}_{tempName}_{method.upper()}_{SLOT}_{methodPercentIndex})") + + fieldCounter += 1 + print() + + +def GetTimeLabelFromString(string): + time = "TIME" + time_ = "TIME_" + + if string == "TIMES_OF_DAY_COUNT": + return string + + if time_ in string.upper(): + return string[len(time_):len(string)] + elif time in string.upper(): + return string[len(time):len(string)] + return string + + +def GetIMonInfoStringFromIndex(index): + return fieldData[index]["infoStringBase"] + + +def GetMapGroupEnum(string, index = 0): + if "MAP_" in string and index == 0: + return "MAP_GROUP(" + string + ")" + elif "MAP_" in string and index != 0: + return "MAP_NUM(" + string + ")" + return index + + +""" +get copied lhea :^ ) +- next four functions copied almost verbatim from @lhearachel's python scripts in tools/learnset_helpers +""" +def PrintGeneratedWarningText(): + print("//") + print("// DO NOT MODIFY THIS FILE! It is auto-generated by tools/wild_encounters/wild_encounters_to_header.py") + print("//") + print("\n") + + +def IsConfigEnabled(): + CONFIG_ENABLED_PAT = re.compile(r"#define OW_TIME_OF_DAY_ENCOUNTERS\s+(?P[^ ]*)") + + with open("./include/config/overworld.h", "r") as overworld_config_file: + config_overworld = overworld_config_file.read() + config_setting = CONFIG_ENABLED_PAT.search(config_overworld) + return config_setting is not None and config_setting.group("cfg_val") in ("TRUE", "1") + + +def IsDexnavEnabled(): + CONFIG_ENABLED_PAT = re.compile(r"#define DEXNAV_ENABLED\s+(?P[^ ]*)") + + with open("./include/config/dexnav.h", "r") as overworld_config_file: + config_overworld = overworld_config_file.read() + config_setting = CONFIG_ENABLED_PAT.search(config_overworld) + return config_setting is not None and config_setting.group("cfg_val") in ("TRUE", "1") + + +def GetTimeEnum(): + DEFAULT_TIME_PAT = re.compile(r"enum\s+TimeOfDay\s*\{(?P[\s*\w+,\=\d*]+)\s*\}\s*\;") + + with open("./include/constants/rtc.h", "r") as rtc_include_file: + include_rtc = rtc_include_file.read() + include_enum = DEFAULT_TIME_PAT.search(include_rtc) + return include_enum.group("rtc_val") + + +def CheckEmpty(string): + return string == "" or string.isspace() or string == "\n" + + +def SetupUserTimeEnum(timeOfDay): + enum_string = GetTimeEnum() + enum_string = enum_string.split(",") + + # check for extra element from trailing comma + if CheckEmpty(enum_string[-1]): + enum_string.pop(-1) + + # we don't need the `TIMES_OF_DAY_COUNT` value, so - 1 from the value of len(enum_string) + strCount = 0 + while strCount < len(enum_string) - 1: + tempStr = enum_string[strCount].strip("\n ") + + """ + we need to ignore any value assignments, as the times will need to correspond + with the elements in the array. + """ + if "=" in tempStr: + tempStr = tempStr[0:tempStr.index("=")] + tempStr = tempStr.strip(" ") + + #double check we didn't catch any empty values + if not CheckEmpty(enum_string[strCount]): + timeOfDay.add(tempStr) + + strCount += 1 + return timeOfDay + + +def TabStr(amount): + return tabStr * amount + + +def GetPascalCase(string): + stringArray = string.split("_") + pascalString = "" + + for string in stringArray: + pascalString += string.capitalize() + return pascalString + + +def GetSnakeCase(string): + stringArray = string.split("_") + snakeString = "" + + i = 0 + for string in stringArray: + if i == 0: + snakeString += string + else: + snakeString += string.capitalize() + + i += 1 + return snakeString + + +def CheckFieldDataDupes(name): + for field in fieldData: + if field["name"] == name: + return True + return False + + +def AddFieldData(index, fieldType, fieldRates): + fieldData.append({}) + fieldData[index]["name"] = fieldType + fieldData[index]["pascalName"] = GetPascalCase(fieldType) + fieldData[index]["snakeName"] = GetSnakeCase(fieldType) + fieldData[index]["encounter_rates"] = fieldRates + + +def main(): + pass + + +if __name__ == "__main__": + ImportWildEncounterFile() + + +""" +!!!! EXAMPLE OUTPUT !!!! +- when OW_TIME_OF DAY_ENCOUNTERS is FALSE in configoverworld.h + +#define ENCOUNTER_CHANCE_LAND_MONS_SLOT_0 20 +#define ENCOUNTER_CHANCE_LAND_MONS_SLOT_1 ENCOUNTER_CHANCE_LAND_MONS_SLOT_0 + 20 +#define ENCOUNTER_CHANCE_LAND_MONS_SLOT_2 ENCOUNTER_CHANCE_LAND_MONS_SLOT_1 + 10 +#define ENCOUNTER_CHANCE_LAND_MONS_SLOT_3 ENCOUNTER_CHANCE_LAND_MONS_SLOT_2 + 10 +#define ENCOUNTER_CHANCE_LAND_MONS_SLOT_4 ENCOUNTER_CHANCE_LAND_MONS_SLOT_3 + 10 +#define ENCOUNTER_CHANCE_LAND_MONS_SLOT_5 ENCOUNTER_CHANCE_LAND_MONS_SLOT_4 + 10 +#define ENCOUNTER_CHANCE_LAND_MONS_SLOT_6 ENCOUNTER_CHANCE_LAND_MONS_SLOT_5 + 5 +#define ENCOUNTER_CHANCE_LAND_MONS_SLOT_7 ENCOUNTER_CHANCE_LAND_MONS_SLOT_6 + 5 +#define ENCOUNTER_CHANCE_LAND_MONS_SLOT_8 ENCOUNTER_CHANCE_LAND_MONS_SLOT_7 + 4 +#define ENCOUNTER_CHANCE_LAND_MONS_SLOT_9 ENCOUNTER_CHANCE_LAND_MONS_SLOT_8 + 4 +#define ENCOUNTER_CHANCE_LAND_MONS_SLOT_10 ENCOUNTER_CHANCE_LAND_MONS_SLOT_9 + 1 +#define ENCOUNTER_CHANCE_LAND_MONS_SLOT_11 ENCOUNTER_CHANCE_LAND_MONS_SLOT_10 + 1 +#define ENCOUNTER_CHANCE_LAND_MONS_TOTAL (ENCOUNTER_CHANCE_LAND_MONS_SLOT_11) +#define ENCOUNTER_CHANCE_WATER_MONS_SLOT_0 60 +#define ENCOUNTER_CHANCE_WATER_MONS_SLOT_1 ENCOUNTER_CHANCE_WATER_MONS_SLOT_0 + 30 +#define ENCOUNTER_CHANCE_WATER_MONS_SLOT_2 ENCOUNTER_CHANCE_WATER_MONS_SLOT_1 + 5 +#define ENCOUNTER_CHANCE_WATER_MONS_SLOT_3 ENCOUNTER_CHANCE_WATER_MONS_SLOT_2 + 4 +#define ENCOUNTER_CHANCE_WATER_MONS_SLOT_4 ENCOUNTER_CHANCE_WATER_MONS_SLOT_3 + 1 +#define ENCOUNTER_CHANCE_WATER_MONS_TOTAL (ENCOUNTER_CHANCE_WATER_MONS_SLOT_4) +#define ENCOUNTER_CHANCE_ROCK_SMASH_MONS_SLOT_0 60 +#define ENCOUNTER_CHANCE_ROCK_SMASH_MONS_SLOT_1 ENCOUNTER_CHANCE_ROCK_SMASH_MONS_SLOT_0 + 30 +#define ENCOUNTER_CHANCE_ROCK_SMASH_MONS_SLOT_2 ENCOUNTER_CHANCE_ROCK_SMASH_MONS_SLOT_1 + 5 +#define ENCOUNTER_CHANCE_ROCK_SMASH_MONS_SLOT_3 ENCOUNTER_CHANCE_ROCK_SMASH_MONS_SLOT_2 + 4 +#define ENCOUNTER_CHANCE_ROCK_SMASH_MONS_SLOT_4 ENCOUNTER_CHANCE_ROCK_SMASH_MONS_SLOT_3 + 1 +#define ENCOUNTER_CHANCE_ROCK_SMASH_MONS_TOTAL (ENCOUNTER_CHANCE_ROCK_SMASH_MONS_SLOT_4) +#define ENCOUNTER_CHANCE_FISHING_MONS_GOOD_ROD_SLOT_2 60 +#define ENCOUNTER_CHANCE_FISHING_MONS_GOOD_ROD_SLOT_3 ENCOUNTER_CHANCE_FISHING_MONS_GOOD_ROD_SLOT_2 + 20 +#define ENCOUNTER_CHANCE_FISHING_MONS_GOOD_ROD_SLOT_4 ENCOUNTER_CHANCE_FISHING_MONS_GOOD_ROD_SLOT_3 + 20 +#define ENCOUNTER_CHANCE_FISHING_MONS_GOOD_ROD_TOTAL (ENCOUNTER_CHANCE_FISHING_MONS_GOOD_ROD_SLOT_4) +#define ENCOUNTER_CHANCE_FISHING_MONS_OLD_ROD_SLOT_0 70 +#define ENCOUNTER_CHANCE_FISHING_MONS_OLD_ROD_SLOT_1 ENCOUNTER_CHANCE_FISHING_MONS_OLD_ROD_SLOT_0 + 30 +#define ENCOUNTER_CHANCE_FISHING_MONS_OLD_ROD_TOTAL (ENCOUNTER_CHANCE_FISHING_MONS_OLD_ROD_SLOT_1) +#define ENCOUNTER_CHANCE_FISHING_MONS_SUPER_ROD_SLOT_5 40 +#define ENCOUNTER_CHANCE_FISHING_MONS_SUPER_ROD_SLOT_6 ENCOUNTER_CHANCE_FISHING_MONS_SUPER_ROD_SLOT_5 + 40 +#define ENCOUNTER_CHANCE_FISHING_MONS_SUPER_ROD_SLOT_7 ENCOUNTER_CHANCE_FISHING_MONS_SUPER_ROD_SLOT_6 + 15 +#define ENCOUNTER_CHANCE_FISHING_MONS_SUPER_ROD_SLOT_8 ENCOUNTER_CHANCE_FISHING_MONS_SUPER_ROD_SLOT_7 + 4 +#define ENCOUNTER_CHANCE_FISHING_MONS_SUPER_ROD_SLOT_9 ENCOUNTER_CHANCE_FISHING_MONS_SUPER_ROD_SLOT_8 + 1 +#define ENCOUNTER_CHANCE_FISHING_MONS_SUPER_ROD_TOTAL (ENCOUNTER_CHANCE_FISHING_MONS_SUPER_ROD_SLOT_9) + +- if DEXNAV_ENABLED is TRUE +- these macros are 1 and 0, respectively if hidden_mons isn't in the encounter + rate list at the top of wild_encounters.json +#define ENCOUNTER_CHANCE_HIDDEN_MONS_SLOT_0 1 +#define ENCOUNTER_CHANCE_HIDDEN_MONS_SLOT_1 ENCOUNTER_CHANCE_HIDDEN_MONS_SLOT_0 + 0 +#define ENCOUNTER_CHANCE_HIDDEN_MONS_TOTAL (ENCOUNTER_CHANCE_HIDDEN_MONS_SLOT_1) + +const struct WildPokemon gRoute101_LandMons_Day[] = +{ + { 2, 2, SPECIES_WURMPLE }, + { 2, 2, SPECIES_POOCHYENA }, + { 2, 2, SPECIES_WURMPLE }, + { 3, 3, SPECIES_WURMPLE }, + { 3, 3, SPECIES_POOCHYENA }, + { 3, 3, SPECIES_POOCHYENA }, + { 3, 3, SPECIES_WURMPLE }, + { 3, 3, SPECIES_POOCHYENA }, + { 2, 2, SPECIES_ZIGZAGOON }, + { 2, 2, SPECIES_ZIGZAGOON }, + { 3, 3, SPECIES_ZIGZAGOON }, + { 3, 3, SPECIES_ZIGZAGOON }, +}; + +const struct WildPokemonInfo gRoute101_Day_LandMonsInfo= { 20, gRoute101_Day_LandMons }; +const struct WildPokemonHeader gWildMonHeaders[] = +{ + { + .mapGroup = MAP(ROUTE101), + .mapNum = MAP_NUM(ROUTE101), + .encounterTypes = + [OW_TIME_OF_DAY_DEFAULT] = + { + .landMonsInfo = &gRoute101_LandMonsInfo, + .waterMonsInfo = NULL, + .rockSmashMonsInfo = NULL, + .fishingMonsInfo = NULL, + .hiddenMonsInfo = NULL, + } + }, +} +"""